Gurobi:使用 addConstrs() 但表达式不正确
Gurobi: Using addConstrs() but the expression is not right
我是Gurobi和Python的新手。我正在尝试解决一个简单的混合二进制问题,但有一些错误。
我定义的问题如下,
我想要变量 u[1,1], u[2,1], u[3,1] 和 u[1,2], u[2,2], u[3,2],与变量 p 相似。我想添加上面的约束,但有一些错误说我的表达式不正确。
u=m.addVars([1, 2, 3], [1, 2], vtype=GRB.BINARY)
p=m.addVars(3,2,lb=0.0)
m.addConstrs(p[i,j]<= 30*u[i,j]
for i in range(3)
for j in range(2))
m.addConstrs(p[(i,j)]>=5*u[(i,j)]
for i in range(3)
for j in range(2))
错误是这样的
line 14, in <module>
for i in range(3)
File "model.pxi", line 3062, in gurobipy.Model.addConstrs
File "/Users/Documents/pyexercise/HW4Q1.py", line 15, in <genexpr>
for j in range(2))
KeyError: (0, 0)
谁能帮我解决这个问题?谢谢!
在 Python 中,使用range(n)
返回从0
到n-1
的n
数字列表。因此,您的addConstrs()
函数迭代键(0,0)
、(0,1)
、(1,0)
、(1,1)
、(2,0)
和(2,1)
键。
但是,u
变量按(1,1)
、(1,2)
、(2,1)
、(2,2)
、(3,1)
和(3,2)
进行索引:
gurobi> u = m.addVars([1, 2, 3], [1, 2], vtype=GRB.BINARY)
gurobi> u.keys()
<gurobi.tuplelist (6 tuples, 2 values each):
( 1 , 1 )
( 1 , 2 )
( 2 , 1 )
( 2 , 2 )
( 3 , 1 )
( 3 , 2 )
>
您会收到KeyError
,因为约束的索引与变量的索引不匹配。要解决此问题,您可以更改u
变量的构造以匹配p
变量的构造:
gurobi> u = m.addVars(3, 2, vtype=GRB.BINARY)
gurobi> u.keys()
<gurobi.tuplelist (6 tuples, 2 values each):
( 0 , 0 )
( 0 , 1 )
( 1 , 0 )
( 1 , 1 )
( 2 , 0 )
( 2 , 1 )
>
相关文章:
- 使用2个键的cpp-stl::优先级队列排序不正确
- 正弦级数方程计算不正确
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 密码登录程序将永远循环并显示不正确的结果
- 在C++中返回不正确的楼层函数值
- 形状对象的旋转和缩放不正确C++
- 为什么在 while 循环中返回表达式不起作用
- C++ 读取文件读取文件不正确
- 关于类的 Python 文档 - 对C++的引用不正确
- 特征 LLT 模块给出不正确的结果?
- glibcxx STL 在实现 std::valarray::sum() 时是否不正确?
- 如果语句逻辑不正确
- 为什么在template函数广播中把两个extensor表达式加在一起不正确
- Gurobi:使用 addConstrs() 但表达式不正确
- 计算后缀表达式.pop() 返回不正确的值来计算函数
- Boost正则表达式不替换正则表达式网站上正确替换的表达式
- 条件表达式行为不正确
- "anti-SFINAE"在给定表达式格式不正确时启用重载
- 为什么c++应用程序可能不正确地计算表达式
- 类表达式参数定义不正确