@@ -88,7 +88,7 @@ function MOI.set(model::Optimizer, attr::MOI.ObjectiveFunction{<: SUPPORTED_OBJE
88
88
MOI. set (model. optimizer, attr, f)
89
89
end
90
90
91
- MOI. supports (:: Optimizer , :: MOI.ObjectiveSense ) = true
91
+ MOI. supports (model :: Optimizer , attr :: MOI.ObjectiveSense ) = MOI . supports (model . optimizer, attr)
92
92
93
93
function MOI. set (model:: Optimizer , attr:: MOI.ObjectiveSense , sense:: MOI.OptimizationSense )
94
94
model. diff = nothing
@@ -99,80 +99,111 @@ function MOI.get(model::Optimizer, attr::MOI.AbstractModelAttribute)
99
99
return MOI. get (model. optimizer, attr)
100
100
end
101
101
102
- function MOI. get (model:: Optimizer , attr:: MOI.ListOfConstraintIndices{F, S} ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
102
+ function MOI. get (
103
+ model:: Optimizer , attr:: MOI.ListOfConstraintIndices{F, S}
104
+ ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
103
105
return MOI. get (model. optimizer, attr)
104
106
end
105
107
106
- function MOI. get (model:: Optimizer , attr:: MOI.ConstraintSet , ci:: CI{F, S} ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
108
+ function MOI. get (
109
+ model:: Optimizer , attr:: MOI.ConstraintSet , ci:: CI{F, S}
110
+ ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
107
111
return MOI. get (model. optimizer, attr, ci)
108
112
end
109
113
110
- function MOI. set (model:: Optimizer , attr:: MOI.ConstraintSet , ci:: CI{F, S} , s:: S ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
114
+ function MOI. set (
115
+ model:: Optimizer , attr:: MOI.ConstraintSet , ci:: CI{F, S} , s:: S
116
+ ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
111
117
model. diff = nothing
112
118
return MOI. set (model. optimizer, attr, ci, s)
113
119
end
114
120
115
- function MOI. get (model:: Optimizer , attr:: MOI.ConstraintFunction , ci:: CI{F, S} ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
121
+ function MOI. get (
122
+ model:: Optimizer , attr:: MOI.ConstraintFunction , ci:: CI{F, S}
123
+ ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
116
124
return MOI. get (model. optimizer, attr, ci)
117
125
end
118
126
119
- function MOI. set (model:: Optimizer , attr:: MOI.ConstraintFunction , ci:: CI{F, S} , f:: F ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
127
+ function MOI. set (
128
+ model:: Optimizer , attr:: MOI.ConstraintFunction , ci:: CI{F, S} , f:: F
129
+ ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
120
130
model. diff = nothing
121
131
return MOI. set (model. optimizer, attr, ci, f)
122
132
end
123
133
124
- function MOI. get (model:: Optimizer , attr:: MOI.ListOfConstraintIndices{F, S} ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
134
+ function MOI. get (
135
+ model:: Optimizer , attr:: MOI.ListOfConstraintIndices{F, S}
136
+ ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
125
137
return MOI. get (model. optimizer, attr)
126
138
end
127
139
128
- function MOI. get (model:: Optimizer , attr:: MOI.ConstraintSet , ci:: CI{F, S} ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
140
+ function MOI. get (
141
+ model:: Optimizer , attr:: MOI.ConstraintSet , ci:: CI{F, S}
142
+ ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
129
143
return MOI. get (model. optimizer, attr, ci)
130
144
end
131
145
132
- function MOI. set (model:: Optimizer , attr:: MOI.ConstraintSet , ci:: CI{F, S} , s:: S ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
146
+ function MOI. set (
147
+ model:: Optimizer , attr:: MOI.ConstraintSet , ci:: CI{F, S} , s:: S
148
+ ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
133
149
model. diff = nothing
134
150
return MOI. set (model. optimizer, attr, ci, s)
135
151
end
136
152
137
- function MOI. get (model:: Optimizer , attr:: MOI.ConstraintFunction , ci:: CI{F, S} ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
153
+ function MOI. get (
154
+ model:: Optimizer , attr:: MOI.ConstraintFunction , ci:: CI{F, S}
155
+ ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
138
156
return MOI. get (model. optimizer, attr, ci)
139
157
end
140
158
141
- function MOI. set (model:: Optimizer , attr:: MOI.ConstraintFunction , ci:: CI{F, S} , f:: F ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
159
+ function MOI. set (
160
+ model:: Optimizer , attr:: MOI.ConstraintFunction , ci:: CI{F, S} , f:: F
161
+ ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
142
162
model. diff = nothing
143
163
return MOI. set (model. optimizer, attr, ci, f)
144
164
end
145
165
146
166
# `MOI.supports` methods
147
167
148
- function MOI. supports (:: Optimizer ,
149
- :: MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}} )
150
- return true
151
- end
152
-
153
- function MOI. supports (:: Optimizer ,
154
- :: MOI.ObjectiveFunction{MOI.ScalarQuadraticFunction{Float64}} )
155
- return true
156
- end
157
-
158
- function MOI. supports (:: Optimizer , :: MOI.AbstractModelAttribute )
159
- return true
160
- end
161
-
162
- function MOI. supports (:: Optimizer , :: MOI.ObjectiveFunction )
163
- return false
168
+ function MOI. supports (model:: Optimizer , attr:: MOI.AbstractModelAttribute )
169
+ return MOI. supports (model. optimizer, attr)
164
170
end
165
171
166
- function MOI. supports (:: Optimizer , :: MOI.ObjectiveFunction{<: SUPPORTED_OBJECTIVES} )
167
- return true
172
+ function MOI. supports (
173
+ model:: Optimizer ,
174
+ attr:: MOI.ObjectiveFunction{<: SUPPORTED_OBJECTIVES}
175
+ )
176
+ return MOI. supports (model. optimizer, attr)
168
177
end
169
178
170
- MOI. supports_constraint (:: Optimizer , :: Type{<: SUPPORTED_SCALAR_FUNCTIONS} , :: Type{<: SUPPORTED_SCALAR_SETS} ) = true
171
- MOI. supports_constraint (:: Optimizer , :: Type{<: SUPPORTED_VECTOR_FUNCTIONS} , :: Type{<: SUPPORTED_VECTOR_SETS} ) = true
172
- function MOI. supports (model:: Optimizer , attr:: MOI.ConstraintName , :: Type{CI{F, S}} ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
179
+ function MOI. supports_constraint (
180
+ model:: Optimizer ,
181
+ :: Type{F} ,
182
+ :: Type{S}
183
+ ) where {
184
+ F <: SUPPORTED_SCALAR_FUNCTIONS ,
185
+ S <: SUPPORTED_SCALAR_SETS ,
186
+ }
187
+ MOI. supports_constraint (model. optimizer, F, S)
188
+ end
189
+ function MOI. supports_constraint (
190
+ model:: Optimizer ,
191
+ :: Type{F} ,
192
+ :: Type{S}
193
+ ) where {
194
+ F <: SUPPORTED_VECTOR_FUNCTIONS ,
195
+ S <: SUPPORTED_VECTOR_SETS ,
196
+ }
197
+ MOI. supports_constraint (model. optimizer, F, S)
198
+ end
199
+ function MOI. supports (
200
+ model:: Optimizer , attr:: MOI.ConstraintName , :: Type{CI{F, S}}
201
+ ) where {F<: SUPPORTED_SCALAR_FUNCTIONS , S<: SUPPORTED_SCALAR_SETS }
173
202
return MOI. supports (model. optimizer, attr, CI{F,S})
174
203
end
175
- function MOI. supports (model:: Optimizer , attr:: MOI.ConstraintName , :: Type{CI{F, S}} ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
204
+ function MOI. supports (
205
+ model:: Optimizer , attr:: MOI.ConstraintName , :: Type{CI{F, S}}
206
+ ) where {F<: SUPPORTED_VECTOR_FUNCTIONS , S<: SUPPORTED_VECTOR_SETS }
176
207
return MOI. supports (model. optimizer, attr, CI{F,S})
177
208
end
178
209
@@ -191,8 +222,15 @@ function MOI.is_empty(model::Optimizer)
191
222
model. diff === nothing
192
223
end
193
224
194
- # now supports name too
195
- MOI. supports_incremental_interface (:: Optimizer ) = true
225
+ function MOI. supports_incremental_interface (model:: Optimizer )
226
+ if ! MOI. supports_incremental_interface (model. optimizer)
227
+ error (
228
+ " DiffOpt requires a solver that " *
229
+ " `MOI.supports_incremental_interface`, which is not the case for " *
230
+ " $(model. optimizer) " )
231
+ end
232
+ return true
233
+ end
196
234
197
235
function MOI. copy_to (model:: Optimizer , src:: MOI.ModelLike )
198
236
model. diff = nothing
@@ -352,7 +390,9 @@ function MOI.get(model::Optimizer, ::Type{CI{VF, VS}}, name::String) where {VF<:
352
390
return MOI. get (model. optimizer, CI{VF,VS}, name)
353
391
end
354
392
355
- MOI. supports (:: Optimizer , :: MOI.TimeLimitSec ) = true
393
+ function MOI. supports (model:: Optimizer , attr:: MOI.TimeLimitSec )
394
+ MOI. supports (model. optimizer, attr)
395
+ end
356
396
function MOI. set (model:: Optimizer , :: MOI.TimeLimitSec , value:: Union{Real, Nothing} )
357
397
MOI. set (model. optimizer, MOI. TimeLimitSec (), value)
358
398
end
0 commit comments