Class: ORTools::CpSolver

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/or_tools/cp_solver.rb

Instance Method Summary collapse

Instance Method Details

#parametersObject



37
38
39
# File 'lib/or_tools/cp_solver.rb', line 37

def parameters
  @parameters ||= SatParameters.new
end

#solution_infoObject



29
30
31
# File 'lib/or_tools/cp_solver.rb', line 29

def solution_info
  @response.solution_info
end

#solve(model, observer = nil) ⇒ Object



9
10
11
12
13
# File 'lib/or_tools/cp_solver.rb', line 9

def solve(model, observer = nil)
  @response = _solve(model, parameters, observer)
  observer.response = @response if observer
  @response.status
end

#sufficient_assumptions_for_infeasibilityObject



33
34
35
# File 'lib/or_tools/cp_solver.rb', line 33

def sufficient_assumptions_for_infeasibility
  @response.sufficient_assumptions_for_infeasibility
end

#value(var) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/or_tools/cp_solver.rb', line 15

def value(var)
  # could also check solution_size == 0
  unless [:feasible, :optimal].include?(@response.status)
    # could return nil, but raise error like Python library
    raise Error, "No solution found"
  end

  if var.is_a?(BoolVar)
    _solution_boolean_value(@response, var)
  else
    _solution_integer_value(@response, var)
  end
end