Constructing a Nonstandard Design

 /****************************************************************/
 /*          S A S   S A M P L E   L I B R A R Y                 */
 /*                                                              */
 /*    NAME: OPTEXG1                                             */
 /*   TITLE: Constructing a Nonstandard Design                   */
 /* PRODUCT: QC                                                  */
 /*  SYSTEM: ALL                                                 */
 /*    KEYS: Optimal Designs,                                    */
 /*   PROCS: OPTEX  PLAN                                         */
 /*    DATA:                                                     */
 /*                                                              */
 /*     REF: SAS/QC Software:  Usage and Reference, Version 6,   */
 /*          First Edition, Volume 1 and Volume 2                */
 /*    MISC:                                                     */
 /*                                                              */
 /****************************************************************/

 options ps=60;

 /*--------------------------------------------------------------*/
 /*                                                              */
 /*        Create a data set containing the candidate runs       */
 /*                                                              */
 /*--------------------------------------------------------------*/
 proc plan ordered seed=45678;
    factors rtemp=3 press=3 time=3 solv=2 source=5/noprint;
    output out=can
       rtemp  nvals=(150 to 350 by 100)
       press  nvals=( 10 to  30 by  10)
       time   nvals=(  3 to   5       )
       solv   nvals=( 20 to  25 by   5)
       source nvals=(  1 to   5       );

 /*
 /  The three control factors at their lowest and highest levels
 /  in this example are expected to be problematic
 /---------------------------------------------------------------*/
 data can; set can;
    if (^((rtemp = 150) & (press = 10) & (time = 3)));
    if (^((rtemp = 350) & (press = 30) & (time = 5)));
 proc print data=can;
 run;


 /*--------------------------------------------------------------*/
 /*                                                              */
 /*                  Generating the Design                       */
 /*                                                              */
 /*--------------------------------------------------------------*/
 proc optex data=can seed=56789;
    class source;
    model source
          solv|rtemp|press|time@2
          rtemp*rtemp press*press time*time;
    output out=reactor;
 run;
 proc print data=reactor;
 run;


 /*--------------------------------------------------------------*/
 /*                                                              */
 /*              Customizing the Design to 25 Runs               */
 /*                                                              */
 /*--------------------------------------------------------------*/
 proc optex data=can seed=34567;
    class source;
    model source
          solv|rtemp|press|time@2
          rtemp*rtemp press*press time*time;
    generate n=25;
 run;


 /*--------------------------------------------------------------*/
 /*                                                              */
 /*                  Including Specific Runs                     */
 /*                                                              */
 /*--------------------------------------------------------------*/
 data preset;
    input solv rtemp press time source;
    cards;
    20 350 10 5 4
    20 150 10 4 3
    25 150 30 3 3
    25 250 10 5 3
    ;
 proc optex data=can noprint seed=23456;
    class source;
    model source
          solv|rtemp|press|time@2
          rtemp*rtemp press*press time*time;
    generate n=25 augment=preset;
    output out=reactor2;
 run;
 proc print data=reactor2;
 run;


 /*--------------------------------------------------------------*/
 /*                                                              */
 /*            Using an Alternative Search Technique             */
 /*                    (Modified Fedorov)                        */
 /*--------------------------------------------------------------*/
 proc optex data=can seed=12345;
    class source;
    model source
          solv|rtemp|press|time@2
          rtemp*rtemp press*press time*time;
    generate n=25 method=m_federov;
 run;