Socp: Second-order Cone Programming In parma: Portfolio Allocation and Risk Management Applications

Description

The function solves second-order cone problem by primal-dual interior point method. It is a wrapper function to the C-routines written by Lobo, Vandenberghe and Boyd (see reference below).

Usage

 1 2 Socp(f, A, b, C, d, N, x = NULL, z = NULL, w = NULL, control = list()) 

Arguments

 f Vector defining linear objective, length(f)==length(x) A Matrix with the A_i vertically stacked: A = [ A_1; A_2; …; A_L]. b Vector with the b_i vertically stacked: b = [ b_1; b_2; …; b_L]. C Matrix with the c_i' vertically stacked: C = [ c_1'; c_2'; …; c_L']. d Vector with the d_i vertically stacked: d = [ d_1; d_2; …; d_L]. N Vector of size L, defining the size of each constraint. x Primal feasible initial point. Must satisfy: || A_i*x + b_i || < c_i' * x + d_i for i = 1, …, L. z Dual feasible initial point. w Dual feasible initial point. control A list of control parameters.

Details

The primal formulation of an SOCP is given as:

minimise f' * x

subject to

||A_i*x + b_i|| <= c_i' * x + d_i

for i = 1,…, L. Here, x is the (n \times 1) vector to be optimised. The dual form of an SOCP is expressed as:

maximise ∑_{i = 1}^L -(b' * z_i + d_i * w_i)

subject to

∑_{i = 1}^L (A_i' * z_i + c_i * w_i) = f

and

||z_i || = w_i

for i = 1,…, L, given strictly feasible primal and dual initial points.

The algorithm stops, if one of the following criteria is met:

1. abs.tol – maximum absolute error in objective function; guarantees that for any x: abs(f'*x - f'*x\_opt) <= abs\_tol.

2. rel.tol – maximum relative error in objective function; guarantees that for any x: abs(f'*x - f'*x\_opt)/(f'*x\_opt) <= rel\_tol (if f'*x\_opt > 0). Negative value has special meaning, see target next.

3. target – if rel\_tol<0, stops when f'*x < target or -b'*z >= target.

4. max.iter – limit on number of algorithm outer iterations. Most problems can be solved in less than 50 iterations. Called with max_iter = 0 only checks feasibility of x and z, (and returns gap and deviation from centrality).

5. The target value is reached. rel\_tol is negative and the primal objective p is less than the target.

Value

A list-object with the following elements:

 x Solution to the primal problem. z Solution to the dual problem. iter Number of iterations performed. hist see out_mode in SocpControl. convergence A logical code. TRUE indicates successful convergence. info A numerical code. It indicates if the convergence was successful. message A character string giving any additional information returned by the optimiser.

Note

This function has been ported from the Rsocp package contained in the Rmetrics-Project on R-Forge. In contrast to the former implementation, allowance is made for specifying more than one cone constraint.

Bernhard Pfaff

References

Lobo, M. and Vandenberghe, L. and Boyd, S., SOCP: Software for Second-order Cone Programming, User's Guide, Beta Version, April 1997, Stanford University.

SocpPhase1, SocpPhase2, SocpControl