最大程度地减少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);

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

相关内容

  • 没有找到相关文章

最新更新