⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sgalab_demo_mo_showall.m

📁 一个matlab环境下编制的使用很方便的多目标程序
💻 M
字号:
% /*M-FILE SCRIPT SGALAB_DEMO_MO_showall MMM SGALAB */ %% /*==================================================================================================%  Simple Genetic Algorithm Laboratory Toolbox for Matlab 7.x%%  Copyright 2007 The SxLAB Family - Yi Chen - chenyi2005@gmail.com% ====================================================================================================%File description:%        To show all MO methods in SGALAB on same fitness value, and the%        results can be shown in one figure%Input(1):%            options[8]:%                      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%%                      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%                                   'MOGA'      -- Multiobjective Genetic Algorithm (moGA: Fonseca and Fleming, 1993)%                                   'NSGA'      -- Non-dominated Sorting Genetic Algorithm(NSGA Srinivas, N. and K. Deb -1994 )%                                   'NSGAII'    --  Non-dominated Sorting Genetic Algorithm - II%                      options(7)-- Pareto ranking method%                                   'Goldberg','G'               -- Goldberg's method: rank = rank + 1;%                                   'Fonceca','Fleming','MO','F' -- Fonceca and Fleming's ranking method%                                                                   current rank%                                                                   =  the number of its dominating individulas + 1%                      options(8)-- Save each generation fitness data%                                   '1', -- Save; Pareto front neet this%                                   '0', -- Not Save,only get last results%%Usage:%  We can run SGALAB by key-in "SGALAB_DEMO_MO_showall" in Matlab command%  window%===================================================================================================%  See Also:         SGALAB_demo_math%                    SGALAB_demo_MO_VEGA%                    SGALAB_demo_MO_NPGA%                    SGALAB_demo_MO_NSGA%                    SGALAB_demo_MO_NSGAII%                    SGALAB_demo_MO_VEGA%                    SGALAB_demo_TSP_13cities%%===================================================================================================%%===================================================================================================%Revision -%Date        Name    Description of Change email                 Location%14-Dec-2006 Chen Yi update 1003           chenyi2005@gmail.com  Glasgow%20-Mar-2007 Chen Yi add options(8)        chenyi2005@gmail.com  Glasgow%HISTORY$%==================================================================================================*/% SGALAB_DEMO_MO_showall Begin%% set screen% freshclear ;close ('all');warning off% to delete old output_*.txt!del OUTPUT_*.txt!del SGA_entry_MO_*.mat% set working path%cd SGALAB_Funcs%      SGA_set_working_paths%% begin to count time during calculatinghome ;tic % timer start >>% data preparation%% open data files%%%input data filesfid1  = 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 filesfid14 = fopen('OUTPUT_maxfitness.txt','w+');fid15 = fopen('OUTPUT_minfitness.txt','w+');fid16 = fopen('OUTPUT_meanfitness.txt','w+');fid17 = fopen('OUTPUT_best_result_space.txt','w+');fid18 = fopen('OUTPUT_best_coding_space.txt','w+');fid19 = fopen('OUTPUT_now_generation.txt','w+');fid20 = fopen('OUTPUT_now_probability_crossover.txt','w+');% begin to load data from file%% read data from these filesdisp('/*==================================================================================================*/')disp('/*  Simple Genetic Algorithm Laboratory Toolbox (SGALAB) 1.0.0.3 for Matlab 7.x */ ')disp('');disp('    20-Mar-2007 Chen Yi update 1003     chenyi2005@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(' >>>>')disp('End Evaluating, List of results :')% Step into SGALAB()options = {     'Binary',    'tournament',    'singlepoint',    'singlepoint',    '0',    ' ',    'Goldberg',    '1'};% Output[ maxfitness ,...    minfitness ,...    meanfitness ,...    now_generation , ...    now_probability_crossover,...    best_decimal_space ,...    best_coding_space ,...    error_status ]= SGA_entry_MO_showall...    ( 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% fprintf( fid8 , '\n the max value of fitness function:\n' );% % fid14 = fopen('OUTPUT_maxfitness.txt','w+');% fid15 = fopen('OUTPUT_minfitness.txt','w+');% fid16 = fopen('OUTPUT_meanfitness.txt','w+');% fid17 = fopen('OUTPUT_best_result_space.txt','w+');% fid18 = fopen('OUTPUT_best_coding_space.txt','w+');% fid19 = fopen('OUTPUT_now_generation.txt','w+');% fid20 = fopen('OUTPUT_now_probability_crossover.txt','w+');% fprintf( fid14 , '%f\n' , maxfitness);save('OUTPUT_maxfitness.txt', '-struct', 'maxfitness','-ASCII');%fprintf( fid9, '\n the min value of fitness function:\n');% fprintf( fid15 , '%f\n' ,minfitness);save('OUTPUT_minfitness.txt', '-struct', 'minfitness','-ASCII');%fprintf(fid10,'\n the mean value of fitness function:\n');% fprintf(fid16,'%f\n',meanfitness);save('OUTPUT_meanfitness.txt', '-struct', 'meanfitness','-ASCII');%fprintf( fid11,'\nthe best decimal space(x1 x2 x3...):\n');% fprintf( fid17,'%f\n',best_decimal_space );save('OUTPUT_best_result_space.txt', '-struct', 'best_decimal_space','-ASCII');% fprintf( fid18 , '%f\n' , best_coding_space );save('OUTPUT_best_coding_space.txt', '-struct', 'best_coding_space','-ASCII');%fprintf( fid12, '\nthe generation number when end GAs:\n' );% fprintf( fid19, '%f\n' , now_generation );save('OUTPUT_now_generation.txt', '-struct', 'now_generation','-ASCII');% fprintf( fid20, '%f\n' , now_probability_crossover );save('OUTPUT_now_probability_crossover.txt', '-struct', 'now_probability_crossover','-ASCII');%close filesstatus = fclose( 'all' );disp(' More detail result in text files with " Output_*.txt " ' )disp('----------------------------------------------------------------------------------------')result_files = list_current_dir_files ('OUTPUT_*.txt')disp('----------------------------------------------------------------------------------------')% timer endtoc% SGALAB_DEMO_MO_showall End

⌨️ 快捷键说明

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