Optaplanner 如何移动不违反任何约束的实体

问题描述 投票:0回答:1

我在这里问了一个相关问题。在研究了构建启发式和本地搜索步骤之后。我发现根本原因是在构造启发阶段,规划者为第一个实体 MeetingAssignment 找到了最佳解决方案,它不违反任何硬/中/软约束。而其他实体则违反不同的限制。然而,在本地搜索的下一阶段,规划者倾向于不再移动该实体。它是固定的,但是如果我们将固定实体移动到其他槽位(更改计划变量),我们可以找到更好的解决方案。所有实体都可以违反更少的约束。

我看过wiki上关于定制动作的内容。但要解决这个问题,我不知道如何定义移动。仅当违反硬约束时才需要移动,并且我不确定如何定义移动,因为它仅旨在移动没有违规的固定实体。

我也考虑过构造启发式的不同算法。但像first_fit_decrease或其他算法需要定义一个难度比较器。但这些实体是平等的。

你有解决这个问题的建议吗?

optaplanner
1个回答
0
投票
在编写自定义动作之前,您可以在 OptaPlanner/Timefold 中尝试一些

开箱即用的动作。 通常,您希望使用联合移动选择器在正常更改和交换移动之上添加通用或自定义移动。

编写自定义动作是一件痛苦的事情(尤其是 JIT 可扩展的)——我们非常清楚这一点,并且我们正在研究让它变得更容易的方法。话虽如此,它们为需要它们的复杂用例创造了奇迹。

© www.soinside.com 2019 - 2024. All rights reserved.