Skip to content

Commit b936248

Browse files
committed
add set_silent option
1 parent dc10aa3 commit b936248

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

ext/MTKJuMPControlExt.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,13 +255,15 @@ Solve JuMPControlProblem. Arguments:
255255
- prob: a JumpControlProblem
256256
- jump_solver: a LP solver such as HiGHS
257257
- ode_solver: Takes in a symbol representing the solver. Acceptable solvers may be found at https://docs.sciml.ai/DiffEqDevDocs/stable/internals/tableaus/. Note that the symbol may be different than the typical name of the solver, e.g. :Tsitouras5 rather than Tsit5.
258+
- silent: set the model silent (suppress model output)
258259
259260
Returns a JuMPControlSolution, which contains both the model and the ODE solution.
260261
"""
261-
function DiffEqBase.solve(prob::JuMPControlProblem, jump_solver, ode_solver::Symbol)
262+
function DiffEqBase.solve(prob::JuMPControlProblem, jump_solver, ode_solver::Symbol; silent = false)
262263
model = prob.model
263264
tableau_getter = Symbol(:construct, ode_solver)
264265
@eval tableau = $tableau_getter()
266+
silent && set_silent(model)
265267

266268
# Unregister current solver constraints
267269
for con in all_constraints(model)
@@ -285,6 +287,7 @@ end
285287
"""
286288
function DiffEqBase.solve(prob::InfiniteOptControlProblem, jump_solver;
287289
derivative_method = InfiniteOpt.FiniteDifference(Backward()))
290+
silent && set_silent(model)
288291
set_derivative_method(prob.model[:t], derivative_method)
289292
_solve(prob, jump_solver, derivative_method)
290293
end

src/ModelingToolkit.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,8 @@ export AnalysisPoint, get_sensitivity_function, get_comp_sensitivity_function,
347347
open_loop
348348
function FMIComponent end
349349

350-
include("src/systems/optimal_control_interface.jl")
351-
export JuMPControlProblem, InfiniteOptControlProblem, PyomoControlProblem, CasADiControlProblem
350+
include("systems/optimal_control_interface.jl")
351+
export AbstractOptimalControlProblem, JuMPControlProblem, InfiniteOptControlProblem, PyomoControlProblem, CasADiControlProblem
352352
export OptimalControlSolution
353353

354354
end # module

test/extensions/jump_control.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ const M = ModelingToolkit
3131
@test jsol.sol.u osol.u
3232

3333
# Implicit method.
34-
jsol2 = @btime solve($jprob, Ipopt.Optimizer, :ImplicitEuler) # 63.031 ms, 26.49 MiB
34+
jsol2 = @btime solve($jprob, Ipopt.Optimizer, :ImplicitEuler, silent = true) # 63.031 ms, 26.49 MiB
3535
osol2 = @btime solve($oprob, ImplicitEuler(), dt = 0.01, adaptive = false) # 129.375 μs, 61.91 KiB
3636
@test (jsol2.sol.u, osol2.u, rtol = 0.001)
3737
iprob = InfiniteOptControlProblem(sys, u0map, tspan, parammap, dt = 0.01)
3838
isol = @btime solve(
39-
$iprob, Ipopt.Optimizer, derivative_method = FiniteDifference(Backward())) # 11.540 ms, 4.00 MiB
39+
$iprob, Ipopt.Optimizer, derivative_method = FiniteDifference(Backward()), silent = true) # 11.540 ms, 4.00 MiB
4040

4141
# With a constraint
4242
u0map = Pair[]
@@ -46,15 +46,15 @@ const M = ModelingToolkit
4646

4747
jprob = JuMPControlProblem(lksys, u0map, tspan, parammap; guesses = guess, dt = 0.01)
4848
@test num_constraints(jprob.model) == 2
49-
jsol = @btime solve($jprob, Ipopt.Optimizer, :Tsitouras5) # 12.190 s, 9.68 GiB
49+
jsol = @btime solve($jprob, Ipopt.Optimizer, :Tsitouras5, silent = true) # 12.190 s, 9.68 GiB
5050
sol = jsol.sol
5151
@test sol(0.6)[1] 3.5
5252
@test sol(0.3)[1] 7.0
5353

5454
iprob = InfiniteOptControlProblem(
5555
lksys, u0map, tspan, parammap; guesses = guess, dt = 0.01)
5656
isol = @btime solve(
57-
$iprob, Ipopt.Optimizer, derivative_method = OrthogonalCollocation(3)) # 48.564 ms, 9.58 MiB
57+
$iprob, Ipopt.Optimizer, derivative_method = OrthogonalCollocation(3), silent = true) # 48.564 ms, 9.58 MiB
5858
sol = isol.sol
5959
@test sol(0.6)[1] 3.5
6060
@test sol(0.3)[1] 7.0

0 commit comments

Comments
 (0)