From be1e9b0785acd4a1b5152ae5911b18e5f65e95ff Mon Sep 17 00:00:00 2001 From: Pierre Martinon Date: Thu, 4 Jul 2024 17:04:27 +0200 Subject: [PATCH] =?UTF-8?q?added=20default=20args=20tol=20and=20max=5Fiter?= =?UTF-8?q?;=20commented=20tutorials=20moved=20to=20Opt=E2=80=A6=20(#148)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/make.jl | 4 ++-- ext/CTSolveExt.jl | 10 +++++++--- src/CTDirect.jl | 4 +++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index d9f62a92..e1b37984 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -18,8 +18,8 @@ makedocs( size_threshold_ignore = ["api-ctbase.md"]), pages = [ "Introduction" => "index.md", - "Tutorial" => "tutorial.md", - "Continuation" => "continuation.md", + #"Tutorial" => "tutorial.md", + #"Continuation" => "continuation.md", "API" => "api.md", "Developers" => "dev-api.md", ] diff --git a/ext/CTSolveExt.jl b/ext/CTSolveExt.jl index 3dd77f35..d60225b2 100644 --- a/ext/CTSolveExt.jl +++ b/ext/CTSolveExt.jl @@ -18,6 +18,8 @@ function CommonSolve.solve(docp::DOCP; display::Bool=CTDirect.__display(), print_level::Integer=CTDirect.__print_level_ipopt(), mu_strategy::String=CTDirect.__mu_strategy_ipopt(), + max_iter::Integer=CTDirect.__max_iter(), + tol::Real=CTDirect.__tol(), linear_solver::String=CTDirect.__linear_solver(), kwargs...) @@ -38,13 +40,13 @@ function CommonSolve.solve(docp::DOCP; nlp = getNLP(docp) if isnothing(init) # use initial guess embedded in the DOCP - docp_solution = ipopt(nlp, print_level=print_level, mu_strategy=mu_strategy, sb="yes", linear_solver=linear_solver; kwargs...) + docp_solution = ipopt(nlp, print_level=print_level, mu_strategy=mu_strategy, tol=tol, max_iter=max_iter, sb="yes", linear_solver=linear_solver; kwargs...) else # use given initial guess ocp = docp.ocp x0 = CTDirect.DOCP_initial_guess(docp, OptimalControlInit(init, state_dim=ocp.state_dimension, control_dim=ocp.control_dimension, variable_dim=ocp.variable_dimension)) - docp_solution = ipopt(nlp, x0=x0, print_level=print_level, mu_strategy=mu_strategy, sb="yes", linear_solver=linear_solver; kwargs...) + docp_solution = ipopt(nlp, x0=x0, print_level=print_level, mu_strategy=mu_strategy, tol=tol, max_iter=max_iter, sb="yes", linear_solver=linear_solver; kwargs...) end # return DOCP solution @@ -65,6 +67,8 @@ function CommonSolve.solve(ocp::OptimalControlModel, display::Bool=CTDirect.__display(), print_level::Integer=CTDirect.__print_level_ipopt(), mu_strategy::String=CTDirect.__mu_strategy_ipopt(), + max_iter::Integer=CTDirect.__max_iter(), + tol::Real=CTDirect.__tol(), linear_solver::String=CTDirect.__linear_solver(), kwargs...) @@ -72,7 +76,7 @@ function CommonSolve.solve(ocp::OptimalControlModel, docp = directTranscription(ocp, description, init=init, grid_size=grid_size, time_grid=time_grid) # solve DOCP (NB. init is already embedded in docp) - docp_solution = solve(docp, display=display, print_level=print_level, mu_strategy=mu_strategy, linear_solver=linear_solver; kwargs...) + docp_solution = solve(docp, display=display, print_level=print_level, mu_strategy=mu_strategy, tol=tol, max_iter=max_iter, linear_solver=linear_solver; kwargs...) # build and return OCP solution return OCPSolutionFromDOCP(docp, docp_solution) diff --git a/src/CTDirect.jl b/src/CTDirect.jl index 842a24a2..5516b7bc 100644 --- a/src/CTDirect.jl +++ b/src/CTDirect.jl @@ -6,10 +6,12 @@ using ADNLPModels # docp model with AD using LinearAlgebra # norm using CommonSolve: solve -# Other declarations +# Other declarations (+++ sort among modules) const __grid_size_direct() = 100 const __print_level_ipopt = CTBase.__print_level_ipopt const __mu_strategy_ipopt = CTBase.__mu_strategy_ipopt +const __tol() = 1e-8 +const __max_iter() = 1000 const __display = CTBase.__display const nlp_constraints! = CTBase.nlp_constraints! const matrix2vec = CTBase.matrix2vec