Optaplanner - 不断设定约束的连续计划,未设置先前的分配无效

时间:2016-09-13 15:16:55

标签: optaplanner

我们使用Optaplanner 7.0 beta + Graphhopper来计算仓库中的最短路径,其中货物必须由工人收集到箱子中(vrptw)。由于该业务是关于收集在线订购的商品约。在白天,70%的收集物品都会被添加到问题中。我们使用ProblemFactChange添加传入的订单商品,并且链中已完成的订单商品设置为不可移动(这些'重新启动'每隔一小时执行一次)。到目前为止一切正常。

现在的问题是改变限制/条件,这可能是由于仓库区域的工作量不平衡造成的。仓库在逻辑上划分为区域,以避免所有工人必须服务于所有区域(我知道您对规划问题的细分的看法,但这就是当前工作的组织方式)。目前,一个区域内可用工作人员的项目分配有限,目前由硬约束定义。

我们面临的新要求是,如果工作人员的工作量高于其实际工作区,则应将工作人员临时分配到不同的工作区。之后他可以切换回原来的区域。根据我的理解,约束条件的更新将导致先前分配的锁定项的硬约束违规,这应该被避免。是否有支持临时更改限制的机制或者SelectionFilter项目是否有帮助? (顺便说一下:我们正在使用drools)。

欢迎提示,谢谢 迈克尔

1 个答案:

答案 0 :(得分:0)

如果有2个不同的租户,每个都有自己的员工,任务等,并且各自都在他们自己的解算器中,那么可以使用借用模式,特别是如果员工借款涉及一些人际互动(通常是文书工作或经理之间的电话):

假设租户A有一名叫约翰的雇员而租客B想借他。然后将一个或多个实体从B分配给John并使它们不可移动(通常是{{1}})。然后将相同的实体添加到租户A. A和B的解算器都不能移动它们(因此它们不会改变),但是它们都会将它们考虑在内:租户A赢了当John为租户B工作时让John工作,而租户B会同意这些实体被分配(并且它不会尝试将John分配给其他实体,因为它不在其中)' s值范围)。