https://github.com/bachi55/lpmp

Solving LPs with convergent message passing

https://github.com/bachi55/lpmp

Science Score: 10.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.1%) to scientific vocabulary
Last synced: 9 months ago · JSON representation

Repository

Solving LPs with convergent message passing

Basic Info
  • Host: GitHub
  • Owner: bachi55
  • Default Branch: master
  • Size: 1.09 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Fork of LPMP/LPMP
Created about 6 years ago · Last pushed about 6 years ago

https://github.com/bachi55/LPMP/blob/master/

LPMP
========



LPMP is a C++ framework for developing scalable dual (Lagrangean) decomposition based solvers for a wide range of LP-relaxations to discrete optimization problems.
For a theoretical introduction to the techniques used and the class of problems that can be optimized see [1,2].

## Solvers
We provide a range of solvers for various discrete optimization problems, including
* **[Discrete graphical models](/include/mrf)**,
* **[Multicut](/include/multicut)**, [3]
* **[Max-cut](/include/max_cut)**, 
* **[Graph matching](include/graph_matching)**, [4]
* **[Multi-graph matching](/include/multigraph_matching)**, [5]
* **[Discrete graphical models with bottleneck terms](/include/horizon_tracking)** [6]

Benchmark problems for various solvers above can be found in [datasets](/datasets).

## Optimization techniques
Optimization techniques include
* **Messsage passing [1]**,
* **Subgradient ascent with a proximal bundle method based on the Frank-Wolfe algorithm [2]**, [Vladimir Kolmogorov's](http://http://pub.ist.ac.at/~vnk/) [original implementation](http://pub.ist.ac.at/~vnk/papers/FWMAP.html).
* An interface to **external solvers** is provided by [DD_ILP](https://github.com/pawelswoboda/DD_ILP).

## Differentiable wrappers

The solvers can be wrapped as differentiable PyTorch modules using the technique of [7]. Currently, wrappers are available for graph matching and multigraph matching solvers. For usage examples see an application to keypoint matching [8] ([code](https://github.com/martius-lab/blackbox-deep-graph-matching)) or the general [repository](https://github.com/martius-lab/blackbox-backprop) of [7].

All these can be `pip` installed with

```python3 -m pip install git+https://github.com/lpmp/LPMP.git```

or

```python3 -m pip install git+https://github.com/lpmp/LPMP.git@keypiont_submission```

for the precise version used in [8].

## Installation
Type `git clone https://github.com/LPMP/LPMP.git` for downloading, then `cd LPMP` and `git submodule update --init --remote --recursive` for downloading dependencies and finally `cmake .` for building.

Prerequisites:
* Clang 5.0 or GCC 8.0 upwards for C++17 compatibility (see [here](https://solarianprogrammer.com/2016/10/07/building-gcc-ubuntu-linux/) for installation instructions).
* HDF5 (install with `apt install libhdf5-serial-dev`)
* cmake (install with `apt install cmake`)


## Documentation

A tutorial on writing a new solver from scratch can be found [here](/doc/Getting-Started.md).

## References
* [1]: [`P. Swoboda, J. Kuske and B. Savchynskyy. A Dual Ascent Framework for Lagrangean Decomposition of Combinatorial Problems. In CVPR 2017.`](http://openaccess.thecvf.com/content_cvpr_2017/html/Swoboda_A_Dual_Ascent_CVPR_2017_paper.html)
* [2]: [`P. Swoboda and V. Kolmogorov. MAP inference via Block-Coordinate Frank-Wolfe Algorithm. In CVPR 2019`](http://openaccess.thecvf.com/content_CVPR_2019/html/Swoboda_MAP_Inference_via_Block-Coordinate_Frank-Wolfe_Algorithm_CVPR_2019_paper.html)
* [3]: [`P. Swoboda and B. Andres. A Message Passing Algorithm for the Minimum Cost Multicut Problem. In CVPR 2017.`](http://openaccess.thecvf.com/content_cvpr_2017/html/Swoboda_A_Message_Passing_CVPR_2017_paper.html)
* [4]: [`P. Swoboda, C. Rother, H. A. Alhaija, D. Kainmuller, B. Savchynskyy. A Study of Lagrangean Decompositions and Dual Ascent Solvers for Graph Matching. In CVPR 2017.`](http://openaccess.thecvf.com/content_cvpr_2017/html/Swoboda_A_Study_of_CVPR_2017_paper.html)
* [5]: [`P. Swoboda, D. Kainmueller, A. Mokarian, C. Theobalt and F. Bernard. A convex approach to multi-graph matching. In CVPR 2019.`](http://openaccess.thecvf.com/content_CVPR_2019/html/Swoboda_A_Convex_Relaxation_for_Multi-Graph_Matching_CVPR_2019_paper.html)
* [6]: [`A. Abbas, P. Swoboda. Bottleneck Potentials in Markov Random Fields. In ICCV 2019.`](http://openaccess.thecvf.com/content_ICCV_2019/html/Abbas_Bottleneck_Potentials_in_Markov_Random_Fields_ICCV_2019_paper.html)
* [7]: [`M. Vlastelica, A. Paulus, V. Musil, G. Martius, M. Rolnek. Differentiation of Blackbox Combinatorial Solvers. In ICLR 2020.`](https://openreview.net/forum?id=BkevoJSYPB)
* [8]: [`M. Rolnek, P. Swoboda, D. Zietlow, A. Paulus, V. Musil, G. Martius. Deep Graph Matching via Blackbox Differentiation of Combinatorial Solvers.`](https://arxiv.org/abs/2003.11657)

Owner

  • Name: Eric Bach
  • Login: bachi55
  • Kind: user
  • Location: Espoo, Finnland
  • Company: Aalto University

Doctoral student in the field of Machine Learning, Bioinformatics and Computational Metabolomics.

GitHub Events

Total
Last Year