CALCULATOR AND COMPUTER PROGRAMS FOR ELEMENTARY MULTIOBJECTIVE DECISION ANALYSIS* by Craig W. Kirkwood an-d Hector Ureta Technical Report #77-11 Department of Industrial and Operations Engineering The University of Michigan Ann Arbor, Michigan 48109 December, 1977 This work was supported in part by the National Science Foundation under Grant No. ENG-74-22564.

ABSTRACT This report describes calculator and computer programs to aid in carrying out multiobjective decision analyses. The programs assume that an additive or multiplicative utility function is valid and that the conditional utility functions over each attribute are constant or constant proportional risk averse. The attributes are assumed to be continuous and, once the alternative is specified, probabilistically independent. The Pearson-Tukey approximation is used to calculate expected utilities. The calculator program is written for a HewlettPackard HP-25 calculator, and the computer program is written in Level F PL/I. ii

TABLE OF CONTENTS Page ABSTRACT ii TABLE OF CONTENTS iii INTRODUCTION 1 1. THEORETICAL BACKGROUND 1 2. PROGRAM USER'S GUIDE 5 2.1 Data Collection 2.2 Expected Utility Calculations 2.3 Sensitivity Analysis 2.4 Data Files 3. CONCLUDING REMARKS 23 REFERENCES 29 Appendices A. CALCULATOR PROGRAM 31 B. DESCRIPTION OF COMPUTER PROGRAM 36 C. COMPUTER PROGRAM LISTING 48 iii

CALCULATOR AND COMPUTER PROGRAMS FOR ELEMENTARY MULTIOBJECTIVE DECISION ANALYSIS The usefulness of multiobjective decision analysis has been established by a number of successful applications. (See, for example, [2, 4,5].) However, applications work would be simplified by easy-to-use computational aids, since the calculations needed in applications are sometimes tedious. The calculator and computer programs discussed in this report aid in a rapid preliminary analysis of a multiobjective decision problem. They assume a multiplicative or additive utility function is valid [6] and that the conditional utility functions over each attribute are either constant or constant proportional risk averse [11]. Also, the attributes are assumed continuous and, once the alternative is specified, probabilistically independent. The Pearson-Tukey approximation [9] is used to carry out the expected utility calculations. Short calculator programs are used to determine basic parameters of the problem. These are then input to an interactive computer program which carries out the expected utility calculations required for a decision analysis. Sensitivity analysis can be done and the data for a particular decision problem can be stored for future use. 1. THEORETICAL BACKGROUND Suppose al,a2....,aM are the available alternatives in a decision problem and X1,X2,...,XN is a set of attributes, or measures of effectiveness, which describe the possible consequences of the alternatives. Then, if the axioms of decision theory [12] are to be obeyed 1

the alternative a should be selected which maximizes the expected m utility E[ula] ( X 2x... fm(x2,XlXx2 M...XxN)dxldx2..,dxN (1) *mXx1 xN, x1 where f is the probability density function over {X1,X2..XN} given that a is selected, and u is the von Neumann-Morgenstern utility function. Utility function structure. The programs described in this report assume that for any alternative the attributes are mutually probabilistically independent [1] so that N fm(XlX2...,XN) = fM(xn) (2) n=l where fxn ) is the marginal probability density function over X given that a is selected. Also, the attributes are assumed mutually utility m independent [7, Theorem 6.1] so that either N u(xlx2,..'.,xN) = knUn(xn) (3a) n=l or N ku(x1,x2,...,xN) + 1 = [kknn(xn)+ll] (3b) n=l 2

where u (x ) is a conditional utility function over Xn, and the kn's are nI n'n scaling constants. The scaling constant -l<k # 0 is the solution to N k + 1 = [(kkn+l). (4) n=l If (2) and (3) hold then (1) can be rewritten as either N E[ulam] = k [u (x) a] (5a) n=l or N kE[ulam]+l = {kknE [un(xn) lam] + (5b) n=l where E[u (xn) la] u ( )fn( )dx (5c) n Expected utility calculations. The single attribute expected utilities defined by (5c) are evaluated using the Pearson-Tukey approximation [9] E[u(Xn)a50 95 05. E[Un(x)a] 0.630u (x' ) + 0.185[u (x' ) + u n(x )] (6) n n m n nm n nm n nm 3

where x 05 = 0.05-fractile of fnx ) n mm n X'50 = 0.50-fractile of f (x ), and nm m n x 95 = 0.95-fractile of fn (x ). nm m n Empirical work [3,10] indicates (6) is an accurate approximation for a wide variety of probability distributions. Single attribute utility functions. Three different types of utility functions can be used for each attribute: i) Constant risk averse [7,11] with increasing preferences: -C X -c x -e c >0 n Un(xn X x c =0 (7a) -c x n n e c <0 n ii) Constant risk averse [7,11] with decreasing preferences: c x n n -e c >0 n u (xn) -x c =0 (7b) n n n n c x n n e c <0 n 4

iii) Constant proportional risk averse [7,11] with increasing preferences (for this case xn must be positive): -(Cn-1) -x c >1 n un(xn) ' log n cnl1 (7c) 1-c x n c <1 n (In these expressions ' means "is strategically equivalent to," and c is an unspecified constant.) Examination of (5), (6) and (7) shows that the expected utilities of the available alternatives will be completely determined if kn Cn,.05O.50.95 n=l, 2,...,N, andx nm x nm, x nm; n=1,2,...,N; m=1,2,...,M, are specified where N is the number of attributes and M is the number of alternatives. 2. PROGRAM USER'S GUIDE The programs described here include a calculator program and a computer program. The calculator program assists in determining the c's and k 's. These, along with the fractiles for the probability n n distributions are input to the computer program. This calculates the expected utilities for the various alternatives. In addition, it allows the input data to be changed easily so that sensitivity analyses can be carried out. 5

The use of the programs will be explained with an example. A Decision Maker (DM) was considering a change in the process that his company used to manufacture widgets. His options were to select either of two new processes or to continue using the current process. A Decision Analyst (DA) was called in to aid in analyzing the problem. 2.1 Data Collection DM and DA decided there were two attributes of interest, X= number of defects per batch of widgets and X2 = cost, in dollars, to manufacture a batch of widgets. The ranges of interest for these were 0 < x < 20 and $5000 < x2 < $10,000. For a preliminary analysis DA assumed X1 and X2 were mutually utility independent and that preferences were constantly risk averse and decreasing. in each attribute. DM decided on the following certainty equivalents: (x = 20,x2) (x1 = 14,x2) (X1 = 0,x2) and Jxlx 2 = 10,000) (x1lx2 = 8,000) X< (xlX2 = 5,000). 6

DA then used a calculator program to determine the risk aversion coefficients c1 and c2 for u1(x1) and u2(x2). This program is discussed in detail in Appendix A. It calculates the certainty equivalent for a two fork lottery for a utility function with a specified risk type (either constant or constant proportional risk averse) and risk aversion coefficient. The program can be used to calculate the risk aversion coefficient by trial and error if the certainty equivalent is known. For c1 DA assumed constant risk aversion and tried 0.1, 0.05, 0.08 and finally 0.09, and for c2 he also assumed constant risk aversion and tried -44 - 4 — 44 4 1 X 10, 1.5 X 10, 2 X 10, 1.8 X 10, 1.6 X 10, 1.7 X 104 and -4 finally 1.65 X 10. Then, following the procedure discussed in Appendix A, he used the calculator to plot ul(x1) and u2(x2). These are shown in Figure la. The scaling constants kl and k2 were then assessed using Keeney and Raiffa's procedure [7]. In particular, DM decided (20,6000) ^ (0,10,000) and (0,5000).7 (20,5000) <.3 (20,10,000). Thus,1 k = ku2(6000) and k2 = 0.7. From Figure la, u2(6000) =.7 and thus k 0.49. 1. 7

U (x1) U2(X2) 1.0 C =0.09 1.0 0.5 0 0 Xt x2 (x13) a) CONDITIONAL UTILITY FUNCTIONS F(x1) 1.0 0.5 0 F(x2) a1 1.0 0.5 0 I I I I I I I I I I 10 20 10 Xt b) MARGINAL PROBABILITY DISTRIBUTIONS Figure 1. DECISION PROBLEM DATA x2(x103) 8

The marginal cumulative probability distributions were assessed for each alternative using standard techniques [14]. The resulting distributions are shown in Figure lb. (Note that al is the current manufacturing process and there is no uncertainty about its attribute values. Loosely speaking, a2 is a high quality, high cost option while a3 is a lower quality, lower cost alternative.) From Figure lb the fractiles required for the Pearson-Tukey approximation were determined. 2.2 Expected Utility Calculations After determining the utility and probability data DA left DM and went to a computer terminal to input the data to the computer program described in Appendix B. The data input session is recorded in Exhibit I. Note that the program requests data from the user in an interactive fashion. In general Exhibit I is self-explanatory. The program requests that files be attached to devices INP and STORE. INP is the file that will be used if the user tells the program to read the decision problem data from a file. (The use of this feature will be described later.) STORE is the file where the data for the current problem will be stored at the end of the computer session. After specifying these two files the user must type "space RETURN" to start execution of the program. Numerical data entry is free-format, i.e., decimal points can be entered or not as desired. However, each number, including the last one on a line must be followed by a blank. (If you forget the last blank before RETURNing enter it on the next 9

***..::e -^-r.^ ^^^^:- GO~...~ *"- O.... ~\ - -,%-i.,,-^ ~~4 r._..... o.-./^n 2: ~;^...... if':-i ---^r",;-^ " '" S j"~-....- ~. o~ - i Ci ~~-i - -: ^- 9 " — *: ' **z ~o c-.'en H -i -. ' -— "i I> i> 02 z:. r — i nir~;~n~nhiJ..;.~..-;... ~-i-.. -.,..:-r —^.0 S — '-" Z B..... " ~f ^~;;;:^:^> — ' -:.':. -:_.::: 0 "^-^-::-"v crc:;:.. -I~ ~ ~ ~~~~~~~~~~~.':;. " r>-'/ ";'"51 -~'... I —4 ~~%,.........T.. -. o~ ~~~~~~~~ '.. ~ >? i-' 0'.~. % - i"':".~.:'-"i ~::: - - 'i "qH ~~~~~.... 4.__ ~: — 7.::'...-i '-':i i~~~~~~~~~~~~~~~~~~~~~~~~~~~~Y i.... -"i -.:i::.:;....:....? ~~~~~~~~~~~~~~~-.... -,j::':. F:' — —:.:..;..;.;.: '.-...:..

EXHIBIT I (concluded).: 1.:^ "'.. I, A L.:...:. i I, -: I. wi...'f"X... I 'i' 9 I ':..... I.'. 1..:1.:,. 1 0I i': N ' E: F:' PR C 't':: t i'. "I' L' F ':t I... 'i" IE I:;s N ' A -:I: V F:, 7500 7500 7 50 '::,.. i -. iA'- ' E I F;. 4; 1 4.4 J. AND,t'i ' TT i *: 2.: i :.o....::...:l." I...... I'",. )::' I' ' - 1 ':'..1,1 E:..j....- k, F.E..E i. i....... i..::' " F.: ~.:':.. ';:': C..':.,.% A: '! ] ' I::', i. '..... l.k.!. 4.I.:. 3.': A F t. F,::..UT 1.,....;:,::..,:le:... ' 1.,:: '(, A.;, *; L E< C.;? 5500 6000 7000 7:tC 11

line and RETURN.) The program does a limited amount of error checking on input data, however, a serious error will terminate execution. Since DA is entering a new problem he tells the program he does not want to read the data from a file. It then prompts him to enter the required data. RISK TYPE can be any of the three shown in Figure 2. CONSTANT is the value of the risk aversion coefficient cn, and RANGES are the lower and upper limits of the range over which u (xn) will be assessed. SCALING CONSTANT is the value of k for the specified attribute. The required FRACTILES are the 0.05, 0.50 and 0.95. After the data is collected the program summarizes it in tabular form and calculates expected utilities for each alternative. This output is shown in Exhibit II. INDIVIDUAL ATTRIBUTE EXPECTED UTILITY VALUES refers to E[un(x) )am] as defined in (5a) and (5b). After seeing this output DA signed off the computer. When the program terminated execution it stored the data for the decision problem in file WIDGET which DA had earlier specified as his STORE file. 2.3 Sensitivity Analysis The computer program allows changes to be made in the data for a decision problem without re-entering the entire problem. Three types of changes can be made: i) Additional alternatives can be added, 12

Risk Type Explanation Equation -C X 1 Constant risk aversion -e c >0 with increasing preferences u (Xn)~ x c =0 n n n -C X n n e c <0 n c x n n 2 Constant risk aversion -e c >0 with decreasing preference u (Xn)'V -x c =0 n n n n C X n n e c <0 n -(C n-1) 3 Constant proportional risk -x c >1 aversion with increasing preferences (Xn>0) Un (Xn) logxn cn-l1 1-c, x c <1 n Figure 2. ALLOWABLE RISK TYPES 13

EXHIBIT II DECISION PROBLEM COMPUTER OUTPUT w*** MUL T 1< IU I S E ISON IA ILY. S;: (" I w-.,,I ATTRI" 1 B U T E: 2 ALTENATIVES: 3 -0 o- - - - ----- INFOORMA:TIO:N AIBOUT UTILITY FUNCTION ATTRIBUTE R: E: RISI1 TYPIE CONSTANT\ 1 2 9,000E-02 ~2 ~ 2 1. 6500.' -04 RA NGES LOWEST I.i G I.I E S 'i 0. 00 20. 00 5000.00 10000. 00. --- SCALING CONSTANTS 1,4900 2.7000 **';, K = -055.40 --— I NFOIIMA TI ON ALTERNA'TIVE 1 ATTR IB UT E 1 2 ALTERNATIVE '2 ATTR I.B UTE 1 ALTERNATIV.- 3 A TTR:I BU TI1 -1 2 AB0OUT FP'MROBA T ]:I.. T]:ES. 05 I -I'ACT 10.00 7500. 00.05 FRACT 1.00 7500.00.05 FRACT 8.00 5500. 00.0 FRACT 4rO F I A; 10.00 7500.00.50 FRACT 4.00 S500.00 14.00 6000.00 95 FRACT 1 0 0 ( 7='.5 b, () 0 Q;5 F: I:, A i: " 5 I. Ck f,) 14 o00 9500. 00 95 FIRACT 17.00() 7000. 00 14

EXHIBIT II (concluded) -— A. 1 E: X: E TE - U: 'T II..:: T Y LVA 1. l.U A I_ T' ER 1N A T I3: V 1: 1:. A TTR I BU TEI 1 EXPCFE:'EC1 '1.:.I E IJT I LI. TY.7109 o601.7 A L.TER INA- T ]E: VI 2 A T T 1I.1: UIJTE 1,:. E X:E C T E UTL:I. Y * 83 i fi )'(.85 33.3, 33"', A TI. ER.iN A T ]: V I.";.3 A T TI: BUT1 -1 P) EX:' ICTED UT ]:.. I T Y.4'978. F4-30 EX 'E C T E D UT:1: I:1: T Y 1 R E A C HA 1: I ALT ' E:, ATI A!L... TE1: FNA A T I:: 1 A.. 3.- XF' *E C:T D.l: T I TY. 8I.. 754:~ ENTER I IF YOUC W AN' SENS:I IVITY ANALYS:S. ZERO:I:F NOT1 0 tEXECUTION TERMINATED 15

ii) Additional attributes can be added, or iii) Any of the data for the current alternatives and attributes can be changed. Only one of these three types of changes can be made at a time. Following the changes, the new data and expected utilities are printed out, and further changes can then be made if desired. DA returned to DM with the computer analysis results. After studying them DM said, "So a3 has the highest utility. That's interesting, but I've been thinking, and I believe we need another attribute- something to do with worker complaints. I think there will be different numbers of complaints for the three processes." After discussion DM and DA decided to use the attribute X = number of worker complaints per batch of widgets. The range of this was -5 (i.e., five compliments) to 15. Using the same procedure as for X1 and X2 the conditional utility function and marginal probability distributions were assessed for X3. These are shown in Figure 3. Also, the addition of the new attribute required that the scaling constants be reassessed. This was done and they were found to be k = 0.6, k = 0.42 and k = 0.39. 1 06 02 3 DA entered the changes during the computer session shown in Exhibit III. The resulting output is shown in Exhibit IV. After looking this over DM remarked that he may have been overly optimistic about the number of complaints that would result from a3. He decided that the 16

u3(x3) c3=.122 0.5 - -5 0 5 10 15 x3 F(x3) 1.0 0.5 a1 -5 0 5 10 15 x3 Figure 3. ADDITIONAL ATTRIBUTE X3 17

EXHIBIT III NEW ATTRIBUTE INPUT.I- - EECUTISON o I.N $ " I" Z E C U T' I"! 0N 3GI' I N\4 F'' ~' S F::' li: C IF Y '?W I D -i Es T S T () FE - S PE C I F Y F'DN i E i ): SEND t i:ND-C-:) F F I::L. E I:fi':iDNA E O1 I SEND E1 ND.-OF-.F. I-L E E N T E R 1 IF I:r YOJU w, Nr r IRJE - D F. I'' E Z, F I l Y 1:: NI i OT 1 ~,.,,,,, 1t.JLT: TTR I B UT' E DEC IS IN N-t 1... I S I S:''.. A T' TR I U 'J' i S " AtLi.TE:l NA1 T.1 IE.S: 3 -- -- 0 - 0 - O 0 - NI FORM' I 1 OT A T UT:: u iIY. i. r - FUNT 1: 3 IN A TT'R I: B..U T I-. '2 R I SK TYPi...': 2 2 CO NST' " NT 9.*0000IE-02 9. O600(E -.. 0 1.. c,) 50 E I...:..04 R: 1 N N l 1.: C'N. L 0 W Ft 1' iSit i f I...E r (. o ]) CJi. ( (" I ). ] t, ' 0 c,. C 1.) 0.00 20.0(0 5000 O(0 10000. 00 - SCALING CONSTANTS 1.4900 2.7000: "** K = -0.5540 18

