㈠ 遺傳演算法工具箱的具體使用
matlab遺傳演算法工具箱函數及實例講解 核心函數:
(1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始種群的生成函數
【輸出參數】
pop--生成的初始種群
【輸入參數】
num--種群中的個體數目
bounds--代表變數的上下界的矩陣
eevalFN--適應度函數
eevalOps--傳遞給適應度函數的參數
options--選擇編碼形式(浮點編碼或是二進制編碼)[precision F_or_B],如
precision--變數進行二進制編碼時指定的精度
F_or_B--為1時選擇浮點編碼,否則為二進制編碼,由precision指定精度)
(2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,...
termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)--遺傳演算法函數
【輸出參數】
x--求得的最優解
endPop--最終得到的種群
bPop--最優種群的一個搜索軌跡
【輸入參數】
bounds--代表變數上下界的矩陣
evalFN--適應度函數
evalOps--傳遞給適應度函數的參數
startPop-初始種群
opts[epsilon prob_ops display]--opts(1:2)等同於initializega的options參數,第三個參數控制是否輸出,一般為0。如[1e-6 1 0]
termFN--終止函數的名稱,如['maxGenTerm']
termOps--傳遞個終止函數的參數,如[100]
selectFN--選擇函數的名稱,如['normGeomSelect']
selectOps--傳遞個選擇函數的參數,如[0.08]
xOverFNs--交叉函數名稱表,以空格分開,如['arithXover heuristicXover simpleXover']
xOverOps--傳遞給交叉函數的參數表,如[2 0;2 3;2 0]
mutFNs--變異函數表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']
mutOps--傳遞給交叉函數的參數表,如[4 0 0;6 100 3;4 100 3;4 0 0]
【問題】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9
【分析】選擇二進制編碼,種群中的個體數目為10,二進制編碼長度為20,交叉概率為0.95,變異概率為0.08
【程序清單】
%編寫目標函數
function[sol,eval]=fitness(sol,options)
x=sol(1);
eval=x+10*sin(5*x)+7*cos(4*x);
%把上述函數存儲為fitness.m文件並放在工作目錄下
initPop=initializega(10,[0 9],'fitness');%生成初始種群,大小為10
[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',...
[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遺傳迭代
運算借過為:x =
7.8562 24.8553(當x為7.8562時,f(x)取最大值24.8553)
註:遺傳演算法一般用來取得近似最優解,而不是最優解。
遺傳演算法實例2
【問題】在-5<=Xi<=5,i=1,2區間內,求解
f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值。
【分析】種群大小10,最大代數1000,變異率0.1,交叉率0.3
【程序清單】
%源函數的matlab代碼
function [eval]=f(sol)
numv=size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
%適應度函數的matlab代碼
function [sol,eval]=fitness(sol,options)
numv=size(sol,2)-1;
x=sol(1:numv);
eval=f(x);
eval=-eval;
%遺傳演算法的matlab代碼
bounds=ones(2,1)*[-5 5];
[p,endPop,bestSols,trace]=ga(bounds,'fitness')
註:前兩個文件存儲為m文件並放在工作目錄下,運行結果為
p =
0.0000 -0.0000 0.0055
大家可以直接繪出f(x)的圖形來大概看看f(x)的最值是多少,也可是使用優化函數來驗證。matlab命令行執行命令:
fplot('x+10*sin(5*x)+7*cos(4*x)',[0,9])
㈡ matlab 遺傳演算法工具箱怎麼用
推薦用shefiled的GA工具箱,裡面的子函數寫的很好,調用很方便。 配合一本gA的書內 學的很快;
另外 關於你這容個問題, 你的目標函數和約束函數是否在工作目錄下,還有 在調用的時候 在函數名前面加@試試, 希望能幫到你
㈢ matlab遺傳演算法工具箱運行時怎麼會出現找不到指定的程序
路徑沒有指對,第一次用matlab
遺傳演算法工具箱的時候需要設置的,先將遺傳演算法工具箱genetic文件夾復制到MATLAB安裝目錄下的toolbox下,然後打開MATLAB,點擊菜單中file
->set
path,選ADD
FOLDER,這樣才將該工具箱添加到matlab中,然後才能運行相應的程序。祝你成功。
㈣ 如何調用MATLAB遺傳演算法工具箱
1、打開MATLAB軟體。
㈤ 如何使用遺傳演算法工具箱
you matlab么???如果有的話,先看看怎麼用,先入門再請教哦。不然不知道怎麼說
㈥ 求matlab遺傳演算法工具箱GA Toolbox。。並求解釋如下
GA自己寫一個就好了,也挺簡單的。
雖然很多函數都能知道表達式,但是仍然版有很多函數不能用倒權數來求解,所以要知道空間的極值和最值就必須用遍歷的方法。然而對於實數范圍內或者大規模數據的離散數據情況下,遍歷畫圖的方法會耗費很大的計算復雜度,因為你並不知道是在參數范圍的邊緣還是中間有最值,有多少個最值也不知道。GA就提供了一種基於種群的搜索優化方法,可以快速的收斂到優秀的解的個體,但是要防止陷入局部最優。
簡而言之就是遍歷的搜索方法要用時10小時完成的事情,GA快速優化可能1分鍾或者10分鍾搞定,佔用內存也少。
㈦ 用遺傳演算法工具箱求解一個多目標優化問題,現在需要一個matlab程序,求高人指點
用遺傳演算法工具箱求解一個多目標優化問題的步驟:
1、根據題意,建立自定專義目標函數,ga_fun1(x)
2、在命令窗屬口中,輸入
>> optimtool %調用遺傳演算法工具箱
3、在遺傳演算法工具箱界面中,分別對Fitnessfunction框內輸入@ga_fun1();A框內輸入[1,1,1];b框內輸入16;Aeq框內輸入[];beq框內輸入[];Lower框內輸入[0,0,0];Upper框內輸入[];
4、單擊Start。得到x=4.508 y=2.513 z=1.912值。
㈧ matlab 遺傳演算法工具箱
有可能是沒有了,也有可能是你安裝的版本裡面沒有,需要去官方網站購買。你用的是正版嗎?正版的網路授權可以使用大部分的工具箱。
如果是D版,很可能是你用的版本正好沒有這個。
如果只是用到一些函數,你可以去別人的電腦復制這個工具箱的函數(老版本的估計也能用),添加路徑以後可能也可以用的。
㈨ 求利用遺傳演算法工具箱優化神經網路的權值的matlab程序!最好是三層神經網路多輸入單輸出。
《matlab在數學建模中的應用》這本書中有你想要的程序,你可以找找看看
㈩ 急求!matlab遺傳演算法工具箱算出結果後,如何輸出完整的M文件
你是要輸出計算程序?那點擊左上角的file,之後點倒數第二個選項,generate code,就會讓你命名m文件,保存後就自動跳到命令窗口,顯示出來程序
不懂的細節可以追問,比如出圖