python里gurobi变量约束不能用ceil,怎么改,急
论文需要,我在gurobi要写一个变量约束,大致是0.95*Z<x<=Z(Z是任意正整数)0.95-1、1.95-2....
下面代码里的“x.sum(i+1,'*') /20”就是上面举例中的x
from gurobipy import *
M=3
N=100
m=Model('dis')
n=[20,10,1]
x=m.addVars(M,N,vtype=GRB.BINARY,name='x')
m.addConstrs( (math.ceil(x.sum(i+1,'*') /n[i])-x.sum(i+1,'*') /n[i]>=0.05 for i in range(M))," C1 ")
运行结果及详细报错内容
File D:\xlsdata.py:40 in
m.addConstrs( (math.ceil(x.sum(i+1,'') /n[i])-x.sum(i+1,'') /n[i]>=0.05 for i in range(M))," C2 ")
TypeError: must be real number, not gurobipy.LinExpr
我的解答思路和尝试过的方法
我之前在matlab中用的就是ceil(x)-x>=0.05,但是在gurobi里行不通,我知道ceil不能用,但是也不知道能用什么。搜了MODEL.addGenConstrIndicator(binvar, binval, expression, name=""),也用不好
到底怎么写这个约束才能实现0.95Z<x.sum(i+1,'') /20<=Z(Z是正整数)