@@ -160,31 +160,20 @@ end
160
160
161
161
162
162
mutable struct OrderingConstrainedVariablesModel <: MOI.ModelLike
163
- lastConstraintIndex :: Int
164
- lastVarIndex :: Int
165
- OrderingConstrainedVariablesModel () = new (0 , 0 )
163
+ constraintIndices :: Array{MOI.ConstraintIndex}
164
+ inner :: MOIU.Model{Float64}
165
+ OrderingConstrainedVariablesModel () = new (MOI . ConstraintIndex[], MOIU . Model {Float64} () )
166
166
end
167
167
168
168
169
169
170
- function MOI. add_variables (model:: OrderingConstrainedVariablesModel , n)
171
- m = model. lastVarIndex
172
- model. lastVarIndex += n
173
- return MOI. VariableIndex .(m .+ (1 : n))
174
- end
175
- function MOI. add_variable (model:: OrderingConstrainedVariablesModel )
176
- return MOI. VariableIndex .(model. lastVarIndex += 1 )
177
- end
170
+ MOI. add_variables (model:: OrderingConstrainedVariablesModel , n) = MOI. add_variables (model. inner, n)
171
+ MOI. add_variable (model:: OrderingConstrainedVariablesModel ) = MOI. add_variable (model. inner)
178
172
179
- function MOI. add_constraint (model:: OrderingConstrainedVariablesModel ,
180
- func:: MOI.VectorOfVariables ,
181
- set:: MOI.AbstractVectorSet )
182
- return MOI. ConstraintIndex {typeof(func), typeof(set)} (model. lastConstraintIndex += 1 )
183
- end
184
- function MOI. add_constraint (model:: OrderingConstrainedVariablesModel ,
185
- func:: MOI.SingleVariable ,
186
- set:: MOI.AbstractScalarSet )
187
- return MOI. ConstraintIndex {typeof(func), typeof(set)} (model. lastConstraintIndex += 1 )
173
+ function MOI. add_constraint (model:: OrderingConstrainedVariablesModel , f:: F , s:: S ) where {F<: MOI.AbstractFunction , S<: MOI.AbstractSet }
174
+ ci = MOI. add_constraint (model. inner, f, s)
175
+ push! (model. constraintIndices, ci)
176
+ return ci
188
177
end
189
178
190
179
function MOI. copy_to (dest:: OrderingConstrainedVariablesModel , src:: MOI.ModelLike ; kws... )
194
183
MOIU. supports_default_copy_to (model:: OrderingConstrainedVariablesModel , :: Bool ) = true
195
184
196
185
function MOI. empty! (model:: OrderingConstrainedVariablesModel )
197
- model. lastConstraintIndex = 0
198
- model. lastVarIndex = 0
186
+ model. constraintIndices = MOI . ConstraintIndex[]
187
+ MOI . empty! ( model. inner)
199
188
end
200
189
201
190
@@ -205,11 +194,12 @@ MOI.supports_add_constrained_variables(::OrderingConstrainedVariablesModel, ::Ty
205
194
MOI. supports_constraint (:: OrderingConstrainedVariablesModel , :: Type{MOI.VectorOfVariables} , :: Type{MOI.Nonnegatives} ) = true
206
195
MOI. supports_add_constrained_variables (:: OrderingConstrainedVariablesModel , :: Type{MOI.Nonpositives} ) = false
207
196
208
- MOI. supports_constraint (:: OrderingConstrainedVariablesModel , :: Type{MOI.SingleVariable} , :: Type{MOI.GreaterThan} ) = false
209
- MOI. supports_add_constrained_variable (:: OrderingConstrainedVariablesModel , :: Type{MOI.GreaterThan} ) = true
197
+ MOI. supports_constraint (:: OrderingConstrainedVariablesModel , :: Type{MOI.SingleVariable} , :: Type{MOI.GreaterThan{Float64}} ) = true
198
+ MOI. supports_add_constrained_variable (:: OrderingConstrainedVariablesModel , :: Type{MOI.GreaterThan{Float64}} ) = false
199
+
200
+ MOI. supports_constraint (:: OrderingConstrainedVariablesModel , :: Type{MOI.SingleVariable} , :: Type{MOI.LessThan{Float64}} ) = false
201
+ MOI. supports_add_constrained_variable (:: OrderingConstrainedVariablesModel , :: Type{MOI.LessThan{Float64}} ) = true
210
202
211
- MOI. supports_constraint (:: OrderingConstrainedVariablesModel , :: Type{MOI.SingleVariable} , :: Type{MOI.LessThan} ) = true
212
- MOI. supports_add_constrained_variable (:: OrderingConstrainedVariablesModel , :: Type{MOI.LessThan} ) = false
213
203
214
204
@testset " Create variables using supports_add_constrained_variable(s) (#987)" begin
215
205
# With vectors
@@ -220,17 +210,17 @@ MOI.supports_add_constrained_variable(::OrderingConstrainedVariablesModel, ::Typ
220
210
221
211
index_map = MOI. copy_to (dest, src)
222
212
223
- @test index_map[c1] . value == 2
224
- @test index_map[c2] . value == 1
213
+ @test typeof (c1) == typeof (dest . constraintIndices[ 2 ])
214
+ @test typeof (c2) == typeof (dest . constraintIndices[ 1 ])
225
215
226
216
# With single variables
227
217
src = MOIU. Model {Float64} ()
228
- a, c1 = MOI. add_constrained_variable (src, MOI. LessThan (5.0 ))
229
- c2 = MOI. add_constraint (src, a, MOI. GreaterThan (1.0 ))
218
+ a, c1 = MOI. add_constrained_variable (src, MOI. GreaterThan {Float64} (5.0 ))
219
+ c2 = MOI. add_constraint (src, a, MOI. LessThan {Float64} (1.0 ))
230
220
dest = OrderingConstrainedVariablesModel ()
231
221
232
222
index_map = MOI. copy_to (dest, src)
233
223
234
- @test index_map[c1] . value == 2
235
- @test index_map[c2] . value == 1
224
+ @test typeof (c1) == typeof (dest . constraintIndices[ 2 ])
225
+ @test typeof (c2) == typeof (dest . constraintIndices[ 1 ])
236
226
end
0 commit comments