NGPM -- A NSGA-II Program in Matlab

Similar documents
Meta-heuristics for Multidimensional Knapsack Problems

An Optimal Algorithm for Prufer Codes *

The Greedy Method. Outline and Reading. Change Money Problem. Greedy Algorithms. Applications of the Greedy Strategy. The Greedy Method Technique

Parallelism for Nested Loops with Non-uniform and Flow Dependences

Support Vector Machines

Problem Definitions and Evaluation Criteria for Computational Expensive Optimization

SLAM Summer School 2006 Practical 2: SLAM using Monocular Vision

Programming in Fortran 90 : 2017/2018

A Binarization Algorithm specialized on Document Images and Photos

The Codesign Challenge

A mathematical programming approach to the analysis, design and scheduling of offshore oilfields

NUMERICAL SOLVING OPTIMAL CONTROL PROBLEMS BY THE METHOD OF VARIATIONS

Multi-objective Optimization Using Self-adaptive Differential Evolution Algorithm

Smoothing Spline ANOVA for variable screening

Learning the Kernel Parameters in Kernel Minimum Distance Classifier

Steps for Computing the Dissimilarity, Entropy, Herfindahl-Hirschman and. Accessibility (Gravity with Competition) Indices

Greedy Technique - Definition

Compiler Design. Spring Register Allocation. Sample Exercises and Solutions. Prof. Pedro C. Diniz

PARETO BAYESIAN OPTIMIZATION ALGORITHM FOR THE MULTIOBJECTIVE 0/1 KNAPSACK PROBLEM

A New Token Allocation Algorithm for TCP Traffic in Diffserv Network

Outline. Type of Machine Learning. Examples of Application. Unsupervised Learning

Multi-objective Optimization Using Adaptive Explicit Non-Dominated Region Sampling

Cluster Analysis of Electrical Behavior

Efficient Distributed File System (EDFS)

Structural Optimization Using OPTIMIZER Program

Sum of Linear and Fractional Multiobjective Programming Problem under Fuzzy Rules Constraints

Exercises (Part 4) Introduction to R UCLA/CCPR. John Fox, February 2005

A Novel Approach for an Early Test Case Generation using Genetic Algorithm and Dominance Concept based on Use cases

Design of Structure Optimization with APDL

Active Contours/Snakes

Affine Invariant Matching of Broken Boundaries Based on Differential Evolution

Solving two-person zero-sum game by Matlab

Determining the Optimal Bandwidth Based on Multi-criterion Fusion

Multiobjective fuzzy optimization method

CMPS 10 Introduction to Computer Science Lecture Notes

A MOVING MESH APPROACH FOR SIMULATION BUDGET ALLOCATION ON CONTINUOUS DOMAINS

CHAPTER 2 PROPOSED IMPROVED PARTICLE SWARM OPTIMIZATION

LS-TaSC Version 2.1. Willem Roux Livermore Software Technology Corporation, Livermore, CA, USA. Abstract

Study on Multi-objective Flexible Job-shop Scheduling Problem considering Energy Consumption

Load Balancing for Hex-Cell Interconnection Network

Problem Set 3 Solutions

News. Recap: While Loop Example. Reading. Recap: Do Loop Example. Recap: For Loop Example

Tsinghua University at TAC 2009: Summarizing Multi-documents by Information Distance

Course Introduction. Algorithm 8/31/2017. COSC 320 Advanced Data Structures and Algorithms. COSC 320 Advanced Data Structures and Algorithms

Help for Time-Resolved Analysis TRI2 version 2.4 P Barber,

An Application of the Dulmage-Mendelsohn Decomposition to Sparse Null Space Bases of Full Row Rank Matrices

Machine Learning. Topic 6: Clustering

A Fast Content-Based Multimedia Retrieval Technique Using Compressed Data

Classifier Selection Based on Data Complexity Measures *

Unsupervised Learning

GSLM Operations Research II Fall 13/14

GA-Based Learning Algorithms to Identify Fuzzy Rules for Fuzzy Neural Networks

Lobachevsky State University of Nizhni Novgorod. Polyhedron. Quick Start Guide

Imperialist Competitive Algorithm with Variable Parameters to Determine the Global Minimum of Functions with Several Arguments

A MULTI-OBJECTIVE GENETIC ALGORITHM FOR EXTEND

Hierarchical clustering for gene expression data analysis

Subspace clustering. Clustering. Fundamental to all clustering techniques is the choice of distance measure between data points;

3. CR parameters and Multi-Objective Fitness Function

A New Approach For the Ranking of Fuzzy Sets With Different Heights

Assignment # 2. Farrukh Jabeen Algorithms 510 Assignment #2 Due Date: June 15, 2009.

Support Vector Machines

EVALUATION OF THE PERFORMANCES OF ARTIFICIAL BEE COLONY AND INVASIVE WEED OPTIMIZATION ALGORITHMS ON THE MODIFIED BENCHMARK FUNCTIONS

AN IMPROVED GENETIC ALGORITHM FOR RECTANGLES CUTTING & PACKING PROBLEM. Wang Shoukun, Wang Jingchun, Jin Yihui

Outline. Midterm Review. Declaring Variables. Main Variable Data Types. Symbolic Constants. Arithmetic Operators. Midterm Review March 24, 2014

Maximum Variance Combined with Adaptive Genetic Algorithm for Infrared Image Segmentation

Multi-Objective Design Exploration for Aerodynamic Configurations

Classifier Swarms for Human Detection in Infrared Imagery

Random Variables and Probability Distributions

Algorithm To Convert A Decimal To A Fraction

CS 534: Computer Vision Model Fitting

6.854 Advanced Algorithms Petar Maymounkov Problem Set 11 (November 23, 2005) With: Benjamin Rossman, Oren Weimann, and Pouya Kheradpour

Comparison of Heuristics for Scheduling Independent Tasks on Heterogeneous Distributed Environments

Vectorization of Image Outlines Using Rational Spline and Genetic Algorithm

Brave New World Pseudocode Reference

Degree-Constrained Minimum Spanning Tree Problem Using Genetic Algorithm

Applying Continuous Action Reinforcement Learning Automata(CARLA) to Global Training of Hidden Markov Models

Research on Kruskal Crossover Genetic Algorithm for Multi- Objective Logistics Distribution Path Optimization

CHARUTAR VIDYA MANDAL S SEMCOM Vallabh Vidyanagar

Content Based Image Retrieval Using 2-D Discrete Wavelet with Texture Feature with Different Classifiers

Report on On-line Graph Coloring

CHAPTER 4 OPTIMIZATION TECHNIQUES

Simulation Based Analysis of FAST TCP using OMNET++

Intro. Iterators. 1. Access

An Iterative Solution Approach to Process Plant Layout using Mixed Integer Optimisation

Agenda & Reading. Simple If. Decision-Making Statements. COMPSCI 280 S1C Applications Programming. Programming Fundamentals

SciFed Journal of Telecommunication Single Fitness Function to Optimize Energy using Genetic Algorithms for Wireless Sensor Network

A Facet Generation Procedure. for solving 0/1 integer programs

Adaptive Weighted Sum Method for Bi-objective Optimization

Parallel matrix-vector multiplication

Hermite Splines in Lie Groups as Products of Geodesics

OPTIMIZATION OF SKELETAL STRUCTURES USING IMPROVED GENETIC ALGORITHM BASED ON PROPOSED SAMPLING SEARCH SPACE IDEA

Multiobjective Optimization

A generalized multiobjective particle swarm optimization solver for spreadsheet models: application to water quality

Multi-stable Perception. Necker Cube

An Efficient Genetic Algorithm with Fuzzy c-means Clustering for Traveling Salesman Problem

CSCI 104 Sorting Algorithms. Mark Redekopp David Kempe

Multi-objective Design Optimization of MCM Placement

Storage Binding in RTL synthesis

Shape Optimization of Shear-type Hysteretic Steel Damper for Building Frames using FEM-Analysis and Heuristic Approach

Related-Mode Attacks on CTR Encryption Mode

Transcription:

Verson 1.4 LIN Song Aerospace Structural Dynamcs Research Laboratory College of Astronautcs, Northwestern Polytechncal Unversty, Chna Emal: lsssswc@163.com 2011-07-26

Contents Contents... 1. Introducton... 1 2. How to run the code?... 1 2.1. CONSTR test problem descrpton... 1 2.2. Step1: Specfed optmzaton model... 1 2.3. Step2: Create a objectve functon... 2 2.4. Results... 3 3. NGPM Optons... 5 3.1. Codng... 5 3.2. Populaton optons... 5 3.3. Populaton ntalzaton... 6 3.4. Selecton... 7 3.5. Crossover... 7 3.6. Mutaton... 8 3.7. Constrant handlng... 8 3.8. Stoppng Crtera... 8 3.9. Output functon... 9 3.10. GUI control... 9 3.11. Plot nterval... 11 3.12. Parallel computaton... 11 4. R-NSGA-II: Reference-pont-based NSGA-II... 12 4.1. Introducton... 12 4.2. Usng the R-NSGA-II... 12 5. Test Problems... 13 5.1. TP1: KUR... 13 5.2. TP2: TNK... 14 6. Dsclamer... 17 7. Appendx A: Verson hstory... 17

1. Introducton Ths document gves a bref descrpton about NGPM. NGPM s the abbrevaton of A NSGA-II Program n Matlab, whch s the mplementaton of NSGA-II n Matlab. NSGA-II s a mult-objectve genetc algorthm developed by K. Deb [1]. The detals of NSGA-II are not descrbed n ths document; please refer to [1]. From verson 1.3, R-NSGA-II a modfed procedure of NSGA-II s mplemented, the detals of R-NSGA-II please refer to [2]. 2. How to run the code? To use ths program to solve a functon optmzaton problem. Optmzaton model such as number of desgn varables, number of objectves, number of constrants, should be specfed n the NSGA-II optmzaton optons structure 1 whch s created by functon nsgaopt(). The objectve functon must be created as a functon fle (*.m), and specfy the functon handle optons.objfun to ths functon. The Matlab fle TP_CONSTR.m s a scrpt fle whch solves a constraned test functon. Ths test problem s 'CONSTR' n [1]. 2.1. CONSTR test problem descrpton (1) Objectves: 2 f ( x) x 1 1 f2( x) (1 x2)/ x 1 (1) (2) Desgn varables: 2 x [0.1,1.0], x [0,5] (2) 1 2 (3) Constrants: 2 g ( x) x 9x 6 1 2 1 g ( x) x 9x 1 2 2 1 (3) Two steps should be done to solve ths problem. 2.2. Step1: Specfed optmzaton model The fle TP_CONSTR.m s a scrpt fle whch specfed the optmzaton model. 1 In ths document, all of the talc optons s the structure created by nsgaopt(). 1

% TP_CONSTR.m fle % 'CONSTR' test problem clc; clear; close all optons = nsgaopt(); optons.popsze = 50; optons.maxgen = 100; % create default optons structure % populaton sze % max generaton optons.numobj = 2; optons.numvar = 2; optons.numcons = 2; optons.lb = [0.1 0]; % number of objectves % number of desgn varables % number of constrants % lower bound of x optons.ub = [1 5]; % upper bound of x optons.objfun = @objfun; % objectve functon handle result = nsga2(optons); % start the optmzaton progress 2.3. Step2: Create a objectve functon The fle TP_CONSTR_objfun.m s a functon fle whch specfed the objectve functon evaluaton. The objectve functon s specfed by optons.objfun parameter created by the functon nsgaopt(). Its prototype s: [y, cons] = objfun(x, varvargn) x : Desgn varables vector, ts length must equals optons.numvar. y : Objectve values vector, ts length must equals optons.numobj. cons : Constrant volatons vector. Its length must equals optons.numcons. If there s no constrant, return empty vector []. varargn : Any varable(s) whch are passed to nsga2 functon wll be fnally passed to ths objectve functon. For example, f you call result = nsga2(opt, model, param) The two addton parameter passed to nsga2 model and param wll be passed to the objectve functon as [y, const]=objfun(x, model, param) 2

