最小化jsprit的总时间

时间:2017-12-19 22:36:16

标签: jsprit

我考虑优化本地筹款活动。 我们有固定数量的团体,从一个地方移动到另一个地方。 目标是总时间最小化,并且(希望)所有组都花费相同的时间。

到目前为止,我只找到了每辆车运营成本的设置(距离,修复,运输时间......)。

有谁知道如何在jsprit中实现这个目标?

2 个答案:

答案 0 :(得分:1)

总时间应由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);

答案 1 :(得分:0)

您需要为问题添加自定义约束。