www.pudn.com > matlab.rar > gademo3.m, change:1996-02-06,size:6261b

```% This is a reference for writing evaluation, operator, selection and
% termination functions for the genetic optimization toolbox.

% Binary and Real-Valued Simulation Evolution for Matlab
% Copyright (C) 1996 C.R. Houck, J.A. Joines, M.G. Kay
%
% C.R. Houck, J.Joines, and M.Kay. A genetic algorithm for function
% optimization: A Matlab implementation. ACM Transactions on Mathmatical
% Software, Submitted 1996.
%
% This program is free software; you can redistribute it and/or modify
% the Free Software Foundation; either version 1, or (at your option)
% any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details. A copy of the GNU
% General Public License can be obtained from the
% Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

echo off
done =0;
while ~done
'Termination','Quit');

if(K==1)
clc;
disp('EVALUATION');
disp(' The evaluation function is the driving force behind the GA.  The');
disp(' evaluation function is called from the GA to determine the');
disp(' fitness of each solution string generated during the search.  An');
disp(' example evaluation function is given below:');
disp(' ');
disp(' x=sol(1);');
disp(' val = x + 10*sin(5*x)+7*cos(4*x);    ');
disp(' ');
disp(' Note that the evaluation function must take two parameters,');
disp(' sol and options.  Sol is a row vector of n+1 elements where');
disp(' the first n elements are the parameters of interest.  The');
disp(' n+1th element is the value of this solution.  The options');
disp(' matrix is a row matrix of');
disp(' ');
disp(' [current generation, options]');
disp(' ');
disp(' The eval function must return both the value of the string,');
disp(' val and the string itself, sol.  This is done so that');
disp(' your evaluation can repair or improve the string.');
disp(' ');
disp(' An evaluation function is unique to the optimization of the');
disp(' problem at hand, therefore, every time the ga is used for a');
disp(' different problem, an evaluation function must be developed to');
disp(' determine the fitness of the individuals.');
end
if(K==2)
clc;
disp('OPERATORS');
disp(' Operators provide the search mechanism of the GA.  The');
disp(' operators are used to create new solutions based on existing');
disp('solutions in the population.  There are two basic types of');
disp(' operators, crossover and mutation.  Crossover takes two');
disp(' individuals and produces two new individuals while mutation');
disp(' alters one individual to produce a single new solution.  The');
disp(' ga function calls each of the operators to produce new');
disp(' solutions.  The function call for crossovers is as follows:');
disp('');
disp(' function [c1,c2] =crossover(p1,p2,bounds,Ops)');
disp('');
disp('where');
disp(' p1 is the first parent ([solution_string function_value])');
disp(' p2 is the second parent ([solution_string function_value])');
disp(' bounds is the bounds matrix for the solution space');
disp(' ops is a vector of information, i.e. ');
disp('[current_generation crossover_ops]');
disp(' while the mutation function call is');
disp(' similar but only takes one parent and returns one child.');
disp(' function [c1] = mutation(p1,bounds,Ops)');
disp(' ');
disp(' The crossover operator must take all 4 arguments,');
disp(' the two parents, the bounds of the search space,');
disp(' the information on how much of the evolution has');
disp(' taken place and any other special options required,');
disp(' and similarly mutations must all take the three');
disp(' arguments and return the resulting');
disp(' child. ');
end
if(K==3)
clc;
disp('SELECTION')
disp(' The selection function determines which');
disp(' of the individuals will survive and continue');
disp(' on to the next generation.  The ga function');
disp(' calls the selection function each generation');
disp(' after all the new children have been');
disp(' evaluated to determine their fitness using');
disp(' the user provided evaluation function.');
disp(' ');
disp(' The basic function call used in the ga for');
disp(' selection is: ');
disp(' ');
disp(' function[newPop] = selectFunction(oldPop,options) ');
disp(' ');
disp(' where newPop is the new population selected, ');
disp(' oldPop is the current population, ');
disp(' options is a vector for any other optional parameters.');
disp(' ');
disp(' Notice that all selection routines must take');
disp(' three parameters, the old population from');
disp(' which to select members from, and any');
disp(' specific options to that particular selection');
disp(' routine.  The function must return the new');
disp(' population.');
end
if(K==4)
clc;
disp('TERMINATION')
disp(' The termination function determines when to');
disp(' stop the simulated evolution and return the');
disp(' resulting population.  The ga function calls');
disp(' the termination function once every');
disp(' generation after the application of all of');
disp(' the operator functions and the evaluation');
disp(' function for the resulting children.  The');
disp(' function call is of the format:');
disp(' ');
disp(' done = terminateFunction(options,bestPop,pop)');
disp(' ');
disp(' options is a vector of termination options');
disp(' the first of which is always the current generation');
disp(' bestPop is a matrix of the best individuals and the respective');
disp(' generation it was found.  ');
disp(' pop is the current population.');
end
if(K==5)
done=1;
end
end

```