I Introduction
Multiobjective optimization problems (MOPs) widely exist in computer science such as data mining [1]
[2], image processing [3]and neural network
[4], as well as many other application fields [5, 6, 7, 8]. An MOP consists of two or more conflicting objectives to be optimized, and there often exist a set of optimal solutions trading off between different objectives. Since the vector evaluated genetic algorithm (VEGA) was proposed by Schaffer in 1985
[9], a number of multiobjective evolutionary algorithms (MOEAs) have been proposed and shown their superiority in tackling MOPs during the last three decades. For example, several MOEAs based on Pareto ranking selection and fitness sharing mechanism including multiobjective genetic algorithm (MOGA) [10], nondominated sorting genetic algorithm (NSGA) [11], and niched Pareto genetic algorithm (NPGA) [12] were proposed in the 1990s. From 1999 to 2002, some MOEAs characterized by the elitism strategy were developed, such as nondominated sorting genetic algorithm II (NSGAII) [13], strength Pareto evolutionary algorithm 2 (SPEA2) [14], Pareto envelopebased selection algorithm II (PESAII) [15] and cellular multiobjective genetic algorithm (cellular MOGA) [16]. Afterwards, the evolutionary algorithm based on decomposition (MOEA/D) was proposed in 2007 [17], and some other MOEAs following the basic idea of MOEA/D had also been developed since then [18, 19, 20, 21].In spite of the large number of MOEAs in the literature [22], there often exist some difficulties in applying and using these algorithms since the source code of most algorithms had not been provided by the authors. Besides, it is also difficult to make benchmark comparisons between MOEAs due to the lack of a general experimental environment. To address such issues, several MOEA libraries have been proposed [23, 24, 25, 26, 27] to provide uniform experimental environments for users, which have greatly advanced the multiobjective optimization research and the implementation of new ideas. For example, the Cbased multiobjective optimization library PISA [27]^{1}^{1}1PISA: http://www.tik.ee.ethz.ch/pisa separates the implementation into two components, i.e., the problemspecific part containing MOPs and operators, and the problemindependent part containing MOEAs. These two components are connected by a text filebased interface in PISA. jMetal [23]^{2}^{2}2jMetal: http://jmetal.sourceforge.net/index.html is an objectoriented Javabased multiobjective optimization library consisting of various MOEAs and MOPs. MOEA Framework^{3}^{3}3MOEA Framework: http://moeaframework.org/index.html is another free and open source Java framework for multiobjective optimization, which provides a comprehensive collection of MOEAs and tools necessary to rapidly design, develop, execute and test MOEAs. OTL [25]^{4}^{4}4OTL: http://github.com/OTL/OTL, a C++ template library for multiobjective optimization, is characterized by objectoriented architecture, template technique, readytouse modules, automatically performed batch experiments and parallel computing. Besides, a Pythonbased experimental platform has also been proposed as the supplement of OTL, for improving the development efficiency and performing batch experiments more conveniently.
Algorithm  Year of  Description 
Publication  
MultiObjective Genetic Algorithms  
SPEA2 [14]  2001  Strength Pareto evolutionary algorithm 2 
PSEAII [15]  2001  Pareto envelopebased selection algorithm II 
NSGAII [13]  2002  Nondominated sorting genetic algorithm II 
MOEA [28]  2003  Multiobjective evolutionary algorithm based on dominance 
IBEA [29]  2004  Indicatorbased evolutionary algorithm 
MOEA/D [17]  2007  Multiobjective evolutionary algorithm based on decomposition 
SMSEMOA [30]  2007  S metric selection evolutionary multiobjective optimization algorithm 
MSOPSII [31]  2007  Multiple single objective Pareto sampling algorithm II 
MTS [32]  2009  Multiple trajectory search 
AGEII [33]  2013  Approximationguided evolutionary algorithm II 
NSLS [34]  2015  Nondominated sorting and local search 
BCEIBEA [35]  2015  Bicriterion evolution for IBEA 
MOEA/IGDNS [36]  2016  Multiobjective evolutionary algorithm based on an 
enhanced inverted generational distance metric  
ManyObjective Genetic Algorithms  
HypE [37]  2011  Hypervolumebased estimation algorithm 
PICEAg [38]  2013  Preferenceinspired coevolutionary algorithm with goals 
GrEA [39]  2013  Gridbased evolutionary algorithm 
NSGAIII [40]  2014  Nondominated sorting genetic algorithm III 
ANSGAIII [41]  2014  Adaptive NSGAIII 
SPEA2+SDE [42]  2014  SPEA2 with shiftbased density estimation 
BiGE [43]  2015  Bigoal evolution 
EFRRR [20]  2015  Ensemble fitness ranking with ranking restriction 
IDBEA [44]  2015  Improved decomposition based evolutionary algorithm 
KnEA [45]  2015  Knee point driven evolutionary algorithm 
MaOEADDFC [46]  2015  Manyobjective evolutionary algorithm based on directional 
diversity and favorable convergence  
MOEA/DD [47]  2015  Multiobjective evolutionary algorithm based on dominance and decomposition 
MOMBIII [48]  2015  Manyobjective metaheuristic based on the R2 indicator II 
Two_Arch2 [49]  2015  Twoarchive algorithm 2 
MaOEAR&D [50]  2016  Manyobjective evolutionary algorithm based on objective 
space reduction and diversity improvement  
RPEA [51]  2016  Reference pointsbased evolutionary algorithm 
RVEA [52]  2016  Reference vector guided evolutionary algorithm 
RVEA* [52]  2016  RVEA embedded with the reference vector regeneration strategy 
SPEA/R [53]  2016  Strength Pareto evolutionary algorithm based on reference direction 
DEA [54]  2016  dominance based evolutionary algorithm 
MultiObjective Genetic Algorithms for LargeScale Optimization 

MOEA/DVA [55]  2016  Multiobjective evolutionary algorithm based on decision variable analyses 
LMEA [56]  2016  Largescale manyobjective evolutionary algorithm 
MultiObjective Genetic Algorithms with Preference 

gNSGAII [57]  2009  gdominance based NSGAII 
rNSGAII [58]  2010  rdominance based NSGAII 
WVMOEAP [59]  2016  Weight vector based multiobjective optimization algorithm with preference 
Multiobjective Differential Algorithms 

GDE3 [60]  2005  Generalized differential evolution 3 
MOEA/DDE [18]  2009  MOEA/D based on differential evolution 
Multiobjective Particle Swarm Optimization Algorithms 

MOPSO [61]  2002  Multiobjective particle swarm optimization 
SMPSO [62]  2009  Speedconstrained multiobjective particle swarm optimization 
dMOPSO [63]  2011  Decompositionbased particle swarm optimization 
Multiobjective Memetic Algorithms 

MPAES [64]  2000  Memetic algorithm based on Pareto archived evolution strategy 
Multiobjective Estimation of Distribution Algorithms 

