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)
}
}
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()
.map(OrderMaterialRequirement::getUseTime)
......
......@@ -364,31 +364,32 @@ public class Initialization {
chromo.setOrders(new CopyOnWriteArrayList<>(orders));
if (i < sptCount) {
// SPT规则
// SPT规则 // 1 SPT(最短加工时间)
chromo.setGenerateType("SPT");
generateChromosomeByType(chromo, 1);
} else if (i < eddsptCount) {
// EDD+SPT混合策略
// EDD+SPT混合策略 先按截止日期,再按加工时间
chromo.setGenerateType("EDD+SPT");
generateEDDSPTChromosome(chromo);
} else if (i < eddCount) {
// EDD规则
// EDD规则 截止时间
chromo.setGenerateType("EDD");
generateChromosomeByType(chromo, 3);
} else if (i < bottleneckCount) {
// 瓶颈优先策略
chromo.setGenerateType("BottleneckFirst");
generateBottleneckFirstChromosome(chromo);
} else if (i < sstCount) {
// SST规则(已有物料排序)
// SST规则(已有物料排序):优先选择准备时间最短的工序
chromo.setGenerateType("SST");
generateSSTChromosome(chromo);
} else if (i < crCount) {
// CR规则
// CR规则 CR(关键比率)规则:关键比率 = (截止日期 - 当前日期) / 剩余加工时间
chromo.setGenerateType("CR");
generateCRChromosome(chromo);
} else if (i < lptCount) {
// LPT规则
// LPT规则 2 LPT(最长加工时间)
chromo.setGenerateType("LPT");
generateChromosomeByType(chromo, 2);
} else {
......@@ -460,6 +461,7 @@ public class Initialization {
}
} else if (sortType == 3) {
//截止时间
if (considerSequence) {
sortedOps.sort(Comparator.comparing((Entry op) -> op.getPriority())
.thenComparing(Entry::getSequence)
......
......@@ -1548,24 +1548,25 @@ if(demand==null)
.sorted(Comparator.comparing(MaterialSupply::getArrivalTime, Comparator.nullsLast(LocalDateTime::compareTo)))
.collect(Collectors.toList());
for (MaterialSupply supply : sortedInTransit) {
double useq = Math.min(needed, supply.getQuantity());
if (useq <= 0) {
continue;
}
useTransit += useq;
needed -= useq;
if(commitChanges) {
supply.setQuantity(supply.getQuantity() - useq);
}
if (earliestTime == null || (supply.getArrivalTime() != null && supply.getArrivalTime().isAfter(earliestTime))) {
earliestTime = supply.getArrivalTime();
}
if (needed <= 0) {
break;
if(sortedInTransit!=null&&sortedInTransit.size()>0) {
for (MaterialSupply supply : sortedInTransit) {
double useq = Math.min(needed, supply.getQuantity());
if (useq <= 0) {
continue;
}
useTransit += useq;
needed -= useq;
if (commitChanges) {
supply.setQuantity(supply.getQuantity() - useq);
}
if (earliestTime == null || (supply.getArrivalTime() != null && supply.getArrivalTime().isAfter(earliestTime))) {
earliestTime = supply.getArrivalTime();
}
if (needed <= 0) {
break;
}
}
}
orderMaterial.setUseTransit(useTransit);
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