Solution
Index
CTDirect.SolverInfosCTDirect.SolverInfosCTDirect.build_OCP_solutionCTDirect.build_OCP_solutionCTDirect.is_emptyCTDirect.parse_DOCP_solution_dualCTDirect.parse_DOCP_solution_primal
Documentation
CTDirect.SolverInfos — MethodSolverInfos(
nlp_solution
) -> Tuple{Any, Int64, Any, String, Symbol, Bool}
Retrieve convergence information from an NLP solution.
Arguments
nlp_solution: A solver execution statistics object.
Returns
(objective, iterations, constraints_violation, message, status, successful): A tuple containing the final objective value, iteration count, primal feasibility, solver message, solver status, and success flag.
Example
julia> SolverInfos(nlp_solution)
(1.23, 15, 1.0e-6, "Ipopt/generic", :first_order, true)CTDirect.SolverInfos — MethodSolverInfos(
) -> Tuple{Float64, Int64, Float64, String, Symbol, Bool}
Return default convergence information for an NLP solution.
Returns
(objective, iterations, constraints_violation, message, status, successful): Default values representing an undefined solver state.
Example
julia> SolverInfos()
(0.0, 0, 0.0, "undefined", :undefined, true)CTDirect.build_OCP_solution — Methodbuild_OCP_solution(
docp,
nlp_solution;
nlp_model,
nlp_solver
) -> CTModels.Solution{TimeGridModelType, TimesModelType, StateModelType, ControlModelType, VariableModelType, CostateModelType, Float64, DualModelType, CTModels.SolverInfos{Dict{Symbol, Any}}, ModelType} where {TimeGridModelType<:CTModels.TimeGridModel, TimesModelType<:CTModels.TimesModel, StateModelType<:Union{CTModels.StateModelSolution{TS} where TS<:CTModels.var"#98#120", CTModels.StateModelSolution{TS} where TS<:CTModels.var"#99#121"}, ControlModelType<:Union{CTModels.ControlModelSolution{TS} where TS<:CTModels.var"#100#122", CTModels.ControlModelSolution{TS} where TS<:CTModels.var"#101#123"}, VariableModelType<:Union{CTModels.VariableModelSolution{Vector{Float64}}, CTModels.VariableModelSolution{Float64}}, CostateModelType<:Union{CTModels.var"#102#124", CTModels.var"#103#125"}, DualModelType<:(CTModels.DualModel{PC_Dual, BC_Dual, SC_LB_Dual, SC_UB_Dual, CC_LB_Dual, CC_UB_Dual, VC_LB_Dual, VC_UB_Dual} where {PC_Dual<:Union{Nothing, CTModels.var"#105#127", CTModels.var"#106#128"}, BC_Dual<:Union{Nothing, Vector{Float64}}, SC_LB_Dual<:Union{Nothing, CTModels.var"#108#130", CTModels.var"#109#131"}, SC_UB_Dual<:Union{Nothing, CTModels.var"#111#133", CTModels.var"#112#134"}, CC_LB_Dual<:Union{Nothing, CTModels.var"#114#136", CTModels.var"#115#137"}, CC_UB_Dual<:Union{Nothing, CTModels.var"#117#139", CTModels.var"#118#140"}, VC_LB_Dual<:Union{Nothing, Vector{Float64}}, VC_UB_Dual<:Union{Nothing, Vector{Float64}}}), ModelType<:CTModels.Model}
Build an OCP functional solution from a DOCP discrete solution given as a SolverCore.GenericExecutionStats object.
Arguments
docp: The discretized optimal control problem (DOCP).nlp_solution: A solver execution statistics object.nlp_model: The NLP model backend (default:ADNLPBackend()).nlp_solver: The NLP solver backend (default:IpoptBackend()).
Returns
solution::CTModels.Solution: A functional OCP solution containing trajectories, multipliers, and solver information.
Example
julia> build_OCP_solution(docp, nlp_solution)
CTModels.Solution(...)CTDirect.build_OCP_solution — Methodbuild_OCP_solution(
docp;
primal,
dual,
multipliers_L,
multipliers_U,
nlp_model,
nlp_solution
)
Build an OCP functional solution from a DOCP discrete solution, given explicit primal variables, and optionally dual variables and bound multipliers.
Arguments
docp: The discretized optimal control problem (DOCP).primal: Array of primal decision variables.dual: Array of dual variables (default:nothing).multipliers_L: Lower bound multipliers (default:nothing).multipliers_U: Upper bound multipliers (default:nothing).nlp_model: The NLP model backend (default:ADNLPBackend()).nlp_solution: A solver execution statistics object.
Returns
solution::CTModels.Solution: A functional OCP solution with trajectories, multipliers, and solver information.
Example
julia> build_OCP_solution(docp; primal=primal_vars, nlp_solution=nlp_solution)
CTModels.Solution(...)CTDirect.is_empty — Methodis_empty(t) -> Any
Check whether a collection t is empty or not defined.
Arguments
t: Any object that may benothingor supportlength.
Returns
::Bool:trueiftisnothingor has length zero, otherwisefalse.
Example
julia> is_empty([])
true
julia> is_empty([1, 2, 3])
false
julia> is_empty(nothing)
trueCTDirect.parse_DOCP_solution_dual — Methodparse_DOCP_solution_dual(
docp,
multipliers;
nlp_model,
nlp_solution
)
Recover OCP costates and constraint multipliers from DOCP dual variables.
Arguments
docp: The discretized optimal control problem (DOCP).multipliers: Array of dual variables (may benothing).nlp_model: The NLP model backend (default:ADNLPBackend()).nlp_solution: A solver execution statistics object.
Returns
(P, path_constraints_dual, boundary_constraints_dual):P: Costate trajectory.path_constraints_dual: Path constraint multipliers.boundary_constraints_dual: Boundary constraint multipliers.
Example
julia> P, path_dual, bound_dual = parse_DOCP_solution_dual(docp, duals; nlp_model=nlp_model, nlp_solution=nlp_solution)
([...] , [...], [...])CTDirect.parse_DOCP_solution_primal — Methodparse_DOCP_solution_primal(
docp,
solution;
multipliers_L,
multipliers_U,
nlp_model,
nlp_solution
)
Recover OCP state, control, and optimization variables from DOCP primal variables. Bound multipliers are also parsed if available.
Arguments
docp: The discretized optimal control problem (DOCP).solution: Array of primal decision variables.multipliers_L: Lower bound multipliers.multipliers_U: Upper bound multipliers.nlp_model: The NLP model backend.nlp_solution: A solver execution statistics object.
Returns
(X, U, v, box_multipliers):X: State trajectory.U: Control trajectory.v: Optimization variables.box_multipliers: Tuple of bound multipliers for states, controls, and variables.
Example
julia> X, U, v, box_mults = parse_DOCP_solution_primal(docp, primal;
multipliers_L=mL, multipliers_U=mU, nlp_model=nlp_model, nlp_solution=nlp_solution)
([...] , [...], [...], (...))