Wikunia / ConstraintSolver.jl

ConstraintSolver in Julia: Blog posts ->
https://opensourc.es/blog/constraint-solver-1
MIT License
136 stars 14 forks source link

Linear constraint refactoring #232

Closed Wikunia closed 3 years ago

Wikunia commented 3 years ago

Currently it's trying out the MOI and JuMP bridge system. I'm quite sure there are better ways to handle the stuff but it seems to work for now.

After this I'll open a new PR for strictly less than.

codecov[bot] commented 3 years ago

Codecov Report

Merging #232 (98c013f) into master (7b3a168) will increase coverage by 0.13%. The diff coverage is 98.21%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #232      +/-   ##
==========================================
+ Coverage   96.41%   96.54%   +0.13%     
==========================================
  Files          37       38       +1     
  Lines        3317     3331      +14     
==========================================
+ Hits         3198     3216      +18     
+ Misses        119      115       -4     
Impacted Files Coverage Δ
src/options.jl 100.00% <ø> (ø)
src/constraints/linear_constraints.jl 97.54% <95.41%> (ø)
src/ConstraintSolver.jl 98.48% <100.00%> (+<0.01%) :arrow_up:
src/MOI_wrapper/Bridges/indicator_greater_than.jl 100.00% <100.00%> (ø)
src/MOI_wrapper/Bridges/reified_greater_than.jl 100.00% <100.00%> (ø)
src/MOI_wrapper/MOI_wrapper.jl 91.80% <100.00%> (+0.73%) :arrow_up:
src/MOI_wrapper/constraints.jl 100.00% <100.00%> (ø)
src/MOI_wrapper/reified.jl 95.83% <100.00%> (+0.37%) :arrow_up:
src/Variable.jl 97.91% <100.00%> (ø)
src/branching.jl 99.47% <100.00%> (ø)
... and 15 more

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 7b3a168...98c013f. Read the comment docs.

Wikunia commented 3 years ago

Benchmark Report for ConstraintSolver

Job Properties

Results

A ratio greater than 1.0 denotes a possible regression (marked with :x:), while a ratio less than 1.0 denotes a possible improvement (marked with :white_check_mark:). Only significant results - results that indicate possible regressions or improvements - are shown below (thus, an empty table means that all benchmark results remained invariant between builds).

ID time ratio memory ratio
["killer_sudoku", "niall_5500"] 0.80 (5%) :white_check_mark: 0.75 (1%) :white_check_mark:
["killer_sudoku", "niall_5500_ABS"] 0.37 (5%) :white_check_mark: 0.36 (1%) :white_check_mark:
["killer_sudoku", "niall_5500_special"] 1.16 (5%) :x: 1.20 (1%) :x:
["killer_sudoku", "niall_5501"] 0.22 (5%) :white_check_mark: 0.22 (1%) :white_check_mark:
["killer_sudoku", "niall_5501_ABS"] 1.00 (5%) 1.20 (1%) :x:
["killer_sudoku", "niall_5501_special"] 4.38 (5%) :x: 4.35 (1%) :x:
["lp", "issue_83"] 1.04 (5%) 1.01 (1%) :x:
["sudoku", "top95_1"] 1.10 (5%) :x: 1.04 (1%) :x:
["sudoku", "top95_11"] 1.08 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_16"] 1.08 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_21"] 1.10 (5%) :x: 1.04 (1%) :x:
["sudoku", "top95_26"] 1.10 (5%) :x: 1.03 (1%) :x:
["sudoku", "top95_31"] 1.07 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_36"] 1.10 (5%) :x: 1.04 (1%) :x:
["sudoku", "top95_41"] 1.09 (5%) :x: 1.03 (1%) :x:
["sudoku", "top95_46"] 1.09 (5%) :x: 1.03 (1%) :x:
["sudoku", "top95_51"] 1.08 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_56"] 1.07 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_6"] 1.10 (5%) :x: 1.04 (1%) :x:
["sudoku", "top95_61"] 1.09 (5%) :x: 1.03 (1%) :x:
["sudoku", "top95_66"] 1.07 (5%) :x: 1.01 (1%) :x:
["sudoku", "top95_71"] 1.09 (5%) :x: 1.03 (1%) :x:
["sudoku", "top95_76"] 1.09 (5%) :x: 1.03 (1%) :x:
["sudoku", "top95_81"] 1.09 (5%) :x: 1.03 (1%) :x:
["sudoku", "top95_86"] 1.09 (5%) :x: 1.03 (1%) :x:
["sudoku", "top95_91"] 1.08 (5%) :x: 1.02 (1%) :x:

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

Julia versioninfo

Target

Julia Version 1.5.0
Commit 96786e22cc (2020-08-01 23:44 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      "Arch Linux"
  uname: Linux 5.9.14-arch1-1 #1 SMP PREEMPT Sat, 12 Dec 2020 14:37:12 +0000 x86_64 unknown
  CPU: Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz: 
                 speed         user         nice          sys         idle          irq
       #1-12  1677 MHz     877181 s        162 s     281031 s  411543326 s      46086 s

  Memory: 46.9886360168457 GB (44409.046875 MB free)
  Uptime: 344057.0 sec
  Load Avg:  1.1279296875  1.06201171875  0.9755859375
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, sandybridge)

Baseline

Julia Version 1.5.0
Commit 96786e22cc (2020-08-01 23:44 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      "Arch Linux"
  uname: Linux 5.9.14-arch1-1 #1 SMP PREEMPT Sat, 12 Dec 2020 14:37:12 +0000 x86_64 unknown
  CPU: Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz: 
                 speed         user         nice          sys         idle          irq
       #1-12  1407 MHz     951950 s        162 s     283525 s  412381786 s      46299 s

  Memory: 46.9886360168457 GB (43871.953125 MB free)
  Uptime: 344820.0 sec
  Load Avg:  1.09326171875  1.06591796875  1.00634765625
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, sandybridge)