2017-03-13 55 views
0

對於線性約束,我們寫矩陣A和b。如何在遺傳算法的某些條件下編寫線性約束?

我只想在某些條件滿足時寫一些約束條件。假設我們有兩個限制:

x(1) + 2*x(2) <= 6; 
x(1) - x(2) + 2*x(3) <= 7; 

,所以我的A和B是:

A = [1 2 0; 1 -1 2] 
b = [6 7] 

現在我想看看我的第二個制約因素,只有當x(4) >=0 我怎麼能寫在MATLAB GA

回答

0

您可以使用下面的訣竅:

bigNumber = 1e+9; % may depend on your application 
A = [1 2 0 0; 1 -1 2 bigNumber] 
b = [6 7] 

說明

如果x(4) < 0,那麼第二個約束將始終是滿意的,因爲x(4) * bigNumber << 0只要bigNumber >> abs(x)

作爲替代,您可以先解決上述問題。然後,檢查是否x(4) >= 0。如果沒有,則計算沒有第二個約束的問題(並添加x(4) < 0)。