NOMADm Optimization Software


NOMADm is a MATLAB® implementation of the class of Mesh-Adaptive Direct Search (MADS) algorithms for solving nonlinear and mixed variable optimization problems with general nonlinear constraints. MADS is a generalization of the class of Generalized Pattern Search (GPS) algorithms that evaluates points in a set of directions that becomes dense in the limit, thereby achieving superior convergence properties. The algorithms used by NOMADm are detailed in several papers listed below and others in-progress. NOMADm is the research version of the production C++ code, NOMAD.

As a testament to its quality, The MathWorks folks have incorporated many of the ideas in this code into the direct search portion of their own Genetic Algorithm and Direct Search (GADS) Toolbox (see GADS Toolbox User's Guide, p. 3).

Important note: Because of my move to Boeing Research & Technology, I regret that I am no longer allowed to directly support NOMADm. While I can correct minor bugs, answer questions, and maintain this website, I cannot continue to make substantive improvements because it creates a conflict of interest with respect to Boeing's own software initiatives. If you have questions or comments on the code, instructions for contacting can be found by clicking on my name below.


People Involved in the NOMAD/NOMADm Project


Some Relevant Papers

This is a list of papers that are relevant to the NOMADm software. Those that are algorithmic in nature either have something in them that has been incorporated into NOMADm, or else adds something significant to the theory of the class of GPS or MADS algorithms that are employed in NOMADm. The applications are typically those that used our software in their research. This list does not include the many papers dealing with ideas for surrogate optimization (e.g., radial basis functions, DACE, etc.), unless they are specifically applied in some way to GPS/MADS algorithms or the NOMADm software.

Mesh Adaptive Direct Search

Generalized Pattern Search

Surrogates

Applications


NOMADm v4.6 Software Download

Download NOMADm v4.6
Download some example problem files
Download Heat Shield problem files

NOMADm should work on any platform that uses MATLAB. The MATLAB Optimization Toolbox is recommended, but not necessary to run the software. If it is not present, then a few of the more obscure functions will not work. Changes to past versions are as follows (a complete list is included in the accompanying documentation):

NOTE:   Since this code is now over 9000 lines of MATLAB code, there are bound to be bugs in it, in spite of my efforts to thoroughly test all the options. PLEASE e-mail me with any bugs that you encounter, and also with any suggestions that you have for improving the code, as I want to make the code as cool and bug-free as possible.


Companion Software Download

NOMADm optionally incorporates three additional MATLAB packages for constructing and optimizing surrogates (Click on the link to download):

Download DACE Toolbox (A suite of algorithms for Kriging surrogates)
Download RBF Toolbox (A set of functions that apply radial basis functions)
Download NW Toolbox (A set of functions that apply the Nadaraya-Watson estimator)

Note: The CMA-ES evolutionary strategy code is no longer kept separate from this code. Instead, a highly modified version of Nikolaus Hansen's code has been incorporated directly into the NOMADm files. Special thanks to Niko for an exceptional piece of software.

To use one of these packages within NOMADm, after installation, the path where the files are located must be added to the MATLAB path via the "File --> Set Path" menu choice from the main MATLAB figure window. If done correctly, relaunching NOMADm will result in the appropriate help file appearing in the NOMADm Help Menu.


Acknowledgements

I owe a special debt of gratitude to my colleagues, John Dennis and Charles Audet, whose assistance in this project has been invaluable. I would also like to thank Keith Berrier, Olga Brezhneva, Ana Custodio, Gilles Couture, Thierry Dalon, John Dunlap, Nikolaus Hansen, Arantzazu Garcia-Lekue, Alison Marsden, Rachael (Pingel) Robison, Jacob Sondergaard, and Luis Vicente for numerous suggestions for correcting and improving the code. Also, thanks to Rakesh Kumar at MathWorks, Inc. for helpful discussions, and thanks to several other users, who have identified bugs and patiently waited for the fix.


Last modified May 28, 2010.