瀏覽代碼

新模型退火合并超出装炉量

fangpengyuan 2 月之前
父節點
當前提交
80f83b796c

+ 36 - 1
rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/taskassigning/tado/TaskStartTimeListenerTa.java

@@ -66,6 +66,9 @@ public class TaskStartTimeListenerTa implements ListVariableListener<ApsSolution
         if (ObjectNull.isNull(tasks) || tasks.size() - 1 < index) {
             return;
         }
+        if(tasks.size() == 3){
+            int aaa = 0;
+        }
 
         index = 0;
         ProductionProcessesTa productionProcessesTa = tasks.get(index);
@@ -235,8 +238,31 @@ public class TaskStartTimeListenerTa implements ListVariableListener<ApsSolution
                     BigDecimal hasMergeMinThickness = null;
                     BigDecimal hasMergeMaxWeight = null;
                     BigDecimal hasMergeMinWeight = null;
+
+                    int mergeProsminZljs = 0;
+                    int mergeProstotalPcNum = 0;
                     if(mergePros.size()>0){
                         for (ProductionProcessesTa mergePro : mergePros) {
+                            mergeProstotalPcNum = mergeProstotalPcNum + mergePro.getOpeProducePcNum();
+                            if(mergePro.getProduceOrder() != null && mergePro.getProduceOrder().size()>0){
+                                Integer nowzljs = mergePro.getProduceOrder().get(0).getMaxheatroll();
+                                if(equipmentTa.getEquipmentParameter().getMaxfurance() != null && equipmentTa.getEquipmentParameter().getMaxfurance()>0){
+                                    if(nowzljs>0 && nowzljs>equipmentTa.getEquipmentParameter().getMaxfurance()){
+                                        nowzljs = equipmentTa.getEquipmentParameter().getMaxfurance();
+                                    }
+                                }
+                                if(nowzljs != null && nowzljs>0){
+                                    if(mergeProsminZljs == 0){
+                                        mergeProsminZljs = nowzljs;
+                                    }else{
+                                        if(nowzljs < mergeProsminZljs){
+                                            mergeProsminZljs = nowzljs;
+                                        }
+                                    }
+                                }
+                            }
+
+
                             // 最大宽度
                             if(hasMergeMaxWidth == null){
                                 hasMergeMaxWidth = mergePro.getVolumeWidth();
@@ -288,6 +314,15 @@ public class TaskStartTimeListenerTa implements ListVariableListener<ApsSolution
                         }
                     }
 
+                    // 最大装炉卷数
+                    if(process.getProduceOrder().get(0).getMaxheatroll()<mergeProsminZljs){
+                        mergeProsminZljs = process.getProduceOrder().get(0).getMaxheatroll();
+                    }
+                    if(mergeProsminZljs == 0){
+                        mergeProsminZljs = 4;
+                    }
+                    mergeProstotalPcNum = mergeProstotalPcNum + process.getOpeProducePcNum();
+
                     // 最大、最小宽度
                     BigDecimal maxVolumeWidth = hasMergeMaxWidth;
                     BigDecimal minVolumeWidth = hasMergeMinWidth;
@@ -381,7 +416,7 @@ public class TaskStartTimeListenerTa implements ListVariableListener<ApsSolution
                         btSinglerollweight = ztjzc;
                     }
                     if(maxVolumeWidth.subtract(minVolumeWidth).compareTo(btVolumeWidth)<=0 && maxVolumeThickness.subtract(minVolumeThickness).compareTo(btVolumeThickness)<=0
-                            && maxSinglerollweight.subtract(minSinglerollweight).compareTo(btSinglerollweight)<=0){
+                            && maxSinglerollweight.subtract(minSinglerollweight).compareTo(btSinglerollweight)<=0 && mergeProsminZljs>=mergeProstotalPcNum){
                         hasMergeTh = true;
                     }
                 }