rulp 0.0.22 → 0.0.23

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 912368647d83dea0e265b19db45e2fd01ca13eae
4
- data.tar.gz: 5021fac9d0b62dc4a4160ce43cdf1c085327d632
3
+ metadata.gz: 6efb7eb7ffab874e21b74ad4c7e7c8288bd9a1e7
4
+ data.tar.gz: 31f181cdbb431e6b9e22e86fd555a83f73d773e4
5
5
  SHA512:
6
- metadata.gz: 72b4248581c87d1cace2d073667ba70de3b02f9381d16e483454d162422e69f887ea08d4596c0353f7e602c8915f0348af73bd413ec8ea22426153eb2078b25e
7
- data.tar.gz: 15b32b970cf4d0404f5c160831f3b2dc08851633d39377be87ffeef3c4506b5a00577f130d52437b47bc224479c76404a9ca266925648467178f0fba637f46fd
6
+ metadata.gz: d626aeecb10b6223689f447ce7489a607fe1cc832dba72879442c3b7d84d3e5f9844587c708eefcec61f7fe775ba65180b93890a19ea19414596f56a1b7f0458
7
+ data.tar.gz: d47b81d18089719e3fefc9848cf8806a8d4e11dd79c3dc5f9cb9f15a3b233d153240f6dbc6851777c98cf9c694395aa7ce11001da1cd16462e9ed26e5c584a4e
data/lib/helpers/log.rb CHANGED
@@ -1,83 +1,36 @@
1
- ##
2
- # Basic logger module.
3
- # Allows logging in the format
4
- #
5
- # "This is a string".log(:debug)
6
- # "Oh no!".log(:error)
7
- #
8
- # Log level is set as follows.
9
- # Rulp::Logger::level = :debug
10
- #
11
- ##
12
- module Rulp
13
- module Logger
14
- DEBUG = 5
15
- INFO = 4
16
- WARN = 3
17
- ERROR = 2
18
- OFF = 1
19
-
20
- LEVELS = {
21
- debug: DEBUG,
22
- info: INFO,
23
- warn: WARN,
24
- error: ERROR,
25
- off: OFF
26
- }
1
+ require 'logger'
27
2
 
28
- def self.level=(value)
29
- raise StandardError.new("#{value} is not a valid log level") unless LEVELS[value]
30
- @@level = value
31
- end
3
+ module Rulp
4
+ module Log
32
5
 
33
- def self.level
34
- @@level || :info
6
+ def print_solver_outputs=(print)
7
+ @@print_solver_outputs = print
35
8
  end
36
9
 
37
- def self.print_solver_outputs
38
- @@solver_level
10
+ def print_solver_outputs
11
+ @@print_solver_outputs
39
12
  end
40
13
 
41
- def self.print_solver_outputs=(value)
42
- @@solver_level = value
14
+ def log_level=(level)
15
+ @@log_level = level
43
16
  end
44
17
 
45
- def self.log(level, message)
46
- if(LEVELS[level].to_i <= LEVELS[self.level])
47
- puts("[#{colorize(level)}] #{message}")
48
- end
18
+ def log_level
19
+ @@log_level || Logger::DEBUG
49
20
  end
50
21
 
51
- def self.colorize(level)
52
- if defined?(Pry) && Pry.color
53
- case level.to_sym
54
- when :debug
55
- Pry::Helpers::Text.cyan(level)
56
- when :info
57
- Pry::Helpers::Text.green(level)
58
- when :warn
59
- Pry::Helpers::Text.magenta(level)
60
- when :error
61
- Pry::Helpers::Text.red(level)
62
- end
63
- else
64
- level
22
+ def log(level, message)
23
+ if level >= self.log_level
24
+ self.logger.add(level, message)
65
25
  end
66
26
  end
67
27
 
68
- self.level = :info
69
- self.print_solver_outputs = true
70
-
71
- class ::String
72
- def log(level)
73
- Logger::log(level, self)
74
- end
28
+ def logger=(logger)
29
+ @@logger = logger
75
30
  end
76
31
 
77
- class ::Array
78
- def log(level, sep="\n")
79
- Logger::log(level, self.join("#{sep}[#{level}] "))
80
- end
32
+ def logger
33
+ @@logger = Logger.new(STDOUT)
81
34
  end
82
35
  end
83
36
  end
data/lib/rulp/rulp.rb CHANGED
@@ -10,6 +10,7 @@ require_relative "../helpers/log"
10
10
 
11
11
  require 'set'
12
12
  require 'open3'
13
+ require 'logger'
13
14
 
14
15
  GLPK = "glpsol"
15
16
  SCIP = "scip"
@@ -18,6 +19,9 @@ GUROBI = "gurobi_cl"
18
19
 
19
20
  module Rulp
20
21
  attr_accessor :expressions
22
+ extend Rulp::Log
23
+ self.print_solver_outputs = true
24
+
21
25
  MIN = "Minimize"
22
26
  MAX = "Maximize"
23
27
 
@@ -33,6 +37,7 @@ module Rulp
33
37
  GUROBI => Gurobi,
