Pyomo上的Initialize和warmstart参数

时间:2018-03-14 21:40:38

标签: pyomo

如果我们在解决模型之前初始化特定值(即model.x)的变量model.x = 1,我们是否需要warmstart=True作为Pyomo {{1}调用的参数方法,以保持优化的初始值?

请记住,不应强制初始化变量采用指定值,它只为变量提供初始起始值,然后解算器将根据需要更改它。

1 个答案:

答案 0 :(得分:1)

目前,它取决于求解器接口。

如果您通过NL文件界面使用求解器(例如,AMPL求解器),则始终将初始变量值提供给求解器(如果它们不是None),并且它取决于求解器是否尝试将这些值用作热启动(例如,对于MIP)或初始迭代(例如,对于使用需要起点的优化方法的求解器)。对于需要起点的求解器,解算器也可以使用哪个值将用于任何未提供起点的变量。通常使用零,但这可能因解算器而异。

对于主要对应于MIP求解器的所有其他Pyomo求解器接口(例如,LP,MPS,Python),我认为默认行为是提供热启动。当你调用solve来将初始值传递给求解器时,你必须指定warmstart=True

我没有发现这种一致性,主要是因为在通过NL文件接口时,solve方法甚至不接受warmstart关键字,因此在编写一些常规时必须有一个if语句适用于多个接口的代码。

我想我会保留对GitHub问题的进一步讨论。