繁体   English   中英

具有子集的Gurobi约束创建

[英]Gurobi Constraint Creation with a subset

我试图通过Python 2.7.12在Gurobi 7.0.2中添加以下约束。

\\ sum_ {i \\ in I_j} c_i x_i \\ leq f_j ~~~ \\ forall j \\ I

我有一个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] ....因此,我不能真正使用这些名称“能力投资,设施等”。 作为我的索引。 感谢您为解决我的问题做出的任何贡献。

文章顶部的公式写为

for j in J:
   m.addConstr(quicksum([c[i] * x[i] for i in I[j]]) <= f[j])

假设您的意思是用j对集合J进行索引。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM