|
akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
|
forward decl for nonneg orthant cone More...
#include <rplus.hpp>
Public Types | |
| using | ConeBase = Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC > |
| bring into scope alias from cone base | |
Public Types inherited from conic::Cone< Slack, NonnegOrthantCone< Slack >, 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 interior point | |
| constexpr Slack | y0_impl () const |
| default dual point | |
| constexpr bool | in_cone_impl (const Slack &x) const |
| in interior of K | |
| constexpr bool | in_dual_cone_impl (const Slack &y) const |
| in interior of K^* | |
| constexpr T | alpha_max_impl (const Slack &x, const linalg::Vector< T, M > &p) const |
| fraction to boundary dK | |
| constexpr T | alpha_max_dual_impl (const Slack &y, const linalg::Vector< T, M > &p) const |
| fracto to dK^* | |
| constexpr auto | H_impl (const Slack &x, const Slack &y) const |
| hessian | |
| constexpr auto | grad_impl (const Slack &x) const |
| grad | |
| constexpr T | nu_impl () const |
| barrier parameter | |
| constexpr auto | e_impl () const |
| e (jordan identity) | |
| 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 | |
| template<typename Scaling > | |
| constexpr auto | scaled_affine_correction_impl (const Slack &x, const Scaling &, const Slack &px, const Slack &py) const |
| Componentwise form of the NT-scaled affine correction for R^n_+. | |
| constexpr auto | trace_impl (const Slack &x, const Slack &y) const |
| trace | |
| constexpr auto | inv_impl (const Slack &x) const |
| jordan inverse | |
| constexpr auto | gamma_F_impl (const Slack &x, const Slack &y) const |
| gamma_F | |
Public Member Functions inherited from conic::Cone< Slack, NonnegOrthantCone< Slack >, 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 | |
Additional Inherited Members | |
Static Public Attributes inherited from conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC > | |
| static constexpr std::size_t | M |
| helpers to get M slack size | |
| static constexpr T | eps |
| eps constant | |
forward decl for nonneg orthant cone
nonneg cone class
R^n_+ = set of all nonneg R
| using conic::NonnegOrthantCone< Slack >::ConeBase = Cone<Slack, NonnegOrthantCone<Slack>, ConeType::SYMMETRIC> |
|
inlineconstexpr |
fracto to dK^*
| y | in K |
| p | in E^* |
Definition at line 135 of file rplus.hpp.
References conic::NonnegOrthantCone< Slack >::alpha_max_impl().
|
inlineconstexpr |
fraction to boundary dK
sigma_x = frac{1}{sup{alpha | x + alpha p in K}} sup{alpha | x + alpha p in K} -> -inf(x + alpha p) x + alpha p = 0 -> alpha = -x / p alpha = min. -x_i / p_i
(similar for dual)
| x | in K or K^* |
| p | in E or E^* (delta dir) |
Definition at line 114 of file rplus.hpp.
References conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M.
Referenced by conic::NonnegOrthantCone< Slack >::alpha_max_dual_impl().
|
inlineconstexpr |
circ
x circ y
| x | in K |
| y | in K^* |
Definition at line 250 of file rplus.hpp.
Referenced by conic::NonnegOrthantCone< Slack >::trace_impl().
|
inlineconstexpr |
e (jordan identity)
e = (1,1,...1)
Definition at line 213 of file rplus.hpp.
Referenced by conic::NonnegOrthantCone< Slack >::H_impl().
|
inlineconstexpr |
gamma_F
| x | in K |
| y | in K^* |
Definition at line 325 of file rplus.hpp.
References conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::eps, conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M, and conic::NonnegOrthantCone< Slack >::nu_impl().
|
inlineconstexpr |
grad
F'(x) = -(1/x)^{T}
| x | in K or y in K^* |
Definition at line 186 of file rplus.hpp.
References conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::eps, and conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M.
|
inlineconstexpr |
hessian
F''(w) -> pushforward operator that maps primal / tangent dir to change in gradient at scaling point w... acts as forward sensitivity & curvature
w_i = sqrt(x_i/y_i) F(w) = -log(sum(w_i)) F'(w) = -(1/w)^{T} F''(w) = diag(1/w^2)
| x | in K |
| y | in K^* |
Definition at line 156 of file rplus.hpp.
References conic::NonnegOrthantCone< Slack >::e_impl(), conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::eps, conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M, conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::w(), and conic::NonnegOrthantCone< Slack >::w_impl().
|
inlineconstexpr |
in interior of K
| x | in K |
Definition at line 82 of file rplus.hpp.
References conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M.
Referenced by conic::NonnegOrthantCone< Slack >::in_dual_cone_impl().
|
inlineconstexpr |
in interior of K^*
| y | in K^* |
Definition at line 95 of file rplus.hpp.
References conic::NonnegOrthantCone< Slack >::in_cone_impl().
|
inlineconstexpr |
jordan inverse
| x | in K or y in K^* |
Definition at line 304 of file rplus.hpp.
References conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::eps, and conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M.
|
inlineconstexpr |
barrier parameter
Definition at line 204 of file rplus.hpp.
References conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M.
Referenced by conic::NonnegOrthantCone< Slack >::gamma_F_impl().
|
inlineconstexpr |
Componentwise form of the NT-scaled affine correction for R^n_+.
Here x circ y is componentwise multiplication. Complementarity gives y_i*dx_i + x_i*dy_i = mu - x_i*y_i - px_i*py_i. Dividing by x_i gives dy_i = -(y_i/x_i)*dx_i - [y_i - mu/x_i + px_i*py_i/x_i]. Thus the reduced dual residual needs px_i*py_i/x_i, not the raw product. The existing interior safeguard bounds the denominator away from zero.
Definition at line 265 of file rplus.hpp.
References conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::eps, and conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M.
|
inlineconstexpr |
trace
trace(x circ y) = sum(x_i y_i)
| x | in K |
| y | in K^* |
Definition at line 290 of file rplus.hpp.
References conic::NonnegOrthantCone< Slack >::circ_impl(), and conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M.
|
inlineconstexpr |
w (self-scaled point)
| x | in K |
| y | in K^* |
Definition at line 226 of file rplus.hpp.
References conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::eps, conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M, and conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::w().
Referenced by conic::NonnegOrthantCone< Slack >::H_impl().
|
inlineconstexpr |
default interior point
Definition at line 62 of file rplus.hpp.
References conic::Cone< Slack, NonnegOrthantCone< Slack >, ConeType::SYMMETRIC >::M.
Referenced by conic::NonnegOrthantCone< Slack >::y0_impl().
|
inlineconstexpr |
default dual point
Definition at line 73 of file rplus.hpp.
References conic::NonnegOrthantCone< Slack >::x0_impl().