; Mitigations ; m1, m2, etc are Mitigations ; setq m1 value to 0 (zero) to indicate mitigation m1 is OFF ; setq m1 value to 1 (one) to indicate mitigation m1 is ON ; THIS IS HOW YOU EXPLORE DIFFERENT SELECTIONS OF MITIGATIONS! (setq m1 0) (setq m2 0) ; m1Cost is the cost of m1 (setq m1Cost 11) (setq m2Cost 22) ; Risks ; r1APL is the AProriLikelihood of Risk r1 (in range 0 - 1) (setq r1APL 1.0) (setq r2APL 1.0) ; Objectives ; o1Weight is the weight (relative importance on an arbirary scale) of Objective o1 (setq o1Weight 1) (setq o2Weight 2) ; Effects ; Mitigations "effect" Risks (usually by reducing their likelihoods and/or impacts) ; r1L is Risk r1's likelihood reduced by the Mitigations that are on ; computed as follows: the product of: ; r1's APrioiLikelihood ; for each Mitigation that effects r1, ; if the mitigation is OFF ; then 1 [i.e., no change] ; else the complement of that Mitigation's effect on r1 ; e.g., an ON Mitigation that is 0.9 effective will contribute a factor of 0.1 ; NOTE that the effect values are INSIDE THESE FUNCTIONS, not defined elsewhere (defun r1L () (* r1APL (- 1 (* m1 0.9)) (- 1 (* m2 0.7)))) ; m1/r1 effect is 0.9 ; m12/r1 effect is 0.7 (defun r2L () (* r2APL (- 1 (* m2 0.3)))) ; m2/r2 effect is 0.3 ; Impacts ; Risks "impact" Objectives ; o1AtRiskProportion is Objective r1's proportion at risk ; computed as follows: the sum of: ; for each Risk that impacts o1, ; the product of that Risk's likelihood and the r1/o1 impact value ; NOTE that the impact values are INSIDE THESE FUNCTIONS, not defined elsewhere (defun o1AtRiskProportion () (+ (* (r1L) 0.1) (* (r2L) 0.3))) ; r1/o1 impact is 0.1 ; r2/o1 impact is 0.3 (defun o2AtRiskProportion () (* (r2L) 0.7)) ; r2/o2 impact is 0.7 (defun o1Attainment () (* o1Weight (- 1 (min 1 (o1AtRiskProportion))))) (defun o2Attainment () (* o2Weight (- 1 (min 1 (o2AtRiskProportion))))) (defun AttainmentTotal () (+ (o1Attainment) (o2Attainment))) (defun CostTotal () (+ (* m1 m1Cost) (* m2 m2Cost))) (defun PrintValues () (format t "CostTotal = ~S~%AttainmentTotal = ~S" (CostTotal) (AttainmentTotal))) ; e.g., if m1 and m2 are off (i.e., m1 = 0, m2 = 0) ; then (CostTotal) = 0 ; (r1L) = 1.0 ; (r2L) = 1.0 ; (o1AtRiskProportion) = 0.4 ; (o2AtRiskProportion) = 0.7 ; (o1Attainment) = 0.6 ; (o2Attainment) = 0.6 ; (AttainmentTotal) = 1.2 ; e.g., if m1 is off and m2 is on (i.e., m1 = 0, m2 = 1) ; then (CostTotal) = 22 ; (r1L) = 0.3 ; (r2L) = 0.7 ; (o1AtRiskProportion) = 0.24 ; (o2AtRiskProportion) = 0.49 ; (o1Attainment) = 0.76 ; (o2Attainment) = 1.02 ; (AttainmentTotal) = 1.78