簡體   English   中英

使用 CPMpy 進行優化時可以包含連續變量嗎?

[英]Can I include continuous variable when optimising with CPMpy?

我需要運行一個模型,在其中我在一組約束內優化飲食並最終調用所有整數解決方案。 我在這里找到了一個幾乎符合我需要的飲食示例: hakank.org 但是,就我而言,我的變量取連續值,因此在示例中,這將是所有營養價值和成本,而只有 x 取整數。 但是,在使用此模型定義變量時,我似乎只能定義“intvar”或“boolvar”。 有沒有辦法克服這個問題? 其他是否有其他更合適的模型以及我可以在線閱讀的示例?

我是約束編程的新手,所以會有任何幫助!

謝謝。

大多數約束編程工具和求解器僅適用於整數。 這就是他們的力量所在。 如果您混合了連續變量和離散變量,最好查看混合整數規划 MIP 工具和求解器廣泛可用。

飲食模型是 LP(線性規划)模型的經典示例。 添加整數限制時,您最終會得到一個 MIP 模型。

回答您的問題:CPMpy 不支持浮點變量(而且我不確定它是否在未來擴展的管道中)。

另一種方法——而不是像 Erwin 建議的那樣使用 MIP 求解器——是編寫問題的 MiniZinc ( https://www.minizinc.org/ ) 模型並使用它的一些求解器。 請參閱我的 MiniZinc 版本的飲食問題: http ://hakank.org/minizinc/diet1.mzn。 並查看 Stigler 飲食問題的 MiniZinc 版本,盡管它只是浮動變量: http ://hakank.org/minizinc/stigler.mzn。

有一些 MiniZinc CP 求解器也支持浮點變量,例如 Gecode、JaCoP 和 OptimathSAT。 但是,根據確切的約束條件——例如與浮點變量和整數變量的關系——他們可能很難快速找到解決方案。 與一些 MIP 求解器相比,生成所有解是 CP 求解器的一般特征之一。

也許所有這些不同的建議比幫助你更令人困惑。 對於那個很抱歉。 如果您提供有關問題的更多詳細信息,可能會有所幫助。

暫無
暫無

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

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