我不能在公式中使用变量吗?
Can't i use the variable in a formula?
我正在使用 gurobiy 编写数学模型,但出现错误。
错误是 'Var' 对象不能解释为整数。
我试图通过搜索解决它,但我没有足够的信息。
spi: 需要 space 块 i
cft:t时工厂f的面积
s_Time : 开始时间
p_Time : 处理时间
c_Time:完成时间,
t: 时间
f: 工厂
我:块
yif : 如果 blcok i 在 factory f 1 被赋值,否则 0
Space 必须在块组装时可用,然后才能将块分配给工厂。
for i in range(num_Block+1):
s_Time[i] =m.addVar(lb=0,vtype=GRB.INTEGER,name='s_time'+str(i))
c_Time[i] =m.addVar(lb=0,vtype=GRB.INTEGER,name='c_time'+str(i))
for i in range(1,num_Block+1):
m.addConstr(s_Time[i]+p_Time[i]==c_Time[i])
# This part occurs error because of s_Time[i],c_Time[1]
m.addConstrs(sp[i]*y[i,f] <=c[f,t] for f in range(1,num_Factory+1) for i in range(1,num_Block+1) for t in range(s_Time[i],c_Time[i]))
还有其他表达约束的方式吗?或者我该如何解决
Gurobi 适用于线性(和二次)模型。您不能使用变量作为索引的限制(这会使模型非线性)。通常,使用二元变量或指标约束重新制定此类结构。您可能想与 teacher/supervisor 讨论这个问题。
我正在使用 gurobiy 编写数学模型,但出现错误。
错误是 'Var' 对象不能解释为整数。
我试图通过搜索解决它,但我没有足够的信息。
spi: 需要 space 块 i
cft:t时工厂f的面积
s_Time : 开始时间
p_Time : 处理时间
c_Time:完成时间,
t: 时间
f: 工厂
我:块
yif : 如果 blcok i 在 factory f 1 被赋值,否则 0
Space 必须在块组装时可用,然后才能将块分配给工厂。
for i in range(num_Block+1):
s_Time[i] =m.addVar(lb=0,vtype=GRB.INTEGER,name='s_time'+str(i))
c_Time[i] =m.addVar(lb=0,vtype=GRB.INTEGER,name='c_time'+str(i))
for i in range(1,num_Block+1):
m.addConstr(s_Time[i]+p_Time[i]==c_Time[i])
# This part occurs error because of s_Time[i],c_Time[1]
m.addConstrs(sp[i]*y[i,f] <=c[f,t] for f in range(1,num_Factory+1) for i in range(1,num_Block+1) for t in range(s_Time[i],c_Time[i]))
还有其他表达约束的方式吗?或者我该如何解决
Gurobi 适用于线性(和二次)模型。您不能使用变量作为索引的限制(这会使模型非线性)。通常,使用二元变量或指标约束重新制定此类结构。您可能想与 teacher/supervisor 讨论这个问题。