【问题标题】:Does OptaPlanner have a "built-in" way to perform multi-unit score normalization?OptaPlanner 是否有“内置”方法来执行多单元分数归一化?
【发布时间】:2020-11-11 03:11:42
【问题描述】:

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

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

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

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

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

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

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

我不断回想我应该硬着头皮实施帕累托计分。

谢谢!

【问题讨论】:

    标签: drools optaplanner pareto-optimality


    【解决方案1】:

    查看文档中的@ConstraintConfiguration@ConstraintWeight

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

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

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

    【讨论】:

    • 谢谢;为延误道歉。我确实有一个 @ConstraintConfiguration 类设置。用户可以为每个指标设置权重,这些权重在 ConsConfig 中捕获。当前的解决方案计算最差/最好的可能分数,并在应用于总分之前对每个分数增量进行标准化。问题是每个指标都可能衡量不同的东西,如果没有帕累托/标准​​化,某些指标将在评分中占主导地位,即使这些变化实际上并不显着。例如,对指标 A 的 +1000 可能并不比对指标 B 的 +10 更好。
    • 听起来你有一个与其他惩罚不同的度量标准。平方根可能会有所帮助。见optaplanner.org/blog/2017/02/03/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2013-11-27
    • 2021-12-05
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多