nsga_2.m ( File view )
Description：Multi-objective optimization (also known as multi-objective programming, vector optimization, multicriteria optimization,multiattribute optimization or Pareto optimization) is an a...
- By moeah 2014-04-18
- Point(s)： 1
function nsga_2(pop,gen) %% function nsga_2(pop,gen) % is a multi-objective optimization function where the input arguments are % pop - Population size % gen - Total number of generations % % This functions is based on evolutionary algorithm for finding the optimal % solution for multiple objective i.e. pareto front for the objectives. % Initially enter only the population size and the stoping criteria or % the total number of generations after which the algorithm will % automatically stopped. % % You will be asked to enter the number of objective functions, the number % of decision variables and the range space for the decision variables. % Also you will have to define your own objective funciton by editing the % evaluate_objective() function. A sample objective function is described % in evaluate_objective.m. Kindly make sure that the objective function % which you define match the number of objectives that you have entered as % well as the number of decision variables that you have entered. The % decision variable space is continuous for this function, but the % objective space may or may not be continuous. % % Original algorithm NSGA-II was developed by researchers in Kanpur Genetic % Algorithm Labarotary and kindly visit their website for more information % http://www.iitk.ac.in/kangal/ % Copyright (c) 2009, Aravind Seshadri % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are % met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in % the documentation and/or other materials provided with the distribution % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. %% Simple error checking % Number of Arguments % Check for the number of arguments. The two input arguments are necessary % to run this function. if nargin < 2 error('NSGA-II: Please enter the population size and number of generations as input arguments.'); end % Both the input arguments need to of integer data type if isnumeric(pop) == 0 || isnumeric(gen) == 0 error('Both input arguments pop and gen should be integer datatype'); end % Minimum population size has to be 20 individuals if pop < 20 error('Minimum population for running this function is 20'); end if gen < 5 error('Minimum number of generations is 5'); end % Make sure pop and gen are integers pop = round(pop); gen = round(gen); %% Objective Function % The objective function description contains information about the % objective function. M is the dimension of the objective space, V is the % dimension of decision variable space, min_range and max_range are the % range for the variables in the decision variable space. User has to % define the objective functions using the decision variables. Make sure to % edit the function 'evaluate_objective' to suit your needs. [M, V, min_range, max_range] = objective_description_function(); %% Initialize the population % Population is initialized with random values which are within the % specified range. Each chromosome consists of the decision variables. Also % the value of the objective functions, rank and crowding distance % information is also added to the chromosome vector but only the elements % of the vector which has the decision variables are operated upon to % perform the genetic operations like corssover and mutation. chromosome = initialize_variables(pop, M, V, min_range, max_range); %% Sort the initialized population % Sort the population using non-domination-sort. This returns two columns % for each individual which are the rank and the crowding distance % corresponding to their position in the front they belong. At this stage % the rank and the crowding distance for each chromosome is added to the % chromosome vector for easy of computation. chromosome = non_domination_sort_mod(chromosome, M, V); %% Start the evolution process % The following are performed in each generation % * Select the parents which are fit for reproduction % * Perfrom crossover and Mutation operator on the selected parents % * Perform Selection from the parents and the offsprings % * Replace the unfit individuals with the fit individuals to maintain a % constant population size. for i = 1 : gen % Select the parents % Parents are selected for reproduction to generate offspring. The % original NSGA-II uses a binary tournament selection based on the % crowded-comparision operator. The arguments are % pool - size of the mating pool. It is common to have this to be half the % population size. % tour - Tournament size. Original NSGA-II uses a binary tournament % selection, but to see the effect of tournament size this is kept % arbitary, to be choosen by the user. pool = round(pop/2); tour = 2; % Selection process % A binary tournament selection is employed in NSGA-II. In a binary % tournament selection process two individuals are selected at random % and their fitness is compared. The individual with better fitness is % selcted as a parent. Tournament selection is carried out until the % pool size is filled. Basically a pool size is the number of parents % to be selected. Th ... ... （Please download the complete source code to view）
Want complete source code? Download it here
0 lines left, continue to read
File listTips: You can preview the content of files by clicking file names^_^