我有一个简单的场景,我有一个规划实体持有一个整数问题事实,例如
[1][2][3][4][5][6][7][8][9].
我的目标是使用optaplanner对列表进行排序,将其划分为包含所有相邻数字的子列表,并计算每个子列表的平均值。
例如
[12][1][4][5][6][7][11][9][10]
应该分为三个子列表:
[1]
,
[4][5][6][7]
和
[9][10][11][12]
平均值为 1、 5.5,和 10.5,分别。
总分应该是平均分之和,即17.
几年前,我可以在 Drools 中编写这条规则,这并不容易,但有可能。但是现在,我想切换到 Constraint Streams 的现代计算方式。
如果还原模型怎么办?
[4][5][6][7]
的id,具有计划变量组的计划实体Assignment(认为[4]
)。唯一的问题(除了 average() 不存在之外)是 average() 返回一个双精度数(浮点数不相关)。你需要它来返回一个 BigDecimal 并使用 BigDecimal ... Score.
另外,你会想要积极的支柱交换动作以更快地获得更好的结果。