Skip to content

Commit

Permalink
Merge branch 'coin-or:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
yuxies authored Jan 25, 2024
2 parents 7f890b1 + 5a9c40b commit 1a38d49
Show file tree
Hide file tree
Showing 9 changed files with 134 additions and 335 deletions.
8 changes: 5 additions & 3 deletions .coin-or/Dependencies
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
Data/Sample https://github.com/coin-or-tools/Data-Sample master
Data/miplib3 https://github.com/coin-or-tools/Data-miplib3 master
ThirdParty/Glpk https://github.com/coin-or-tools/ThirdParty-Glpk master
ThirdParty/Mumps https://github.com/coin-or-tools/ThirdParty-Mumps stable/3.0
Data/Sample https://github.com/coin-or-tools/Data-Sample 1.2
Data/miplib3 https://github.com/coin-or-tools/Data-miplib3 1.2
CoinUtils https://github.com/coin-or/CoinUtils master
Osi https://github.com/coin-or/Osi master
Clp https://github.com/coin-or/Clp master
Cgl https://github.com/coin-or/Cgl master
Alps https://github.com/coin-or/CHiPPS-ALPS stable/1.6
Bcps https://github.com/coin-or/CHiPPS-BiCePS stable/0.95
Blis https://github.com/coin-or/CHiPPS-BLIS master
Blis https://github.com/coin-or/CHiPPS-BLIS stable/0.95
SYMPHONY https://github.com/coin-or/SYMPHONY master
Cbc https://github.com/coin-or/Cbc master

26 changes: 17 additions & 9 deletions .coin-or/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,28 +20,36 @@ Description:
- Optimization deterministic linear discrete
PaperCite: https://doi.org/10.1007/s12532-020-00183-6
Dependencies:
- Description: ThirdParty wrapper for building Glpk
URL: https://github.com/coin-or-tools/ThirdParty-Glpk
Version: master
Required: Optional
- Description: ThirdParty wrapper for building Mumps
URL: https://github.com/coin-or-tools/ThirdParty-Mumps
Version: 3.0
Required: Optional
- Description: Sample data files
URL: https://projects.coin-or.org/svn/Data/Sample/stable/1.2
URL: https://github.com/coin-or-tools/Data-Sample
Version: 1.2
Required: Required
- Description: miplib3 data files
URL: https://projects.coin-or.org/svn/Data/miplib3/stable/1.2
- Description: Miplib3 data files
URL: https://github.com/coin-or-tools/Data-miplib3
Version: 1.2
Required: Required
- Description: COIN-OR Utilities
URL: https://projects.coin-or.org/svn/CoinUtils/stable/2.11/CoinUtils
URL: https://github.com/coin-or/CoinUtils
Version: master
Required: Required
- Description: Open Solver Interface
URL: https://projects.coin-or.org/svn/Osi/stable/0.108/Osi
URL: https://github.com/coin-or/Osi
Version: master
Required: Required
- Description: COIN-OR Linear Programming Solver
URL: https://projects.coin-or.org/svn/Clp/stable/1.17/Clp
URL: https://github.com/coin-or/Clp
Version: master
Required: Required
- Description: Cut Generation Library
URL: https://projects.coin-or.org/svn/Cgl/stable/0.60/Cgl
URL: https://github.com/coin-or/Cgl
Version: master
Required: Required
- Description: Abstract Library for Parallel Search
Expand All @@ -54,14 +62,14 @@ Dependencies:
Required: Required
- Description: BiCePS Linear Integer Solver
URL: https://github.com/coin-or/CHiPPS-BLIS
Version: master
Version: 0.95
Required: Required
- Description: SYMPHONY Mip Solver
URL: https://github.com/coin-or/SYMPHONY
Version: master
Required: Required
- Description: COIN-OR Branch-and-cut
URL: https://projects.coin-or.org/svn/Cbc/stable/2.10/Cbc
URL: https://github.com/coin-or/Cbc
Version: master
Required: Required
- Description: Basic Linear Algebra Subroutines (BLAS)
Expand Down
40 changes: 33 additions & 7 deletions .coin-or/generate_readme
Original file line number Diff line number Diff line change
Expand Up @@ -20,24 +20,43 @@ create_variables $SCRIPT_DIR/config.yml

make_header

