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 or send an e-mail to MAiNGO@avt.rwth-aachen.de.
About
MAiNGO is a deterministic global optimization solver for nonconvex mixed-integer nonlinear programs (MINLPs). It is jointly being developed at RWTH Aachen University and KU Leuven. General information about the capabilities and main algorithmic features of MAiNGO can be found in our technical report available here. For a detailed installation guide, description of the algorithm, and a complete list of available options, please refer to the MAiNGO documentation.
Obtaining MAiNGO
Via Git
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).
$ git clone https://git.rwth-aachen.de/avt-svt/public/maingo.git <directory>
$ cd <directory>
$ git submodule init
$ git submodule update -j 1
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.
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
Via PyPI
If you plan to use MAiNGO via its Python interface, you can also obtain the maingopy package from PyPI 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 melonpy module, the Python interface of 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 maingopy package that can use CPLEX and KNITRO if you have them installed on your system.
First steps
If you are new to MAiNGO, we recommend looking at the following to get started:
- The documentation of 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.
Example applications
MAiNGO has been successfully applied to flowsheet-optimization problems (Bongartz & Mitsos 2017a, Bongartz & Mitsos 2019, Bongartz et al. 2020), optimization problems with artificial neural networks (Schweidtmann & Mitsos 2018), hybrid mechanistic models with applications in energy processes (Schweidtmann et al. 2019a, Schweidtmann et al. 2019b, Huster et al. 2019a, Huster et al. 2019b), hybrid mechanistic models with applications in membrane development (Rall et al. 2019, Rall et al. 2020), Rall et al. 2020b, and nonlinear scheduling with artificial neural networks embedded (Schäfer et al. 2020).
MAiNGO works particularly well for problems which can be formulated in a reduced-space manner (Bongartz & Mitsos 2017a).
MAiNGO holds specialized relaxations for functions found in the field of process engineering (Najman & Mitsos 2016, Najman et al. 2019, Bongartz et al. 2020).
All implemented specialized intrinsic functions can be found at doc/implementedFunctions/Implemented_functions.pdf
.
How to cite
If you use MAiNGO, please cite the latest MAiNGO report:
Bongartz, D., Najman, J., Sass, S., & Mitsos, A. (2018). MAiNGO - McCormick-based Algorithm for mixed-integer Nonlinear Global Optimization. Technical Report, Process Systems Engineering (AVT.SVT), RWTH Aachen University. http://permalink.avt.rwth-aachen.de/?id=729717.
References
Bongartz, D., Najman, J., Sass, S., & Mitsos, A. (2018). MAiNGO - McCormick-based Algorithm for mixed-integer Nonlinear Global Optimization. Technical Report, Process Systems Engineering (AVT.SVT), RWTH Aachen University.
Bongartz, D., & Mitsos, A. (2017a). Deterministic global optimization of process flowsheets in a reduced space using McCormick relaxations. Journal of Global Optimization, 69(4), 761-796.
Bongartz, D., & Mitsos, A. (2017b). Infeasible path global flowsheet optimization using McCormick relaxations. In Computer Aided Chemical Engineering (Vol. 40, pp. 631-636). Elsevier.
Bongartz, D., & Mitsos, A. (2019). Deterministic global flowsheet optimization: Between equation-oriented and sequential-modular methods. AIChE Journal, 65(3), 1022-1034.
Bongartz, D., Najman, J., & Mitsos, A. (2020). Deterministic global optimization of steam cycles using the IAPWS-IF97 model. Optimization & Engineering, in press.
Huster, W. R., Schweidtmann, A. M., & Mitsos, A. (2019a). Impact of accurate working fluid properties on the globally optimal design of an organic Rankine cycle. In Computer Aided Chemical Engineering (Vol. 47, pp. 427-432). Elsevier.
Huster, W. R., Schweidtmann, A. M., & Mitsos, A. (2019b). Working fluid selection for organic rankine cycles via deterministic global optimization of design and operation. Optimization and Engineering, 1-20.
Najman, J., & Mitsos, A. (2016). Convergence order of McCormick relaxations of LMTD function in heat exchanger networks. In Computer Aided Chemical Engineering (Vol. 38, pp. 1605-1610). Elsevier.
Najman, J., Bongartz, D., & Mitsos, A. (2019). Relaxations of thermodynamic property and costing models in process engineering. Computers & Chemical Engineering, 130, 106571.
Rall, D., Menne, D., Schweidtmann, A. M., Kamp, J., von Kolzenberg, L., Mitsos, A., & Wessling, M. (2019). Rational design of ion separation membranes. Journal of membrane science, 569, 209-219.
Rall, D., Schweidtmann, A. M., Aumeier, B. M., Kamp, J., Karwe, J., Ostendorf, K., Mitsos, A., & Wessling, M. (2020). Simultaneous rational design of ion separation membranes and processes. Journal of Membrane Science, 117860.
Rall, D., Schweidtmann, A. M., Kruse, M.,Evdochenko, E., Mitsos, A., & Wessling, M. (2020). Multi-scale membrane process optimization with high-fidelity ion transport models through machine learning. Journal of Membrane Science, 118208.
Schäfer, P., Schweidtmann, A. M., Lenz, P. H., Markgraf, H. M., & Mitsos, A. (2020). Wavelet-based grid-adaptation for nonlinear scheduling subject to time-variable electricity prices. Computers & Chemical Engineering, 132, 106598.
Schweidtmann, A. M., & Mitsos, A. (2018) Deterministic Global Optimization with Artificial Neural Networks Embedded. Journal of Optimization Theory and Applications, 180, 925–948.
Schweidtmann, A. M., Huster, W. R., Lüthje, J. T., & Mitsos, A. (2019a). Deterministic global process optimization: Accurate (single-species) properties via artificial neural networks. Computers & Chemical Engineering, 121, 67-74.
Schweidtmann, A. M., Bongartz, D., Huster, W. R., & Mitsos, A. (2019b). Deterministic Global Process Optimization: Flash Calculations via Artificial Neural Networks. In Computer Aided Chemical Engineering (Vol. 46, pp. 937-942). Elsevier.