我想在Excel中使用求解器創建線性程序以最小化共同基金支出。我的決定變量是每個基金投入的金額。如果有什麼投資,它必須達到資金最低限度。我該如何編程?如果線性規劃決策變量> 0,那麼> = 3000
金額投入基金1> =如果投資金額在基金1> 0,則金額基金投資1> = 3000別的投資金額= 0
任何幫助不勝感激。謝謝。
我想在Excel中使用求解器創建線性程序以最小化共同基金支出。我的決定變量是每個基金投入的金額。如果有什麼投資,它必須達到資金最低限度。我該如何編程?如果線性規劃決策變量> 0,那麼> = 3000
金額投入基金1> =如果投資金額在基金1> 0,則金額基金投資1> = 3000別的投資金額= 0
任何幫助不勝感激。謝謝。
這些類型的約束是由的Big M Method
的變化強迫假設x
是對應於量基金1.投資選上的x
的可能值的上限M
決策變量。例如,如果您只有1,000,000美元的投資,請致電M = 1,000,000
您無需在x
上設置最小上限。 M = 2,000,000
也可以工作(儘管如果M
不是不合理的大),您通常會收斂更快並且收斂更少。
引入一個新變量y
,該變量被約束爲0
或1
(即二元決策變量)。以下兩個約束添加到模型:
x >= 3000*y
x <= M*y
如果x>0
那麼第二個制約因素迫使y
從0
遠,因此它迫使y = 1
因爲y
是二進制。但如果y = 1
,這第二個約束減少到x <= M
,這通過選擇M
自動爲真,因此它不會在x
上添加任何真正的約束。但是 - 由於y = 1
在這種情況下,第一個約束變爲x >= 3000
。因此,兩個約束一起強制x >= 3000
儘快x > 0
。重要的是 - 它不使用非線性函數if
。它確實使它成爲MILP(混合整數線性規劃)問題 - 但Excel的求解器可以處理沒有問題的問題(只要二元變量的數量不會變得太大)。