ga_ex24a.m

来自「书籍代码:遗传演算法原理与应用_活用MATLAB(Source Code)」· M 代码 · 共 54 行

M
54
字号
% GA_ex24A.m file
% Fin min(MIN_offset<>0) or
%     max(MIN_offset=0) of a function of 2 varaibles

% PenChen Chou, 7-1-2001

%**********************************************************/
%       User can modify the following in blocks
%**********************************************************/
global MIN_offset MUL_factor LOCUS x_data y_data
MIN_offset=2; % For finding MIN value
MIN_offset=0; % For finding MAX value
if MIN_offset==0
    MUL_factor=100;
else    
    MUL_factor=100;
end;    
LOCUS=1; x_data=[]; y_data=[];
obj_fcn = 'GA_f24';	% Objective function
range = 1*[-2 -2
          2  2];	% Range of the input variables
IC=[]; elite=1; 
gen_no=500;
popuSize=70;
bit_n=40;
xover_rate=0.9;
mutate_rate=0.04;
x=-2:0.1:2; y=x; [x y]=meshgrid(x,y);
A1=(sin(sqrt(x^2+y^2)))^2-0.5;
A2=(1+0.001*(x^2+y^2))^2;
z=0.5-A1./A2;
figure(2);contour(x,y,z);
%************************************************************
% call GA written by Chang
tic
%GA_genetic(obj_fcn, range, IC, elite,...
% gen_no, popuSize, bit_n, xover_rate, mutate_rate);
[popu, popu_real, fcn_value, upper, average, lower, ...
BEST_popu, popuSize, gen_no] = GA_genetic(obj_fcn, range,...
        IC, elite, gen_no, popuSize, bit_n,...
        xover_rate, mutate_rate);
t=toc/60;
fprintf('==>  Computation time is (%.2f) minutes.\n',t);            
            
% Plot locus of optimization process
LAST=length(x_data);
figure(2); hold on
plot(x_data(1),y_data(1),'x');
plot(x_data,y_data);
plot(x_data(LAST),y_data(LAST),'o');
%plot(0,0,'*');   % The best position
hold off
title('*=BEST, x=Starting point, o=Ending point')

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?