In ths functon optmzaton problem, there s no other parameter. functon [y, cons] = objfun(x) % TP_CONSTR_objfun.m fle % 'CONSTR' test problem y = [0,0]; cons = [0,0]; y(1) = x(1); y(2) = (1+x(2)) / x(1); % calculate the constrant volatons c = x(2) + 9*x(1) - 6; f(c<0) cons(1) = abs(c); end c = -x(2) + 9*x(1) - 1; f(c<0) cons(2) = abs(c); end 2.4. Results Run the scrpt fle TP_CONSTR.m, and you wll get the optmzaton result store n the result structure. The populaton wll be plotted n a GUI fgure. The x-axs s the frst objectve, and the y-axs s the second. If user specfes the names of objectves n optons.nameobj, then they wll be dsplayed n the x and y labels. On the GUI wndow plotnsga, the optmzaton progress could be paused or stop by press the correspondng buttons. Note that, the progress of optmzaton would pause or stop only when the current populaton evaluaton s done! The Pareto front (or populaton dstrbuton) of generaton 1 and 100 was plot n Fg. 1. The populatons of each generaton were outputted to the fle populatons.txt n current path. 3

30 Generaton 1 / 100 9 Generaton 100 / 100 25 8 7 20 6 objectve 2 15 10 objectve 2 5 4 3 5 2 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 objectve 1 1 0.4 0.5 0.6 0.7 0.8 0.9 1 objectve 1 Fg. 1: Optmzaton results In the populaton fle, there s a head secton n the begnnng whch saves some nformaton of optmzaton model. The head secton begns wth #NSGA2 lne, and ends wth #end lne. And there s a state secton n the front of each generaton of populaton, whch begns wth #Generaton lne and ends wth #end lne. Populatons.txt fle example: #NSGA2 popsze 50 maxgen 100 numvar 2 numobj 2 numcons 2 statefeldnames currentgen evaluatecount totaltme frstfrontcount frontcount avgevaltme #end #Generaton 1 / 100 currentgen 1 evaluatecount 50 totaltme 0.534723 frstfrontcount 7 frontcount 22 avgevaltme 5.4181e-005 #end 4

Var1 Var2 Obj1 Obj2 Cons1 Cons2 0.833251 4.528960.833251 6.6354 0 0 0.214288 4.566880.214288 25.97850 3.63829 0.669123 0.487702 0.669123 2.223360 0 0.350648 2.734410.350648 10.65 0.109757 0.578572 0.961756 4.824440.961756 6.056050 0 0.241852 4.852960.241852 24.20060 3.6763 3. NGPM Optons Ths program s wrtten for fnte element optmzaton problem, the Intermedate crossover and Gaussan mutaton s adequate for my use. Thus, I don t mplement other genetc operators nto NGPM. The real/nteger codng, the bnary tournament selecton, the Gaussan mutaton operator and the ntermedate crossover operator work well n my applcaton. If you want to use other genetc operators, try to modfy the code yourself. The followng genetc operators and capabltes are supported n NGPM: 3.1. Codng Real and nteger codng are both supported. If the codng types of desgn varables are not specfed n optons.vartype vector, real codng s use as default. optons.vartype: nteger vector, the length must equal to the number of desgn varables. 1=real, 2=nteger. For example, [1 1 2] represents that the frst two varables are real, and the thrd varable s nteger. 3.2. Populaton optons optons.popsze optons.numvar optons.numob optons.numcons optons.lb numvar. optons.ub numvar. : even nteger, populaton sze. : nteger, number of desgn varables. : nteger, number of objectves. : nteger, number of constrants. : vector, lower bound of desgn varables, the length must equal to : vector, upper bound of desgn varables, the length must equal to 5

3.3. Populaton ntalzaton There are three ways to ntalze the populaton: (1) (default) Usng unform dstrbuton random number between the lower and upper bounds. (2) Usng populaton fle generated n prevous optmzaton. (3) Usng the populaton result structure n prevous optmzaton. All these approach are specfed n the optons.ntfun cell array parameter. 3.3.1. Unform ntalzaton optons.ntfun = {@ntpop} Descrpton: Create a random ntal populaton wth a unform dstrbuton. Ths s the default approach. 3.3.2. From exst populaton fle optons.ntfun={@ntpop, strflename, ngen} strflename : strng, the optmzaton result fle name. ngen : (optonal) nteger, the generaton of populaton would be used. If ths parameter s not specfed, the last populaton would be used. Descrpton: Load populaton from exst populaton fle and use the last populaton. If the popsze of the populaton from fle less than the popsze of current optmzaton model, then unform ntalzaton would be used to fll the whole populaton. Example: optons.ntfun={@ntpop, 'pops.txt'} optons.ntfun={@ntpop, 'pops.txt', 100} % Restart from the last generaton % Restart from the 100 generaton 3.3.3. From exst optmzaton result optons.ntfun={@ntpop, oldresult, ngen} oldresult : structure, the optmzaton result structure n the workspace. ngen : (optonal) nteger, the generaton of populaton would be used. If ths parameter s not specfed, the last populaton would be used. 6

Descrpton: Load populaton from prevous optmzaton result structure. The result structure can be: 1. The result generated by last optmzaton procedure. 2. The result loaded from fle by loadpopfle( pop.txt ) functon. 3. The oldresult generated n the global workspace by the plotnsga( pop.txt ) functon. (The plotnsga functon calls loadpopfle functon too.) Example: oldresult=loadpopfle( pop.txt ); optons.ntfun={@ntpop, oldresult} optons.ntfun={@ntpop, oldresult, 100} % Restart from the last generaton % Restart from the 100 generaton 3.4. Selecton Only bnary tournament selecton s supported. 3.5. Crossover Only ntermedate crossover [3] the current verson. (whch also names arthmetc crossover) s supported n 3.5.1. Crossover fracton optons.crossoverfracton: scalar or strng, crossover fracton of varables of an ndvdual. If auto strng s specfed, NGPM would used 2/numVar as the crossoverfracton. NOTE: All of the ndvduals n the populaton would be processed by crossover operator, and only crossoverfracton of all varables would do crossover. 3.5.2. Intermedate crossover optons.crossover={'ntermedate', rato}; Intermedate crossover [3] creates two chldren from two parents: parent1 and parent2. chld1 = parent1 + rand rato (parent2 - parent1) chld2 = parent2 - rand rato (parent2 - parent1) rato: scalar. If t les n the range [0, 1], the chldren created are wthn the two parent. If algorthm s premature, try to set rato larger than 1.0. 7

3.6. Mutaton Only Gaussan mutaton (whch also names normal mutaton) s supported n the current verson. 3.6.1. Mutaton fracton optons.mutaonfracton: scalar or strng, mutaton fracton of varables of an ndvdual. If auto strng s specfed, NGPM would use 2/numVar as the mutaonfracton. NOTE: It s smlar to the crossoverfracton parameter descrbed before. All of the ndvduals n the populaton would be processed, and only mutaonfracton of all varables would do mutaton. 3.6.2. Gaussan mutaton optons.mutaton = {'gaussan', scale, shrnk} Gaussan mutaton [3] adds a normally dstrbuted random number to each varable: chld =parent + S randn (ub-lb); S = scale (1 - shrnk currgen / maxgen); scale: scalar, the scale parameter determnes the standard devaton of the random number generated. shrnk: scalar, [0,1]. As the optmzaton progress goes forward, decrease the mutaton range (for example, shrnk [0.5, 1.0]) s usually used for local search. If the optmzaton problem has many dfferent local Pareto-optmal fronts, such as ZDT4 problem [1], a large mutaton range s requre gettng out of the local Pareto-optmal fronts. It means a zero shrnk should be used. 3.7. Constrant handlng NGPM uses bnary tournament selecton based on constrant-domnate defnton to handle constrant whch proposed by Deb [1]. 3.8. Stoppng Crtera Only maxmum generaton specfed by optons.maxgen s supported currently. Example: optons.maxgen=500; 8

3.9. Output functon 3.9.1. Output functon In current verson NGPM, the only output functon s output2fle whch outputs the whole populaton ncludes desgn varables, objectves and constrant volatons (f exst) nto the specfed fle (optons.outputfle). optons.outputfuns: cell array, the frst element must be the output functon handle, such as @output2fle. The other parameter wll be passed to ths functon as varable length nput argument. The output functon has the prototype: functon output (opt, state, pop, type, varargn) opt : the optons structure. state : the state structure. pop : the current populaton. type : use to dentfy f ths call s the last call. -1 = the last call, use for closng the opened fle or other operatons. others(or no exst) = normal output varargn : the parameter specfed n the optons.outputfuns cell array. There s no parameter for the default output functon output2fle. 3.9.2. Output nterval optons.outputinterval : nteger, nterval between two calls of output functon. Ths parameter can be assgned a large value for effcency. Example: optons.outputinterval = 10; 3.10. GUI control The GUI wndow plognsga (Fg. 2) s use to plot the result populatons or control the optmzaton progress. Call plotnsga functon to plot the populatons: plotnsga(result) plotnsga(strpopfle) result strpopfle : structure created by nsga2() functon. : populaton fle name. 9

Fg. 2: plotnsga GUI wndow 3.10.1. Pause, stop Press Pause button to pause the optmzaton progress, and the button ttle would be changed to Contnue. Then, press Contnue button to contnue the optmzaton. Press Stop button to stop the optmzaton progress. Ths operaton would stop the nsga2 teraton and closed the output fle f specfed. NOTE: When pause or stop button s pressed, the program would response untl the current generaton of optmzaton progress s fnshed. 3.10.2. Plot n new wndow Press Plot new button to plot the selected populaton n a new fgure wndow. Ths functon s desgned to save the fgure as EMF fle (because the wndow could not be saved as EMF fle f there s any GUI control on the fgure wndow). 3.10.3. Optmzaton state The optmzaton state lst-box lsts all felds of the state structure of selected generaton. Table 1: Optmzaton states Name Descrpton currentgen The selected generaton ID, begn wth 1. evaluatecount The objectve functon evaluaton count from the begnnng. totaltme The elapsed tme from optmzaton progress start. frstfrontcount The number of ndvduals n the frst front. frontcount The number of fronts n current populaton. avgevaltme The average evaluaton tme of current generaton. 10

3.10.4. Load from result plotnsga(strpopfle) strpopfle : strng, the optmzaton result fle name. Descrpton: The functon plotnsga wll frst call loadpopfle() functon to read the specfed optmzaton result fle. A global varable named "oldresult" whch contans the optmzaton result n the fle would be created n global workspace. Then the populaton loaded from fle would be plotted n the GUI wndow, and the fle name was showed n the fgure ttle. Example: plotnsga( populatons.txt ) 3.11. Plot nterval optons.plotinterval : nteger, nterval between two calls of "plotnsga". Descrpton: The overhead of plot n Matlab s very expensve. And t s not necessary to plot every generaton for functon optmzaton, a large nterval value could speedup the optmzaton. 3.12. Parallel computaton optons.useparallel : strng, { yes, no }, specfed f parallel computaton s used. optons.poolsze : scalar, the number of worker processes. If you have a quat-core processor, poolsze could be set to 3, then you can do other thngs when the optmzaton s progressng. Descrpton: The parallel computaton s very useful when the evaluaton of objectve functon s very tme-expensve and you have a multcore/multple processor(s) computer. If optons.useparallel s specfed as yes, the program would start multple worker processes and use parfor to calculate each objectve functon (Parallel Computaton Toolbox n Matlab s requred). Ths procedure s showed n Fg. 3. Refer Matlab helps for detals about parallel computaton. 11

Example: Fg. 3: Parallel computaton n NGPM optons.useparallel = 'yes'; optons.poolsze = 2; 4. R-NSGA-II: Reference-pont-based NSGA-II 4.1. Introducton The two objectves of mult-objectve optmzaton are: (1) Fnd the whole Pareto-optmal front. (2) Get a well-dstrbuted soluton set n the front. NSGA-II could do ths well. But at last, only one or several solutons may be chose. Deb [2] proposed a modfed procedure R-NSGA-II based on NSGA-II to get preference solutons by specfed reference ponts. Ths procedure provdes the decson-maker wth a set of solutons near the preference soluton(s), so that a better and a more relable decson can be made. 4.2. Usng the R-NSGA-II The parameters below would be used n R-NSGA-II: optons.refponts : matrx, Reference pont(s) used to specfy preference. Each row s a reference pont n objectve space. optons.refweght : vector, weght factor used n the calculaton of Eucldean dstance. If no value s specfed, all objectves have the same weght factor 1.0. It s the w n Eq. (4). optons.refepslon : scalar, a parameter used n epslon-based selecton strategy to control the spread of soluton. All solutons havng a weghted normalzed Eucldean dstance equal or less than ε would have a large preference dstance n the next selecton procedure. A large number (such as 0.01) would get a wde spread soluton set near reference ponts, whle a small value (such as 0.0001) would get a narrow spread soluton set. optons. refusenormdstance : strng, {'front', 'ever', 'no'}, specfy whch approach 12

would be used to calculate the preference dstance n R-NSGA-II. "front" : (default) Use maxmum and mnmum objectves n the front as normalzed factor. It means the f and f mn n Eq. (4) are the maxmum and mnmum objectve max values n the front. "ever": Use maxmum and mnmum objectves ever found as normalzed factor. It means the f and f mn n Eq. (4) are the maxmum and mnmum objectve values ever max found begn from the ntalzaton populaton. In many test problems, t s smlar to "front" parameter. "no": Do not use normalzed factor, only use Eucldean dstance. It means f max f mn 1. 2 M f( x) z dj w max mn 1 f f (4) Example: optons.refponts = [0.1 0.6; 0.3 0.6; 0.5 0.2; 0.7 0.2; 0.9 0;]; optons.refweght = [0.2 0.8]; optons.refepslon = 0.001; optons.refusenormdstance = 'no' A test example ZDT1 can be fnd n TP_R-NSGA2 folder. 5. Test Problems 5.1. TP1: KUR Fle: TP_KUR.m, TP_KUR_fun.m The KUR [1] problem has two objectve functon and no constrant except for bound constrants. 2 2 2 1 1 2 3 1 1 mn. f ( x, x, x ) 10exp 0.2 x x 2 1 2 3 3 0.8 3 (5) 1 f ( x, x, x ) x 5snx s.t. 5 x 5, 1, 2,3 13

Some of the optmzaton parameters were showed n Table 2. Table 2: Optmzaton parameters Parameter Value Populaton sze 50 Maxmum generaton 100 Crossover operator Intermedate, rato=1.2 Mutaton operator Gaussan, scale=0.1, shrnk=0.5 Fg. 4 shows the whole populaton of generaton 100. 2 Generaton 100 / 100 0-2 objectve 2-4 -6-8 -10-12 -20-19 -18-17 -16-15 -14 objectve 1 Fg. 4: The last populaton of problem KUR 5.2. TP2: TNK Fle: TP_TNK.m, TP_TNK_objfun.m The TNK [1] problem has two smple objectve functon and two complcated constrants except for bound constrants. mn. f ( x, x ) x 1 1 2 1 f ( x, x ) x 2 1 2 2 s.t. g ( x) x x 1 0.1cos(16arctan( x / x )) 0 2 2 1 1 2 1 2 g ( x) ( x 0.5) ( x 0.5) 0.5 2 2 2 1 2 x [0, ], 1,2 The optmzaton parameters are showed n Table 2. Parallel computaton s enabled, and poolsze s assgned 2. Actually, parallel computaton s no essental here, and parallel computaton cost more tme then seral computaton, snce the overhead of nterprocess communcaton exceeds the save tme beneft from parallel computaton. In my dual-core computer, the total tme of parallel computaton s 24.0s, whle seral computaton costs (6) 14

12.5s. Fg. 5 shows the whole populaton of generaton 100. 1.4 Generaton 100 / 100 1.2 1 obj 2 : f2=x2 0.8 0.6 0.4 0.2 0 0 0.2 0.4 0.6 0.8 1 1.2 1.4 obj 1 : f1=x1 Fg. 5: The last populaton of problem TNK 5.3. TP3: Three-objectve DTLZ2 R-NSGA-II Fle: TPR_DTLZ2_3obj.m, TPR_DTLZ2_objfun_3obj.m The DTLZ [4] (Deb-Thele-Laumanns-Ztzler) test problems are a set of MOPs for testng and comparng MOEAs. They are scalable to a user defned number of objectves. mn. f ( x) (1 g( x ))cos( x / 2)cos( x / 2) cos( x / 2)cos( x / 2) 1 M 1 2 M 2 f ( x) (1 g( x ))cos( x / 2)cos( x / 2) cos( x / 2)sn( x / 2) 2 M 1 2 M 2 f ( x) (1 g( x ))cos( x / 2)cos( x / 2) sn( x / 2) 3 M 1 2 M 2 f ( x) (1 g( x ))cos( x /2) sn( x / 2) M 1 M 1 f ( x) (1 g( x ))sn( x /2) M st.. 0 x 1, 1,2,..., n x x M where g( x ) ( x 0.5) M M 1 2 2 M 1 M 1 (7) where M s the number of objectves, n s the number of varables, x M represents x for [ M, n]. It s recommended that n M 9. For DTLZ2 problem, Pareto-optmal solutons satsfy M 2 f 1, and 1 x 0.5 for [ M, n]. Here, optmzaton parameters below were used. There are two reference ponts: (0.2,0.2,0.6) and (0.8,0.6,1.0). The defnton of ε s dfferent from the Deb's defnton, thus ε=0.002 was used nstead of 0.01 n [2]. optons.popsze = 200; optons.maxgen = 200; % populaon sze % max generaton 15

optons.refponts = [0.2 0.2 0.6; 0.8 0.6 1.0]; optons.refepslon = 0.002; Fg. 6 shows the last populaton of three objectve DTLZ2 problem and the true Pareto front. Generaton 200 / 200 1 0.8 objectve 3 0.6 0.4 0.2 0 0 0.2 0.4 0.6 0.8 objectve 1 1 0 0.2 0.6 0.4 objectve 2 0.8 1 Fg. 6: The last populaton of three objectve DTLZ2 problem 5.4. TP4: 10-objectve DTLZ2 R-NSGA-II Fle: TPR_DTLZ2_10obj.m, TPR_DTLZ2_objfun_10obj.m For 10-objectve DTLZ2 problem, we used reference pont: f 0.25 for all [2] 1, 2,...,10. In Deb's paper, t's sad that the soluton wth f =0.316 s closest to the reference pont. Ths s not true when normalzed Eucldean dstance s used: the ponts do not concentrates near f =0.316. If you want to get smlar results as ref optons.refusenormdstance must be specfed as 'no': optons.refusenormdstance = 'no'; Then, smlar result would be get as showed n Fg. 7(a). If optons.refusenormdstance was specfed as default value 'front', you wll get the result showed n Fg. 7(b). [2], 16

0.34 Generaton 200 / 200 0.5 Generaton 200 / 200 0.33 0.32 0.45 Objectve value 0.31 0.3 0.29 0.28 Objectve value 0.4 0.35 0.27 0.26 0.3 0.25 1 2 3 4 5 6 7 8 9 10 Objectve number 0.25 1 2 3 4 5 6 7 8 9 10 Objectve number (a) refusenormdstance='no' (b) refusenormdstance='front' Fg. 7: 10-objectve DTLZ2 problem wth dfferent refusenormdstance parameter 6. Dsclamer Ths code s dstrbuted for academc purposes only. If you have any comments or fnd any bugs, please send an emal to lsssswc@163.com. 7. Appendx A: Verson hstory v1.4 [2011-07-26] 1. Add: Support three or more objectves vsualzaton dsplay n "plotnsga". 2. Add: R-NSGA-II problem: DTLZ2. 3. Improve effcency for large generaton. v1.3 [2011-07-15] 1. Add: Implement reference-pont-based NSGA-II procedure -- R-NSGA-II. 2. Add: NSGA-II test problem: ZDT1, ZDT2, ZDT3 and ZDT6. 3. Improve: Improve the effcency of "ndsort" functon, get a 48% speedup for TP_CONSTR problem. 4. Improve: Save the output fle ID to optons structure for no explct clear n optmzaton scrpt fle. 5. Modfy: Modfy the crossover and mutaton strategy from ndvduals to varables. v1.1 [2011-07-01] 17

1. Add: Load and plot populaton from prevous optmzaton result fle. 2. Add: Intalze populaton usng exst optmzaton result or fle. v1.0 [2011-04-23] The frst verson dstrbuted. Reference: [1] Deb K, Pratap A, Agarwal S, et al. A fast and eltst multobjectve genetc algorthm NSGA-II[J]. Evolutonary Computaton. 2002, 6(2): 182-197. [2] Deb K, Sundar J, U B R N, et al. Reference pont based mult-objectve optmzaton usng evolutonary algorthms[j]. Internatonal Journal of Computatonal Intellgence Research. 2006, 2(3): 273-286. [3] Matlab Help, Global optmzaton toolbox. [4] Deb K, Thele L, Laumanns M, et al. Scalable Test Problems for Evolutonary Mult-Objectve Optmzaton[C]. Pscataway, New Jersey: 2002. 18