为变量pyomo设置初始原始值和双值

时间:2017-03-13 10:28:44

标签: pyomo

我不想在程序的变量中设置初始原始值和双值。有没有具体的方法来做到这一点。我可以看到Var对象中有一个初始化选项,但我不确定如何以这种方式使用它

1 个答案:

答案 0 :(得分:4)

如果要在声明变量时设置变量值,可以使用initialize关键字。如,

model.x = Var(initialize=1.0)

或者,您可以在求解之前随时在变量上设置.value属性。如果您从AbstractModel开始,请确保仅对create_instance方法返回的实例执行此操作。以下是使用ConcreteModel

的示例
model = ConcreteModel()
model.x = Var()
model.X = Var([1,2,3])

model.x.value = 5.0
model.X[1].value = 1.0

NL文件接口将始终包含求解器输入文件中所有模型变量的当前值。对于其他接口(例如,LP文件接口),将关键字warmstart=True添加到solve方法将创建一个warmstart文件,其中包含MIP热启动的任何二进制或整数变量的值。

要设置双重解决方案,您必须在模型上使用名称Suffix声明dual。请注意,当前支持导出后缀信息的唯一接口是NL文件接口(与AMPL一起使用的解算器)。但是,大多数接口都支持从解算器导入后缀信息(尤其是dual)。设置特定约束的双重值可能如下所示:

model = ConcreteModel()
model.dual = Suffix(direction=Suffix.IMPORT_EXPORT)
model.c = Constraint(...)
model.dual[model.c] = 1.0

有关Suffix组件的更多信息,请访问Pyomo的在线documentation