@@ -109,6 +109,7 @@ mutable struct Optimizer <: MOI.AbstractOptimizer
109109 solutions:: Vector{SolutionPoint}
110110 termination_status:: MOI.TerminationStatusCode
111111 time_limit_sec:: Union{Nothing,Float64}
112+ solve_time:: Float64
112113
113114 function Optimizer (optimizer_factory)
114115 return new (
@@ -118,6 +119,7 @@ mutable struct Optimizer <: MOI.AbstractOptimizer
118119 SolutionPoint[],
119120 MOI. OPTIMIZE_NOT_CALLED,
120121 nothing ,
122+ NaN ,
121123 )
122124 end
123125end
@@ -127,14 +129,16 @@ function MOI.empty!(model::Optimizer)
127129 model. f = nothing
128130 model. solutions = SolutionPoint[]
129131 model. termination_status = MOI. OPTIMIZE_NOT_CALLED
132+ model. solve_time = NaN
130133 return
131134end
132135
133136function MOI. is_empty (model:: Optimizer )
134137 return MOI. is_empty (model. inner) &&
135138 model. f === nothing &&
136139 isempty (model. solutions) &&
137- model. termination_status == MOI. OPTIMIZE_NOT_CALLED
140+ model. termination_status == MOI. OPTIMIZE_NOT_CALLED &&
141+ isnan (model. solve_time)
138142end
139143
140144MOI. supports_incremental_interface (:: Optimizer ) = true
@@ -176,6 +180,12 @@ function _time_limit_exceeded(model::Optimizer, start_time::Float64)
176180 return false
177181end
178182
183+ # ## SolveTimeSec
184+
185+ function MOI. get (model:: Optimizer , :: MOI.SolveTimeSec )
186+ return model. solve_time
187+ end
188+
179189# ## ObjectiveFunction
180190
181191function MOI. supports (
@@ -493,6 +503,7 @@ function MOI.delete(model::Optimizer, ci::MOI.ConstraintIndex)
493503end
494504
495505function MOI. optimize! (model:: Optimizer )
506+ start_time = time ()
496507 empty! (model. solutions)
497508 model. termination_status = MOI. OPTIMIZE_NOT_CALLED
498509 if model. f === nothing
@@ -508,6 +519,7 @@ function MOI.optimize!(model::Optimizer)
508519 if MOI. supports (model. inner, MOI. TimeLimitSec ())
509520 MOI. set (model. inner, MOI. TimeLimitSec (), nothing )
510521 end
522+ model. solve_time = time () - start_time
511523 return
512524end
513525
0 commit comments