|
pdsco
Purpose
Primal-Dual Barrier Method for Separable Convex Objectives
Syntax
[x,y,z,inform,PDitns,CGitns,time] = ...
pdsco( 'pdsobj', A ,b,m,n,options,x0,y0,z0,xsize,zsize );
[x,y,z,inform,PDitns,CGitns,time] = ...
pdsco( 'pdsobj','pdsmat',b,m,n,options,x0,y0,z0,xsize,zsize );
Description
pdsco solves optimization problems of the form
minimize phi(x) + 1/2 norm(gamma*x)^2 + 1/2 norm(r/delta)^2
x,r
subject to Ax + r = b, x > 0, r unconstrained.
where
phi(x) is a smooth separable convex function (possibly linear);
A is an m x n matrix, or an operator for forming A*x and A'*y;
b is a given m-vector;
gamma is a primal regularization parameter (typically small but may be 0);
delta is a dual regularization parameter (typically small or 1; must be >0);
With positive gamma and delta, the primal-dual solution (x,y,z) is
bounded and unique.
External functions
options = pdscoSet; provided with pdsco.m
[obj,grad,hess] = pdsobj( x, Prob ); provided by user
y = pdsmat( mode,m,n,x ); provided by user if A isn't explicit
Input Parameters
'pdsobj' defines phi(x) and its gradient and diagonal Hessian.
grad and hess are both n-vectors.
If phi(x) is the linear function c'x, pdsobj should return
[obj,grad,hess] = [c'x, c, zeros(n,1)].
A is an explicit m x n matrix (preferably sparse!).
'pdsmat' is used if A is not known explicitly.
It returns y = A*x (mode=1) or y = A'*x (mode=2).
b is a given right-hand side vector.
m, n are the dimensions of A (or the A implied by pdsmat).
options is a structure that may be set and altered by pdscoSet.
options.gamma defines gamma. Typical value: gamma = 1.0e-4.
options.delta defines delta. Typical value: delta = 1.0e-4 or 1.0.
Values smaller than 1.0e-6 or 1.0e-7 may affect numerical
reliability. Increasing delta usually improves convergence.
For least-squares applications, delta = 1.0 is appropriate.
help pdscoSet describes the other options.
x0, y0, z0 provide an initial solution.
xsize, zsize are estimates of the biggest x and z at the solution.
They are used to scale (x,y,z). Good estimates
should improve the performance of the barrier method.
Prob Tomlab Prob structure. Used as second argument in the
call to pdsobj
Printing in pdsco if Prob.PriLevOpt > 0 (default = 1)
Output Parameters
x is the primal solution.
y is the dual solution associated with Ax + r = b.
z is the dual solution associated with x > 0.
x > 0, z > 0 is always true.
If (x,y,z,r) is optimal, r = delta^2*y and x.*z should be small.
inform = 0 if a solution is found;
= 1 if too many iterations were required;
= 2 if the linesearch failed too often.
PDitns is the number of Primal-Dual Barrier iterations required.
CGitns is the number of Conjugate-Gradient iterations required
if an iterative solver (LSQR) is used.
time is the cpu time used.
See Also
pdscoTL
![]() |
pdscoTL |