2012-09-22 29 views
2

讓Octave的遺傳算法求解器尊重上下界是否有竅門?例如,Octave遺傳算法不使用下界

options = gaoptimset('Generations', 10); 
nvars = 6; 
LB = ones(1,nvars); 
UB = LB*10; 
[soln, fval, exitflag] = ga(@fitnessfcn, nvars, [], [], [], [], LB, UB, [], options) 

求解器返回帶有未定界的溶液。例如,

soln = 0.551420 1.369775 -0.313379 -0.038621 0.274696 1.359802 

更新:我檢查了Octave軟件包中的腳本。我很確定ga函數不使用上下限參數。它好像從gaoptim集中讀取一些上/下限信息。當我有一些時間時,我會玩弄它。

+0

嗨!如果您確實發現問題並修復問題,可否請您向Octave Forge開發者提交補丁? – carandraug

回答

0

根據版本0.10似乎傳遞作爲參數ga幾乎被忽略的界限。現在指定邊界的唯一方法是通過gaoptimset的參數PopInitRange,該參數需要包含第一行中的LB和第二行中的UB的2xN矩陣。如果提供2x1矢量。

LB和UB參數應該模仿原始的Matlab的ga函數,但顯然這個實現是以他自己的方式進行的。