kpi修改

parent 99817cb4
...@@ -861,11 +861,7 @@ if(finishedOrder==null||finishedOrder.size()==0) ...@@ -861,11 +861,7 @@ if(finishedOrder==null||finishedOrder.size()==0)
setupTime = (int) discreteParameterMatrixValue; setupTime = (int) discreteParameterMatrixValue;
if (operation.getOrderId()=="a0e61488-0647-4f8e-a27c-cfed9cbbba52"){
System.out.println("lastGene"+operation.getExecId());
}
// System.out.println("换型时间"+discreteParameterMatrixValue); // System.out.println("换型时间"+discreteParameterMatrixValue);
// System.out.println(setupTime+"换型时间"+"huanxingshijian "); // System.out.println(setupTime+"换型时间"+"huanxingshijian ");
......
...@@ -63,62 +63,74 @@ public class KpiCalculator { ...@@ -63,62 +63,74 @@ public class KpiCalculator {
.orElse(0); .orElse(0);
addKpi(kpiMetrics,"最大延迟", OrderMaxDelay, "所有订单的延迟时间最大值", 2, 1); addKpi(kpiMetrics,"最大延迟", OrderMaxDelay, "所有订单的延迟时间最大值", 2, 1);
//最小延迟 //最小延迟
double OrderMinDelay = chromosome.getOrders().stream() double orderMinDelay = chromosome.getOrders().stream()
.mapToDouble(Order::getDelayHours) .mapToDouble(Order::getDelayHours)
.min() .min()
.orElse(0); .orElse(0);
addKpi(kpiMetrics,"最小延迟", OrderMinDelay, "所有订单的延迟时间最小值", 2, 1); addKpi(kpiMetrics,"最小延迟", orderMinDelay, "所有订单的延迟时间最小值", 2, 1);
double OrderSumDelay = chromosome.getOrders().stream() double orderSumDelay = chromosome.getOrders().stream()
.mapToDouble(Order::getDelayHours) .mapToDouble(Order::getDelayHours)
.sum(); .sum();
//平均延迟 //平均延迟
double OrderDelay = Math.round(OrderSumDelay / chromosome.getOrders().size() * 100.0) / 100.0; double OrderDelay = Math.round(orderSumDelay / chromosome.getOrders().size() * 100.0) / 100.0;
addKpi(kpiMetrics,"平均延迟", OrderDelay, "所有订单的延迟时间平均值", 2, 1); addKpi(kpiMetrics,"平均延迟", OrderDelay, "所有订单的延迟时间平均值", 2, 1);
//最长生产周期 //最长生产周期
double OrderMaxProductTime = chromosome.getOrders().stream() double orderMaxProductTime = chromosome.getOrders().stream()
.mapToDouble(Order::getOrderProductTime) .mapToDouble(Order::getOrderProductTime)
.max() .max()
.orElse(0); .orElse(0);
addKpi(kpiMetrics,"最长生产周期", OrderMaxProductTime, "订单在计划中的实际存续时长", 2, 1); addKpi(kpiMetrics,"最长生产周期", orderMaxProductTime, "订单在计划中的实际存续时长", 2, 1);
//最小生产周期 //最小生产周期
double OrderMinProductTime = chromosome.getOrders().stream() double orderMinProductTime = chromosome.getOrders().stream()
.mapToDouble(Order::getOrderProductTime) .mapToDouble(Order::getOrderProductTime)
.min() .min()
.orElse(0); .orElse(0);
addKpi(kpiMetrics,"最短生产周期", OrderMinProductTime, "订单在计划中的实际存续时长", 2, 1); addKpi(kpiMetrics,"最短生产周期", orderMinProductTime, "订单在计划中的实际存续时长", 2, 1);
double OrderSumProductTime = chromosome.getOrders().stream() double orderSumProductTime = chromosome.getOrders().stream()
.mapToDouble(Order::getOrderProductTime) .mapToDouble(Order::getOrderProductTime)
.sum(); .sum();
//平均生产周期 //平均生产周期
double OrderProductTime= Math.round(OrderSumProductTime / chromosome.getOrders().size() * 100.0) / 100.0; double OrderProductTime= Math.round(orderSumProductTime / chromosome.getOrders().size() * 100.0) / 100.0;
addKpi(kpiMetrics,"平均生产周期", OrderProductTime, "订单在计划中的实际存续时长", 2, 1); addKpi(kpiMetrics,"平均生产周期", OrderProductTime, "订单在计划中的实际存续时长", 2, 1);
//最大流量 //最大流量
double OrderMaxFlow = chromosome.getOrders().stream() double orderMaxFlow = chromosome.getOrders().stream()
.mapToDouble(Order::getOrderFlow) .mapToDouble(Order::getOrderFlow)
.max() .max()
.orElse(0); .orElse(0);
addKpi(kpiMetrics,"最大流量", OrderMaxFlow, "订单的最短理论耗时与其在计划中的实际耗时的比值最大值", 0, 1); addKpi(kpiMetrics,"最大流量", orderMaxFlow, "订单的最短理论耗时与其在计划中的实际耗时的比值最大值", 0, 1);
//最小流量 //最小流量
double OrderMinFlow = chromosome.getOrders().stream() double orderMinFlow = chromosome.getOrders().stream()
.mapToDouble(Order::getOrderFlow) .mapToDouble(Order::getOrderFlow)
.min() .min()
.orElse(0); .orElse(0);
addKpi(kpiMetrics,"最小流量", OrderMinFlow, "订单的最短理论耗时与其在计划中的实际耗时的比值最小值", 0, 1); addKpi(kpiMetrics,"最小流量", orderMinFlow, "订单的最短理论耗时与其在计划中的实际耗时的比值最小值", 0, 1);
double OrderSumFlow = chromosome.getOrders().stream() double orderSumFlow = chromosome.getOrders().stream()
.mapToDouble(Order::getOrderFlow) .mapToDouble(Order::getOrderFlow)
.sum(); .sum();
//平均流量 //平均流量
double OrderFlow= Math.round(OrderSumFlow / chromosome.getOrders().size() * 100.0) / 100.0; double OrderFlow= Math.round(orderSumFlow / chromosome.getOrders().size() * 100.0) / 100.0;
addKpi(kpiMetrics,"平均流量", OrderFlow, "订单的最短理论耗时与其在计划中的实际耗时的比值", 0, 1); addKpi(kpiMetrics,"平均流量", OrderFlow, "订单的最短理论耗时与其在计划中的实际耗时的比值", 0, 1);
chromosome.setKpiMetrics(kpiMetrics); chromosome.setKpiMetrics(kpiMetrics);
//总换型
double totalChangeOverTime = chromosome.getResult().stream()
.mapToDouble(GAScheduleResult::getChangeOverTime)
.sum();
addKpi(kpiMetrics,"换型时间", totalChangeOverTime, "总的换型时间", 2, 1);
//总换型次数
long changeOverTimeCount = chromosome.getResult().stream()
.mapToLong(GAScheduleResult::getChangeOverTime)
.filter(changeOverTime -> changeOverTime > 0)
.count();
addKpi(kpiMetrics,"换型次数", changeOverTimeCount, "总的换型次数", 2, 1);
} }
......
...@@ -327,7 +327,7 @@ public class ChromosomeDataService { ...@@ -327,7 +327,7 @@ public class ChromosomeDataService {
private Object queryFileData(String sceneId, EntityConfig config) { private Object queryFileData(String sceneId, EntityConfig config) {
Chromosome chromosome = sceneService.loadChromosomeFromFile(sceneId); Chromosome chromosome = sceneService.loadChromosomeFromFile(sceneId);
if (chromosome == null) { if (chromosome == null) {
throw new RuntimeException("未找到场景ID为 " + sceneId + " 的Chromosome数据"); return null;
} }
try { try {
......
...@@ -35,6 +35,7 @@ public class DiscreteParameterMatrixServiceImpl extends ServiceImpl<DiscretePara ...@@ -35,6 +35,7 @@ public class DiscreteParameterMatrixServiceImpl extends ServiceImpl<DiscretePara
@Override @Override
public double getDiscreteParameterMatrixValue(Entry entry, Entry lastEntry) { public double getDiscreteParameterMatrixValue(Entry entry, Entry lastEntry) {
// 参数校验 // 参数校验
if (entry == null || lastEntry == null) { if (entry == null || lastEntry == null) {
return 0.0; return 0.0;
} }
......
...@@ -39,7 +39,7 @@ public class PlanResultServiceTest { ...@@ -39,7 +39,7 @@ public class PlanResultServiceTest {
// nsgaiiUtils.Test(); // nsgaiiUtils.Test();
//planResultService.execute2("C5FB5EF2A7334A0A92F826F4937E1008"); //planResultService.execute2("C5FB5EF2A7334A0A92F826F4937E1008");
// planResultService.execute2("726D4C1A712B4B1393175BD44B775B66"); // planResultService.execute2("726D4C1A712B4B1393175BD44B775B66");
planResultService.execute2("BCA6FA43FFA444D3952CF8F6E1EA291B"); planResultService.execute2("E81EE93EFA564CEB8594C61CAEEBCD53");
// LocalDateTime t= LocalDateTime.of(2025, 11, 15, 6, 51, 11); // LocalDateTime t= LocalDateTime.of(2025, 11, 15, 6, 51, 11);
// List<Integer> opids=new ArrayList<>(); // List<Integer> opids=new ArrayList<>();
// opids.add(1); // opids.add(1);
......
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