Wikunia / ConstraintSolver.jl

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

Feature "Or" constraint #245

Closed Wikunia closed 3 years ago

Wikunia commented 3 years ago

Adds the functionality of "||" similar to #244

Todo:

After this I need to implement "anti" constraints for #244 and this. Maybe in another PR though.

codecov[bot] commented 3 years ago

Codecov Report

Merging #245 (9555985) into feature-and-constraint (86bc952) will increase coverage by 0.09%. The diff coverage is 97.76%.

Impacted file tree graph

@@                    Coverage Diff                     @@
##           feature-and-constraint     #245      +/-   ##
==========================================================
+ Coverage                   96.58%   96.67%   +0.09%     
==========================================================
  Files                          45       48       +3     
  Lines                        3661     3761     +100     
==========================================================
+ Hits                         3536     3636     +100     
  Misses                        125      125              
Impacted Files Coverage Δ
src/constraints/linear_constraints.jl 96.98% <ø> (ø)
src/MOI_wrapper/or.jl 89.47% <89.47%> (ø)
src/constraints/or.jl 97.72% <97.72%> (ø)
src/ConstraintSolver.jl 99.10% <100.00%> (+0.59%) :arrow_up:
src/MOI_wrapper/Bridges/bool.jl 96.66% <100.00%> (+0.19%) :arrow_up:
src/MOI_wrapper/Bridges/indicator.jl 100.00% <100.00%> (ø)
src/MOI_wrapper/Bridges/reified.jl 100.00% <100.00%> (ø)
src/MOI_wrapper/constraints.jl 99.49% <100.00%> (-0.51%) :arrow_down:
src/constraints/and.jl 100.00% <100.00%> (ø)
src/constraints/boolset.jl 100.00% <100.00%> (ø)
... and 9 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 86bc952...9555985. 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
["eternity", "5x5_all"] 0.95 (5%) :white_check_mark: 1.02 (1%) :x:
["eternity", "5x5_opt"] 1.00 (5%) 0.97 (1%) :white_check_mark:
["eternity", "5x5_opt_ind"] 0.99 (5%) 0.98 (1%) :white_check_mark:
["eternity", "6x5"] 1.00 (5%) 1.02 (1%) :x:
["eternity", "6x5_ABS"] 0.98 (5%) 1.01 (1%) :x:
["graph_coloring", "US_8+equal"] 1.05 (5%) :x: 1.00 (1%)
["killer_sudoku", "niall_5500_special"] 1.00 (5%) 1.01 (1%) :x:
["killer_sudoku", "niall_5501"] 1.01 (5%) 1.01 (1%) :x:
["killer_sudoku", "niall_5501_ABS"] 1.00 (5%) 1.01 (1%) :x:
["killer_sudoku", "niall_5501_special"] 0.93 (5%) :white_check_mark: 1.01 (1%) :x:
["lp", "issue_83"] 1.07 (5%) :x: 1.00 (1%)
["scheduling", "all_different_except_0_len10"] 1.46 (5%) :x: 1.62 (1%) :x:
["scheduling", "all_different_except_0_len12"] 1.12 (5%) :x: 1.29 (1%) :x:
["scheduling", "furniture_moving"] 0.56 (5%) :white_check_mark: 0.65 (1%) :white_check_mark:
["scheduling", "organize_day"] 1.10 (5%) :x: 1.01 (1%) :x:
["sudoku", "top95_1"] 1.09 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_11"] 1.04 (5%) 1.01 (1%) :x:
["sudoku", "top95_16"] 1.04 (5%) 1.01 (1%) :x:
["sudoku", "top95_21"] 1.09 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_26"] 1.08 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_31"] 1.04 (5%) 1.01 (1%) :x:
["sudoku", "top95_36"] 1.09 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_41"] 1.07 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_46"] 1.07 (5%) :x: 1.01 (1%) :x:
["sudoku", "top95_51"] 1.05 (5%) :x: 1.01 (1%) :x:
["sudoku", "top95_56"] 1.04 (5%) 1.01 (1%) :x:
["sudoku", "top95_6"] 1.09 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_61"] 1.07 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_66"] 1.03 (5%) 1.01 (1%) :x:
["sudoku", "top95_71"] 1.07 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_76"] 1.07 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_81"] 1.07 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_86"] 1.06 (5%) :x: 1.02 (1%) :x:
["sudoku", "top95_91"] 1.05 (5%) :x: 1.01 (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  3620 MHz    6022354 s     513773 s    3116276 s  4385037938 s     505866 s

  Memory: 46.9886360168457 GB (1189.87890625 MB free)
  Uptime: 3.664049e6 sec
  Load Avg:  1.14404296875  1.05859375  0.85302734375
  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  3791 MHz    6103644 s     513773 s    3118983 s  4385948870 s     506058 s

  Memory: 46.9886360168457 GB (739.31640625 MB free)
  Uptime: 3.664879e6 sec
  Load Avg:  1.30810546875  1.21044921875  1.056640625
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, sandybridge)