问题描述
尝试重新优化模型,我想使用 gurobi 持久求解器,但我不确定如何正确实现它,特别是向模型添加新约束并扩展目标函数。
为了扩展目标函数,我使用了主题 https://pyomo.readthedocs.io/en/stable/working_models.html?highlight=deactivate#extending-the-objective-function 并处理了我查看了 Handle ConstraintList with persistent solver 的新约束。问题是,当我扩展目标函数时,它只需要“扩展部分”,而不是初始目标函数和扩展部分。
对于constraintslist()
,它看起来不支持参数rule
,而只支持expr
...这是我的代码:
#initial model
opt = SolverFactory('gurobi_persistent')
opt.set_instance(model)
results = opt.solve(model,tee=True)
#Reopitmisation model
#New inputs and variable
model.constraint = ConstraintList()
model.alpha_distance = Var(model.N_S_D,within=Binary)
Weightdistance = 1.5
ModelX_DictExtVal = model.x.extract_values()
#Extend objective function
model.ObjFunction.expr -= sum(model.alpha_distance[n,s,d] * Weightdistance for n in model.N for s in model.S for d in model.D)
#Add new constraints
def constraint_distance_1(model,n,d):
return model.alpha_distance[n,d] >= model.x[n,d] - ModelX_DictExtVal[n,d]
constraint_distance_1 = model.constraint.add(model.N_S_D,rule = constraint_distance_1)
opt.add_constraint(constraint_distance_1)
def constraint_distance_2(model,d] >= ModelX_DictExtVal[n,d] - model.x[n,rule = constraint_distance_2)
opt.add_constraint(constraint_distance_2)
#Solve reoptimisation model
opt = SolverFactory('gurobi_persistent')
opt.set_instance(model)
results = opt.solve(model,tee=True)
是否可以将 constraintlist()
与规则一起使用?如何扩展目标函数?谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)