⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pipemain.java

📁 全球著名IT公司ILog的APS高级排产优化引擎
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

      //extractDataFromDB("dispatchDBtoCSV.txt");

      setEngineCompleteMsg();

      cleanup();

    }
    catch (Exception e) {
      System.out.println("Engine ERROR:" + e.getMessage());
      return;
    }

  }

  private void buildConstraints() {
    String msg = res.getString("Engine1002");
    MessageArea.getInstance().addMessage(msg);

    InventoryConstraint invConstr = InventoryConstraint.getInstance();
    StartsOutsConstraint startsOutsConstr = StartsOutsConstraint.getInstance();
    CapacityConstraint capacityConstr = CapacityConstraint.getInstance();
    SourcingConstraint srcingConstr = SourcingConstraint.getInstance();
    ShipmentConstraint shipConstr = ShipmentConstraint.getInstance();
    MaterialConstraint matConstr = MaterialConstraint.getInstance();
    ProductBoundConstraint bndConstr = ProductBoundConstraint.getInstance();
    MinInvConstraint minInvConstr = MinInvConstraint.getInstance();

    invConstr.buildConstraints();
    startsOutsConstr.buildConstraints();
    capacityConstr.buildConstraints();
    System.gc();
    srcingConstr.buildConstraints();
    System.gc();
    shipConstr.buildConstraints();
    matConstr.buildConstraints();
    bndConstr.buildConstraints();
    minInvConstr.buildConstraints();
    System.gc();
    TightCapacityConstraint.getInstance().buildConstraints();
  }

  private void buildObjectiveFunction() {
    String msg = res.getString("Engine1300");
    MessageArea.getInstance().addMessage(msg);

    BackorderVariable.getInstance().sendObjElemToLPModel();
    BackorderOneVariable.getInstance().sendObjElemToLPModel();
    InventoryVariable.getInstance().sendObjElemToLPModel();
    BoundVariable.getInstance().sendObjElemToLPModel();
    MinInvSlackVariable.getInstance().sendObjElemToLPModel();
  }

  private void solve() {
    String msg = res.getString("Engine2000");
    MessageArea.getInstance().addMessage(msg);

    String urlAddr = GlobalConfig.getInstance().getLPServerURL() +
        "com.power.pipeengine.LPServlet";
    URL url = null;
    HttpURLConnection urlconn = null;
    BufferedReader d = null;
    InputStream in = null;
    try {
      url = new URL(urlAddr + "?" +
                    "exePath=c:\\paraster\\lpsolver\\paraster.exe&" +
                    "outPath=c:\\paraster\\work\\model.out&" +
                    "workPath=c:\\paraster\\work&" +
                    "paraPath=c:\\paraster\\work\\model.mps&" +
                    "testPath=c:\\paraster\\work\\model.mps&" +
                    "logPath=c:\\paraster\\work\\model.log");
      urlconn = (HttpURLConnection) (url.openConnection());
      urlconn.setRequestMethod("POST");
      in = urlconn.getInputStream();
      d = new BufferedReader(new InputStreamReader(in));
      StringBuffer svrSideMsg = new StringBuffer();
      String tmpStr;
      while ( (tmpStr = d.readLine()) != null) {
        if (tmpStr.length() >= errMsg.length() &&
            tmpStr.substring(0, errMsg.length()).equals(errMsg)) {
          MessageArea.getInstance().addMessage(
              "Error writing file through URL: " + tmpStr + "\n");
          break;
        }
        //System.out.println(tmpStr);
        svrSideMsg.append(tmpStr + "\n");
      }
      MessageArea.getInstance().addSvrSideMsg(svrSideMsg.toString());
    }
    catch (Exception e) {
      MessageArea.getInstance().addMessage("Error opening LPServer URL\n");
    }
    finally {
      try {
        d.close();
        in.close();
      }
      catch (Exception e) {}
    }

    /**** Waiting Engine Result ****/
    boolean endLoop = false;
    int countLoop = 1;
    urlAddr = GlobalConfig.getInstance().getLPServerURL() +
        "com.power.pipeengine.LPCheckFile" +
        "?FileName=c:\\paraster\\work\\model.out&" +
        "LogPath=c:\\paraster\\work\\model.log";
    do {
      try {
        url = new URL(urlAddr);
        urlconn = (HttpURLConnection) (url.openConnection());
        urlconn.setRequestMethod("POST");
        in = urlconn.getInputStream();
        d = new BufferedReader(new InputStreamReader(in));
        String tmpStr;
        if ( (tmpStr = d.readLine()).equals("found"))
          endLoop = true;
        else {
          tmpStr = "\t" + res.getString("SolvingModel") +
              (countLoop++ * INTERVAL) + res.getString("Seconds") + "\n";
          MessageArea.getInstance().addMessage(tmpStr);
          PIPEMain.sleep(INTERVAL * 1000);
        }
      }
      catch (Exception e) {
        endLoop = true;
        System.out.println(e.getMessage());
      }
    }
    while (!endLoop);

    //Solve.getInstance().createSolution();
    //Solution.getInstance().setSolution( Solve.getInstance().getSolution() );
  }

  private void createReports() throws Exception {
    String msg = res.getString("Engine3000");
    MessageArea.getInstance().addMessage(msg);

    //BoundsSupport.getInstance().createReport();
    //Delinquency.getInstance().createReport();
    //MaterialConsumption.getInstance().createReport();
    //MinInvSupport.getInstance().createReport();

    //System.gc();

    //ProductDispatch.getInstance().createReport();
    ProductionStartsSchedule.getInstance().createReport();
    //ProductionOutsSchedule.getInstance().createReport();
    //ProductionOutsByRoute.getInstance().createReport();

    //System.gc();

    //ProductReceipt.getInstance().createReport();
    ResourceUsage.getInstance().createReport();
    //Sourcing.getInstance().createReport();
    //EndingInventory.getInstance().createReport();
  }

  private void setEngineCompleteMsg() {
    MessageArea msgArea = MessageArea.getInstance();
    msgArea.getTextArea().setSelectionStart(msgArea.getTextArea().getText().
                                            length());
    msgArea.addMessage(res.getString("Engine5000_1"));
    msgArea.addMessage(res.getString("Engine5000_You_can"));
    msgArea.getTextArea().setSelectionEnd(msgArea.getTextArea().getText().
                                          length());
    msgArea.getTextArea().setSelectedTextColor(Color.blue);
  }

  private void writeEngineRunLog() {
    URLFileWriter.getInstance().write(GlobalConfig.getInstance().
                                      getFileReadWriteURL(),
                                      GlobalConfig.getInstance().getRunLogDir() +
                                      "engine.log",
                                      "WriteModel",
                                      MessageArea.getInstance().
                                      getClntSideMessage() +
                                      MessageArea.getInstance().
                                      getSvrSideMessage());
  }

  public void reset() {
    //MessageArea.getInstance().reset();
    // EngineRunTime.getInstance().reset();

    //reset variables
    AllocationVariable.getInstance().reset();
    BackorderOneVariable.getInstance().reset();
    BackorderTwoVariable.getInstance().reset();
    BackorderVariable.getInstance().reset();
    BoundVariable.getInstance().reset();
    InventoryVariable.getInstance().reset();
    LostSaleVariable.getInstance().reset();
    MinInvSlackVariable.getInstance().reset();
    OutsVariable.getInstance().reset();
    ReceivingVariable.getInstance().reset();
    RscSlackVariable.getInstance().reset();
    ShipOutVariable.getInstance().reset();
    StartsVariable.getInstance().reset();

    DataModel.getInstance().reset();
    UIEventUpdateThread.getInstance().reset();
    Model.getInstance().reset();

    System.gc();

  }

  public void setRunFlag(boolean flag) {
    runPIPE = flag;
  }

  public class waitThread
      extends Thread {
    int interval = 0;
    public waitThread(int secs) {
      this.interval = secs;
    }

    public void run() {
      try {
        waitThread.sleep(interval * 1000);
        isWait = false;
      }
      catch (Exception e) {}
    }
  }

  public void cleanup() {
    EngineRunTime.getInstance().cancel();
    Date endDate = new Date();
    MessageArea.getInstance().addMessage(res.getString("EngineEndTime"));
    MessageArea.getInstance().addMessage(sdfInput.format(endDate) + "\n");
    writeEngineRunLog();
    //this.reset();
    //System.gc();
  }

  private void createRoutingNetwork() {
    Hashtable allDmds = DataModel.getInstance().getProductDemands().
        getAllDemands();
    Enumeration dmds = allDmds.elements();

    while (dmds.hasMoreElements()) {
      ProductDemand aDmd = (ProductDemand) dmds.nextElement();
      aDmd.genProducingRoutes();
    }
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -