mipper 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f1bcdfc9d771851b78b8acbe8469b6b5d4be1835
4
- data.tar.gz: de3f1d0bbbb0e45ea3bf9ee3be6dad6b83ea54bf
3
+ metadata.gz: d16f46d5a09d8ff89563f7fbb92a54f257dbb901
4
+ data.tar.gz: 67f1a0b959ec203c4f27911030d7b41e6db2265a
5
5
  SHA512:
6
- metadata.gz: 1e52c2d21b3e7b591ad03abd7e1918d4df630b265e044018118f911a4562143975644f89a4fa91076ac1d79a06741e040c70c4ea2cb8fca61e3adb2a701a5e75
7
- data.tar.gz: 0296d1b129185658061d6b7c2c1432eed43aae4e569ef5f0b06d4cffd813bf2420e4bf40ca133d81345f8faf8677e9c3a05057f81fd72d010c8f42e69d1b6cc4
6
+ metadata.gz: 168c66e33986ff8822d988992991ea83dabd649ada9a7d7382e7106f041c148e17c711abcd669949729f3684890fc378071149b9c47b7b178b4ccc19fe267bb0
7
+ data.tar.gz: ec215186c4ca682f8c7cf1391c8c074fe4e6ce805635b69b1bc393e1d66455d09c9b319485040064689044c53ba483b1402bed1f9357e85cc8452d37d48c8d46
@@ -80,7 +80,8 @@ module MIPPeR
80
80
  # Store all the variables in the model
81
81
  # Most of the work will be done when we add the constraints
82
82
  vars.each do |var|
83
- var.instance_variable_set :@model, self
83
+ var.model = self
84
+ var.index = @variables.count
84
85
  @variables << var
85
86
  end
86
87
  end
@@ -117,7 +118,8 @@ module MIPPeR
117
118
  # Store the index which will be used for each constraint
118
119
  def store_constraint_indexes(constrs)
119
120
  constrs.each do |constr|
120
- constr.instance_variable_set :@index, @constr_count
121
+ constr.model = self
122
+ constr.index = @constr_count
121
123
  @constr_count += 1
122
124
  end
123
125
  end
@@ -137,7 +139,7 @@ module MIPPeR
137
139
 
138
140
  var.constraints.each do |constr|
139
141
  col_start += 1
140
- index << constr.instance_variable_get(:@index)
142
+ index << constr.index
141
143
  value << constr.expression.terms[var]
142
144
  end
143
145
  end
@@ -156,7 +158,8 @@ module MIPPeR
156
158
 
157
159
  # We store variables now since they didn't exist earlier
158
160
  vars.each_with_index do |var, i|
159
- var.instance_variable_set(:@index, i)
161
+ var.index = i
162
+ var.model = self
160
163
  store_variable var
161
164
  end
162
165
  end
@@ -178,7 +181,7 @@ module MIPPeR
178
181
  dblptr = Cbc.Cbc_getColSolution @ptr
179
182
  values = dblptr.read_array_of_double(@variables.length)
180
183
  variable_values = Hash[@variables.map do |var|
181
- [var.name, values[var.index]]
184
+ [var.index, values[var.index]]
182
185
  end]
183
186
  else
184
187
  objective_value = nil
@@ -201,12 +204,11 @@ module MIPPeR
201
204
  # Save the constraint to the model and update the constraint pointers
202
205
  def store_constraint(constr)
203
206
  # Update the constraint to track the index in the model
204
- index = constr.instance_variable_get(:@index)
205
- constr.instance_variable_set :@model, self
207
+ constr.model = self
206
208
 
207
209
  # Set constraint properties
208
- Cbc.Cbc_setRowName(@ptr, index, constr.name) unless constr.name.nil?
209
- store_constraint_bounds index, constr.sense, constr.rhs
210
+ Cbc.Cbc_setRowName(@ptr, constr.index, constr.name) unless constr.name.nil?
211
+ store_constraint_bounds constr.index, constr.sense, constr.rhs
210
212
  end
211
213
 
212
214
  # Store the bounds for a given constraint
@@ -1,5 +1,6 @@
1
1
  module MIPPeR
2
2
  class Constraint
3
+ attr_accessor :model, :index
3
4
  attr_reader :expression, :sense, :rhs, :name
4
5
 
5
6
  def initialize(expr, sense, rhs, name = nil)
@@ -92,8 +92,8 @@ module MIPPeR
92
92
  constrs.each do |constr|
93
93
  store_constraint constr
94
94
  constr.expression.terms.each do |var, coeff|
95
- @ia << constr.instance_variable_get(:@index)
96
- @ja << var.instance_variable_get(:@index)
95
+ @ia << constr.index
96
+ @ja << var.index
97
97
  @ar << coeff
98
98
  end
99
99
  end
@@ -125,7 +125,7 @@ module MIPPeR
125
125
  objective_value = GLPK.glp_mip_obj_val @ptr
126
126
  variable_values = Hash[@variables.map do |var|
127
127
  value = GLPK.glp_mip_col_val(@ptr, var.index)
128
- [var.name, value]
128
+ [var.index, value]
129
129
  end]
130
130
  else
131
131
  objective_value = nil
@@ -139,8 +139,9 @@ module MIPPeR
139
139
  def store_constraint(constr)
140
140
  # Update the constraint to track the index in the model
141
141
  index = @constr_count + 1
142
- constr.instance_variable_set :@model, self
143
- constr.instance_variable_set :@index, index
142
+ constr.model = self
143
+ constr.index = index
144
+ constr.freeze
144
145
  @constr_count += 1
145
146
 
146
147
  # Set constraint properties
@@ -166,8 +167,8 @@ module MIPPeR
166
167
  def store_variable(var)
167
168
  # Update the variable to track the index in the model
168
169
  index = @var_count + 1
169
- var.instance_variable_set :@model, self
170
- var.instance_variable_set :@index, index
170
+ var.model = self
171
+ var.index = index
171
172
  @var_count += 1
172
173
 
173
174
  @variables << var
@@ -151,14 +151,19 @@ module MIPPeR
151
151
  sense_buffer, rhs_buffer, names_buffer
152
152
  fail if ret != 0
153
153
 
154
- @constraints.concat constrs
154
+ constrs.each do |constr|
155
+ constr.model = self
156
+ constr.index = @constraints.length
157
+ constr.freeze
158
+ @constraints << constr
159
+ end
155
160
  end
156
161
 
157
162
  # Add a new constraint to the model
158
163
  def add_constraint(constr)
159
164
  terms = constr.expression.terms
160
165
  indexes_buffer = build_pointer_array(terms.each_key.map do |var|
161
- var.instance_variable_get(:@index)
166
+ var.index
162
167
  end, :int)
163
168
  values_buffer = build_pointer_array terms.values, :double
164
169
 
@@ -168,6 +173,9 @@ module MIPPeR
168
173
  constr.rhs, constr.name
169
174
  fail if ret != 0
170
175
 
176
+ constr.model = self
177
+ constr.index = @constraints.length
178
+ constr.freeze
171
179
  @constraints << constr
172
180
  end
173
181
 
@@ -186,7 +194,7 @@ module MIPPeR
186
194
  constrs.each.map do |constr|
187
195
  cbeg << cind.length
188
196
  constr.expression.terms.each do |var, coeff|
189
- cind << var.instance_variable_get(:@index)
197
+ cind << var.index
190
198
  cval << coeff
191
199
  end
192
200
  end
@@ -205,7 +213,7 @@ module MIPPeR
205
213
  Gurobi.GRBgetdblattrarray @ptr, Gurobi::GRB_DBL_ATTR_X,
206
214
  var.index, 1, dblptr
207
215
  value = dblptr.read_array_of_double(1)[0]
