rulp 0.0.14 → 0.0.15
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 +5 -13
- data/lib/rulp.rb +1 -0
- data/lib/rulp/lv.rb +10 -0
- data/lib/rulp/rulp.rb +15 -4
- data/lib/solvers/cbc.rb +0 -3
- data/lib/solvers/{solvers.rb → solver.rb} +19 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OGYxNzNjODE3YmJmMWVjYzU5MjFhOWM2NTg2OWQ2ZTY2MTI3ZTEyYg==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e2294411951f1ca37ef2ffe418a7b28ee3af92a9
|
4
|
+
data.tar.gz: 800d2fb52a1f6dba2f671bf026b0696eeada97e2
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MmQwNmJkZWIzZjczMjU3YTAzNTc4NjFlYTgzNWIyMjIxYTI3ODM4ZDkwNTcy
|
11
|
-
Y2Y1N2RjM2I4N2U4YzFmNjVhYzI0N2FkMzAwZGIyMzBmNzY0Nzk=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YzllNGI2NTQxZDcyNGU0OWQxYjg0MjM4NjY5YTRlNDFkMWYzZTU0NDMzODFj
|
14
|
-
NjRiYzc3Njc5NjAwZWEwZDBjYzg3NGU3ZjNkNGM1MDdlM2EwY2NjOWQzOGI1
|
15
|
-
ZmU5YWFlNjM5MDI5N2ZlZDFkZWE5ZDIyNjk0MGNmZTdhOTQyODM=
|
6
|
+
metadata.gz: c34eb327344222dbde5e0184aeda3dd35c0f809666c80641e787859821085c8a7d0d5f6d33065c700d86ff989713d651c3f2b4273e089e8878aa2f06b20009c0
|
7
|
+
data.tar.gz: a947a74465255076740c4c8ea459a12546c5bacc7f5234410f6bf516bfcc42d640f9fbbfd2b6d6e5c6c3e9450009fa0dd0950212c9736108f5bdd3b2ede44ad5
|
data/lib/rulp.rb
CHANGED
data/lib/rulp/lv.rb
CHANGED
@@ -77,9 +77,19 @@ class LV
|
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
|
+
def value?
|
81
|
+
value ? value : false
|
82
|
+
end
|
83
|
+
|
84
|
+
def selected?
|
85
|
+
value?
|
86
|
+
end
|
87
|
+
|
80
88
|
def inspect
|
81
89
|
"#{name}#{args.join("-")}(#{suffix})[#{value || 'undefined'}]"
|
82
90
|
end
|
91
|
+
|
92
|
+
alias_method :selected?, :value?
|
83
93
|
end
|
84
94
|
|
85
95
|
class BV < LV;
|
data/lib/rulp/rulp.rb
CHANGED
@@ -4,7 +4,7 @@ require_relative "lv"
|
|
4
4
|
require_relative "constraint"
|
5
5
|
require_relative "expression"
|
6
6
|
|
7
|
-
require_relative "../solvers/
|
7
|
+
require_relative "../solvers/solver"
|
8
8
|
require_relative "../extensions/extensions"
|
9
9
|
require_relative "../helpers/log"
|
10
10
|
|
@@ -74,6 +74,7 @@ module Rulp
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def [](*constraints)
|
77
|
+
constraints.flatten!
|
77
78
|
@constraints.concat(constraints)
|
78
79
|
@variables.merge(constraints.map(&:variables).flatten)
|
79
80
|
self
|
@@ -136,10 +137,10 @@ module Rulp
|
|
136
137
|
filename = get_output_filename
|
137
138
|
solver = SOLVERS[type].new(filename, options)
|
138
139
|
|
139
|
-
|
140
|
-
|
140
|
+
"Writing problem".log(:info)
|
141
|
+
IO.write(filename, self)
|
141
142
|
|
142
|
-
|
143
|
+
`open #{filename}` if options[:open_definition]
|
143
144
|
|
144
145
|
"Solving problem".log(:info)
|
145
146
|
_, time = _profile{ solver.solve }
|
@@ -161,6 +162,16 @@ module Rulp
|
|
161
162
|
to_s
|
162
163
|
end
|
163
164
|
|
165
|
+
def write(output)
|
166
|
+
output.puts "#{@objective}"
|
167
|
+
output.puts " obj: #{@objective_expression}"
|
168
|
+
output.puts "Subject to"
|
169
|
+
output.puts "#{constraints}"
|
170
|
+
output.puts "Bounds"
|
171
|
+
output.puts "#{bounds}#{integers}#{bits}"
|
172
|
+
output.puts "End"
|
173
|
+
end
|
174
|
+
|
164
175
|
def to_s
|
165
176
|
%Q(
|
166
177
|
#{' '*0}#{@objective}
|
data/lib/solvers/cbc.rb
CHANGED
@@ -28,6 +28,25 @@ class Solver
|
|
28
28
|
def self.exists?
|
29
29
|
return `which #{self.executable}`.length != 0
|
30
30
|
end
|
31
|
+
|
32
|
+
def next_pipe
|
33
|
+
filename = "./tmp/_rulp_pipe"
|
34
|
+
file_index = 1
|
35
|
+
file_index += 1 while File.exists?("#{filename}_#{file_index}")
|
36
|
+
pipe = "#{filename}_#{file_index}"
|
37
|
+
`mkfifo #{pipe}`
|
38
|
+
pipe
|
39
|
+
end
|
40
|
+
|
41
|
+
def with_pipe(pipe)
|
42
|
+
output = open(pipe, 'w+')
|
43
|
+
thread = Thread.new{
|
44
|
+
yield output
|
45
|
+
output.flush
|
46
|
+
}
|
47
|
+
return thread, output
|
48
|
+
end
|
49
|
+
|
31
50
|
end
|
32
51
|
|
33
52
|
require_relative 'cbc'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rulp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wouter Coppieters
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A simple Ruby LP description DSL
|
14
14
|
email: wc@pico.net.nz
|
@@ -36,7 +36,7 @@ files:
|
|
36
36
|
- lib/solvers/glpk.rb
|
37
37
|
- lib/solvers/gurobi.rb
|
38
38
|
- lib/solvers/scip.rb
|
39
|
-
- lib/solvers/
|
39
|
+
- lib/solvers/solver.rb
|
40
40
|
- test/test_basic_suite.rb
|
41
41
|
- test/test_boolean.rb
|
42
42
|
- test/test_helper.rb
|
@@ -51,17 +51,17 @@ require_paths:
|
|
51
51
|
- lib
|
52
52
|
required_ruby_version: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '0'
|
57
57
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
requirements: []
|
63
63
|
rubyforge_project:
|
64
|
-
rubygems_version: 2.
|
64
|
+
rubygems_version: 2.2.2
|
65
65
|
signing_key:
|
66
66
|
specification_version: 4
|
67
67
|
summary: Ruby Linear Programming
|