Drools Planner--solver配置(第2.1.4章节)

第一章 Drools Planner--solver配置(第2.1.4章节)

版本:5.5.0.Final
2.1 云均衡教程
2.1.1 问题陈述
2.1.2 域模型图
2.1.3 主要方法
2.1.4 solver配置

查看solver配置信息:

案例2.2. cloudBalancingSolverConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<solver>
<!--<environmentMode>DEBUG</environmentMode>-->
<!-- Domain model configuration -->
<s o lutionClass>org.drools.planner.examples.cloudbalancing.domain.CloudBalance</
solutionClass>
<plannin gEntity Class>org.drools.planner.examples.cloudbalancing.domain.CloudProcess</
planningEntityClass>
<!-- Score configuration -->
<scoreDirectorFactory>
<scoreDefinitionType>HARD_AND_SOFT</scoreDefinitionType>
cloudbalancing.solver.score.Clo udBalancingSimpleScoreCalculator</
simpleScoreCalculatorClass>
<!--<scoreDrl>/org/drools/planner/examples/cloudbalancing/solver/
cloudBalancingScoreRules.drl</scoreDrl>-->
</scoreDirectorFactory>
<!-- Optimization algorithms configuration -->
<termination>
<maximumSecondsSpend>120</maximumSecondsSpend>
</termination>
<constructionHeuristic>
<constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
<constructionHeuristicPickEarlyType>FIRST_LAST_STEP_SCORE_EQUAL_OR_IMPROVING</
constructionHeuristicPickEarlyType>
</constructionHeuristic>
<localSearch>
<acceptor>
<planningEntityTabuSize>7</planningEntityTabuSize>
</acceptor>
<forager>
<minimalAcceptedSelection>1000</minimalAcceptedSelection>
</forager>
</localSearch>
</solver>




solver的配置包含三个部分:
a.Domain model configuration(域模型配置): planner如何改变?我们需要让Planner意识到我们的域classes:
<sol uti onClass>org.drools.planner.examples.cloudbalancing.domain.CloudBalance</
solutionClass>
<planningE ntityClas s>org.drools.planner.examples.cloudbalancing.domain.CloudProcess</
planningEntityClass>

     b.Score configuration(得分配置):planner如何优化planning变量?我们使用一个HardAndSoftScore,需要有硬软约束。但是在我们的商业需求上,我们也要告诉Planner如何去计算这样的积分。向下看,我们观察两个备选方案的计算分数:一是使用简单java实现,一是使用Drools DRL。
<scoreDirectorFactory>
<scoreDefinitionType>HARD_AND_SOFT</scoreDefinitionType>
solver.score.CloudBa lancingSimpleScoreCalculator</
simpleScoreCalculatorClass>
<!--<scoreDrl>/org/drools/planner/examples/cloudbalancing/solver/
cloudBalancingScoreRules.drl</scoreDrl>-->
</scoreDirectorFactory>

c.优化算法配置:Planner咋样优化?现在不要担心:这儿是一个很好的默认配置,适用于大多数planning问题。已经超越了人类的规划和内部的实现。使用Planner标准的共举办(toolkit),你可以对其进行调整,以获更好的结果。
<termination>
<maximumSecondsSpend>120</maximumSecondsSpend>
</termination>
<constructionHeuristic>
<constructionHeuristicType>FIRST_FIT_DECREASING</
constructionHeuristicType>
<co ns tructionHeuristicPickEarlyType>FIRST_LAST_STEP_SCORE_EQUAL_OR_IMPROVING</
constructionHeuristicPickEarlyType>
</constructionHeuristic>
<localSearch>
<acceptor>
<planningEntityTabuSize>7</planningEntityTabuSize>
</acceptor>
<forager>
<minimalAcceptedSelection>1000</minimalAcceptedSelection>
</forager>
</localSearch>




让我们测试域模型class和积分配置。

你可能感兴趣的:(Drools Planner--solver配置(第2.1.4章节))