|
@@ -45,6 +45,8 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
tuihuoSp(constraintFactory),
|
|
|
sameEquipment(constraintFactory),
|
|
|
seriesZzLb(constraintFactory),
|
|
|
+
|
|
|
+ preNextProcessSameWorkShop(constraintFactory),
|
|
|
// SOFT
|
|
|
processNear(constraintFactory),
|
|
|
eqTimeCrossMinTuihuoSoft(constraintFactory),
|
|
@@ -2658,7 +2660,7 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
ppMap.remove(hasMergeOldKey);
|
|
|
}
|
|
|
}
|
|
|
- return ppMap.size()*10000;
|
|
|
+ return ppMap.size()*1000;
|
|
|
})
|
|
|
.asConstraint("mergeTuihuo");
|
|
|
}
|
|
@@ -2998,11 +3000,37 @@ public class ApsConstraintProvider implements ConstraintProvider {
|
|
|
if(!equipmentpre.getId().equals(equipmentthis.getId())){
|
|
|
a = a + 10000;
|
|
|
}
|
|
|
- if(!equipmentpre.getWorkshopid().equals(equipmentthis.getWorkshopid())){
|
|
|
+ /*if(!equipmentpre.getWorkshopid().equals(equipmentthis.getWorkshopid())){
|
|
|
a = a + 10000;
|
|
|
- }
|
|
|
+ }*/
|
|
|
return a;
|
|
|
})
|
|
|
.asConstraint("preNextProcessSameEq");
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 前后工序可以在一个设备上的尽量在一个设备上
|
|
|
+ * @param constraintFactory
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private Constraint preNextProcessSameWorkShop(ConstraintFactory constraintFactory) {
|
|
|
+ return constraintFactory.forEach(ProductionProcesses.class)
|
|
|
+ .filter(pro->{
|
|
|
+ boolean a = false;
|
|
|
+ if(pro.getPreviousProcesses() != null && pro.getPreviousProcesses().size()>0){
|
|
|
+ a = true;
|
|
|
+ }
|
|
|
+ return a;
|
|
|
+ })
|
|
|
+ .penalize(HardMediumSoftScore.ONE_MEDIUM,(processes)->{
|
|
|
+ int a = 0;
|
|
|
+ Equipment equipmentthis = processes.getEquipment();
|
|
|
+ Equipment equipmentpre = processes.getPreviousProcesses().get(0).getEquipment();
|
|
|
+ if(!equipmentpre.getWorkshopid().equals(equipmentthis.getWorkshopid())){
|
|
|
+ a = a + 5000;
|
|
|
+ }
|
|
|
+ return a;
|
|
|
+ })
|
|
|
+ .asConstraint("preNextProcessSameWorkShop");
|
|
|
+ }
|
|
|
}
|