#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
.