簡體   English   中英

如何使用 CPLEX 或 DoCPLEX 模塊重新創建變量?

[英]How to recreate variables using CPLEX or DoCPLEX module?

假設我在 mdl1 中有很多變量。 在 a.sav 和.lp 中保存 mdl1 后,我將其讀回 doCPlex。

mdl2 = ModelReader.read(文件名)

現在我想重新創建 mdl2 中的所有變量。 怎么做? 假設我知道變量的名稱是“variable1”、“variable2”、“variable3”。 我想做類似的事情

variable1 = mdl_2.get_var_by_name('variable1')

但是,可能有數百個變量,我不能手動輸入它們。所以我想使用類似的東西

eval("variable1 = mdl_2.get_var_by_name('variable1')")

但這對我不起作用。 有什么幫助嗎? 謝謝!

您可以使用字典。 我會用動物園的例子來做這個

假設你有一個小的 lp 文件

\ENCODING=ISO-8859-1
\Problem name: zoooplwithoutobjective

Minimize
 obj:
Subject To
 c1: 40 nbBus40 + 30 nbBus30 >= 300
Bounds
      nbBus40 >= 0
      nbBus30 >= 0
Generals
 nbBus40  nbBus30 
End

然后你可以寫

from docplex.mp.model import Model
from docplex.mp.model_reader import ModelReader


mdl = ModelReader.read_model('zoowithoutobj.lp', model_name='zoo')

intvars={}
for v in mdl.iter_integer_vars():
    intvars[v.name]=v

print(intvars)

這使

{'nbBus40': docplex.mp.Var(type=I,name='nbBus40'), 'nbBus30': docplex.mp.Var(type=I,name='nbBus30')}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM