Skip to content

Commit 2ac1a99

Browse files
authored
Merge pull request #275 from scipopt/gaplimits
added gap limits
2 parents 6846e77 + 1f54715 commit 2ac1a99

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ SCIP_PaPILO_jll = "fc9abe76-a5e6-5fed-b0b7-a12f309cf031"
1111
SCIP_jll = "e5ac4fe4-a920-5659-9bf8-f9f73e9e79ce"
1212

1313
[compat]
14-
MathOptInterface = "1"
14+
MathOptInterface = "1.7"
1515
OpenBLAS32_jll = "0.3"
1616
SCIP_PaPILO_jll = "800"
1717
SCIP_jll = "800"

src/MOI_wrapper.jl

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,43 @@ end
209209

210210
function MOI.set(o::Optimizer, ::MOI.TimeLimitSec, value)
211211
if value === nothing
212-
MOI.set(o, MOI.RawOptimizerAttribute("limits/time"), SCIPinfinity(o))
212+
return MOI.set(o, MOI.RawOptimizerAttribute("limits/time"), SCIPinfinity(o))
213+
end
214+
return MOI.set(o, MOI.RawOptimizerAttribute("limits/time"), value)
215+
end
216+
217+
MOI.supports(::Optimizer, ::MOI.AbsoluteGapTolerance) = true
218+
function MOI.get(o::Optimizer, ::MOI.AbsoluteGapTolerance)
219+
raw_value = MOI.get(o, MOI.RawOptimizerAttribute("limits/absgap"))
220+
if raw_value == 0
221+
return nothing
222+
end
223+
return raw_value
224+
end
225+
function MOI.set(o::Optimizer, ::MOI.AbsoluteGapTolerance, value)
226+
if value === nothing
227+
MOI.set(o, MOI.RawOptimizerAttribute("limits/absgap"), 0.0)
213228
else
214-
MOI.set(o, MOI.RawOptimizerAttribute("limits/time"), value)
229+
MOI.set(o, MOI.RawOptimizerAttribute("limits/absgap"), value)
215230
end
231+
return nothing
232+
end
233+
234+
MOI.supports(::Optimizer, ::MOI.RelativeGapTolerance) = true
235+
function MOI.get(o::Optimizer, ::MOI.RelativeGapTolerance)
236+
raw_value = MOI.get(o, MOI.RawOptimizerAttribute("limits/gap"))
237+
if raw_value == 0
238+
return nothing
239+
end
240+
return raw_value
241+
end
242+
function MOI.set(o::Optimizer, ::MOI.RelativeGapTolerance, value)
243+
if value === nothing
244+
MOI.set(o, MOI.RawOptimizerAttribute("limits/gap"), 0.0)
245+
else
246+
MOI.set(o, MOI.RawOptimizerAttribute("limits/gap"), value)
247+
end
248+
return nothing
216249
end
217250

218251
MOI.supports(::Optimizer, ::MOI.SolverVersion) = true

0 commit comments

Comments
 (0)