Skip to content

Commit aa4adfa

Browse files
authored
Merge pull request #33 from blegat/MOIv1
Update to MOI v1
2 parents 24b9288 + b286498 commit aa4adfa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+360
-2374
lines changed

.SpellCheck.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[default]
2+
extend-ignore-identifiers-re = [
3+
# Match any identifier that contains "OT"
4+
".*OT.*"
5+
]
6+
7+
[default.extend-identifiers]
8+
# Explicitly accept "OT"
9+
OT = "OT"
10+
arrayNd = "arrayNd"

.github/workflows/CompatHelper.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
on:
2+
schedule:
3+
- cron: 0 0 * * *
4+
workflow_dispatch:
5+
permissions:
6+
contents: write
7+
pull-requests: write
8+
jobs:
9+
CompatHelper:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Check if Julia is already available in the PATH
13+
id: julia_in_path
14+
run: which julia
15+
continue-on-error: true
16+
- name: Install Julia, but only if it is not already available in the PATH
17+
uses: julia-actions/setup-julia@v2
18+
with:
19+
version: "1"
20+
arch: ${{ runner.arch }}
21+
if: steps.julia_in_path.outcome != 'success'
22+
- name: "Add the General registry via Git"
23+
run: |
24+
import Pkg
25+
ENV["JULIA_PKG_SERVER"] = ""
26+
Pkg.Registry.add("General")
27+
shell: julia --color=yes {0}
28+
- name: "Install CompatHelper"
29+
run: |
30+
import Pkg
31+
name = "CompatHelper"
32+
uuid = "aa819f21-2bde-4658-8897-bab36330d9b7"
33+
version = "3"
34+
Pkg.add(; name, uuid, version)
35+
shell: julia --color=yes {0}
36+
- name: "Run CompatHelper"
37+
run: |
38+
import CompatHelper
39+
CompatHelper.main()
40+
shell: julia --color=yes {0}
41+
env:
42+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
43+
COMPATHELPER_PRIV: ${{ secrets.DOCUMENTER_KEY }}

.github/workflows/Documenter.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ jobs:
1111
build:
1212
runs-on: ubuntu-latest
1313
steps:
14-
- uses: actions/checkout@v2
14+
- uses: actions/checkout@v4
1515
- uses: julia-actions/setup-julia@latest
1616
with:
17-
version: '1.6'
17+
version: '1'
1818
- name: Install dependencies
1919
run: julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
2020
- name: Build and deploy

.github/workflows/GitHubCI.yml

Lines changed: 55 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,79 @@ on:
33
pull_request:
44
branches:
55
- master
6+
- dev
7+
paths-ignore:
8+
- "docs/**"
69
push:
710
branches:
811
- master
9-
tags: '*'
12+
paths-ignore:
13+
- "docs/**"
1014
jobs:
15+
# formatter:
16+
# runs-on: ${{ matrix.os }}
17+
# strategy:
18+
# matrix:
19+
# julia-version: [1]
20+
# julia-arch: [x86]
21+
# os: [ubuntu-latest]
22+
# steps:
23+
# - uses: julia-actions/setup-julia@latest
24+
# with:
25+
# version: ${{ matrix.julia-version }}
26+
27+
# - uses: actions/checkout@v4
28+
# - name: Install JuliaFormatter and format
29+
# # This will use the latest version by default but you can set the version like so:
30+
# #
31+
# # julia -e 'using Pkg; Pkg.add(PackageSpec(name="JuliaFormatter", version="0.13.0"))'
32+
# run: |
33+
# julia -e 'using Pkg; Pkg.add(PackageSpec(name="JuliaFormatter", version="1.0.50"))'
34+
# julia -e 'using JuliaFormatter; format(".", verbose=true)'
35+
# - name: Format check
36+
# run: |
37+
# julia -e '
38+
# out = Cmd(`git diff`) |> read |> String
39+
# if out == ""
40+
# exit(0)
41+
# else
42+
# @error "Some files have not been formatted !!!"
43+
# write(stdout, out)
44+
# exit(1)
45+
# end'
1146
test:
1247
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
1348
runs-on: ${{ matrix.os }}
1449
strategy:
1550
fail-fast: false
1651
matrix:
1752
version:
18-
- '1.6'
53+
- "lts"
54+
- "1"
55+
- "pre"
1956
os:
2057
- ubuntu-latest
2158
arch:
2259
- x64
60+
# - x86 # TODO fix tests for x86
61+
include:
62+
# test macOS and Windows with latest Julia only
63+
- os: macOS-latest
64+
arch: x64
65+
version: 1
66+
- os: windows-latest
67+
arch: x64
68+
version: 1
69+
- os: windows-latest
70+
arch: x86
71+
version: 1
2372
steps:
24-
- uses: actions/checkout@v2
25-
- uses: julia-actions/setup-julia@v1
73+
- uses: actions/checkout@v4
74+
- uses: julia-actions/setup-julia@v2
2675
with:
2776
version: ${{ matrix.version }}
2877
arch: ${{ matrix.arch }}
29-
- uses: actions/cache@v1
78+
- uses: actions/cache@v4
3079
env:
3180
cache-name: cache-artifacts
3281
with:
@@ -39,7 +88,7 @@ jobs:
3988
- uses: julia-actions/julia-buildpkg@v1
4089
- uses: julia-actions/julia-runtest@v1
4190
- uses: julia-actions/julia-processcoverage@v1
42-
- uses: codecov/codecov-action@v1
91+
- uses: codecov/codecov-action@v4
4392
with:
4493
file: lcov.info
4594
- uses: coverallsapp/github-action@master

