如何解决持久求解器,添加约束并扩展目标函数
尝试重新优化模型,我想使用 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 举报,一经查实,本站将立刻删除。