A Nonlinear Optimization Problem (clp4)
/***************************************************************/
/* */
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: clp4 */
/* TITLE: A Nonlinear Optimization Problem (clp4) */
/* PRODUCT: OR */
/* SYSTEM: ALL */
/* KEYS: OR */
/* PROCS: CLP */
/* DATA: */
/* */
/* SUPPORT: UPDATE: */
/* REF: */
/* MISC: Example 4 from the CLP Procedure chapter of the */
/* Constraint Programming book. */
/* */
/***************************************************************/
data objdata;
input y1 x2 y2 _TYPE_ $ _RHS_;
/* Objective function: x1^3 + 5 * x2 - 2^x3 */
datalines;
1 5 -1 MAX .
;
proc clp condata=objdata out=clpout;
var x1=[-5, 5] x2=[-5, 9] x3=[1, 10] (y1-y4) (z1-z2);
/* Use element constraint to represent non-contiguous domains */
/* and nonlinear functions. */
element
/* Domain of x1 is [-5,5] */
(z1, ( -5 to 5), x1)
/* Functional Dependencies on x1 */
/* y1 = x1^3 */
(z1, (-125, -64, -27, -8, -1, 0, 1, 8, 27, 64, 125), y1)
/* y4 = mod(x1, 4) */
(z1, ( -1, 0, -3, -2, -1, 0, 1, 2, 3, 0, 1), y4)
/* Domain of x2 is the set of odd numbers in [-5, 9] */
(z2, (-5 to 9 by 2), x2)
/* Functional Dependencies on x3 */
/* y2 = 2^x3 */
(x3, (2, 4, 8, 16, 32, 64, 128, 256, 512, 1024), y2)
/* y3 = x3^2 */
(x3, (1, 4, 9, 16, 25, 36, 49, 64, 81, 100), y3);
lincon
/* x1 - .5 * x2 + x3^2 <=50 */
x1 - .5 * x2 + y3 <= 50,
/* mod(x1, 4) + .25 * x2 >= 1.5 */
y4 + .25 * x2 >= 1.5;
run;
%put &_ORCLP_;
proc print data=clpout; run;