繁体   English   中英

CPLEX python API暖启动

[英]CPLEX python API warmstart

我正在尝试在CPLEX python API中实现热启动。

我知道我必须使用以下功能:

set_start(self, col_status, row_status, col_primal, row_primal, col_dual, row_dual)

假设我有五个变量[“ x1”,“ x2”,“ x3”,“ x4”,“ x5”],并且我想为它们分配以下值[0、1、0、0、1]热启动。

我想做类似的事情:

set_start(col_status=[],
          row_status=[],
          col_primal=["x1", "x2", "x3", "x4", "x5"],
          row_primal=[0, 1, 0, 0, 1],
          col_dual=[],
          row_dual=[])

但在文档中写道:

col_primal和row_primal的每个条目必须是浮点数,分别指定列和行的起始原始值。

我不明白为什么。

在实践中我该怎么做?

set_start的文档中还说:

参数col_status,col_primal和col_dual是长度等于变量数或为空的列表 如果col_status为空,则row_status也必须为空。 如果col_primal为空,则row_primal也必须为空。

例如,我们可以这样调用set_status

>>> import cplex
>>> c = cplex.Cplex()
>>> indices = c.variables.add(names=["x" + str(i) for i in range(5)])
>>> c.start.set_start(col_status=[],
...                   row_status=[],
...                   col_primal=[0., 1., 0., 0., 1],
...                   row_primal=[],
...                   col_dual=[],
...                   row_dual=[])

在示例中,请注意与["x1", "x2", "x3", "x4", "x5"]对应的变量索引为[0, 1, 2, 3, 4] ,并且存在该模型中共有5变量。 传递给col_primal的值还必须与该索引列表相对应(例如,对于索引为0的变量,该值为0.0,对于索引为1的变量,该值为1.0, col_primal )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM