|
|
@@ -0,0 +1,741 @@
|
|
|
+package com.github.zuihou.business.aps.util;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.github.zuihou.business.aps.algorithm.ga.GAScheduler;
|
|
|
+import com.github.zuihou.business.aps.instance.domain.basicdata.Instance;
|
|
|
+import com.github.zuihou.business.aps.instance.domain.basicdata.Part;
|
|
|
+import org.apache.commons.logging.Log;
|
|
|
+import org.apache.commons.logging.LogFactory;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author: igen
|
|
|
+ * @description: 案例相关工具类,用于设置案例规则,获取调度规则使用的特征等。
|
|
|
+ * @date: 2021年11月29日
|
|
|
+ *
|
|
|
+ */
|
|
|
+public class InstanceUtil {
|
|
|
+ private final static Log log = LogFactory.getLog(InstanceUtil.class);
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @author: igen
|
|
|
+ * @description: 计算制造期
|
|
|
+ * @param instance
|
|
|
+ * @return
|
|
|
+ * @date: 2021年11月29日
|
|
|
+ *
|
|
|
+ */
|
|
|
+ public static double calcCmax(Instance instance) {
|
|
|
+ double cmax = 0;
|
|
|
+ for (Part part : instance.getPartMap().values()) {
|
|
|
+ if (part.getFinish() > cmax) {
|
|
|
+ cmax = part.getFinish();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return cmax;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) throws Exception {
|
|
|
+ String data = "{\n" +
|
|
|
+ " \"index\": 1,\n" +
|
|
|
+ " \"instanceUid\": null,\n" +
|
|
|
+ " \"instanceType\": 0,\n" +
|
|
|
+ " \"name\": null,\n" +
|
|
|
+ " \"totalWorkTime\": null,\n" +
|
|
|
+ " \"totalOpNum\": 9.0,\n" +
|
|
|
+ " \"partNum\": 3,\n" +
|
|
|
+ " \"machineNum\": 3,\n" +
|
|
|
+ " \"meanOpMachineNum\": 0.0,\n" +
|
|
|
+ " \"candidateProMap\": {\n" +
|
|
|
+ " \"P1_OP10\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 1,\n" +
|
|
|
+ " \"duration\": 5.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 5.0,\n" +
|
|
|
+ " \"machineName\": \"M1\"\n" +
|
|
|
+ " },\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 4,\n" +
|
|
|
+ " \"duration\": 4.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 4.0,\n" +
|
|
|
+ " \"machineName\": \"M4\"\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"P1_OP20\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 2,\n" +
|
|
|
+ " \"duration\": 9.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 9.0,\n" +
|
|
|
+ " \"machineName\": \"M2\"\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"P1_OP30\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 3,\n" +
|
|
|
+ " \"duration\": 4.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 4.0,\n" +
|
|
|
+ " \"machineName\": \"M3\"\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"P2_OP10\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 1,\n" +
|
|
|
+ " \"duration\": 3.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 3.0,\n" +
|
|
|
+ " \"machineName\": \"M1\"\n" +
|
|
|
+ " },\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 4,\n" +
|
|
|
+ " \"duration\": 4.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 4.0,\n" +
|
|
|
+ " \"machineName\": \"M4\"\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"P2_OP20\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 2,\n" +
|
|
|
+ " \"duration\": 4.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 4.0,\n" +
|
|
|
+ " \"machineName\": \"M2\"\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"P2_OP30\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 3,\n" +
|
|
|
+ " \"duration\": 11.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 11.0,\n" +
|
|
|
+ " \"machineName\": \"M3\"\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"P3_OP10\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 1,\n" +
|
|
|
+ " \"duration\": 8.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 8.0,\n" +
|
|
|
+ " \"machineName\": \"M1\"\n" +
|
|
|
+ " },\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 4,\n" +
|
|
|
+ " \"duration\": 4.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 4.0,\n" +
|
|
|
+ " \"machineName\": \"M4\"\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"P3_OP20\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 2,\n" +
|
|
|
+ " \"duration\": 5.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 5.0,\n" +
|
|
|
+ " \"machineName\": \"M2\"\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"P3_OP30\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"machineID\": 3,\n" +
|
|
|
+ " \"duration\": 2.0,\n" +
|
|
|
+ " \"setupTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 2.0,\n" +
|
|
|
+ " \"machineName\": \"M3\"\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ]\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"operationMap\": {\n" +
|
|
|
+ " \"P1_OP10\": {\n" +
|
|
|
+ " \"partID\": 1,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P1\",\n" +
|
|
|
+ " \"seq\": 1,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"P1_OP20\": {\n" +
|
|
|
+ " \"partID\": 1,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P1\",\n" +
|
|
|
+ " \"seq\": 2,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"P1_OP30\": {\n" +
|
|
|
+ " \"partID\": 1,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P1\",\n" +
|
|
|
+ " \"seq\": 3,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"P2_OP10\": {\n" +
|
|
|
+ " \"partID\": 2,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P2\",\n" +
|
|
|
+ " \"seq\": 1,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"P2_OP20\": {\n" +
|
|
|
+ " \"partID\": 2,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P2\",\n" +
|
|
|
+ " \"seq\": 2,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"P2_OP30\": {\n" +
|
|
|
+ " \"partID\": 2,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P2\",\n" +
|
|
|
+ " \"seq\": 3,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"P3_OP10\": {\n" +
|
|
|
+ " \"partID\": 3,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P3\",\n" +
|
|
|
+ " \"seq\": 1,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"P3_OP20\": {\n" +
|
|
|
+ " \"partID\": 3,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P3\",\n" +
|
|
|
+ " \"seq\": 2,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"P3_OP30\": {\n" +
|
|
|
+ " \"partID\": 3,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P3\",\n" +
|
|
|
+ " \"seq\": 3,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " }\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"machineMap\": {\n" +
|
|
|
+ " \"M1\": {\n" +
|
|
|
+ " \"name\": \"M1\",\n" +
|
|
|
+ " \"queueList\": [\n" +
|
|
|
+ " \n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"assignedTaskWork\": 0.0,\n" +
|
|
|
+ " \"utilRation\": 0.0,\n" +
|
|
|
+ " \"loadRation\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"noUseTime\": [\n" +
|
|
|
+ " \n" +
|
|
|
+ " ]\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"M2\": {\n" +
|
|
|
+ " \"name\": \"M2\",\n" +
|
|
|
+ " \"queueList\": [\n" +
|
|
|
+ " \n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"assignedTaskWork\": 0.0,\n" +
|
|
|
+ " \"utilRation\": 0.0,\n" +
|
|
|
+ " \"loadRation\": 0.0,\n" +
|
|
|
+ " \"id\": 2,\n" +
|
|
|
+ " \"noUseTime\": [\n" +
|
|
|
+ " \n" +
|
|
|
+ " ]\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"M3\": {\n" +
|
|
|
+ " \"name\": \"M3\",\n" +
|
|
|
+ " \"queueList\": [\n" +
|
|
|
+ " \n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"assignedTaskWork\": 0.0,\n" +
|
|
|
+ " \"utilRation\": 0.0,\n" +
|
|
|
+ " \"loadRation\": 0.0,\n" +
|
|
|
+ " \"id\": 3,\n" +
|
|
|
+ " \"noUseTime\": [\n" +
|
|
|
+ " \n" +
|
|
|
+ " ]\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"M4\": {\n" +
|
|
|
+ " \"name\": \"M4\",\n" +
|
|
|
+ " \"queueList\": [\n" +
|
|
|
+ " \n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"assignedTaskWork\": 0.0,\n" +
|
|
|
+ " \"utilRation\": 0.0,\n" +
|
|
|
+ " \"loadRation\": 0.0,\n" +
|
|
|
+ " \"id\": 4,\n" +
|
|
|
+ " \"noUseTime\": [\n" +
|
|
|
+ " \n" +
|
|
|
+ " ]\n" +
|
|
|
+ " }\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"partMap\": {\n" +
|
|
|
+ " \"P1\": {\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"name\": \"P1\",\n" +
|
|
|
+ " \"operationNum\": 3,\n" +
|
|
|
+ " \"rushOrderFlag\": 1,\n" +
|
|
|
+ " \"opList\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"partID\": 1,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P1_OP10\",\n" +
|
|
|
+ " \"seq\": 1,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": 4,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"partID\": 1,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P1_OP20\",\n" +
|
|
|
+ " \"seq\": 2,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 2,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"partID\": 1,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P1_OP30\",\n" +
|
|
|
+ " \"seq\": 3,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 3,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"weight\": 2.0,\n" +
|
|
|
+ " \"dueDate\": 15,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"currOp\": null,\n" +
|
|
|
+ " \"totalWorkTime\": 0.0\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"P2\": {\n" +
|
|
|
+ " \"id\": 2,\n" +
|
|
|
+ " \"name\": \"P2\",\n" +
|
|
|
+ " \"operationNum\": 3,\n" +
|
|
|
+ " \"rushOrderFlag\": 1,\n" +
|
|
|
+ " \"opList\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"partID\": 2,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P2_OP10\",\n" +
|
|
|
+ " \"seq\": 1,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": 1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"partID\": 2,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P2_OP20\",\n" +
|
|
|
+ " \"seq\": 2,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 2,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"partID\": 2,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P2_OP30\",\n" +
|
|
|
+ " \"seq\": 3,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 3,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"weight\": 5.0,\n" +
|
|
|
+ " \"dueDate\": 8,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"currOp\": null,\n" +
|
|
|
+ " \"totalWorkTime\": 0.0\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"P3\": {\n" +
|
|
|
+ " \"id\": 3,\n" +
|
|
|
+ " \"name\": \"P3\",\n" +
|
|
|
+ " \"operationNum\": 3,\n" +
|
|
|
+ " \"rushOrderFlag\": 0,\n" +
|
|
|
+ " \"opList\": [\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"partID\": 3,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P3_OP10\",\n" +
|
|
|
+ " \"seq\": 1,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": 4,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 1,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"partID\": 3,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P3_OP20\",\n" +
|
|
|
+ " \"seq\": 2,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 2,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " },\n" +
|
|
|
+ " {\n" +
|
|
|
+ " \"partID\": 3,\n" +
|
|
|
+ " \"part\": null,\n" +
|
|
|
+ " \"name\": \"P3_OP30\",\n" +
|
|
|
+ " \"seq\": 3,\n" +
|
|
|
+ " \"preTime\": 0.0,\n" +
|
|
|
+ " \"runTime\": 0.0,\n" +
|
|
|
+ " \"machineID\": 0,\n" +
|
|
|
+ " \"fixedMachineID\": -1,\n" +
|
|
|
+ " \"machineName\": null,\n" +
|
|
|
+ " \"candidateProNum\": 1,\n" +
|
|
|
+ " \"weight\": 0.0,\n" +
|
|
|
+ " \"dueDate\": 0,\n" +
|
|
|
+ " \"earlyStart\": 0.0,\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"prepOp\": null,\n" +
|
|
|
+ " \"state\": 0,\n" +
|
|
|
+ " \"remainOpNum\": 0,\n" +
|
|
|
+ " \"remainWorkTime\": 0.0,\n" +
|
|
|
+ " \"opPriority\": 0.0,\n" +
|
|
|
+ " \"id\": 3,\n" +
|
|
|
+ " \"workTime\": 0.0,\n" +
|
|
|
+ " \"succOp\": null\n" +
|
|
|
+ " }\n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"start\": 0.0,\n" +
|
|
|
+ " \"finish\": 0.0,\n" +
|
|
|
+ " \"weight\": 3.0,\n" +
|
|
|
+ " \"dueDate\": 10,\n" +
|
|
|
+ " \"planQty\": 1,\n" +
|
|
|
+ " \"currOp\": null,\n" +
|
|
|
+ " \"totalWorkTime\": 0.0\n" +
|
|
|
+ " }\n" +
|
|
|
+ " },\n" +
|
|
|
+ " \"lastObjectiveValue\": 0.0,\n" +
|
|
|
+ " \"readyTaskS\": [\n" +
|
|
|
+ " \n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"altorighmName\": null,\n" +
|
|
|
+ " \"wirteDynamic\": false,\n" +
|
|
|
+ " \"totalAssignedTaskWork\": 0.0,\n" +
|
|
|
+ " \"objective\": null,\n" +
|
|
|
+ " \"operationRules\": [\n" +
|
|
|
+ " \n" +
|
|
|
+ " ],\n" +
|
|
|
+ " \"instanceCategory\": \"0_40x1sample\"\n" +
|
|
|
+ "}";
|
|
|
+ Instance instance = JSON.parseObject(data, Instance.class);
|
|
|
+ GAScheduler gaScheduler = new GAScheduler(instance, GAScheduler.PRIORITY_CODE);
|
|
|
+ gaScheduler.schedule();
|
|
|
+ }
|
|
|
+}
|