[英]How to Specify the Programming Type in SCIP
我正在 Python 中使用 PYSCIPOPT 解決優化問題。我知道我不需要指定問題類型,它會自動為我檢測。 但我有一個特殊的情況,它可能會有用。
我原來的問題是 MINLP,但 PYSCIPOPT 無法解決它。 所以我使用外部代碼來建議對 integer 變量的猜測,之后我修復了 integer 變量,從而使問題有效地成為 NLP。為了編碼方便,並且因為我有時可能無法修復所有 integer 變量,所以我使用相同的MINLP 公式,但使用.fixVar()
方法指定 integer 變量的值。 預求解后,它說 0 integer 個變量,所以我假設它將問題視為 NLP。但是因為最初的 model 包含 integer 個變量,我想知道它是否仍在嘗試像 MINLP 一樣解決它; 例如,使用針對 MINLP 而不是 NLP 進行微調的啟發式方法。在這種情況下,明確告訴 SCIP 像 NLP 一樣解決它可能會有好處。
我查看了SCIP和PYSCIPOPT文檔,但找不到指定問題類型的參數,就像 GAMS 那樣。 我也沒有在 StackOverflow 上看到任何相關問題。
如果有人知道,
.fixVar()
來修復 integer 變量那太好了。 或者,如果這無關緊要,因為,
這也很高興知道。
無需強制問題類型。 SCIP 將在應用所有變量固定后沒有剩余 integer 個變量時實現。
SCIP 用於 NLP 的算法與用於 MINLP 的算法沒有太大區別。 如果沒有的話,它只是跳過了一些處理 integer 變量的技術。 但是 SCIP 幾乎沒有說現在問題只是一個 NLP,它會做一些特別的事情。 多啟動啟發式算法僅在 NLP 的情況下運行。
直接回答要點:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.