java - 如何在 Java 中运行 OptaPlanner CVRP

标签 java optaplanner

我想使用我自己的 xml 文件在 java 中的 optaplanner 中运行 CVRP 示例。我的问题是我不知道如何提供 xml 文件以及使用哪种方法。如果我实例化一个解决方案并提供 xml 配置。

如何告诉我的解决方案从哪里获取 UnSolved xml 文件?我更喜欢将 xml 文件作为参数。

下面的一些代码片段:

public static void run(){
        SolverFactory<VehicleRoutingSolution> solverFactory = SolverFactory.createFromXmlResource("org/optaplanner/examples/vehiclerouting/solver/vehicleRoutingSolverConfig.xml");
        Solver<VehicleRoutingSolution> solver = solverFactory.buildSolver();

        VehicleRoutingSolution mySolution = new VehicleRoutingSolution();


        mySolution.getCustomerList();
        mySolution.getVehicleList();
        mySolution.getDepotList();


        //mySolution.setMyPlanningEntity(myPlanningEntity);

        solver.solve(mySolution);

        VehicleRoutingSolution bestSolution = (VehicleRoutingSolution)solver.getBestSolution();
        System.out.println("Best solution: " + (bestSolution));
}

最佳答案

您可以创建一个 SolutionDao 对象,然后通过 XStream 使用它的 VRP 实现来加载“未解析”的 XML 文件。该格式需要与 OptaPlanner 用于 VRP XML 输入文件的格式相同。

public class TestApp {

    public void solveFromFile(File vrpXmlInputFile) {
        SolverFactory<VehicleRoutingSolution> solverFactory = SolverFactory.createFromXmlResource("org/optaplanner/examples/vehiclerouting/solver/vehicleRoutingSolverConfig.xml");
        Solver<VehicleRoutingSolution> solver = solverFactory.buildSolver();

        VehicleRoutingDao solutionDao = new VehicleRoutingDao();
        VehicleRoutingSolution solution = solutionDao.readSolution(vrpXmlInputFile);

        solver.solve(solution);

        VehicleRoutingSolution bestSolution = solver.getBestSolution();
        System.out.println("Best solution: " + (bestSolution));
    }

    public static void main(String[] args) {
        if (args.length != 1) {
            throw new IllegalArgumentException("Usage: TestApp [pathToVrpXmlInputFile]");
        }

        TestApp app = new TestApp();
        app.solveFromFile(new File(args[0]));
    }

}

确保正确设置工作目录(在我的例子中......./optaplanner/optaplanner-examples

关于java - 如何在 Java 中运行 OptaPlanner CVRP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40132008/

相关文章:

java - Java 中的什么在虚拟内存中使用 400M,我如何降低该使用量?

java - Drools Planner 在运行时设置minimalAcceptedSelection

java - Optaplanner 项目的非法参数异常,解算器配置在类加载器中不作为类路径资源存在

java - 光规划器 :Error when displaying constraints scores

java - 如何在没有访问 token 的情况下公开 Gitlab 包注册表?

java - 在 Java 中,“Else If”给出错误 "' else' without 'if'

optaplanner - 有关增量分数计算器的基础知识

java - OptaPlanner - 从另一个规则调用时全局变量为空

java - 如果使用正则表达式连续出现超过 1 个,如何从字符串中删除一个单词

java - 为什么我的低电量警报代码不起作用?