Commit ffd1e0bc authored by DESKTOP-VKRD9QF\Administration's avatar DESKTOP-VKRD9QF\Administration
parents 78900059 7e90812c
...@@ -2038,7 +2038,7 @@ if(geneDetails!=null&&geneDetails.size()>0) ...@@ -2038,7 +2038,7 @@ if(geneDetails!=null&&geneDetails.size()>0)
} }
} }
List<OrderMaterialRequirement> remove=new ArrayList<>(); List<OrderMaterialRequirement> remove=new ArrayList<>();
materialRequirementService.CalBom(chromosome,0, totalNeededByMaterial,materials,baseTime.plusSeconds(estimatedStartTime) ,false,remove,null,false); materialRequirementService.CalBom(chromosome,0, totalNeededByMaterial,chromosome.getMaterials(),baseTime.plusSeconds(estimatedStartTime) ,false,remove,null,false);
Optional<LocalDateTime> rawDateOpt = totalNeededByMaterial.values().stream() Optional<LocalDateTime> rawDateOpt = totalNeededByMaterial.values().stream()
.map(OrderMaterialRequirement::getUseTime) .map(OrderMaterialRequirement::getUseTime)
......
...@@ -364,31 +364,32 @@ public class Initialization { ...@@ -364,31 +364,32 @@ public class Initialization {
chromo.setOrders(new CopyOnWriteArrayList<>(orders)); chromo.setOrders(new CopyOnWriteArrayList<>(orders));
if (i < sptCount) { if (i < sptCount) {
// SPT规则 // SPT规则 // 1 SPT(最短加工时间)
chromo.setGenerateType("SPT"); chromo.setGenerateType("SPT");
generateChromosomeByType(chromo, 1); generateChromosomeByType(chromo, 1);
} else if (i < eddsptCount) { } else if (i < eddsptCount) {
// EDD+SPT混合策略 // EDD+SPT混合策略 先按截止日期,再按加工时间
chromo.setGenerateType("EDD+SPT"); chromo.setGenerateType("EDD+SPT");
generateEDDSPTChromosome(chromo); generateEDDSPTChromosome(chromo);
} else if (i < eddCount) { } else if (i < eddCount) {
// EDD规则 // EDD规则 截止时间
chromo.setGenerateType("EDD"); chromo.setGenerateType("EDD");
generateChromosomeByType(chromo, 3); generateChromosomeByType(chromo, 3);
} else if (i < bottleneckCount) { } else if (i < bottleneckCount) {
// 瓶颈优先策略 // 瓶颈优先策略
chromo.setGenerateType("BottleneckFirst"); chromo.setGenerateType("BottleneckFirst");
generateBottleneckFirstChromosome(chromo); generateBottleneckFirstChromosome(chromo);
} else if (i < sstCount) { } else if (i < sstCount) {
// SST规则(已有物料排序) // SST规则(已有物料排序):优先选择准备时间最短的工序
chromo.setGenerateType("SST"); chromo.setGenerateType("SST");
generateSSTChromosome(chromo); generateSSTChromosome(chromo);
} else if (i < crCount) { } else if (i < crCount) {
// CR规则 // CR规则 CR(关键比率)规则:关键比率 = (截止日期 - 当前日期) / 剩余加工时间
chromo.setGenerateType("CR"); chromo.setGenerateType("CR");
generateCRChromosome(chromo); generateCRChromosome(chromo);
} else if (i < lptCount) { } else if (i < lptCount) {
// LPT规则 // LPT规则 2 LPT(最长加工时间)
chromo.setGenerateType("LPT"); chromo.setGenerateType("LPT");
generateChromosomeByType(chromo, 2); generateChromosomeByType(chromo, 2);
} else { } else {
...@@ -460,6 +461,7 @@ public class Initialization { ...@@ -460,6 +461,7 @@ public class Initialization {
} }
} else if (sortType == 3) { } else if (sortType == 3) {
//截止时间
if (considerSequence) { if (considerSequence) {
sortedOps.sort(Comparator.comparing((Entry op) -> op.getPriority()) sortedOps.sort(Comparator.comparing((Entry op) -> op.getPriority())
.thenComparing(Entry::getSequence) .thenComparing(Entry::getSequence)
......
...@@ -1548,6 +1548,7 @@ if(demand==null) ...@@ -1548,6 +1548,7 @@ if(demand==null)
.sorted(Comparator.comparing(MaterialSupply::getArrivalTime, Comparator.nullsLast(LocalDateTime::compareTo))) .sorted(Comparator.comparing(MaterialSupply::getArrivalTime, Comparator.nullsLast(LocalDateTime::compareTo)))
.collect(Collectors.toList()); .collect(Collectors.toList());
if(sortedInTransit!=null&&sortedInTransit.size()>0) {
for (MaterialSupply supply : sortedInTransit) { for (MaterialSupply supply : sortedInTransit) {
double useq = Math.min(needed, supply.getQuantity()); double useq = Math.min(needed, supply.getQuantity());
if (useq <= 0) { if (useq <= 0) {
...@@ -1555,7 +1556,7 @@ if(demand==null) ...@@ -1555,7 +1556,7 @@ if(demand==null)
} }
useTransit += useq; useTransit += useq;
needed -= useq; needed -= useq;
if(commitChanges) { if (commitChanges) {
supply.setQuantity(supply.getQuantity() - useq); supply.setQuantity(supply.getQuantity() - useq);
} }
if (earliestTime == null || (supply.getArrivalTime() != null && supply.getArrivalTime().isAfter(earliestTime))) { if (earliestTime == null || (supply.getArrivalTime() != null && supply.getArrivalTime().isAfter(earliestTime))) {
...@@ -1565,7 +1566,7 @@ if(demand==null) ...@@ -1565,7 +1566,7 @@ if(demand==null)
break; break;
} }
} }
}
orderMaterial.setUseTransit(useTransit); orderMaterial.setUseTransit(useTransit);
orderMaterial.setArrivalTime(earliestTime); orderMaterial.setArrivalTime(earliestTime);
......
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