Class: Cbc::ConflictSolver
- Inherits:
-
Object
- Object
- Cbc::ConflictSolver
- Defined in:
- lib/ruby-cbc/conflict_solver.rb
Instance Method Summary collapse
-
#find_conflict ⇒ Object
Assuming there is a conflict.
-
#initialize(model) ⇒ ConflictSolver
constructor
A new instance of ConflictSolver.
- #is_continuous_conflict? ⇒ Boolean
Constructor Details
#initialize(model) ⇒ ConflictSolver
Returns a new instance of ConflictSolver.
5 6 7 |
# File 'lib/ruby-cbc/conflict_solver.rb', line 5 def initialize(model) @model = model end |
Instance Method Details
#find_conflict ⇒ Object
Assuming there is a conflict
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/ruby-cbc/conflict_solver.rb', line 10 def find_conflict continuous = is_continuous_conflict? conflict_set = [] all_constraints = @model.constraints.to_a nb_constraints = all_constraints.count loop do m = Model.new m.vars = @model.vars m.enforce(conflict_set) return conflict_set if infeasible?(m, continuous: continuous) constraint_idx = first_failing(conflict_set, all_constraints, nb_constraints, continuous: continuous) return conflict_set if !constraint_idx nb_constraints = constraint_idx conflict_set << all_constraints[constraint_idx] end end |
#is_continuous_conflict? ⇒ Boolean
29 30 31 32 33 34 35 |
# File 'lib/ruby-cbc/conflict_solver.rb', line 29 def is_continuous_conflict? # Same model without objective model = Model.new model.vars = @model.vars model.constraints = @model.constraints infeasible?(model, continuous: true) end |