修改订单分配车辆策略
This commit is contained in:
@@ -133,12 +133,12 @@ public class OrderAssigner {
|
||||
);
|
||||
|
||||
AssignmentState assignmentState = new AssignmentState();
|
||||
if (availableVehicles.size() < availableOrders.size()) {
|
||||
if (availableVehicles.size() < availableOrders.size()) { //车数量 < 订单数
|
||||
availableVehicles.stream()
|
||||
.sorted(vehicleComparator)
|
||||
.forEach(vehicle -> tryAssignOrder(vehicle, availableOrders, assignmentState));
|
||||
}
|
||||
else {
|
||||
else { //车数量 >= 订单数
|
||||
availableOrders.stream()
|
||||
.sorted(orderComparator)
|
||||
.forEach(order -> tryAssignVehicle(order, availableVehicles, assignmentState));
|
||||
@@ -227,13 +227,25 @@ public class OrderAssigner {
|
||||
)
|
||||
.collect(Collectors.partitioningBy(filterResult -> !filterResult.isFiltered()));
|
||||
|
||||
// // 调试输出:分组统计结果
|
||||
// System.out.println("Candidate groups: Passed=" + ordersSplitByFilter.get(Boolean.TRUE).size() + ", Filtered=" + ordersSplitByFilter.get(Boolean.FALSE).size());
|
||||
//
|
||||
// // 调试输出:显示所有通过过滤的候选(排序前)
|
||||
// List<AssignmentCandidate> passedCandidates = ordersSplitByFilter.get(Boolean.TRUE).stream()
|
||||
// .map(CandidateFilterResult::getCandidate)
|
||||
// .collect(Collectors.toList());
|
||||
//
|
||||
// passedCandidates.forEach(c -> System.out.println("passedCandidates - order: " + c.getTransportOrder() + ",vehicle:" + c.getVehicle() + ",Costs: " + c.getCompleteRoutingCosts()));
|
||||
|
||||
ordersSplitByFilter.get(Boolean.FALSE).stream()
|
||||
.map(CandidateFilterResult::toFilterResult)
|
||||
.forEach(filterResult -> assignmentState.addFilteredOrder(filterResult));
|
||||
|
||||
|
||||
ordersSplitByFilter.get(Boolean.TRUE).stream()
|
||||
.map(CandidateFilterResult::getCandidate)
|
||||
.sorted(vehicleCandidateComparator)
|
||||
// .sorted(vehicleCandidateComparator) 框架原本排序有问题,修改为按照路由成本排序
|
||||
.sorted(Comparator.comparingLong(AssignmentCandidate::getCompleteRoutingCosts))
|
||||
.findFirst()
|
||||
.ifPresent(candidate -> assignOrder(candidate, assignmentState));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user