Guide to build Matlab interface for Windows using MinGW
The following guide for building Matlab interface for Windows using MinGW has been provided by a user in GitHub Issue #128.
* Update MATLAB’s MinGW using this link to supported compilers. Follow on-screen instructions (for example, dragging and dropping in MATLAB’s command window) NB: Updates will be displayed in MATLAB’s Command window while installation is in progress.
* Confirm set up by typing mex -setup
in command window to verify installation following completion (Please check MATLAB and Simulink requirements on the same page using the link above as well)
* Majority of the other installation procedures would be done using “Command Prompt Window”. This can easily be accessed by typing “Command window” in the search tile on your Windows operating system.
* Download CMake. I recommend using the Windows x64 Installer option to enable you make your own installation settings. Make sure it is available for all users of the PC. Confirm that cmake is on the PC by typing cmake
on command prompt.
* Download your preferred NOMAD version and unzip the file. In the root folder, get a link which is done by easily double-clicking on the pane which bears the opened folder.
* The interface build is managed by CMake that can be run at NOMAD root. Use the command cd copiedAddress
command in command prompt to change the directory to the location you have copied above (replace copiedAddress with the link obtained)
* To build the MATLAB interface, force the use of the 64bit version of the compiler with the command:
cmake -DTEST_OPENMP=OFF -DBUILD_INTERFACE_MATLAB=ON -S . -B build/release -A x64
* Following the completion, use the command below that might take some minutes:
cmake --build build/release --config Release
* Then, finally, use the command:
cmake --install build/release
which must be run before using the Matlab nomadOpt function. You can expect to see the following during the build process:
* Make sure to add NOMAD subfolders on MATLAB before testing the installation. On MATLAB’s Home, use the “Set Path” menu to “Add with Subfolders” the whole NOMAD folder so that functions can easily be accessed
* Run examples provided in the installation folder to confirm that the functions can now be called easily from MATLAB’s command window. For example, trying to solve problem three (3) should give you something similar to:
Complete list of parameters
A set of parameters is available in the table below for fine tuning algorithmic settings. Additional information on each parameter is available by typing $NOMAD_HOME/bin/nomad -h PARAM_NAME
.
ADD_SEED_TO_FILE_NAMES |
bool |
advanced |
|
true |
ANISOTROPIC_MESH |
bool |
advanced |
|
true |
ANISOTROPY_FACTOR |
NOMAD::Double |
advanced |
|
0.1 |
BB_EXE |
std::string |
basic |
|
|
BB_INPUT_TYPE |
NOMAD::BBInputTypeList |
basic |
|
|
BB_MAX_BLOCK_SIZE |
size_t |
advanced |
|
1 |
BB_OUTPUT_TYPE |
NOMAD::BBOutputTypeList |
basic |
|
OBJ |
BB_REDIRECTION |
bool |
basic |
|
true |
CACHE_FILE |
std::string |
basic |
|
|
CACHE_SIZE_MAX |
size_t |
advanced |
|
INF |
CS_OPTIMIZATION |
bool |
basic |
|
false |
DIMENSION |
size_t |
basic |
|
0 |
DIRECTION_TYPE |
NOMAD::DirectionTypeList |
advanced |
|
ORTHO N+1 QUAD |
DIRECTION_TYPE_SECONDARY_POLL |
NOMAD::DirectionTypeList |
advanced |
|
DOUBLE |
DISCO_MADS_DETECTION_RADIUS |
NOMAD::Double |
advanced |
|
1.0 |
DISCO_MADS_EXCLUSION_RADIUS |
NOMAD::Double |
advanced |
|
1 |
DISCO_MADS_LIMIT_RATE |
NOMAD::Double |
advanced |
|
1 |
DISCO_MADS_REVEALING_POLL_NB_POINTS |
size_t |
advanced |
|
1 |
DISCO_MADS_REVEALING_POLL_RADIUS |
NOMAD::Double |
advanced |
|
2.02 |
DISPLAY_ALL_EVAL |
bool |
basic |
|
false |
DISPLAY_DEGREE |
int |
basic |
|
2 |
DISPLAY_FAILED |
bool |
advanced |
|
false |
DISPLAY_HEADER |
size_t |
advanced |
|
40 |
DISPLAY_INFEASIBLE |
bool |
advanced |
|
true |
DISPLAY_MAX_STEP_LEVEL |
size_t |
advanced |
|
20 |
DISPLAY_STATS |
NOMAD::ArrayOfString |
basic |
|
BBE OBJ |
DISPLAY_UNSUCCESSFUL |
bool |
advanced |
|
false |
DMULTIMADS_OPTIMIZATION |
bool |
advanced |
|
false |
EVAL_OPPORTUNISTIC |
bool |
advanced |
|
true |
EVAL_QUEUE_CLEAR |
bool |
advanced |
|
true |
EVAL_QUEUE_SORT |
NOMAD::EvalSortType |
advanced |
|
QUADRATIC_MODEL |
EVAL_STATS_FILE |
string |
basic |
|
|
EVAL_SURROGATE_COST |
size_t |
advanced |
|
INF |
EVAL_SURROGATE_OPTIMIZATION |
bool |
advanced |
|
false |
EVAL_USE_CACHE |
bool |
advanced |
|
true |
FIXED_VARIABLE |
NOMAD::Point |
advanced |
|
|
FRAME_CENTER_USE_CACHE |
bool |
advanced |
|
false |
GRANULARITY |
NOMAD::ArrayOfDouble |
advanced |
|
|
HISTORY_FILE |
std::string |
basic |
|
|
HOT_RESTART_FILE |
std::string |
advanced |
|
hotrestart.txt |
HOT_RESTART_ON_USER_INTERRUPT |
bool |
advanced |
|
false |
HOT_RESTART_READ_FILES |
bool |
advanced |
|
false |
HOT_RESTART_WRITE_FILES |
bool |
advanced |
|
false |
H_MAX_0 |
NOMAD::Double |
advanced |
|
NOMAD::INF |
INITIAL_FRAME_SIZE |
NOMAD::ArrayOfDouble |
advanced |
|
|
INITIAL_MESH_SIZE |
NOMAD::ArrayOfDouble |
advanced |
|
|
LH_EVAL |
size_t |
basic |
|
0 |
LH_SEARCH |
NOMAD::LHSearchType |
basic |
|
|
LOWER_BOUND |
NOMAD::ArrayOfDouble |
basic |
|
|
MAX_BB_EVAL |
size_t |
basic |
|
INF |
MAX_EVAL |
size_t |
advanced |
|
INF |
MAX_ITERATIONS |
size_t |
advanced |
|
INF |
MAX_ITERATION_PER_MEGAITERATION |
size_t |
advanced |
|
INF |
MAX_SURROGATE_EVAL_OPTIMIZATION |
size_t |
basic |
|
INF |
MAX_TIME |
size_t |
basic |
|
INF |
MEGA_SEARCH_POLL |
bool |
advanced |
|
false |
MIN_FRAME_SIZE |
NOMAD::ArrayOfDouble |
advanced |
|
|
MIN_MESH_SIZE |
NOMAD::ArrayOfDouble |
advanced |
|
|
NB_THREADS_OPENMP |
int |
advanced |
|
1 |
NM_DELTA_E |
NOMAD::Double |
advanced |
|
2 |
NM_DELTA_IC |
NOMAD::Double |
advanced |
|
-0.5 |
NM_DELTA_OC |
NOMAD::Double |
advanced |
|
0.5 |
NM_GAMMA |
NOMAD::Double |
advanced |
|
0.5 |
NM_OPTIMIZATION |
bool |
advanced |
|
false |
NM_SEARCH |
bool |
advanced |
|
true |
NM_SEARCH_MAX_TRIAL_PTS_NFACTOR |
size_t |
advanced |
|
80 |
NM_SEARCH_RANK_EPS |
NOMAD::Double |
advanced |
|
0.01 |
NM_SEARCH_STOP_ON_SUCCESS |
bool |
advanced |
|
false |
NM_SIMPLEX_INCLUDE_FACTOR |
size_t |
advanced |
|
8 |
NM_SIMPLEX_INCLUDE_LENGTH |
NOMAD::Double |
advanced |
|
INF |
ORTHO_MESH_REFINE_FREQ |
size_t |
advanced |
|
1 |
PSD_MADS_ITER_OPPORTUNISTIC |
bool |
advanced |
|
true |
PSD_MADS_NB_SUBPROBLEM |
size_t |
advanced |
|
INF |
PSD_MADS_NB_VAR_IN_SUBPROBLEM |
size_t |
advanced |
|
2 |
PSD_MADS_OPTIMIZATION |
bool |
advanced |
|
0 |
PSD_MADS_ORIGINAL |
bool |
advanced |
|
false |
PSD_MADS_SUBPROBLEM_MAX_BB_EVAL |
size_t |
advanced |
|
INF |
PSD_MADS_SUBPROBLEM_PERCENT_COVERAGE |
NOMAD::Double |
advanced |
|
70 |
QP_ABSOLUTETOL |
NOMAD::Double |
advanced |
|
1e-3 |
QP_AUGLAG_ETA0 |
NOMAD::Double |
advanced |
|
1.0 |
QP_AUGLAG_MAXITERINNER |
size_t |
advanced |
|
10 |
QP_AUGLAG_MAXSUCCESSIVFAIL |
size_t |
advanced |
|
3 |
QP_AUGLAG_MU0 |
NOMAD::Double |
advanced |
|
0.5 |
QP_AUGLAG_MUDECREASE |
NOMAD::Double |
advanced |
|
2 |
QP_AUGLAG_OMEGA0 |
NOMAD::Double |
advanced |
|
1.0 |
QP_AUGLAG_SUCCESSRATIO |
NOMAD::Double |
advanced |
|
0.99 |
QP_AUGLAG_TOLDISTDXINNER |
NOMAD::Double |
advanced |
|
1e-15 |
QP_MAXITER |
size_t |
advanced |
|
10 |
QP_OPTIMIZATION |
bool |
advanced |
|
false |
QP_RELATIVETOL |
NOMAD::Double |
advanced |
|
1e-3 |
QP_SEARCH |
bool |
advanced |
|
false |
QP_SELECTALGO |
size_t |
advanced |
|
0 |
QP_TOLCOND |
NOMAD::Double |
advanced |
|
1e-15 |
QP_TOLDISTDX |
NOMAD::Double |
advanced |
|
-1.0 |
QP_TOLMESH |
NOMAD::Double |
advanced |
|
1.0 |
QP_VERBOSE |
bool |
advanced |
|
false |
QP_VERBOSEFULL |
bool |
advanced |
|
false |
QUAD_MODEL_AND_LH_SEARCH |
bool |
basic |
|
false |
QUAD_MODEL_DISPLAY |
std::string |
advanced |
|
|
QUAD_MODEL_MAX_BLOCK_SIZE |
size_t |
advanced |
|
INF |
QUAD_MODEL_MAX_EVAL |
size_t |
advanced |
|
2000 |
QUAD_MODEL_OPTIMIZATION |
bool |
advanced |
|
false |
QUAD_MODEL_SEARCH |
bool |
basic |
|
true |
QUAD_MODEL_SLD_SEARCH |
bool |
basic |
|
false |
RANDOM_ALGO_DUMMY_FACTOR |
size_t |
advanced |
|
1 |
RANDOM_ALGO_OPTIMIZATION |
bool |
advanced |
|
false |
RANDOM_ALGO_SEARCH |
bool |
advanced |
|
false |
RANDOM_SIMPLE_SEARCH |
bool |
advanced |
|
false |
REJECT_UNKNOWN_PARAMETERS |
bool |
advanced |
|
true |
RHO |
NOMAD::Double |
advanced |
|
0.1 |
SEARCH_METHOD_MESH_PROJECTION |
bool |
advanced |
|
true |
SEED |
int |
advanced |
|
0 |
SET_FILE |
bool |
advanced |
|
false |
SET_FILE_NAME |
string |
advanced |
|
|
SGTELIB_MAX_POINTS_FOR_MODEL |
size_t |
advanced |
|
500 |
SGTELIB_MIN_POINTS_FOR_MODEL |
size_t |
advanced |
|
1 |
SGTELIB_MODEL_DEFINITION |
NOMAD::ArrayOfString |
advanced |
|
|
SGTELIB_MODEL_DISPLAY |
std::string |
advanced |
|
|
SGTELIB_MODEL_DIVERSIFICATION |
NOMAD::Double |
advanced |
|
0.01 |
SGTELIB_MODEL_EVAL |
bool |
advanced |
|
0 |
SGTELIB_MODEL_FEASIBILITY |
NOMAD::SgtelibModelFeasibilityType |
advanced |
|
C |
SGTELIB_MODEL_FORMULATION |
NOMAD::SgtelibModelFormulationType |
advanced |
|
FS |
SGTELIB_MODEL_MAX_BLOCK_SIZE |
size_t |
advanced |
|
INF |
SGTELIB_MODEL_MAX_EVAL |
size_t |
advanced |
|
2000 |
SGTELIB_MODEL_SEARCH |
bool |
basic |
|
false |
SGTELIB_MODEL_SEARCH_CANDIDATES_NB |
int |
advanced |
|
-1 |
SGTELIB_MODEL_SEARCH_EXCLUSION_AREA |
NOMAD::Double |
advanced |
|
0.0 |
SGTELIB_MODEL_SEARCH_FILTER |
std::string |
advanced |
|
2345 |
SIMPLE_LINE_SEARCH |
bool |
basic |
|
false |
SOLUTION_FILE |
std::string |
basic |
|
|
SOLUTION_FILE_FINAL |
bool |
basic |
|
false |
SPECULATIVE_SEARCH |
bool |
basic |
|
true |
SPECULATIVE_SEARCH_BASE_FACTOR |
NOMAD::Double |
advanced |
|
4.0 |
SPECULATIVE_SEARCH_MAX |
size_t |
advanced |
|
1 |
SSD_MADS_ITER_OPPORTUNISTIC |
bool |
advanced |
|
true |
SSD_MADS_NB_SUBPROBLEM |
size_t |
advanced |
|
INF |
SSD_MADS_NB_VAR_IN_SUBPROBLEM |
size_t |
advanced |
|
2 |
SSD_MADS_OPTIMIZATION |
bool |
advanced |
|
0 |
SSD_MADS_RESET_VAR_PICKUP_SUBPROBLEM |
bool |
advanced |
|
false |
SSD_MADS_SUBPROBLEM_MAX_BB_EVAL |
size_t |
advanced |
|
INF |
STATS_FILE |
NOMAD::ArrayOfString |
basic |
|
|
STOP_IF_FEASIBLE |
bool |
advanced |
|
false |
STOP_IF_PHASE_ONE_SOLUTION |
bool |
advanced |
|
false |
SURROGATE_EXE |
std::string |
advanced |
|
|
SURROGATE_MAX_BLOCK_SIZE |
size_t |
advanced |
|
1 |
SYSTEM_FILE_NAME |
string |
advanced |
|
|
TMP_DIR |
std::string |
advanced |
|
|
TRIAL_POINT_MAX_ADD_UP |
size_t |
advanced |
|
0 |
UPPER_BOUND |
NOMAD::ArrayOfDouble |
basic |
|
|
USER_CALLS_ENABLED |
bool |
advanced |
|
true |
USE_CACHE_FILE_FOR_RERUN |
bool |
advanced |
|
false |
USE_IBEX |
bool |
advanced |
|
false |
VARIABLE_GROUP |
NOMAD::ListOfVariableGroup |
advanced |
|
|
VNSMART_MADS_SEARCH |
bool |
advanced |
|
false |
VNSMART_MADS_SEARCH_THRESHOLD |
int |
advanced |
|
3 |
VNS_MADS_OPTIMIZATION |
bool |
advanced |
|
false |
VNS_MADS_SEARCH |
bool |
advanced |
|
false |
VNS_MADS_SEARCH_MAX_TRIAL_PTS_NFACTOR |
size_t |
advanced |
|
100 |
VNS_MADS_SEARCH_TRIGGER |
NOMAD::Double |
advanced |
|
0.75 |
VNS_MADS_SEARCH_WITH_SURROGATE |
bool |
advanced |
|
false |
X0 |
NOMAD::ArrayOfPoint |
basic |
|