簡體   English   中英

是否可以在 docplex.mp 的一個編碼程序中創建兩個模型?

[英]Is it possible to create two models within one coding program for docplex.mp?

如果我們在一個 pyton 編碼文件中結合兩個模型的 docplex.mp 是否有可能? 例如,mdl。 和mdl2。

謝謝你。

是的。 假設來自https://github.com/AlexFleischerParis/zoodocplex/blob/master/zootwoinstancescombined.py的 2 所聯合學校

from docplex.mp.model import Model

#Two independent schools, first school 300 kids, second one 350
#Combined in a single model because of a coupling constraint
#(Total number of buses)

mdl = Model(name='buses')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
nbbus40bis = mdl.integer_var(name='nbBus40bis')
nbbus30bis = mdl.integer_var(name='nbBus30bis')
mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')
mdl.add_constraint(nbbus40bis*40 + nbbus30bis*30 >= 350, 'kids2')
mdl.add_constraint(nbbus40+nbbus30+nbbus40bis+nbbus30bis<=17,'total nb of buses')
mdl.minimize(nbbus40*500 + nbbus30*400+nbbus40bis*500 + nbbus30bis*400)

mdl.solve(log_output=True,)

for v in mdl.iter_integer_vars():
    print(v," = ",v.solution_value)

不再合並。

然后你可以寫

from docplex.mp.model import Model

#Two independent schools, first school 300 kids, second one 350


mdl1 = Model(name='buses1')
nbbus40 = mdl1.integer_var(name='nbBus40')
nbbus30 = mdl1.integer_var(name='nbBus30')

mdl2= Model(name='buses2')
nbbus40bis = mdl2.integer_var(name='nbBus40bis')
nbbus30bis = mdl2.integer_var(name='nbBus30bis')
mdl1.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')
mdl2.add_constraint(nbbus40bis*40 + nbbus30bis*30 >= 350, 'kids2')

mdl1.minimize(nbbus40*500 + nbbus30*40)
mdl2.minimize(nbbus40bis*500 + nbbus30bis*400)

mdl1.solve(log_output=True,)
mdl2.solve(log_output=True,)

for v in mdl1.iter_integer_vars():
    print(v," = ",v.solution_value)

for v in mdl2.iter_integer_vars():
    print(v," = ",v.solution_value)

暫無
暫無

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

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