问题:分配给客户的卡车数量有限。
卡车必须分配给客户。由于卡车数量有限,卡车需要返回重新装货以交付给下一个客户。
行程-在车厂装货,在客户处或少数客户处卸货,返回车厂
问题事实是可用的卡车和客户要交付。我们需要根据几个与时间相关的条件(如卡车可用时间、司机小时数等)动态地找出卡车可以行驶多少次。
我能想到的解决办法是:基于业务理解预先计算卡车的最大行程数-将其用作规划变量。为违反时间限制提供硬分数,以便当卡车超过可用的卡车/行程时间时,很少有未分配的行程。
需要帮助:每解决的例子中,我们有一个固定数量的计划变量之前的计划。即使在链式规划变量(如TSP,VRP)中,我们事先也有固定数量的卡车。
任何帮助都是感激的。如果没有直接的解决方案,我提出的方法是最好的吗?
目前确实推荐这种解决方案:
-
在锚值范围内提供足够的卡车,以确保找到可行的解决方案。定义这个数字可以棘手:通常使用平均值的两倍。例如,如果你有300次访问,平均每辆卡车有100次访问,给它6辆卡车,因为你永远不会期望它使用超过6辆卡车(可能更少)。如果卡车有技能或亲和力,这就变得更加复杂了。
-
增加一个额外的分数级别:如果你在HardSoftScore,切换到HardMediumSoftScore
-
增加一个中等约束来惩罚使用的卡车数量。这比硬约束(容量等)和软约束(距离等)更软。
(另一种选择,在值范围内添加/删除值,目前在OptaPlanner的架构中仅在理论上可行(不要为此使用addProblemFactChanges !)。这可能听起来像一个完美的解决方案,但是有许多子系统从固定的值范围中获利,因此该方法将有严重的权衡。