MOCMA [65]  2007  Multiobjective covariance matrix adaptation 
RMMEDA [66]  2008  Regularity modelbased multiobjective estimation of distribution algorithm 
IMMOEA [67]  2015  Inverse modeling multiobjective evolutionary algorithm 
Surrogate Model Based Multiobjective Algorithms 

ParEGO [68]  2005  Efficient global optimization for Pareto optimization 
SMSEGO [69]  2008  Smetricselectionbased efficient global optimization 
KRVEA [70]  2016  Kriging assisted RVEA 
Problem  Year of  Description 
Publication  
MOKP [71]  1999  Multiobjective 0/1 knapsack problem and 
behavior of MOEAs on this problem analyzed in [72]  
ZDT1–ZDT6 [73]  2000  Multiobjective test problems 
mQAP [74]  2003  Multiobjective quadratic assignment problem 
DTLZ1–DTLZ9 [75]  2005  Scalable multiobjective test problems 
WFG1–WFG9 [76]  2006  Scalable multiobjective test problems and 
degenerate problem WFG3 analyzed in [77]  
MONRP [78]  2007  Multiobjective next release problem 
MOTSP [79]  2007  Multiobjective traveling salesperson problem 
ParetoBox [80]  2007  ParetoBox problem 
CF1–CF10 [81]  2008  Constrained multiobjective test problems for the 
CEC 2009 special session and competition  
F1–F10 for RMMEDA [66]  2008  The test problems designed for RMMEDA 
UF1–UF12 [81]  2008  Unconstrained multiobjective test problems for the 
CEC 2009 special session and competition  
F1–F9 for MOEA/DDE [18]  2009  The test problems extended from [82] designed for MOEA/DDE 
C1_DTLZ1, C2_DTLL2, C3_DTLZ4  2014  Constrained DTLZ and 
IDTLZ1, IDTLZ2[41]  inverted DTLZ  
F1–F7 for MOEA/DM2M [19]  2014  The test problems designed for MOEA/DM2M 
F1–F10 for IMMOEA [67]  2015  The test problems designed for IMMOEA 
BT1–BT9 [83]  2016  Multiobjective test problems with bias 
LSMOP1–LSMOP9 [84]  2016  Largescale multiobjective test problems 
It is encouraging that there are several MOEA libraries dedicated to the development of evolutionary multiobjective optimization (EMO), but unfortunately, most of them are still far from useful and practical to most researchers. On one hand, the existing MOEA libraries cannot catch up with the development of MOEAs, where most of the MOEAs included in them are outdated and not able to cover the stateofthearts. On the other hand, due to the lack of professional GUI for experimental settings and algorithmic configurations, these libraries are diffuclt to be used or extended, especially for beginners who are not familiar with EMO. In order to collect more modern MOEAs and make the implementation of experiments on MOEAs easier, in this paper, we introduce a MATLABbased EMO platform called PlatEMO^{5}^{5}5PlatEMO: http://bimk.ahu.edu.cn/index.php?s=/Index/Software/index.html. Compared to existing EMO platforms, PlatEMO has the following main advantages:

Rich Library. PlatEMO now includes 50 existing popular MOEAs as shown in Table I, where most of them are representative algorithms published in top journals, including multiobjective genetic algorithms, multiobjective differential evolution algorithms, multiobjective particle swarm optimization algorithms, multiobjective memetic algorithms, multiobjective estimation of distribution algorithms, and so on. PlatEMO also contains 110 MOPs from 16 popular test suites covering various difficulties, which are listed in Table II. In addition, there are a lot of performance indicators provided by PlatEMO for experimental studies, including Coverage [71], generational distance (GD) [85], hypervolume (HV) [86], inverted generational distance (IGD) [87], normalized hypervolume (NHV) [37], pure diversity (PD) [88], Spacing [89], and Spread () [90]. PlatEMO also provides a lot of widelyused operators for different encodings [91, 92, 93, 94, 95, 96, 97], which can be used together with all the MOEAs in PlatEMO.

Good Usability. PlatEMO is fully developed in MATLAB language, thus any machines installed with MATLAB can use PlatEMO regardless of the operating system. Besides, users do not need to write any additional code when performing experiments using MOEAs in PlatEMO, as PlatEMO provides a userfriendly GUI, where users can configure all the settings and perform experiments on MOEAs via the GUI, and the experimental results can further be saved as a table in the format of Excel or LaTeX. In other words, with the assistance of PlatEMO, users can directly obtain the statistical experimental results to be used in academic writings by oneclick operation via the GUI.

Easy Extensibility. PlatEMO is not only easy to be used, but also easy to be extended. To be specific, the source code of all the MOEAs, MOPs and operators in PlatEMO are completely open source, and the length of the source code is very short due to the advantages of matrix operation in MATLAB, such that users can easily implement their own MOEAs, MOPs and operators on the basis of existing resources in PlatEMO. In addition, all new MOEAs developed on the basis of interfaces provided by PlatEMO can be also included into the platform, such that the library in PlatEMO can be iteratively updated by all users to follow stateofthearts.

Delicate Considerations. There are many delicate considerations in the implementation of PlatEMO. For example, PlatEMO provides different figure demonstrations of experimental results, and it also provides welldesigned sampling methods for different shapes of Pareto optimal fronts. Fig. 1 shows the reference points sampled by PlatEMO on the Pareto optimal fronts of some MOPs with 3 objectives, while such reference points have not been provided by any other existing EMO libraries. It is also worth noting that, since the efficiency of most MOEAs is subject to the nondominated sorting process, PlatEMO employs the efficient nondominated sort ENSSS [98] for twoobjective optimization and the treebased ENS termed TENS [56] for optimization with more than two objectives as the nondominated sorting approaches, which have been demonstrated to be much more efficient than the fast nondominated sort [13] used in other EMO libraries.
The rest of this paper is organized as follows. In the next section, the architecture of PlatEMO is presented on several aspects, i.e., the file structure of PlatEMO, the class diagram of PlatEMO, and the sequence diagram of executing algorithms by PlatEMO. Section III introduces how to use PlatEMO for analyzing the performance of algorithms and performing comparative experiments. The methods of extending PlatEMO with new MOEAs, MOPs, operators and performance indicators are described in Section IV. Finally, conclusion and future work are given in Section V.
Ii Architecture of PlatEMO
After opening the root directory of PlatEMO, users can see a lot of .m files organized in the structure shown in Fig. 2, where it is very easy to find the source code of specified MOEAs, MOPs, operators or performance indicators. As shown in Fig. 2, there are six folders and one interface function main.m in the root directory of PlatEMO. The first folder Algorithms is used to store all the MOEAs in PlatEMO, where each MOEA has an independent subfolder and all the relevant functions are in it. For instance, as shown in Fig. 2, the subfolder AlgorithmsNSGAII contains three functions NSGAII.m, CrowdingDistance.m and EnvironmentalSelection.m, which are used to perform the main loop, calculate the crowding distances, and perform the environmental selection of NSGAII, respectively. The second folder Problems contains a lot of subfolders for storing benchmark MOPs. For example, the subfolder ProblemsDTLZ contains 14 DTLZ test problems (i.e., DTLZ1–DTLZ9, C1_DTLZ1, C2_DTLZ2, C3_DTLZ4, IDTLZ1 and IDTLZ2), and the subfolder ProblemsWFG contains 9 WFG test problems (i.e., WFG1–WFG9). The folders Operators and Metrics store all the operators and performance indicators, respectively. The next folder Public is used to store some public classes and functions, such as GLOBAL.m and INDIVIDUAL.m, which are two classes in PlatEMO representing settings of parameters and definitions of individuals, respectively. The last folder GUI stores all the functions for establishing the GUI of PlatEMO, where users need not read or modify them.
PlatEMO also has a simple architecture, where it only involves two classes, namely GLOBAL and INDIVIDUAL, to store all the parameters and joint all the components (e.g., MOEAs, MOPs and operators). The class diagram of these two classes is presented in Fig. 3. The first class GLOBAL represents all the parameter setting, including the handle of MOEA function algorithm, the handle of MOP function problem, the handle of operator function operator and other parameters about the environment (the population size, the number of objectives, the length of decision variables, the maximum number of fitness evaluations, etc.). Note that all the properties in GLOBAL are readonly, which can only be assigned by users when the object is being instantiated. GLOBAL also provides several methods to be invoked by MOEAs, where MOEAs can achieve some complex operations via these methods. For instance, the method Initialization() can generate a randomly initial population with specified size, and the method Variation() can generate a set of offsprings with specified parents.
The other class in PlatEMO is INDIVIDUAL, where its objects are exactly individuals in MOEAs. An INDIVIDUAL object contains four properties, i.e., dec, obj, con and add, all of which are also readonly. dec is the array of decision variables of the individual, which is assigned when the object is being instantiated. obj and con store the objective values and the constraint values of the individual, respectively, which are calculated after dec has been assigned. The property add is used to store additional properties of the individual for some special operators, such as the ’speed’ property in PSO operator [96].
In order to better understand the mechanism of PlatEMO, Fig. 4 illustrates the sequence diagram of running an MOEA by PlatEMO without GUI. To begin with, the interface main.m first invokes the algorithm function (e.g., NSGAII.m), then the algorithm obtains an initial population (i.e., an array of INDIVIDUAL objects) from the GLOBAL object by invoking its method Initialization(). After that, the algorithm starts the evolution until the termination criterion is fulfilled, where the maximum number of fitness evaluations is used as the termination criterion for all the MOEAs in PlatEMO. In each generation of a general MOEA, it first performs mating pool selection for selecting a number of parents from the current population, and the parents are used to generate offsprings by invoking the method Variation() of GLOBAL object. Variation() then passes the parents to the operator function (e.g., DE.m), which is used to calculate the decision variables of the offsprings according to the parents. Next, the operator function invokes the INDIVIDUAL class to instantiate the offspring objects, where the objective values of offsprings are calculated by invoking the problem function (e.g., DTLZ1.m). After obtaining the offsprings, the algorithm performs environmental selection on the current population and the offsprings to select the population for next generation. When the number of instantiated INDIVIDUAL objects exceeds the maximum number of fitness evaluations, the algorithm will be terminated and the final population will be output.
As presented by the above procedure, the algorithm function, the problem function and the operator function do not invoke each other directly; instead, they are connected to each other by the GLOBAL class and the INDIVIDUAL class. This mechanism has two advantages. First, MOEAs, MOPs and operators in PlatEMO are independent mutually, and they can be arbitrarily combined with each other, thus providing high flexibility PlatEMO. Second, users need not consider the details of the MOP or the operator to be involved when developing a new MOEA, thus significantly improving the development efficiency.
Iii Running PlatEMO
As mentioned in Section I, PlatEMO provides two ways to run it: first, it can be run with a GUI by invoking the interface main() without input parameter, then users can perform MOEAs on MOPs by simple oneclick operations; second, it can be run without GUI, and users can perform one MOEA on an MOP by invoking main() with input parameters. In this section, we elaborate these two ways of running PlatEMO.
Iiia Running PlatEMO without GUI
Parameter  Type  Default  Description 
Name  Value  
algorithm  function handle  @NSGAII  Algorithm function 
problem  function handle  @DTLZ2  Problem function 
operator  function handle  @EAreal  Operator function 
N  positive integer  100  Population size 
M  positive integer  3  Number of 
objectives  
D  positive integer  12  Number of 
decision variables  
evaluation  positive integer  10000  Maximum number 
of fitness  
evaluations  
run  positive integer  1  Run No. 
mode  1 or 2  1  Run mode 
(1. display result)  
(2. save result)  
X_parameter  cell  N/A  The parameter 
values for  
function X 
The interface main() can be invoked with a set of input parameters by the following form: main(’name1’, value1, ’name2’, value2, …), where name1, name2, … denote the names of the parameters and value1, value2, … denote the values of the parameters. All the acceptable parameters together with their data types and default values are listed in Table III. It is noteworthy that every parameter has a default value such that users need not assign all the parameters. As an example, the command main(’algorithm’,@NSGAII,’problem’,@DTLZ2,’N’,100,’M’,3,’D’,10,’evaluation’,10000) is used to perform NSGAII on DTLZ2 with a population size of 100, an objective number of 3, a decision variable length of 10, and a maximum fitness evaluation number of 10000.
By invoking main() with parameters, one MOEA can be performed on an MOP with the specified setting, while the GUI will not be displayed. After the MOEA has been terminated, the final population will be displayed or saved, which is determined by the parameter mode shown in Table III. To be specific, if mode is set to 1, the objective values or decision variable values of the final population will be displayed in a new figure, and users can also observe the true Pareto front and the evolutionary trajectories of performance indicator values. For example, Fig. 5 shows the objective values of the population obtained by NSGAII on DTLZ2 with 3 objectives, where users can select the figure to be displayed on the rightmost menu. If mode is set to 2, the final population will be saved in a .mat file, while no figure will be displayed.
Generally, there are four parameters to be assigned by users as listed in Table III (i.e., the population size N, the number of objectives M, the number of decision variables D, and the maximum number of fitness evaluations evaluation); however, different MOEAs, MOPs or operators may involve additional parameter settings. For instance, there is a parameter denoting the ratio of selected knee points in KnEA [45], and there are four parameters , , and in EAreal [91, 92]
, which denote the crossover probability, the distribution index of simulated binary crossover, the number of bits undergone mutation, and the distribution index of polynomial mutation, respectively. In PlatEMO, such function related parameters can also be assigned by users via assigning the parameter
X_parameter, where X indicates the name of the function. For example, users can use the command main(…,’KnEA_parameter’,{0.5},…) to set the value of to 0.5 for KnEA, and use the command main(…,’EAreal_parameter’,{1,20,1,20},…) to set the values of , , and to 1, 20, 1 and 20 for EAreal, respectively. Besides, users can find the acceptable parameters of each MOEA, MOP and operator in the comments at the beginning of the related function.IiiB Running PlatEMO with GUI
The GUI of PlatEMO currently contains two modules. The first module is used to analyze the performance of each MOEA, where one MOEA on an MOP can be performed in this module each time, and users can observe the result via different figure demonstrations. The second module is designed for statistical experiments, where multiple MOEAs on a batch of MOPs can be performed at the same time, and the statistical experimental results can be saved as Excel table or LaTeX table.
The interface of the first module, i.e., test module, is shown in Fig. 6. As can be seen from the figure, the main panel is divided into four parts. The first subpanel from left provides three popup menus, where users can select the MOEA, MOP and operator to be performed. The second subpanel lists all the parameters to be assigned, which depends on the selected MOEA, MOP and operator. The third subpanel displays the current population during the optimization, other figures such as the true Pareto front and the evolutionary trajectories of performance indicator values can also be displayed. In addition, users can observe the populations in previous generations by dragging the slider at the bottom. The fourth subpanel stores the detailed information of historical results. As a result, the test module provides similar functions to the PlatEMO without GUI, but users do not need to write any additional command or code when using it.
The other module on the GUI is the experimental module, which is shown in Fig. 7
. Similar to the text module, users should first select the MOEAs, MOPs and operators to be performed in the leftmost subpanel. Note that multiple MOEAs and MOPs can be selected in the experimental module. After setting the number of total runs, folder for saving results, and all the relevant parameters, the experiment can be started and the statistical results will be shown in the rightmost subpanel. Users can select any performance indicator to calculate the results to be listed in the table, where the mean and the standard deviation of the performance indicator value are shown in each grid. Furthermore, the best result in each row is shown in blue, and the Wilcoxon rank sum test result is labeled by the signs ’
’, ’’ and ’’, which indicate that the result is significantly better, significantly worst and statistically similar to the result in the control column, respectively. After the experiment is finished, the data shown in the table can be saved as Excel table (.xlsx file) or LaTeX table (.tex file). For example, after obtaining the experimental results shown in the table in Fig. 7, users can press the ’saving’ button on the GUI to save the table in the format of LaTeX, where the corresponding LaTeX table is shown in Table IV.Problem  KnEA  RVEA  
DTLZ1  2  6  1.2629e1 (1.80e1)  5.5304e1 (2.65e1) 
3  7  1.8853e1 (1.90e1)  4.9382e1 (3.91e1)  
4  8  2.7106e1 (1.74e1)  2.8460e1 (2.01e1)  
DTLZ2  2  11  5.5828e2 (1.50e2)  8.2011e3 (1.16e3) 
3  12  6.9440e2 (4.43e3)  5.5822e2 (9.16e4)  
4  13  1.5405e1 (5.07e3)  1.3956e1 (3.43e4)  
DTLZ3  5  14  1.6835e+1 (6.53e+0)  1.8521e+1 (6.83e+0) 
6  15  4.0119e+1 (1.39e+1)  2.0441e+1 (8.20e+0)  
7  16  7.6642e+1 (2.15e+1)  1.7181e+1 (7.44e+0)  
DTLZ4  8  17  4.1601e1 (9.60e3)  5.6715e1 (7.03e2) 
9  18  4.5396e1 (8.92e3)  5.7960e1 (5.25e2)  
10  19  4.9322e1 (6.48e3)  5.8410e1 (4.66e2)  
5/5/2 
It can be concluded from the above introduction that the functions provided by PlatEMO are modularized, where two modules (i.e., the test module and the experimental module) are included in the current version of PlatEMO. In the future, we also plan to develop more modules to provide more functions for users.
Iv Extending PlatEMO
PlatEMO is an open platform for scientific research and applications of EMO, hence it allows users to add their own MOEAs, MOPs, operators and performance indicators to it, where users should save the new MOEA, MOP, operator or performance indicator to be added as a MATLAB function (i.e., a .m file) with the specified interface and form, and put it in the corresponding folder. In the following, the methods of extending PlatEMO with a new MOEA, MOP, operator and performance indicator are illustrated by several cases, respectively.
Iva Adding New Algorithms to PlatEMO
All the .m files of MOEA functions are stored in the folder Algorithms in the root directory of PlatEMO, and all the .m files for the same MOEA should be put in the same subfolder. For example, as shown in the file structure in Fig. 2, the three .m files for NSGAII (i.e., NSGAII.m, CrowdingDistance.m and EnvironmentalSelection.m) are all in the subfolder AlgorithmsNSGAII. A case study including the source code of the main function of NSGAII (i.e. NSGAII.m) is given in Fig. 8, where the logic of the function is completely the same to the one shown in Fig. 4.
To begin with, the main function of an MOEA has one input parameter and zero output parameter, where the only input parameter denotes the GLOBAL object for the current run. Then an initial population Population is generated by invoking Global.Initialization(), and the nondominated front number and the crowding distance of each individual are calculated (line 2–4). In each generation, the function Global.NotTermination() is invoked to check whether the termination criterion is fulfilled, and the variable Population is passed to this function to be the final output (line 5). Afterwards, the mating pool selection, generating offsprings, and environmental selection are performed in sequence (line 6–9).
The common code required by any MOEA is underlined in Fig. 8. In addition to the interface of the function, one MOEA needs to perform at least the following three operations: obtaining an initial population via Global.Initialization(), checking the optimization state and outputting the final population via Global.NotTermination(), and generating offsprings via Global.Variation(), where all these three functions are provided by the GLOBAL object. Apart from the above three common operations, different MOEAs may have different logics and different functions to be invoked.
IvB Adding New Problems to PlatEMO
All the .m files of MOP functions are stored in the folder Problems, and one .m file usually indicates one MOP. Fig. 9 gives the source code of DTLZ2, where the common code required by any MOP is underlined. It can be seen from the source code that, the interface of DTLZ2 is more complex than the one of NSGAII, where the function DTLZ2() includes three input parameters and one output parameter. The input parameter Operation determines the operation to be performed; the parameter Global denotes the GLOBAL object; and the parameter input has different meanings when Operation is set to different values, so does the output parameter varargout.
Different from the MOEA functions which are invoked only once in each run, an MOP function may be invoked many times for different operations. As shown in Fig. 9, an MOP function contains three independent operations: generating random decision variables (line 3–10), calculating objective values and constraint values (line 11–23), and sampling reference points on the true Pareto front (line 24–27). To be specific, if Operation is set to ’init’, the MOP function will return the decision variables of a random population with size input (line 9–10). Meanwhile, it sets Global.M, Global.D, Global.lower, Global.upper and Global.operator to their default values, which denote the number of objectives, number of decision variables, lower boundary of each decision variable, upper boundary of each decision variable, and the operator function, respectively (line 4–8). When Operation is set to ’value’, the parameter input will denote the decision variables of a population, and the objective values and constraint values of the population will be calculated and returned according to the decision variables (line 14–23). And if Operation is set to ’PF’, a number of inputuniformly distributed reference points will be sampled on the true Pareto front and returned (line 25–27).
IvC Adding New Operators or Performance Indicators to PlatEMO
Fig. 10 shows the source code of evolutionary operator based on binary coding (i.e. EAbinary.m), where the .m files of the operator functions are all stored in the folder Operators. An operator function has two input parameters, one denoting the GLOBAL object (i.e. Global) and the other denoting the parent population (i.e. Parent), and it also has one output parameter denoting the generated offsprings (i.e. Offspring). As can be seen from the source code in Fig. 10, the main task of an operator function is to generate offsprings according to the values of Parent, where EAbinary() performs the singlepoint crossover in line 6–11 and the bitwise mutation in line 12–13 of the code. Afterwards, the INDIVIDUAL objects of the offsprings are generated and returned (line 14).
Fig. 11 shows the source code of IGD, where all these performance indicator functions are stored in the folder Metrics. The task of a performance indicator is to calculate the indicator value of a population according to a set of reference points. The input parameters of IGD() consists of two parts: the objective values of the population (i.e. PopObj), and the reference points sampled on the true Pareto front (i.e. PF). Correspondingly, the output parameter of IGD() is the IGD value (i.e. score). Thanks to the merits of matrix operation in MATLAB, the source code of IGD is quite short as shown in Fig. 11, where the calculation of the mean value of the minimal distance of each point in PF to the points in PopObj can be performed using a builtin function pdist2() provided by MATLAB.
IvD Adding Acceptable Parameters for New Functions
All the userdefined functions can have their own parameters as well as the functions provided by PlatEMO, where these parameters can be either assigned by invoking main(…,’X_parameter’,{…},…) with X denoting the function name, or displayed on the GUI for assignment. In order to add acceptable parameters for an MOEA, MOP, operator or performance indicator function, the comments in the head of the function should be written in a specified form. To be specific, Fig. 12 shows the comments and the source code in the head of the function of evolutionary operator based on real value coding (i.e. EAreal.m).
The comment in line 2 of Fig. 12 gives the two labels of this function, which are used to make sure this function can be identified by the GUI. The comment in line 3 is a brief introduction about this function; for an MOEA or MOP function, such introduction should be the title of the relevant literature. The parameters , , and for this function are given by the comments in line 4–7, where the names of the parameters are in the first column, the default values of the parameters are in the second column, and the introductions about the parameters are given in the third column. The columns in each row are divided by the sign ’—’.
The comments define the parameters and their default values for the function, and invoking Global.ParameterSet() can make these parameters assignable to users. As shown in line 9 of Fig. 12, the function invokes Global.ParameterSet() with four inputs denoting the default values of the parameters, and sets the four parameters to the outputs. More specifically, if users have not assigned the parameters, they will equal to their default values (i.e. 1, 15, 1 and 15). Otherwise, if users assign the parameters by invoking main(…,’EAreal_parameter’,{a,b,c,d},…), the parameters , , and will be set to a, b, c and d, respectively.
V Conclusion and Future Work
This paper has introduced a MATLABbased open source platform for evolutionary multiobjective optimization, namely PlatEMO. The current version of PlatEMO includes 50 multiobjective optimization algorithms and 110 multiobjective test problems, having covered the majority of stateofthearts. Since PlatEMO is developed on the basis of a light architecture with simple relations between objects, it is very easy to be used and extended. Moreover, PlatEMO provides a userfriendly GUI with a powerful experimental module, where engineers and researchers can use it to quickly perform their experiments without writing any additional code.
This paper has described the architecture of PlatEMO, and it has also introduced the steps of running PlatEMO with and without the GUI. Then, the ways of adding new algorithms, problems, operators and performance indicators to PlatEMO have been elaborated by several cases.
We will continuously maintain and develop PlatEMO in the future. On one hand, we will keep following the stateofthearts and adding more effective algorithms and new problems into PlatEMO. On the other hand, more modules will be developed to provide more functions for users, such as preference optimization, dynamic optimization, noisy optimization, etc. We hope that PlatEMO is helpful to the researchers working on evolutionary multiobjective optimization, and we sincerely encourage peers to join us to shape the platform for better functionality and usability.
Ackonwledgement
This work was supported in part by National Natural Science Foundation of China (Grant No. 61672033, 61272152, 615012004, 61502001), and the Joint Research Fund for Overseas Chinese, Hong Kong and Macao Scholars of the National Natural Science Foundation of China (Grant No. 61428302). This manuscript was written during Y. Tian’s visit at the Department of Computer Science, University of Surrey. The authors would like to thank Mr. Kefei Zhou and Mr. Ran Xu for their valued work in testing the PlatEMO.
References

[1]
A. Mukhopadhyay, U. Maulik, S. Bandyopadhyay, and C. Coello Coello, “A survey
of multiobjective evolutionary algorithms for data mining: Part I,”
IEEE Transactions on Evolutionary Computation
, vol. 18, no. 1, pp. 4–19, 2014.  [2] J. Handl and J. Knowles, “An evolutionary approach to multiobjective clustering,” IEEE Transactions on Evolutionary Computation, vol. 11, no. 1, pp. 56–76, 2007.
 [3] B. Lazzerini, F. Marcelloni, and M. Vecchio, “A multiobjective evolutionary approach to image quality/compression tradeoff in JPEG baseline algorithm,” Applied Soft Computing, vol. 10, no. 2, pp. 548–561, 2010.
 [4] F. Pettersson, N. Chakraborti, and H. Saxén, “A genetic algorithms based multiobjective neural net applied to noisy blast furnace data,” Applied Soft Computing, vol. 7, no. 1, pp. 387–397, 2007.
 [5] S. H. Yeung, K. F. Man, K. M. Luk, and C. H. Chan, “A trapeizform Uslot folded patch feed antenna design optimized with jumping genes evolutionary algorithm,” IEEE Transactions on Antennas and Propagation, vol. 56, no. 2, pp. 571–577, 2008.
 [6] A. Ponsich, A. L. Jaimes, and C. A. C. Coello, “A survey on multiobjective evolutionary algorithms for the solution of the portfolio optimization problem and other finance and economics applications,” IEEE Transactions on Evolutionary Computation, vol. 17, no. 3, pp. 321–344, 2013.
 [7] J. G. Herrero, A. Berlanga, and J. M. M. López, “Effective evolutionary algorithms for manyspecifications attainment: Application to air traffic control tracking filters,” IEEE Transactions on Evolutionary Computation, vol. 13, no. 1, pp. 151–168, 2009.
 [8] H. Ishibuchi and T. Murata, “Multiobjective genetic local search algorithm and its application to flowshop scheduling,” IEEE Transactions on Systems, Man, and CyberneticsPart C, vol. 28, no. 3, pp. 392–403, 1998.
 [9] J. D. Schaffer, “Multiple objective optimization with vector evaluated genetic algorithms,” in Proceedings of the 1st International Conference on Genetic Algorithms, 1985, pp. 93–100.
 [10] C. M. Fonseca, P. J. Fleming et al., “Genetic algorithms for multiobjective optimization: Formulationdiscussion and generalization,” in Proceedings of the Proceedings of the Fifth International Conference, vol. 93, 1993, pp. 416–423.
 [11] N. Srinivas and K. Deb, “Multiobjective optimization using nondominated sorting in genetic algorithms,” Evolutionary Computation, vol. 2, no. 3, pp. 221–248, 1995.
 [12] J. Horn, N. Nafpliotis, and D. E. Goldberg, “A niched pareto genetic algorithm for multiobjective optimization,” in Proceedings of the 1994 IEEE Congress on Evolutionary Computation, 1994, pp. 82–87.
 [13] K. Deb, A. Pratap, S. Agarwal, and T. Meyarivan, “A fast and elitist multiobjective genetic algorithm: NSGAII,” IEEE Transactions on Evolutionary Computation, vol. 6, no. 2, pp. 182–197, 2002.
 [14] E. Zitzler, M. Laumanns, and L. Thiele, “SPEA2: Improving the strength Pareto evolutionary algorithm for multiobjective optimization,” in Proceedings of the Fifth Conference on Evolutionary Methods for Design, Optimization and Control with Applications to Industrial Problems, 2001, pp. 95–100.
 [15] D. W. Corne, N. R. Jerram, J. D. Knowles, and M. J. Oates, “PESAII: Regionbased selection in evolutionary multiobjective optimization,” in Proceedings of the 2001 Genetic and Evolutionary Computation Conference, 2001, pp. 283–290.
 [16] T. Murata, H. Ishibuchi, and M. Gen, “Specification of genetic search directions in cellular multiobjective genetic algorithms,” in Proceedings of the First International Conference on Evolutionary MultiCriterion Optimization, 2001, pp. 82–95.
 [17] Q. Zhang and H. Li, “MOEA/D: A multiobjective evolutionary algorithm based on decomposition,” IEEE Transactions on Evolutionary Computation, vol. 11, no. 6, pp. 712–731, 2007.
 [18] H. Li and Q. Zhang, “Multiobjective optimization problems with complicated Pareto sets, MOEA/D and NSGAII,” IEEE Transactions on Evolutionary Computation, vol. 13, no. 2, pp. 284–302, 2009.
 [19] H.L. Liu, F. Gu, and Q. Zhang, “Decomposition of a multiobjective optimization problem into a number of simple multiobjective subproblems,” IEEE Transactions on Evolutionary Computation, vol. 18, no. 3, pp. 450–455, 2014.
 [20] Y. Yuan, H. Xu, B. Wang, B. Zhang, and X. Yao, “Balancing convergence and diversity in decompositionbased manyobjective optimizers,” IEEE Transactions on Evolutionary Computation, vol. 20, no. 2, pp. 180–198, 2016.
 [21] H. Ishibuchi, Y. Setoguchi, H. Masuda, and Y. Nojima, “Performance of decompositionbased manyobjective algorithms strongly depends on pareto front shapes,” IEEE Transactions on Evolutionary Computation, 2016.
 [22] A. Zhou, B.Y. Qu, H. Li, S.Z. Zhao, P. N. Suganthan, and Q. Zhang, “Multiobjective evolutionary algorithms: A survey of the state of the art,” Swarm and Evolutionary Computation, vol. 1, no. 1, pp. 32–49, 2011.
 [23] J. J. Durillo and A. J. Nebro, “jMetal: A java framework for multiobjective optimization,” Advances in Engineering Software, vol. 42, no. 10, pp. 760–771, 2011.

[24]
M. Lukasiewycz, M. Glaß, F. Reimann, and J. Teich, “Opt4J: A modular framework for metaheuristic optimization,” in
Proceedings of the 13th Annual Conference on Genetic and Evolutionary Computation, 2011, pp. 1723–1730.  [25] R. Shen, J. Zheng, and M. Li, “A hybrid development platform for evolutionary multiobjective optimization,” in Proceedings of the 2015 IEEE Congress on Evolutionary Computation, 2015, pp. 1885–1892.
 [26] A. Liefooghe, M. Basseur, L. Jourdan, and E.G. Talbi, “ParadisEOMOEO: A framework for evolutionary multiobjective optimization,” in Proceedings of the International Conference on Evolutionary MultiCriterion Optimization, 2007, pp. 386–400.
 [27] S. Bleuler, M. Laumanns, L. Thiele, and E. Zitzler, “PISAa platform and programming language independent interface for search algorithms,” in Proceedings of the International Conference on Evolutionary MultiCriterion Optimization, 2003, pp. 494–508.
 [28] K. Deb, M. Mohan, and S. Mishra, “Towards a quick computation of wellspread paretooptimal solutions,” in Proceedings of the International Conference on Evolutionary MultiCriterion Optimization, 2003, pp. 222–236.
 [29] E. Zitzler and S. Künzli, “Indicatorbased selection in multiobjective search,” in Proceedings of the 8th International Conference on Parallel Problem Solving from Nature, 2004, pp. 832–842.
 [30] N. Beume, B. Naujoks, and M. Emmerich, “SMSEMOA: Multiobjective selection based on dominated hypervolume,” European Journal of Operational Research, vol. 181, no. 3, pp. 1653–1669, 2007.
 [31] E. J. Hughes, “MSOPSII: A generalpurpose manyobjective optimiser,” in Proceedings of the 2007 IEEE Congress on Evolutionary Computation, 2007, pp. 3944–3951.
 [32] L.Y. Tseng and C. Chen, “Multiple trajectory search for unconstrained/constrained multiobjective optimization,” in Proceedings of the 2009 IEEE Congress on Evolutionary Computation, 2009, pp. 1951–1958.
 [33] M. Wagner and F. Neumann, “A fast approximationguided evolutionary multiobjective algorithm,” in Proceedings of the 15th Annual Conference on Genetic and Evolutionary Computation, 2013, pp. 687–694.
 [34] B. Chen, W. Zeng, Y. Lin, and D. Zhang, “A new local searchbased multiobjective optimization algorithm,” IEEE Transactions on Evolutionary Computation, vol. 19, no. 1, pp. 50–73, 2015.
 [35] M. Li, S. Yang, and X. Liu, “Pareto or nonPareto: Bicriterion evolution in multiobjective optimization,” IEEE Transactions on Evolutionary Computation, vol. 20, no. 5, pp. 645–665, 2015.
 [36] Y. Tian, X. Zhang, R. Cheng, and Y. Jin, “A multiobjective evolutionary algorithm based on an enhanced inverted generational distance metric,” in Proceedings of the 2016 IEEE Congress on Evolutionary Computation, 2016, pp. 5222–5229.
 [37] J. Bader and E. Zitzler, “HypE: An algorithm for fast hypervolumebased manyobjective optimization,” Evolutionary Computation, vol. 19, no. 1, pp. 45–76, 2011.
 [38] R. Wang, R. C. Purshouse, and P. J. Fleming, “Preferenceinspired coevolutionary algorithms for manyobjective optimization,” IEEE Transactions on Evolutionary Computation, vol. 17, no. 4, pp. 474–494, 2013.
 [39] S. Yang, M. Li, X. Liu, and J. Zheng, “A gridbased evolutionary algorithm for manyobjective optimization,” IEEE Transactions on Evolutionary Computation, vol. 17, no. 5, pp. 721–736, 2013.
 [40] K. Deb and H. Jain, “An evolutionary manyobjective optimization algorithm using referencepoint based nondominated sorting approach, part I: Solving problems with box constraints,” IEEE Transactions on Evolutionary Computation, vol. 18, no. 4, pp. 577–601, 2014.
 [41] H. Jain and K. Deb, “An evolutionary manyobjective optimization algorithm using referencepoint based nondominated sorting approach, part II: Handling constraints and extending to an adaptive approach,” IEEE Transactions on Evolutionary Computation, vol. 18, no. 4, pp. 602–622, 2014.
 [42] M. Li, S. Yang, and X. Liu, “Shiftbased density estimation for paretobased algorithms in manyobjective optimization,” IEEE Transactions on Evolutionary Computation, vol. 18, no. 3, pp. 348–365, 2014.
 [43] M. Li, S. Yang, and X. L. (2015), “Bigoal evolution for manyobjective optimization problems,” Artificial Intelligence, vol. 228, pp. 45–65, 2015.
 [44] M. Asafuddoula, T. Ray, and R. Sarker, “A decomposition based evolutionary algorithm for many objective optimization,” IEEE Transactions on Evolutionary Computation, vol. 19, no. 3, pp. 445–460, 2015.
 [45] X. Zhang, Y. Tian, and Y. Jin, “A knee point driven evolutionary algorithm for manyobjective optimization,” IEEE Transactions on Evolutionary Computation, vol. 19, no. 6, pp. 761–776, 2015.
 [46] J. Cheng, G. Yen, and G. Zhang, “A manyobjective evolutionary algorithm with enhanced mating and environmental selections,” IEEE Transactions on Evolutionary Computation, vol. 19, pp. 592–605, 2015.
 [47] K. Li, K. Deb, Q. Zhang, and S. Kwong, “Combining dominance and decomposition in evolutionary manyobjective optimization,” IEEE Transactions on Evolutionary Computation, vol. 19, no. 5, pp. 694–716, 2015.
 [48] R. Hernández Gómez and C. A. Coello Coello, “Improved metaheuristic based on the R2 indicator for manyobjective optimization,” in Proceedings of the 2015 on Genetic and Evolutionary Computation Conference, 2015, pp. 679–686.
 [49] H. Wang, L. Jiao, and X. Yao, “Two_Arch2: An improved twoarchive algorithm for manyobjective optimization,” IEEE Transactions on Evolutionary Computation, vol. 19, no. 4, pp. 524–541, 2015.
 [50] Z. He and G. G. Yen, “Manyobjective evolutionary algorithm: Objective space reduction and diversity improvement,” IEEE Transactions on Evolutionary Computation, vol. 20, no. 1, pp. 145–160, 2016.
 [51] Y. Liu, D. Gong, X. Sun, and Z. Yong, “Manyobjective evolutionary optimization based on reference points,” Applied Soft Computing, 2016, in press.
 [52] R. Cheng, Y. Jin, M. Olhofer, and B. Sendhoff, “A reference vector guided evolutionary algorithm for manyobjective optimization,” IEEE Transactions on Evolutionary Computation, 2016, in press.
 [53] S. Jiang and S. Yang, “A strength Pareto evolutionary algorithm based on reference direction for multiobjective and manyobjective optimization,” IEEE Transactions on Evolutionary Computation, 2016, in press.
 [54] Y. Yuan, H. Xu, B. Wang, and X. Yao, “A new dominance relationbased evolutionary algorithm for manyobjective optimization,” IEEE Transactions on Evolutionary Computation, vol. 20, no. 1, pp. 16–37, 2016.
 [55] X. Ma, F. Liu, Y. Qi, X. Wang, L. Li, L. Jiao, M. Yin, and M. Gong, “A multiobjective evolutionary algorithm based on decision variable analyses for multiobjective optimization problems with largescale variables,” IEEE Transactions on Evolutionary Computation, vol. 20, no. 2, pp. 275–298, 2016.
 [56] X. Zhang, Y. Tian, R. Cheng, and Y. Jin, “A decision variable clusteringbased evolutionary algorithm for largescale manyobjective optimization,” IEEE Transactions on Evolutionary Computation, 2016, in press.
 [57] J. Molina, L. V. Santana, A. G. HernándezDíaz, C. A. C. Coello, and R. Caballero, “gdominance: Reference point based dominance for multiobjective metaheuristics,” European Journal of Operational Research, vol. 197, no. 2, pp. 685–692, 2009.
 [58] L. B. Said, S. Bechikh, and K. Ghédira, “The rdominance: A new dominance relation for interactive evolutionary multicriteria decision making,” IEEE Transactions on Evolutionary Computation, vol. 14, no. 5, pp. 801–818, 2010.
 [59] X. Zhang, X. Jiang, and L. Zhang, “A weight vector based multiobjective optimization algorithm with preference,” Acta Electronica Sinica, vol. 44, no. 11, pp. 2639–2645, 2016.
 [60] S. Kukkonen and J. Lampinen, “GDE3: The third evolution step of generalized differential evolution,” in Proceedings of the 2005 IEEE Congress on Evolutionary Computation, vol. 1, 2005, pp. 443–450.
 [61] C. C. Coello and M. S. Lechuga, “MOPSO: A proposal for multiple objective particle swarm optimization,” in Proceedings of the 2002 IEEE Congress on Evolutionary Computation, vol. 2, 2002, pp. 1051–1056.
 [62] A. J. Nebro, J. J. Durillo, J. GarciaNieto, C. C. Coello, F. Luna, and E. Alba, “SMPSO: A new PSObased metaheuristic for multiobjective optimization,” in Proceedings of the Computational Intelligence in MultiCriteria DecisionMaking, 2009, pp. 66–73.
 [63] S. Zapotecas Martínez and C. A. Coello Coello, “A multiobjective particle swarm optimizer based on decomposition,” in Proceedings of the 13th Annual Conference on Genetic and Evolutionary Computation, 2011, pp. 69–76.
 [64] J. D. Knowles and D. W. Corne, “MPAES: A memetic algorithm for multiobjective optimization,” in Proceedings of the 2000 IEEE Congress on Evolutionary Computation, 2000, pp. 325–332.
 [65] C. Igel, N. Hansen, and S. Roth, “Covariance matrix adaptation for multiobjective optimization,” Evolutionary computation, vol. 15, no. 1, pp. 1–28, 2007.
 [66] Q. Zhang, A. Zhou, and Y. Jin, “RMMEDA: A regularity modelbased multiobjective estimation of distribution algorithm,” IEEE Transactions on Evolutionary Computation, vol. 12, no. 1, pp. 41–63, 2008.
 [67] R. Cheng, Y. Jin, K. Narukawa, and B. Sendhoff, “A multiobjective evolutionary algorithm using Gaussian process based inverse modeling,” IEEE Transactions on Evolutionary Computation, 2015, in press.
 [68] J. Knowles, “ParEGO: A hybrid algorithm with online landscape approximation for expensive multiobjective optimization problems,” IEEE Transactions on Evolutionary Computation, vol. 10, no. 1, pp. 50–66, 2006.
 [69] W. Ponweiser, T. Wagner, D. Biermann, and M. Vincze, “Multiobjective optimization on a limited budget of evaluations using modelassisted Smetric selection,” in Proceedings of the International Conference on Parallel Problem Solving from Nature, 2008, pp. 784–794.
 [70] T. Chugh, Y. Jin, K. Miettinen, J. Hakanen, and K. Sindhya, “A surrogateassisted reference vector guided evolutionary algorithm for computationally expensive manyobjective optimization,” IEEE Transactions on Evolutionary Computation, 2016, in press.
 [71] E. Zitzler and L. Thiele, “Multiobjective evolutionary algorithms: A comparative case study and the strength pareto approach,” IEEE transactions on Evolutionary Computation, vol. 3, no. 4, pp. 257–271, 1999.
 [72] H. Ishibuchi, N. Akedo, and Y. Nojima, “Behavior of multiobjective evolutionary algorithms on manyobjective knapsack problems,” IEEE Transactions on Evolutionary Computation, vol. 19, no. 2, pp. 264–283, 2015.
 [73] K. D. E. Zitzler and L. Thiele, “Comparison of multiobjective evolutionary algorithms: Empirical results,” Evolutionary Computation, vol. 8, no. 2, pp. 173–195, 2000.
 [74] J. Knowles and D. Corne, “Instance generators and test suites for the multiobjective quadratic assignment problem,” in Proceedings of the International Conference on Evolutionary MultiCriterion Optimization, 2003, pp. 295–310.
 [75] K. Deb, L. Thiele, M. Laumanns, and E. Zitzler, Scalable test problems for evolutionary multiobjective optimization, 2005.
 [76] L. B. S. Huband, P. Hingston and L. While, “A review of multiobjective test problems and a scalable test problem toolkit,” IEEE Transactions on Evolutionary Computation, vol. 10, no. 5, pp. 477–506, 2006.
 [77] H. Ishibuchi, H. Masuda, and Y. Nojima, “Pareto fronts of manyobjective degenerate test problems,” IEEE Transactions on Evolutionary Computation, vol. 20, no. 5, pp. 807–813, 2016.
 [78] Y. Zhang, M. Harman, and S. A. Mansouri, “The multiobjective next release problem,” in Proceedings of the 9th Annual Conference on Genetic and Evolutionary Computation, 2007, pp. 1129–1137.
 [79] D. W. Corne and J. D. Knowles, “Techniques for highly multiobjective optimisation: Some nondominated points are better than others,” in Proceedings of the 9th Conference on Genetic and Evolutionary Computation, 2007, pp. 773–780.
 [80] M. Köppen and K. Yoshida, “Substitute distance assignments in NSGAII for handling manyobjective optimization problems,” in Proceedings of the Evolutionary Multicriterion Optimization, 2007, pp. 727–741.
 [81] Q. Zhang, A. Zhou, S. Zhao, P. N. Suganthan, W. Liu, and S. Tiwari, “Multiobjective optimization test instances for the CEC 2009 special session and competition,” University of Essex, Colchester, UK and Nanyang technological University, Tech. Rep. CES487, Tech. Rep., 2008.
 [82] T. Okabe, Y. Jin, M. Olhofer, and B. Sendhoff, “On test functions for evolutionary multiobjective optimization,” in Proceedings of the International Conference on Parallel Problem Solving from Nature, 2004, pp. 792–802.
 [83] H. Li, Q. Zhang, and J. Deng, “Biased multiobjective optimization and decomposition algorithm,” IEEE Transactions on Cybernetics, 2016, in press.
 [84] R. Cheng, Y. Jin, M. Olhofer, and B. Sendhoff, “Test problems for largescale multiobjective and manyobjective optimization,” IEEE Transactions on Cybernetics, 2016, in press.
 [85] D. A. V. Veldhuizen and G. B. Lamont, “Multiobjective evolutionary algorithm research: A history and analysis,” Department of Electrical and Computer Engineering. Graduate School of Engineering, Air Force Inst Technol, Wright Patterson, Tech. Rep. TR9803, Tech. Rep., 1998.
 [86] L. While, P. Hingston, L. Barone, and S. Huband, “A faster algorithm for calculating hypervolume,” IEEE Transactions on Evolutionary Computation, vol. 10, no. 1, pp. 29–38, 2006.
 [87] A. Zhou, Y. Jin, Q. Zhang, B. Sendhoff, and E. Tsang, “Combining modelbased and geneticsbased offspring generation for multiobjective optimization using a convergence criterion,” in Proceedings of the 2006 IEEE Congress on Evolutionary Computation, 2006, pp. 892–899.
 [88] H. Wang, Y. Jin, and X. Yao, “Diversity assessment in manyobjective optimization,” IEEE Transactions on Cybernetics, 2016, in press.
 [89] J. R. Schott, “Fault tolerant design using single and multicriteria genetic algorithm optimization,” Master’s thesis, Cambridge: Massachusetts Institute of Technology, 1995.
 [90] Y. Wang, L. Wu, and X. Yuan, “Multiobjective selfadaptive differential evolution with elitist archive and crowding entropybased diversity measure,” Soft Computing, vol. 14, no. 3, pp. 193–209, 2010.
 [91] K. Deb, MultiObjective Optimization Using Evolutionary Algorithms. New York: Wiley, 2001.
 [92] K. Deb and M. Goyal, “A combined genetic adaptive search (GeneAS) for engineering design,” Computer Science and Informatics, vol. 26, no. 4, pp. 30–45, 1996.
 [93] L. Davis, “Applying adaptive algorithms to epistatic domains,” in Proceedings of the International Joint Conference on Artificial Intelligence, vol. 1, 1985, pp. 162–164.
 [94] D. B. Fogel, “An evolutionary approach to the traveling salesman problem,” Biological Cybernetics, vol. 60, no. 2, pp. 139–144, 1988.
 [95] K. Price, R. M. Storn, and J. A. Lampinen, Differential evolution: A practical approach to global optimization. Springer Science & Business Media, 2006.
 [96] J. Kennedy, J. F. Kennedy, R. C. Eberhart, and Y. Shi, Swarm intelligence. Morgan Kaufmann, 2001.
 [97] X. Yao, Y. Liu, and G. Lin, “Evolutionary programming made faster,” IEEE Transactions on Evolutionary Computation, vol. 3, no. 2, pp. 82–102, 1999.
 [98] X. Zhang, Y. Tian, R. Cheng, and Y. Jin, “An efficient approach to nondominated sorting for evolutionary multiobjective optimization,” IEEE Transactions on Evolutionary Computation, vol. 19, no. 2, pp. 201–213, 2015.