【发布时间】:2017-10-03 06:21:09
【问题描述】:
我正在尝试通过 Python 2.7.12 在 Gurobi 7.0.2 中添加以下约束。
我有一个 J 列表:
J
[u'Capability Investments',
u'Facilities',
u'Mission #1',
u'Mission #2',
u'New Program Readiness',
u'Site Support',
u'Transformation',
u'Waste Mgt']
我的名单是:
I
[u'Capability Investments', u'Capability Investments', u'Capability Investments',
u'Capability Investments', u'Capability Investments', u'Site Support',
u'Site Support', u'Site Support', u'Site Support', u'Site Support', u'Site Support',
u'Site Support', u'Site Support', u'Site Support', u'Site Support', u'Site Support',
u'Site Support', u'Site Support', u'Site Support', u'Site Support', u'Site Support',
u'Site Support', u'Site Support', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities', u'Facilities',
u'Mission #2', u'Mission #2', u'Mission #2', u'Mission #2', u'Waste Mgt', u'Waste Mgt',
u'Waste Mgt', u'Waste Mgt', u'Waste Mgt', u'Waste Mgt', u'Waste Mgt', u'Waste Mgt',
u'Waste Mgt', u'Waste Mgt', u'Waste Mgt', u'Waste Mgt', u'Waste Mgt', u'Transformation',
u'Transformation', u'Transformation', u'Transformation', u'Transformation',
u'Capability Investments', u'Mission #2', u'Mission #2', u'Mission #1', u'Mission #1',
u'Mission #1', u'Mission #1', u'Mission #1', u'Mission #1', u'Facilities',
u'New Program Readiness', u'New Program Readiness', u'New Program Readiness',
u'Transformation', u'Site Support', u'Site Support', u'Site Support', u'Site Support',
u'Site Support', u'Site Support', u'Mission #1']
我的失败尝试:
for i in I:
for j in J:
if i == j:
m.addConstr(quicksum(c[i]*x[i])<=f[j])
失败的第一个原因是我没有枚举我的列表,因此,这种约束添加导致与变量定义冲突,即我的x变量定义为x[0],x[1],x[2 ], x[3].... 所以,我不能真正使用这些名称“能力投资、设施等”。作为我的索引。感谢任何贡献以解决我的问题。
【问题讨论】:
-
您的列表是平面列表,与公式不符。
-
我知道它与@David 不匹配,我怎样才能让它工作?
-
我列举了我的列表并创建了元组:
J = list(enumerate(J)) I = list(enumerate(I))但是,我仍然无法应用您的公式,这确实有道理,但不起作用。 -
我想用word做的是将
i与J中具有相同元素的i相加,然后是<=在I中的对应元素。一个例子:假设所有 i 为c_i=1。x_0+x_1+x_2+x_3+x_4+x_185 <= f_0,其中f_0 = "Capability Investments"。j = 1 = "Facilities"、x_23++x_24+...+x_162+x_194 <= f_1等也是如此。