29.3. solver 配置
solver 配置文件决定了参与过程的工作方式;它被视为代码的一部分。该文件命名为 example /sources/src/main/resources/org/optaplanner/examples/cloudbalancing/solver/cloudBalancingSolverConfig.xml。
例 29.5. cloudBalancingSolverConfig.xml
这个 resolver 配置由三个部分组成:
域模型配置 :业务优化器变化是什么?
我们需要使业务优化者了解我们的域类。在此配置中,它将自动扫描类路径中的所有类(对于
@PlanningEntity或@PlanningSolution注解):<scanAnnotatedClasses/>
<scanAnnotatedClasses/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 分数配置 :业务优化器应该如何优化规划变量?我们的目标是什么?
由于我们存在硬和软限制,因此我们使用一个
HardSoftScore。但我们需要根据我们的业务需求告知业务优化器如何计算分数。此外,我们将查看两种替代方法来计算分数:使用基本的 Java 实施和使用 droolL。<scoreDirectorFactory> <easyScoreCalculatorClass>org.optaplanner.examples.cloudbalancing.optional.score.CloudBalancingEasyScoreCalculator</easyScoreCalculatorClass> <!--<scoreDrl>org/optaplanner/examples/cloudbalancing/solver/cloudBalancingScoreRules.drl</scoreDrl>--> </scoreDirectorFactory><scoreDirectorFactory> <easyScoreCalculatorClass>org.optaplanner.examples.cloudbalancing.optional.score.CloudBalancingEasyScoreCalculator</easyScoreCalculatorClass> <!--<scoreDrl>org/optaplanner/examples/cloudbalancing/solver/cloudBalancingScoreRules.drl</scoreDrl>--> </scoreDirectorFactory>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 优化算法配置 :业务优化器应如何优化它?在这种情况下,我们使用默认的优化算法(因为没有配置显式优化算法) 30 秒:
<termination> <secondsSpentLimit>30</secondsSpentLimit> </termination><termination> <secondsSpentLimit>30</secondsSpentLimit> </termination>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在使用实时规划功能时,业务优化器应该以秒为单位得到良好结果(即使使用了实时规划功能),但其结果越好,其结果越好。高级用例可能会使用与硬时间限制不同的终止标准。
默认算法将容易使用人工规划器和大多数内部实施。您可以使用高级基准测试程序功能来更好地获得更好的结果。