📄 sgalab_demo_single_objective_muga.m
字号:
% /*M-FILE SCRIPT SGALAB_demo_single_objective_muGA MMM SGALAB */ %
% /*==================================================================================================
% Simple Genetic Algorithm Laboratory Toolbox for Matlab 7.x
%
% Copyright 2009 The SxLAB Family - Yi Chen - leo.chen.yi@gmail.com
% ====================================================================================================
% File description:
% We can run SGALAB by key-in "SGALAB_demo_MATH" in Matlab command window
%
%Input(1):
% options[5]:
% options(1)-- en-/de-coding method
% 'Binary' ,'b' : binary encoding method
% 'Real' ,'r' : real number encoding method
% 'Literal','l' : literal permutation encoding method
% 'Gray' ,'g' : Gray encoding method
% 'DNA' ,'d' : DNA encoding method
% 'Messy' ,'m' : Messy encoding method
%
% options(2)-- selection method
% 'roulettewheel', 'roulette','wheel','r' : Roulette wheel selection method
% 'stochastic','s' : Stochastic selection method
% 'TSP_Roulettewheel','tsp_rw','tsprw' : TSP Roulette wheel selection
% NOT Active 'tournament','tour','to','tr' : tournament selection
% NOT Active 'truncation','trunc','tr','trun' : truncation selection
%
% options(3)-- crossover method
% 'singlepoint','single'
% 'twopoint','two'
% 'N = n','n'
% 'random','r'
% 'EAX': Travel Salesman Problem--TSP Operator
% Edge Assembly Crossover( EAX ) is to do
% Edge Recombination Crossover(ERX) With double edge marker,
% Briefly:
% EAX = ERX + Edge_Marker
% 'CX' : TSP - Cycle Crossover, CX
% 'OX' : TSP - Ordered Crossover operation, OX
% 'PMX': TSP - Partially Matched Crossover, PMX
% 'BOOLMATRIX': TSP - Matrix Representations and Operators
% options(4)-- mutation method
% 'singlepoint','single'
% 'twopoint','two'
% 'N = n','n'
% 'random','r'
% 'ReciprocalExchange', (Reciprocal
% Exchange. Swap two cities.)
% 'Displacement' , Displacement. Select a
% subtour and insert it in a random place.
% 'Insertion', Select a city and
% insert it in a random place
% 'Inversion', Select two points along the permutation, cut it at these points and re-insert the reversed string.
% (1 2 | 3 4 5 6 | 7 8 9) ? (1 2 | 6 5 4 3 | 7 8 9)
% options(5)-- constraint_status
% 'with' ,'1'--have constraint conditions
% 'without' ,'0'--have no constraint
% conditions
%Appendix comments:
%
%Usage:
%
% Reference:
% [1] K. Krishnakumar,(1989), "Micro-Genetic Algorithms for Stationary and Non-Stationary Function Optimization,"
% SPIE: Intelligent Control and Adaptive Systems, Vol. 1196,
% Philadelphia, PA.
%
% [2] Carlos A. Coello Coello, Gregorio Toscano Pulido, (2001), ''A
% micro-genetic algorithm for multiobjective optimization'', Proceedings of
% the Genetic and Evolutionary Computation Conference
% (GECCO’2001),126-140.
%===================================================================================================
% See Also: SGA_ENCODING ,
% SGA_DECODING ,
% SGA_SELECTION ,
% SGA_CROSSOVER,
% SGA_MUTATION,
% SGA_FITNESS_FUNCTION,
% SGA_FITNESS_EVALUATING,
% SGA_BENCHMARK_FUNCS,
% SGALAB
%
%===================================================================================================
%
%
%===================================================================================================
%Revision -
%Date Name Description of Change email Location
%27-Jun-2003 Chen Yi Initial version chen_yi2000@sina.com Chongqing
%14-Jan-2005 Chen Yi update 1003 leo.chen.yi@gmail.com Shanghai
%28-May-2007,Chen Yi add SGA_FITNESS_plot()leo.chen.yi@gmail.com Glasgow
%07-Feb-2009 Chen Yi add fitness_data leo.chen.yi@gmail.com Glasgow
%Glasgow
%HISTORY$
%==================================================================================================*/
% SGALAB_demo_single_objective_muGA Begin
%% set screen
% fresh
clear ;
close ('all');
warning off
% to delete old output_*.txt
!del OUTPUT_*.txt
% set working path
%cd SGALAB_Funcs
% SGA_set_working_paths
%% begin to count time during calculating
home ;
tic % timer start >>
% data preparation
%% open data files
%%%input data files
fid1 = fopen('INPUT_min_confines.txt' , 'r' );
fid2 = fopen('INPUT_max_confines.txt' , 'r' );
fid3 = fopen('INPUT_probability_crossover.txt' , 'r' );
fid4 = fopen('INPUT_probability_mutation.txt' , 'r' );
fid5 = fopen('INPUT_population.txt' , 'r' );
fid6 = fopen('INPUT_steps.txt' , 'r' );
fid7 = fopen('INPUT_max_generation.txt' , 'r' );
fid8 = fopen('INPUT_convergence_method.txt' , 'r' );
fid9 = fopen('INPUT_max_no_change_probability_crossover_generation.txt','r');
fid10 = fopen('INPUT_deta_fitness_max.txt','r');
fid11 = fopen('INPUT_max_probability_crossover.txt','r');
fid12 = fopen('INPUT_probability_crossover_step.txt','r');
fid13 = fopen('INPUT_max_no_change_fitness_generation.txt','r');
%Micro-GA
fid14 = fopen('INPUT_muGA_population_internal_number.txt','r'); % 5, in default
fid15 = fopen('INPUT_muGA_population_replaceable_number.txt','r'); % 2, in default
fid16 = fopen('INPUT_muGA_exchangeable_number.txt','r'); % 2, in default
fid17 = fopen('INPUT_muGA_cycle.txt','r'); % 2, in default
%output data files
fid101 = fopen('OUTPUT_bestfitness.txt','w+');
fid102 = fopen('OUTPUT_maxfitness.txt','w+');
fid103 = fopen('OUTPUT_minfitness.txt','w+');
fid104 = fopen('OUTPUT_meanfitness.txt','w+');
fid105 = fopen('OUTPUT_best_result_space.txt','w+');
fid106 = fopen('OUTPUT_best_coding_space.txt','w+');
fid107 = fopen('OUTPUT_now_generation.txt','w+');
fid108 = fopen('OUTPUT_now_probability_crossover.txt','w+');
% begin to load data from file
%% read data from these files
disp('/*==================================================================================================*/')
disp('/* Simple Genetic Algorithm Laboratory Toolbox (SGALAB) 1.0.0.3 for Matlab 7.x */ ')
disp('');
disp(' 07-Feb-2009 Chen Yi update 1003 leo.chen.yi@gmail.com Glasgow ')
disp('/*==================================================================================================*/')
disp('>>>>')
disp(' Begin to evaluate...Waiting please ...')
min_confines = fscanf( fid1 , '%g' ); min_confines = min_confines' ;
max_confines = fscanf( fid2 , '%g' ); max_confines = max_confines';
probability_crossover = fscanf( fid3 , '%g' ); probability_mutation = fscanf(fid4,'%g');
population = fscanf( fid5 , '%g' );
decimal_step = fscanf( fid6 , '%g' );
max_generation = fscanf( fid7 , '%g' );
convergence_method = fscanf( fid8 , '%g' );
max_no_change_probability_crossover_generation = fscanf( fid9 , '%g' );
deta_fitness_max = fscanf( fid10 , '%g' );
max_probability_crossover = fscanf( fid11,'%g' );
probability_crossover_step = fscanf(fid12,'%g');
max_no_change_fitness_generation = fscanf(fid13,'%g');
%Micro-GA internal population
internal_number = fscanf(fid14,'%g');
replaceable_number = fscanf(fid15,'%g');
exchangeable_number = fscanf(fid16,'%g');
muGA_cycle = fscanf(fid17,'%g');
decimal_step = decimal_step' ;
now_probability_crossover = probability_crossover;
%
disp('End Evaluating, List of results :')
% Step into SGALAB()
options = { 'Binary',
'Roulettewheel',
'singlepoint',
'singlepoint',
'0',
'NON_MO', % will check inside SGA_entry_MO_Pareto_muGA()
'0', % ignore
'0', % ignore
'1'}; % Micro-GA option:
% 1 - invoke mutation operator
% 0 - NOT invoke mutation operator
% Output
%
[ fitness_data ,...
now_generation , ...
now_probability_crossover,...
best_decimal_space ,...
best_coding_space ,...
error_status ]= SGA_entry_single_objective_muGA...
( options,...
min_confines ,...
max_confines ,...
probability_crossover ,...
probability_mutation ,...
population ,...
decimal_step , ...
max_generation ,...
convergence_method ,...
max_no_change_probability_crossover_generation ,...
deta_fitness_max ,...
max_probability_crossover ,...
max_no_change_fitness_generation ,...
probability_crossover_step,...
internal_number,...
replaceable_number,...
muGA_cycle);
if ( error_status ~= 0 ) return ; end
% [ maxfitness , minfitness , meanfitness , best_decimal_space , now_generation , now_probability_crossover , best_binary_space ] = SGALAB...
% ( min_confines , max_confines , probability_crossover , probability_mutation , population , decimal_step , max_generation , convergence_method , max_no_change_probability_crossover_generation , deta_fitness_max , deta_fitness_max_min , max_probability_crossover , max_no_change_fitness_generation , probability_crossover_step );
% maxfitness = max( fitness_value )
% best_decimal_space = decimal_space( max_fitness_temp_position( population ) )
%write data to output files
%write data to output files
fprintf( fid101, '%f\n' , fitness_data(1) );
% fprintf( fid8 , '\n the max value of fitness function:\n' );
fprintf( fid102 , '%f\n' , fitness_data(2));
%fprintf( fid9, '\n the min value of fitness function:\n');
fprintf( fid103 , '%f\n' ,fitness_data(3));
%fprintf(fid10,'\n the mean value of fitness function:\n');
fprintf(fid104,'%f\n', fitness_data(4));
%fprintf( fid11,'\nthe best decimal space(x1 x2 x3...):\n');
fprintf( fid105,'%f\n',best_decimal_space );
fprintf( fid106 , '%f\n' , best_coding_space );
%fprintf( fid12, '\nthe generation number when end GAs:\n' );
fprintf( fid107, '%f\n' , now_generation );
fprintf( fid108, '%f\n' , now_probability_crossover );
%close files
status = fclose( 'all' );
disp(' More detail result in text files with " Output_*.txt " ' )
disp('----------------------------------------------------------------------------------------')
result_files = list_current_dir_files ('OUTPUT_*.txt')
disp('----------------------------------------------------------------------------------------')
% timer end
toc
% SGA_remove_work_paths
% SGALAB_demo_single_objective_muGA End
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -