9#include "akreon/convex/convex_problem.hpp"
10#include "akreon/convex/intersection.hpp"
11#include "akreon/convex/variable.hpp"
26template <ContinuousPlantModelLike Plant, std::
size_t N>
29 using Model = linalg::remove_cvref_t<Plant>;
57 template <convex::AtomLike DecVar>
72 template <convex::AtomLike DecVar>
75 static_assert(convex::is_var_type_v<DecVar>,
"Input atom is not a var");
76 using DecVarDom = convex::meta_dom_t<convex::atom_meta_t<DecVar>>;
77 static_assert(convex::dom_vartype_v<DecVarDom> == convex::VarType::FREE,
78 "Merged decision var must be free");
79 static_assert(std::same_as<DecVarSpace, convex::dom_space_t<DecVarDom>>,
80 "Expected merged decision size [svec(Q); vec(Y); svec(Z)]");
87 [&]<std::size_t...
Is>(std::index_sequence<
Is...>) {
88 return convex::Intersection(
102 template <convex::AtomLike DecVar>
129template <ContinuousPlantModelLike Plant, std::size_t
N,
constexpr bool is_continuous_v
check if continuous or not
constexpr auto make_h2_polytopic_state_feedback_problem(const linalg::Vector< Plant, N > &poly, const DecVar &Z_hat, plant_type_t< Plant > margin=1e-6)
make polytopic H2
typename plant_traits< linalg::remove_cvref_t< Plant > >::T plant_type_t
extract scalar type from plant
H2 Polytopic State Feedback.
linalg::remove_cvref_t< Plant > Model
extracting alias and types
static constexpr std::size_t YDim
typename VertexFeedback::YMat YMat
typename VertexFeedback::ZMat ZMat
static constexpr std::size_t InputDim
linalg::Vector< Plant, N > Polytope
static constexpr std::size_t OutputDim
typename VertexFeedback::QMat QMat
typename VertexFeedback::KMat KMat
H2StateFeedback< Model > VertexFeedback
constexpr auto operator()(const Polytope &poly, const DecVar &Z_hat, T margin=1e-6) const
operator overload to form H2 polytopic state feedback
constexpr auto objective(const DecVar &Z_hat) const
objective
typename VertexFeedback::DecVarSpace DecVarSpace
constexpr auto K(const QMat &Q, const YMat &Y) const
K (feedback gain)
static constexpr std::size_t ZDim
static constexpr std::size_t DecVarDim
constexpr auto apply(const Polytope &poly, const DecVar &Z_hat, T margin=1e-6) const
apply
static constexpr std::size_t QDim
static constexpr std::size_t StateDim
linalg::RowVector< T, DecVarDim > DecVarSpace
linalg::Matrix< T, InputDim, StateDim > YMat
static constexpr std::size_t InputDim
linalg::Matrix< T, StateDim, StateDim > QMat
static constexpr std::size_t StateDim
linalg::Matrix< T, OutputDim, OutputDim > ZMat
static constexpr std::size_t OutputDim
static constexpr std::size_t QDim
static constexpr std::size_t ZDim
static constexpr std::size_t DecVarDim
linalg::Matrix< T, InputDim, StateDim > KMat
static constexpr std::size_t YDim