Module: Rulp

Defined in:
lib/helpers/log.rb,
lib/rulp/rulp.rb,
lib/rulp/rulp_bounds.rb,
lib/rulp/rulp_initializers.rb

Overview

Basic logger module. Allows logging in the format

“This is a string”.log(:debug) “Oh no!”.log(:error)

Log level is set as follows. Rulp::Logger::level = :debug

Defined Under Namespace

Modules: Bounds, Initializers, Logger Classes: Problem

Constant Summary collapse

MIN =
"Minimize"
MAX =
"Maximize"
GLPK =
::GLPK
SCIP =
::SCIP
CBC =
::CBC
PSCIP =
::PSCIP
PCBC =
::PCBC
SOLVERS =
{
  GLPK  => Glpk,
  SCIP  => Scip,
  PSCIP => PScip,
  PCBC  => PCbc,
  CBC   => Cbc
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#expressionsObject

Returns the value of attribute expressions.



20
21
22
# File 'lib/rulp/rulp.rb', line 20

def expressions
  @expressions
end

Class Method Details

.Cbc(lp) ⇒ Object



42
43
44
# File 'lib/rulp/rulp.rb', line 42

def self.Cbc(lp)
  lp.solve_with(CBC) rescue nil
end

.Glpk(lp) ⇒ Object



38
39
40
# File 'lib/rulp/rulp.rb', line 38

def self.Glpk(lp)
  lp.solve_with(GLPK) rescue nil
end

.Max(objective_expression) ⇒ Object



58
59
60
61
# File 'lib/rulp/rulp.rb', line 58

def self.Max(objective_expression)
  "Creating maximization problem".log :info
  Problem.new(Rulp::MAX, objective_expression)
end

.Min(objective_expression) ⇒ Object



63
64
65
66
# File 'lib/rulp/rulp.rb', line 63

def self.Min(objective_expression)
  "Creating minimization problem".log :info
  Problem.new(Rulp::MIN, objective_expression)
end

.Pcbc(lp) ⇒ Object



50
51
52
# File 'lib/rulp/rulp.rb', line 50

def self.Pcbc(lp)
  lp.solve_with(PCBC) rescue nil
end

.Pscip(lp) ⇒ Object



54
55
56
# File 'lib/rulp/rulp.rb', line 54

def self.Pscip(lp)
  lp.solve_with(PSCIP) rescue nil
end

.Scip(lp) ⇒ Object



46
47
48
# File 'lib/rulp/rulp.rb', line 46

def self.Scip(lp)
  lp.solve_with(SCIP) rescue nil
end

.solver_exists?(solver_name) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
71
72
# File 'lib/rulp/rulp.rb', line 68

def self.solver_exists?(solver_name)
  solver = solver_name[0].upcase + solver_name[1..-1].downcase
  solver_class = ObjectSpace.const_defined?(solver) && ObjectSpace.const_get(solver)
  solver_class.exists? if(solver_class)
end