Optim
This folder contains all the different (abstraction-based or not) solvers that can be used. Note that all the solvers are defined using the MathOptInterface framework: for each solver, we define a subtype of AbstractOptimizer
and implement the Optimize!
function.
Abstraction-based solvers
Dionysos.Optim.Abstraction.UniformGridAbstraction.Optimizer
— TypeOptimizer{T} <: MOI.AbstractOptimizer
Solver based on the classical abstraction method (used for instance in SCOTS) for which the whole domain is partioned into hyper-rectangular cells, independently of the control task.
Dionysos.Optim.Abstraction.EllipsoidsAbstraction.Optimizer
— TypeOptimizer{T} <: MOI.AbstractOptimizer
Abstraction-based solver for which the domain is covered with ellipsoidal cells, independently of the control task.
Dionysos.Optim.Abstraction.HierarchicalAbstraction.Optimizer
— TypeOptimizer{T} <: MOI.AbstractOptimizer
Abstraction-based solver for which the domain is initially partioned into coarse hyper-rectangular cells, which are iteratively locally smartly refined with respect to the control task.
Dionysos.Optim.Abstraction.LazyAbstraction.Optimizer
— TypeOptimizer{T} <: MOI.AbstractOptimizer
Abstraction-based solver for which the hyper-rectangular abstraction and the controller are co-designed to reduce the computation cost of the abstraction.
Dionysos.Optim.Abstraction.LazyEllipsoidsAbstraction.Optimizer
— TypeOptimizer{T} <: MOI.AbstractOptimizer
Abstraction-based solver using the lazy abstraction method with ellipsoidal cells.
Other solvers
Dionysos.Optim.BemporadMorari.Optimizer
— TypeOptimizer{T} <: MOI.AbstractOptimizer
Bemporad Morari solver: Optimal control of hybrid systems via a predictive control scheme using mixed integer quadratic programming (MIQP) online optimization procedures.
Dionysos.Optim.BranchAndBound.Optimizer
— TypeOptimizer{T} <: MOI.AbstractOptimizer
Branch and bound solver: Optimal control of hybrid systems via a predictive control scheme combining a branch and bound algorithm that can refine Q-functions using Lagrangian duality.
Solvers details
Uniform Grid Abstraction
Dionysos.Optim.Abstraction.UniformGridAbstraction._get_domain_list
— Function_get_domain_list(model, variables, grid)
Returns a Dionysos.Domain.DomainList
based on the variables
and grid
.
Dionysos.Optim.Abstraction.UniformGridAbstraction._discretize_continuous_system
— Function_discretize_continuous_system(concrete_system::MathematicalSystems.ConstrainedBlackBoxControlContinuousSystem, model, noise)
Returns the discretized system based on the concrete_system
and model
.
Dionysos.Optim.Abstraction.UniformGridAbstraction._validate_continuous_model
— Functionvalidate_continuous_model!(model::Optimizer)
Validates that the Optimizer
model is correctly configured for continuous systems. Throws an error if required fields like time_step
or jacobian_bound
are missing or invalid.
Dionysos.Optim.Abstraction.UniformGridAbstraction.solve_concrete_problem
— Functionsolve_concrete_problem(abstract_system, abstract_controller)
Solves the concrete problem based on the abstract_system
and abstract_controller
.
Dionysos.Optim.Abstraction.UniformGridAbstraction.build_abstraction
— Functionbuild_abstraction(concrete_system, model)
Builds the abstraction based on the concrete_system
and model
.
Dionysos.Optim.Abstraction.UniformGridAbstraction.compute_controller_reach!
— Functioncompute_controller_reach!(contr, autom, initlist, targetlist)
Computes the controller reach based on the contr
, autom
, initlist
, and targetlist
.
Dionysos.Optim.Abstraction.UniformGridAbstraction._compute_num_targets_unreachable
— Function_compute_num_targets_unreachable(num_targets_unreachable, autom)
Computes the number of targets unreachable based on the autom
.
Dionysos.Optim.Abstraction.UniformGridAbstraction._discrete_system
— Functiondiscretized_system(concrete_system::MathematicalSystems.ConstrainedBlackBoxControlDiscreteSystem, model, noise)
Returns the discretized system based on the concrete_system
and model
.
Dionysos.Optim.Abstraction.UniformGridAbstraction.compute_controller_safe!
— Functioncompute_controller_safe!(contr, autom, initlist, safelist)
Computes the controller safe based on the contr
, autom
, initlist
, and safelist
.
Dionysos.Optim.Abstraction.UniformGridAbstraction._maybe_discretized_system
— Functiondiscretized_system(concrete_system, model, noise)
Returns the discretized system based on the concrete_system
and model
.
Dionysos.Optim.Abstraction.UniformGridAbstraction.solve_abstract_problem
— Functionsolve_abstract_problem(abstract_problem::Dionysos.Problem.OptimalControlProblem)
Solves the abstract optimal control problem based on the abstract_problem
.
solve_abstract_problem(abstract_problem::Dionysos.Problem.SafetyProblem)
Solves the abstract safety problem based on the abstract_problem
.
Dionysos.Optim.Abstraction.UniformGridAbstraction._data
— Function_data(contr, autom, initlist, targetlist)
Returns the data based on the contr
, autom
, initlist
, and targetlist
.
Dionysos.Optim.Abstraction.UniformGridAbstraction._validate_discrete_model
— Functionvalidate_discrete_model!(model::Optimizer)
Validates that the Optimizer
model is correctly configured for discrete systems. Throws an error if required fields like sys_inv_map
or growthbound_map
are missing or invalid.
Dionysos.Optim.Abstraction.UniformGridAbstraction._compute_controller_reach!
— Function_compute_controller_reach!(contr, autom, init_set, target_set, num_targets_unreachable, current_targets, next_targets)
Computes the controller reach based on the contr
, autom
, init_set
, target_set
, num_targets_unreachable
, current_targets
, and next_targets
.
Dionysos.Optim.Abstraction.UniformGridAbstraction.build_abstract_problem
— Functionbuild_abstract_problem(concrete_problem, abstract_system)
Builds the abstract problem based on the concrete_problem
and abstract_system
.
Dionysos.Optim.Abstraction.UniformGridAbstraction._validate_model
— Functionvalidate_model!(model::Optimizer, required_fields::Vector{Symbol})
Ensures the specified required_fields
are set in the model
. Throws an error if any field is missing.
Dionysos.Optim.Abstraction.UniformGridAbstraction._corresponding_abstract_points
— Function_corresponding_abstract_state_points(abstract_system, set, position_in_domain)
Returns the corresponding abstract points based on the abstract_system
, set
, and position_in_domain
.
Dionysos.Optim.Abstraction.UniformGridAbstraction._compute_pairstable
— Function_compute_pairstable(pairstable, autom)
Computes the pairstable based on the pairstable
and autom
.