【问题标题】:Optaplanner limit valueRangeProvider based on another entityOptaplanner 限制 valueRangeProvider 基于另一个实体
【发布时间】:2018-12-20 11:58:44
【问题描述】:

我的计划问题类似于员工排班。

我的计划实体如下所示

public class Menu {
    @PlanningVariable(valueRangeProviderRefs = "productRange")
    private String productId = null;
    private String packId;
    private String date;
}

现在,我有一个条件,如果两个 packId 是“相似的”,那么相同数据上的那些产品 ID 也必须是“相似的”,其中相似是由某些业务逻辑定义的。

我为此添加了一个硬性限制,但产品数量约为 3000 件,并且需要很长时间才能完成所有组合。有没有办法限制价值范围提供者来实现这一点(以便它只迭代类似的产品)?

【问题讨论】:

    标签: optaplanner


    【解决方案1】:

    根据 OptaPlanner 手册:实体的值范围必须独立于计划变量的状态。任何此类依赖都必须通过(硬)约束来处理。

    话虽如此,通常有更有效的模型来处理您所描述的复杂性。我从来没有见过任何低于 10k 的实例在 5 分钟左右的时间内没有有效的方法来解决它们。典型的缩放技巧包括预先计算(有效的组合、散列......)、规则/评分效率、附近的选择......和多线程求解以达到顶峰。这取决于具体情况,需要深入审查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多