2017-01-29 30 views
2

我想在Excel中使用求解器創建線性程序以最小化共同基金支出。我的決定變量是每個基金投入的金額。如果有什麼投資,它必須達到資金最低限度。我該如何編程?如果線性規劃決策變量> 0,那麼> = 3000

金額投入基金1> =如果投資金額在基金1> 0,則金額基金投資1> = 3000別的投資金額= 0

任何幫助不勝感激。謝謝。

回答

3

這些類型的約束是由的Big M Method

的變化強迫假設x是對應於量基金1.投資選上的x的可能值的上限M決策變量。例如,如果您只有1,000,000美元的投資,請致電M = 1,000,000您無需在x上設置最小上限。 M = 2,000,000也可以工作(儘管如果M不是不合理的大),您通常會收斂更快並且收斂更少。

引入一個新變量y,該變量被約束爲01(即二元決策變量)。以下兩個約束添加到模型:

x >= 3000*y 
x <= M*y 

如果x>0那麼第二個制約因素迫使y0遠,因此它迫使y = 1因爲y是二進制。但如果y = 1,這第二個約束減少到x <= M,這通過選擇M自動爲真,因此它不會在x上添加任何真正的約束。但是 - 由於y = 1在這種情況下,第一個約束變爲x >= 3000。因此,兩個約束一起強制x >= 3000儘快x > 0。重要的是 - 它不使用非線性函數if。它確實使它成爲MILP(混合整數線性規劃)問題 - 但Excel的求解器可以處理沒有問題的問題(只要二元變量的數量不會變得太大)。