EXHIBIT III (continued) -- — ~:1: N - F:' (:) 1 A T: Ii:) N U:' T R 0 D A 1: L.. I T 'I S A LT.'1 E F,:1:' I V I.: E. ATT"T' R I B. U TE 1 2 ALTE:'ERNATIVE 2 A I.T ENAr f I: 3 AT T R IJ UT E 1 2.0'.i5 F;: A C T 10.00 7500. 00.05 FRACT 1.00 7500.00.05 1,FRIACT 8.00 5500.00. ( 0 F RA(.C lT 7500.00.50 FRACT 4.00 8500. 00.50 F A C T 14 00 6000. 00.9 FR F CT 10. 00 7500. 00. 95 FRACT 14,00 9500.00 18. 00 7000.00 - IN- DIVIDUAL ATTiIL -.UTE IEXFPECTI-EDZ Ur I.L ITY VAUE:S ALTERNAT 1:E VIE- 1I A TTR IJ: UTIE 1 I EXPEC TED UTILITY.7109.6017 ALTER 1NATI I: 2 + A TTRl I: B.U T E 1 EXEC::'TED U E ILITY.8500.3833 AL_'I rF NA TI V E t 3 ATT'I ]:U'TE - 1 EXPECTE D UTI L ITY. 4973.8430 - -- EXPECTE-D UTIJ.ITY FOR EACH( AL.TERNATIVE ALT IERNA TI V E 1 2 3 E:XF:'EC TED U'TIL:T Y * 6883.6229. 7543 19

EXHIBIT III (concluded) EN'T'ER 1 I IF Yo U T T' i, T SE NS TII T N'Y AN:. ZE I F N T 1 ENTER 1 IF YOU WANT TO ADID MORE ATTRIBU'TS 2.ERO IF:' NOT 1 iHOW MMANY MORE ATTR I:BUT.ES 1 ENTER R1; ISK TY IPE C ONSTANT A NI R ANGES Ff R FNE ATTRIB E 3 2. 122 "5 15 NOW, PLEASE ENTIR A.LL TH-.:E 'SCALING:!I_ CONST,',ANTS ENTER S;CA I,:I:NG CONSTANT NUMBER I':1..42 ENTER S CAL I N C i '' 'fT NU fE I;:: 2.6 E-NT I:-R SC A L I. N G C ONSTANT N UMBER:..39 ENTI:R- F A-I:;,CTI:iLE, F. R Al. 'TE liNA:: TI 1 AN:.D, EJ '' T:: l.!;3 888 E N TR FRA C T I I__!E S FOR AL IERIA.. 1 2 AND: ' T: 3 -1 3 8 ENTER' FRACTILES FOR Al.TERNATI-VE: 3 AND NEW ATTR1 IBUE 3 6:1.0 12^ 20

0069 * - _ O ()6 ' ~ C)C)nO? ~ IL 0) - t0 A t 'J.1". NVYt.I.Sit'!03 ' -:cl i:']sJS..') 0 t-:; 1:00 (. (" '000 ' t 3j: (00 * 00 0',..) "; ' 0C (.t.s 'J,'; ii!!..1 91 H.L S:i3t f"" 0 'I ~~~~5 ~~~~~~~~f i~~~~~~~~~. t."*C:')1: 3 0- 2: 0. 9' ~ '.. 0 - - 0..::i (.? 0( 0 6 ':.NCt:).sN: i.:I:,. s..l:1:..:i ai:::l. i tJ - - 0- O- - 0 -~ I. S:N C::S.. IN I:ii. n i.:1 - w A..:E, -1 '! i.! f!:1: _ s:: 3. I.1. f;. 1.;:.1. f-I,,,;, '.,. * * '.<?: \.; * * ^. *::'; 5" 't. * '^,.Y. *,,, }:, ':; *l;i\ *<.t'< *: 4. ', },., '. (.. f;t,, i... er qx iA * L;~' '!, *',' '. ':r * ~.k *t:'*]::]C s,,* *t 1 *, *.*. *:.' *, inaino ainsi L:Eaiv M AlI rIHxa

EXHIBIT IV (concluded) -.. - I N 1: 0R:^M AT: ) O N ALTERNATIVE 1 A T T Ibl%-: 1' T E ATT RIB LUTE 1 2 ALTERNATIVE 2 ATTRIB UTE 1 2 ALTERNATIVE 3 ATTRIBUJTE 1 2 ABIOUT P'RO1B'). 1L IT I ES.05 FRACT 10.00 7500.00.05 FRACT 1,00 7500o00.05 FRACT 8.00 5500.00.50 FRACT 10.00 7500.00.50 FRACT 4o00 8500.00,50 FRACT 14.00 6000.00.95 F RACT 10.00 7500.00.95 FRACT 14.00 9500(00.95 F1ACT 18.00 7000.00 - INDIVIDUAL ATTRI.BUTE EXI'ECTED UTILITY VALUES ALTERNATIVE: 1 ATTRIBUTE EXPECTED UTILITY 1.7109 2.6017 ALTER':NATI VE: 2 ATTRIIBTEi EXPECTED UTILITY 1.8500 2 -{.3833 ALTERNATIVE: 3 ATTR I.BUTE EXPECTED UTILI TY 1.4978 2.8430 - EXPECTED UTILITY FOR EACH ALTERNATIVE ALTERNATIVE EXPECTED UTILITY 1.6883 2 ~. 6229 3.7543 22

whole distribution for X3 given a3 should be moved up by one. This was 3 done, and Exhibits V and VI show the computer input and output for this case. After seeing the results and noting that a3 was still the preferred alternative with all of the changes, DM concluded that he should select that alternative. DA commented that they might do a more detailed analysis with a more completely assessed utility function, however, DM felt the analysis just completed was sufficient. 2.4 Data Files Some analysts may wish to set up or modify data files for the computer program directly rather than using the interactive assessment procedure discussed above. Copies of the data files that resulted from each of DA's two sessions on the computer are shown in Exhibit VII. Comparing this with Exhibits II and VI will show how the data is stored in the file. 3. CONCLUDING REMARKS The programs described in this report are an intermediate option between doing hand calculations or using a more sophisticated computer program such as MUFCAP [8,13]. They do not provide some of the advanced capabilities of MUFCAP, such as hierarchical structuring of utility functions. However, the capabilities provided should be sufficient for many analyses. 23

EXHIBIT V ADDITIONAL COMPLAINTS INPUT EN T E.:R 1. IF: YOU WA. T S Si.,Y i. S yZE R I N OT:I. EN ER 1 R'.: YO U W, N T T A:ERA1 XE.O M 3:... ', E" Ir i E S I F N Of) 7T 0 FN Yt R l' ''Y,:' E:'-:.: 1O A: N B.':'.. i. NOT 0 IC) U1. NY C:1. EC I'f A N Gl:!::. F. E A -, S I' Z NLi I E. 1".: R. A — L.'.' \e ", i' R N A T:1 t.: IN:l:. I.! T" ~:;:;.BUT t' t N 1 C 'f:t ' I.1. E' ' 3 3' 7 1..3 F:1F Y). UANT TO 1 I (AN:: ' Gi A...:!: (:,N T E, SCALs C'AN 'S 1:,: N'' l. 1:: 1. Y 1..:R:I: F:' NO t ' 0 24

EXHIBIT VI ADDITIONAL COMPLAINTS OUTPUT S 1: N S) I Ti:V: '' T Y A NA I.... Y c 1 S $: "*1' " '......,'' "" * '- ','; *l '.'. t',;, ALT E:RNAT. i. S.'::r 0. 0 0 0 B 0 T EZ S..... (> " 0.. 0 ).... 0 - 0 "' -. ~-*:~~ Nrm-i ) C)U iV::L::T U:TIC (A, T T::: 1::: I i' Y ' 1 32 C' ) IN S ' T N NT 9. 00(0 i.OI. -02 I.:+ ei i 0 (0 4'... -.1. I. ' 0 1..: (;1. 1.600E..0 RA I N E S. 1... C ' i:.:. -I l-i: ii; 'T' 0). 00 20. 00,.., 0 000.00 10000).0 -. 5 00 15O.. 00 -- A" - C. AL. I N G C' )N T iAN'T' 1.,4200 2.6000 3 ~.3900 **1 K: -"0.7064 25

