簡體   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