Class: OPL::LinearProgram
- Inherits:
-
Object
- Object
- OPL::LinearProgram
- Defined in:
- lib/opl.rb
Instance Attribute Summary collapse
-
#column_bounds ⇒ Object
Returns the value of attribute column_bounds.
-
#constraints ⇒ Object
Returns the value of attribute constraints.
-
#data ⇒ Object
Returns the value of attribute data.
-
#data_hash ⇒ Object
Returns the value of attribute data_hash.
-
#epsilon ⇒ Object
Returns the value of attribute epsilon.
-
#error_message ⇒ Object
Returns the value of attribute error_message.
-
#m_index ⇒ Object
Returns the value of attribute m_index.
-
#matrix ⇒ Object
Returns the value of attribute matrix.
-
#matrix_solution ⇒ Object
Returns the value of attribute matrix_solution.
-
#mip_message ⇒ Object
Returns the value of attribute mip_message.
-
#negated_objective_lp ⇒ Object
Returns the value of attribute negated_objective_lp.
-
#objective ⇒ Object
Returns the value of attribute objective.
-
#original_constraints ⇒ Object
Returns the value of attribute original_constraints.
-
#rglpk_object ⇒ Object
Returns the value of attribute rglpk_object.
-
#rows ⇒ Object
Returns the value of attribute rows.
-
#simplex_message ⇒ Object
Returns the value of attribute simplex_message.
-
#solution ⇒ Object
Returns the value of attribute solution.
-
#solution_type ⇒ Object
Returns the value of attribute solution_type.
-
#solver ⇒ Object
Returns the value of attribute solver.
-
#stop_processing ⇒ Object
Returns the value of attribute stop_processing.
-
#variable_types ⇒ Object
Returns the value of attribute variable_types.
Instance Method Summary collapse
-
#initialize ⇒ LinearProgram
constructor
A new instance of LinearProgram.
- #keys ⇒ Object
- #recreate_with_objective_abs(objective) ⇒ Object
- #solution_as_matrix ⇒ Object
Constructor Details
#initialize ⇒ LinearProgram
Returns a new instance of LinearProgram.
771 772 773 774 775 776 777 |
# File 'lib/opl.rb', line 771 def initialize @rows = [] @data = [] @epsilon = $default_epsilon @matrix_solution = {} @stop_processing = false end |
Instance Attribute Details
#column_bounds ⇒ Object
Returns the value of attribute column_bounds.
758 759 760 |
# File 'lib/opl.rb', line 758 def column_bounds @column_bounds end |
#constraints ⇒ Object
Returns the value of attribute constraints.
746 747 748 |
# File 'lib/opl.rb', line 746 def constraints @constraints end |
#data ⇒ Object
Returns the value of attribute data.
755 756 757 |
# File 'lib/opl.rb', line 755 def data @data end |
#data_hash ⇒ Object
Returns the value of attribute data_hash.
756 757 758 |
# File 'lib/opl.rb', line 756 def data_hash @data_hash end |
#epsilon ⇒ Object
Returns the value of attribute epsilon.
759 760 761 |
# File 'lib/opl.rb', line 759 def epsilon @epsilon end |
#error_message ⇒ Object
Returns the value of attribute error_message.
761 762 763 |
# File 'lib/opl.rb', line 761 def @error_message end |
#m_index ⇒ Object
Returns the value of attribute m_index.
765 766 767 |
# File 'lib/opl.rb', line 765 def m_index @m_index end |
#matrix ⇒ Object
Returns the value of attribute matrix.
752 753 754 |
# File 'lib/opl.rb', line 752 def matrix @matrix end |
#matrix_solution ⇒ Object
Returns the value of attribute matrix_solution.
760 761 762 |
# File 'lib/opl.rb', line 760 def matrix_solution @matrix_solution end |
#mip_message ⇒ Object
Returns the value of attribute mip_message.
754 755 756 |
# File 'lib/opl.rb', line 754 def @mip_message end |
#negated_objective_lp ⇒ Object
Returns the value of attribute negated_objective_lp.
764 765 766 |
# File 'lib/opl.rb', line 764 def negated_objective_lp @negated_objective_lp end |
#objective ⇒ Object
Returns the value of attribute objective.
745 746 747 |
# File 'lib/opl.rb', line 745 def objective @objective end |
#original_constraints ⇒ Object
Returns the value of attribute original_constraints.
747 748 749 |
# File 'lib/opl.rb', line 747 def original_constraints @original_constraints end |
#rglpk_object ⇒ Object
Returns the value of attribute rglpk_object.
750 751 752 |
# File 'lib/opl.rb', line 750 def rglpk_object @rglpk_object end |
#rows ⇒ Object
Returns the value of attribute rows.
748 749 750 |
# File 'lib/opl.rb', line 748 def rows @rows end |
#simplex_message ⇒ Object
Returns the value of attribute simplex_message.
753 754 755 |
# File 'lib/opl.rb', line 753 def @simplex_message end |
#solution ⇒ Object
Returns the value of attribute solution.
749 750 751 |
# File 'lib/opl.rb', line 749 def solution @solution end |
#solution_type ⇒ Object
Returns the value of attribute solution_type.
763 764 765 |
# File 'lib/opl.rb', line 763 def solution_type @solution_type end |
#solver ⇒ Object
Returns the value of attribute solver.
751 752 753 |
# File 'lib/opl.rb', line 751 def solver @solver end |
#stop_processing ⇒ Object
Returns the value of attribute stop_processing.
762 763 764 |
# File 'lib/opl.rb', line 762 def stop_processing @stop_processing end |
#variable_types ⇒ Object
Returns the value of attribute variable_types.
757 758 759 |
# File 'lib/opl.rb', line 757 def variable_types @variable_types end |
Instance Method Details
#keys ⇒ Object
767 768 769 |
# File 'lib/opl.rb', line 767 def keys [:objective, :constraints, :rows, :solution, :formatted_constraints, :rglpk_object, :solver, :matrix, :simplex_message, :mip_message, :data] end |
#recreate_with_objective_abs(objective) ⇒ Object
809 810 811 812 813 814 815 816 817 818 819 820 821 |
# File 'lib/opl.rb', line 809 def recreate_with_objective_abs(objective) #in: "abs(x)" #out: {:objective => "x1 + x2", :constraints => "x1 * x2 = 0"} #this is a really tough problem - first time I am considering #abandoning the string parsing approach. Really need to think #about how to attack this lp_class = self helper = OPL::Helper variabes = helper.variables(objective, lp_class.new) new_objective = "" constraints_to_add = [] #return(self) end |
#solution_as_matrix ⇒ Object
779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 |
# File 'lib/opl.rb', line 779 def solution_as_matrix lp = self variables = lp.solution.keys.map do |key| key.scan(/[a-z]/)[0] if key.include?("[") end.uniq.find_all{|e|!e.nil?} matrix_solution = {} variables.each do |var| elements = lp.solution.keys.find_all{|key|key.include?(var) && key.include?("[")} num_dims = elements[0].scan(/\]\[/).size + 1 dim_limits = [] indices_value_pairs = [] [*(0..(num_dims-1))].each do |i| dim_limit = 0 elements.each do |e| indices = e.scan(/\[\d+\]/).map{|str|str.scan(/\d+/)[0].to_i} value = lp.solution[e] indices_value_pairs << [indices, value] dim_limit = indices[i] if indices[i] > dim_limit end dim_limits << dim_limit+1 end matrix = [].matrix(dim_limits) indices_value_pairs.each do |ivp| matrix.insert_at(ivp[0], ivp[1].to_f) end matrix_solution[var] = matrix end return(matrix_solution) end |