EXHIBIT VI (continued) -..............: )^ i i"' (' I Q N A^:1:' T j ' A B I I.:O i '1:1:I: I' A. T 1: i".- J. Er N:A TI YE 1. 1 2 3 -. A l...'T' E R N A 'T':1' V E 3 A T 'R i 1'' E - 1. 2 3 1 3.05 F"R A C T' 1.0. 00 7500. 00.5. RACT 7. 00*0 --:1. ()00 7 + OO.05 F: R A C'T' 8.00 7.00 7*00QC.5 0 F' A C:1. 0( 7500*.- O 8 00 t5.0 FR: A C'l 4. 00,. 1 00. 3(.00.50 F C:' ' T' 14 * 00 6000)00() 11. 00 1. (* 00 1. ": 0 (0 (,95 r: - r:1.4 O 0() 87 00 700,00 173.00 ~.........:V:i:.. L.. ' ' ' 1 R:!: B....:!':: X F:' ': C -f E: lT:: L...:i:. 'f Y A I.. l!E 1 *"***TTR"- IND UALA I._'!:UTE:: EX'! E ED":l:Y VA!:::1 A ' ' I:t T: X: I J'" ' E.: 1 3 E: XF. ' I,::C'.'TD:: 1C U '':t.:....]: "'Y.71 (' 9.6017.-. 62 91. A L.T ' E.Rl N A- T' I V E, 2, A T TRI:1:B U "T i:E: 1. 2 3 E..: X F:' 'T 1: UT: i...:1: T'Yr.K...:... I L.. * 8500 o 8:; 3 * 8208:' ~.:.., ks.1 A L T,.'E RNA'I': V Ei:! 3 A'TTl' R:1 1 I. J. 2 3 E. X::'1 (:' C'' 1..,1 l.I:1: i...:1 T1 Y.4 978 8430 4367 26

EXHIBIT VI (concluded) -. 'E: X P E CT ": I E T C I... A. A TI Vi A1 I... 1T E. R N A ) V1:: I E1:X T: EI U1 T "..L. J: T Y + 7277. 729 15 O.73 '31 ENTER: y(. 1 ti ' i::::1: I... Y 1Y S EI R F' N 't 0 27

EXHIBIT VII DATA FILES i) For output in Exhibit II L. S ' W l:.3 I.:.: T:::.:1.:: 4:....4::- 1:. 0:ti: tSi: N:I T:) F:'' t 1.. t:11: $1' N F F L.:.: S.. *; 2t St r1., ) / ~..i. ~- w,.:1. 0 0 7.,.., (.'., 55 o C.C..4s900F iu U700.2 0..0 20 C,0:"0 )4 0., 0 '. 10..0 (0:.0) O 0.' s:,,, Tr t,.).rI. - 4.00:.4.00:' 0(0. 00 '?':: 0 - 5 (90.0 1 14.0 1.0 6 0 0. 00, 7 0 0. 00: ~i~ ii) For output in Exhibit VI ~...:I: S ' ~' i,l:: i:t f3:: ji::::1.:::': 5::: 8::~:'.::. '..:1.. -:1. I:::.;. 4 *ii 2 9.0000E5 i *1 \i } ) X S t1'- 02 — s S -l ".i". 6001 E. ': s0..'.-.... 00.. i 2...0. 4:...Uk., ).., (.., (>. C, " 0) 0.:...,. s.. t:' ' "'I 1.'........:.. ' ' I.t -' 1. '. 0 0:, I, t,,5. - 0.5 <' ',3. k -.', 4.00.s (..,:1. 4.S <... (>:t.:., 0i 0 "'*' ''I'~~: 28

REFERENCES 1. Drake, A.W., Fundamentals of Applied Probability Theory, McGrawHill, New York, 1967. 2. Hax, A.C., and K.M. Wiig, "The Use of Decision Analysis on Capital Investment Problems, "Sloan Management Review, pp. 19-49 (Winter, 1976). 3. Keefer, D.L., "A Decision Analysis Approach to Resource Allocation Planning Problems with Multiple Objectives," PhD dissertation, Department of Industrial and Operations Engineering, The University of Michigan, 1976. Available from University Microfilms, Ann Arbor, Michigan. 4. Keefer, D.L., and C.W. Kirkwood, "A Multiobjective Decision Analysis: Budget Planning for Product Engineering," Technical Report No. 76-5, Department of Industrial and Operations Engineering, The University of Michigan, September 1976. To appear in Operational Research Quarterly. 5. Keeney, R.L., "A Decision Analysis with Multiple Objectives: the Mexico City Airport," Bell Journal of Economics and Management Science, Vol. 4, pp. 101-117 (1973). 6. Keeney, R.L., "Multiplicative Utility Functions," Operations Research, Vol. 22, pp. 24-34 (1974). 7. Keeney, R.L., and H. Raiffa, Decisions With Multiple Objectives, Wiley, New York, 1976. 29

8. Keeney, R.L., and A. Sicherman, "Assessing and Analyzing Preferences Concerning Multiple Objectives: An Interactive Computer Program," Behavioral Science, Vol. 21, pp. 173-182 (1976). 9. Pearson, E.S., and J.W. Tukey, "Approximate Means and Standard Deviations Based on Distances Between Percentage Points of Frequency Curves," Biometrika, Vol. 52, pp. 533-546 (1965). 10. Perry, C., and I.D. Greig, "Estimating the Mean and Variance of Subjective Distributions in PERT and Decision Analysis," Management Science, Vol. 21, pp. 1477-1480 (1975). 11. Pratt, J.W., "Risk Aversion in the Small and in the Large," Econometrica, Vol. 32, pp. 122-136 (1964). 12. Pratt, J.W., H. Raiffa, and R. Schlaifer, "The Foundations of Decision Under Uncertainty: An Elementary Exposition," Journal of the American Statistical Association, Vol. 59, pp. 353-375 (1964). 13. Sicherman, A., "An Interactive Computer Program for Assessing and Using Multiattribute Utility Functions," Technical Report No. 111, Operations Research Center, Massachusetts Institute of Technology, June 1975. 14. Spetzler, C.S., and C.-A.S. Stael von Holstein, "Probability Encoding in Decision Analysis," Management Science, Vol. 22, pp. 340-358 (1975). 30

APPENDIX A CALCULATOR PROGRAM The calculator program described in this appendix was written for the Hewlett-Packard HP-25 calculator. A virtually identical program should run on any calculator with an automatic stack. Constant risk aversion. The first segment of the calculator program, stored in program steps 1 to 23, calculates the certainty equivalent for any two-fork single attribute lottery if preferences are constantly risk averse and increasing in the attribute and if the risk aversion coefficient is specified. This program can also be used to find the certainty equivalent for a two-fork lottery assuming constant risk aversion and decreasing preferences. To do this reverse the signs on the attribute values for the two forks before entering them and also reverse the sign on the certainty equivalent calculated by the program. Constant proportional risk aversion. The second segment of the program, stored in program steps 25 to 48, calculates the certainty equivalent for any two-fork single attribute lottery if preferences are constant proportionally risk averse and increasing in the attribute and if the risk aversion coefficient is specified. (For this case all attribute values must be positive.) The equations for all three cases handled by the program are given in (7). Program uses. The program can be used for two different tasks. First, a utility function can be found that fits an assessed certainty 31

equivalent for a specified lottery. This is done by trial-and-error as discussed in Section 2.1. To do this the lottery is input, the type of utility function to be fit is selected and different values of the risk aversion coefficient are tried until the calculated certainty equivalent for the lottery equals the assessed one. The second use of the program is to plot a specified utility function. To do this enter as the attribute values on the two forks of the lottery the extremes of the range over which the utility function is to be determined. Then use the calculator program to find the certainty equivalent of the lottery for different probabilities of obtaining the more desirable fork. Then, of course, u(certainty equivalent) = pu (most desirable fork) + (l-p)u (least desirable fork). If the utility function is scaled so that u (most desirable fork) = 1 and u (least desirable fork) = 0, then u (certainty equivalent) = p. By varying p the utilities of as many points as desired can be found. Example problems. Instructions for using the calculator program and a listing are given at the end of this appendix. To check that the program has been properly entered the following three examples may be used: i) Constant risk aversion with increasing preferences 32

p' = 0.5 x' = 18 x" = 16 c = 0.1 certainty equivalent = 16.95 ii) Constant risk aversion with decreasing preferences. p' =0.5 x' = 16 certainty equivalent x" 18 = 17.05 c = 0.1 iii) Constant proportional risk aversion p' =0.5 x' = 18 certainty equivalent x" 16 = 16.95 c = 1.70 33

Ti t t__ _ i kLI p (-L\; ' P F L n a Li ~~c;~ ~g~2 Title Vr nr n -% _ n -Pag 1 of I._ -A_ / r Liyi ill IIDATA/UNFS DATA/UN ITIS STEP INSTRUCTIONS DATA/Ur 'TS KEYS DA~T tTS r0a~ I' L y-o 4,,i L~LIEI _~ S0o~ p~o<rx: 1_ I [, i i__-_ 3- Store w:o'a__ _L _ [L_ I____ r JI __ __ U Sore" sreo- s I LII LIIIII 11 _____ esc/ov_.p~cq& c~. [R... -LI 1 1 ar~eet oLtcoe_. L S I___: 7 Sele.ctyp. of-, I 1 1 11,.,,\-, $ c,\Q\f1 __,1...... 1 _ (a-),1 C Irill O;11 0 11 I b) to sote.ct -~_C IGrol1 l 0 I 5_ - 1 8'^}o &d —ece X'-'___ lGTo f ~i" II 5. '', -- --- -,, --- (!t r\pi~ r&sk I 11_ I" JI I __ __I L o.V r c^Se; )~.;lilci W CE I/S II 0 I _-_ 7D;ipl.t ceLrto;.cXlY _ L I II II - LI] _L;IItI II WL IEIII ~'&i PlC Cr I. -- -LIIL II- IILiI- I. lL I ''i11 W II ' J_[Z LII II... =.. - __III II III II i _ _. I. 'LIIII ' 'L_ III II ____III 1L --- 11 IZ '___' "EI III III' ]I.__..,..,....,L_ ---- i - 1 11 11!I IIF I IL__ II "" 1:......L___]i'i[ i -.... 34

F&t p F-'. r-!s r -. F r.t L'LL~'~- -s'~V'J Title (L —; I (F' LSrA Q',A'~ ' Page _.- of —.L I Switch to PRGM mode, pressT] m r,, then key in the program. DISPLAY K LINE CODE KENTRY LIN'E CODE ENTRY x I Y Z T COMTMEtn'S::GISTERS Go C_! _'__O_ C.R. 01 t C C___ 02 3. CHS.-C C _____ 03 )ts7 C ___ __________ 04 07 A t -___ R3 _o 05 C- l R.CL. y. - - 1_ C._ L ___ e 07 01- _, 1-. -C C _. I', e, o8;3. Z ______T _r.. pre>i.. 09 2d L _ ^= C C _ ____________ 103. o: C;-' C. 3. 1" ' OL _ — 3 J - Cc '.... 1 7 -F I C L7 R4c: 12___ lL. 0 C ^ C 16 ti_ x 1. - _2 A C.. - _ 17 IC '. is + I tc 19 f I C C 20 -. 1 t C C.... - 22 o c. '- C. - '=cc t —'. 23 ii OGTO L j -) 24 115 74 1o hP I 25'_ 3.. C,.j.... 27 26 _21 C ______ ___ ______ 27 Qi C - C ____________ 28A3 0_LS 3. _C A.. Z C. 28 t 23 / - l.-C C. _........ 30 4 32 __1 C ' - C 33,I X ~ 9 L-C. C...___ 34 103 Li uX.1 r I -c,___ 35 l 0 C O J IC 36 23O E T, %-c C_.__ 37....... _ <o, O - F ^C.L/^i"ffi _________ 43 - i '/,. ^. _p'X''-c _ C. C 38 L 39 2 05 RCL I-C c r I, -c C 40 - o3. - i/! ' - C. 41 + 03 -C,. i-c C - 42 61 Z..,x,, - c C 43 5./ + ' J C _...C 44.+, RCL S. 45 1 t o / 1 E: C C 46 L _ C3. C c* = CE Pt 47 7__C 48 49_. __ by progr<^w ~lIs 35

APPENDIX B DESCRIPTION OF COMPUTER PROGRAM This appendix describes the computer program MULAT which aids in carrying out multiobjective decision analysis. This program is interactive and written in Level F PL/I. It uses no system dependent features and should run on any computer system which.supports this language. The program consists of a MAIN procedure and six subprocedures. The calling hierarchy and program organization are shown in Figure 4. General description. The program handles decision problems with the structure shown in Figure 5. That is, single stage multiattribute problems with continuous probability distributions can be analyzed. A maximum of twenty attributes and twenty alternatives can be accomodated. The allowed types of utility functions and probability distributions are discussed in Section 1. Briefly, mutual utility independence of the attributes is assumed along with constant or constant proportional risk aversion for each attribute. In addition, for each alternative the attributes are assumed mutually probabilistically independent. The Pearson-Tukey approximation is used to calculate the required expected utilities. As discussed in Section 2, the decision problem data can be stored in a data file for future use. Also, changes can be made to an existing problem's data in order to carry out sensitivity analyses. The program provides error recovery for the following types of errors: 36

MAIN GT N FO I NEXUT KCONST EXUTAL UT1 FUN FUNCT a) CALLING HEIRARCHY MAIN GTINFO INEXUT UT1 FUN LI KCONST FUNCT EXUTAL b) PROGRAM ORGANIZATION Figure 4 37

X2,.. XN) (x, X2,..., XN) (X1, X2,...,XN) Figure 5. DECISION PROBLEM 38

- attribute or alternative number specified is greater than the total number previously specified - a fractile is outside the range previously specified - more than 500 iterations of the solution algorithm are needed to calculate the scaling constant k. The remainder of this Appendix describes the functions of each procedure in MULAT. A listing of the program is furnished in Appendix C. 39

PROCEDURE NAME: MAIN Procedure call: none Parameters: none Description: This is the main program for the multiattribute decision analysis. Functions: - Opens files. - Calls GTINFO to ask user for problem data. - Calls INEXUT to compute individual attribute expected utilities for each alternative. - Calls KCONST to compute the value of scaling constant k. - Calls EXUTAL to compute the expected utility for each alternative - Prints out the analysis results. - Changes data for sensitivity analysis, if desired, and repeats sequence of subprocedure calls needed to calculate expected utilities. - Prints final problem data into a file before terminating execution. Subprocedures called: GTINFO, INEXUT, KCONST, EXUTAL 40

PROCEDURE NAME: GTINFO Procedure call: CALL GTINFO(NUAT,NUALT,TYPE,C,XW,XB,XL,X M,XH,KI) Input parameters: none Output parameters: NU AT: number of attributes NU ALT: number of alternatives TYPE: risk types for attributes (vector) C: risk constants for attributes (vector) XW: lowest values of attribute ranges (vector) XB: highest values of attribute ranges (vector) XL: 0.05-fractiles (two-dimensional array) XM: 0.50-fractiles (two-dimensional array) XH: 0.95-fractiles (two-dimensional array) KI: attribute scaling constants (vector) Description: This procedure obtains input data interactively from user. Functions: - Asks user for source of data (either data file or terminal) - Obtains data from specified source. Subprocedures called: none 41

PROCEDURE NAIME: INEXUT Procedure call: CALL INEXUT(NUAT,NU ALT,TYPE,C,XW,XB,XL,XM, XH,EXUTI) Input parameters: NJ AT: number of attributes NU ALT: number of alternatives TYPE: risk types for attributes (vector) C: risk constants for attributes (vector) XW: lowest values of attribute ranges (vector) XB: highest values of attribute ranges (vector) XL: 0.05-fractiles (two-dimensional array) XM: 0.50-fractiles (two-dimensionai array) XH: 0.95-fractiles (two-dimensional array) EXUTI: expected utilities for each alternative/attribute combination (two-dimensional array) Description: This procedure calculates the expected utility for each attribute for each alternative. Functions: - For each alternative - For each attribute - For each fractile - Call subprocedure UTIFUN to compute single attribute value. - For each alternative - For each attribute 42

- Compute single attribute expected utility using PearsonTukey approximation. Subprocedures called: UTIFUN 43

PROCEDURE NAME: UTIFUN Procedure call: UTIFUN (TY,C,X,Y1,Y2) Input parameters: TY: risk type C: risk constant X: attribute value for which utility is desired Yl: lowest value of attribute range Y2: highest value of attribute range Output parameters: none Description: This function calculates the single attribute utility for a specified value of the attribute. Functions: - Identifies the risk type of the utility function. - Computes the utility for the specified attribute value. Subprocedures called: none 44

PROCEDURE NAME: KCONST Procedure call: CALL KCONST (NU AT,KON,KI) Input parameters: NU AT: number of attributes KI: attribute scaling constants (vector) Output parameters: KON: value of scaling constant k. Description: This procedure uses the method of bisection to find the solution to the equation NU AT f(k) =-1T KON*KI(n) + 1] - (KON + 1) 0 n=l Functions: - Computes sum of scaling constants to find region where k will lie. - Computes value of f(k) at midpoint of region - If f(k) <105 at the midpoint return. - Otherwise, shrinks the region, calculates the value of f(k) at the midpoint of the new region and repeats the test. Subprocedures called: FUNCT 45

PROCEDURE NAME: FUNCT Procedure call: FUNCT (X,NU AT,KI) Input parameters: X: attribute value for which f(X) is desired NU AT: number of attributes KI: attribute scaling constants (vector) Output parameters: none Description: This function computes the value of NU AT f(X) = ][ X*KI(n) + 1] - (X + 1) n1l Subprocedures called: none 46

