Skip to content

Commit

Permalink
Prep for v1.0 release (#129)
Browse files Browse the repository at this point in the history
  • Loading branch information
odow authored Feb 17, 2022
1 parent 6593aea commit 6a6ebbf
Show file tree
Hide file tree
Showing 12 changed files with 63 additions and 687 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ jobs:
strategy:
fail-fast: false
matrix:
version: ['1.0', '1'] # Test against LTS and current minor release
version: ['1.6', '1'] # Test against LTS and current minor release
os: [ubuntu-latest, macOS-latest, windows-latest]
arch: [x64]
include:
# Also test against 32-bit Linux on LTS.
- version: '1.0'
- version: '1.6'
os: ubuntu-latest
arch: x86
steps:
Expand Down
12 changes: 3 additions & 9 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
name = "Clp"
uuid = "e2554f3b-3117-50c0-817c-e040a3ddf72d"
repo = "https://github.com/jump-dev/Clp.jl.git"
version = "0.9.1"
version = "1.0.0"

[deps]
BinaryProvider = "b99e7846-7c00-51b0-8f62-c81ae34c0232"
CEnum = "fa961155-64e5-5f13-b03f-caf6b980ea82"
Clp_jll = "06985876-5285-5a41-9fcb-8948a742cc53"
Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"

[compat]
BinaryProvider = "0.5.9"
CEnum = "0.3, 0.4"
Clp_jll = "=1.17.6, ~100.1700.600"
MathOptInterface = "0.10.6"
julia = "1"
MathOptInterface = "1"
julia = "1.6"

[extras]
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
Expand Down
54 changes: 18 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,48 +2,36 @@

![](https://www.coin-or.org/wordpress/wp-content/uploads/2014/08/COINOR.png)

`Clp.jl` is an interface to the **[COIN-OR Linear
Programming](https://projects.coin-or.org/Clp)** solver. It provides a complete
interface to the low-level C API, as well as an implementation of the
solver-independent `MathOptInterface` API.

*Note: This wrapper is maintained by the JuMP community and is not a COIN-OR
project.*

[![Build Status](https://github.com/jump-dev/Clp.jl/workflows/CI/badge.svg?branch=master)](https://github.com/jump-dev/Clp.jl/actions?query=workflow%3ACI)
[![codecov](https://codecov.io/gh/jump-dev/Clp.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/jump-dev/Clp.jl)

[Clp]: https://projects.coin-or.org/Clp
[Cbc]: https://github.com/JuliaOpt/Cbc.jl
`Clp.jl` is a wrapper for the [COIN-OR Linear Programming](https://projects.coin-or.org/Clp)
solver.

## Installation
The wrapper has two components:
* a thin wrapper around the complete C API
* an interface to [MathOptInterface](https://github.com/jump-dev/MathOptInterface.jl)

The package can be installed with `Pkg.add`.
The C API can be accessed via `Clp.Clp_XXX` functions, where the names and
arguments are identical to the C API.

```
julia> import Pkg; Pkg.add("Clp")
```
*Note: This wrapper is maintained by the JuMP community and is not a COIN-OR
project.*

Clp.jl will use [BinaryProvider.jl](https://github.com/JuliaPackaging/BinaryProvider.jl) to automatically install the Clp binaries. This should work for both the [official Julia binaries](https://julialang.org/downloads) and source-builds.
## Installation

## Custom Installation
Install Clp using `Pkg.add`:

To install custom built Clp binaries set the environmental variable `JULIA_CLP_LIBRARY_PATH` and call `import Pkg; Pkg.build("Clp")`. For instance, if the libraries are installed in `/opt/lib`, then call
```julia
ENV["JULIA_CLP_LIBRARY_PATH"] = "/opt/lib"
import Pkg; Pkg.build("Clp")
import Pkg; Pkg.add("Clp")
```
If you do not want BinaryProvider to download the default binaries on install, set `JULIA_CLP_LIBRARY_PATH` before calling `import Pkg; Pkg.add("Clp")`.

To switch back to the default binaries clear `JULIA_CLP_LIBRARY_PATH` and call `import Pkg; Pkg.build("Clp")`.

### Using with **[JuMP]**
[JuMP]: https://github.com/jump-dev/JuMP.jl
In addition to installing the Clp.jl package, this will also download and
install the Clp binaries. (You do not need to isntall Clp separately.)

Due to some restrictions in Clp's C api, the Clp's MathOptInterface wrapper does not support directly modifying a problem after it has been created, e.g., changing variable bounds or modifying constraints coefficients.
## Use with JuMP

Therefore, we highly recommend that you use the `Clp.jl` package with higher-level package such as [JuMP.jl](https://github.com/jump-dev/JuMP.jl).
This can be done with following syntax:
To use Clp with [JuMP](https://github.com/jump-dev/JuMP.jl), use `Clp.Optimizer`:
```julia
using JuMP, Clp

Expand All @@ -54,16 +42,10 @@ set_optimizer_attribute(model, "Algorithm", 4)

See the list of options below.

Furthermore, the following features are not supported:
* Querying the dual bound via `JuMP.objective_bound` (not in the C API)
* Setting a time limit (the C API behaves inconsistently, see [#65](https://github.com/jump-dev/Clp.jl/issues/65))
* Setting the number of threads used (not in the C API)
* Quadratic objective (not supported yet)

### Solver options
## Options

The following options are available to get/set via `JuMP.set_optimizer_attribute`
or `MOI.RawParameter`.
or `MOI.RawOptimizerAttribute`.

| Parameter | Default value | Description |
|:----------|:--------------|:----------|
Expand Down
148 changes: 0 additions & 148 deletions bench/runbench.jl

This file was deleted.

9 changes: 0 additions & 9 deletions deps/.gitignore

This file was deleted.

Loading

0 comments on commit 6a6ebbf

Please sign in to comment.