@@ -9,11 +9,11 @@ const CI = MOI.ConstraintIndex
9
9
const SVF = MOI. SingleVariable
10
10
const SAF = MOI. ScalarAffineFunction{Float64}
11
11
# supported sets
12
- const Bounds = Union{MOI. EqualTo{Float64}, MOI. GreaterThan{Float64},
12
+ const BOUNDS = Union{MOI. EqualTo{Float64}, MOI. GreaterThan{Float64},
13
13
MOI. LessThan{Float64}, MOI. Interval{Float64}}
14
- const VarTypes = Union{MOI. ZeroOne, MOI. Integer}
14
+ const VAR_TYPES = Union{MOI. ZeroOne, MOI. Integer}
15
15
# other MOI types
16
- const AffTerm = MOI. ScalarAffineTerm{Float64}
16
+ const AFF_TERM = MOI. ScalarAffineTerm{Float64}
17
17
18
18
const PtrMap = Dict{Ptr{Cvoid}, Union{VarRef, ConsRef}}
19
19
const ConsTypeMap = Dict{Tuple{DataType, DataType}, Vector{ConsRef}}
85
85
MOI. get (:: Optimizer , :: MOI.SolverName ) = " SCIP"
86
86
87
87
# variable bounds
88
- MOI. supports_constraint (o:: Optimizer , :: Type{SVF} , :: Type{<:Bounds } ) = true
88
+ MOI. supports_constraint (o:: Optimizer , :: Type{SVF} , :: Type{<:BOUNDS } ) = true
89
89
# variable types (binary, integer)
90
- MOI. supports_constraint (o:: Optimizer , :: Type{SVF} , :: Type{<:VarTypes } ) = true
90
+ MOI. supports_constraint (o:: Optimizer , :: Type{SVF} , :: Type{<:VAR_TYPES } ) = true
91
91
# linear constraints
92
- MOI. supports_constraint (o:: Optimizer , :: Type{SAF} , :: Type{<:Bounds } ) = true
92
+ MOI. supports_constraint (o:: Optimizer , :: Type{SAF} , :: Type{<:BOUNDS } ) = true
93
93
94
94
MOI. supports (:: Optimizer , :: MOI.ObjectiveSense ) = true
95
95
MOI. supports (:: Optimizer , :: MOI.ObjectiveFunction{SAF} ) = true
154
154
155
155
scip_vartype (:: Type{MOI.ZeroOne} ) = SCIP_VARTYPE_BINARY
156
156
scip_vartype (:: Type{MOI.Integer} ) = SCIP_VARTYPE_INTEGER
157
- function MOI. add_constraint (o:: Optimizer , func:: SVF , set:: S ) where {S <: VarTypes }
157
+ function MOI. add_constraint (o:: Optimizer , func:: SVF , set:: S ) where {S <: VAR_TYPES }
158
158
allow_modification (o)
159
159
v = var (o, func. variable)
160
160
infeasible = Ref{Ptr{SCIP_Bool}}
@@ -169,7 +169,7 @@ function MOI.add_constraint(o::Optimizer, func::SVF, set::S) where {S <: VarType
169
169
return register! (o, CI {SVF, S} (i))
170
170
end
171
171
172
- function MOI. add_constraint (o:: Optimizer , func:: SVF , set:: S ) where S <: Bounds
172
+ function MOI. add_constraint (o:: Optimizer , func:: SVF , set:: S ) where S <: BOUNDS
173
173
allow_modification (o)
174
174
v = var (o, func. variable)
175
175
lb, ub = bounds (set)
@@ -180,7 +180,7 @@ function MOI.add_constraint(o::Optimizer, func::SVF, set::S) where S <: Bounds
180
180
return register! (o, CI {SVF, S} (i))
181
181
end
182
182
183
- function MOI. set (o:: SCIP.Optimizer , :: MOI.ConstraintSet , ci:: CI{SVF,S} , set:: S ) where {S <: Bounds }
183
+ function MOI. set (o:: SCIP.Optimizer , :: MOI.ConstraintSet , ci:: CI{SVF,S} , set:: S ) where {S <: BOUNDS }
184
184
allow_modification (o)
185
185
v = var (o, VI (ci. value)) # cons index is actually var index
186
186
lb, ub = bounds (set)
@@ -189,11 +189,11 @@ function MOI.set(o::SCIP.Optimizer, ::MOI.ConstraintSet, ci::CI{SVF,S}, set::S)
189
189
return nothing
190
190
end
191
191
192
- function MOI. is_valid (o:: Optimizer , ci:: CI{SVF,<:Bounds } )
192
+ function MOI. is_valid (o:: Optimizer , ci:: CI{SVF,<:BOUNDS } )
193
193
return 1 <= ci. value <= length (o. mscip. vars)
194
194
end
195
195
196
- function MOI. add_constraint (o:: Optimizer , func:: SAF , set:: S ) where {S <: Bounds }
196
+ function MOI. add_constraint (o:: Optimizer , func:: SAF , set:: S ) where {S <: BOUNDS }
197
197
if func. constant != 0.0
198
198
msg = " SCIP does not support linear constraints with a constant offset."
199
199
throw (MOI. AddConstraintNotAllowed {SAF, S} (msg))
@@ -215,7 +215,7 @@ function MOI.add_constraint(o::Optimizer, func::SAF, set::S) where {S <: Bounds}
215
215
return ci
216
216
end
217
217
218
- function MOI. set (o:: SCIP.Optimizer , :: MOI.ConstraintSet , ci:: CI{SAF,S} , set:: S ) where {S <: Bounds }
218
+ function MOI. set (o:: SCIP.Optimizer , :: MOI.ConstraintSet , ci:: CI{SAF,S} , set:: S ) where {S <: BOUNDS }
219
219
allow_modification (o)
220
220
221
221
lhs, rhs = bounds (set)
@@ -228,46 +228,46 @@ function MOI.set(o::SCIP.Optimizer, ::MOI.ConstraintSet, ci::CI{SAF,S}, set::S)
228
228
return nothing
229
229
end
230
230
231
- function MOI. is_valid (o:: Optimizer , ci:: CI{SAF,<:Bounds } )
231
+ function MOI. is_valid (o:: Optimizer , ci:: CI{SAF,<:BOUNDS } )
232
232
return 1 <= ci. value <= length (o. mscip. cons)
233
233
end
234
234
235
235
function MOI. get (o:: Optimizer , :: MOI.NumberOfConstraints{F,S} ) where {F,S}
236
236
return haskey (o. constypes, (F, S)) ? length (o. constypes[F, S]) : 0
237
237
end
238
238
239
- function MOI. get (o:: Optimizer , :: MOI.ConstraintFunction , ci:: CI{SVF, S} ) where S <: Bounds
239
+ function MOI. get (o:: Optimizer , :: MOI.ConstraintFunction , ci:: CI{SVF, S} ) where S <: BOUNDS
240
240
return SVF (ci)
241
241
end
242
242
243
- function MOI. get (o:: Optimizer , :: MOI.ConstraintSet , ci:: CI{SVF, S} ) where S <: Bounds
243
+ function MOI. get (o:: Optimizer , :: MOI.ConstraintSet , ci:: CI{SVF, S} ) where S <: BOUNDS
244
244
v = var (o. mscip, ci. value)
245
245
lb, ub = SCIPvarGetLbOriginal (v), SCIPvarGetUbOriginal (v)
246
246
return from_bounds (S, lb, ub)
247
247
end
248
248
249
- function MOI. get (o:: Optimizer , :: MOI.ConstraintFunction , ci:: CI{SAF, S} ) where S <: Bounds
249
+ function MOI. get (o:: Optimizer , :: MOI.ConstraintFunction , ci:: CI{SAF, S} ) where S <: BOUNDS
250
250
s, cons = scip (o), cons (o, ci)
251
251
nvars:: Int = SCIPgetNVarsLinear (s, cons)
252
252
vars = unsafe_wrap (Array{Ptr{SCIP_VAR}}, SCIPgetVarsLinear (s, cons), nvars)
253
253
vals = unsafe_wrap (Array{Float64}, SCIPgetValsLinear (s, cons), nvars)
254
254
255
- terms = [AffTerm (vals[i], VI (ref (o, vars[i]). val)) for i= 1 : nvars]
255
+ terms = [AFF_TERM (vals[i], VI (ref (o, vars[i]). val)) for i= 1 : nvars]
256
256
# can not identify constant anymore (is merged with lhs,rhs)
257
257
return SAF (terms, 0.0 )
258
258
end
259
259
260
- function MOI. get (o:: Optimizer , :: MOI.ConstraintSet , ci:: CI{SAF, S} ) where S <: Bounds
260
+ function MOI. get (o:: Optimizer , :: MOI.ConstraintSet , ci:: CI{SAF, S} ) where S <: BOUNDS
261
261
lhs = SCIPgetLhsLinear (scip (o), cons (o, ci))
262
262
rhs = SCIPgetRhsLinear (scip (o), cons (o, ci))
263
263
return from_bounds (S, lhs, rhs)
264
264
end
265
265
266
- function MOI. get (o:: Optimizer , :: MOI.ConstraintName , ci:: CI{SAF,<:Bounds } )
266
+ function MOI. get (o:: Optimizer , :: MOI.ConstraintName , ci:: CI{SAF,<:BOUNDS } )
267
267
return SCIPconsGetName (cons (o, ci))
268
268
end
269
269
270
- function MOI. set (o:: Optimizer , :: MOI.ConstraintName , ci:: CI{SAF,<:Bounds } , name:: String )
270
+ function MOI. set (o:: Optimizer , :: MOI.ConstraintName , ci:: CI{SAF,<:BOUNDS } , name:: String )
271
271
@SC SCIPchgConsName (scip (o), cons (o, ci), name)
272
272
return nothing
273
273
end
@@ -295,11 +295,11 @@ function MOI.set(o::Optimizer, ::MOI.ObjectiveFunction{SAF}, obj::SAF)
295
295
end
296
296
297
297
function MOI. get (o:: Optimizer , :: MOI.ObjectiveFunction{SAF} )
298
- terms = AffTerm []
298
+ terms = AFF_TERM []
299
299
for i = 1 : length (o. mscip. vars)
300
300
vi = VI (i)
301
301
coef = SCIPvarGetObj (var (o, vi))
302
- coef == 0.0 || push! (terms, AffTerm (coef, vi))
302
+ coef == 0.0 || push! (terms, AFF_TERM (coef, vi))
303
303
end
304
304
constant = SCIPgetOrigObjoffset (scip (o))
305
305
return SAF (terms, constant)
@@ -321,7 +321,7 @@ function MOI.get(o::Optimizer, ::MOI.ObjectiveSense)
321
321
return SCIPgetObjsense (scip (o)) == SCIP_OBJSENSE_MAXIMIZE ? MOI. MAX_SENSE : MOI. MIN_SENSE
322
322
end
323
323
324
- function MOI. modify (o:: Optimizer , ci:: CI{SAF, <:Bounds } ,
324
+ function MOI. modify (o:: Optimizer , ci:: CI{SAF, <:BOUNDS } ,
325
325
change:: MOI.ScalarCoefficientChange{Float64} )
326
326
allow_modification (o)
327
327
@SC SCIPchgCoefLinear (scip (o), cons (o, ci),
@@ -386,11 +386,11 @@ function MOI.get(o::Optimizer, ::MOI.VariablePrimal, vi::VI)
386
386
return SCIPgetSolVal (scip (o), SCIPgetBestSol (scip (o)), var (o, vi))
387
387
end
388
388
389
- function MOI. get (o:: Optimizer , :: MOI.ConstraintPrimal , ci:: CI{SVF,<:Bounds } )
389
+ function MOI. get (o:: Optimizer , :: MOI.ConstraintPrimal , ci:: CI{SVF,<:BOUNDS } )
390
390
return SCIPgetSolVal (scip (o), SCIPgetBestSol (scip (o)), var (o, VI (ci. value)))
391
391
end
392
392
393
- function MOI. get (o:: Optimizer , :: MOI.ConstraintPrimal , ci:: CI{SAF,<:Bounds } )
393
+ function MOI. get (o:: Optimizer , :: MOI.ConstraintPrimal , ci:: CI{SAF,<:BOUNDS } )
394
394
return SCIPgetActivityLinear (scip (o), cons (o, ci), SCIPgetBestSol (scip (o)))
395
395
end
396
396
0 commit comments