Model.addQConstr()


Model.addQConstr()

addQConstr(lhs,sense=None,rhs=None,name=”“)

向模型添加二次约束。

重要提示:Gurobi用于解决二次约束问题的算法只能处理某些类型的二次约束。始终接受以下形式的约束:

  • <span>$</span>x^TQx+q^Tx\le b<span>$</span>哪里<span>$</span>Q<span>$</span>是半正定的(PSD)
  • <span>$</span>x^Tx\le y^{2}<span>$</span>哪里<span>$</span>x<span>$</span>是变量的向量,并且<span>$</span>y<span>$</span>是非负变量(二阶锥)
  • <span>$</span>x^Tx\le y z<span>$</span>哪里<span>$</span>x<span>$</span>是变量的向量,并且<span>$</span>y<span>$</span><span>$</span>z<span>$</span>是非负变量(旋转的二阶圆锥体)
如果添加的约束不是这些形式中的一种(而Gurobi presolve无法将约束转换为这些形式中的一种),则在尝试求解模型时会出现错误。二次项仅涉及二进制变量的约束将始终转换为这些形式中的一种。

请注意,此方法还接受临时施工作为其第一个参数(名称作为其第二个参数)。这允许您使用运算符重载来创建约束。看见临时施工了解更多信息。

论据:

lhs:新二次约束的左侧。可以是常数,也可以是变量A.LinExpr,或QuadExpr.

感觉:新二次约束的意义(GRB.LESS_EQUALGRB.更大的).

rhs:新二次约束的右侧。可以是常数,也可以是变量A.LinExpr,或QuadExpr.

名称:新约束的名称。注意名称将存储为ASCII字符串。因此,像”“是的<span>$</span>{\rightarrow}<span>$</span>B'将产生错误,因为<span>$</span>{\rightarrow}<span>$</span>'不能表示为ASCII字符。还请注意,强烈建议不要使用包含空格的名称,因为它们不能写入LP格式的文件。

返回值:

新的二次约束对象。

用法示例:

模型addQConstr(x*x+y*y,GRB.LESS_EQUAL,z*z,“c0”)模型addQConstr(x*x+y*y<=2.0,“c1”)