Commit a9f7d0cc authored by Tong Li's avatar Tong Li

遗传算法-增加kpi

parent 9640e865
...@@ -115,4 +115,45 @@ public class Chromosome { ...@@ -115,4 +115,45 @@ public class Chromosome {
private String ScenarioName; private String ScenarioName;
private LocalDateTime BaseTime ; // 当前基准时间 private LocalDateTime BaseTime ; // 当前基准时间
//最大设备利用率
private double machineMaxRate;
//最小设备利用率
private double machineMinRate;
//设备等待时长
private double machineWaitTime;
//订单及时完成率
private double orderOnTime;
//最大延迟
private double orderMaxDelay;
//最小延迟
private double orderMinDelay;
//平均延迟
private double orderAvgDelay;
//最长生产周期
private double orderMaxProductTime;
//最短生产周期
private double orderMinProductTime;
//平均生产周期
private double orderAvgProductTime;
//最大流量
private double orderMaxFlow;
//最小流量
private double orderMinFlow;
//平均流量
private double orderAvgFlow;
} }
...@@ -19,6 +19,10 @@ public class Machine { ...@@ -19,6 +19,10 @@ public class Machine {
private List<Holiday> holidays; private List<Holiday> holidays;
private double actualWorkTime;
private double rate;
// 事件回调 // 事件回调
private Consumer<Void> shiftsChanged; private Consumer<Void> shiftsChanged;
private Consumer<Void> maintenanceWindowsChanged; private Consumer<Void> maintenanceWindowsChanged;
......
...@@ -22,6 +22,12 @@ public class Order { ...@@ -22,6 +22,12 @@ public class Order {
private LocalDateTime dueDate; private LocalDateTime dueDate;
private LocalDateTime orderCompletion; private LocalDateTime orderCompletion;
private LocalDateTime orderStart;
private double machineProcessingTime;
private double orderFlow;
private double orderProductTime;
private double tardiness; private double tardiness;
private int priority; private int priority;
private boolean canSplit = false; private boolean canSplit = false;
...@@ -30,4 +36,6 @@ public class Order { ...@@ -30,4 +36,6 @@ public class Order {
private String mainId; private String mainId;
/*使用这个半成品的成品工单*/ /*使用这个半成品的成品工单*/
public List<String> FinishOrderId ; public List<String> FinishOrderId ;
private double delayHours;//延迟时间
} }
\ No newline at end of file
This diff is collapsed.
...@@ -650,6 +650,10 @@ public class ScheduleOperationService { ...@@ -650,6 +650,10 @@ public class ScheduleOperationService {
decoder.decode(chromosome); decoder.decode(chromosome);
KpiCalculator kpiCalculator=new KpiCalculator(chromosome);
kpiCalculator.calculatekpi();
// if(chromosome.getWeightedObjective()==0) { // if(chromosome.getWeightedObjective()==0) {
// //
// double[] normalized = objectiveWeights.normalizeObjectives(chromosome.getObjectives(), null, null); // double[] normalized = objectiveWeights.normalizeObjectives(chromosome.getObjectives(), null, null);
......
...@@ -13,10 +13,7 @@ import com.aps.entity.Schedule.GenVO; ...@@ -13,10 +13,7 @@ import com.aps.entity.Schedule.GenVO;
import com.aps.entity.Schedule.MachineVO; import com.aps.entity.Schedule.MachineVO;
import com.aps.entity.basic.*; import com.aps.entity.basic.*;
import com.aps.service.*; import com.aps.service.*;
import com.aps.service.Algorithm.GeneticAlgorithm; import com.aps.service.Algorithm.*;
import com.aps.service.Algorithm.IdGroupingWithDualSerial;
import com.aps.service.Algorithm.RoutingDataService;
import com.aps.service.Algorithm.ScheduleOperationService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -309,8 +306,11 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0)); ...@@ -309,8 +306,11 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0));
// 5. 执行调度算法 // 5. 执行调度算法
GeneticAlgorithm scheduler =new GeneticAlgorithm(globalParam,machines,orders,null,machineScheduler,entryRel); //new GeneticAlgorithm(products, machines, orders, machineScheduler); GeneticAlgorithm scheduler =new GeneticAlgorithm(globalParam,machines,orders,null,machineScheduler,entryRel); //new GeneticAlgorithm(products, machines, orders, machineScheduler);
param.initAdaptiveParams(entrys.size()); param.initAdaptiveParams(entrys.size());
Chromosome chromosome =scheduler.Run(param,entrys); Chromosome chromosome =scheduler.Run(param,entrys);
KpiCalculator kpiCalculator=new KpiCalculator(chromosome);
kpiCalculator.calculatekpi();
_sceneService.saveChromosomeToFile(chromosome, SceneId); _sceneService.saveChromosomeToFile(chromosome, SceneId);
// Chromosomes.forEach(this::WriteScheduleSummary); // Chromosomes.forEach(this::WriteScheduleSummary);
...@@ -524,7 +524,8 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0)); ...@@ -524,7 +524,8 @@ order.setDueDate(LocalDateTime.of(2025, 12, 1,0,0,0));
GeneticAlgorithm scheduler =new GeneticAlgorithm(globalParam,machines,orders,null,machineScheduler,entryRel); //new GeneticAlgorithm(products, machines, orders, machineScheduler); GeneticAlgorithm scheduler =new GeneticAlgorithm(globalParam,machines,orders,null,machineScheduler,entryRel); //new GeneticAlgorithm(products, machines, orders, machineScheduler);
param.initAdaptiveParams(entrys.size()); param.initAdaptiveParams(entrys.size());
Chromosome chromosomes =scheduler.Run(param,entrys); Chromosome chromosomes =scheduler.Run(param,entrys);
KpiCalculator kpiCalculator=new KpiCalculator(chromosomes);
kpiCalculator.calculatekpi();
chromosomes.setScenarioID(SceneId); chromosomes.setScenarioID(SceneId);
chromosomes.setBaseTime(param.getBaseTime()); chromosomes.setBaseTime(param.getBaseTime());
chromosomes.setOperatRel(entryRel); chromosomes.setOperatRel(entryRel);
......
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