我考虑优化我们当地的筹款之旅。我们有固定数量的组从一个位置移动到另一个位置。目标是最小化总时间,并且(希望)所有组都花费相同的时间。
到目前为止,我只找到了每次车辆操作成本的设置(距离、修复、运输时间……)。
有谁知道如何在jsprit中实现这个目标?
我考虑优化我们当地的筹款之旅。我们有固定数量的组从一个位置移动到另一个位置。目标是最小化总时间,并且(希望)所有组都花费相同的时间。
到目前为止,我只找到了每次车辆操作成本的设置(距离、修复、运输时间……)。
有谁知道如何在jsprit中实现这个目标?
总时间应由 JSprit 优化,无需任何定制。大约相同的时间 -SolutionCostCalculator
如果时间不一样,我认为最简单的方法是创建自定义并增加路线成本。
public class CustomSolutionCostCalculator implements SolutionCostCalculator {
private StateManager stateManager;
public SPSolutionCostCalculator(StateManager aStateManager) {
stateManager = aStateManager;
}
@Override
public double getCosts(VehicleRoutingProblemSolution solution) {
double cost = 0.0;
// calculate cost
return cost;
}
}
然后在创建算法时使用它:
VehicleRoutingProblem vrp = vrpBuilder.build();
// init your vrp
VehicleRoutingAlgorithm algorithm = Jsprit.Builder.newInstance(vrp)
.setObjectiveFunction(new SPSolutionCostCalculator(stateManager))
.buildAlgorithm();
Collection<VehicleRoutingProblemSolution> searchSolutions = algorithm.searchSolutions();
VehicleRoutingProblemSolution solution = Solutions.bestOf(searchSolutions);
您需要为您的问题添加自定义约束。