akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
Loading...
Searching...
No Matches
conic::Rotated2SOC< Map > Struct Template Reference

RSOC -> SOC. More...

#include <soc.hpp>

Public Types

using Mat = affine::affine_mat_t< Map >
 extract alias & types
 
using T = linalg::matrix_scalar_t< Mat >
 

Public Member Functions

constexpr auto operator() (const Map &map)
 transform native RSOC coord map to SOC map
 

Static Public Attributes

static constexpr std::size_t M = linalg::mat_rows_v<Mat>
 
static constexpr std::size_t N = linalg::mat_cols_v<Mat>
 

Detailed Description

template<affine::AffineMapLike Map>
struct conic::Rotated2SOC< Map >

RSOC -> SOC.

K_rsoc = { (u, v, w) | ||u||_2^2 <= 2 v w, v >= 0, w >= 0 } K_soc = { (x, t) | ||x|| <= t, t >= 0 }

SOC: x^T x <= t^2... 0 <= t^2 - x^T x RSOC: u^T u <= 2 v w... 0 <= 2 v w - u^T u

id: (v + w)^2 - (v - w)^2 = 4 v w chang of vars: (x, x0, t) in R^{n+1} x R t = v + w x0 = v - w x = sqrt(2) u

SOC: (v - w)^2 + 2 u^T u <= (v + w)^2 v^2 - 2vw + w^2 + 2 u^T u <= v^2 + 2 vw + w^2 2 u^T u <= 4 v w u^T u <= 2 v w (eq RSOC)

A = [ sqrt(2)I 0 0 ] [ u; v; w ] = (x = sqrt(2)u, x0=v - w, t = v+w) [ 0 1 -1 ] [ 0 1 1 ]

hat{A} = 1/sqrt(2) A ... orthonormalized A... hat{A}^T hat{A} = I

Definition at line 40 of file soc.hpp.

Member Typedef Documentation

◆ Mat

template<affine::AffineMapLike Map>
using conic::Rotated2SOC< Map >::Mat = affine::affine_mat_t<Map>

extract alias & types

Definition at line 42 of file soc.hpp.

◆ T

template<affine::AffineMapLike Map>
using conic::Rotated2SOC< Map >::T = linalg::matrix_scalar_t<Mat>

Definition at line 43 of file soc.hpp.

Member Function Documentation

◆ operator()()

template<affine::AffineMapLike Map>
constexpr auto conic::Rotated2SOC< Map >::operator() ( const Map &  map)
inlineconstexpr

transform native RSOC coord map to SOC map

hat{x} = (T F) x + T g in R^n -> K

F in R^{m x n}, x in R^n, g in R^m

Parameters
map(F & g)
Returns
transformed map (T F & T g)

Definition at line 58 of file soc.hpp.

References conic::Rotated2SOC< Map >::M.

Member Data Documentation

◆ M

template<affine::AffineMapLike Map>
constexpr std::size_t conic::Rotated2SOC< Map >::M = linalg::mat_rows_v<Mat>
staticconstexpr

Definition at line 44 of file soc.hpp.

Referenced by conic::Rotated2SOC< Map >::operator()().

◆ N

template<affine::AffineMapLike Map>
constexpr std::size_t conic::Rotated2SOC< Map >::N = linalg::mat_cols_v<Mat>
staticconstexpr

Definition at line 45 of file soc.hpp.


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