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

问题描述

尝试重新优化模型,我想使用 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 (将#修改为@)