.github/workflows/SpellCheck.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: Spell Check
2+
3+
on: [pull_request]
4+
5+
jobs:
6+
typos-check:
7+
name: Spell Check with Typos
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Checkout Actions Repository
11+
uses: actions/checkout@v4
12+
- name: Check spelling
13+
uses: crate-ci/typos@master
14+
with:
15+
config: ./.SpellCheck.toml

.github/workflows/TagBot.yml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,22 @@ on:
44
types:
55
- created
66
workflow_dispatch:
7+
inputs:
8+
lookback:
9+
default: "3"
10+
permissions:
11+
actions: read
12+
checks: read
13+
contents: write
14+
deployments: read
15+
issues: read
16+
discussions: read
17+
packages: read
18+
pages: read
19+
pull-requests: read
20+
repository-projects: read
21+
security-events: read
22+
statuses: read
723
jobs:
824
TagBot:
925
if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot'
@@ -12,4 +28,4 @@ jobs:
1228
- uses: JuliaRegistries/TagBot@v1
1329
with:
1430
token: ${{ secrets.GITHUB_TOKEN }}
15-
ssh: ${{ secrets.DOCUMENTER_KEY }}
31+
ssh: ${{ secrets.DOCUMENTER_KEY }}

.github/workflows/register.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Register Package
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
version:
6+
description: Version to register or component to bump
7+
required: true
8+
jobs:
9+
register:
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: write
13+
steps:
14+
- uses: julia-actions/RegisterAction@latest
15+
with:
16+
token: ${{ secrets.GITHUB_TOKEN }}

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
99
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1010

1111
[compat]
12-
MathOptInterface = "~0.10"
13-
julia = "^1"
12+
MathOptInterface = "1"
13+
julia = "1"

docs/make.jl

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,18 @@ using Documenter, ConstraintProgrammingExtensions
44

