The Sequential Quadratic Programming Solver |
The SQP solver exploits the sparsity of the Jacobian in NLP problems. This enables the SQP solver to solve reasonably large NLP problems. One such problem is the test example "porous1" from Vanderbei. It has 5184 variables and 4900 constraints. It is a known difficult problem to solve. Allocating a large amount of memory (roughly one gigabyte) might be necessary to achieve convergence; see the section "Memory Limit" for more information.
You can formulate this problem by using PROC OPTMODEL as follows:
proc optmodel; title 'Vanderbei test example - porous1'; /*AMPL Model by Hande Y. Benson Copyright (C) 2001 Princeton *University All Rights Reserved Permission to use, copy, modify, *and distribute this software and its documentation for any *purpose and without fee is hereby granted, provided that the *above copyright notice appear in all copies and that the *copyright notice and this permission notice appear in all *supporting documentation. *Source: example 3.2.4 in S. Eisenstat and H. Walker, *"Choosing the forcing terms in an inexact Newton *method" Report 6 / 94 / 75, Dept of Maths, Utah State University, *1994. SIF input: Ph. Toint, July 1994. classification NOR2 - MN - *V - V */ number P = 72; number D = 50.0; number H = 1 / (P - 1); var u{i in 1..P,j in 1..P} init 1 - (i - 1) * (j - 1) * H^2; minimize f = 0; con cons1{i in 2..P - 1, j in 2..P - 2}: ((u[i + 1,j]^2 + u[i - 1,j]^2 + u[i,j - 1]^2 + u[i,j + 1]^2 - 4 * u[i,j]^2) / H^2 + D * (u[i + 1,j]^3 - u[i - 1,j]^3) / (2 * H)) = 0; con cons2{i in 2..P - 2, j in P - 1..P - 1}: ((u[i + 1,j]^2 + u[i - 1,j]^2 + u[i,j - 1]^2 + u[i,j + 1]^2 - 4 * u[i,j]^2) / H^2 + D * (u[i + 1,j]^3 - u[i - 1,j]^3) / (2 * H)) = 0; con cons3: ((u[P,P - 1]^2 + u[P - 2,P - 1]^2 + u[P - 1,P - 2]^2 + u[P - 1,P]^2 - 4 * u[P - 1,P - 1]^2) / H^2 + D * (u[P,P - 1]^3 - u[P - 2,P - 1]^3) / (2 * H) + 50) = 0; for {j in 1..P} fix u[1,j] = 1.0; for {j in 1..P} fix u[P,j] = 0.0; for {i in 2..P - 1} fix u[i,P] = 1.0; for {i in 2..P - 1} fix u[i,1] = 0.0; solve with sqp / printfreq = 5; quit;
The iteration log in Output 13.6.1 displays the optimization progress and the optimal solution.
Output 13.6.1: Iteration Log
Copyright © 2008 by SAS Institute Inc., Cary, NC, USA. All rights reserved.