2016-05-23 2857 views
0

如果有人告訴我如何爲變量設置整型約束(即它們的變量只能是0或1),那將是非常值得讚賞的。在Matlab中使用遺傳算法時如何設置整數約束?

x = ga(fitnessfcn,nvars); 
+0

你可以更明確你想要達到的目標嗎?默認情況下'ga'將以0..1範圍內的所有變量開始,並允許它們連續變化;你的意思是你想限制所有的變量是正好0還是正好1? –

+0

如果是這樣,這可能會告訴你你需要什麼:http://uk.mathworks.com/help/gads/mixed-integer-optimization.html#bs1cihn –

+0

你的問題幾乎沒有任何意義 - 如果你想你的輸出x爲1或0,則設置一個閾值 - 如果低於某個值,則爲1,否則爲0. – GameOfThrows

回答

0

使用可選ga功能參數LB(下限),UB(上限)和IntCon(整數約束)。對於要使用MATLAB遺傳算法函數簽名是:

x = ga(fitnessfcn,nvars,A,b,[],[],LB,UB,nonlcon,IntCon) 

例如,你可以使用MATLAB GA如下解決了10二元變量問題:

% Number of variables 
nVars = 10 

% Lower and upper bounds 
LB = zeros(1, nVars); 
UB = ones(1, nVars); 

% Variables with integer constraints (all in this case) 
IntCon = 1:nVars; 

% Run the GA solver 
x = ga(fitnessfcn, nVars, [], [], [], [], LB, UB, [], IntCon); 

注意線性不等式約束條件Ab以及非線性約束條件nonlcon是可選的,如果它們不存在,可以用[]代替。