Commit c6275d54 authored by Tong Li's avatar Tong Li

拆分工序

parent ee19eb74
...@@ -85,7 +85,9 @@ public class HybridAlgorithm { ...@@ -85,7 +85,9 @@ public class HybridAlgorithm {
{ {
throw new RuntimeException("没有待排产工单"); throw new RuntimeException("没有待排产工单");
} }
if (_GlobalParam.isIsMultipleMachine()) {
allOperations = OperationSplitService.splitMultiMachineOperations(allOperations, _GlobalParam, machines, _entryRel);
}
// if(materials!=null&&materials.size()>0) { // if(materials!=null&&materials.size()>0) {
// //
// materialRequirementService.init(materials, orders, allOperations, _entryRel, machineScheduler, machines,_GlobalParam); // materialRequirementService.init(materials, orders, allOperations, _entryRel, machineScheduler, machines,_GlobalParam);
...@@ -433,6 +435,7 @@ public class HybridAlgorithm { ...@@ -433,6 +435,7 @@ public class HybridAlgorithm {
chromosome.setMaterials(ProductionDeepCopyUtil.deepCopyTreeMap(materials, String.class, Material.class)); // 简单拷贝,实际可能需要深拷贝 chromosome.setMaterials(ProductionDeepCopyUtil.deepCopyTreeMap(materials, String.class, Material.class)); // 简单拷贝,实际可能需要深拷贝
chromosome.setAllOperations(ProductionDeepCopyUtil.deepCopyList(new CopyOnWriteArrayList<>(allOperations), Entry.class) ); // 简单拷贝,实际可能需要深拷贝 chromosome.setAllOperations(ProductionDeepCopyUtil.deepCopyList(new CopyOnWriteArrayList<>(allOperations), Entry.class) ); // 简单拷贝,实际可能需要深拷贝
chromosome.setGlobalOpList(ProductionDeepCopyUtil.deepCopyList(globalOpList, GlobalOperationInfo.class) ); // 简单拷贝,实际可能需要深拷贝 chromosome.setGlobalOpList(ProductionDeepCopyUtil.deepCopyList(globalOpList, GlobalOperationInfo.class) ); // 简单拷贝,实际可能需要深拷贝
//chromosome.setObjectiveWeights(_objectiveWeights); //chromosome.setObjectiveWeights(_objectiveWeights);
chromosome.setBaseTime(param.getBaseTime()); chromosome.setBaseTime(param.getBaseTime());
...@@ -489,8 +492,9 @@ public class HybridAlgorithm { ...@@ -489,8 +492,9 @@ public class HybridAlgorithm {
chromosome.setOperatRel(ProductionDeepCopyUtil.deepCopyList(new CopyOnWriteArrayList<>(_entryRel), GroupResult.class) ); // 简单拷贝,实际可能需要深拷贝 chromosome.setOperatRel(ProductionDeepCopyUtil.deepCopyList(new CopyOnWriteArrayList<>(_entryRel), GroupResult.class) ); // 简单拷贝,实际可能需要深拷贝
chromosome.setMaterials(ProductionDeepCopyUtil.deepCopyTreeMap(materials, String.class, Material.class)); // 简单拷贝,实际可能需要深拷贝 chromosome.setMaterials(ProductionDeepCopyUtil.deepCopyTreeMap(materials, String.class, Material.class)); // 简单拷贝,实际可能需要深拷贝
chromosome.setAllOperations(ProductionDeepCopyUtil.deepCopyList(new CopyOnWriteArrayList<>(allOperations), Entry.class) ); // 简单拷贝,实际可能需要深拷贝 if (chromosome.getAllOperations() == null || chromosome.getAllOperations().isEmpty()) {
// chromosome.setGlobalOpList(ProductionDeepCopyUtil.deepCopyList(globalOpList, GlobalOperationInfo.class) ); // 简单拷贝,实际可能需要深拷贝 chromosome.setAllOperations(ProductionDeepCopyUtil.deepCopyList(new CopyOnWriteArrayList<>(allOperations), Entry.class) );
} // chromosome.setGlobalOpList(ProductionDeepCopyUtil.deepCopyList(globalOpList, GlobalOperationInfo.class) ); // 简单拷贝,实际可能需要深拷贝
//chromosome.setObjectiveWeights(_objectiveWeights); //chromosome.setObjectiveWeights(_objectiveWeights);
chromosome.setBaseTime(param.getBaseTime()); chromosome.setBaseTime(param.getBaseTime());
// chromosome.setInitMachines(ProductionDeepCopyUtil.deepCopyList(machines,Machine.class)); // 简单拷贝,实际可能需要深拷贝 // chromosome.setInitMachines(ProductionDeepCopyUtil.deepCopyList(machines,Machine.class)); // 简单拷贝,实际可能需要深拷贝
......
...@@ -476,7 +476,10 @@ public class Initialization { ...@@ -476,7 +476,10 @@ public class Initialization {
.thenComparing(randomIds::get)); .thenComparing(randomIds::get));
} }
} }
if (_globalParam.isIsMultipleMachine()) {
sortedOps = OperationSplitService.splitOpsForHeuristic(sortedOps, rnd);
chromosome.setAllOperations(new CopyOnWriteArrayList<>(sortedOps));
}
int globalOpId = 0; int globalOpId = 0;
// 为每个工序选择机器 // 为每个工序选择机器
...@@ -581,7 +584,10 @@ public class Initialization { ...@@ -581,7 +584,10 @@ public class Initialization {
.thenComparing(randomIds::get)); .thenComparing(randomIds::get));
} }
if (_globalParam.isIsMultipleMachine()) {
sortedOps = OperationSplitService.splitOpsForHeuristic(sortedOps, rnd);
chromosome.setAllOperations(new CopyOnWriteArrayList<>(sortedOps));
}
int globalOpId = 0; int globalOpId = 0;
// 为每个工序选择机器 // 为每个工序选择机器
for (Entry op : sortedOps) { for (Entry op : sortedOps) {
...@@ -670,6 +676,10 @@ public class Initialization { ...@@ -670,6 +676,10 @@ public class Initialization {
.thenComparing(op -> op.getMachineOptions().get(0).getProcessingTime() * op.getQuantity()) .thenComparing(op -> op.getMachineOptions().get(0).getProcessingTime() * op.getQuantity())
.thenComparing(randomIds::get)); .thenComparing(randomIds::get));
if (_globalParam.isIsMultipleMachine()) {
sortedOps = OperationSplitService.splitOpsForHeuristic(sortedOps, rnd);
chromosome.setAllOperations(new CopyOnWriteArrayList<>(sortedOps));
}
int globalOpId = 0; int globalOpId = 0;
for (Entry op : sortedOps) { for (Entry op : sortedOps) {
...@@ -815,7 +825,10 @@ public class Initialization { ...@@ -815,7 +825,10 @@ public class Initialization {
}) })
.thenComparing(randomIds::get)); .thenComparing(randomIds::get));
} }
if (_globalParam.isIsMultipleMachine()) {
sortedOps = OperationSplitService.splitOpsForHeuristic(sortedOps, rnd);
chromosome.setAllOperations(new CopyOnWriteArrayList<>(sortedOps));
}
int globalOpId = 0; int globalOpId = 0;
for (Entry op : sortedOps) { for (Entry op : sortedOps) {
int groupId = op.getGroupId(); int groupId = op.getGroupId();
...@@ -905,7 +918,10 @@ public class Initialization { ...@@ -905,7 +918,10 @@ public class Initialization {
}) })
.thenComparing(op -> op.getProductId() != null ? op.getProductId() : "") .thenComparing(op -> op.getProductId() != null ? op.getProductId() : "")
.thenComparing(randomIds::get)); .thenComparing(randomIds::get));
if (_globalParam.isIsMultipleMachine()) {
sortedOps = OperationSplitService.splitOpsForHeuristic(sortedOps, rnd);
chromosome.setAllOperations(new CopyOnWriteArrayList<>(sortedOps));
}
int globalOpId = 0; int globalOpId = 0;
for (Entry op : sortedOps) { for (Entry op : sortedOps) {
int groupId = op.getGroupId(); int groupId = op.getGroupId();
...@@ -969,7 +985,10 @@ public class Initialization { ...@@ -969,7 +985,10 @@ public class Initialization {
.thenComparing(op -> op.getProductId() != null ? op.getProductId() : "") // 相同物料排在一起,减少换型 .thenComparing(op -> op.getProductId() != null ? op.getProductId() : "") // 相同物料排在一起,减少换型
.thenComparing(randomIds::get)); .thenComparing(randomIds::get));
if (_globalParam.isIsMultipleMachine()) {
sortedOps = OperationSplitService.splitOpsForHeuristic(sortedOps, rnd);
chromosome.setAllOperations(new CopyOnWriteArrayList<>(sortedOps));
}
int globalOpId = 0; int globalOpId = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment