NSGA-II is a very famous multi-objective optimization algorithm. I submitted an example previously and wanted to make this submission useful to others by creating it as a function. Even though this function is very specific to benchmark problems, with a little bit more modification this can be adopted for any multi-objective optimization.
The function is nsga_2(pop,gen). The input arguments for the function are population size and number of generations. For customization purposes the user is free to modify the objective function (function of several decision variables) by modifying an m file (evaluate_objective.m). Couple of sample objective functions is already described in the file. The user also has the freedom to define the decision space.
For more information on NSGA-II visit Kanpur Genetic Algorithm Laboratory at http://www.iitk.ac.in/kangal/
One of the main applications of multi-objective optimization that I am currently working on is tuning PID controllers using MOEA. I am hoping to share that work with everyone soon.
Update (January 27, 2009): I am unable to support user's request to modify this program to incorporate constraints in the optimization program since I have no time to delve into this field. Hence effective today (January 27, 2009) I release this program under GPLv3. This means that anyone and everyone can modify this code as and how they wish. Enjoy! But do remember to contribute the code back to the community.
Effective July 17, 2009 this code is re-licensed under BSD license to comply with Mathworks policy on submissions to MATLAB central.
Note: I no longer have the resources to maintain this code.
Aravind Seshadri (2023). NSGA - II: A multi-objective optimization algorithm (https://www.mathworks.com/matlabcentral/fileexchange/10429-nsga-ii-a-multi-objective-optimization-algorithm), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Inspired: Cascade Power Generation Cycle Optimization, On the calculation of Crowding Distance, Genetic Algorithm-Jobshop scheduling, NSGA II: A multi-objective optimization program, Single Objective Genetic Algorithm, GODLIKE - A robust single-& multi-objective optimizer, NGPM -- A NSGA-II Program in Matlab v1.4, Multiobjective Differential Evolution Based on Fuzzy Performance Feedback, NSGA-II to Scheduling
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!