Commit 7a3f8cfc authored by Tong Li's avatar Tong Li

Merge remote-tracking branch 'origin/tl'

# Conflicts:
#	src/main/java/com/aps/entity/basic/Order.java
#	src/main/java/com/aps/service/impl/LanuchServiceImpl.java
parent 24ffe414
...@@ -374,7 +374,7 @@ return population; ...@@ -374,7 +374,7 @@ return population;
FileHelper.writeLogFile("解码---------------"+population.size() ); FileHelper.writeLogFile("解码---------------"+population.size() );
GeneticDecoder decoder = new GeneticDecoder(_GlobalParam, param.getBaseTime(), machines, orders, materials, machineScheduler,materialRequirementService, sceneId); GeneticDecoder decoder = new GeneticDecoder(_GlobalParam, param.getBaseTime(), machines, orders, materials, machineScheduler,materialRequirementService, sceneId);
boolean ismore=false; boolean ismore=true;
if(ismore) { if(ismore) {
CompletableFuture.allOf(population.stream() CompletableFuture.allOf(population.stream()
.map(chromosome -> CompletableFuture.runAsync(() -> decode(decoder, chromosome, param, allOperations, globalOpList), decodeExecutor)) .map(chromosome -> CompletableFuture.runAsync(() -> decode(decoder, chromosome, param, allOperations, globalOpList), decodeExecutor))
...@@ -409,7 +409,7 @@ return population; ...@@ -409,7 +409,7 @@ return population;
chromosome.setMaterials(ProductionDeepCopyUtil.deepCopyList(materials,Material.class)); // 简单拷贝,实际可能需要深拷贝 chromosome.setMaterials(ProductionDeepCopyUtil.deepCopyList(materials,Material.class)); // 简单拷贝,实际可能需要深拷贝
chromosome.setAllOperations(ProductionDeepCopyUtil.deepCopyList(new CopyOnWriteArrayList<>(allOperations), Entry.class) ); // 简单拷贝,实际可能需要深拷贝 chromosome.setAllOperations(ProductionDeepCopyUtil.deepCopyList(new CopyOnWriteArrayList<>(allOperations), Entry.class) ); // 简单拷贝,实际可能需要深拷贝
chromosome.setGlobalOpList(globalOpList); // 简单拷贝,实际可能需要深拷贝 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)); // 简单拷贝,实际可能需要深拷贝
......
...@@ -4,6 +4,7 @@ import com.aps.common.util.FileHelper; ...@@ -4,6 +4,7 @@ import com.aps.common.util.FileHelper;
import com.aps.common.util.ProductionDeepCopyUtil; import com.aps.common.util.ProductionDeepCopyUtil;
import com.aps.common.util.SpringContextUtil; import com.aps.common.util.SpringContextUtil;
import com.aps.entity.Algorithm.*; import com.aps.entity.Algorithm.*;
import com.aps.entity.Algorithm.IDAndChildID.GroupResult;
import com.aps.entity.DiscreteParameterDuration; import com.aps.entity.DiscreteParameterDuration;
import com.aps.entity.ProdEquipment; import com.aps.entity.ProdEquipment;
import com.aps.entity.Routingsupporting; import com.aps.entity.Routingsupporting;
...@@ -100,6 +101,13 @@ public class GeneticDecoder { ...@@ -100,6 +101,13 @@ public class GeneticDecoder {
chromosome.setMachineLoadStd(cachedResult.getMachineLoadStd()); chromosome.setMachineLoadStd(cachedResult.getMachineLoadStd());
chromosome.setDelayTime(cachedResult.getDelayTime()); chromosome.setDelayTime(cachedResult.getDelayTime());
chromosome.setResult(ProductionDeepCopyUtil.deepCopyList(cachedResult.getResult(),GAScheduleResult.class)); chromosome.setResult(ProductionDeepCopyUtil.deepCopyList(cachedResult.getResult(),GAScheduleResult.class));
chromosome.setOrders(ProductionDeepCopyUtil.deepCopyList(cachedResult.getOrders(),Order.class));
chromosome.setOperatRel(ProductionDeepCopyUtil.deepCopyList(cachedResult.getOperatRel(), GroupResult.class));
chromosome.setAllOperations(ProductionDeepCopyUtil.deepCopyList(cachedResult.getAllOperations(),Entry.class));
chromosome.setGlobalOpList(ProductionDeepCopyUtil.deepCopyList(cachedResult.getGlobalOpList(),GlobalOperationInfo.class));
chromosome.setOperationSequencing(ProductionDeepCopyUtil.deepCopyList(cachedResult.getOperationSequencing()));
chromosome.setMachineSelection(ProductionDeepCopyUtil.deepCopyList(cachedResult.getMachineSelection()));
// Chromosome chromosomen= ProductionDeepCopyUtil.deepCopy(cachedResult); // Chromosome chromosomen= ProductionDeepCopyUtil.deepCopy(cachedResult);
// FileHelper.writeLogFile("解码-----------结束-------"+chromosome.getID()); // FileHelper.writeLogFile("解码-----------结束-------"+chromosome.getID());
...@@ -265,13 +273,13 @@ if(finishedOrder==null||finishedOrder.size()==0) ...@@ -265,13 +273,13 @@ if(finishedOrder==null||finishedOrder.size()==0)
public void decode(Chromosome chromosome) { public void decode(Chromosome chromosome) {
List<OrderMaterialRequirement> orderMaterials = materialRequirementService.buildMultiLevelRequirementNetwork(chromosome, sceneId, baseTime,_globalParam); // List<OrderMaterialRequirement> orderMaterials = materialRequirementService.buildMultiLevelRequirementNetwork(chromosome, sceneId, baseTime,_globalParam);
//
if(orderMaterials!=null&&orderMaterials.size()>0&&_globalParam.isIsCheckSf()) { // if(orderMaterials!=null&&orderMaterials.size()>0&&_globalParam.isIsCheckSf()) {
generateGlobalOpList(chromosome); // generateGlobalOpList(chromosome);
//
CreateNewOpSequence(chromosome); // CreateNewOpSequence(chromosome);
} // }
List<GlobalOperationInfo> globalOpList=chromosome.getGlobalOpList(); List<GlobalOperationInfo> globalOpList=chromosome.getGlobalOpList();
List<Entry> allOperations=chromosome.getAllOperations(); List<Entry> allOperations=chromosome.getAllOperations();
...@@ -387,7 +395,7 @@ if(finishedOrder==null||finishedOrder.size()==0) ...@@ -387,7 +395,7 @@ if(finishedOrder==null||finishedOrder.size()==0)
// String lastDiscreteParameter = machineState.get(machineId); // String lastDiscreteParameter = machineState.get(machineId);
int bomtime = getOperationBOMTime(currentOp,chromosome); int bomtime = getOperationBOMTime(currentOp,chromosome);
FileHelper.writeLogFile("工序:"+currentOp.getId() +"bomtime1:"+bomtime);
int prevendtime=prevtime; int prevendtime=prevtime;
prevtime = Math.max(prevtime, bomtime); prevtime = Math.max(prevtime, bomtime);
...@@ -485,7 +493,6 @@ if(finishedOrder==null||finishedOrder.size()==0) ...@@ -485,7 +493,6 @@ if(finishedOrder==null||finishedOrder.size()==0)
} }
bomtime= EditOperationBOMTime(operation,chromosome,earliestStartTime); bomtime= EditOperationBOMTime(operation,chromosome,earliestStartTime);
FileHelper.writeLogFile("工序:"+operation.getId() +"bomtime2:"+bomtime);
if(bomtime>prevendtime&&bomtime<earliestStartTimeold) if(bomtime>prevendtime&&bomtime<earliestStartTimeold)
......
...@@ -1180,6 +1180,8 @@ if(targetOp.getSequence()>1) { ...@@ -1180,6 +1180,8 @@ if(targetOp.getSequence()>1) {
*/ */
public void redecode(Chromosome chromosome,LocalDateTime baseTime, GlobalParam globalParam) public void redecode(Chromosome chromosome,LocalDateTime baseTime, GlobalParam globalParam)
{ {
DelOrder(chromosome);
MachineSchedulerService machineScheduler = new MachineSchedulerService(baseTime); MachineSchedulerService machineScheduler = new MachineSchedulerService(baseTime);
chromosome.setMachines(ProductionDeepCopyUtil.deepCopyList(chromosome.getInitMachines(),Machine.class) ); chromosome.setMachines(ProductionDeepCopyUtil.deepCopyList(chromosome.getInitMachines(),Machine.class) );
...@@ -1195,6 +1197,7 @@ if(targetOp.getSequence()>1) { ...@@ -1195,6 +1197,7 @@ if(targetOp.getSequence()>1) {
chromosome.setResult(ProductionDeepCopyUtil.deepCopyList(Resultlock,GAScheduleResult.class)); chromosome.setResult(ProductionDeepCopyUtil.deepCopyList(Resultlock,GAScheduleResult.class));
decoder.decode(chromosome); decoder.decode(chromosome);
KpiCalculator kpiCalculator=new KpiCalculator(chromosome); KpiCalculator kpiCalculator=new KpiCalculator(chromosome);
...@@ -1216,6 +1219,49 @@ if(targetOp.getSequence()>1) { ...@@ -1216,6 +1219,49 @@ if(targetOp.getSequence()>1) {
// } // }
} }
public void DelOrder(Chromosome chromosome) {
List<Entry> allOperations = chromosome.getAllOperations();
List<GlobalOperationInfo> globalOpList= chromosome.getGlobalOpList();
List<Order> orders = chromosome.getOrders();
List<Integer> OperationSequencing= chromosome.getOperationSequencing();
List<GAScheduleResult> ScheduleResults = chromosome.getResult();
List<Integer> newoorderids= orders.stream()
.filter(t->t.isNewCreate())
.map(Order::getId)
.sorted(Comparator.reverseOrder())
.collect(Collectors.toList());
if(newoorderids!=null&&newoorderids.size()>0) {
for (Integer id : newoorderids) {
List<Entry> sourceOps = allOperations.stream()
.filter(o -> o.getGroupId()==id)
.sorted(Comparator.comparing(Entry::getSequence))
.collect(Collectors.toList());
for (Entry entry : sourceOps) {
OptionalInt index1 = IntStream.range(0, globalOpList.size())
.filter(h -> entry.getId()==globalOpList.get(h).getOp().getId())
.findFirst();
globalOpList.remove((int)index1.orElse(0));
chromosome.getMachineSelection().remove((int)index1.orElse(0));
}
chromosome.getOperatRel().remove(id-1);
}
allOperations.removeIf(t ->newoorderids.contains(t.getGroupId()));
OperationSequencing.removeIf(t ->newoorderids.contains(t));
AtomicInteger globalOpId = new AtomicInteger(0);
globalOpList.forEach(t-> {
t.setGlobalOpId(globalOpId.getAndIncrement());
});
orders.removeIf(t ->newoorderids.contains(t.getId()));
}
}
public void editMachineOption(Chromosome chromosome,Entry operation, public void editMachineOption(Chromosome chromosome,Entry operation,
Long newMachineId, GlobalParam globalParam) { Long newMachineId, GlobalParam globalParam) {
......
...@@ -67,7 +67,7 @@ public class DiscreteParameterMatrixServiceImpl extends ServiceImpl<DiscretePara ...@@ -67,7 +67,7 @@ public class DiscreteParameterMatrixServiceImpl extends ServiceImpl<DiscretePara
long secondEquipTypeId = entry.getEquipTypeID() != null ? entry.getEquipTypeID() : 0L; long secondEquipTypeId = entry.getEquipTypeID() != null ? entry.getEquipTypeID() : 0L;
if (firstEquipId == 0 || secondEquipId == 0 || firstEquipTypeId == 0 || secondEquipTypeId == 0) { if (firstEquipId == 0 || secondEquipId == 0 || firstEquipTypeId == 0 || secondEquipTypeId == 0) {
System.out.println(firstEquipId + "-- " + secondEquipId + "-- " + firstEquipTypeId + "-- " + secondEquipTypeId); // System.out.println(firstEquipId + "-- " + secondEquipId + "-- " + firstEquipTypeId + "-- " + secondEquipTypeId);
return 0.0; return 0.0;
} }
......
...@@ -39,7 +39,7 @@ public class PlanResultServiceTest { ...@@ -39,7 +39,7 @@ public class PlanResultServiceTest {
// TestSortService sortService=new TestSortService(); // TestSortService sortService=new TestSortService();
// sortService.test1(); // sortService.test1();
// nsgaiiUtils.Test(); // nsgaiiUtils.Test();
planResultService.execute2("83D729F5E0694F25A71614B1991D7457"); planResultService.execute2("EDDAFBAC0BD84375B7CF89BC85255082");
// planResultService.execute2("726D4C1A712B4B1393175BD44B775B66"); // planResultService.execute2("726D4C1A712B4B1393175BD44B775B66");
// planResultService.execute2("265F24B6DF3C40E4B17D193B0CC8AAF2"); // planResultService.execute2("265F24B6DF3C40E4B17D193B0CC8AAF2");
// LocalDateTime t= LocalDateTime.of(2026, 02, 14, 1, 25, 52); // LocalDateTime t= LocalDateTime.of(2026, 02, 14, 1, 25, 52);
......
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