0

目前,我的问题有四个指标。这些中的每一个都测量完全不同的东西(每个都有不同的单位,不同的范围等),并且每个都在外部加权。我正在使用 Drools 进行评分。

我只有一个分数等级 ( SimpleLongScore),我必须找到一种方法将这些指标的各个分数适当地组合到一个long值上

目前最重要的问题是指标的值范围可能大相径庭。

因此,例如,如果在移动之后,可能范围较小的指标的得分提高了 10%,那么这可能与将较大范围的得分仅提高 1% 的替代移动完全相形见绌,因为OptaPlanner 只考虑实际的分数值,而不是可能的数值范围以及变化如何按比例影响它们(据我所知)。

那么,有没有办法干净地处理这个已经是我找不到的 OptaPlanner 的一部分?

实施帕累托评分是唯一可行的解​​决方案吗?因为这似乎是一场骇人听闻的噩梦。

到目前为止,我有代码/数学来计算我从 Drools 中访问的指标的最佳可能和最差分数,然后我可以计算出在该范围内的移动将我们置于何处,但这也感觉很hack-y如果我们想在该范围内非线性扩展,则会导致增量评分问题。

我一直在思考我应该咬紧牙关并实施帕累托计分。

谢谢!

4

1 回答 1

0

看看@ConstraintConfiguration@ConstraintWeight在文档中。

还可以看看“解释分数”一章,它可以准确地告诉你哪个约束对找到的最佳解决方案有哪个分数影响。

但是,如果您需要帕累托优化,因此您需要 多个不相互支配的最佳解决方案,那么请知道 OptaPlanner 还不支持该功能,但我知道有 2 个案例通过 hacking 在 OptaPlanner 中实现了它BestSolutionRecaller

话虽如此,99% 的考虑帕累托优化的案例都 100% 满意@ConstraintWeight,因为用户不想要多个最佳解决方案(模拟期间除外),他们只想要一个在生产中。

于 2020-07-22T15:24:09.583 回答