https://github.com/OptimalBranching/OptimalBranching.jl
Automated discovery of optimal branching rules for the branch-and-bound algorithm
https://github.com/OptimalBranching/OptimalBranching.jl
branching combinatorial julia-language maximum-independent-set
Last synced: 3 months ago
JSON representation
Automated discovery of optimal branching rules for the branch-and-bound algorithm
- Host: GitHub
- URL: https://github.com/OptimalBranching/OptimalBranching.jl
- Owner: OptimalBranching
- License: mit
- Created: 2024-11-16T04:13:02.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-01-24T16:04:51.000Z (4 months ago)
- Last Synced: 2025-02-20T00:13:12.751Z (3 months ago)
- Topics: branching, combinatorial, julia-language, maximum-independent-set
- Language: Julia
- Homepage: https://optimalbranching.github.io/OptimalBranching.jl/dev/
- Size: 1.53 MB
- Stars: 11
- Watchers: 2
- Forks: 1
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Citation: CITATION.bib
Awesome Lists containing this project
README
[](https://optimalbranching.github.io/OptimalBranching.jl/dev/)
[](https://github.com/OptimalBranching/OptimalBranching.jl/actions/workflows/CI.yml?query=branch%3Amain)
[](https://codecov.io/gh/OptimalBranching/OptimalBranching.jl)`OptimalBranching.jl` is a collection of tools for solving combinatorial optimization problems with branch-and-reduce method.
It is written in Julia and features automatically generated branching rules with provable optimality ([arXiv: 2412.07685](https://arxiv.org/abs/2412.07685)).
The rule generation is problem agnostic, and it can be easily extended to other problems.
It contains two submodules:
* `OptimalBranchingCore.jl`: the core algorithms, which convert the problem of searching the optimal branching rule into the problem of searching the optimal set cover.
* `OptimalBranchingMIS.jl`: the maximum independent set (MIS) problem solver based on the optimal branching algorithms.## Installation
OptimalBranching is a
![]()
Julia Language
package. To install OptimalBranching,
please open
Julia's interactive session (known as REPL) and press ] key in the REPL to use the package mode, then type the following command```julia
pkg> add OptimalBranchingCore # for the core algorithmspkg> add OptimalBranching # for utilities based on the core algorithms
```If you have problem to install the package, please [file us an issue](https://github.com/OptimalBranching/OptimalBranching.jl/issues/new).
## Get started
```julia
julia> using OptimalBranching, OptimalBranching.OptimalBranchingMIS.Graphsjulia> graph = smallgraph(:tutte)
{46, 69} undirected simple Int64 graphjulia> mis_branch_count(graph)
(19, 2)
```
In this example, the maximum independent set size of the Tutte graph is 19, and the optimal branching strategy only generates 2 branches in the branching tree.For advanced usage, please refer to the [documentation](https://OptimalBranching.github.io/OptimalBranching.jl/dev/).
## How to Contribute
If you find any bug or have any suggestion, please open an [issue](https://github.com/OptimalBranching/OptimalBranching.jl/issues).
## Citation
If you find this package useful in your research, please cite the relevant paper in the [CITATION.bib](CITATION.bib) file.