我正在尝试学习 optaplanner。作为一个学习项目,我正在尝试实现一个非常基本和简单的程序来计算“魔方”。
基本上我试图将“数字”分配给行和列中定义的“框”。
很抱歉没有直接从源代码复制/粘贴,我的开发机器无法连接到互联网,所以我将尝试手动写下课程的重要部分。
我的域结构如下:
@PlanningSolution MagicSquareSolution
//facts List<Column> columnList List<Row> rowList List<Number> numberList //entity List<Box> boxList @valueRangeProvider (id="numberRange") getNumberList() @PlanningEntityCollectionProperty getBoxList
@PlanningEntity 框
Column column Row row Number number // planningVariable @PlanningVariable(valueRangeProviderRefs="{numberRange}") getNumber
我正在使用一个简单的 Java 分数计算器类。
在我的求解器配置 xml 中,我使用了 FIRST_FIT 和 FIRST_NON_DETERIRATING_SCORE。
问题是; 在我得到的解决方案中,数字被重复使用
7 5 3
1 5 9
7 5 3
在这里您可以看到虽然行和列的总和等于 15;数字 7,5 和 3 被多次使用。如何强制计划变量的值范围内的所有值至少使用一次且仅使用一次。
谢谢。
阿基夫,