Ejercicios de Sistemas de Ayuda a la Decisión Hoja 2 Fecha de entrega: lunes 7 de febrero 2011 (examen de ordinario plan 96) Grupos de a lo sumo 3 1. El problema de decisión clı́nica que conlleva una enfermedad cardı́aca y la posible cirugı́a para realizar un bypass está representado por el siguiente diagrama de influencia. Las preferencias dependen del coste economico (bajo, medio, alto) y de la calidad de vida (muerte, baja y alta). La enfermedad condiciona al sintoma de dolor y al resultado del angiograma. bypass = list( PAIN = node( Type = ”CHANCE”, Name = ”PAIN”, Values=c(”ABSENT”,”PRESENT”), Preds=c(”HEARTDISEASE”), Pots=matrix( data = c( 0.80, 0.20, 0.70, 0.30), nrow = 2, ncol = 2, byrow = TRUE, dimnames = NULL)), ANGIOGRAM = node( Type = ”CHANCE”, Name = ”ANGIOGRAM”, Values=c(”NEGATIVE”,”POSITIVE”), Preds=c(”HEARTDISEASE”), Pots=matrix( data = c( 0.95, 0.05, 0.15, 0.85), nrow = 2, ncol = 2, byrow = TRUE, dimnames = NULL)), HEARTSURGERY = node( Type = ”DECISION”, Name = ”HEARTSURGERY”, Values=c(”NO”,”YES”), Preds=c(”PAIN”,”ANGIOGRAM”), Pots=matrix( data = c(1.0), dimnames = list(”phase”,”HEARTSURGERY”))), HEARTDISEASE = node(Type=”CHANCE”, Name=”HEARTDISEASE”, Values=c(”ABSENT”,”PRESENT”), Preds=c(), Pots=matrix( data = c( 0.85, 0.15), nrow=1,ncol=2,byrow=TRUE,dimnames=NULL)), LIFEQ = node(Type=”CHANCE”, Name=”LIFEQ”, Values=c(”DEAD”,”LIVE2ALQ”,”LIVE2AHQ”), Preds=c(”HEARTDISEASE”,”HEARTSURGERY”), Pots=matrix( data = c( 0.02, 0.08, 0.90, 0.09, 0.29, 0.62, 0.15, 0.30, 0.55, 0.17, 0.23, 0.60), nrow=4, ncol=3, byrow=TRUE, dimnames=NULL)), ECONOMICALC = node(Type=”CHANCE”, Name=”ECONOMICALC”, Values=c(”LOW”,”MEDIUM”,”HIGH”), Preds=c(”HEARTSURGERY”), Pots=matrix( data = c( 0.70, 0.25, 0.05, 0.05, 0.35, 0.60), nrow=2,ncol=3,byrow=TRUE,dimnames=NULL)), UTILITY = node(Type=”UTILITY”, Name=”UTILITY”, Values=c(0.0,1.0), Preds=c(”LIFEQ”,”ECONOMICALC”), Pots=matrix( data=c( 1.0, 0.90, 0.70, 0.80, 0.50, 0.10, 1.40, 1.50, 1.80), nrow=9,ncol=1,byrow=TRUE,dimnames=list( NULL, c(”UTILITY”)))) ) 1 bypass = influence.diagram( bypass) model definition cat( ”Influence Diagram – bypass”) model name dump.netG(server,”server”) # export to GeNie remarc.eval(server,DUMP=TRUE) # evaluation (a) Evaluar el diagrama detallando las operaciones de cada paso. (b) Mostrar las alternativas óptimas. (c) Mostrar la distribución de probabilidad a posteriori de HEARTDISEASE. (d) Realizar los apartados anteriores con P(HEARTDISEASE=PRESENT) = 0.3. ¿Cambia el resultado de la evaluación? 2. En una empresa se propone actualizar un servidor de aplicaciones. Primero se condidera actualizar o no la máquina y posteriormente el software. El tamaño del registro de incidencias dependen de la productividad o caudal de peticiones servidas. Las averı́as, caidas del servidor dependen del número de incidencias. La satisfacción de los clientes depende de la productividad. Tomamos la decisión de actualizar la máquina a la vista del nivel de averı́as y la satisfacción. Se ha formulado el problema mediante un modelo de diagrama de influencia: ## Influence Diagram: server server = list( Incidencias = node( Type = ”CHANCE”, Name = ”Incidencias”, Values = c(”pocos”,”muchos”), Preds = c(”Productividad”), Pots = matrix( data = c( 0.60, 0.40, 0.15, 0.85), nrow = 2, ncol = 2, byrow = TRUE, dimnames = NULL)), Productividad = node( Type = ”CHANCE”, Name = ”Productividad”, Values = c(”media”,”alta”), Preds = c(), Pots = matrix( data = c( 0.20, 0.80), nrow = 1, ncol = 2, byrow = TRUE, dimnames = NULL)), Averias = node(Type=”CHANCE”, Name=”Averias”, Values = c(”raras”,”frecuentes”), Preds = c(”Incidencias”), Pots = matrix( data = c( 0.90, 0.10, 0.30, 0.70), nrow=2, ncol=2, byrow=TRUE, dimnames=NULL)), Satisfaccion = node(Type=”CHANCE”, Name=”Satisfaccion”, Values = c(”baja”,”alta”), Preds = c(”Productividad”), Pots = matrix( data = c( 0.80, 0.20, 0.65, 0.35), nrow=2, ncol=2, byrow=TRUE, dimnames=NULL)), NuevoServidor = node( Type = ”DECISION”, Name = ”NuevoServidor”, Values = c(”no”,”si”), Preds = c(”Averias”,”Satisfaccion”), Pots = matrix( data = c(1.0), dimnames = list(”phase”,”NuevoServidor”))), NuevoSoftware = node( Type = ”DECISION”, Name = ”NuevoSoftware”, Values = c(”no”,”si”), Preds = c(”NuevoServidor”), Pots = matrix( data = c(2.0), dimnames = list(”phase”,”NuevoSoftware”))), 2 Utility = node(Type=”UTILITY”, Name = ”Utility”, Values = c(0.0,1.0), Preds = c(”NuevoServidor”,”NuevoSoftware”,”Incidencias”), Pots = matrix( data = c( ## no,no,pocos, no,no,muchos, no,si,pocos, no,si,muchos, si,no,pocos, si,no,muchos, si,si,pocos, si,si,muchos 80.0, -5.0, 110.0, -8.0, 100.0, -4.0, 50.0, -2.0), nrow=8, ncol=1 ,byrow=TRUE, dimnames=list( NULL, c(”utility”)))) ) server = influence.diagram( server) # model definition cat(”Influence Diagram: server”) # model name dump.netG(server,”server”) # export to GeNie remarc.eval(server,DUMP=TRUE) # evaluation (a) Resolver el diagrama de influencia (apps-server.R) indicando las operaciones de cada paso del algoritmo. (b) Calcular la utilidad final del problema y mostrar el resultado, las tablas de decisiones óptimas. (c) Analizar el resultado si Utilidad( NuevoServidor=si, NuevoSoftware=si, pocos) = 0.0 (appsserver-2.R), ¿Cambia la polı́tica óptima? (d) Resolver el diagrama con evidencia de que la Productividad es media. (e) Transformar el diagrama de influencia inicial en un árbol de decisión y evaluar las polı́ticas óptimas. Comentar que aspectos del problema determinan la mejor opción para modelizar. Indicar si el árbol es simétrico y mostrar el número de escenarios. (f) Resolver el diagrama inicial con NuevoSoftware como decisión primera (apps-server-3.R) e indicar si cambia el resultado. NuevoSoftware = node( Type = ”DECISION”, Name = ”NuevoSoftware”, Values = c(”no”,”si”), Preds = c(”Averias”,”Satisfaccion”), vPots = matrix( data = c(1.0), dimnames = list(”phase”,”NuevoSoftware”))), NuevoServidor = node( Type = ”DECISION”, Name = ”NuevoServidor”, Values = c(”no”,”si”), Preds = c(”NuevoSoftware”), Pots = matrix( data = c(2.0), dimnames = list(”phase”,”NuevoServidor”))), 3