/**********************************************************************/ /* Atkinson, Donev, and Tobias, "Optimum Experimental Designs" */ /* */ /* NAME: Program 12.4 */ /* TITLE: Example 12.2 - Performance of an Internal Combustion */ /* Engine */ /* KEYS: */ /* DATA: */ /* */ /* Author: Randy Tobias */ /* History: */ /* Created...............................................27Jun2007 */ /**********************************************************************/ title1 "Example 12.2 - Performance of an Internal Combustion Engine"; /* / Create first-stage candidates: 5x5 grid over [-1,1]^2, restricted / to the pentagonal design region. /---------------------------------------------------------------------*/ data Can1; do x1 = -1 to 1 by 0.5; do x2 = -1 to 1 by 0.5; output; end; end; data Can1; set Can1; if (-2 <= 2*x1 + x2 <= 1); run; /* / Choose optimal 20-run design from first-stage candidates. /---------------------------------------------------------------------*/ proc optex data=Can1; model x1 x2 x1*x2 x1*x1 x2*x2; generate n=20 method=m_fedorov niter=1000 keep=10; output out=Design1; run; /* / Summarize design by frequencies. /---------------------------------------------------------------------*/ proc freq data=Design1 noprint; table x1*x2 / out=fDesign1(drop=PERCENT rename=(Count=Freq)); proc sort data=fDesign1; by descending Freq x1 x2; run; /* / Add second stage candidates and regenerate the optimal design. /---------------------------------------------------------------------*/ data Can2; input x1 x2; cards; -0.75 -0.5 0.75 -0.5 0.25 0.5 ; data Can12; set Can1 Can2; proc optex data=Can12; model x1 x2 x1*x2 x1*x1 x2*x2; generate n=20 method=m_fedorov niter=1000 keep=10; output out=Design12; proc freq data=Design12 noprint; table x1*x2 / out=fDesign12(drop=PERCENT rename=(Count=Freq)); proc sort data=fDesign12; by descending Freq x1 x2; run; /* / Print the (identical) designs. /---------------------------------------------------------------------*/ title2 "Optimal design based on first-stage candidates"; proc print data=fDesign1 noobs; run; title2 "Optimal design based on first- and second-stage candidates: no change"; proc print data=fDesign12 noobs; run; title2; title1;