Commit 13bbd7a7 authored by Dominik Bongartz's avatar Dominik Bongartz
Browse files

Release version v0.4.0

parent 87a80da9
build/
\ No newline at end of file
build/
Build/
_skbuild/
*.egg-info/
dist/
......@@ -31,18 +31,21 @@
[submodule "dep/clp"]
path = dep/clp
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/clp.git
[submodule "dep/babbase"]
path = dep/babbase
url = https://git.rwth-aachen.de/avt.svt/public/babbase.git
[submodule "dep/mcpp"]
path = dep/mcpp
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/mcpp.git
[submodule "dep/libale"]
path = dep/libale
url = https://git.rwth-aachen.de/avt.svt/public/libale.git
[submodule "dep/json"]
path = dep/json
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/json.git
[submodule "dep/pybind11"]
path = dep/pybind11
url = https://github.com/pybind/pybind11
[submodule "dep/babbase"]
path = dep/babbase
url = https://git.rwth-aachen.de/avt.svt/public/babbase.git
[submodule "dep/melon"]
path = dep/melon
url = https://git.rwth-aachen.de/avt.svt/public/melon.git
[submodule "dep/libale"]
path = dep/libale
url = https://git.rwth-aachen.de/avt.svt/public/libale.git
[submodule "dep/mcpp"]
path = dep/mcpp
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/mcpp.git
This diff is collapsed.
# ![MAiNGO](doc/images/MAiNGO.png) <br> McCormick-based Algorithm for mixed-integer Nonlinear Global Optimization
Thank you for using the beta version 0.3.0 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.git) or send an e-mail to MAiNGO@avt.rwth-aachen.de.
## How to cite
Please cite the latest [MAiNGO report](http://permalink.avt.rwth-aachen.de/?id=729717):<br>
Bongartz, D., Najman, J., Sass, S., & Mitsos, A. (2018). MAiNGO - **M**cCormick-based **A**lgorithm for mixed-**i**nteger **N**onlinear **G**lobal **O**ptimization. Technical Report, Process Systems Engineering (AVT.SVT), RWTH Aachen University.
# <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).
## About
......@@ -23,20 +17,12 @@ The MAiNGO git repository contains submodules for all dependencies. Hence, to ob
$ git submodule init
$ git submodule update -j 1
Make sure that you navigate to the git MAiNGO directory before executing the `init` and `update` commands.
For Windows users, we recommend to use https and for Linux OS users, we recommend SSH to avoid multiple username and password inputs.
If you want to switch from https to SSH or do the reverse, simply execute the shell script `switchToSsh` or `switchToHttps` **after** executing the `git submodule init` command.
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.
In case that the above DID NOT work properly, use the following commands.
$ git submodule foreach git checkout master
$ git submodule foreach git pull
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.
......@@ -45,13 +31,10 @@ This avoids instantiating any indirect dependencies; in the repository design of
If you want to update to the latest MAiNGO version, use the following git commands
$ git pull
$ git submodule update
If you changed any of the source files in MAiNGO or any dependency, found in the `dep` folder, you should restore the original state of MAiNGO by first saving a copy of the files you changed (or use `git stash`) and then executing
$ git checkout .
$ git submodule update -j 1
in the MAiNGO repository and/or in any dependency repositories you edited. Then, update the MAiNGO repository with the `pull` and `submodule update` commands. Finally, you can replace the files of interest by your saved copies (or retrieve them via `git stash pop`).
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>.
## First steps
......@@ -74,13 +57,19 @@ MAiNGO works particularly well for problems which can be formulated in a reduced
MAiNGO holds specialized relaxations for functions found in the field of process engineering ([Najman & Mitsos 2016](https://www.sciencedirect.com/science/article/pii/B9780444634283502721), [Najman et al. 2019](https://www.sciencedirect.com/science/article/abs/pii/S0098135419309494), [Bongartz et al. 2020](https://link.springer.com/article/10.1007/s11081-020-09502-1)).
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:<br>
Bongartz, D., Najman, J., Sass, S., & Mitsos, A. (2018). MAiNGO - **M**cCormick-based **A**lgorithm for mixed-**i**nteger **N**onlinear **G**lobal **O**ptimization. Technical Report, Process Systems Engineering (AVT.SVT), RWTH Aachen University. [http://permalink.avt.rwth-aachen.de/?id=729717](http://permalink.avt.rwth-aachen.de/?id=729717).
## References
Bongartz, D., Najman, J., Sass, S., & Mitsos, A. (2018). [MAiNGO - **M**cCormick-based **A**lgorithm for mixed-**i**nteger **N**onlinear **G**lobal **O**ptimization](http://permalink.avt.rwth-aachen.de/?id=729717). *Technical Report*, Process Systems Engineering (AVT.SVT), RWTH Aachen University.<br><br>
Bongartz, D., & Mitsos, A. (2017a). [Deterministic global optimization of process flowsheets in a reduced space using McCormick relaxations](https://link.springer.com/article/10.1007/s10898-017-0547-4). *Journal of Global Optimization*, 69(4), 761-796.<br><br>
Bongartz, D., & Mitsos, A. (2017b). [Infeasible path global flowsheet optimization using McCormick relaxations](https://www.sciencedirect.com/science/article/pii/B9780444639653501070). In *Computer Aided Chemical Engineering* (Vol. 40, pp. 631-636). Elsevier.<br><br>
Bongartz, D., & Mitsos, A. (2019). [Deterministic global flowsheet optimization: Between equationoriented and sequentialmodular methods](https://aiche.onlinelibrary.wiley.com/doi/full/10.1002/aic.16507). *AIChE Journal*, 65(3), 1022-1034.<br><br>
Bongartz, D., Najman, J., & Mitsos, A. (2020). [Deterministic global optimization of steam cycles using the IAPWSIF97 model](https://link.springer.com/article/10.1007/s11081-020-09502-1). *Optimization & Engineering*, in press.<br><br>
Bongartz, D., & Mitsos, A. (2019). [Deterministic global flowsheet optimization: Between equation-oriented and sequential-modular methods](https://aiche.onlinelibrary.wiley.com/doi/full/10.1002/aic.16507). *AIChE Journal*, 65(3), 1022-1034.<br><br>
Bongartz, D., Najman, J., & Mitsos, A. (2020). [Deterministic global optimization of steam cycles using the IAPWS-IF97 model](https://link.springer.com/article/10.1007/s11081-020-09502-1). *Optimization & Engineering*, in press.<br><br>
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](https://www.sciencedirect.com/science/article/pii/B9780128185971500680). In *Computer Aided Chemical Engineering* (Vol. 47, pp. 427-432). Elsevier.<br><br>
Huster, W. R., Schweidtmann, A. M., & Mitsos, A. (2019b). [Working fluid selection for organic rankine cycles via deterministic global optimization of design and operation](https://link.springer.com/article/10.1007/s11081-019-09454-1). *Optimization and Engineering*, 1-20.<br><br>
Najman, J., & Mitsos, A. (2016). [Convergence order of McCormick relaxations of LMTD function in heat exchanger networks](https://www.sciencedirect.com/science/article/pii/B9780444634283502721). In *Computer Aided Chemical Engineering* (Vol. 38, pp. 1605-1610). Elsevier.<br><br>
......
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
- Examples & documentation:
- Added more information on output (screen & files) and algorithm of MAiNGO
- Added information on Python interface
- Added an example for the Python API to examples/01_BasicExample
- Misc:
- Various bugfixes (e.g., avoiding potential crashes of the B&B or in the parallel version etc.)
- Improved error reporting
- 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
- 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
Release version 0.3.0 (June 12th, 2020):
- New features:
- MAiNGO now uses the toolkit MeLOn - Machine Learning Models for Optimization
......
set(MAiNGO_SOURCE_DIR ${PROJECT_SOURCE_DIR}/src)
set(MAiNGO_SRC
${MAiNGO_SOURCE_DIR}/bab.cpp
${MAiNGO_SOURCE_DIR}/getTime.cpp
${MAiNGO_SOURCE_DIR}/ipoptProblem.cpp
${MAiNGO_SOURCE_DIR}/knitroProblem.cpp
${MAiNGO_SOURCE_DIR}/lbp.cpp
${MAiNGO_SOURCE_DIR}/lbpFactory.cpp
${MAiNGO_SOURCE_DIR}/lbpCplex.cpp
${MAiNGO_SOURCE_DIR}/lbpClp.cpp
${MAiNGO_SOURCE_DIR}/lbpDagObj.cpp
${MAiNGO_SOURCE_DIR}/lbpInterval.cpp
${MAiNGO_SOURCE_DIR}/lbpLinearizationStrats.cpp
${MAiNGO_SOURCE_DIR}/logger.cpp
${MAiNGO_SOURCE_DIR}/MAiNGO.cpp
${MAiNGO_SOURCE_DIR}/MAiNGOevaluationFunctions.cpp
${MAiNGO_SOURCE_DIR}/MAiNGOgetterFunctions.cpp
${MAiNGO_SOURCE_DIR}/MAiNGOmodelEpsCon.cpp
${MAiNGO_SOURCE_DIR}/MAiNGOprintingFunctions.cpp
${MAiNGO_SOURCE_DIR}/MAiNGOreadSettings.cpp
${MAiNGO_SOURCE_DIR}/MAiNGOsetOption.cpp
${MAiNGO_SOURCE_DIR}/MAiNGOtoOtherLanguage.cpp
${MAiNGO_SOURCE_DIR}/MAiNGOwritingFunctions.cpp
${MAiNGO_SOURCE_DIR}/ubp.cpp
${MAiNGO_SOURCE_DIR}/ubpClp.cpp
${MAiNGO_SOURCE_DIR}/ubpCplex.cpp
${MAiNGO_SOURCE_DIR}/ubpFactory.cpp
${MAiNGO_SOURCE_DIR}/ubpIpopt.cpp
${MAiNGO_SOURCE_DIR}/ubpKnitro.cpp
${MAiNGO_SOURCE_DIR}/ubpNLopt.cpp
)
if(MAiNGO_build_parser)
set(PARSER_SRC
${MAiNGO_SOURCE_DIR}/aleModel.cpp
${MAiNGO_SOURCE_DIR}/programParser.cpp
)
endif()
if(MAiNGO_use_mpi)
set(MAiNGO_SRC ${MAiNGO_SRC}
${MAiNGO_SOURCE_DIR}/babMpi.cpp
)
endif()
\ No newline at end of file
function(add_dependency_subdir DEPENDENCY)
if(EXISTS ${PROJECT_SOURCE_DIR}/dep/${DEPENDENCY}/CMakeLists.txt)
add_subdirectory(${PROJECT_SOURCE_DIR}/dep/${DEPENDENCY})
message("${DEPENDENCY} OK.")
message("=================================================================")
else()
message(FATAL_ERROR "Error: Could not find CMakeLists.txt at ${PROJECT_SOURCE_DIR}/dep/${DEPENDENCY}. Did you initialize and update all submodules (cf. Readme.md or doc/html/index.html)?")
endif()
endfunction(add_dependency_subdir DEPENDENCY)
\ No newline at end of file
Subproject commit dcf8e1e4492fd71f79e3ce1348696c0ea622b57b
Subproject commit b9ac45c6ca1a1b2c7f8424ca929af4ad82aff552
Subproject commit 10411bb27820924be3e2e32f14cdaa70864ea84d
Subproject commit d0c480a3feeeaae52a9e343436aa9d299dddfcb4
Subproject commit 010f3e9eaf4e910c99ea4179282194dbc09a0f01
Subproject commit f64c5b746deaeb3fa8b13a081be53dfdfecc5374
Subproject commit 22802fe6e1d78e927bdc806bc48e305f3e944fc9
Subproject commit 77243cfb7e99f6b24a5e919de9534e8d6a83e4fc
Subproject commit a5d4fc99508e50b77001152b0cb287cde733a1fb
Subproject commit 0fe1a134bfd693652a2990a4dc37b4538fc691c0
Subproject commit 428c8ac74e7c82f9382e1403b1379c5d38057d5f
Subproject commit dd359bca5f0679dec0c07c1f0e13937e3787a5d7
Subproject commit 12e44293542d176f1150af649810cd2733f905a1
Subproject commit 040cd37c56d7b9e3b20bbd4f8f10a282a29c83c8
Subproject commit 39be3fb59ae4b1a3be4446635b07fbc82098ac92
Subproject commit b522ceed43f889eaa9adda8f279325fcafd770b9
Subproject commit ebcef32f04b7f1acba88cc2cedeab033d68ce17d
Subproject commit da5a2f227ef57f2d88654b30149636a0b1557085
Subproject commit e086d1de7d0a69fe5381e4a5231d12360ea29e57
Subproject commit 2418f3f20f4423498da4603c5befa2faf2da2e69
Subproject commit 8a8161e2f5b667bde2fdc8eaa4a0c73a8e9ea3c6
Subproject commit 72ec1603826019531be974367211eba253ddfb26
Subproject commit f748e5ea35b595d9ca2db2ab2bd0bb2db5dbee07
Subproject commit 798f331644352daaeedc4cea0e8ca67bba2328f3
Subproject commit 91a697203c80b52086244bb385f4d477ffaac787
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment