https://github.com/bbopt/nomad

NOMAD - A blackbox optimization software

https://github.com/bbopt/nomad

Science Score: 39.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (3.4%) to scientific vocabulary

Keywords

blackbox-optimization blackbox-optimizer derivative-free-optimization mathematical-algorithms optimization-algorithms simulation-based-optimization solver surrogate-based-optimization
Last synced: 5 months ago · JSON representation

Repository

NOMAD - A blackbox optimization software

Basic Info
Statistics
  • Stars: 142
  • Watchers: 6
  • Forks: 26
  • Open Issues: 21
  • Releases: 13
Topics
blackbox-optimization blackbox-optimizer derivative-free-optimization mathematical-algorithms optimization-algorithms simulation-based-optimization solver surrogate-based-optimization
Created about 6 years ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Roadmap

README.txt

###################################################################################
#                                                                                 #
#                                    README                                       #
#                                                                                 #
#---------------------------------------------------------------------------------#
#  NOMAD - Nonlinear Optimization by Mesh Adaptive Direct Search -                #
#                                                                                 #
#  NOMAD - Version 4 has been created and developed 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 .           #
#                                                                                 #
#  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 PAGES:

https://www.gerad.ca/nomad/
Https://github.com/bbopt/nomad


CONTACT:

nomad@gerad.ca


VERSION WARNING:

This repository is for NOMAD 4. The previous version, NOMAD 3, 
is not on GitHub. NOMAD 3 will be deprecated in the future.

NOMAD 4 is similar in usage to NOMAD 3. 

NOMAD 4 has a new software architecture, uses OpenMP to run 
evaluations in parallel, and also has some new functionalities.

HOW TO CITE:

Please cite NOMAD 4 with reference:
C. Audet, S. Le Digabel, V. Rochon Montplaisir, and C. Tribes. 
Algorithm 1027: NOMAD version 4: Nonlinear optimization with the 
MADS algorithm. ACM Transactions on Mathematical Software
Volume 48, Issue 3, Article No.: 35, pp 1–22 
https://doi.org/10.1145/3544489


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.

Before starting the procedure we recommend to set the environment variable 
$NOMAD_HOME with the path where NOMAD has been copied. For Linux and OSX,

export NOMAD_HOME=/home/myUserName/PathToNomad

For Windows, add an environment variable %NOMAD_HOME% containing the path.
The remaining text uses the $NOMAD_HOME environment variable.

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 deactivate compilation with OpenMP:
              cmake -DTEST_OPENMP=OFF -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  -DTEST_OPENMP=OFF -S . -B build/release

              ! Before proceeding, have a look into 
              $NOMAD_HOME/interfaces/Matlab_MEX/readme.txt

              ! Extra flags might be required to prevent CMake errors. 

              ! Compiler version and Matlab version need to be compatible;
              ! Check https://www.mathworks.com/support/requirements/supported-compilers.html
               
              ! The Matlab interface will not be built if OpenMP is enabled.

              ! An extra addpath Matlab command must be done to have access 
              to nomad Mex binaries:
              addpath(strcat(getenv('NOMAD_HOME'),'/build/release/bin'))

         To enable *Python* interface (PyNomad) building:
              cmake -DBUILD_INTERFACE_PYTHON=ON -S . -B build/release

              ! Before proceeding, have a look into 
              $NOMAD_HOME/interfaces/PyNomad/readme.txt

              ! More details are provided in $NOMAD_HOME/interfaces/PyNomad/readme.txt 
             
              ! Building requires to have Cython. Cython can be obtained with
              Anaconda distribution platform.
  
              ! On *Windows*, using Visual Studio, see the user guide or the readme
              to properly manage X86/X64 building of binaries. 
              
         To enable *Java* interface building (with Swig):
              cmake -DBUILD_INTERFACE_JAVA=ON -S . -B build/release

cmake --build build/release --config Release (for *Windows*)
or
cmake --build build/release (for *OSX* and *Linux*)
    ---> Build all the libraries and applications
    
         Option --parallel xx can be added for faster build.

         The option --config Release should be used on *Windows* 
         multi-configuration build environment (VisualStudio) to build only
         Release configuration. The default configuration is Debug.
         The same option should be used for *OSX* when using a *Xcode* project. 

cmake --install build/release --config Release (for *Windows*)
or
cmake --install build/release (for *OSX* and *Linux*)
    ---> Copy binaries and headers in build/release/[bin, include, lib]
         and in the examples/tests directories.

By default, the executable "nomad" will be installed into the directory:
build/release/bin/  (build/debug/bin/ when in debug mode). A symbolic link
is added in the bin directory (not functional for windows).

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 configured
         (Debug, RelWithDebugInfo, MinSizeRel, Release); flag 
         CMAKE_BUILD_TYPE is ignored.

cmake --build build/debug --config Debug (for *Windows*)
or
cmake --build build/debug (for *OSX* and *Linux*)   
    ---> Build the libraries and applications
         
         Option --parallel xx can be added for faster build.

cmake --install build/debug --config Debug (for *Windows*)
or
cmake --install build/debug  (for *OSX* and *Linux*)
    ---> 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 $NOMAD_HOME/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_HOME/build/release/bin/nomad param.txt

For convenience, the path to $NOMAD_HOME/build/release/bin directory 
can be added to the $PATH environment variable. For *Windows*, this is 
achieved by setting the parameters for environment variable %PATH% to
%NOMAD_HOME\build\release\bin\
 

Library Mode:
There are examples in library mode in $NOMAD_HOME/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

IMPORTANT: Library mode examples with *Windows* require to set 
the %PATH% environment variable (see above). Otherwise, the executables
cannot find NOMAD dlls.

Owner

  • Name: Blackbox Optimization
  • Login: bbopt
  • Kind: organization
  • Email: nomad@gerad.ca
  • Location: Montréal, Qc, Canada

GitHub organization of the research group from Polytechnique Montréal and GERAD for derivative-free and blackbox optimization

GitHub Events

Total
  • Create event: 9
  • Release event: 2
  • Issues event: 41
  • Watch event: 21
  • Delete event: 7
  • Member event: 1
  • Issue comment event: 35
  • Push event: 64
  • Pull request review event: 2
  • Pull request review comment event: 2
  • Pull request event: 23
  • Fork event: 2
Last Year
  • Create event: 9
  • Release event: 2
  • Issues event: 41
  • Watch event: 21
  • Delete event: 7
  • Member event: 1
  • Issue comment event: 35
  • Push event: 64
  • Pull request review event: 2
  • Pull request review comment event: 2
  • Pull request event: 23
  • Fork event: 2

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 24
  • Total pull requests: 16
  • Average time to close issues: about 1 year
  • Average time to close pull requests: about 1 month
  • Total issue authors: 15
  • Total pull request authors: 6
  • Average comments per issue: 2.42
  • Average comments per pull request: 0.13
  • Merged pull requests: 9
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 15
  • Pull requests: 14
  • Average time to close issues: 15 days
  • Average time to close pull requests: 22 minutes
  • Issue authors: 8
  • Pull request authors: 5
  • Average comments per issue: 1.73
  • Average comments per pull request: 0.0
  • Merged pull requests: 9
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • ctribes (10)
  • paulapatience (4)
  • jan-provaznik (3)
  • stumarcus314 (3)
  • Arrowstar (2)
  • paridhimnnit (1)
  • idwwwoqq808 (1)
  • sammalk (1)
  • pklimov (1)
  • JinsongLiu6 (1)
  • juavid (1)
  • IlyaYakovenko (1)
  • AmirShahbazi90 (1)
  • unlusoycan (1)
  • ZYY0844 (1)
Pull Request Authors
  • ctribes (14)
  • amontoison (3)
  • Lht97 (1)
  • jan-provaznik (1)
  • stumarcus314 (1)
  • salomonl (1)
  • shivani-2001-21 (1)
  • dependabot[bot] (1)
  • David-Linan (1)
Top Labels
Issue Labels
feature (2) fix (1)
Pull Request Labels
fix (6) release (2) feature (1) dependencies (1)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 1,194 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 3
  • Total maintainers: 1
pypi.org: pynomadbbo

Python interface to Nomad 4

  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1,194 Last month
Rankings
Dependent packages count: 10.0%
Average: 38.2%
Dependent repos count: 66.3%
Maintainers (1)
Last synced: 6 months ago

Dependencies

doc/user_guide/requirements.txt pypi
  • readthedocs-sphinx-search ==0.1.0rc3
  • sphinx ==3.2.1
  • sphinx_rtd_theme ==0.5.1
.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • actions/upload-artifact v3 composite
  • awvwgk/setup-fortran main composite