Solving Large-Scale NLP Problems (nlps4)
/*****************************************************************/
/* */
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: nlps4 */
/* TITLE: Solving Large-Scale NLP Problems (nlps4) */
/* 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;