出错有三大原因:
尝试添加双向约束
从grobi优化9.0开始,当试图通过 PythonAPI增加双向约束时,你可能看到错误Gurobi9.0和后期不支持附加双向约束同一语法没有导致古罗比8.1.1和前面出错,加二面约束则不支持,行为不尽人意manbet体育手机客户端古罗比文件8.1.1中注意到这一点来:
注意双不平等约束,像 1+y2非支持API, 并产生不平等之一 默默置之不理, 从而产生意想不到行为
举例说,考虑下列代码:
m=模型xdvarm.addCostrl
Gurobi8.1.1中,结果模式如下(LP格式):
最小化主体对齐:x++++2
注意限制1++x缺失gurobi主动禁止使用语法错误,防止出人意料的类似行为取而代之的是,两种约束都可单独添加到模型中:
maddConstr(1++++++++++++++++++++++++++++++++++2++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
NumPy标量约束左侧使用
NumPy标量器使用时(例如numpy.int32、numpy.int64、numpy.float32或numpy.float64)也可能发生错误举例说,下列代码产生错误“约束无布尔值 ” :
unp导入grobipysgp模型=gp.ddVar
Python使用NumPy相关数据类中的_Ge_BAR_或_Le_BAR_方法产生错误,而NumPy数据类非用于构建gurobi约束表达式
两种可能的变通方法有:
- 重播NumPy数据结构成标准Python数值类型,像int或浮点例中最后一行变模型.addConstr(int)
- 重写约束符,左手表达式从Var或LinExpr对象开始使用此工作变通方式后,最后一行改换模型.addConstr(x##a)
if-clauses使用变量或表达式
使用时也可能出错可变对象表达式对象LinExplor或四维Excer中if-clauses举例说,下列代码产生表层错误:
gpmmgddVars3ymaddConstr/gp.quicksum/y
出错是因为表达式对象gp.quicksum(x)调用没有值可用于评价if条件在数学编程中,人们不得不通过附加约束和二进制变量建模这些条件语句
知识库文章如何模拟古罗比条件语句解释如何建模上if条件
注释
0注释
文章关闭备注