1

我正在玩弄流口水计划器,因为最终我需要制定一个排班解决方案。我从Drools Planner 用户指南开始,我成功地在 Eclipse 中运行了示例。

为了理解 simple 和 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;

    public HardAndSoftScore getScore() { return hsScore; }

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

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

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

怎么了?

4

1 回答 1

0

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

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

在求解器配置中写入的任何分数都必须采用分数定义的格式,因此如下所示:

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

注意:您可能会通过查看“真实”示例之一(例如课程安排或护士排班)而不是 N Queens。

于 2012-09-11T07:21:14.860 回答