代码之家  ›  专栏  ›  技术社区  ›  Sam Barnum

OptaPlanner HelloWorld VehicleRoutingSolution问题缺少easyScoreCalculatorClass或incrementalScoreCalculatorClass

  •  0
  • Sam Barnum  · 技术社区  · 3 年前

    我正在尝试运行 org.acme.vehiclerouting.solver.SolverManagerTest 的类 optaplanner-分布-8.29.0.最终 我刚下载的捆绑包。修改了,就像我把它复制到我自己的项目中一样。但是,我无法创建 SolverFactory ,可能是因为我没有在Spring中运行它,所以我尝试手动创建我的SolverManager,而不是依赖 @Inject

        VehicleRoutingSolution problem = DemoDataBuilder.builder().setMinDemand(1).setMaxDemand(2)
                .setVehicleCapacity(25).setCustomerCount(75).setVehicleCount(6).setDepotCount(2)
                .setSouthWestCorner(new Location(0L, 43.751466, 11.177210))
                .setNorthEastCorner(new Location(0L, 43.809291, 11.290195)).build();
    
        SolverManager<VehicleRoutingSolution, Long> solverManager;
        SolverConfig solverConfig = new SolverConfig()
                .withSolutionClass(VehicleRoutingSolution.class)
                .withEntityClasses(Vehicle.class)
                .withTerminationSpentLimit(Duration.ofSeconds(3));
    
    
        SolverFactory<VehicleRoutingSolution> configFactory = SolverFactory.create(solverConfig);
    

    以上失败

    java.lang.IollegalArgumentException:scoreDirectorFactory缺少easyScoreCalculatorClass或incrementalScoreCalculatorClass的配置。

    我的ScoreDirectorFactory应该使用什么?我应该试着让@Inject工作吗?我更希望能够手动完成此配置,运行示例时会有很多神奇之处。

    1 回复  |  直到 3 年前
        1
  •  2
  •   Sam Barnum    3 年前

    找到它:

        SolverConfig solverConfig = new SolverConfig()
                .withSolutionClass(VehicleRoutingSolution.class)
                .withEntityClasses(Vehicle.class)
                .withScoreDirectorFactory(new ScoreDirectorFactoryConfig().withConstraintProviderClass(VehicleRoutingConstraintProvider.class))
                .withTerminationSpentLimit(Duration.ofSeconds(3));
    

    我在.java文件中寻找线索,但它是在中定义的 vehicleRoutingBenchmarkConfig.xml

          <scoreDirectorFactory>
            <constraintProviderClass>org.optaplanner.examples.vehiclerouting.score.VehicleRoutingConstraintProvider</constraintProviderClass>
            <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend>
          </scoreDirectorFactory>
    
    推荐文章