Explorar o código

APS平台新模型调优

fangpy hai 1 ano
pai
achega
ba22df3b46

+ 11 - 0
rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/domain/ProductionProcesses.java

@@ -1,5 +1,6 @@
 package com.rongwei.rwapsserver.aps.domain;
 
+import cn.hutool.core.date.DateUtil;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.rongwei.rwapsserver.aps.listener.TaskStartTimeListener;
 import com.rongwei.rwapsserver.aps.util.DelayStrengthComparator;
@@ -15,7 +16,9 @@ import org.springframework.beans.BeanUtils;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -600,4 +603,12 @@ public class ProductionProcesses extends Step{
     public void setSoftconflictdes(String softconflictdes) {
         this.softconflictdes = softconflictdes;
     }
+
+    public String getSeriSort(){
+        String sortStr = this.getId();
+        if(this.getStartTime() != null){
+            sortStr = DateUtil.format(Date.from(this.getStartTime().atZone( ZoneId.systemDefault()).toInstant()),"yyyy-MM-dd HH:mm:ss")+sortStr;
+        }
+        return sortStr;
+    }
 }

+ 6 - 2
rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/listener/TaskStartTimeListener.java

@@ -83,7 +83,7 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
             /*if(process.getId().equals("abdcff89d0164cd5a2b57e1bfaf3bc1d")){
                 process.getId();
             }*/
-            LocalDateTime startDateTime = startTimeSet(process);
+            LocalDateTime startDateTime = startTimeSet(process,scoreDirector);
             if(process.getDelay() != null && process.getDelay()>0){
                 if(process.getProduceTime()>1000){
                     int bc = (int) Math.ceil((double) process.getProduceTime() / 20);
@@ -209,10 +209,14 @@ public class TaskStartTimeListener implements VariableListener<ApsSolution, Prod
      * 设置开始时间
      * @param process
      */
-    private LocalDateTime startTimeSet(ProductionProcesses process){
+    private LocalDateTime startTimeSet(ProductionProcesses process,ScoreDirector<ApsSolution> scoreDirector){
         // 时间设定
         LocalDateTime toUpdateStartTime = null;
         if(process.getEquipment() != null){
+           /* if("ec0e36791ac845f4bd7aa21dc5ad45ba".equals(process.getId()) && "0001be252874536843730b100020".equals(process.getEquipment().getId())){
+                System.out.println("process.getId():"+process.getId()+";process.getEquipment().getId():"+process.getEquipment().getId()+";process.getDelay():"+process.getDelay());
+                process.getId();
+            }*/
             // 最大单批次生产时间
             Integer maxUnitProduceTime = 0;
             // 最大流转时间

+ 5 - 2
rw-aps-server/src/main/java/com/rongwei/rwapsserver/aps/score/ApsConstraintProvider.java

@@ -636,7 +636,7 @@ public class ApsConstraintProvider implements ConstraintProvider {
 
                     if(hasStartTimeProcess != null && hasStartTimeProcess.size()>1){
                         // 安装开始时间排序
-                        Collections.sort(hasStartTimeProcess, Comparator.comparing(ProductionProcesses::getStartTime));
+                        Collections.sort(hasStartTimeProcess, Comparator.comparing(ProductionProcesses::getSeriSort));
                         // 获取设备已排程好的最后一个作业,计算连续加工
                         if(equipment.getLastProcessType() != null && equipment.getLastSeriesProduceMark() != null){
                             ProductionProcesses pp = new ProductionProcesses();
@@ -701,7 +701,7 @@ public class ApsConstraintProvider implements ConstraintProvider {
                         }
                     }
                     // 按照开始时间排序
-                    Collections.sort(hasStartTimeProcess, Comparator.comparing(ProductionProcesses::getStartTime));
+                    Collections.sort(hasStartTimeProcess, Comparator.comparing(ProductionProcesses::getSeriSort));
                     // 获取设备已排程好的最后一个作业,计算连续加工
                     if(equipment.getLastProcessType() != null && equipment.getLastSeriesProduceMark() != null){
                         ProductionProcesses pp = new ProductionProcesses();
@@ -738,6 +738,9 @@ public class ApsConstraintProvider implements ConstraintProvider {
                             }
                         }
                     }
+                    /*if("0001be252874536843730b100020".equals(equipmentId)){
+                        System.out.println("******得分:"+b);
+                    }*/
                     if(b>0){
                         return b;
                     }