@@ -92,34 +92,28 @@ function _add_set_data(cache, i, s::MOI.Interval{Float64})
92
92
return
93
93
end
94
94
95
- function _extract_bound_data (src, map, cache, s:: Type{S} ) where {S}
95
+ _add_set_data (cache, i, :: MOI.Integer ) = (cache. types[i] = _INTEGER)
96
+
97
+ _add_set_data (cache, i, :: MOI.ZeroOne ) = (cache. types[i] = _BINARY)
98
+
99
+ function _extract_variable_data (src, map, cache, :: Type{S} ) where {S}
100
+ ci_map = map. con_map[MOI. VariableIndex, S]
96
101
for ci in MOI. get (src, MOI. ListOfConstraintIndices {MOI.VariableIndex,S} ())
97
102
f = MOI. get (src, MOI. ConstraintFunction (), ci)
98
103
s = MOI. get (src, MOI. ConstraintSet (), ci)
99
104
column = map[f]. value
100
105
_add_set_data (cache, column, s)
101
- map[ci] = MOI. ConstraintIndex {MOI.VariableIndex,S} (column)
102
- end
103
- return
104
- end
105
-
106
- function _extract_type_data (src, map, cache, :: Type{S} ) where {S}
107
- for ci in MOI. get (src, MOI. ListOfConstraintIndices {MOI.VariableIndex,S} ())
108
- f = MOI. get (src, MOI. ConstraintFunction (), ci)
109
- column = map[f]. value
110
- cache. types[column] = S == MOI. Integer ? _INTEGER : _BINARY
111
- map[ci] = MOI. ConstraintIndex {MOI.VariableIndex,S} (column)
106
+ ci_map[ci] = MOI. ConstraintIndex {MOI.VariableIndex,S} (column)
112
107
end
113
108
return
114
109
end
115
110
116
111
function _extract_row_data (src, map, cache, :: Type{S} ) where {S}
112
+ F = MOI. ScalarAffineFunction{Float64}
113
+ ci_map = map. con_map[F, S]
117
114
nnz = length (cache. I)
118
115
row = nnz == 0 ? 1 : cache. I[end ] + 1
119
- for ci in MOI. get (
120
- src,
121
- MOI. ListOfConstraintIndices {MOI.ScalarAffineFunction{Float64},S} (),
122
- ):: Vector{MOI.ConstraintIndex{MOI.ScalarAffineFunction{Float64},S}}
116
+ for ci in MOI. get (src, MOI. ListOfConstraintIndices {F,S} ())
123
117
f = MOI. get (src, MOI. ConstraintFunction (), ci)
124
118
if ! MOI. Utilities. is_canonical (f)
125
119
f = MOI. Utilities. canonical (f)
@@ -136,7 +130,7 @@ function _extract_row_data(src, map, cache, ::Type{S}) where {S}
136
130
cache. J[nnz] = Cint (map[term. variable]. value:: Int64 )
137
131
cache. V[nnz] = term. coefficient
138
132
end
139
- map [ci] = MOI. ConstraintIndex {MOI.ScalarAffineFunction{Float64} ,S} (row)
133
+ ci_map [ci] = MOI. ConstraintIndex {F ,S} (row)
140
134
row += 1
141
135
end
142
136
return
@@ -160,7 +154,7 @@ function _add_all_variables(model::Optimizer, cache::_OptimizerCache)
160
154
N = length (cache. cl)
161
155
glp_add_cols (model, N)
162
156
sizehint! (model. variable_info, N)
163
- for i in 1 : N
157
+ @inbounds for i in 1 : N
164
158
bound = _get_moi_bound_type (cache. cl[i], cache. cu[i], cache. bounds[i])
165
159
CleverDicts. add_item (
166
160
model. variable_info,
@@ -193,7 +187,8 @@ function _add_all_constraints(dest::Optimizer, cache::_OptimizerCache)
193
187
offset (cache. V),
194
188
)
195
189
sizehint! (dest. affine_constraint_info, N)
196
- for (i, l, u) in zip (1 : N, cache. rl, cache. ru)
190
+ @inbounds for i in 1 : N
191
+ l, u = cache. rl[i], cache. ru[i]
197
192
if l == - Inf
198
193
glp_set_row_bnds (dest, i, GLP_UP, - GLP_DBL_MAX, u)
199
194
CleverDicts. add_item (
@@ -226,13 +221,13 @@ function MOI.copy_to(dest::Optimizer, src::MOI.ModelLike)
226
221
cache = _OptimizerCache (length (variables))
227
222
# Extract the problem data
228
223
# Variable bounds:
229
- _extract_bound_data (src, map, cache, MOI. GreaterThan{Float64})
230
- _extract_bound_data (src, map, cache, MOI. LessThan{Float64})
231
- _extract_bound_data (src, map, cache, MOI. EqualTo{Float64})
232
- _extract_bound_data (src, map, cache, MOI. Interval{Float64})
224
+ _extract_variable_data (src, map, cache, MOI. GreaterThan{Float64})
225
+ _extract_variable_data (src, map, cache, MOI. LessThan{Float64})
226
+ _extract_variable_data (src, map, cache, MOI. EqualTo{Float64})
227
+ _extract_variable_data (src, map, cache, MOI. Interval{Float64})
233
228
# Variable types:
234
- _extract_type_data (src, map, cache, MOI. Integer)
235
- _extract_type_data (src, map, cache, MOI. ZeroOne)
229
+ _extract_variable_data (src, map, cache, MOI. Integer)
230
+ _extract_variable_data (src, map, cache, MOI. ZeroOne)
236
231
# Affine constraints:
237
232
_extract_row_data (src, map, cache, MOI. GreaterThan{Float64})
238
233
_extract_row_data (src, map, cache, MOI. LessThan{Float64})
0 commit comments