longbiscuit / nomad

NOMAD - A blackbox optimization software

Home Page:https://nomad-4-user-guide.readthedocs.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

###################################################################################
#                                                                                 #
#                                    README                                       #
#                                                                                 #
#---------------------------------------------------------------------------------#
#  NOMAD - Nonlinear Optimization by Mesh Adaptive Direct Search -                #
#                                                                                 #
#  NOMAD - Version 4 has been created by                                          #
#                 Viviane Rochon Montplaisir  - Polytechnique Montreal            #
#                 Christophe Tribes           - Polytechnique Montreal            #
#                                                                                 #
#  The copyright of NOMAD - version 4 is owned by                                 #
#                 Charles Audet               - Polytechnique Montreal            #
#                 Sebastien Le Digabel        - Polytechnique Montreal            #
#                 Viviane Rochon Montplaisir  - Polytechnique Montreal            #
#                 Christophe Tribes           - Polytechnique Montreal            #
#                                                                                 #
#  NOMAD 4 has been funded by Rio Tinto, Hydro-Québec, Huawei-Canada,             #
#  NSERC (Natural Sciences and Engineering Research Council of Canada),           #
#  InnovÉÉ (Innovation en Énergie Électrique) and IVADO (The Institute            #
#  for Data Valorization)                                                         #
#                                                                                 #
#  NOMAD v3 was created and developed by Charles Audet, Sebastien Le Digabel,     #
#  Christophe Tribes and Viviane Rochon Montplaisir and was funded by AFOSR       #
#  and Exxon Mobil.                                                               #
#                                                                                 #
#  NOMAD v1 and v2 were created and developed by Mark Abramson, Charles Audet,    #
#  Gilles Couture, and John E. Dennis Jr., and were funded by AFOSR and           #
#  Exxon Mobil.                                                                   #
#                                                                                 #
#  Contact information:                                                           #
#    Polytechnique Montreal - GERAD                                               #
#    C.P. 6079, Succ. Centre-ville, Montreal (Quebec) H3C 3A7 Canada              #
#    e-mail: nomad@gerad.ca                                                       #
#                                                                                 #
#  This program is free software: you can redistribute it and/or modify it        #
#  under the terms of the GNU Lesser General Public License as published by       #
#  the Free Software Foundation, either version 3 of the License, or (at your     #
#  option) any later version.                                                     #
#                                                                                 #
#  This program is distributed in the hope that it will be useful, but WITHOUT    #
#  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or          #
#  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License    #
#  for more details.                                                              #
#                                                                                 #
#  You should have received a copy of the GNU Lesser General Public License       #
#  along with this program. If not, see <http://www.gnu.org/licenses/>.           #
#                                                                                 #
#  You can find information on the NOMAD software at www.gerad.ca/nomad           #
#---------------------------------------------------------------------------------#

DESCRIPTION:

NOMAD is a C++ implementation of the Mesh Adaptive Direct Search (MADS)
algorithm, designed for constrained optimization of black-box functions.

The algorithms implemented are based on the book
"Derivative-Free and Blackbox Optimization", by Charles Audet and Warren Hare,
Springer 2017.


WEB PAGE:

https://www.gerad.ca/nomad/


CONTACT:

nomad@gerad.ca


VERSION WARNING:

This repository is for NOMAD 4. NOMAD 3 is not on GitHub.
NOMAD 4 is similar in usage to NOMAD 3. It does not have all
functionalities from NOMAD 3 yet. NOMAD 4 has a new software
architecture, uses OpenMP to run evaluations in parallel,
and also has some new functionalities.


COMPILATION (Release):

On Linux, Unix, Windows and Mac OS X, NOMAD can be compiled using CMake.
The minimum version of CMake is 3.14. Older versions will trigger
an error. A recent C++ compiler is also required.

The procedure is the following. On the command line in the
 $NOMAD_HOME directory:

cmake -S . -B build/release     ---> Create the CMake files and directories for
                                     building (-B) in build/release.
                                     The source (-S) CMakeLists.txt file is in
                                       the $NOMAD_HOME directory.
                                     To enable time stats build:
                                       cmake -DTIME_STATS=ON -S . -B build/release
                                     To enable C interface building:
                                       cmake -DBUILD_INTERFACE_C=ON -S . -B build/release
                                     To enable Matlab interface building:
                                       cmake -DBUILD_INTERFACE_MATLAB=ON -S . -B build/release
                                       ! Compiler version and Matlab version need to be compatible;
                                       ! Check https://www.mathworks.com/support/requirements/supported-compilers.html
                                     To enable Python interface (PyNomad) building:
                                       cmake -DBUILD_INTERFACE_PYTHON=ON -S . -B build/release
                                     To deactivate compilation with OpenMP:
                                       cmake -DTEST_OPENMP=OFF -S . -B build/release


cmake --build build/release     ---> Build all the libraries and applications
                                     Option --parallel xx can be added for faster
                                       build.
                                     Option --config Release should be used on
                                       *Windows* to compile Release configuration.
                                     The default configuration is Debug.

cmake --install build/release   ---> Copy binaries and headers in
                                       build/release/[bin, include, lib]
                                       and in the examples/tests directories.
                                     Option --config Release should be used on
                                       Windows to install Release configuration.
                                     The default configuration is Debug.

The executable "nomad" will installed into the directory:
build/release/bin/  (build/debug/bin/ when in debug mode).

It is possible to build only a single application in its working directory:
(with NOMAD_HOME environment variable properly set)

cd $NOMAD_HOME/examples/basic/library/example1
cmake --build $NOMAD_HOME/build/release --target example1_lib.exe
cmake --install $NOMAD_HOME/build/release


COMPILATION (Debug):

The procedure to build the debug version is the following.
On the command line in the $NOMAD_HOME directory:

cmake -S . -B build/debug -D CMAKE_BUILD_TYPE=Debug
                              ---> On Windows, all 4 configurations are always build
                                   Debug, RelWithDebugInfo, MinSizeRel, Release);
                                   flag CMAKE_BUILD_TYPE is ignored.

cmake --build build/debug     ---> Build the libraries and applications
                                     Option --parallel xx can be added for faster
                                     build.
                                   On Windows, the default configuration is Debug.

cmake --install build/debug   ---> Copy binaries and headers in
                                     build/debug/[bin, include, lib]
                                     and in the examples/tests directories


EXAMPLES OF OPTIMIZATION:

Batch Mode:
There are examples in batch mode in examples/basic/batch/.
In each directory, the blackbox functions (usually named bb) are compiled by default.
The problem may be resolved using NOMAD and the parameter file:
nomad param.txt

Library Mode:
There are examples in library mode in examples/basic/library/.
In each directory, the executable may be compiled when building
Nomad application. The problems may be resolved by execution,
for instance:
example_lib.exe

About

NOMAD - A blackbox optimization software

https://nomad-4-user-guide.readthedocs.io/

License:GNU Lesser General Public License v3.0


Languages

Language:C++ 96.4%Language:MATLAB 1.2%Language:TeX 0.9%Language:CMake 0.8%Language:Cython 0.4%Language:Python 0.3%Language:C 0.1%