Quickguide LPCON Problem

From TomWiki
Revision as of 04:20, 10 August 2011 by Elias (talk | contribs) (Created page with "When solving a problem with a linear objective and nonlinear constraints there is no need to explicitly code the gradient or Hessian. TOMLAB automatically supplies these if ''lpc...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

When solving a problem with a linear objective and nonlinear constraints there is no need to explicitly code the gradient or Hessian. TOMLAB automatically supplies these if lpconAssign is used.

The linear constrained nonlinear programming problem is defined as:



where Failed to parse (unknown function "\MATHSET"): {\displaystyle x, x_L, x_U, d \in \MATHSET{R}^n} , Failed to parse (unknown function "\MATHSET"): {\displaystyle f(x) \in \MATHSET{R}} , Failed to parse (unknown function "\MATHSET"): {\displaystyle A \in \MATHSET{R}^{m_1 \times n}} , Failed to parse (unknown function "\MATHSET"): {\displaystyle b_L,b_U \in \MATHSET{R}^{m_1}} and Failed to parse (unknown function "\MATHSET"): {\displaystyle c_L,c(x),c_U \in \MATHSET{R}^{m_2}} .

The following files define an example problem in TOMLAB.

File: tomlab/quickguide/lpconQG.m, lpconQG_c.m, lpconQG_dc.m, lpcon_d2c.m

c:   Nonlinear constraint vector
dc:  Nonlinear constraint gradient matrix
d2c: The second part of the Hessian to the Lagrangian function for the nonlinear constraints.

The following file illustrates how to solve this LPCON problem in TOMLAB. Also view the m-files specified above for more information.

File: tomlab/quickguide/lpconQG.m

Open the file for viewing, and execute lpconQG in Matlab.

 % lpconQG is a small example problem for defining and solving linear
 % nonlinearly constrained programming problems using the TOMLAB format.
 
 Name = 'Linear constrained problem';
 A = [1  0 -1  0
      0  1  0 -1
      0  0  1 -1];
 b_L = [1 1 0]';
 b_U = [];
 c_L = -1;
 c_U = -1;
 
 x_0 = [1 1 1 1]';      % Starting value (not used)
 
 x_L = [-Inf -Inf -Inf 1]';	% Lower bounds for x
 x_U = 100*ones(4,1);	    % Upper bounds for x
 
 % Objective f = 3*x(1)+2*x(2), assign as linear vector
 
 d = [3 2 0 0]';
 
 Prob = lpconAssign(d, x_L, x_U, Name, x_0, A, b_L, b_U,...
                    'lpconQG_c', 'lpconQG_dc', 'lpconQG_d2c', [], c_L, c_U);
 
 % Run a global solver for 10000 function evaluations.                   
 Result = tomRun('glcFast', Prob, 1);               
 
 % Assign new starting point.
 Prob.x_0 = Result.x_k(:,1);
 
 % Run SNOPT as a local solver.
 
 Result2 = tomRun('snopt', Prob, 1);
 
 % Try KNITRO as a local solver, ALG = 3
 % Prob.KNITRO.options.ALG = 3;
 % Result3 = tomRun('knitro', Prob, 1);