|
akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
|
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> |
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
| using conic::Rotated2SOC< Map >::Mat = affine::affine_mat_t<Map> |
| using conic::Rotated2SOC< Map >::T = linalg::matrix_scalar_t<Mat> |
|
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
| map | (F & g) |
Definition at line 58 of file soc.hpp.
References conic::Rotated2SOC< Map >::M.
|
staticconstexpr |
Definition at line 44 of file soc.hpp.
Referenced by conic::Rotated2SOC< Map >::operator()().
|
staticconstexpr |