|
akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
|
cone base class More...
#include <cone.hpp>
Public Types | |
| 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 () 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. | |
| template<typename Scaling > | |
| 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. | |
| template<typename 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 Attributes | |
| static constexpr std::size_t | M = linalg::vector_dim_v<Slack> |
| helpers to get M slack size | |
| static constexpr T | eps = 1e-8 |
| eps constant | |
cone base class
| using conic::Cone< Slack, Derived, CType >::HessianMat = linalg::Matrix<T, M, M> |
| using conic::Cone< Slack, Derived, CType >::T = linalg::vector_element_t<Slack> |
|
inlineconstexpr |
fraction to boundary dk
sigma_x(p) = frac{1}{sup{alpha | x - alpha p in k }} alpha_max = frac{1}{sigma_x(p)}
we want the largest alpha that stays within k for our next step x_{k+1} = x_{k} - alpha p
| x | in K |
| p | in E |
Definition at line 102 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self().
|
inlineconstexpr |
fraction to boundary dk^*
sigma_x(p) = frac{1}{sup{alpha | y - alpha p in k^* }} alpha_max = frac{1}{sigma_x(p)}
we want the largest alpha that stays within k for our next step y_{k+1} = y_{k} - alpha p
| y | in K^* |
| p | in E^* |
Definition at line 120 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self().
|
inlineconstexpr |
circ (jordan map/product operator)
| x | in K |
| y | in K^* |
Definition at line 180 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self(), and conic::SYMMETRIC.
Referenced by conic::Cone< Slack, Derived, CType >::scaled_affine_correction_impl().
|
inlineconstexpr |
e (jordan identity)
x circ e = x
Definition at line 152 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self(), and conic::SYMMETRIC.
Referenced by conic::Cone< Slack, Derived, CType >::trace_weight().
|
inlineconstexpr |
gamma_F (functional proximity neighborhood metric)
| x | in K |
| y | in K^* |
Definition at line 289 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self(), and conic::SYMMETRIC.
|
inlineconstexpr |
gradient
F'(x)
| x | in K |
Definition at line 143 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self().
|
inlineconstexpr |
hessian
| x | in K |
| y | in K^* |
Definition at line 84 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self().
|
inlineconstexpr |
in the interior of k
x in K
| x | in K |
Definition at line 59 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self().
|
inlineconstexpr |
in the interior of K^*
y in K^* ?
| y | in K^* |
Definition at line 72 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self().
|
inlineconstexpr |
inv (jordan inverse element)
| x | in K or y in K^* |
Definition at line 207 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self(), and conic::SYMMETRIC.
Referenced by conic::Cone< Slack, Derived, CType >::scaled_affine_correction_impl().
|
inlineconstexpr |
barrier parameter
For jordan algebra it is associated with the dimension of the cone
Definition at line 132 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self().
|
inlineconstexpr |
Affine second-order correction in dual coordinates under NT scaling.
In the Euclidean Jordan algebra, let L_lambda(v) = lambda circ v. With lambda = W^-1*x = W*y, solve L_lambda(v) = (W^-1*px) circ (W*py), then return W^-1*v. This converts the affine product to the reduced dual-step equation; it is not a geometric cross product or an orthogonal-vector operation.
Reference: L. Vandenberghe, "The CVXOPT linear and quadratic cone program solvers," sections 4 (NT scaling) and 5, equation (19b). https://www.seas.ucla.edu/~vandenbe/publications/coneprog.pdf
Definition at line 246 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self(), and conic::SYMMETRIC.
|
inlineconstexpr |
Common symmetric-cone implementation using Jordan operations.
Definition at line 256 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::circ(), conic::Cone< Slack, Derived, CType >::inv(), conic::Cone< Slack, Derived, CType >::M, and conic::Cone< Slack, Derived, CType >::self().
|
inlineconstexpr |
self function which returns a const ref to the derived object
Definition at line 300 of file cone.hpp.
Referenced by conic::Cone< Slack, Derived, CType >::alpha_max(), conic::Cone< Slack, Derived, CType >::alpha_max_dual(), conic::Cone< Slack, Derived, CType >::circ(), conic::Cone< Slack, Derived, CType >::e(), conic::Cone< Slack, Derived, CType >::gamma_F(), conic::Cone< Slack, Derived, CType >::grad(), conic::Cone< Slack, Derived, CType >::H(), conic::Cone< Slack, Derived, CType >::in_cone(), conic::Cone< Slack, Derived, CType >::in_dual_cone(), conic::Cone< Slack, Derived, CType >::inv(), conic::Cone< Slack, Derived, CType >::nu(), conic::Cone< Slack, Derived, CType >::scaled_affine_correction(), conic::Cone< Slack, Derived, CType >::scaled_affine_correction_impl(), conic::Cone< Slack, Derived, CType >::trace(), conic::Cone< Slack, Derived, CType >::w(), conic::Cone< Slack, Derived, CType >::x0(), and conic::Cone< Slack, Derived, CType >::y0().
|
inlineconstexpr |
trace
| x | in K |
| y | in K^* |
Definition at line 194 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self(), and conic::SYMMETRIC.
Referenced by conic::Cone< Slack, Derived, CType >::trace_weight().
|
inlineconstexpr |
Convert Euclidean complementarity to this cone's Jordan trace units.
For the supported symmetric cones, trace(u, v) = weight * <u, v>. Evaluate that constant ratio at the Jordan identity: weight is 1 for the orthant and PSD (svec coordinates), and 2 for SOC.
The predictor-corrector uses mu_global = <x, y> / sum_k nu_k over the entire product cone. Multiplying by this weight gives the local coefficient of grad(x_k) = -inv(x_k) in its reduced complementarity residual. This is a cone-specific normalization, independent of the current iterate; it does not compute a local gap or change the shared centering target.
Definition at line 226 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::e(), and conic::Cone< Slack, Derived, CType >::trace().
|
inlineconstexpr |
w (self-scaling point)
| x | in K |
| y | in K^* |
Definition at line 166 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self(), and conic::SYMMETRIC.
|
inlineconstexpr |
default interior point (initial slack in cone space)
x0 in S^0(P)
Definition at line 39 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self().
|
inlineconstexpr |
default interior point (initial slack in dual cone)
y0 in S^0(D)
Definition at line 48 of file cone.hpp.
References conic::Cone< Slack, Derived, CType >::self().
|
staticconstexpr |
|
staticconstexpr |
helpers to get M slack size
Definition at line 24 of file cone.hpp.
Referenced by conic::Cone< Slack, Derived, CType >::scaled_affine_correction_impl().