-
Notifications
You must be signed in to change notification settings - Fork 94
Closed
Description
to make it easier to remember the order of the variables in the various cone definitions, I think we should follow a convention of (epi/hypograph, perspective, argument(s)). note that a epi/hypograph variable and/or a perspective variable may not be present.
all the cones already follow this convention (though it's not immediately obvious from their names/definitions)
- SOC: x >= norm2(z)
- RSOC: x >= y*sumabs2(z/y)/2 (equivalent to current definition but maybe a little clearer)
- PSD: 0 <= eigmin(Z), Z symmetric
- Power: x >= y*abs(z/y)^q (equivalent to current definition where q = 1/exponent is positive)
- Exponential: x <= y*log(z/y), z >= 9
- RootDet: x <= (det(Z))^1/n, Z PSD
- LogDet: x <= y*log(det(Z/y)), Z PSD (see logdet cone definition is wrong (needs perspective variable) #546)
- Geomean: x <= prod(z)^1/n, z >= 0 (perhaps replace with generalized version below)
- generalized Geomean: x <= prod_i z_i^alpha_i, z >= 0 (for alpha on unit simplex; sometimes called power cone in literature, with x or abs(x) on LHS)
so to make things clear I would recommend
- noting the (epi/hypograph, perspective, argument(s)) ordering convention in the documentation
- changing docs to use the less arbitrary descriptions above
- potentially changing the names or adding name aliases for some cones, like
MOI.EpiPerspSquare = MOI.RotatedSecondOrderCone
(since this cone is the epigraph of the perspective of the 1/2 square function) andMOI.HypoPerspLog = MOI.ExponentialCone
(since it is the (closure of the) hypograph of the perspective of the log function)
I am happy to make these non-breaking changes.
Metadata
Metadata
Assignees
Labels
No labels