问题描述
我需要用线性整数程序建模以下问题:
我们需要将 n 个不同的产品从工厂运送到仓库。每个产品都有自己的权重(元素 i 的权重 wi 我尝试了不同的方法,但总是无法在目标函数中对卡车数量进行建模。 我使用了一个变量 Yij,如果卡车 i 携带物品 j,则该变量等于 1,否则为 0,并设法编写了不同的约束条件。但我找不到如何计算使用该变量的卡车数量。 如果有人有任何建议,那将非常有帮助。 谢谢
解决方法
假设 Yij
是一个充满二元变量的 rectangular matrix of size (m=items,n=trucks)
,例如:
truck 0 1 2
item 0 x00 x x
item 1 x10 x x
item 2 x20 x x
item 3 x30 x x
您可以创建额外的二进制变量 t_used_0
(仅针对 truck_0
显示),例如:
sum(Yij_column_0) <= m * t_used_0
<-> x00 + x10 + x20 + x30 <= 4 * t_used_0
sum(Yij_column_0) >= t_used_0
<-> x00 + x10 + x20 + x30 >= t_used_0
然后您有 n
个辅助二元变量 t_used_i
,您可以将其总结为您的目标。
(在那些线性化中有很多自由度(例如等价与仅蕴涵),这在一定程度上解释了用户 abc 要求更多信息的原因。通常,您利用 em> 一切可能。)