or-tools 0.3.2 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +23 -0
- data/NOTICE.txt +2 -1
- data/README.md +35 -1
- data/ext/or-tools/assignment.cpp +39 -0
- data/ext/or-tools/bin_packing.cpp +55 -0
- data/ext/or-tools/constraint.cpp +423 -0
- data/ext/or-tools/ext.cpp +21 -975
- data/ext/or-tools/extconf.rb +1 -1
- data/ext/or-tools/linear.cpp +212 -0
- data/ext/or-tools/network_flows.cpp +105 -0
- data/ext/or-tools/routing.cpp +368 -0
- data/ext/or-tools/vendor.rb +7 -10
- data/lib/or-tools.rb +6 -0
- data/lib/or_tools/cp_model.rb +4 -0
- data/lib/or_tools/cp_solver.rb +7 -3
- data/lib/or_tools/cp_solver_solution_callback.rb +1 -1
- data/lib/or_tools/objective_solution_printer.rb +18 -0
- data/lib/or_tools/routing_index_manager.rb +11 -0
- data/lib/or_tools/sat_int_var.rb +4 -0
- data/lib/or_tools/sat_linear_expr.rb +2 -2
- data/lib/or_tools/var_array_and_objective_solution_printer.rb +20 -0
- data/lib/or_tools/var_array_solution_printer.rb +19 -0
- data/lib/or_tools/version.rb +1 -1
- metadata +21 -67
data/ext/or-tools/vendor.rb
CHANGED
|
@@ -3,29 +3,26 @@ require "fileutils"
|
|
|
3
3
|
require "net/http"
|
|
4
4
|
require "tmpdir"
|
|
5
5
|
|
|
6
|
-
version = "
|
|
6
|
+
version = "8.2.8710"
|
|
7
7
|
|
|
8
8
|
if RbConfig::CONFIG["host_os"] =~ /darwin/i
|
|
9
|
-
filename = "or-tools_MacOsX-
|
|
10
|
-
checksum = "
|
|
9
|
+
filename = "or-tools_MacOsX-11.2.1_v#{version}.tar.gz"
|
|
10
|
+
checksum = "1c3bd45ab10677aa96d404cb837067e786a6d98123d8b556cf29d6994aa43b3b"
|
|
11
11
|
else
|
|
12
12
|
os = %x[lsb_release -is].chomp rescue nil
|
|
13
13
|
os_version = %x[lsb_release -rs].chomp rescue nil
|
|
14
14
|
if os == "Ubuntu" && os_version == "20.04"
|
|
15
15
|
filename = "or-tools_ubuntu-20.04_v#{version}.tar.gz"
|
|
16
|
-
checksum = "
|
|
16
|
+
checksum = "ab3b3051b10a4bbe8d080857f3c4ef3cfe9c10896ff94f352bb779e993756dd7"
|
|
17
17
|
elsif os == "Ubuntu" && os_version == "18.04"
|
|
18
18
|
filename = "or-tools_ubuntu-18.04_v#{version}.tar.gz"
|
|
19
|
-
checksum = "
|
|
20
|
-
elsif os == "Ubuntu" && os_version == "16.04"
|
|
21
|
-
filename = "or-tools_ubuntu-16.04_v#{version}.tar.gz"
|
|
22
|
-
checksum = "182cd4e2a1d2f29a9a81f2f90cb3e05cf1c0731c1a1e94c471d79a74dc09fff0"
|
|
19
|
+
checksum = "0d052deb2ba4491c29e86242fb5d61d0fe14bac847c2feaa35fbeff925ea40a0"
|
|
23
20
|
elsif os == "Debian" && os_version == "10"
|
|
24
21
|
filename = "or-tools_debian-10_v#{version}.tar.gz "
|
|
25
|
-
checksum = "
|
|
22
|
+
checksum = "1f2ec99181c92859ab46e68a6231babce92ded949fd1d08ee31afa4db04c43b3"
|
|
26
23
|
elsif os == "CentOS" && os_version == "8"
|
|
27
24
|
filename = "or-tools_centos-8_v#{version}.tar.gz"
|
|
28
|
-
checksum = "
|
|
25
|
+
checksum = "be638a20b36f6da81aa29fd24c69c4a66afc980b8a221b1cbabb3910b9827718"
|
|
29
26
|
else
|
|
30
27
|
# there is a binary download for Windows
|
|
31
28
|
# however, it's compiled with Visual Studio rather than MinGW (which RubyInstaller uses)
|
data/lib/or-tools.rb
CHANGED
|
@@ -11,12 +11,18 @@ require "or_tools/cp_solver_solution_callback"
|
|
|
11
11
|
require "or_tools/int_var"
|
|
12
12
|
require "or_tools/knapsack_solver"
|
|
13
13
|
require "or_tools/linear_expr"
|
|
14
|
+
require "or_tools/routing_index_manager"
|
|
14
15
|
require "or_tools/routing_model"
|
|
15
16
|
require "or_tools/sat_linear_expr"
|
|
16
17
|
require "or_tools/sat_int_var"
|
|
17
18
|
require "or_tools/solver"
|
|
18
19
|
require "or_tools/version"
|
|
19
20
|
|
|
21
|
+
# solution printers
|
|
22
|
+
require "or_tools/objective_solution_printer"
|
|
23
|
+
require "or_tools/var_array_solution_printer"
|
|
24
|
+
require "or_tools/var_array_and_objective_solution_printer"
|
|
25
|
+
|
|
20
26
|
# higher level interfaces
|
|
21
27
|
require "or_tools/basic_scheduler"
|
|
22
28
|
require "or_tools/seating"
|
data/lib/or_tools/cp_model.rb
CHANGED
data/lib/or_tools/cp_solver.rb
CHANGED
|
@@ -7,7 +7,7 @@ module ORTools
|
|
|
7
7
|
def_delegators :@response, :objective_value, :num_conflicts, :num_branches, :wall_time
|
|
8
8
|
|
|
9
9
|
def solve(model)
|
|
10
|
-
@response = _solve(model)
|
|
10
|
+
@response = _solve(model, parameters)
|
|
11
11
|
@response.status
|
|
12
12
|
end
|
|
13
13
|
|
|
@@ -20,13 +20,17 @@ module ORTools
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def solve_with_solution_callback(model, observer)
|
|
23
|
-
@response = _solve_with_observer(model, observer, false)
|
|
23
|
+
@response = _solve_with_observer(model, parameters, observer, false)
|
|
24
24
|
@response.status
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def search_for_all_solutions(model, observer)
|
|
28
|
-
@response = _solve_with_observer(model, observer, true)
|
|
28
|
+
@response = _solve_with_observer(model, parameters, observer, true)
|
|
29
29
|
@response.status
|
|
30
30
|
end
|
|
31
|
+
|
|
32
|
+
def parameters
|
|
33
|
+
@parameters ||= SatParameters.new
|
|
34
|
+
end
|
|
31
35
|
end
|
|
32
36
|
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module ORTools
|
|
2
|
+
class ObjectiveSolutionPrinter < CpSolverSolutionCallback
|
|
3
|
+
attr_reader :solution_count
|
|
4
|
+
|
|
5
|
+
def initialize
|
|
6
|
+
super
|
|
7
|
+
@solution_count = 0
|
|
8
|
+
@start_time = Time.now
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def on_solution_callback
|
|
12
|
+
current_time = Time.now
|
|
13
|
+
obj = objective_value
|
|
14
|
+
puts "Solution %i, time = %0.2f s, objective = %i" % [@solution_count, current_time - @start_time, obj]
|
|
15
|
+
@solution_count += 1
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/or_tools/sat_int_var.rb
CHANGED
|
@@ -43,10 +43,10 @@ module ORTools
|
|
|
43
43
|
case other
|
|
44
44
|
when SatLinearExpr
|
|
45
45
|
other.vars
|
|
46
|
-
when BoolVar, SatIntVar
|
|
46
|
+
when BoolVar, SatIntVar, Integer
|
|
47
47
|
[[other, 1]]
|
|
48
48
|
else
|
|
49
|
-
raise ArgumentError, "Unsupported type"
|
|
49
|
+
raise ArgumentError, "Unsupported type: #{other.class.name}"
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
self.class.new(vars + other_vars.map { |a, b| [a, sign * b] })
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module ORTools
|
|
2
|
+
class VarArrayAndObjectiveSolutionPrinter < CpSolverSolutionCallback
|
|
3
|
+
attr_reader :solution_count
|
|
4
|
+
|
|
5
|
+
def initialize(variables)
|
|
6
|
+
super()
|
|
7
|
+
@variables = variables
|
|
8
|
+
@solution_count = 0
|
|
9
|
+
@start_time = Time.now
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def on_solution_callback
|
|
13
|
+
current_time = Time.now
|
|
14
|
+
obj = objective_value
|
|
15
|
+
puts "Solution %i, time = %0.2f s, objective = %i" % [@solution_count, current_time - @start_time, obj]
|
|
16
|
+
puts @variables.map { |v| " %s = %i" % [v.name, value(v)] }.join(" ")
|
|
17
|
+
@solution_count += 1
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module ORTools
|
|
2
|
+
class VarArraySolutionPrinter < CpSolverSolutionCallback
|
|
3
|
+
attr_reader :solution_count
|
|
4
|
+
|
|
5
|
+
def initialize(variables)
|
|
6
|
+
super()
|
|
7
|
+
@variables = variables
|
|
8
|
+
@solution_count = 0
|
|
9
|
+
@start_time = Time.now
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def on_solution_callback
|
|
13
|
+
current_time = Time.now
|
|
14
|
+
puts "Solution %i, time = %0.2f s" % [@solution_count, current_time - @start_time]
|
|
15
|
+
puts @variables.map { |v| " %s = %i" % [v.name, value(v)] }.join(" ")
|
|
16
|
+
@solution_count += 1
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/or_tools/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: or-tools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Kane
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-03-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rice
|
|
@@ -16,72 +16,16 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '3'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: rake
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rake-compiler
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: minitest
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '5'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '5'
|
|
83
|
-
description:
|
|
84
|
-
email: andrew@chartkick.com
|
|
26
|
+
version: '3'
|
|
27
|
+
description:
|
|
28
|
+
email: andrew@ankane.org
|
|
85
29
|
executables: []
|
|
86
30
|
extensions:
|
|
87
31
|
- ext/or-tools/extconf.rb
|
|
@@ -91,8 +35,14 @@ files:
|
|
|
91
35
|
- LICENSE.txt
|
|
92
36
|
- NOTICE.txt
|
|
93
37
|
- README.md
|
|
38
|
+
- ext/or-tools/assignment.cpp
|
|
39
|
+
- ext/or-tools/bin_packing.cpp
|
|
40
|
+
- ext/or-tools/constraint.cpp
|
|
94
41
|
- ext/or-tools/ext.cpp
|
|
95
42
|
- ext/or-tools/extconf.rb
|
|
43
|
+
- ext/or-tools/linear.cpp
|
|
44
|
+
- ext/or-tools/network_flows.cpp
|
|
45
|
+
- ext/or-tools/routing.cpp
|
|
96
46
|
- ext/or-tools/vendor.rb
|
|
97
47
|
- lib/or-tools.rb
|
|
98
48
|
- lib/or_tools/basic_scheduler.rb
|
|
@@ -105,6 +55,8 @@ files:
|
|
|
105
55
|
- lib/or_tools/int_var.rb
|
|
106
56
|
- lib/or_tools/knapsack_solver.rb
|
|
107
57
|
- lib/or_tools/linear_expr.rb
|
|
58
|
+
- lib/or_tools/objective_solution_printer.rb
|
|
59
|
+
- lib/or_tools/routing_index_manager.rb
|
|
108
60
|
- lib/or_tools/routing_model.rb
|
|
109
61
|
- lib/or_tools/sat_int_var.rb
|
|
110
62
|
- lib/or_tools/sat_linear_expr.rb
|
|
@@ -112,12 +64,14 @@ files:
|
|
|
112
64
|
- lib/or_tools/solver.rb
|
|
113
65
|
- lib/or_tools/sudoku.rb
|
|
114
66
|
- lib/or_tools/tsp.rb
|
|
67
|
+
- lib/or_tools/var_array_and_objective_solution_printer.rb
|
|
68
|
+
- lib/or_tools/var_array_solution_printer.rb
|
|
115
69
|
- lib/or_tools/version.rb
|
|
116
70
|
homepage: https://github.com/ankane/or-tools
|
|
117
71
|
licenses:
|
|
118
72
|
- MIT
|
|
119
73
|
metadata: {}
|
|
120
|
-
post_install_message:
|
|
74
|
+
post_install_message:
|
|
121
75
|
rdoc_options: []
|
|
122
76
|
require_paths:
|
|
123
77
|
- lib
|
|
@@ -125,15 +79,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
125
79
|
requirements:
|
|
126
80
|
- - ">="
|
|
127
81
|
- !ruby/object:Gem::Version
|
|
128
|
-
version: '2.
|
|
82
|
+
version: '2.6'
|
|
129
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
84
|
requirements:
|
|
131
85
|
- - ">="
|
|
132
86
|
- !ruby/object:Gem::Version
|
|
133
87
|
version: '0'
|
|
134
88
|
requirements: []
|
|
135
|
-
rubygems_version: 3.
|
|
136
|
-
signing_key:
|
|
89
|
+
rubygems_version: 3.2.3
|
|
90
|
+
signing_key:
|
|
137
91
|
specification_version: 4
|
|
138
92
|
summary: Operations research tools for Ruby
|
|
139
93
|
test_files: []
|