【问题标题】:Set initial primal and dual values for variables pyomo为变量 pyomo 设置初始原始值和对偶值
【发布时间】:2017-08-03 08:03:15
【问题描述】:

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

【问题讨论】:

    标签: pyomo


    【解决方案1】:

    如果要在声明变量时设置变量的值,可以使用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 添加到求解方法将创建一个热启动文件,其中包含 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 中找到。

    【讨论】:

    • @Hage Hackebell 看起来文档的链接已损坏,能否请您更新一下?
    • @GiorgioBalestrieri:完成。感谢您的通知。
    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    相关资源
    最近更新 更多