208
- [var.name, value]
216
+ [var.index, value]
209
217
  end]
210
218
  else
211
219
  objective_value = nil
@@ -218,8 +226,8 @@ module MIPPeR
218
226
  # Save the variable to the model and update the variable pointers
219
227
  def store_variable(var)
220
228
  # Update the variable to track the index in the model
221
- var.instance_variable_set :@model, self
222
- var.instance_variable_set :@index, @var_count
229
+ var.model = self
230
+ var.index = @var_count
223
231
  @var_count += 1
224
232
 
225
233
  @variables << var
@@ -73,7 +73,7 @@ module MIPPeR
73
73
  colno = []
74
74
  constr.expression.terms.each do |var, coeff|
75
75
  row << coeff * 1.0
76
- colno << var.instance_variable_get(:@index)
76
+ colno << var.index
77
77
  end
78
78
 
79
79
  row_buffer = build_pointer_array row, :double
@@ -102,7 +102,7 @@ module MIPPeR
102
102
  rows = LPSolve.get_Nrows(@ptr)
103
103
  variable_values = Hash[@variables.map do |var|
104
104
  value = LPSolve.get_var_primalresult @ptr, rows + var.index
105
- [var.name, value]
105
+ [var.index, value]
106
106
  end]
107
107
  else
108
108
  objective_value = nil
@@ -116,8 +116,9 @@ module MIPPeR
116
116
  def store_constraint(constr)
117
117
  # Update the constraint to track the index in the model
118
118
  index = LPSolve.get_Nrows(@ptr)
119
- constr.instance_variable_set :@model, self
120
- constr.instance_variable_set :@index, index
119
+ constr.model = self
120
+ constr.index = index
121
+ constr.freeze
121
122
  @constr_count += 1
122
123
 
123
124
  # Set constraint properties
@@ -144,8 +145,9 @@ module MIPPeR
144
145
  def store_variable(var)
145
146
  # Update the variable to track the index in the model
146
147
  index = @var_count + 1
147
- var.instance_variable_set :@model, self
148
- var.instance_variable_set :@index, index
148
+ var.model = self
149
+ var.index = index
150
+ var.freeze
149
151
  @var_count += 1
150
152
 
151
153
  ret = LPSolve.add_columnex @ptr, 0, nil, nil
@@ -73,7 +73,7 @@ module MIPPeR
73
73
 
74
74
  # Get the value of a variable from a previous solution
75
75
  def variable_value(var)
76
- @solution.variable_values[var.name] unless @solution.nil?
76
+ @solution.variable_values[var.index] unless @solution.nil?
77
77
  end
78
78
 
79
79
  protected
@@ -1,8 +1,7 @@
1
1
  module MIPPeR
2
2
  class Variable
3
- attr_accessor :constraints
4
- attr_reader :lower_bound, :upper_bound, :coefficient, :type, :name, :model,
5
- :index
3
+ attr_accessor :constraints, :model, :index
4
+ attr_reader :lower_bound, :upper_bound, :coefficient, :type, :name
6
5
 
7
6
  def initialize(lb, ub, coeff, type, name = nil)
8
7
  @lower_bound = lb
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mipper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Mior
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-22 00:00:00.000000000 Z
11
+ date: 2016-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -56,7 +56,7 @@ files:
56
56
  - lib/mipper/variable.rb
57
57
  homepage: https://github.com/michaelmior/mipper
58
58
  licenses:
59
- - GPLv3
59
+ - GPL-3.0
60
60
  metadata: {}
61
61
  post_install_message:
62
62
  rdoc_options: []
@@ -74,9 +74,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
74
  version: '0'
75
75
  requirements: []
76
76
  rubyforge_project:
77
- rubygems_version: 2.4.6
77
+ rubygems_version: 2.5.1
78
78
  signing_key:
79
79
  specification_version: 4
80
80
  summary: A Ruby interface to various MIP solvers
81
81
  test_files: []
82
- has_rdoc: