『壹』 遺傳演算法流程圖
首先你的這個問題沒有什麼意義,明顯x=31的時候y最大嘛。。。
%定義遺傳演算法參數
NIND=40; %個體數目(Number of indivials)
MAXGEN=25; %最大遺傳代數(Maximum number of generations)
PRECI=20; %變數的二進制位數(Precision of variables)
GGAP=0.9; %代溝(Generation gap)
trace=zeros(2, MAXGEN); %尋優結果的初始值
FieldD=[20;0;31;1;0;1;1]; %區域描述器(Build field descriptor)
Chrom=crtbp(NIND, PRECI); %初始種群
gen=0; %代計數器
variable=bs2rv(Chrom, FieldD); %計算初始種群的十進制轉換
ObjV=variable.*variable; %計算目標函數值
while gen<MAXGEN
FitnV=ranking(-ObjV); %分配適應度值(Assign fitness values)
SelCh=select('sus', Chrom, FitnV, GGAP); %選擇
SelCh=recombin('xovsp', SelCh, 0.7); %重組
SelCh=mut(SelCh); %變異
variable=bs2rv(SelCh, FieldD); %子代個體的十進制轉換
ObjVSel=variable.*variable; %計運算元代的目標函數值
[Chrom ObjV]=reins(Chrom, SelCh, 1, 1, ObjV, ObjVSel); %重插入子代的新種群
variable=bs2rv(Chrom, FieldD);
gen=gen+1; %代計數器增加
%輸出最優解及其序號,並在目標函數圖像中標出,Y為最優解,I為種群的序號
[Y, I]=max(ObjV);hold on;
plot(variable(I), Y, 'bo');
trace(1, gen)=max(ObjV); %遺傳演算法性能跟蹤
trace(2, gen)=sum(ObjV)/length(ObjV);
end
variable=bs2rv(Chrom, FieldD); %最優個體的十進制轉換
hold on, grid;
plot(variable,ObjV,'b*');
figure(2);
plot(trace(1,:));
hold on;
plot(trace(2,:),'-.');grid
legend('解的變化','種群均值的變化')
上面是這個問題的MATLAB程序,你自己研究一下吧
運行的時候需要MATLAB遺傳演算法工具箱
『貳』 Visio怎樣繪制遺傳演算法原理圖
在文本工具旁有個「繪圖工具」----點選裡面的鉛筆工具(ctrl+4),按住shift,可以畫出圓弧。(需要練習一下,因為很容易畫出直線。個人經驗是按住shift,滑鼠快速滑出圓弧後,再調整圓弧大小。)
『叄』 MATLAB如何畫遺傳演算法,
目前的MATLAB都直接集成了遺傳演算法工具箱,你可以直接在cmd窗口打:gatool,就出來一個GUI界面,自己填寫上面的參數,直接運行就可以了,可以多種圖形,也是可選的,還可以選擇在File中的generate code,產生m代碼,你可以根據自己的需求修改代碼,畫自己想要的圖形。
『肆』 關於遺傳演算法
遺傳演算法(Genetic Algorithm,簡稱GA)是美國 Michigan大學的 John Golland提出的一種建立在自然選擇和群體遺傳學機理基礎上的隨機、迭代、進化、具有廣泛適用性的搜索方法。現在已被廣泛用於學習、優化、自適應等問題中。圖4-1 給出了 GA搜索過程的直觀描述。圖中曲線對應一個具有復雜搜索空間(多峰空間)的問題。縱坐標表示適應度函數(目標函數),其值越大相應的解越優。橫坐標表示搜索點。顯然,用解析方法求解該目標函數是困難的。採用 GA時,首先隨機挑選若干個搜索點,然後分別從這些搜索點開始並行搜索。在搜索過程中,僅靠適應度來反復指導和執行 GA 搜索。在經過若干代的進化後,搜索點後都具有較高的適應度並接近最優解。
一個簡單GA由復制、雜交和變異三個遺傳運算元組成:
圖4-2 常規遺傳演算法流程圖
『伍』 遺傳演算法工具箱中怎麼畫出遺傳代數與優化變數的關系圖
將下屬兩個目標函數分別保存在兩個m文件中functionf1=func1(x)%第一目標函數f1=x(:,1).*x(:,1)./4+x(:,2).*x(:,2)./4;functionf2=func2(x)%第二目標函數f2=x(:,1).*(1-x(:,2))+10;functionGA()clear;clc;closeallNIND=100;%個體數目MAXGEN=50;%最大遺傳代數NVAR=2;%變數個數PRECI=20;%變數的二進制位數GGAP=0.9;%代溝trace1=[];trace2=[];trace3=[];%性能跟蹤%建立區域描述器%rep([PRECI],[1,NVAR])FieldD=[rep([PRECI],[1,NVAR]);rep([1;2],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];Chrom=crtbp(NIND,NVAR*PRECI);%初始種群v=bs2rv(Chrom,FieldD);%初始種群十進制轉換gen=1;whilegen