猿问

CPLEX python API 热启动

我正在尝试在 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 的每个条目必须是一个浮点数,分别指定列和行的起始原始值。


我不明白为什么。


我如何在实践中做到这一点?


HUX布斯
浏览 368回答 1
1回答

哆啦的时光机

在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 等)。
随时随地看视频慕课网APP

相关分类

Python
我要回答