set(MAiNGO_build_standalone FALSE CACHE BOOL "Build MAiNGO as standalone solver with problem.h.")
set(MAiNGO_build_parser TRUE CACHE BOOL "Build MAiNGO executable with parser (not compatible with Intel compiler due to missing C++17 features).")
set(MAiNGO_build_python_interface FALSE CACHE BOOL "Build a Python extension module for calling MAiNGO from Python.")
set(MAiNGO_build_test FALSE CACHE BOOL "Build MAiNGO test cases.")
set(MAiNGO_use_melon TRUE CACHE BOOL "Build MAiNGO executable with the MeLOn toolbox (not compatible with Intel compiler due to missing C++17 features).")
message(STATUS "Not using CPLEX and KNITRO even if they are available. If you still want to use them, you need to explicitly enable the corresponding CMake options.")
set(MAiNGO_use_cplex FALSE CACHE BOOL "Use CPLEX if it is available on the system." FORCE)
set(MAiNGO_use_knitro FALSE CACHE BOOL "Use KNITRO if it is available on the system." FORCE)
# Disable stuff that is not compatible with the Python package to be installed
# <img src="doc/images/MAiNGO.png" alt="MAiNGO" width="300"/> <br> McCormick-based Algorithm for mixed-integer Nonlinear Global Optimization
Thank you for using the beta version of MAiNGO! If you have any issues, concerns, or comments, please communicate them using the ["Issues"
functionality in GitLab](https://git.rwth-aachen.de/avt.svt/public/maingo/-/issues) or send an e-mail to [MAiNGO@avt.rwth-aachen.de](mailto:MAiNGO@avt.rwth-aachen.de).
functionality in GitLab](https://git.rwth-aachen.de/avt-svt/public/maingo/-/issues) or send an e-mail to [MAiNGO@avt.rwth-aachen.de](mailto:MAiNGO@avt.rwth-aachen.de).
## About
General information about the capabilities and main algorithmic features of MAiNGO can be found in our technical report available on [our website](http://permalink.avt.rwth-aachen.de/?id=729717).
For a detailed installation guide, description of the algorithm, and a complete list of available options, please clone the repository first and then refer to the documentation found at `doc/html/index.html` in the MAiNGO repository.
For a detailed installation guide, description of the algorithm, and a complete list of available options, please refer to the [MAiNGO documentation](https://avt-svt.pages.rwth-aachen.de/public/maingo).
## Obtaining MAiNGO
The MAiNGO git repository contains submodules for all dependencies. Hence, to obtain MAiNGO, you need to use the following commands (on Windows, you might need to get Git Bash first).
To acess the full functionality of MAiNGO including the C++ API, text-based parser, MPI parallelization and all supported subsolvers, you should obtain the code from this git repository. The MAiNGO repository uses submodules for all dependencies. Hence, to obtain MAiNGO, you need to run the following commands (on Windows, you might need to get Git Bash first).
If you want to switch from between HTTPS (default) and SSH protocols for obtaining the submodules, simply execute the shell scripts (only for Linux or MacOS) `switchToSsh` or `switchToHttps`**after** executing the `git submodule init` command.
For more information on SSH keys, please refer to the git documentation on SSH authentication which can be found under `Help -> SSH authentication` in your GitLab.
If you are having https authentication problems on Windows, please make sure that your credential manager has stored the correct settings. The Windows credential manager can be found at
`Control Panel -> User Accounts -> Manage your credentials`.
If you want to check if the above has worked, you can check that each subfolder in the `dep` folder is non-empty.
A note for users more familiar with git: `git submodule update` is executed without the `--recursive` option.
This avoids instantiating any indirect dependencies; in the repository design of MAiNGO, all dependencies (including indirect ones) are present in `dep`. Additionally, it is executed using only one process `-j 1` to avoid input failures.
This avoids instantiating any indirect dependencies; in the repository design of MAiNGO, all dependencies (including indirect ones) are present in `dep`.
Additionally, it is executed using only one process `-j 1` to avoid input failures.
## Updating MAiNGO
If you want to update to the latest MAiNGO version, use the following git commands
If you have cloned the MAiNGO repository before and want to update to the latest version, use the following git commands
$ git pull
$ git submodule update -j 1
If you changed any of the source files in MAiNGO or any dependency found in the <tt>dep/</tt> folder, you should restore the original state of MAiNGO and the dependencies by running <tt>git stash</tt> in the corresponding repository.
Then, update the MAiNGO repository with the <tt>git pull</tt> and <tt>git submodule update</tt> commands. Finally, you can retrieve your changes via <tt>git stash pop</tt>.
### Via PyPI
If you plan to use MAiNGO via its Python interface, you can also obtain the [<tt>maingopy</tt> package from PyPI](https://pypi.org/project/maingopy) via
$ pip install maingopy
This package is available as source as well as binary distribution containing a precompiled version of MAiNGO for multiple Python versions under Windows, Linux, and MacOS.
It also includes the <tt>melonpy</tt> module, the Python interface of [MeLOn](https://git.rwth-aachen.de/avt-svt/public/melon), which contains various machine learning models for use in optimization problems to be solved with MAiNGO.
Note that the following features are *not* available in the maingopy package available via PyPI:
- the MPI parallelization of MAiNGO
- the C++ API and text-based model parser of MAiNGO
- the subsolvers CPLEX and KNITRO
If you want to use these features, you should obtain the MAiNGO code via git as described above.
This also enables you to build a version of the <tt>maingopy</tt> package that can use CPLEX and KNITRO if you have them installed on your system.
The MPI parallelization is currently not available via the Python interface of MAiNGO even when building it from source.
## First steps
If you are new to MAiNGO, we recommend looking at the following documents in this order after having cloned the repository:
*`doc/html/index.html`: This is the manual for MAiNGO. It includes information on how to install and execute MAiNGO.
If you are new to MAiNGO, we recommend looking at the following to get started:
*The [documentation of MAiNGO](https://avt-svt.pages.rwth-aachen.de/public/maingo) contains more detailed information on how to obtain, build and execute MAiNGO.
*`examples/01_BasicExample`: This folder contains the most basic example for solving problems with MAiNGO.
- MAiNGO is now also available from PyPI for use via Python
- New intrinsic functions: fstep & bstep, i.e. unit steps from 0 to 1 (or vice version) at x=0
- Bugfixes:
- Fixed bug that caused instant crashes of the MPI parallelized version on some systems (see info on MUMPS below)
- Minor fixes to ensure compatibility with GCC 11
- Several fixes in MAiNGO_Reader_Writer utility to avoid compile errors with different versions of GCC and MSVC 2019
- Misc:
- Now using GitLab CI/CD for automated testing
- The documentation of MAiNGO is now hosted via GitLab Pages (see links in Readme.md)
- Now giving more information on third-party software (local / linear solvers etc.) used
- Now printing more comprehensive information about the initial point (constraint residuals etc.) when using BAB_verbosity = VERB_ALL
- Third-party libraries:
- Upgraded to MUMPS 5.4.0; also renamed all routines called MPI_* to FPI_* to avoid issues with the fake MPI implementation of MUMPS
when using MAiNGO with actual MPI parallelization
Release version 0.4.0 (March 4th, 2021):
- New features:
- MAiNGO now has a Python API. It consists of Python bindings for the C++ API and thus works very similarly to the latter
...
...
@@ -11,7 +28,7 @@ Release version 0.4.0 (March 4th, 2021):
- Renamed a few options as well as methods of the MAiNGO class to be more descriptive
- Fixed random seeds for CPLEX and CLP
- Improved diagnostic output for problems without objective or with constant objective
- Thirdparty libraries:
- Third-party libraries:
- Included pybind11 for the Python API
- New version of babbase containing minor bugfixes, and now also allowing binary variables without explicit bounds
- New version of mcpp containing bugfixes in relaxations and constraint propagation
...
...
@@ -39,7 +56,7 @@ Release version 0.3.0 (June 12th, 2020):
- An example for using MAiNGO within Bayesian optimization (i.e., maximizing/minimizing typical acquisition functions for Bayesian optimization that use Gaussian processes)
- The documentation for building MAiNGO was improved
- A section on the output written by MAiNGO was added