遗传算法 简单函数优化
生活随笔
收集整理的這篇文章主要介紹了
遗传算法 简单函数优化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
%f(x)=11sin(6x)+7cons(5x),0<=x<=2*pi
%注意程序中num2gray函數和gray2num函數可以參照我上面的另外兩個博文中有代碼%%初始化參數
L=16; %編碼為16位二進制數
N=32; %初始種群規模
M=48; %M個中間體,運用算子選擇出M/2對母體,進行交叉;對M個中間體進行變異
T=100; %進化代數
Pc=0.8; %交叉概率
Pm=0.03; %變異概率
%%將十進制編碼成16位的二進制,再將16位的二進制轉成格雷碼
for i=1:1:Nx1(1,i)=rand()*2*pi;x2(1,i)=uint16(x1(1,i)/(2*pi)*65535);grayCode(i,:)=num2gray(x2(1,i),L);
end
%% 開始遺傳算子操作
for t=1:1:Ty1=11*sin(6*x1)+7*cos(5*x1)fori=1:1:M/2[a,b]=min(y1) ;%找到y1中的最小值a,及其對應的編號bgrayCodeNew(i,:)=grayCode(b,:);%將找到的最小數放到grayCodeNew中grayCodeNew(i+M/2,:)=grayCode(b,:);%與上面相同就可以有M/2對格雷碼可以作為母體y1(1,b)=inf;%用來排除已找到的最小值endfori=1:1:M/2p=unidrnd(L);%生成一個大于零小于L的數,用于下面進行交叉的位置if rand()<Pc % Pc是交叉概率%將選定的染色體的點
總結
以上是生活随笔為你收集整理的遗传算法 简单函数优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TSP问题遗传算法通用Matlab程序
- 下一篇: 模式识别中Fisher分类器的Matla