34
38
  }
35
39
 
40
+
36
41
  def self.Glpk(lp, opts={})
37
42
  lp.solve_with(GLPK, opts)
38
43
  end
@@ -50,12 +55,12 @@ module Rulp
50
55
  end
51
56
 
52
57
  def self.Max(objective_expression)
53
- "Creating maximization problem".log :info
58
+ Rulp.log(Logger::INFO, "Creating maximization problem")
54
59
  Problem.new(Rulp::MAX, objective_expression)
55
60
  end
56
61
 
57
62
  def self.Min(objective_expression)
58
- "Creating minimization problem".log :info
63
+ Rulp.log(Logger::INFO, "Creating minimization problem")
59
64
  Problem.new(Rulp::MIN, objective_expression)
60
65
  end
61
66
 
@@ -68,9 +73,9 @@ module Rulp
68
73
 
69
74
  def self.exec(command)
70
75
  result = ""
71
- Open3.popen2e("#{command} #{Rulp::Logger.print_solver_outputs ? "" : "> /dev/null 2>&1"}") do | inp, out, thr|
76
+ Open3.popen2e("#{command} #{Rulp.print_solver_outputs ? "" : "> /dev/null 2>&1"}") do | inp, out, thr|
72
77
  out.each do |line|
73
- puts line
78
+ Rulp.log(Logger::DEBUG, line)
74
79
  result << line
75
80
  end
76
81
  end
@@ -90,13 +95,13 @@ module Rulp
90
95
  end
91
96
 
92
97
  def [](*constraints)
93
- "Got constraints".log(:info)
98
+ Rulp.log(Logger::INFO, "Got constraints")
94
99
  constraints.flatten!
95
- "Flattened constraints".log(:info)
100
+ Rulp.log(Logger::INFO, "Flattened constraints")
96
101
  @constraints.concat(constraints)
97
- "Joint constraints".log(:info)
102
+ Rulp.log(Logger::INFO, "Joint constraints")
98
103
  @variables.merge(constraints.flat_map(&:variables).uniq)
99
- "Extracted variables".log(:info)
104
+ Rulp.log(Logger::INFO, "Extracted variables")
100
105
  self
101
106
  end
102
107
 
@@ -152,22 +157,23 @@ module Rulp
152
157
  end
153
158
 
154
159
  def solve_with(type, options={})
160
+
155
161
  filename = get_output_filename
156
162
  solver = SOLVERS[type].new(filename, options)
157
163
 
158
- "Writing problem".log(:info)
164
+ Rulp.log(Logger::INFO, "Writing problem")
159
165
  IO.write(filename, self)
160
166
 
161
167
  Rulp.exec("open #{filename}") if options[:open_definition]
162
168
 
163
- "Solving problem".log(:info)
169
+ Rulp.log(Logger::INFO, "Solving problem")
164
170
  self.trace, time = _profile{ solver.solve }
165
171
 
166
172
  Rulp.exec("open #{solver.outfile}") if options[:open_solution]
167
173
 
168
- "Solver took #{time}".log(:debug)
174
+ Rulp.log(Logger::DEBUG, "Solver took #{time}")
169
175
 
170
- "Parsing result".log(:info)
176
+ Rulp.log(Logger::INFO, "Parsing result")
171
177
  solver.store_results(@variables)
172
178
 
173
179
  solver.remove_lp_file if options[:remove_lp_file]
@@ -175,7 +181,7 @@ module Rulp
175
181
 
176
182
  self.result = @objective_expression.evaluate
177
183
 
178
- "Objective: #{result}\n#{@variables.map{|v|[v.name, "=", v.value].join(' ') if v.value}.compact.join("\n")}".log(:debug)
184
+ Rulp.log(Logger::DEBUG, "Objective: #{result}\n#{@variables.map{|v|[v.name, "=", v.value].join(' ') if v.value}.compact.join("\n")}")
179
185
  return self.result
180
186
  end
181
187
 
data/test/test_helper.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  require_relative "../lib/rulp"
2
+ require 'logger'
2
3
 
3
4
  gem "minitest"
4
5
  require "minitest/autorun"
5
6
 
6
- Rulp::Logger::level = :off
7
- Rulp::Logger::print_solver_outputs = false
7
+ Rulp::log_level = Logger::UNKNOWN
8
+ Rulp::print_solver_outputs = false
8
9
 
9
10
  def each_solver
10
11
  [:scip, :cbc, :glpk, :gurobi].each do |solver|
@@ -12,7 +13,7 @@ def each_solver
12
13
  if Rulp::solver_exists?(solver)
13
14
  yield(solver)
14
15
  else
15
- "Couldn't find solver #{solver}".log(:info)
16
+ Rulp::log(Logger::INFO, "Couldn't find solver #{solver}")
16
17
  end
17
18
  end
18
19
  end
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.22
4
+ version: 0.0.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wouter Coppieters
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-21 00:00:00.000000000 Z
11
+ date: 2016-02-03 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple Ruby LP description DSL
14
14
  email: wc@pico.net.nz