echo "MibS is a solver for stochastic mixed integer bilevel linear optimization problems. For an
introduction to bilevel optimization, see [this slide
echo "MibS is a solver for stochastic mixed integer bilevel linear optimization
problems. For an introduction to bilevel optimization, see [this slide
deck](http://coral.ie.lehigh.edu/~ted/files/talks/BILEVEL-IWOBIP16.pdf). A
somewhat outdated but still useful introduction to MibS is
[here](http://coral.ie.lehigh.edu/~ted/files/talks/BILEVEL-INFORMS11.pdf).
A paper that contains a complete technical description of the algorithms in MibS is
[here](http://coral.ie.lehigh.edu/~ted/files/papers/MIBLP16.pdf).
A paper that contains a complete technical description of the algorithms in
MibS is [here](http://coral.ie.lehigh.edu/~ted/files/papers/MIBLP16.pdf).
A paper that discusses the cuts employed by MibS is
[here](http://coral.ie.lehigh.edu/~ted/files/papers/MibSCuts20.pdf).
More detailed documentation is available [here](https://coin-or.github.io/MibS).
"

make_build_info_no_packages

echo "## USING
### Modelling Systems
MibS has interfaces to the following modelling systems that allow the user to
conveniently build the bilevel model in a high-level modelling language and
pass the model to MibS through the interface for solution.
- Pyomo (Python) through the
[PAO](https://pao.readthedocs.io/en/latest/index.html#) package,
see [here](https://pao.readthedocs.io/en/latest/solvers.html)
- JuMP (Julia) through the [BilevelJuMP](https://github.com/joaquimg/BilevelJuMP.jl) package, see
[here](https://github.com/joaquimg/BilevelJuMP.jl/blob/master/docs/src/examples/MibS_example1.jl)
for an example.
### Command Line
To solve a deterministic mixed integer bilevel linear optimization problem,
you must provide both an MPS file and an auxiliary information file that
specifies which variables and constraints are associated with the each level
(see
[here](http://coral.ise.lehigh.edu/wp-content/uploads/2016/02/MibS_inputFile.pdf)).
(see a description of the file format
[here](https://coin-or.github.io/MibS/input.html)).
Then call \`mibs\` like this:
\`\`\`
<build_or_install_dir>/bin/mibs -Alps_instance file.mps -MibS_auxiliaryInfoFile aux_file.txt
Expand Down Expand Up @@ -77,8 +96,15 @@ linear optimization problems. To solve these problems, there are two ways:
[src/mibsStochastic.par.in].
"

make_links
echo "
## Project Links
* [Additional documentation](https://coin-or.github.io/MibS)
* [Code of Conduct](https://www.coin-or.org/code-of-conduct/)
* [COIN-OR Web Site](http://www.coin-or.org/)
* [Discussion forum](https://github.com/coin-or/$Description_Slug/discussions)
* [Report a bug](https://github.com/coin-or/$Description_Slug/issues/new)
"
echo "## ACKNOWLEDGEMENT
MibS was developed with support from
Expand Down
25 changes: 12 additions & 13 deletions .github/workflows/linux-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
- 'stable/*'
pull_request:
branches:
- '*'
- '**'
release:
types:
- created
Expand All @@ -18,40 +18,39 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-18.04, ubuntu-20.04]
os: [ubuntu-20.04, ubuntu-22.04]
build_static: [true, false]
flags: [ADD_CXXFLAGS=-fvisibility=hidden]
download_requirements: [sudo apt install -y -qq gfortran liblapack-dev libmetis-dev libnauty2-dev]
include:
- os: macos-10.15
- os: macos-12
build_static: false
flags: CC=clang CXX=clang++ OSX=10.15
flags: CC=clang CXX=clang++ OSX=12
download_requirements: brew install metis bash
- os: macos-10.15
- os: macos-12
build_static: false
flags: CC=gcc-9 CXX=g++-9 OSX=10.15
flags: CC=gcc-11 CXX=g++-11 OSX=12
download_requirements: brew install metis bash
- os: macos-10.15
- os: macos-12
build_static: false
flags: CC=gcc-10 CXX=g++-10 OSX=10.15
flags: CC=gcc-12 CXX=g++-12 OSX=12
download_requirements: brew install metis bash
steps:
- name: Checkout source
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
path: ${{ github.event.repository.name }}
- name: Install required packages from package manager
run: ${{ matrix.download_requirements }}
- name: Checkout coinbrew
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
repository: coin-or/coinbrew
path: coinbrew
- name: Build project
run: |
export ${{ matrix.flags }}
ADD_ARGS=()
ADD_ARGS+=( --no-prompt )
ADD_ARGS+=( --skip='ThirdParty/Metis ThirdParty/Mumps ThirdParty/Blas ThirdParty/Lapack' )
ADD_BUILD_ARGS=()
ADD_BUILD_ARGS+=( --tests main --enable-relocatable )
Expand All @@ -71,7 +70,7 @@ jobs:
cp ${{ github.event.repository.name }}/LICENSE dist/
tar -czvf release.tar.gz -C dist .
- name: Checkout package name generation script
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
repository: coin-or-tools/platform-analysis-tools
path: tools
Expand All @@ -86,7 +85,7 @@ jobs:
echo "platform_string=${platform_str}" >> $GITHUB_ENV
- name: Upload Artifact
if: ${{ github.event_name == 'pull_request'}}
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: ${{ github.event.repository.name }}-${{ github.head_ref }}-${{ env.platform_string }}.tar.gz
path: release.tar.gz
Expand Down
15 changes: 6 additions & 9 deletions .github/workflows/windows-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
- 'stable/*'
pull_request:
branches:
- '*'
- '**'
release:
types:
- created
Expand All @@ -24,18 +24,16 @@ jobs:
{ os: windows-2019, arch: x86_64, msystem: mingw64, debug: false, suffix: "" },
{ os: windows-2019, arch: i686, msystem: mingw32, debug: true, suffix: "-dbg" },
{ os: windows-2019, arch: i686, msystem: mingw32, debug: false, suffix: "" },
{ os: windows-2019, arch: msvc, msystem: mingw64, debug: true, suffix: "-mdd" },
{ os: windows-2019, arch: msvc, msystem: mingw64, debug: false, suffix: "-md" },
{ os: windows-2016, arch: msvc, msystem: mingw64, debug: true, suffix: "-mdd" },
{ os: windows-2016, arch: msvc, msystem: mingw64, debug: false, suffix: "-md" },
{ os: windows-2022, arch: msvc, msystem: mingw64, debug: false, suffix: "-md" },
]
steps:
- name: Checkout source
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
path: ${{ github.event.repository.name }}
- name: Checkout coinbrew
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
repository: coin-or/coinbrew
path: coinbrew
Expand All @@ -60,7 +58,6 @@ jobs:
- name: Build project
run: |
ADD_ARGS=()
ADD_ARGS+=( --no-prompt )
ADD_ARGS+=( --skip='ThirdParty/Metis ThirdParty/Mumps ThirdParty/Blas ThirdParty/Lapack' )
ADD_BUILD_ARGS=()
ADD_BUILD_ARGS+=( --build=x86_64-w64-mingw32 --tests main --enable-relocatable )
Expand All @@ -74,7 +71,7 @@ jobs:
cp ${{ github.event.repository.name }}/LICENSE dist/
shell: msys2 {0}
- name: Upload failed build directory
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
if: failure()
with:
name: ${{ matrix.os}}-{{ matrix.arch }}-debug=${{ matrix.debug }}-failedbuild
Expand All @@ -92,7 +89,7 @@ jobs:
if: ${{ matrix.arch != 'msvc' }}
- name: Upload artifact
if: ${{ github.event_name == 'pull_request'}}
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: ${{ github.event.repository.name }}-${{ github.head_ref }}-${{ env.package_suffix }}
path: dist
Expand Down
27 changes: 24 additions & 3 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,11 +1,32 @@
MibS Change Log


## 1.1.0

* General improvements and fixes to cut generation
* Improvements to efficiency of feasibility checking and solving upper bounding problem.
* Introduce generalized version of increasing objective cut
* Introduce watermelon IC
* Improvements to structure detection
* This is the version used in the published revision of the [paper](http://dx.doi.org/10.1007/s12532-020-00183-6)

## 1.0.0

* Adding support for name-based file format
* Improving robustness
* Better default parameters setting
* General refactoring and cleaning up

## 0.95.1

* Updates for new experiments in updated draft.
* Changed parameter names to match paper
* Fixed bug in linking solution pool

##0.95.0
## 0.95.0

* Version used for initial draft of [paper](http://coral.ie.lehigh.edu/~ted/files/papers/MIBLP16.pdf)
* Version used for initial draft of [paper](http://coral.ie.lehigh.edu/~ted/files/papers/MIBLP16.pdf)
* Added linking solution pool

## 0.9.0

* First official release!
Loading

0 comments on commit 1a38d49

Please sign in to comment.