|
akreon-convex
Typed convex modeling, conic canonicalization, and primal-dual optimization in C++26.
|
This guide describes expression assembly, canonicalization, and solver data flow. For supported problem classes and future work, see the support roadmap.
Paths are relative to include/akreon/convex/.
| Path | Responsibility |
|---|---|
atom.hpp, variable.hpp, convex_traits.hpp | Typed expressions, variables, and DCP contracts |
functions/, composed/ | Atoms and compositions, including quadratic forms |
sets/, inequality.hpp, intersection.hpp, sum.hpp | Constraints and expression combinations |
canonical_emission.hpp, canonical_form_builder.hpp | Local recipes and shared cone/equality layouts |
cones/, cone_traits.hpp, cone_block.hpp | Cone operations and product blocks |
convex_problem.hpp | Problem assembly and objectives |
solver/, solver_traits.hpp, solver_config.hpp | Primal-dual iteration, results, and configuration |
canonical_trace.hpp, debug/ | Canonicalization traces and diagnostic formatting |
convex owns modeling and solving; conic owns cone/building infrastructure; config holds solver settings. Convex owns optimization domains and cone membership; Linalg owns generic matrices, spaces, affine maps, and numerical kernels. Convex has no dependency on Control or Dynamics.
Doxygen's namespace, class, and file indexes provide API contracts and algorithm flow from the headers.