|
@@ -111,6 +111,22 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
|
}
|
|
|
apsSolution.setProcessesList(notLocks);
|
|
|
|
|
|
+ // 取每个坯料计划的第一道待排序
|
|
|
+ List<ProductionProcesses> firstpros = apsSolution.getProcessesList().stream().filter(v -> {
|
|
|
+ boolean firstpro = true;
|
|
|
+ List<ProductionProcesses> previousProcesses = v.getPreviousProcesses();
|
|
|
+ if (previousProcesses != null && previousProcesses.size() > 0) {
|
|
|
+ for (ProductionProcesses previousProcess : previousProcesses) {
|
|
|
+ if (!previousProcess.getIfLock()) {
|
|
|
+ firstpro = false;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return firstpro;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ apsSolution.setProcessesList(firstpros);
|
|
|
+
|
|
|
String cores = Runtime.getRuntime().availableProcessors() + "";
|
|
|
SolverFactory<ApsSolution> solverFactory = SolverFactory.create(new SolverConfig()
|
|
|
.withEnvironmentMode(EnvironmentMode.REPRODUCIBLE)
|
|
@@ -119,7 +135,7 @@ public class ProductionScheduleServiceImpl implements ProductionScheduleService
|
|
|
.withEntityClasses(ProductionProcesses.class, Equipment.class)
|
|
|
.withConstraintProviderClass(ApsConstraintListProvider.class)
|
|
|
// .withTerminationConfig(new TerminationConfig().withUnimprovedSecondsSpentLimit(60L))
|
|
|
- .withTerminationSpentLimit(Duration.ofSeconds(1800))
|
|
|
+ .withTerminationSpentLimit(Duration.ofSeconds(300))
|
|
|
.withMoveThreadCount(cores)
|
|
|
);
|
|
|
Solver<ApsSolution> solver = solverFactory.buildSolver();
|