Drools 在Optaplanner中获得最佳3分?

Drools 在Optaplanner中获得最佳3分?,drools,optaplanner,Drools,Optaplanner,我们可以使用Optaplanner中的约束获得前三名最佳分数吗 例如,我有一个用例,我需要向用户显示得分最高的前三名结果,以便用户可以根据自己的需要选择解决方案。听起来像是帕累托优化(见文档)。OptaPlanner中尚未正式支持 但用户以前也曾入侵过它,他们实现了自己的BestSolutionRecaller(=持有最佳解决方案的类),并用它替换了DefaultSolver的BestSolutionRecaller。这意味着“服用红色药丸”和“跟随兔子洞进入仙境”。祝你好运:) 重要提示:帕累

我们可以使用Optaplanner中的约束获得前三名最佳分数吗


例如,我有一个用例,我需要向用户显示得分最高的前三名结果,以便用户可以根据自己的需要选择解决方案。

听起来像是帕累托优化(见文档)。OptaPlanner中尚未正式支持

但用户以前也曾入侵过它,他们实现了自己的
BestSolutionRecaller
(=持有最佳解决方案的类),并用它替换了
DefaultSolver
BestSolutionRecaller
。这意味着“服用红色药丸”和“跟随兔子洞进入仙境”。祝你好运:)


重要提示:帕累托优化比只记住n个最佳解要深入得多。这是关于记住n个最好的解决方案,这些解决方案不受其他最佳解决方案的支配。因此,它需要改变分数比较(并打破分数比较的传递方面)。

将来有机会支持这种帕累托优化吗?我们什么时候可以期待它正式发布?它不会出现在6.2中(当然,除非有人提出一个非常好的拉取请求)。我还没有最终确定6.3中的内容,但我想为6.3添加并行求解,在这种情况下,它们也不会为pareto提供任何带宽。因此,它不会很快得到官方支持:(你能为basesolutionrecaller提供这段代码吗,因为我真的需要拥有顶级最佳解决方案的功能?不,对不起。这需要几个小时,所以这远远超出了回答一个免费社区支持问题的范围。@GeoffreyDeSmet:如果我们有一个SimpleScore,并且我们知道会有几个具有相同值的最佳解决方案,那不是有一个简单的解决方案吗比全面的帕累托更重要?我想我们只需要覆盖BestSolutionRecaller,而不是(正如文档中提到的帕累托评分)分数定义或分数。(文档中只提到一次BestSolutionRecaller,所以不确定这涉及到什么。)