55
makedocs(
66
sitename="ConstraintProgrammingExtensions",
7-
format = Documenter.HTML(
7+
format=Documenter.HTML(
88
# See https://github.com/JuliaDocs/Documenter.jl/issues/868
9-
prettyurls = get(ENV, "CI", nothing) == "true",
10-
mathengine = Documenter.MathJax2(),
11-
collapselevel = 1,
9+
prettyurls=get(ENV, "CI", nothing) == "true",
10+
mathengine=Documenter.MathJax2(),
11+
collapselevel=1,
1212
),
13-
strict = true,
14-
modules = [ConstraintProgrammingExtensions],
15-
checkdocs = :exports,
16-
pages = [
13+
strict=true,
14+
modules=[ConstraintProgrammingExtensions],
15+
checkdocs=:exports,
16+
pages=[
1717
"Introduction" => "index.md",
18-
"Reference" => [
19-
"reference/sets.md",
20-
"reference/bridges_sets.md",
21-
],
18+
"Reference" => ["reference/sets.md", "reference/bridges_sets.md"],
2219
"Comparison to other CP packages" => [
2320
"mappings/constraintsolver.md",
2421
"mappings/cplexcp.md",
@@ -30,11 +27,11 @@ makedocs(
3027
"mappings/numberjack.md",
3128
"mappings/sas.md",
3229
"mappings/yalmip.md",
33-
]
30+
],
3431
],
3532
)
3633

3734
deploydocs(
38-
push_preview = true,
39-
repo = "github.com/dourouc05/ConstraintProgrammingExtensions.jl.git",
35+
push_preview=true,
36+
repo="github.com/JuliaConstraints/ConstraintProgrammingExtensions.jl.git",
4037
)

docs/src/mappings/minizinc.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22

33
MiniZinc has a similar goal to this project: a common modelling interface for many underlying solvers. It is based on a similar concept to that of bridges, but with much less flexibility: each high-level constraint is mapped in a fixed way onto lower-level constraints.
44

5-
* Basic CP constraints:
6-
* Domain:
5+
* Basic CP constraints:
6+
* Domain:
77
* Fixed: `CP.Domain`
88
* Variable: `CP.Membership`
99
* Multivalued: `CP.VectorDomain`
1010
* [`table`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/table.mzn): [one binary variable per possible combination](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/linear/fzn_table_int.mzn)
11-
* All different:
11+
* All different:
1212
* Base: `CP.AllDifferent`
1313
* [`all_different`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/all_different.mzn): mapped onto [a MILP-like model](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_all_different_int.mzn).
1414
* [`all_different_reif`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/all_different.mzn): similar, [with an equivalence](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_all_different_int_reif.mzn).
15-
* These constraints are available in two includes: `all_different.mzn` and `alldifferent.mzn`.
15+
* These constraints are available in two includes: `all_different.mzn` and `alldifferent.mzn`.
1616
* All different except constants: `CP.AllDifferentExceptConstants`
17-
* [`alldifferent_except_0`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/alldifferent_except_0.mzn) (one excluded value: 0) and [`alldifferent_except`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/alldifferent_except.mzn) (set of excluded values): either mapped [onto neq and disjunctions or onto GCC](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_alldifferent_except.mzn).
17+
* [`alldifferent_except_0`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/alldifferent_except_0.mzn) (one excluded value: 0) and [`alldifferent_except`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/alldifferent_except.mzn) (set of excluded values): either mapped [onto neq and disjunctions or onto GCC](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_alldifferent_except.mzn).
1818
* [`alldifferent_except_0_reif`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/alldifferent_except_0.mzn) (one excluded value: 0) and [`alldifferent_except_reif`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/alldifferent_except.mzn) (set of excluded values): the reified versions are only mapped [onto neq and disjunctions](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_alldifferent_except_reif.mzn).
1919
* With symmetry: `SymmetricAllDifferent`
2020
* [`symmetric_all_different`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/symmetric_all_different.mzn): [`all_different` and `inverse`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_symmetric_all_different.mzn)
@@ -37,7 +37,7 @@ MiniZinc has a similar goal to this project: a common modelling interface for ma
3737
* [`nvalue_fn`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/nvalue_fn.mzn): function.
3838
* Inversion: `CP.Inverse`
3939
* [`inverse`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/inverse.mzn): [index computations](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_inverse.mzn).
40-
* [`inverse_reif`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/inverse.mzn): similar, [wih an equivalence](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_inverse_reif.mzn).
40+
* [`inverse_reif`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/inverse.mzn): similar, [with an equivalence](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_inverse_reif.mzn).
4141
* Also available [as a function](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/inverse_fn.mzn).
4242
* [`inverse_in_range`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/inverse_in_range.mzn): [?](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_inverse_in_range.mzn).
4343
* Sliding sum: `CP.SlidingSum`
@@ -47,9 +47,9 @@ MiniZinc has a similar goal to this project: a common modelling interface for ma
4747
* [`value_precede`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/value_precede.mzn): [several reifications)(https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_value_precede_int.mzn).
4848
* [No reified variant)(https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_value_precede_int_reif.mzn).
4949
* Combinatorial sets:
50-
* Bin packing:
50+
* Bin packing:
5151
* Raw: `CP.BinPacking` (with supplementary load variables)
52-
* [`bin_packing`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/bin_packing.mzn): mapped onto [a MILP-like model](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_bin_packing.mzn), but without binary variables (replaced by their definition in the capacity constraint: `bin[item] == value`).
52+
* [`bin_packing`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/bin_packing.mzn): mapped onto [a MILP-like model](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_bin_packing.mzn), but without binary variables (replaced by their definition in the capacity constraint: `bin[item] == value`).
5353
* [`bin_packing_reif`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/bin_packing.mzn): similar, [with an equivalence](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_bin_packing_reif.mzn).
5454
* Capacitated: `CP.FixedCapacityBinPacking` and `CP.VariableCapacityBinPacking` (with supplementary load variables)
5555
* [`bin_packing_capa`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/bin_packing_capa.mzn): same MILP-like model [with a linear capacity constraint](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_bin_packing_capa.mzn).
@@ -62,7 +62,7 @@ MiniZinc has a similar goal to this project: a common modelling interface for ma
6262
* Knapsack: `CP.Knapsack` with values
6363
* [`knapsack`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/knapsack.mzn): mapped onto [a MILP model](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_knapsack.mzn).
6464
* [`knapsack_reif`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/knapsack.mzn): similar, [with an equivalence](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_knapsack_reif.mzn).
65-
* Sorting:
65+
* Sorting:
6666
* Maximum/minimum: `CP.MaximumAmong` and `CP.MinimumAmong`
6767
* [`maximum`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/maximum.mzn): built-in, [except for linear solvers](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/linear/redefinitions.mzn)
6868
* [`minimum`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/minimum.mzn): built-in, [except for linear solvers](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/linear/redefinitions.mzn)
@@ -90,7 +90,7 @@ MiniZinc has a similar goal to this project: a common modelling interface for ma
9090
* [`lex2`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/lex2.mzn): in a matrix, have both rows and columns lexicographically sorted, [mapped to two chains](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_lex2.mzn).
9191
* [`strict_lex2`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/strict_lex2.mzn): in a matrix, have both rows and columns strictly lexicographically sorted, [mapped to two chains](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_strict_lex2.mzn).
9292
* Reifications are available.
93-
* Scheduling:
93+
* Scheduling:
9494
* Rectangle overlapping: `CP.NonOverlappingOrthotopes`
9595
* [`diffn`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/diffn.mzn): [mapped to a disjunction of linear inequalities](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/fzn_diffn.mzn).
9696
* [`diffn_k`](https://github.com/MiniZinc/libminizinc/blob/master/share/minizinc/std/diffn.mzn): generalisation to `k` dimensions.

0 commit comments

Comments
 (0)