我正在使用或工具CP Solver实施包合并解决方案(基于护士问题解决方案)。在
有一家工厂生产一些小包装,需要邮寄给客户。 最好将一些mini_包装合并成更大的包装(例如,如果我们遵守总重量限制,我们可以将3个轻型mini_包装合并为一个包装,并支付一次而不是3次的运输费用)。在
Mini_包在数据源中有一些重要的属性(固定目的地、重量、可接受的交货日期范围)。在
我的主0-1整数变量如下所示:
x[mini_package_source_number, destination, optimal_shipment_date, package_number]
如果mini_套餐应在某一天前往某个目的地,则它==1,并合并为某个套餐号码。在
我已经成功构建了大部分模型,除了:
1。主要挑战
如何设置一个约束,以确保当求解器分配了一个最佳包裹编号时,它不能与任何其他目的地或装运日期一起使用?(这意味着它是一个物理上统一的包裹,去到某个地方)
潜在代码:
^{pr2}$错了,因为分配的包号码可以存在很多次,合并多个迷你包。 它可以存在多次,但必须始终指定给同一个目的地和日期。在
潜在解决方案:
x[1, Place67, 2019-01-01, 8] = 1
x[2, Place124, 2019-01-04, 119] = 1
x[3, Place124, 2019-01-04, 119] = 1
现在还可以,mini_包2和包3合并到包119到同一个目的地(和日期)。在
x[4, Place55, 2019-01-05, 119] = 1
这是错误的,因为mini_套餐4也被合并到119套餐中,之前由solver决定前往另一个目的地(和另一个日期)。在
怎么可能编码?如果有任何解决办法的建议,我将不胜感激。在
2。加法
@Stradivari的感觉(回答如下)是准确的。很有可能我使用了多余的变量。在
3。冲突产品挑战
为每对[pkg,destination]创建一个boolvar。在
同样的日期逻辑。在
顺便说一句,我觉得你可能用这个公式创造了很多无用的变量,你真的能决定一个小包装的目的地和/或日期吗?或者只是它的包裹,然后,对于每个包裹,它的目的地和日期?在
相关问题 更多 >
编程相关推荐