微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

持久求解器,添加约束并扩展目标函数

如何解决持久求解器,添加约束并扩展目标函数

尝试重新优化模型,我想使用 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 举报,一经查实,本站将立刻删除。