akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
Loading...
Searching...
No Matches
conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace > Struct Template Reference

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.
 

Detailed Description

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
struct conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >

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.

Member Typedef Documentation

◆ CoordMapT

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
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.

◆ T

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
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.

Constructor & Destructor Documentation

◆ CanonicalFormBuilder()

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
constexpr conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::CanonicalFormBuilder ( const CoordMap &  coord_in,
const CB &  cb_in,
const EqMap &  eq_in,
const CanonicalTrace &  trace_in = {} 
)
inlineexplicitconstexpr

Construct a builder from existing canonical-form components.

Parameters
coord_inaffine selector for the current atom coordinates
cb_inaccumulated cone block
eq_inaccumulated equality map

Definition at line 45 of file canonical_form_builder.hpp.

Member Function Documentation

◆ make() [1/2]

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
template<std::size_t SharedCols, typename... Cs>
constexpr auto conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::make ( const std::tuple< Cs... > &  cones) const
inlineconstexpr

make new builder based on tuple of cones (no input map or selector)

Parameters
conesemitted cones from the child atom
Returns
builder with updated cone block and equality map

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.

◆ make() [2/2]

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
template<std::size_t SharedCols, affine::AffineMapLike LiftedMap, typename... Cs>
constexpr auto conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::make ( int  idx,
const LiftedMap &  lift_map,
const std::tuple< Cs... > &  cones 
) const
inlineconstexpr

make new builder with tuple of cones and input cone lift map selecting upon input index

Template Parameters
SharedColsexisting global prefix; trailing recipe columns are fresh
Parameters
idxnegative index from the end of the updated coordinate domain
lift_mapaffine map that selects the lifted epigraph coordinate
conesemitted cones from the child atom
Returns
builder with updated cone block, equality map, and coordinate map

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.

◆ realize() [1/3]

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
template<convex::AtomType Type, LocalEmissionLike Emission>
constexpr auto conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::realize ( const Emission &  emission) const
inlineconstexpr

Realize cone rows using the child's shared prefix and select the assembled map (no lifted coordinate requested).

Parameters
emissionfixed-size atom-local canonical recipe
Returns
builder with the emission realized into the global canonical layout

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.

◆ realize() [2/3]

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
template<LocalEqualityEmissionLike Emission>
constexpr auto conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::realize ( const Emission &  emission) const
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.

Parameters
emissionfixed-size atom-local equality recipe
Returns
builder with the equality emission realized

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.

◆ realize() [3/3]

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
template<convex::AtomType Type, affine::AffineMapLike LiftedMap, LocalEmissionLike Emission>
constexpr auto conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::realize ( int  idx,
const LiftedMap &  lift_map,
const Emission &  emission 
) const
inlineconstexpr

Realize an atom-local emission and select a lifted coordinate based on input cone lift map.

Parameters
idxnegative index from the end of the realized coordinate domain
lift_mapaffine map that selects the lifted epigraph/hypograph coordinate
emissionfixed-size atom-local canonical recipe
Returns
builder with the emission realized into the global canonical layout

Definition at line 124 of file canonical_form_builder.hpp.

References conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::cb.

Member Data Documentation

◆ canonical_trace

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
CanonicalTrace conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::canonical_trace

◆ cb

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
CB conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::cb

◆ coord_map

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
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().

◆ eq_map

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
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().

◆ N

template<linalg::RnSpace DecVarDom, affine::AffineMapLike CoordMap, conic::ConeBlockLike CB, affine::AffineMapLike EqMap, typename CanonicalTrace = convex::EmptyCanonicalTrace>
constexpr std::size_t conic::CanonicalFormBuilder< DecVarDom, CoordMap, CB, EqMap, CanonicalTrace >::N = linalg::space_dim_v<DecVarDom>
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().


The documentation for this struct was generated from the following file: