📄 sgalab_demo_single_objective.m
字号:
% /*M-FILE SCRIPT SGALAB_DEMO_single_objective 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_single_objective" 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
% options(6)-- Multi-Objects option
% 'NON_MO' -- Non-Multi-Objective problem
% 'VEGA' -- Vector Evaluated Genetic Algorithms,J. D. Schaffer
%
%Appendix comments:
%
%Usage:
%
%===================================================================================================
% 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 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');
%output data files
fid14 = fopen('OUTPUT_bestfitness.txt','w+');
fid15 = fopen('OUTPUT_maxfitness.txt','w+');
fid16 = fopen('OUTPUT_minfitness.txt','w+');
fid17 = fopen('OUTPUT_meanfitness.txt','w+');
fid18 = fopen('OUTPUT_best_result_space.txt','w+');
fid19 = fopen('OUTPUT_best_coding_space.txt','w+');
fid20 = fopen('OUTPUT_now_generation.txt','w+');
fid21 = 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');
decimal_step = decimal_step' ;
now_probability_crossover = probability_crossover;
%
disp('End Evaluating, List of results :')
% Step into SGALAB()
options = { 'Binary',
'Roulettewheel', %Roulettewheel, Stochastic, tournament, truncation
'singlepoint',
'singlepoint',
'0',
'NON_MO'};
% Output
[ fitness_data ,...
now_generation , ...
now_probability_crossover,...
best_decimal_space ,...
best_coding_space ,...
error_status ]= SGA_entry_single_objective...
( 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 );
% [ fitness_data ,...
% now_generation , ...
% now_probability_crossover,...
% best_decimal_space ,...
% best_coding_space ,...
% error_status ]= SGA_entry_single_objective_mendel...
% ( 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 );
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
% OUTPUT_bestfitness.txt
fprintf( fid14 , '%f\n', fitness_data(1));
% OUTPUT_maxfitness.txt
fprintf( fid15 , '%f\n', fitness_data(2));
% OUTPUT_minfitness.txt
fprintf( fid16, '%f\n', fitness_data(3));
% OUTPUT_meanfitness.txt
fprintf( fid17, '%f\n', fitness_data(4));
% OUTPUT_best_result_space.txt
fprintf( fid18,'%f\n', best_decimal_space );
% OUTPUT_best_coding_space
fprintf( fid19 , '%f\n' , best_coding_space );
% OUTPUT_now_generation.txt
fprintf( fid20, '%f\n' , now_generation );
% OUTPUT_now_probability_crossover.txt
fprintf( fid21, '%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 End
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -