Commit ccdb3334 authored by Dominik Bongartz's avatar Dominik Bongartz
Browse files

Release version v0.5.0

parent 13bbd7a7
Pipeline #486983 skipped
...@@ -3,3 +3,4 @@ Build/ ...@@ -3,3 +3,4 @@ Build/
_skbuild/ _skbuild/
*.egg-info/ *.egg-info/
dist/ dist/
MANIFEST
stages:
- build
- test
- deploy
build_windows:
stage: build
tags:
- windows
- maingo
variables:
GIT_STRATEGY: clone
before_script:
- git submodule init
- git submodule update
script:
- mkdir build
- '$env:path += ";C:\Program Files\cmake\bin"'
- cmake -B build -G "Visual Studio 15 2017" -A x64 -D MAiNGO_build_test=TRUE -D MAiNGO_build_python_interface=TRUE -D MAiNGO_build_parser=false
- cd build
- cmake --build . --config Release -j4
- cd ..
artifacts:
paths:
- build/Release/
exclude:
- build/Release/*.lib
- build/Release/**/*.exp
- build/Release/**/*.lib
test_windows:
stage: test
needs: [build_windows]
tags:
- windows
- maingo
script:
- cd build\Release
- .\test-maingo.exe
- py testMaingopy.py
build_linux:
stage: build
tags:
- linux
variables:
GIT_STRATEGY: clone
before_script:
- echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- git submodule init
- ./switchToSsh
- git submodule update -j 1
script:
- mkdir build
- cd build
- cmake -S .. -D MAiNGO_build_test=TRUE -D MAiNGO_build_python_interface=TRUE -D MAiNGO_build_parser=false
- make -j4
- cd ..
artifacts:
paths:
- build/test-maingo
- build/maingopy/
- build/testMaingopy.py
- build/individualPythonTests/
test_linux:
stage: test
needs: [build_linux]
tags:
- linux
script:
- cd build
- ./test-maingo
- python3 testMaingopy.py
pages:
stage: deploy
needs:
- job: test_windows
artifacts: false
- job: test_linux
artifacts: false
tags:
- linux
script:
- cd doc
- doxygen Doxyfile
- mv html ../public
- cd ..
artifacts:
paths:
- public
only:
- master
\ No newline at end of file
[submodule "dep/filib"] [submodule "dep/filib"]
path = dep/filib path = dep/filib
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/filib.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/filib.git
[submodule "dep/nlopt"] [submodule "dep/nlopt"]
path = dep/nlopt path = dep/nlopt
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/nlopt.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/nlopt.git
[submodule "dep/fadbad"] [submodule "dep/fadbad"]
path = dep/fadbad path = dep/fadbad
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/fadbad.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/fadbad.git
[submodule "dep/cpplapack"] [submodule "dep/cpplapack"]
path = dep/cpplapack path = dep/cpplapack
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/cpplapack.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/cpplapack.git
[submodule "dep/ipopt"] [submodule "dep/ipopt"]
path = dep/ipopt path = dep/ipopt
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/ipopt.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/ipopt.git
[submodule "dep/mumps"] [submodule "dep/mumps"]
path = dep/mumps path = dep/mumps
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/mumps.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/mumps.git
[submodule "dep/blas"] [submodule "dep/blas"]
path = dep/blas path = dep/blas
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/blas.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/blas.git
[submodule "dep/lapack"] [submodule "dep/lapack"]
path = dep/lapack path = dep/lapack
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/lapack.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/lapack.git
[submodule "dep/knitro"] [submodule "dep/knitro"]
path = dep/knitro path = dep/knitro
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/knitro.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/knitro.git
[submodule "dep/cplex"] [submodule "dep/cplex"]
path = dep/cplex path = dep/cplex
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/cplex.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/cplex.git
[submodule "dep/clp"] [submodule "dep/clp"]
path = dep/clp path = dep/clp
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/clp.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/clp.git
[submodule "dep/json"] [submodule "dep/json"]
path = dep/json path = dep/json
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/json.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/json.git
[submodule "dep/pybind11"] [submodule "dep/pybind11"]
path = dep/pybind11 path = dep/pybind11
url = https://github.com/pybind/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"] [submodule "dep/libale"]
path = dep/libale path = dep/libale
url = https://git.rwth-aachen.de/avt.svt/public/libale.git url = https://git.rwth-aachen.de/avt-svt/public/libale.git
[submodule "dep/melon"]
path = dep/melon
url = https://git.rwth-aachen.de/avt-svt/public/melon.git
[submodule "dep/babbase"]
path = dep/babbase
url = https://git.rwth-aachen.de/avt-svt/public/babbase.git
[submodule "dep/mcpp"] [submodule "dep/mcpp"]
path = dep/mcpp path = dep/mcpp
url = https://git.rwth-aachen.de/avt.svt/public/thirdparty/mcpp.git url = https://git.rwth-aachen.de/avt-svt/public/thirdparty/mcpp.git
This diff is collapsed.
This diff is collapsed.
include setup.py CMakeLists.txt README.md ReleaseNotes.txt AUTHORS LICENSE
graft cmake
graft dep
exclude dep/*/*/configure*
exclude dep/*/*/*/configure*
prune dep/*/example*
prune dep/*/*/example*
prune dep/*/test*
prune dep/*/*/test*
prune dep/*/doc*
prune dep/*/*/doc*
prune dep/*/*/DOC*
prune dep/*/build
prune dep/*/Build
prune dep/mumps/precompiled
prune dep/blas/precompiled
prune dep/lapack/precompiled
prune dep/lapack/*/BLAS
prune dep/lapack/*/CBLAS
prune dep/lapack/*/LAPACKE
prune dep/lapack/*/TESTING
prune dep/ipopt/*/ThirdParty
prune dep/clp/*/Data
prune dep/clp/*/ThirdParty
prune dep/clp/*/Osi
prune dep/clp/*/BuildTools
prune dep/clp/*/*/MSVisualStudio
prune dep/filib/*/msvc
prune dep/filib/*/autom4te.cache
graft examples
graft inc
graft maingopy
graft src
graft tests
global-exclude .git*
# <img src="doc/images/MAiNGO.png" alt="MAiNGO" width="300"/> <br> McCormick-based Algorithm for mixed-integer Nonlinear Global Optimization # <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" 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 ## 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). 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 ## 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). ### Via Git
$ git clone https://git.rwth-aachen.de/avt.svt/public/maingo.git <directory> 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> $ cd <directory>
$ git submodule init $ git submodule init
$ git submodule update -j 1 $ git submodule update -j 1
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. 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. 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 have cloned the MAiNGO repository before and want to update to the latest version, use the following git commands
If you want to update to the latest MAiNGO version, use the following git commands
$ git pull $ git pull
$ git submodule update -j 1 $ 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. ### Via PyPI
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>.
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 ## First steps
If you are new to MAiNGO, we recommend looking at the following documents in this order after having cloned the repository: If you are new to MAiNGO, we recommend looking at the following to get started:
* `doc/html/index.html`: This is the manual for MAiNGO. It includes information on how to install and execute MAiNGO. * 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. * `examples/01_BasicExample`: This folder contains the most basic example for solving problems with MAiNGO.
## Example applications ## Example applications
......
Release version 0.5.0 (June 14th, 2021):
- New features & availability:
- 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): Release version 0.4.0 (March 4th, 2021):
- New features: - 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 - 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): ...@@ -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 - Renamed a few options as well as methods of the MAiNGO class to be more descriptive
- Fixed random seeds for CPLEX and CLP - Fixed random seeds for CPLEX and CLP
- Improved diagnostic output for problems without objective or with constant objective - Improved diagnostic output for problems without objective or with constant objective
- Third party libraries: - Third-party libraries:
- Included pybind11 for the Python API - 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 babbase containing minor bugfixes, and now also allowing binary variables without explicit bounds
- New version of mcpp containing bugfixes in relaxations and constraint propagation - New version of mcpp containing bugfixes in relaxations and constraint propagation
...@@ -39,7 +56,7 @@ Release version 0.3.0 (June 12th, 2020): ...@@ -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) - 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 - The documentation for building MAiNGO was improved
- A section on the output written by MAiNGO was added - A section on the output written by MAiNGO was added
- Third party libraries: - Third-party libraries:
- Included MeLOn (see above) - Included MeLOn (see above)
- Upgraded to new MUMPS version 5.3.1. - Upgraded to new MUMPS version 5.3.1.
......
set(MAiNGO_VERSION
0.5.0
)
Subproject commit f64c5b746deaeb3fa8b13a081be53dfdfecc5374 Subproject commit 3231f96757010afcf0e24fcb1afe18567df4c943
Subproject commit dd359bca5f0679dec0c07c1f0e13937e3787a5d7 Subproject commit f0cee0f4fe98ef2b2ff17e7b623de1c417fb8507
Subproject commit 040cd37c56d7b9e3b20bbd4f8f10a282a29c83c8 Subproject commit 5752923d046c9e05404a02ea2c87bea3b321d7f5
Subproject commit 2fc616501a5ba0fdb63b4def75f3a6f59ac3bb2c Subproject commit 36e4e9d47355c53fbf25ac4107bb18ff3c180c04
Subproject commit da5a2f227ef57f2d88654b30149636a0b1557085 Subproject commit dfbdc830edbd11afe31c4283020ecdb0683c3ee2
Subproject commit 2418f3f20f4423498da4603c5befa2faf2da2e69 Subproject commit 6a64bc96dfce27a7ca84c26c1a465d7b677aa70e
Subproject commit 72ec1603826019531be974367211eba253ddfb26 Subproject commit 8d03311bd66b2bee39a8db75e68bf822b02952c9
...@@ -158,7 +158,7 @@ INLINE_INHERITED_MEMB = NO ...@@ -158,7 +158,7 @@ INLINE_INHERITED_MEMB = NO
# shortest path that makes the file name unique will be used # shortest path that makes the file name unique will be used
# The default value is: YES. # The default value is: YES.
FULL_PATH_NAMES = YES FULL_PATH_NAMES = NO
# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
# Stripping is only done if one of the specified strings matches the left-hand # Stripping is only done if one of the specified strings matches the left-hand
...@@ -816,7 +816,7 @@ WARN_LOGFILE = ...@@ -816,7 +816,7 @@ WARN_LOGFILE =
INPUT = . \ INPUT = . \
../inc \ ../inc \
../src \ ../src \
../pymaingo \ ../maingopy \
../dep/babbase/src \ ../dep/babbase/src \
../dep/babbase/inc ../dep/babbase/inc
...@@ -953,7 +953,7 @@ EXAMPLE_RECURSIVE = NO ...@@ -953,7 +953,7 @@ EXAMPLE_RECURSIVE = NO
# that contain images that are to be included in the documentation (see the # that contain images that are to be included in the documentation (see the
# \image command). # \image command).
IMAGE_PATH = .\images IMAGE_PATH = ./images
# The INPUT_FILTER tag can be used to specify a program that doxygen should # The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program # invoke to filter for each input file. Doxygen will invoke the filter program
......
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