API: Algorithms
SCvx*
Main.SCPLib.penalty — Method
Augmented Lagrangian penalty function
Main.SCPLib.solve! — Method
Solve non-convex OCP with SCvx* algorithm
Arguments
algo::SCvxStar: algorithm structprob::OptimalControlProblem: problem structx_ref: reference state history, sizenx-by-Nu_ref: reference control history, sizenu-by-N-1maxiter::Int: maximum number of iterationstol_feas::Float64: feasibility tolerancetol_opt::Float64: optimality tolerancetol_J0::Real: objective toleranceverbosity::Int: verbosity levelstore_iterates::Bool: whether to store iterates
Main.SCPLib.update_trust_region! — Method
Update trust-region size
Main.SCPLib.SCvxStar — Type
SCvx* algorithm
Arguments
nx::Int: number of statesN::Int: number of time stepsng::Int: number of non-convex equality constraintsnh::Int: number of non-convex inequality constraintsΔ0::Float64: initial trust-region sizew0::Float64: initial penalty weightrhos::Tuple{Real,Real,Real}: trust-region acceptance thresholdsalphas::Tuple{Real,Real}: trust-region size update factorsΔ_bounds::Tuple{Float64,Float64}: trust-region size boundsgamma::Float64: stationarity tolerance update factorbeta::Float64: penalty weight update factorw_max::Float64: maximum penalty weight
Main.SCPLib.SCvxStarSolution — Type
Solution struct for SCvx* algorithm
Prox-linear method
Main.SCPLib.solve! — Method
Solve non-convex OCP with prox-linear algorithm
Arguments
algo::ProxLinear: algorithm structprob::OptimalControlProblem: problem structx_ref: reference state history, sizenx-by-Nu_ref: reference control history, sizenu-by-N-1maxiter::Int: maximum number of iterationstol_feas::Float64: feasibility tolerancetol_opt::Float64: optimality tolerancetol_J0::Real: objective toleranceverbosity::Int: verbosity levelstore_iterates::Bool: whether to store iterates
Main.SCPLib.ProxLinear — Type
Prox-linear algorithm
The weights are defined such that the penalized objective of the subproblems are:
\[L(Z) + w_ep * ||G(Z) + ∇G(Z_ref)*(Z - Z_ref)||_1 + w_prox/2 * ||Z - Z_ref||_2^2\]
where L(Z) is the original objective function, G(Z) are the non-convex constraints.
Arguments
w_ep::Float64: exact penalty term weightw_prox::Float64: proximal term weightproximal_u::Bool: whether to enforce proximal constraint on u
Main.SCPLib.ProxLinearSolution — Type
Solution struct for prox-linear algorithm
Fixed trust-region/weight
Main.SCPLib.penalty — Method
Augmented Lagrangian penalty function
Main.SCPLib.solve! — Method
Solve non-convex OCP with fixed trust-region-weight SCP Algorithm
This algorithm employs a fixed trust-region & accepts every convex subproblem step. Artificial infeasibility is avoided by introducing slack variables for nonlinear constraints that are penalized quadratically with a fixed weight.
Arguments
algo::FixedTRWSCP: algorithm structprob::OptimalControlProblem: problem structx_ref: reference state history, sizenx-by-Nu_ref: reference control history, sizenu-by-N-1maxiter::Int: maximum number of iterationstol_feas::Float64: feasibility tolerancetol_opt::Float64: optimality tolerancetol_J0::Real: objective toleranceverbosity::Int: verbosity levelstore_iterates::Bool: whether to store iterates