Cone interface and predefined cones
Generic cone interface
Hypatia's Cones
module specifies a generic cone interface that allows defining new proper cones as subtypes of Cone
. This requires implementing cone oracles as methods for the new cone type; see Cone oracles. The required oracles are:
- an initial interior point inside the cone; see
set_initial_point!
, - a feasibility test, which checks whether a given point is in the interior of the cone; see
is_feas
, - gradient and Hessian evaluations for a logarithmically homogeneous self-concordant barrier (LHSCB) function for the cone; see
grad
andhess
.
Additional optional oracles can be specified to improve speed and numerical performance. Defining a new cone automatically defines its dual cone (through the use_dual
option) also. See Hypatia's predefined cones in the cones folder for examples of how to implement a new cone type and efficient oracles. The implementations of the HypoPowerMean
cone (which uses a primal LHSCB) and the WSOSInterpNonnegative
cone (which uses a dual LHSCB) are fairly typical.
Predefined cones
Hypatia predefines many proper cones that are practically useful; see Predefined cone types. These cones are used in Hypatia's Examples and native instances. These cones are also wrapped as MathOptInterface.AbstractVectorSet
types and exported from Hypatia; see MathOptInterface cones.