|
akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
|
Builder for conic canonical forms. More...
#include <canonical_form_builder.hpp>
Public Types | |
| using | CoordMapT = affine::affine_mat_t< CoordMap > |
| Affine matrix type for the current cone-coordinate selector. | |
| using | T = linalg::matrix_scalar_t< CoordMapT > |
| Scalar field used by the canonical form. | |
Public Member Functions | |
| constexpr | CanonicalFormBuilder (const CoordMap &coord_in, const CB &cb_in, const EqMap &eq_in, const CanonicalTrace &trace_in={}) |
| Construct a builder from existing canonical-form components. | |
| template<std::size_t SharedCols, affine::AffineMapLike LiftedMap, typename... Cs> | |
| constexpr auto | make (int idx, const LiftedMap &lift_map, const std::tuple< Cs... > &cones) const |
| make new builder with tuple of cones and input cone lift map selecting upon input index | |
| template<std::size_t SharedCols, typename... Cs> | |
| constexpr auto | make (const std::tuple< Cs... > &cones) const |
| make new builder based on tuple of cones (no input map or selector) | |
| template<convex::AtomType Type, affine::AffineMapLike LiftedMap, LocalEmissionLike Emission> | |
| constexpr auto | realize (int idx, const LiftedMap &lift_map, const Emission &emission) const |
| Realize an atom-local emission and select a lifted coordinate based on input cone lift map. | |
| template<convex::AtomType Type, LocalEmissionLike Emission> | |
| constexpr auto | realize (const Emission &emission) const |
| Realize cone rows using the child's shared prefix and select the assembled map (no lifted coordinate requested). | |
| template<LocalEqualityEmissionLike Emission> | |
| constexpr auto | realize (const Emission &emission) const |
| Realize atom-local equality rows. | |
Public Attributes | |
| CoordMap | coord_map |
| public member vars | |
| CB | cb |
| Realized cone block containing cone tuple and affine rows. | |
| EqMap | eq_map |
| Realized equality map in the same column layout. | |
| CanonicalTrace | canonical_trace |
| Realized structural canonical trace. | |
Static Public Attributes | |
| static constexpr std::size_t | N = linalg::space_dim_v<DecVarDom> |
| Number of original decision variables before auxiliary columns. | |
Builder for conic canonical forms.
forward declaration of cone block builder
The builder carries the current global coordinate selector, realized cone block, and equality map while atom-local recipes expand the canonical type layout during canonicalization.
Definition at line 29 of file canonical_form_builder.hpp.
| using conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::CoordMapT = affine::affine_mat_t<CoordMap> |
Affine matrix type for the current cone-coordinate selector.
Definition at line 31 of file canonical_form_builder.hpp.
| using conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::T = linalg::matrix_scalar_t<CoordMapT> |
Scalar field used by the canonical form.
Definition at line 33 of file canonical_form_builder.hpp.
|
inlineexplicitconstexpr |
Construct a builder from existing canonical-form components.
| coord_in | affine selector for the current atom coordinates |
| cb_in | accumulated cone block |
| eq_in | accumulated equality map |
Definition at line 45 of file canonical_form_builder.hpp.
|
inlineconstexpr |
make new builder based on tuple of cones (no input map or selector)
| cones | emitted cones from the child atom |
Definition at line 102 of file canonical_form_builder.hpp.
References conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::canonical_trace, and conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::cb.
|
inlineconstexpr |
make new builder with tuple of cones and input cone lift map selecting upon input index
| SharedCols | existing global prefix; trailing recipe columns are fresh |
| idx | negative index from the end of the updated coordinate domain |
| lift_map | affine map that selects the lifted epigraph coordinate |
| cones | emitted cones from the child atom |
Definition at line 66 of file canonical_form_builder.hpp.
References conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::canonical_trace, and conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::cb.
|
inlineconstexpr |
Realize cone rows using the child's shared prefix and select the assembled map (no lifted coordinate requested).
| emission | fixed-size atom-local canonical recipe |
Definition at line 145 of file canonical_form_builder.hpp.
References conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::cb, and conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::N.
|
inlineconstexpr |
Realize atom-local equality rows.
This is the equality-only sister path to cone emission realization. It merges affine equality rows into the builder equality map and leaves the cone block and current coordinate selector unchanged.
| emission | fixed-size atom-local equality recipe |
Definition at line 166 of file canonical_form_builder.hpp.
References conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::cb, conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::coord_map, conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::eq_map, and conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::N.
|
inlineconstexpr |
Realize an atom-local emission and select a lifted coordinate based on input cone lift map.
| idx | negative index from the end of the realized coordinate domain |
| lift_map | affine map that selects the lifted epigraph/hypograph coordinate |
| emission | fixed-size atom-local canonical recipe |
Definition at line 124 of file canonical_form_builder.hpp.
References conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::cb.
| CanonicalTrace conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::canonical_trace |
Realized structural canonical trace.
Definition at line 211 of file canonical_form_builder.hpp.
Referenced by conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::make(), and conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::make().
| CB conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::cb |
Realized cone block containing cone tuple and affine rows.
Definition at line 208 of file canonical_form_builder.hpp.
Referenced by conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::make(), conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::make(), conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::realize(), and conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::realize().
| CoordMap conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::coord_map |
public member vars
Global selector from canonical columns to current atom coordinates.
Definition at line 206 of file canonical_form_builder.hpp.
Referenced by conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::realize().
| EqMap conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::eq_map |
Realized equality map in the same column layout.
Definition at line 210 of file canonical_form_builder.hpp.
Referenced by conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::realize().
|
staticconstexpr |
Number of original decision variables before auxiliary columns.
Definition at line 36 of file canonical_form_builder.hpp.
Referenced by conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::realize().