Как запустить OptaPlanner CVRP на Java

#java #optaplanner

#java #optaplanner

Вопрос:

Я хотел бы запустить примеры CVRP в optaplanner на Java, используя мои собственные XML-файлы. Моя проблема в том, что я не могу понять, как предоставлять XML-файлы и каким методом. Если я создам экземпляр решения и предоставлю конфигурацию xml.

Как мне сообщить своему решению, где получить неразрешенные 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));
}
  

Ответ №1:

Вы можете создать SolutionDao объект, а затем использовать его реализацию VRP с помощью XStream для загрузки «нерешенных» 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 .