## Solving Large-Scale NLP Problems (nlpse04)

```/*****************************************************************/
/*                                                               */
/*               S A S   S A M P L E   L I B R A R Y             */
/*                                                               */
/*     NAME: nlpse04                                             */
/*   TITLE: Solving Large-Scale NLP Problems (nlpse04)           */
/* PRODUCT: OR                                                   */
/*  SYSTEM: ALL                                                  */
/*    KEYS: OR                                                   */
/*   PROCS: OPTMODEL                                             */
/*    DATA:                                                      */
/*                                                               */
/* SUPPORT:                             UPDATE:                  */
/*     REF:                                                      */
/*    MISC: Example 4 from the Nonlinear Programming Solver      */
/*          chapter of Mathematical Programming.                 */
/*                                                               */
/*****************************************************************/

proc optmodel;
num nx = 100;
num ny = 100;

var x {1..nx, 0..ny+1} >= 0;
var y {0..nx+1, 1..ny} >= 0;

min f = (
sum {i in 1..nx-1, j in 1..ny-1} (x[i,j] - 1)^2
+ sum {i in 1..nx-1, j in 1..ny-1} (y[i,j] - 1)^2
+ sum {i in 1..nx-1} (x[i,ny] - 1)^2
+ sum {j in 1..ny-1} (y[nx,j] - 1)^2
) / 2;

con con1 {i in 2..nx-1, j in 2..ny-1}:
(x[i,j] - x[i-1,j]) + (y[i,j] - y[i,j-1]) = 1;
con con2 {i in 2..nx-1}:
x[i,0] + (x[i,1] - x[i-1,1]) + y[i,1] = 1;
con con3 {i in 2..nx-1}:
x[i,ny+1] + (x[i,ny] - x[i-1,ny]) - y[i,ny-1] = 1;
con con4 {j in 2..ny-1}:
y[0,j] + (y[1,j] - y[1,j-1]) + x[1,j] = 1;
con con5 {j in 2..ny-1}:
y[nx+1,j] + (y[nx,j] - y[nx,j-1]) - x[nx-1,j] = 1;

for {i in 1..nx-1} x[i,ny].lb = 1;
for {j in 1..ny-1} y[nx,j].lb = 1;

solve with nlp;
quit;

```