@@ -159,68 +159,95 @@ end
159
159
end
160
160
161
161
162
- mutable struct OrderingConstrainedVariablesModel <: MOI.ModelLike
162
+ abstract type AbstractConstrainedVariablesModel <: MOI.ModelLike end
163
+ mutable struct OrderConstrainedVariablesModel <: AbstractConstrainedVariablesModel
163
164
constraintIndices :: Array{MOI.ConstraintIndex}
164
165
inner :: MOIU.Model{Float64}
165
- OrderingConstrainedVariablesModel () = new (MOI. ConstraintIndex[], MOIU. Model {Float64} ())
166
+ OrderConstrainedVariablesModel () = new (MOI. ConstraintIndex[], MOIU. Model {Float64} ())
167
+ end
168
+ mutable struct ReverseOrderConstrainedVariablesModel <: AbstractConstrainedVariablesModel
169
+ constraintIndices :: Array{MOI.ConstraintIndex}
170
+ inner :: MOIU.Model{Float64}
171
+ ReverseOrderConstrainedVariablesModel () = new (MOI. ConstraintIndex[], MOIU. Model {Float64} ())
166
172
end
167
173
168
174
169
175
170
- MOI. add_variables (model:: OrderingConstrainedVariablesModel , n) = MOI. add_variables (model. inner, n)
171
- MOI. add_variable (model:: OrderingConstrainedVariablesModel ) = MOI. add_variable (model. inner)
176
+ MOI. add_variables (model:: AbstractConstrainedVariablesModel , n) = MOI. add_variables (model. inner, n)
177
+ MOI. add_variable (model:: AbstractConstrainedVariablesModel ) = MOI. add_variable (model. inner)
172
178
173
- function MOI. add_constraint (model:: OrderingConstrainedVariablesModel , f:: F , s:: S ) where {F<: MOI.AbstractFunction , S<: MOI.AbstractSet }
179
+ function MOI. add_constraint (model:: AbstractConstrainedVariablesModel , f:: F , s:: S ) where {F<: MOI.AbstractFunction , S<: MOI.AbstractSet }
174
180
ci = MOI. add_constraint (model. inner, f, s)
175
181
push! (model. constraintIndices, ci)
176
182
return ci
177
183
end
178
184
179
- function MOI. copy_to (dest:: OrderingConstrainedVariablesModel , src:: MOI.ModelLike ; kws... )
185
+ function MOI. copy_to (dest:: AbstractConstrainedVariablesModel , src:: MOI.ModelLike ; kws... )
180
186
MOIU. automatic_copy_to (dest, src; kws... )
181
187
end
182
188
183
- MOIU. supports_default_copy_to (model:: OrderingConstrainedVariablesModel , :: Bool ) = true
189
+ MOIU. supports_default_copy_to (model:: AbstractConstrainedVariablesModel , :: Bool ) = true
184
190
185
- function MOI. empty! (model:: OrderingConstrainedVariablesModel )
191
+ function MOI. empty! (model:: AbstractConstrainedVariablesModel )
186
192
model. constraintIndices = MOI. ConstraintIndex[]
187
193
MOI. empty! (model. inner)
188
194
end
189
195
190
196
191
- MOI. supports_constraint (:: OrderingConstrainedVariablesModel , :: Type{MOI.VectorOfVariables} , :: Type{MOI.Nonnegatives} ) = false
192
- MOI. supports_add_constrained_variables (:: OrderingConstrainedVariablesModel , :: Type{MOI.Nonnegatives} ) = true
197
+ MOI. supports_constraint (:: OrderConstrainedVariablesModel , :: Type{MOI.VectorOfVariables} , :: Type{MOI.Nonnegatives} ) = false
198
+ MOI. supports_add_constrained_variables (:: OrderConstrainedVariablesModel , :: Type{MOI.Nonnegatives} ) = true
199
+ MOI. supports_constraint (:: OrderConstrainedVariablesModel , :: Type{MOI.VectorOfVariables} , :: Type{MOI.Nonnegatives} ) = true
200
+ MOI. supports_add_constrained_variables (:: OrderConstrainedVariablesModel , :: Type{MOI.Nonpositives} ) = false
201
+
202
+ MOI. supports_constraint (:: ReverseOrderConstrainedVariablesModel , :: Type{MOI.VectorOfVariables} , :: Type{MOI.Nonnegatives} ) = true
203
+ MOI. supports_add_constrained_variables (:: ReverseOrderConstrainedVariablesModel , :: Type{MOI.Nonnegatives} ) = false
204
+ MOI. supports_constraint (:: ReverseOrderConstrainedVariablesModel , :: Type{MOI.VectorOfVariables} , :: Type{MOI.Nonnegatives} ) = false
205
+ MOI. supports_add_constrained_variables (:: ReverseOrderConstrainedVariablesModel , :: Type{MOI.Nonpositives} ) = true
193
206
194
- MOI. supports_constraint (:: OrderingConstrainedVariablesModel , :: Type{MOI.VectorOfVariables} , :: Type{MOI.Nonnegatives} ) = true
195
- MOI. supports_add_constrained_variables (:: OrderingConstrainedVariablesModel , :: Type{MOI.Nonpositives} ) = false
196
207
197
- MOI. supports_constraint (:: OrderingConstrainedVariablesModel , :: Type{MOI.SingleVariable} , :: Type{<:MOI.GreaterThan} ) = true
198
- MOI. supports_add_constrained_variable (:: OrderingConstrainedVariablesModel , :: Type{<:MOI.GreaterThan} ) = false
208
+ MOI. supports_constraint (:: OrderConstrainedVariablesModel , :: Type{MOI.SingleVariable} , :: Type{<:MOI.GreaterThan} ) = true
209
+ MOI. supports_add_constrained_variable (:: OrderConstrainedVariablesModel , :: Type{<:MOI.GreaterThan} ) = false
210
+ MOI. supports_constraint (:: OrderConstrainedVariablesModel , :: Type{MOI.SingleVariable} , :: Type{<:MOI.LessThan} ) = false
211
+ MOI. supports_add_constrained_variable (:: OrderConstrainedVariablesModel , :: Type{<:MOI.LessThan} ) = true
199
212
200
- MOI. supports_constraint (:: OrderingConstrainedVariablesModel , :: Type{MOI.SingleVariable} , :: Type{<:MOI.LessThan} ) = false
201
- MOI. supports_add_constrained_variable (:: OrderingConstrainedVariablesModel , :: Type{<:MOI.LessThan} ) = true
213
+ MOI. supports_constraint (:: ReverseOrderConstrainedVariablesModel , :: Type{MOI.SingleVariable} , :: Type{<:MOI.GreaterThan} ) = false
214
+ MOI. supports_add_constrained_variable (:: ReverseOrderConstrainedVariablesModel , :: Type{<:MOI.GreaterThan} ) = true
215
+ MOI. supports_constraint (:: ReverseOrderConstrainedVariablesModel , :: Type{MOI.SingleVariable} , :: Type{<:MOI.LessThan} ) = true
216
+ MOI. supports_add_constrained_variable (:: ReverseOrderConstrainedVariablesModel , :: Type{<:MOI.LessThan} ) = false
202
217
203
218
204
219
@testset " Create variables using supports_add_constrained_variable(s) (#987)" begin
205
220
# With vectors
206
221
src = MOIU. Model {Float64} ()
207
222
a, c1 = MOI. add_constrained_variables (src, MOI. Nonpositives (3 ))
208
223
c2 = MOI. add_constraint (src, a, MOI. Nonnegatives (3 ))
209
- dest = OrderingConstrainedVariablesModel ()
210
224
211
- index_map = MOI. copy_to (dest, src)
212
225
226
+ dest = OrderConstrainedVariablesModel ()
227
+ index_map = MOI. copy_to (dest, src)
213
228
@test typeof (c1) == typeof (dest. constraintIndices[2 ])
214
229
@test typeof (c2) == typeof (dest. constraintIndices[1 ])
215
230
231
+ dest = ReverseOrderConstrainedVariablesModel ()
232
+ index_map = MOI. copy_to (dest, src)
233
+ @test typeof (c1) == typeof (dest. constraintIndices[1 ])
234
+ @test typeof (c2) == typeof (dest. constraintIndices[2 ])
235
+
236
+
237
+
216
238
# With single variables
217
239
src = MOIU. Model {Float64} ()
218
240
a, c1 = MOI. add_constrained_variable (src, MOI. GreaterThan {Float64} (5.0 ))
219
241
c2 = MOI. add_constraint (src, a, MOI. LessThan {Float64} (1.0 ))
220
- dest = OrderingConstrainedVariablesModel ()
221
242
222
- index_map = MOI. copy_to (dest, src)
223
243
244
+ dest = OrderConstrainedVariablesModel ()
245
+ index_map = MOI. copy_to (dest, src)
224
246
@test typeof (c1) == typeof (dest. constraintIndices[2 ])
225
247
@test typeof (c2) == typeof (dest. constraintIndices[1 ])
248
+
249
+ dest = ReverseOrderConstrainedVariablesModel ()
250
+ index_map = MOI. copy_to (dest, src)
251
+ @test typeof (c1) == typeof (dest. constraintIndices[1 ])
252
+ @test typeof (c2) == typeof (dest. constraintIndices[2 ])
226
253
end
0 commit comments