为变量 pyomo 设置初始原始值和对偶值

iri*_*pid 3 pyomo

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

Gab*_*eil 6

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

model.x = Var(initialize=1.0)
Run Code Online (Sandbox Code Playgroud)

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

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

model.x.value = 5.0
model.X[1].value = 1.0
Run Code Online (Sandbox Code Playgroud)

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

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

model = ConcreteModel()
model.dual = Suffix(direction=Suffix.IMPORT_EXPORT)
model.c = Constraint(...)
model.dual[model.c] = 1.0
Run Code Online (Sandbox Code Playgroud)

关于该Suffix组件的更多信息可以在Pyomo的在线文档中找到。