?? myga.m
字號:
function [f,x]=myga(num,bounds,N,CP,P)
%[f,x]=ga(num,bounds,fun,N,CP,P)
%[f,x]=myga([],bounds,[],[],[])
%該遺傳算法適用于:
% 目標函數為求最大值,且解非負整數解
%bounds 邊界約束
%Myfun 為目標函數
%num 初始種群數
%N 最大迭代次數
%CP 交叉概率
%P 突變概率
%f 目標最優解
%x 最優解向量
% 作者:機自01-2班曾新海
% zxh21st@163.com
m=nargin;
if m<5
disp('-_- 錯誤!')
disp('>> 輸入變量太少')
disp('>> 按回車鍵查看幫助')
pause
help ga
f='-_- ';
x='沒有規矩不成方圓';
break;
end
if isempty(CP)
CP=0.25;
end
if isempty(P)
P=0.01;
end
if isempty(N)
N=1000;
end
if any(bounds(:,1))<0
disp('-_- 錯誤!')
disp('>> 按回車鍵查看幫助')
pause
help ga
f='-_- ';
x='沒有規矩不成方圓';
break;
end
if isempty(num)
num=100;
end
pop=INTinti(num,bounds);
fmax=pop(:,end);
endpop=pop;
n=size(endpop,2);
count=0;x=[];f=zeros(1,num);
while(count<N)
pop=mutation(endpop);
[cpop ,len,v]=cross(pop,bounds,CP);
[pops]=changes(cpop,bounds,len,P);
for i=1:num
sol=pops(i,:);
[f(i)]=Myfun(sol);
%懲罰策略
for jj=1:length(sol)
if sol(jj)<bounds(jj,1)
f(i)=-inf;
end
if sol(jj)>bounds(jj,2)
f(i)=-inf;
end
end
if fmax(i)<f(i)
fmax(i)=f(i);
endpop(i,1:end-1)=pops(i,:);
end
end
endpop(:,end)=fmax(:);
count=count+1;
% [f,ii]=max(fmax);
% x=endpop(ii,1:end-1);
end
[f,ii]=max(fmax);
x=endpop(ii,1:end-1);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -