Drools计划员:将SimpleScore更改为HardAndSoftScore

时间:2012-09-10 23:21:44

标签: drools n-queens drools-planner optaplanner

我正在与drools计划者玩弄,因为最终我需要塑造一个排名解决方案。我从Drools Planner user guide开始,我成功地运行了Eclipse中的示例。

尝试理解简单和HardAndSoft分数类型之间的差异,我试图修改NQueens示例,将分数从Simple更改为HardAndSoft。

我做了如下:

  1. 在nqueensSolverConfig.xml中,我设置了<scoreDefinitionType>HARD_AND_SOFT</scoreDefinitionType>

  2. 在NQueens.java中:

    • 我设置public class NQueens extends AbstractPersistable implements Solution<HardAndSoftScore> {...}

    • 我将与SimpleScore相关的属性和方法更改为相应的HardAndSoftScore成员:

    私人HardAndSoftScore hsScore;

    公共HardAndSoftScore getScore(){     返回hsScore; }

    public void setScore(HardAndSoftScore score){     this.hsScore =得分; }

  3. 但是当我运行解决方案时,我收到以下消息:

    "The scoreString (0) doesn't follow the 999hard/999soft pattern."
    

    有什么问题?

1 个答案:

答案 0 :(得分:0)

你的求解器配置中仍然会有这个:

<termination>
  <scoreAttained>0</scoreAttained>
</termination>

在解算器配置中编写的任何分数必须采用分数定义的格式,如下所示:

<termination>
  <scoreAttained>0hard/0soft</scoreAttained>
</termination>

注意:您可能会看一个“真实”的例子,例如课程安排或护士排班,而不是N皇后区。