0

我正在尝试对跨码头问题建模。它有以下几组:

j 代表出站卡车,

s 用于分拣站和

l 用于出站码头。

此外,还有一个二进制变量 z(j,s),如果出站卡车 j 分配给分拣站 s,则该变量为 1。

在计算之前,您必须将出站码头分配给分拣站。为此,我定义了一个子集 k(s,l)。我的示例如下所示:

Sets

j      /J1*J27/
s      /S1*S4/
l      /L1*L30/
;

Sets  k(s,l)

        /S1.(L1,L2,L3,L4,L5,L6)
         S2.(L7,L8,L9,L10,L11,L12)
         S3.(L13,L14,L15,L16,L17,L18,L19,L20)
         S4.(L21,L22,L23,L24,L25,L26,L27,L28,L29,L30)/ 

我的问题是对以下方程建模:

此限制表示,您分配给 Sorting Station 的 Outbound Trucks 的数量不能超过分配给该 Station 的 Outbound Docks。 L(s) 是分配给分拣站 s 的出站码头数量。

我该如何建模?我试过这样:

方程.. sum(j, z(j,s)) =l= card(k);

但它不起作用,因为 'card(k)' 不代表分配给 Sorting Station 的出站码头数量。所以我的问题是,是否可以在子集上对卡运营商进行建模?

或者有人知道另一种可能的方法来模拟这个方程吗?

4

1 回答 1

0

首先,k 不在子集上,它是一个多维集合。

不,不能使用多维集合的卡片。

您似乎希望计算每个分拣站有多少个出站码头。约束应表述为:

方程.. sum(j, z(j,s)) =l= sum(l$k(s,l),1);

于 2016-10-10T13:11:42.790 回答