我正在努力学习optaplanner。我查看了文档和示例。以nqueen为例,我试图通过将其替换为骑士而不是女王来改变一点点问题。
我想把第一个骑士设置在固定位置,比如col0#row0。这应该是不改变它的起点。我怎么能这样做?
我想指定骑士的合法移动路径(女王更复杂) - 哪里是实施它的最佳位置?在自定义移动中指定它?骑士对象本身?
感谢任何帮助
答案 0 :(得分:0)
不要混淆国际象棋移动"使用"本地搜索移动"。国际象棋移动表示棋子可以攻击的有效位置。本地搜索移动是通过更改1个或多个变量从一个解决方案状态转换到另一个解决方案状态的方法。
要将皇后区改为骑士,只需采用nqueens示例并调整scoreRules.drl,这样如果两个国际象棋棋子彼此远离骑士图案,那么它就是一个硬约束匹配。
请注意,通过这些更改,本地搜索移动仍然只会更改骑士的行。此外,与nqueens不同,该列也可能成为计划变量,因为多个骑士可以在同一列上而不会相互攻击。