?? changes.m
字號:
function [pops]=changes(cpop,bounds,len,p)
%基因突變函數
%function [pops]=changes(pop,bounds,len,p)
%pop 種群數目
%bounds 邊界約束
%len 每個變量的編碼長度
% 如len為[4 3 3];表示有三個變量,第一個變量的二進制編碼長度為4,依次類推
%p 突變概率
%pops 返回突變后的基因
%p1 基因突變數目
% 作者:機自01-2班曾新海
% zxh21st@163.com
if isempty(p)
p=0.01;
end
[n,m]=size(cpop);
pop=cpop;
p1=round(sum(len)*n*p);
k=0;q=[];v=[];
while(k<p1)
k=k+1;
q(k)=round(rand*(sum(len)*n-1))+1;
for i=1:k-1
if q(k)==q(i)
q(k)=[];
k=k-1;
end
end
end
for i=1:n
[B(i,:),len]=B2F(pop(i,:),bounds);
end
v=reshape(B,1,n*sum(len));
for i=1:p1
if v(q(i))==0
v(q(i))=1;
else
v(q(i))=0;
end
end
v=reshape(v,n,sum(len));
for i=1:n
pop(i,:)=F2B(v(i,:),bounds,len);
end
pops=pop
cpop
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -