|
akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
|
forward decl for psd More...
#include <psd_cone.hpp>
Public Types | |
| using | ConeBase = Cone< Slack, PositiveSemidefiniteCone< Slack, N >, ConeType::SYMMETRIC > |
| bring into scope alias from cone base | |
| using | ambient_space = linalg::SymmetricMatrixSpace< T, N > |
| Ambient vector space of real symmetric matrices. | |
| using | element_type = linalg::space_element_t< ambient_space > |
| Canonical matrix representation of an ambient-space element. | |
Public Types inherited from conic::Cone< Slack, PositiveSemidefiniteCone< Slack, N >, ConeType::SYMMETRIC > | |
| using | T = linalg::vector_element_t< Slack > |
| alias for mat type | |
| using | HessianMat = linalg::Matrix< T, M, M > |
| hessian type | |
Public Member Functions | |
| constexpr Slack | x0_impl () const |
| default x in K | |
| constexpr Slack | y0_impl () const |
| default y in K^* | |
| constexpr bool | in_cone_impl (const Slack &x) const |
| x in K check | |
| constexpr bool | in_dual_cone_impl (const Slack &y) const |
| y in K^* check | |
| constexpr T | alpha_max_impl (const Slack &x, const linalg::Vector< T, M > &p) const |
| alpha_max (fraction to boundary) | |
| constexpr T | alpha_max_dual_impl (const Slack &y, const linalg::Vector< T, M > &p) const |
| alpha_max dual (fraction to dK^*) | |
| constexpr auto | H_impl (const Slack &x, const Slack &y) const |
| hessian | |
| constexpr auto | grad_impl (const Slack &x) const |
| grad (jacobian) | |
| constexpr T | nu_impl () const |
| barrier param | |
| constexpr auto | e_impl () const |
| e (jordan identity) | |
| constexpr auto | sqrt_impl (const Slack &x) const |
| Jordan square root in symmetric-vector coordinates. | |
| constexpr auto | w_impl (const Slack &x, const Slack &y) const |
| w (self-scaled point) | |
| constexpr auto | circ_impl (const Slack &x, const Slack &y) const |
| circ | |
| constexpr T | trace_impl (const Slack &x, const Slack &y) const |
| trace | |
| constexpr auto | gamma_F_impl (const Slack &x, const Slack &y) const |
| gamma_F | |
| constexpr auto | inv_impl (const Slack &x) const |
| inv | |
Public Member Functions inherited from conic::Cone< Slack, PositiveSemidefiniteCone< Slack, N >, ConeType::SYMMETRIC > | |
| constexpr Slack | x0 () const |
| default interior point (initial slack in cone space) | |
| constexpr Slack | y0 () const |
| default interior point (initial slack in dual cone) | |
| constexpr bool | in_cone (const Slack &x) const |
| in the interior of k | |
| constexpr bool | in_dual_cone (const Slack &y) const |
| in the interior of K^* | |
| constexpr auto | H (const Slack &x, const Slack &y) const |
| hessian | |
| constexpr T | alpha_max (const Slack &x, const linalg::Vector< T, M > &p) const |
| fraction to boundary dk | |
| constexpr T | alpha_max_dual (const Slack &y, const linalg::Vector< T, M > &p) const |
| fraction to boundary dk^* | |
| constexpr T | nu () const |
| barrier parameter | |
| constexpr auto | grad (const Slack &x) const |
| gradient | |
| constexpr auto | e () const |
| e (jordan identity) | |
| constexpr auto | w (const Slack &x, const Slack &y) const |
| w (self-scaling point) | |
| constexpr auto | circ (const Slack &x, const Slack &y) const |
| circ (jordan map/product operator) | |
| constexpr auto | trace (const Slack &x, const Slack &y) const |
| trace | |
| constexpr auto | inv (const Slack &x) const |
| inv (jordan inverse element) | |
| constexpr T | trace_weight () const |
| Convert Euclidean complementarity to this cone's Jordan trace units. | |
| constexpr auto | scaled_affine_correction (const Slack &x, const Scaling &P, const Slack &px, const Slack &py) const |
| Affine second-order correction in dual coordinates under NT scaling. | |
| constexpr auto | scaled_affine_correction_impl (const Slack &x, const Scaling &P, const Slack &px, const Slack &py) const |
| Common symmetric-cone implementation using Jordan operations. | |
| constexpr auto | gamma_F (const Slack &x, const Slack &y) const |
| gamma_F (functional proximity neighborhood metric) | |
| constexpr auto | self () const |
| self function which returns a const ref to the derived object | |
Static Public Member Functions | |
| static constexpr bool | contains (const element_type &element) |
| Closed-cone membership, including semidefinite boundary elements. | |
Additional Inherited Members | |
Static Public Attributes inherited from conic::Cone< Slack, PositiveSemidefiniteCone< Slack, N >, ConeType::SYMMETRIC > | |
| static constexpr std::size_t | M |
| helpers to get M slack size | |
| static constexpr T | eps |
| eps constant | |
forward decl for psd
psd cone class
svec(X) in S^n_+
Definition at line 47 of file psd_cone.hpp.
| using conic::PositiveSemidefiniteCone< Slack, N >::ambient_space = linalg::SymmetricMatrixSpace<T, N> |
Ambient vector space of real symmetric matrices.
Definition at line 64 of file psd_cone.hpp.
| using conic::PositiveSemidefiniteCone< Slack, N >::ConeBase = Cone<Slack, PositiveSemidefiniteCone<Slack, N>, ConeType::SYMMETRIC> |
bring into scope alias from cone base
Definition at line 51 of file psd_cone.hpp.
| using conic::PositiveSemidefiniteCone< Slack, N >::element_type = linalg::space_element_t<ambient_space> |
Canonical matrix representation of an ambient-space element.
Definition at line 66 of file psd_cone.hpp.
|
inlineconstexpr |
alpha_max dual (fraction to dK^*)
| y | in K^* |
| p | in E^* |
Definition at line 162 of file psd_cone.hpp.
References conic::PositiveSemidefiniteCone< Slack, N >::alpha_max_impl().
|
inlineconstexpr |
alpha_max (fraction to boundary)
sigma(alpha) = frac{1}{sup{alpha | (x + alpha p in K)}}
X + alpha P in S^n_++ X + alpha P = [ X^{1/2} (I + alpha X^{-1/2} P X^{-1/2}) X^{1/2} ] let U = X^{-1/2} P X^{-1/2} we want I + alpha U >= 0 I + alpha U >= 0 iff 1 + alpha lambda_i(U) >= 0 for all i
alpha_max = cases{ +inf, if lambda_i(U) >= 0 for all i -frac{1}{lambda_min(U)} else }
| x | in K |
| p | in E |
Definition at line 138 of file psd_cone.hpp.
References conic::PositiveSemidefiniteCone< Slack, N >::in_cone_impl().
Referenced by conic::PositiveSemidefiniteCone< Slack, N >::alpha_max_dual_impl().
|
inlineconstexpr |
|
inlinestaticconstexpr |
Closed-cone membership, including semidefinite boundary elements.
Uses the element's numerical PSD classification and tolerance. In contrast, in_cone() checks the positive-definite interior required by the solver.
Definition at line 74 of file psd_cone.hpp.
|
inlineconstexpr |
e (jordan identity)
e = I
Definition at line 227 of file psd_cone.hpp.
Referenced by conic::PositiveSemidefiniteCone< Slack, N >::H_impl(), conic::PositiveSemidefiniteCone< Slack, N >::x0_impl(), and conic::PositiveSemidefiniteCone< Slack, N >::y0_impl().
|
inlineconstexpr |
gamma_F
gamma_F = -ln(det(X)) - ln(det(Y)) + nu ln(Tr(X^{1/2} Y X^{1/2}) / nu)
| x | in K |
| y | in K^* |
Definition at line 318 of file psd_cone.hpp.
References conic::PositiveSemidefiniteCone< Slack, N >::nu_impl().
|
inlineconstexpr |
grad (jacobian)
F'(x) = -x^{-1}
| x | in K or y in K^* |
Definition at line 208 of file psd_cone.hpp.
References conic::PositiveSemidefiniteCone< Slack, N >::inv_impl().
|
inlineconstexpr |
hessian
F(w) = -log det(w) F'(w) = - w^{-1} F''(w) = P(w^{-1})
F''(w^{-1}) x = y
| x | in K |
| y | in K^* |
Definition at line 181 of file psd_cone.hpp.
References conic::PositiveSemidefiniteCone< Slack, N >::e_impl(), conic::PositiveSemidefiniteCone< Slack, N >::inv_impl(), conic::Cone< Slack, PositiveSemidefiniteCone< Slack, N >, ConeType::SYMMETRIC >::w(), and conic::PositiveSemidefiniteCone< Slack, N >::w_impl().
|
inlineconstexpr |
x in K check
| x | in K |
Definition at line 99 of file psd_cone.hpp.
Referenced by conic::PositiveSemidefiniteCone< Slack, N >::alpha_max_impl(), and conic::PositiveSemidefiniteCone< Slack, N >::in_dual_cone_impl().
|
inlineconstexpr |
y in K^* check
| y | in K^* |
Definition at line 112 of file psd_cone.hpp.
References conic::PositiveSemidefiniteCone< Slack, N >::in_cone_impl().
|
inlineconstexpr |
inv
| x | in K |
Definition at line 350 of file psd_cone.hpp.
Referenced by conic::PositiveSemidefiniteCone< Slack, N >::grad_impl(), and conic::PositiveSemidefiniteCone< Slack, N >::H_impl().
|
inlineconstexpr |
barrier param
Definition at line 218 of file psd_cone.hpp.
Referenced by conic::PositiveSemidefiniteCone< Slack, N >::gamma_F_impl().
|
inlineconstexpr |
Jordan square root in symmetric-vector coordinates.
Definition at line 237 of file psd_cone.hpp.
|
inlineconstexpr |
|
inlineconstexpr |
w (self-scaled point)
W = X^{1/2} (X^{1/2} Y X^{1/2})^{-1/2} X^{1/2}
| x | in K |
| y | in K^* |
Definition at line 254 of file psd_cone.hpp.
References conic::Cone< Slack, PositiveSemidefiniteCone< Slack, N >, ConeType::SYMMETRIC >::w().
Referenced by conic::PositiveSemidefiniteCone< Slack, N >::H_impl().
|
inlineconstexpr |
default x in K
Definition at line 83 of file psd_cone.hpp.
References conic::PositiveSemidefiniteCone< Slack, N >::e_impl().
|
inlineconstexpr |
default y in K^*
Definition at line 90 of file psd_cone.hpp.
References conic::PositiveSemidefiniteCone< Slack, N >::e_impl().