# TOMLAB  
# REGISTER (TOMLAB)
# LOGIN  
# myTOMLAB
TOMLAB LOGO

« Previous « Start » Next »

20  L1 Problem

The constrained L1 (L1) problem is defined as

 
min
x
 
Σ
i
|ri(x)|
subject to xL x xU
  bL Ax bU
  cL c(x) cU
    (22)
where x,xL,xU ∈ Rn, r(x) ∈ RN, c(x),cL,cU ∈ Rm1, bL,bU ∈ Rm2 and A∈ Rm2 × n.

The L1 solution can be obtained by the use of any suitable nonlinear TOMLAB solver.

The following files define a problem in TOMLAB.

File: tomlab/quickguide/L1QG_r.m, L1QG_J.m
  r:   Residual vector
  J:   Jacobian matrix
The following file illustrates how to solve an L1 problem in TOMLAB. Also view the m-files specified above for more information.

File: tomlab/quickguide/L1QG.m

Open the file for viewing, and execute L1QG in Matlab.
% L1QG is a small example problem for defining and solving
% an L1 problem using the TOMLAB format.

Name = 'Madsen-Tinglett 1';
x_0  = [1;1];        % Initial value
x_L  = [-10;-10];    % Lower bounds on x
x_U  = [10;10];      % Upper bounds on x

% Solve the problem min max |r_i(x)|, where i = 1,2,3
% Solve the problem by eliminating abs, doubling the residuals, reverse sign
% i.e. min max [r_1; r_2; r_3; -r_1; -r_2; -r_3];
y = [-1.5; -2.25; -2.625]; % The data values
t = [];                 % No time vector used

% Generate the problem structure using the Tomlab format
% as a standard least squares problem.
%
% The part in the residuals dependent on x are defined in L1ex_r.m
% The Jacobian is defined in L1ex_J.m

Prob = clsAssign('L1QG_r', 'L1QG_J', [], x_L, x_U, Name, x_0, y, t);

% Set JacPattern, L1Solve will compute correct ConsPattern
Prob.JacPattern  = ones(length(y),2);

% Set the optimal values into the structure (for nice result presenting)

Prob.x_opt=[3, 0.5];
Prob.f_opt=0;

% Use the standard method in L1Solve
Prob.L1Type = 1;

% Get the default solver
Solver = GetSolver('con',1,0);

Prob.SolverL1 = Solver;

% One may set the solver directly:
%Prob.SolverL1 = 'snopt';
%Prob.SolverL1 = 'npsol';
%Prob.SolverL1 = 'minos';
%Prob.SolverL1 = 'conSolve';

% These statements generate ASCII log files when running SNOPT
if strcmpi(Solver,'snopt')
   Prob.SOL.PrintFile = 'snopt.txt';
   Prob.SOL.SummFile  = 'snopts.txt';
   Prob.SOL.optPar(1) = 10;   % Print level in SNOPT
   %Prob.SOL.optPar(13) = 3;   % Verify level in SNOPT
end

% Set print level 2 to get output from PrintResult at the end
PriLev = 2;
Prob.PriLevOpt = 0;

Result  = tomRun('L1Solve', Prob, PriLev);

« Previous « Start » Next »