From 01ee0f93126a5743c9d7384a022b5d558eafd898 Mon Sep 17 00:00:00 2001 From: Guilherme Bodin <32756941+guilhermebodin@users.noreply.github.com> Date: Thu, 11 Apr 2019 23:10:42 -0300 Subject: [PATCH] Add solve_time function (#1928) * added ProxSDP to solvers list * added low accuracy commentary * Added solve_time function * typo fix * better error message * removing _try_get_solve_time * added solve_time to docs --- docs/src/solutions.md | 1 + src/JuMP.jl | 12 ++++++++++++ test/model.jl | 19 +++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/docs/src/solutions.md b/docs/src/solutions.md index 91fa9aa5794..7b6672b04dd 100644 --- a/docs/src/solutions.md +++ b/docs/src/solutions.md @@ -127,6 +127,7 @@ JuMP.value JuMP.dual_status JuMP.has_duals JuMP.dual +JuMP.solve_time OptimizeNotCalled MOI.optimize! ``` diff --git a/src/JuMP.jl b/src/JuMP.jl index 7c352b2edd5..1e8861bb352 100644 --- a/src/JuMP.jl +++ b/src/JuMP.jl @@ -438,6 +438,18 @@ end set_optimize_hook(model::Model, f) = (model.optimize_hook = f) +""" + solve_time(model::Model) + +If available, returns the solve time reported by the solver. +Returns "ArgumentError: ModelLike of type `Solver.Optimizer` does not support accessing +the attribute MathOptInterface.SolveTime()" if the attribute is +not implemented. +""" +function solve_time(model::Model) + return MOI.get(model, MOI.SolveTime()) +end + """ set_silent(model::Model) diff --git a/test/model.jl b/test/model.jl index b8d33eadfe3..57b5835082f 100644 --- a/test/model.jl +++ b/test/model.jl @@ -328,6 +328,25 @@ function test_model() @test optimizer.b == 2 end + @testset "solve_time" begin + @testset "NoOptimizer()" begin + err = NoOptimizer() + model = Model() + @test_throws err solve_time(model) + end + + @testset "OptimizeNotCalled()" begin + err = OptimizeNotCalled() + model = Model(with_optimizer(MOIU.MockOptimizer, + SimpleLPModel{Float64}())) + @test_throws err solve_time(model) + end + + @testset "Solved model" begin + # TODO + end + end + @testset "solver_name" begin @testset "Not attached" begin model = Model()