Skip to content

Commit

Permalink
update guide
Browse files Browse the repository at this point in the history
  • Loading branch information
GiggleLiu committed Dec 28, 2024
1 parent 3d9993b commit 4c7b979
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 27 deletions.
9 changes: 6 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@
[![Build Status](https://github.com/ArrogantGao/OptimalBranching.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/ArrogantGao/OptimalBranching.jl/actions/workflows/CI.yml?query=branch%3Amain)
[![Coverage](https://codecov.io/gh/ArrogantGao/OptimalBranching.jl/branch/main/graph/badge.svg)](https://codecov.io/gh/ArrogantGao/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).
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.

`OptimalBranching.jl` is a Julia package that implements the optimal branching algorithm (arXiv: 2412.07685). It is a meta package that contains the following submodules in the `lib` directory:
- `OptimalBranchingCore.jl`: the core algorithms for automatically generating optimal branching rules.
- `OptimalBranchingMIS.jl`: the maximum independent set solver based on the optimal branching algorithm.

## Installation

Expand Down
53 changes: 29 additions & 24 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,37 +5,33 @@ CurrentModule = OptimalBranching
# OptimalBranching.jl

Welcome to [OptimalBranching](https://github.com/ArrogantGao/OptimalBranching.jl).
`OptimalBranching.jl` is a Julia package for automatic generation of optimal branching rule for the branch-and-bound algorithm.
`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).
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

To install the package, one can press `]` to enter the `package` mode and enter
```julia
pkg> add OptimalBranching
```

To use the latest version of the package, you can compile the source code locally by

```bash
$ git clone https://github.com/ArrogantGao/OptimalBranching.jl
$ cd OptimalBranching.jl
$ make
```

This will add the submodules `OptimalBranchingCore.jl` and `OptimalBranchingMIS.jl` and install the dependencies, the tests will be run automatically to ensure everything is fine.
<p>
OptimalBranching is a &nbsp;
<a href="https://julialang.org">
<img src="https://raw.githubusercontent.com/JuliaLang/julia-logo-graphics/master/images/julia.ico" width="16em">
Julia Language
</a>
&nbsp; package. To install OptimalBranching,
please <a href="https://docs.julialang.org/en/v1/manual/getting-started/">open
Julia's interactive session (known as REPL)</a> and press <kbd>]</kbd> key in the REPL to use the package mode, then type the following command
</p>

## Dependencies
```julia
pkg> add OptimalBranchingCore # for the core algorithms

The relation between the submodules and the package is shown in the following diagram:
```
OptimalBranchingCore.jl --> OptimalBranchingMIS.jl --> OptimalBranching.jl
pkg> add OptimalBranching # for utilities based on the core algorithms
```
where `OptimalBranchingCore.jl` contains the core algorithms, which convert the problem of searching the optimal branching rule into the problem of searching the optimal set cover, and `OptimalBranchingMIS.jl` is developed base on the optimal branching algorithms to solve the maximum independent set (MIS) problem, and `OptimalBranching.jl` is a package interface.

## Quick Starts

You can learn how to use `OptimalBranching.jl` with some quick examples in this section.
The examples are about how to use the current implemented optimal branching algorithms to solve the maximum independent set (MIS) problem, and a brief introduction about extending the package to other method and problem will be provided.
If you have problem to install the package, please [file us an issue](https://github.com/ArrogantGao/OptimalBranching.jl/issues/new).

## Manual

Expand All @@ -52,6 +48,15 @@ Depth = 1
## How to Contribute

If you find any bug or have any suggestion, please open an [issue](https://github.com/ArrogantGao/OptimalBranching.jl/issues).
To develop the package, just download the source code by

```bash
$ git clone https://github.com/ArrogantGao/OptimalBranching.jl
$ cd OptimalBranching.jl
$ make
```

This will add the submodules `OptimalBranchingCore.jl` and `OptimalBranchingMIS.jl` automatically, and the tests will be run automatically to ensure everything is fine.

## License

Expand Down

0 comments on commit 4c7b979

Please sign in to comment.