Getting Started Examples (clpg01)
/***************************************************************/
/* */
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: clpg01 */
/* TITLE: Getting Started Examples (clpg01) */
/* PRODUCT: OR */
/* SYSTEM: ALL */
/* KEYS: OR */
/* PROCS: CLP */
/* DATA: */
/* */
/* SUPPORT: UPDATE: */
/* REF: */
/* MISC: Examples from the Getting Started section of the */
/* CLP Procedure chapter of the Constraint */
/* Programming book. */
/* */
/***************************************************************/
/* Send More Money */
proc clp dom=[0,9] /* Define the default domain */
out=out; /* Name the output data set */
var S E N D M O R E M O N E Y; /* Declare the variables */
lincon /* Linear constraints */
/* SEND + MORE = MONEY */
1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E
=
10000*M + 1000*O + 100*N + 10*E + Y,
S<>0, /* No leading zeros */
M<>0;
alldiff(); /* All variables have pairwise distinct values*/
run;
proc print data=out noobs;
run;
/* Eight Queens */
proc clp out=out
varselect=fifo; /* Variable Selection Strategy */
array A[8] (A1-A8); /* Define the array A */
var (A1-A8)=[1,8]; /* Define each of the variables in the array */
/* Initialize domains */
/* A[i] is the row number of the queen in column i*/
foreach(A, DIFF, 0); /* A[i] 's are pairwise distinct */
foreach(A, DIFF, -1); /* A[i] - i 's are pairwise distinct */
foreach(A, DIFF, 1); /* A[i] + i 's are pairwise distinct */
run;
proc print data=out noobs label;
label A1=a A2=b A3=c A4=d
A5=e A6=f A7=g A8=h;
run;