📄 sga_pro.m
字号:
function [maxfitness,minfitness,meanfitness,best_decimal_space,best_binary_space]=SGA_pro(min_confines,max_confines,probability_crossover,probability_mutation,population,decimal_step,max_generation)
%SGA Function Of Simple Genetic Algorithm Program (Version 1.0.0.1)
%support multi-parameters
%By chen yi ,CQU .QQ:2376635 Email:cdey@10mail.net (April,20th,2002)
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%SGA function is the main function of Simple Genetic Algorithm Program
%usage:
%[maxfitness,best_decimal_space]=SGA(minconfines,maxconfines,probability_crossover,probability_mutation,population,decimal_step)
%
%min_confines is the minimum of input value in decimal-space
%max_confines is the maximum of input value in decimal-space
%i.e. X belong to [min_confines,max_confines]
% min_confines < max_confines
%~~
%decimal_step is the search step in decimal-space
%it must be smaller than (max_confines-min_confines)/2
%~~~
%population is the random decimal value in [min_confines,max_confines]
% it is given by yourself and it must be Even integer number and larger than 0
%~~~~
%probability_crossover is the crossover probability in crossover step,
%your can give it's value to reach your need (About:0.4~0.99)
%
%probability_mutation is given by yourself (about:0.001~0.01)
% See Also DECODING ,CODING ,CROSSOVER,MUTATION,FITNESS,
% FITNESS_FUNCTION, SELECTION
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
[binary_space,bits_sum,bits]=coding(min_confines,max_confines,population,decimal_step);
[decimal_space]=decoding(min_confines,max_confines,binary_space,bits);
%[population,parameter_numbers]=size(decimal_space);
%ini
Generation_numbers=1;
fitness_plot_max=zeros(1,max_generation);
fitness_plot_min=zeros(1,max_generation);
fitness_plot_mean=zeros(1,max_generation);
%every_fitness=zeros(1,population);
%fitness_value=zeros(population+1,1);
%best_decimal_space=zeros(population,parameter_numbers);
%ini over
while Generation_numbers<=max_generation
%for Generation_numbers=1:1:population
[fitness_value]=fitness(decimal_space);
fitness_plot_max(1,Generation_numbers)=max(fitness_value);
fitness_plot_min(1,Generation_numbers)=min(fitness_value);
fitness_plot_mean(1,Generation_numbers)=mean(fitness_value);
%every_fitness(1,Generation_numbers)=fitness_value(1,:);
%[fitness_value(Generation_numbers+1)]=fitness(decimal_space(Generation_numbers+1,:));
[max_fitness_temp_position,decimal_space,binary_space,maxfitness]=selection(decimal_space,binary_space,fitness_value,bits);
[decimal_space,binary_space]=crossover(min_confines,max_confines,decimal_space,binary_space,bits,probability_crossover);
% pay attention to the decimal_space and binary_space from mutation.m
% it can't be [decimal_space_mutation,binary_space_mutation]
[decimal_space,binary_space]=mutation(min_confines,max_confines,decimal_space,binary_space,bits,probability_mutation);
%best_decimal_space(Generation_numbers+1,:)=decimal_space(max_fitness_temp_position(Generation_numbers),:);
%maxfitness(Generation_numbers+1)=fitness(best_decimal_space(Generation_numbers+1,:));
Generation_numbers=(Generation_numbers+1);
best_binary_space=binary_space;
end
disp('Results:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
best_decimal_space=decimal_space(max_fitness_temp_position(population),:);
maxfitness=fitness(best_decimal_space)
%maxfitness2=max(fitness_plot_max)
minfitness=min(fitness_plot_min)
meanfitness=mean(fitness_plot_mean)
disp('End sga_pro~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
plot
hold on;
ii=1:1:max_generation;
fitness_plot=plot(ii,fitness_plot_max,'k',ii,fitness_plot_min,'r',ii,fitness_plot_mean,'b');
grid on
title('Every Fitness--Generation')
xlabel('population');
ylabel('every-fitness');
legend('max','min','mean',4);
set(fitness_plot,'EraseMode','none','MarkerSize',18);
draw cartoon
iii=1;
while iii
grid on
set(fitness_plot,'XData',iii,'YData',fitness_plot_max(iii),'XData',iii,'YData',fitness_plot_min(iii),'XData',iii,'YData',fitness_plot_mean(iii));
drawnow;
iii=iii+1;
if iii==max_generation
break;
end
end
%
%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -