簡體   English   中英

CPLEX啟發式算法提供不同的計算結果

[英]CPLEX heuristics give different computational results

當我們使用cplex解決最大化mip問題時,cplex啟發式算法會影響目標值的上限嗎?

據我了解,多重啟發法可以改善最佳值的下限,但不能改善上限。 但在我的測試中,如果我關閉cplex啟發式,則上限將非常差。 上限的差異(啟發式打開/關閉)非常大,可以忽略。 幫我 :-(

這項研究的基本示例是,假設您的MIP是一個純二進制線性程序(BLP),其中只有二進制值的決策變量(沒有連續變量混入)。 此外,假設CPLEX僅使用基本的分支和邊界(BAB)解決了您的MIP,而忽略了高級分支和節點選擇技術。

正如您提到的那樣,由於您的程序是最大化的程序,因此自然而然的是,良好的啟發式方法會影響最佳解決方案的目標函數值的下限。

在我們的簡單示例中,上限主要基於對連續松弛BLP子問題的當前最佳 (最佳wrt最大目標函數值)解決方案。 即,您的BAB樹中活動節點(尚未修剪的分支)的LP解(其中決策變量對x_i∈ x_i ∈ {0, 1}^n的二元約束)已被其連續弛豫(例如x_i ∈ [0, 1]^n取代x_i ∈ [0, 1]^n

在這一點上,(元)啟發式可以對例如

  • 我們如何選擇要在BAB樹中處理的節點。 即,在修剪或分支了一個節點之后,我們如何決定下一步選擇哪個節點?
  • 另外,如果啟發式算法可以在早期為我們提供一個良好的下限(例如,最佳的現有解決方案),那么我們可能會迅速(通過邊界)修剪樹中的許多節點,而這些節點本可以通過其他方式進行顯式處理,如果沒有好的下限。

在求解過程中,節點的選擇對上限(最大問題)的進度有很大的影響,並且同樣; 自然,較小的解決方案空間(由於有許多修剪的節點)將增加改善問題上限的可能性/“速度”。

好的試探法可以對整個求解過程產生影響的過程中的另一點自然是在預處理階段。 在開始遍歷BAB樹之前。 真正聰明的啟發法可以大大減少解決方案的空間,尤其是當我們試圖解決一個允許將明顯的重構/分解為一個不太復雜的問題的問題時。 這些預處理步驟本身可能不是啟發式的(並且在您關閉CPLEX啟發式時也不會被禁用),但是我想說它們生活在同一個家庭中。

暫無
暫無

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

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