PROCEDURE NAME: EXUTAL Procedure call: CALL EXUTAL (EXUTI,KON,KI,NU_AT,NU_ALT,EXUTI AL) Input parameters: EXUTI: expected utilities for each attribute/alternative combination (two-dimensional array) KON: scaling constant k KI: attribute scaling constants (vector) NU AT: number of attributes NU ALT: number of alternatives EX UTI AL:expected utilities for alternatives (vector) Description: This procedure computes the expected utility for each alternative. Subprocedures called: none 47

APPENDIX C COMPUTER PROGRAM LISTING 48

1 1 1 1 1 1 VPROCESS ('NOATR,NOXPEF') 2 LMULAT: PRODEDURE OPTIONS (MAIN); 3 DCL (K,J,[J AT, N.T U LT) FIXED BIN (31); 4 DCL (C(2'),XW(20),X B (2n)) FLOAT DECIMAL; 5 DCL (XL (22,21),Xr (2,20),XH (20,2C),KI (20) ) FLOAT DECIM 6 DCL (EXIUTI(20,20),EX TI _AL (20)) FLOAT DECIMAL; 7 DCL KON FLOAT DECIMAL; 8 DCL TYPE (3) FIXED BIN (31); 9 DCL (SW,SW2,SW3,SW4,SW5,SW6) FIXED BIN(31); 10 DCL (NEWNUATr, N,NEW,NTJCHAN,ATTRNU, NUCHANQ,ALTNUU,ATNU, I1 NU CHA? NK, NU _ON) FIXED BIN (31); 12 DCL NEWNUALT FIXED BIN(31); 13 DCL L(20) LABEL; 14 DCL Z FIXED BIN (31); AL; 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 /t ******** **** **** * **** *** *** ****************** *1 OPEN FIL (INP) INP1T; OPEN FILE(STOPE) OUTPUT; OPEN FILE(DATA) TITLE('SCARDS') INPUT; ON CONVERSION BEGIN; PUT SKIP EDIT('*** ERROR: INVALID DATA, TRY AGAIN') (A); PUT SKIP; GO TO L(Z); END; /* ASK FOR INFORMATION */ CALL GTINF) (NUTAT, NUIALT,TYPE,C,XW,XBXL,XM,XH, KI); /* COMPTTE THE INDIVIDUAL EXPECTED UTILITY VALUES */ INIPRO: CALL INEXUT (NU AT, NU ALT,TYP, C,XW, XB, XL,XM, XH,EXUTI) /*COMPUTJE THE SCALING CONSTANT K */ CALL KCONST (NU_AT,KON,KI); /* COMPUTE THE EXPECTED UTILITY FOR EACH ALTERNATIVE */ CALL EXUTAL (EXUTTI,KON,KI, NU AT,NU ALT, EXUTI AL); /* PRINT OUT THE ANALYSIS RESULTS SUMMARY */ PUT SKIP(S) EDIT('***** MULTIATTRIBUTE DECISION ANALYSIS *'**') (X (13),A); PUT SKIP (2) EDI T ('TTRIBUTES:',NUAT) (X (27),A, F (2)): PUT SKIP (2) EDIT (' ALTERNATIVES:,,NU_ALT) (X (27), A,F (2)); PUT SKIP (2) EDIT('- 0 -, - O C-0 -') (X(24),A); PUT SKIP(4) EDIT(' ---- INFORMATION ABOUT UTILITY FUNCTION ') (X (5), A); PUT SKIP EDIT( R A N G.E S') (X(53),A); PUT SKIP EDIT('ATTRIBUTE','RISK TYPE',' CONSTANr, ' LOWEST',' HIGHEST') (K (1), A,X(3),A,X (4),A, X(6),A, X (7),A); DO J=1 TO NTU AT; PUT SKIP EDIT(JTYPE(J),C(J),XW(J),XR(J)) 49

61 (X (12), F (2),X(1 1), F(2),X(4),E (1 3, 4), X (3),F(10,2), 62 X(2),F(10,2)); 63 END; 64 PUT SKIP (4) EDIT(' --- SCALING CONSTANTS') (X(5),A); 65 DO J=1 TO NU AT; 66 PUT SKIP EDIT (J,KI(J)) (X(18),F(2),X(5),F(5,4)); 67 END; 68 PUT SKIP(2) EDIT('** K ',KON) (X(19),A,F(10,)4)); 69 PUT SKIP (4) EDIT(' --— INFORMATION ABOUT PROBABILITIES') (X(5),A) 70 'DO K=1 TO NU ALT; 71 PUT SKP (2) EDIT('ALTERNATIVE, K) (X(5),A,F(2)); 72 PUT SKIP TDIT('ATTRIBUTS', '.5 FIACT','.50 FRACT'.95 FRACT') 73 (X (9),A,X(7),A,X (7),A, X (7),A); 74 DO J=1 TO NJ AT; 75 PUT SKIP EDIT(JXL(K,J),XM(K,J),X(KJ)) (X(12),F(2), 76 (3) (X(7),F(10,2))); 77 END; 78 END; 79 PUT SKIP(4) EDIT('. ---- INDIVIDUAL ATTRIBUTE EXPECTED UTILITY VALUES') 80 (X(5),A); 81 DO K=1 TO NU ALT; 32 PUT SKIP(2) EDT('ALTERNATI VE:' ',K) (X(29),A,X(1),F(2)); 83 PUT SKIP(2) EDIT('ATTRIBUTE ' r'EXPECTED UTILITY') 98 (X (20) t xAX ( 1 0), A); 85 DO J=1 TO NU AT; 86 PUT SKIP EDIT(J,EXTTI(K,J)) (X(23),F(2),X(18),F(5,4)); 87 END; q8 END; 89 PUT SKIP(4) EDIT(' ---- EXPECTED UTILITY FOR EACH ALTERNATIVE') g9 (X(5),A); 91 PUT SKIP (2) EDI T('ALTERNATIVE','EXPECTED UTILITY') (X(16) A, X(6), A) 92 DO K=1 TO NU ALT; 93 PUT SKIP EDIT (K,XUTT_AL (K) ) (X (19),F (2),X (16),F(5,4) ); 94 END; 95 96 97 98 99 100 101 /* ************ *********t***** ************************** ***** */ 102 /* SENSITIVITY ANALYSIS */ 103 104 PUT SKIP(19) EDIT('ENTER 1 IF YOU WANT SENSITIVITY ANALYSIS, ZERO', 105 ' IF NOT') (A,A); 106 PUT SKIP; 107 Z=1; 108 L(1): GET LIST (SW); 109 IF SW=0 THEN 3O TO ENDPROC; 110 111 112 113 /* ASK FOR CRANGES IN NUMBER OF ALTERNATIVES */ 114 115 PUT SKTP(2) EDIT('ENTER 1 IF YOU WANT TO ADD MORE ALTERNATIVES,') (A); 116 PUTT FDIT('ZERO IF NOT') (A); 117 PUT SKIP; 118 GET LIST (SW6); 119 IF SW6=1 120 THEN DO; 50

121 PUT SKIP(2) EDIT('HOW MANY MORE ALTERNATIVES?') (A); 122 PUT SKIP; 123 GET LIST (NTEWNU ALT) 124 /* ASK FOR NEW FRACTILES */ 125 DO N=1 TO NEW_NU_ALT; 1 26 NEW=N+NU_ ALT; 127 DO J=1 TO NU AT; 128 PUT SKIP (2) EDIT ('ENTER FRACTILES FOR NEW ALTERNATIVE: 129 NEW,' AND ATTRIBUTE: ',J) (A,F(2),A,F(2)); 130 PUT SKIP: 131 VER9: GET LIST(XL (NEW, J),X (NEW,J),XH(NEW,J) ); 132 IF (XL(NEW,J)<XW(J) IXH(NEW,J)>XB(J)) 133 THEN DO; 134 CALL SYSEPR('*** ERROR: FRACTILE OUT OF RANGE, TRY', 135 ' AGAIN').; 136 GO TO VER9; 137 END; 138 END; 139 END; 140 NUALT=NUA LT+NEW NU ALT; 141 GO TO INIPRO; 142 END; 143 144 145 146 /* ASK FOR CHANGES IN NUMBER OF ATTRIBUTES */ 147 148 PUT SKIP(2) EDIT('ENTER 1 IF YOU WANT TO ADD MORE ATTRIBUTES, ZsRO', 149 ' IF NOT') (A, A); 150 PUT SKIP; 151 Z=2; 152 L(2): GET LIST(SW2)-; 153 Iv SW2=1 154 THEN DO; 155 PUT SKIP(2) EDIT('HOW MANY MORE ATTRIBUTES?') (A); 156 PUT SKIP; 157 Z=3; 158 L (3): GET LIST (NEW NU AT); 159 DO N=1 TO NEW NU AT; 160 NEW=N+NU AT; 161 /* ASK F3R NEW RISK CONDITIONS */ 162 PUT SKIP(2) EDIT(' ENTER RISK TYPE, CONSTANT AND RANGES', 163 ' FOR NEW ATTRIBUTE:',NEW) (A,A,F(2)); 164 PUT SKIP; 165 Z=4; 166 L(4): GET LIST (TYPE (NEW),C (NEW),XW (NEW),XB(NER); 167 END; 168 /* ASK FOR SCALING CONSTANTS */ 169 PUT SKIP(2) EDIT ('NOW, PLEASE ENTER ALL THE SCALIN3 CONSTANTS') 170 (A); 171 PUT SKIP; 172 DO N=1 TO (NEW NU AT+NT_ AT); 173 PUT SKIP(2) EDIT('ENTER SCALING CONSTANT NUMBER:',N) 174 (A,F(2)); 175 PUT SKIP; 176 Z=6; 177 L (6): GET LIST (KI (N)); 178 FND; 179 /* ASK FOR NEW FRACTILES */ 180 DO K=1 TO NUALT; 51

181 DO N=1 TO NEW NU AT; 182 NEW=N+NUJ Ar7 183 PUT SKIP(2) EDIT ('ENTER FRACTILES FOR ALTERNATIVE:' K, 184 ' AND NEW ATTPIBUTE: ' NEW) (A,F (2),,F (2) ); 185 PUT SKIP; 186 Z=5; 187 L(5):; 188 VER3: GET LIST (XL(K,NEW),XM(K,NEW),XH(K,NEW)); 189 IF (XL(K,NEW) <XW (NEW) IXH (K, NEW) >XB (NE) ) 190 THEN DO; 191 CALL SYSERR('*** ERROR: FRACTILE OUT OF RAN3E, rRY AGAIN') 192 GO TO VER3; 193 END; 194 END; 195 END; 196 /* RETURN TO THE MAIN PROCEDURE */ 197 NUAT=NU_ATI'NEWNU_AT; 198 GO TO HEAD; 199 END; 200 201 202 203 /* CHANGES IN RISK CONDITIONS AND RANGES */ 204 205 PUT SKIP(2) EDIT ('tF YOU WANT TO CHANGE SOME OF THE FOLLOWING ' 206 'VALtJES * ') (A,A); 207 PUT SKIP; 208 PUT EDIT('RISK TYPE, CONSTANT OR RANGES, ENTER 1, ZERO IF NOT') (A); 209 PUT SKIP; 210 Z=7; 211 L(7): GET LIST(SW3); 212 IF SW3=1 213 THEN DO; 214 PUT SKIP(2) EDIT('OK, FOR HOW MANY ATTRIBUTES?') (A); 215 PUT SKIP: 216 Z=8; 217 L (8): GET LIST (NUCHAN); 218 DO J=1 TO NU CHAN; 219 PUT SKIP(2) EDIT('CHANGE ',J,: PLEASE ENTER THE ', 220 ' ATTRIBUTE NUMBER, RISK TYPE, CONSTANT ', 221 'AND RANGES') (A,F(1),A,A,A); 222 PUT SKIP; 223 Z=9; 224 L(9): 225 VER8:. GET LIST(ATTR_NU, TYPE(ATTR, NU),C(A rr NU),sW (ATTRJNI), 226 X B (ATTRNU)); 227 IF (ATTR NU>NUAT) 228 TEEN DO; 229 CALL SYSERR('*** ERROR: ATTRIBUTE OUT OF RANGE'); 230 GO TO VER8; 231 END; 232 END; 233 END; 234 235 236 237 /* ASK FOR CIANGES IN FRACTILES */ 238 239 PUT SKIP(2) EDIT('IF YOU WANT TO CHANGE SOME FRACTILE VALUES', 240 ' ENTER 1, ZERO IF NOT') (A,A); 52

2 41 PUT SKIP; 2 42 Z=10; 243 L(10): GET LIST(SW4); 244 IF SW4=1 245 THEN DO; 246 PUT SKIP(2) EDIT ('OK, HOW MANY CHANGES?') (A); 247 PUT SKIP; 248 Z=11; 249 L(11): GET LIST(NUCAAN Q); 250 DO J=1 TO NUCHAN_Q; 251 PUT SKIP(2) EDIT('CHANGE # ',J,': PLEASE ENTER', 252 ' ALTERNATIVE #, ATTRIBUTE 4 AND FRACTILES') 253 (A,F(2),A,A); 254 PU? SKIP; 255 Z 12; 256 L(12):; 257 VER6: GET LIST (LTNU,ATNU, XL(ALTNU, A_NU),XM(ALTNU, 258 AT_ U),XH(ALT Nt,AT_ NU)); 259 IF (ALT NU>NUALTA T N U>NU_AT) 260 THEN DO; 261 CALL SYSERR('*** ERROR:ALTERNATIVE NUMBER OR ATTRIBUTE' 262 ' NUMBER IS OUT OF RANGE, TRY A3AIN'); 263 GO TO VER6; 264 END; 265 IF (XL(ALT_ N U,ATU) ()XW(ATNU) I XH(ALTNU, ArNU) >X B(AT_- U)) 266 THEN DO; 267 CALL SYSERR('*** ERROR: FRACTILE OUT OF RANGE, TRY ', 268 'A3AIN'); 269 GO TO VER6; 270 END; 271 END; 272 END; 273 274 275 276 /* ASK FOR CHANGES IN SCALING CONSTANTS */ 277 278 PUT SKIP(2) EDIT(tIF YO[U WANT TO CHANGE SOME OF THE SCALING ', 279 'CONSTANTS') (A); 280 PUT SKIP; 281 PUT EDIT(', ENTER 1, ZERO IF NOT') (A); 282 PUT SKIP; 283 Z=13; 284 L(13): GET LIST(SW 5); 285 IF SW5=1 286 THEN DO; 287 PUT SKIP(2) FDIT('OK, HOW MANY CHANGES?') (A); 288 PUT SKIP; 289 GET LIST(NU_ HAN K); 290 DO J=1 TO NU CHAN K; 291 PUT SKIP(2) EDIT('CHANGE ',J,' ENTER NUMBER OF THE 292 'SCALING CONSTANT AND THE NEW VALUE') 293 (A,F(2),A,A); 294 PUT SKIP; 295 Z=14; 296 L (14): GET LIST(NTCON, KI (NU CON)); 297 END; 298 END; 299 300 53

301 302 /* RETURN TO THE MAIN PROCEDURE */ 303 304 HEAD: 305 PUT SKIP (5) EDIT(' ******************************************' ) 306 (X (13),A); 307 PUT SKIP; 308 PUT SKIP(2) EDIT(' SENSITIVITY ANALYSIS ') (X(19),A); 309 PUT SKIP; 310 PUT SKIP(2) EDIT (' ******************************************* ) 311 ' (X(13),A); 312 PUT SKIP; 313 GO TO INIPRO; 314 315 316 317 318 319 /* SUBROUTINES SECTION */ 320 321 GTINFO: PR3C (NU AT,NU ALT,TYE,C, XW,XB,XL,XM,XH,KI); 322 DCL (NU_AT,NTT_ALT,rYPE(3)) FIXED BIN (31); 323 DCL (C (20), X(20),XB (20),XL (20,20),XM(20,20),XH(20,20), KI (20)) 324 FLOAT DECIMAL; 325 DCL (K,J) FIXED BIN (31); 326 DCL Z FIXED BIN(31); 327 DCL L(20) LABEL; 328 /* ******1*********************** *************** ****** ******** */ 329 /* ASK IF THE OPTION OF READING FROM FILE SHOULD BE USED */ 330 ON CONV BEGIN; 331 PUT SKIP EDIT('c*** ERPOR: INVALID DATA, TRY AGAIN') (A); 332 PUT SKIP; 333 GO TO L(Z); 334 END; 335 ON ENDFIL? (INP) 50 TO ALLDONE; 336 PUT SKIP EDIT('ENTER 1 IF YOU WANT TO READ FROM FILE, 7EP.O IF NOT') 337 (A); 338 PUT SKIP; 339 Z=15; 340 L (15): GET LIST (S); 341 IF S=1 342 THEN DO; 343 GET FILE(INP) LIST (NU_AT,NUALT); 344 DO J=1 TO NU_AT; 345 GET FILF (INP) LIST(TYPE(J),C(J),XW (J),XB(J)); 346 END; 347 DO K=1 TO NUALT; 348 DO J=1 -rO NUAT; 349 GET FILE (INP) LIST (XL (K,J), XM(K,J),XH (K,J)); 350 END; 351 END; 352 DO J=1 TO NU_AT; 353 GET FILE (INP) LIST(KI(J)); 354 END; 355 GO TO ALLDONE; 356 END; 357 /* ASK FOR NUMBER OF ATTRIBUTES AND ALTERNATIVES */ 358 PUT SKIP(5) EDIT('ENTER NUMBER OF ATTRIBUTES -AND ALTERNATIVES') 359 (A) 360 PUT SKIP; 54

361 Z=16; 362 L (16): GET LIST (NUAT,NUALT; 363 /* ASK FOR RISK TYPE, CONSTANTS AND RANGES */ 36a DO J=1 TO NU AT; 365 PUT SKIP(2) EDIT( 'ENTER RISK TYPE, CONSTANT AND RANGES FOR' 366 ATTITBUTE:',J) (A,A,F(2)); 367 PUT SKIP; 368 Z=17;. 369 L (17): 3ET LIST(TYPE(J),C(J),XW(J),XB(J)); 370 END; 371 /* ASK FOR SCALING CONSTANTS */ 372 DO J=1 TO NU AT; 373 PUT SKIP (2) EDT ('ENTER SCALING CONSTANT NUMBER:,J) (A,F(2)); 374 PUT SKIP; 375 Z-18; 376 L(18): GET LIST (KI(J)); 377 END; 378 /* ASK FOR FRA"TILES */ 379 DO K=1 TO NU_ALT; 380 DO J=1 TO U _AT; 381 PUT SKIP(2) EDIT('ENTER FRACTILES FOR ALrERNATIVE:',K, AND', 382 ' ATTRIBUTE:',J) (A, F(2),A,A F(2)); 383 PUT SKIP; 384 Z=19; 385 L(19):; 386 VERIF: GET LIST(XL (K-,J),XM (K,J),XH(K,J)); 387 IF (XL(K,J) <XW(J) IXH(K,J)>XB(J)) 388 T.ffN DO; 389 CALL SYSEPR('*** ERROR: FRACTILE OUT OF RANGE, TRY AGAIN' 390 GO TO VERIF; 391 END; 392 END-;~ 393 END; 394 ALLDONE: 395 END GTINFO; 396 397 398 399 400 401 INEXUT: PR" ('TU_AT, NU_ALT,TYPE, C,XW, XB,XL,XM, XH, EXUI); 402 DCL (NTJ_AT,NU_ALT) FIXED BIN (31); 403 DCL (C(*),X (*),XB(*)) FLOAT DECIMAL; 404 DCL TYPE(*) FIXED BIN (31); 405 DCL EXUTI(29, 20) FLOAT DECIMAL: 406 DCL (XL(20,20),XM(20,20),XR (20,20)) FLOAT DECIMAL; 407 DCL UTIL (23,20,3) FLOAT DECIMAL; 408 DCL (K,J) FIXED BIN(31); 409 DCL UTIFUN ENTRY(FIXED BIN(31),FLOAT DECIMAL,FLOAT DECtMAL, 410 FLOAT DECIMAL,FLOAT DECIMAL); 411 DCL (YL,YtI,YH,Y1,Y2,C1) FLOAT DECIMAL; 412 DCL TY FIXED BIN(31); 413 /* ******* *** *******************a?****6**(******* ********c */ 414 /* COMPUTE THE EXPECTED UTILITY VALUE FOR EACH ATR FOR EACHI ALT */ 415 /* CO.!PUTE rUTILITIES */ 416 DO K=1 TO NrALr; 417 DO J=1 TO N UAT; 418 TY=TY'rE(J); 419 C=C (J); 420 YL=XL(K,J); 55

421 YM=XM(K,J); 422 YH=X (K, J); 42 Y1=XW (J); 424 Y2=XB (J); 425 UTIL(K,J,1) = UTIFUIJ (TY,C1,YL,Y1,Y2); 426 UTIL(K,J,2) = UJTIFUN (TY,C1, YM,Y1,Y2); 427 UTIL(K,J,3) = UTIFUN (TY,C1,YH,Y1,Y2); 428 END; 429 END; 430 /* USE PEARSON-TUKEY FOR EXPECTED UTILITY VALUES */ 431 DO K=1 TO NUJALT; 432 DO J=1 TO NUAT; 433 EXtTI (K,J)=.63*UTIL(K,J,2). 185*(UTIL(K,J,1) +UrIL (K,J,3)); 434 END; 435 END; 436 437 438 439 UTIFUN: PROR (TY,C,X,Y1, Y2) RETURNS (FLOAT DECIMAL); 440 DCL X FLOAT DECIMAL; 441 DCL (Y1,Y2) FLOAT DECIMAL; 442 DCL C FLOAT DECIMAL; 443 DCL TY FIXED BIN(31); 444 DCL (AB,UT) FLOAT DECIMAL; 445 /* **M*****c******************$******************* ************* 446 /* SELECT AND COMPUTE THE APPROPIATE UTILITY FUNCTION */ 447 IF TY=1 448 THEN IF C>0 449 THEN DO; 450 A= (-EXP (-C*X) ) -E (-E -C*Y 1)) 451 B= (-EXP (-C*Y2) ) - (-EXP (-C*Y1) ); 452 UT=A/B;453 RETURN(UT); 454 END; 455 ELSE IF C<0 456 THEN DO; 457 A= (EXP (C*X)) - (EXP (C*Y1) ) 458 B=(EXP(C*Y 2))- (EXP(C*Y1) ); 459 UT=A/B; 460 RETURN(UT); 461 END; 462 ELSE 463 DO; 464 UT= (X-Y1) / (Y2-Y1); 465 RETURN (UT); 466 END; 467 IF TY=2 468 THEN IF C>O — 469 THEN DO; 470 A= (?EXP (C*X))- (-EXP (C*Y2 ); 471 B=(-EXP (C*Y1)) - (-EXP (C*Y2)); 472 UT=A/B; 473 RETURN (UT); 474 E ND; 475 ELSE IF C<O 476 THEN DO; 477 A= (EXP (C*X)) - (EXP (C*Y2)); 478 B= (EXP (C*Y 1) )(EXP (C*Y2) ) 479 UT =A/8; 480 RET URN(UT); 56

481 ENID; 482 ELSE DO; 483 UT= (-X+ Y2) /(-Y1+Y2); 484 PETURN(UT); 48 END; 486 IF TY=3 487 THEN IF C>1 488 THEN DO; 489A=(-1/X**(C-1)) - (-/Y1* (C-1)) 490 B= (-1/Y2** (C-1) ) - (-1/Y 1(C-1) ); 491 UT=A/B; 492 RET URN(UT); 493 END; 494 ELSE IF C<1 495 THEN DO; 496 A= (X** (1-C))- (Y1 (1-C) ); 497 B= (Y2** (1-C) ) ( Y 1 (1 -C) ); 498 UT=A/B; 499 RFT URN (UT); 500 END; 501 ELSE IF C=1 501 THREN DO; 503 A=LOG (..) -LOG (Y 1 ) 504 B=LOG(Y2)-LOG(Y 1); 505 UT=A/B; 506 RE URN(OT); 507 END; 508 ELSE IF C=0 509 THEN DO; 510 UT= (X-Y1) / (Y2-Y1); 511 RETURN (UT); 512 END; 513 END UTIFUN; 514 END INEXUT; 515 516 517 518 519 520 KCONST: PROC (NU AT,KON,KI); 521 DCL (I,J,NM( AT) FIXED BIN (31); 522 DCL KI(20) FLOAT DECIMAL; 523 DCL (F,XA) FLOAT DECIMAL; 524 DCL FUNCT ENTRY.(FLOAT DECImAL,FIXED BIN (31), () FLOAT DECIMAL); 525 DCL X1 FLOAT DECIMAL; 526 DCL X2 FLOAT DECIMAL; 527 DCL DELTA FLOAT DECIMAL INIT(.00001); 528 DCL KON FLOAT DECIMAL; 529 /* ********************************$*********** ******* ******** */ 530 531 /* COMPUTE THE CONSTANT K BY BINARY SEARCH */ 532 533 /* CALCULATE SUM OF THE CONSTANTS * 534 SUM=O; 535 DO J=l TO NU AT; 536 SUM=SUM+K (J); 537 END; 538 539 I = 0; 540 /* SUM OF rHE CONSTANTS IS LESS THAN ONE */ 57

541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 58.5 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 IF STPM<1 THEN DO; X1=0; X2= 15; INITSrP: F= FJN CT (X2, NU_AT,KT); IF F<O THEN DO; X2=X2+ 1; IF X2>33 rHEN GO TO NOTFOUND; GO TO INITSTP; END; /* FIRST MIDDLE POINT */ XA=(X2*X1)/2; LOOP: F=F-PUCT (XA,NUAT, KI); IF ABS (F) < DELTA THEN DO; KON=XA; -O TO ENDPROC; END; IF I>500 THEN GO TO NOTFOUND; 1=1+1; IF F> O THEN DO; X2=XA; XA=(X2+X1)/2; GO TO LOOP; END; ELSE DO; X1=XA; XA=(X2+X1) /2; GO TO LOOP-; END; END; /* SUM OF rHE CONSTANTS IS GREATER THAN ONE */ IF SU> 1 THEN DO; X1=-1; X2=0; XA= (X2+X1) /2; LOOP2: F=F TNCT (XA, N U_AT, KI); IF ABS(F)< DELTA THEN DO; KON= XA; GO TO ENDPROC; END; IF I>530 THEN-3O TO NOTFOUND; 1=1+1; IF?>0 THEN DO; X1= XA; XA= (X2+ X1) /2; GO TO LOOP2; END; ELSE DO; X2=XA; XA= (X2+ X1) /2; GO TO LOOP2; END; 58

601 END; 602 603 /* SUM OF THE CONSTANTS IS EQUAL TO ONE */ 604 IF SUM=1 605 THEN DO; 606 KON=0; 607 GO TO END_PRO.; 608 END; 609 610 611 612 FUNCT: PROC(X,NU_Ar,KI) RETURNS(FLOAT DECIMAL); 613 DCL X FLOAT DECIMAL; 614 DCL (J,NUAT) FIXED BIN (31); 615 DCL KI(*) FLOAT DECIMAL; 616 DCL (PROD,FUN) FLOAT DECIMAL; 61 7 1* * * **** ***** * * ** * * ** * * *t * ** *1/ 618 /* COMPUTE THE VALUE OF THE FUNCTION */ 619 PROD = 1; 620 DO J=1 TO NUAT; 621 PROD=PROD* (X*KI (J) +1); 622 END; 623 FUN= FROD- (X +1); 624 RETURN (FUN) 625 END FUNCT; 626 627 628 NOTFOUND: PUT SKIP LIST('K VALUE NOT FOUND'); 629 END PROC: 630 END KCONST; 631 632 633 634 635 636 EXUTAL: PROC (EXUTI, KON, KI, NUAT,NUALT, EX JTIAL); 637 DCL KI(*) FLOAT DECIMAL; 638 DCL EXUTI(*,*) FLOAT DECIMAL; 639 DCL (KONPROD) FLOAT DECIMAL; 640 DCL S FLOAT DECIMAL; 641 DCL (K,J,NU AT, NU ALT) FIXED BIN (31); 642 DCL EXUTIAL(20) FLOAT DECIMAL; 643 /* *************** *********** *** * a********* ****** 644 645 /* ADDITIVE CASE */ 646 647 IF KON=0 648 THEN DO; 649 DO K=1 TO NU ALT; 650 S=0; 651 DO J=1 TO NUAT; 652 S=S+KI(J)*E XUTI (K,J); 653 END; 654 EX_UTIAL (K) = S; 655 END; 656 GO TO DONE; 657 END; 658 659 /* MULTIPLICATIVE CASE */ 660 /* COMPUTES EXPECTED UTILITIES FOR EACH ALTERNATIVE */ 59

661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 END OF FILs DO K=1 TO NU ALT; PROD=1; DO J=1 TO NU AT; PROD=PROD*(K3N*KI(J)* *XUTT(K,J) +1); END; EXIJTIAL (K) = (PRO D-1) /KON; END; DO IF: END EXUTAL; SYSERR: PROC(EK'S, MFS2); DCL MES CAR (*); DCL MES2 CHAR (*); /t ********************************************** */ PUT SKIP EDIT(MES,MES2) (A,A); PUT SKIP; END SYSER;.. /* FINAL PROCESS BEFORE FINISH, STORE DATA IN FILE */ ENDP OC: PUT FILE(STORE) EDIT(NUAT,NU ALT) (X (1), (2),X 1) F (2) ); DO J=1 TO NUAT; PUT SKIP FILE(STORE) EDIT(TYPE(J),C(J),XW(J),XB(J)) (X(1),F(1),( X (1) E(13,4),X(1),F(10,2),X(1),F (10,2)); END; DO K=1 TO NIJA LT; DO J=1 TO NU AT; PUT SKIP FILE(STORE) EDIT(XL (K,J),XL (K,J),XH(K,J)) ((3) (X(1),F(10,2))); END; END; DO J=1 TO NUAT; PUT SKI? FILE (STORE) EDIT(KI(J),' PUT SKIP; EN'D; CLOSE FILE(STORE); CLOSE FILE(INP); END MULAT; It I) (X(3),F(5,4),.); 60