0

我正在尝试学习 optaplanner。我浏览了文档和示例。以 nqueen 为例,我试图通过将其替换为骑士而不是女王来稍微改变问题。

  1. 我想将第一个骑士设置在固定位置,例如 col0#row0。这应该是不改变它的起点。我怎样才能做到这一点?

  2. 我想指定骑士的合法移动路径(从女王更复杂) - 实施它的最佳地点在哪里?在自定义移动中指定它?在骑士对象本身?

感谢任何帮助

4

1 回答 1

0

不要将“国际象棋移动”与“本地搜索移动”混淆。国际象棋移动表明棋子可以攻击的有效位置。本地搜索移动是一种通过更改一个或多个变量从一个解决方案状态转到另一个解决方案状态的方法。

要将皇后变为骑士,只需以 nqueens 为例并调整 scoreRules.drl,因此如果 2 个棋子彼此相距一个骑士图案,则这是一个硬约束匹配。

请注意,通过这些更改,本地搜索移动仍然会简单地更改骑士的行数。此外,与 nqueens 不同的是,纵队也可以成为计划变量,因为多个骑士可以在同一纵队上而不会互相攻击。

于 2014-03-20T12:43:56.350 回答