|
ConicBundle
|
for minimizing the support function over the second order cone with
for an affine cost function or, equivalently, Lagrangian relaxation of Linear Programs over the second order cone
More...
Classes | |
| class | ConicBundle::SOCPrimalExtender |
| Interface for extending PrimalData, e.g., in Lagrangian relaxation of column generation approaches. More... | |
| class | ConicBundle::SOCOracle |
Oracle interface for minimization of the support function over the seoncd order cone with for an affine cost function or, equivalently, Lagrangian relaxation of second order cone programs. More... | |
| class | ConicBundle::SOCBundleParameters |
| Bundle parameters for SOCModel. More... | |
for minimizing the support function over the second order cone with
for an affine cost function or, equivalently, Lagrangian relaxation of Linear Programs over the second order cone
For a vector
and a matrix
(explicitly or implicitly given), the abstract SOCOracle represents one of the following convex functions
depending on the selected parameter ConicBundle::FunctionTask and the scalar factor
when adding the function to the problem by MatrixCBsolver::add_function(),
While
is the fixed value given explicitly in MatrixCBsolver::add_function() in the first two cases, in the last case only the initial value is supplied and then solver and model successively determine new values so as to ensure (if feasible) that in the end solutions
(almost) satisfy
.
The solver exploits a SOCOracle by using a specialized SOCModel which implements a cutting model similar to the spectral bundle method, i.e., the cutting surface is determined by optimizing over a succsively updated subspace for
. The approach is explicitly intended for large scale applications, therefore SOCOracle never supplies the coefficient matrices explicitly but provides access to computing their action on given vectors or matrices and to the evaluation of the function for given
. In this sense it is a matrix free oracle. For an implementation that supports sparse matrices see implemention of a SOCOracle (SOCSupportFunction). In special situations it may also be worth to implement a corresponding specialized class derived from SOCOracle.
If in setting up groundset within MatrixCBSolver the
variables are introduced with a linear cost vector
and appropriate sign constraints, the three functions above may be interpreted as the Lagrangian dual to a primal semidefinite program of the form
The constraint on
is always added implicitly and its type is guided by the choice of ConicBundle::FunctionTask in MatrixCBSolver::add_function(). In particular
. Lagrangian relaxation of the constraints
by multipliers
then results in the dual function
. Note, if the other constraints already imply
, the dual solution
will not be unique, because adding a constant to the first component of
will give rise to the same objective value.
. Lagrangian relaxation of the constraints
by multipliers
results in the dual function
. It corresponds to a primal feasible set having $x_0$ bounded by
. If a bound on the size of the primal optimal solution is known in advance, this is a good choice for
, and this variant is then more suitable than the next and last one.
for
, so in fact this only leads to
. Lagrangian relaxation of the constraints
by multipliers
results in the dual function
. The given initial value of
will be increased by SOCModel whenever there is no progress in forcing the support function value of the affine cost function to a value of at most 0. If the primal problem has a bounded optimal solution, this will end at some point, but
might get too large for keeping numerical stability. In general this option is still a bit hazardous, the other two variants are clearly to be preferred. In particular, if a good bound on reasonable sizes of optimal solutions are known, it is suggested to choose ConstantPenaltyFunction instead.In terms of the primal SOC view the sense of the constraints
is determined by the sign constraints on the dual variables
and these must be encoded in the ConicBundle::Groundset of the y variables, these bounds and the right hand side are not provided by this oracle. The right hand side can be added e.g. as a linear cost term for the variables
or alternatively via an AffineFunctionTransformation.
The bundle method computes the cutting model by successively computing and collecting extreme rays of the second order cone with
in addition to the unit vector having
and
. The proper convex/conic combination of these (computed by the method) successively approximates an optimal solution
to the primal SOC. As this primal approximation is often the central object of interest (e.g. it is the basis for cutting plane approaches) the method can be instructed to collect this primal information explicitly by supplying some MatrixPrimal in the implementation of SOCOracle::generate_minorant().
For a concrete implementation of SOCOracle using Matrix Classes (namespace CH_Matrix_Classes) see implemention of a SOCOracle (SOCSupportFunction).
Internally, the SumBlockModel implementation of the bundle model is SOCModel.
1.8.13