TempConstr
TempConstr
Gurobi临时约束对象。该类的对象在使用重载操作符构建约束时作为中间结果创建。该类上没有成员函数。相反,TempConstr
对象是由一组函数创建的Var,LinExpr,QuadExpr,GenExpr对象(例如,==,< =,> =).你通常不会在你自己的变量中存储这个类的对象。
的TempConstr
对象允许你创建几种不同类型的约束:
- 线性约束:一种形式的表达式
Expr1 Expr1感
,在那里Expr1
和Expr2
是LinExpr对象,Var对象、常量和感觉
是其中之一==
,< =
或> =
.例如,X + y <= 1 + z
是线性约束吗X + y == 5
.请注意,Expr1
和Expr2
不可能两者都是常数。 - 包括线性约束:一种形式的表达式
LinExpr == [Const1, Const2]
,在那里Const1
和Const2
是常数,LinExpr
是一个LinExpr对象。例如,X + y == [1,2]
是一个范围线性约束。 - 二次约束:一种形式的表达式
Expr1 Expr2感
,在那里Expr1
和Expr2
是QuadExpr对象,LinExpr对象,Var对象、常量和感觉
是其中之一==
,< =
或> =
.例如,X * X + y*y <= 3
是二次约束吗X * X + y*y <= z*z
.请注意Expr1
或Expr2
必须是一个QuadExpr(否则,约束将是线性的)。 - 绝对值约束:一种形式的表达式
x = = abs_ (y)
,在那里x
和y
必须Var对象。 - 逻辑约束:一种形式的表达式
x = = op_ (y)
,在那里x
是一个二进制Var对象,y
是一个二进制Var,一个二进制列表Var,或者一个tupledict的二进制Var,op_
要么是,
或or_
(或特定于python的变体,all_
和any_
). - 最小或最大约束:一种形式的表达式
x = = op_ (y)
,在那里x
是一个Var对象,y
是一个Var,一列Var常数atupledict的Var,op_
是其中之一min_
或max_
. - 指标约束:一种形式的表达式
(x == b) >> (Expr1 sense Expr2)
,在那里x
是一个二进制Var对象,b
要么是0
或1
;Expr1
和Expr2
是LinExpr对象,Var对象、常量和感觉
是其中之一==
,< =
或> =
.两个表达式都需要加上括号。例如,(x == 1) > (y + w <= 5)
是一个指示符约束,指示每当二进制变量x
需要的值1
然后是线性约束Y + w <= 5
必须持有。
考虑以下例子:
模型。addConstr(x + y == 1);模型。addConstr(x + y == [1, 2]);模型。addConstr(x*x + y*y <= 1);模型。addConstr (x = = abs_ (y));模型。addConstr(x == or_(y, z)); model.addConstr(x == max_(y, z)); model.addConstr((x == 1) >> (y + z <= 5));在每种情况下,重载比较操作符都创建一个类型对象
TempConstr
,然后立即传递给方法Model.addConstr.