Ingeniería Técnica en Informática de Gestión



Documentos relacionados
Ingeniería en Informática

GENERACIÓN DE TRANSFERENCIAS

Introducción a la Firma Electrónica en MIDAS

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Ecuaciones de primer grado con dos incógnitas

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Plataforma Helvia. Manual de Administración Administración General. Versión

Mantenimiento Limpieza

/05/2009

Elementos requeridos para crearlos (ejemplo: el compilador)

GedicoPDA: software de preventa

Ingeniería del Software I Clase de Testing Funcional 2do. Cuatrimestre de 2007

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

DE VIDA PARA EL DESARROLLO DE SISTEMAS

Oficina Online. Manual del administrador

Trey-SAT Pag. 1. Manual de usuario

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

SINAUTO. (Captura Requirimientos) GRUPO 03

Manual de administración Administración General V

UNIDAD 1 LAS LEYES FINANCIERAS DE CAPITALIZACIÓN DESCUENTO

Gestión de Retales WhitePaper Noviembre de 2009

H E R R A M I E N T A S D E A N Á L I S I S D E D A T O S HERRAMIENTAS DE ANÁLISIS DE DATOS

UNIVERSIDAD DE SALAMANCA

MANUAL PARA EMPRESAS PRÁCTICAS CURRICULARES

MANUAL WEBSOPORTE DE IRIS-EKAMAT

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

UNIDAD 1. LOS NÚMEROS ENTEROS.

Gestión de Oportunidades

MANUAL DE AYUDA PARA LA IMPORTACIÓN DE DATOS AL LIBRO REGISTRO DE OPERACIONES ECONÓMICAS

Análisis de los datos

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

TEMA 5: La explotación de un servicio TI

Notas para la instalación de un lector de tarjetas inteligentes.

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Mesa de Ayuda Interna

NOTAS TÉCNICAS SOBRE EL SIT: Documentos de Gestión

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

HERRAMIENTAS DE ACCESS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

CAPÍTULO 3 Servidor de Modelo de Usuario

Tratamiento del Riesgo

Manual de Usuario Ciclos Formativos Matriculación para Modalidad de Completa

Funcionalidades Software SAT GotelGest.Net (Software de Servicio de Asistencia Técnica)

Sistema de Facturación de Ventas WhitePaper Enero de 2007

TEMA 3: MÉTODO CONTABLE. LAS CUENTAS

COMBINAR CORRESPONDENCIA EN MICROSOFT WORD

Mesa de Ayuda Interna

Autores en Web of Science y ResearcherID

MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A GERENCIA DE INFORMATICA

Universidad de Zaragoza Manual de Usuario

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.

MÓDULO DE GESTIÓN DE CAMIONES. El nuevo módulo se encuentra disponible en la ficha de los camiones, y contempla:

SISTEMA AUTOMATIZADO PARA ACTIVIDADES DE AUTOEVALUACIÓN DESARROLLADO COMO SERVICIO WEB: SISTEMA e-val

Arranque de la aplicación

TEMA 9: EFECTOS COMERCIALES A COBRAR

V Manual de Portafirmas V.2.3.1

Un vistazo a la calle revela que hay una gran cantidad de vehículos con arañazos o

Criterio 2: Política y estrategia

PRESUPUESTO DE UNA OBRA

Tema 4. Gestión de entrada/salida

Activación de un Escritorio Remoto

Estructuras de datos: Proyecto 2

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS

FICHERO DE AYUDA DEL PROGRAMA MEGAEURO

ORIENTACIONES GENERALES SOBRE EL PROCESO DE TRABAJO DE GRADO

Uso del Programa Gantt Project

1.- INTRODUCCIÓN 2.- PARÁMETROS

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

5. Composer: Publicar sus páginas en la web

Carrito de Compras. Esta opción dentro de Jazz la podremos utilizar como cualquier otro carrito de compras de una página de Internet.

Diseño de bases de datos Diapositiva 1

Guía de uso del Sistema de Gestión de Incidencias (RT) del Servicio de Informática

13.1. Tablas dinámicas de Excel

Cómo?: Resolviendo el sistema lineal homógeneo que satisfacen las componentes de cualquier vector de S. x4 = x 1 x 3 = x 2 x 1

Este documento enumera los diferentes tipos de Diagramas Matriciales y su proceso de construcción.

Movimiento a través de una. José San Martín

MANUAL DE AYUDA MODULO TALLAS Y COLORES

Tema 2. Espacios Vectoriales Introducción

Módulo 7: Los activos de Seguridad de la Información

Instrucciones de solicitud de reconocimiento. Curso 2015/16

Introducción a Protégé

Año: 2008 Página 1 de 18

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

CONSTRUCCIÓN DEL PROCESO MESA DE AYUDA INTERNA. BizAgi Process Modeler

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ

Manual de operación Tausend Monitor

REGLAMENTO GENERAL DE FONDOS ASSET ADMINISTRADORA GENERAL DE FONDOS S.A. Capítulo Primero De la Sociedad Administradora

Guía de Reparación de Equipamiento

x + y 4 2x + 3y 10 4x + 2y 12 x 0, y 0

FICHERO DE AYUDA DEL PROGRAMA MEGAPRIMI

Manual Instalación de certificados digitales en Outlook 2000

Transcripción:

Departamento de Informática Universidad Carlos III de Madrid Ingeniería Técnica en Informática de Gestión Inteligencia Artificial Febrero 2006. 1 a parte Normas generales del examen El tiempo para realizar el examen es de 1 hora y 30 minutos No se responderá a ninguna pregunta sobre el examen Si se sale del aula, no se podrá volver a entrar durante el examen No se puede presentar el examen escrito a lápiz Problema 1. (5 puntos) El encargado de la empresa Talleres Martínez ha decidido encargarle a un ingeniero informático el diseño de un sistema de producción que facilite la automatización de los procesos de diagnóstico y reparación de los coches de sus clientes. Nuestro ingeniero informático ha presentado un prototipo a la familia Martínez que, para cada coche que llega al taller, el sistema evalúa tres variables: si el vehículo arranca, si se mueve y, en caso de que así sea, cómo es la potencia del motor. En el caso en que los resultados sean adecuados, el sistema infiere que todos los elementos que forman parte del coche están correctamente y el diagnóstico que emite es Coche sin avería. Pero en los casos en los que esto no ocurra debe emitir un diagnóstico que informe acerca de dónde se localiza la avería, y que redactará en los siguientes términos: coche-arranca(sí, no, desconocido), coche-se-mueve (sí, no, desconocido), potencia-motor (correcta, baja, desconocida), batería-funciona (sí, no, desconocido), gasolina-en-depósito (sí, no, desconocido), estado-bujías(correcto, desajustadas, defectuosas,desconocido), sistema-de-transmisión (funciona, no-funciona, desconocido), estado-estárter (abierto, cerrado, desconocido), estado-carburador (limpio, sucio, desconocido), temperatura-ambiente (calor, frío, desconocido). 1. Para formalizar el proceso de razonamiento describimos a continuación el funcionamiento básico del motor y el movimiento de un coche: 2. Se pide: Un coche no puede moverse si no arranca el motor. Si es posible arrancar el motor de un coche pero éste no se mueve, entonces existe un problema en alguno de los mecanismos del sistema de transmisión que no deja que llegue el movimiento generado por el motor a las ruedas motrices. Si no arranca el motor puede existir un problema en cualquiera o en varios de los siguientes elementos a los que habrá que cambiar de estado: batería, gasolina-en-depósito o bujías. A veces, el motor puede no arrancar porque la temperatura del ambiente sea baja. En este caso la solución es abrir el estárter, un dispositivo que facilita el arranque en frío aumentando el paso de gasolina en el motor. Si el motor arranca pero presenta baja potencia, puede deberse a lo siguiente: Que las bujías estén desajustadas (haciendo la combustión del combustible deficiente). Que el estárter esté abierto cuando la temperatura del ambiente no es baja (ya que el motor recibiría un exceso de gasolina que no quemaría convenientemente). Que el carburador esté sucio (haciendo que la mezcla de gasolina no sea adecuada). Si una vez comprobado que el estado de todas las variables es correcto, el motor no arranca, la potencia es baja o el coche no se mueve, el diagnóstico que el sistema emite es El coche debe pasar a revisarlo un experto de la familia Martínez.

(2 puntos) Formalizar en lenguaje de marcos las clases necesarias para representar el problema. Considerar que una de las clases necesarias, la clase coche, está formada por tres elementos: depósito, motor (bujías, estárter, carburador y batería) y sistema de transmisión. (3 puntos) Describir las reglas del sistema de producción. Inicialmente el sistema no conoce el estado de ninguna de sus variables y a partir de la base de hechos y el conjunto de reglas debe (a) determinar qué problema tiene el coche e indicar cómo solucionarlo, (b) si no sabe cómo arreglarlo, recomendar que lo revise un experto.

Departamento de Informática Universidad Carlos III de Madrid Ingeniería Técnica en Informática de Gestión Inteligencia Artificial Febrero 2005. 2 a parte Normas generales del examen El tiempo para realizar el examen es de 1 hora y 30 minutos No se responderá a ninguna pregunta sobre el examen Si se sale del aula, no se podrá volver a entrar durante el examen No se puede presentar el examen escrito a lápiz Problema 2. (5 puntos) Un instituto científico desea dotar a su sistema multiprocesador de un software inteligente que sirva para distribuir varios trabajos de cómputo entre sus procesadores. Los trabajos que deben hacerse son conocidos a priori, y de cada uno de ellos se sabe con precisión el tiempo que requieren para llevarse a cabo en un solo procesador, sin interrupciones, desde el principio hasta su conclusión. Asimismo, el sistema multiprocesador está dotado de un número finito no ampliable de procesadores, cada uno de los cuales puede ser usado durante un intervalo de tiempo con la condición de que no esté ocupado con el procesamiento de otro trabajo. Se desea diseñar un sistema inteligente que sirva para minimizar el makespan o tiempo completo de procesamiento de los trabajos cuando se considera la asignación en paralelo a varios procesadores. Se pide: 1. (1 punto) Formalizar el espacio de problemas 2. (1,5 puntos) Obtener una función heurística admisible que sirva para minimizar el makespan. 3. (0,5 puntos) Qué algoritmo de búsqueda sugeriría emplear? Razone su respuesta. 4. (0,5 puntos) Considere el caso de un sistema con dos procesadores P1 y P2 que debe llevar a cabo dos trabajos denominados y, de los que se sabe que el primero consume 2 unidades de tiempo para su realización en cualquiera de los procesadores, mientras que el segundo consume hasta 5 unidades de tiempo. Aplique el algoritmo anterior a este caso, detallando los estados recorridos y las decisiones tomadas por el algoritmo de búsqueda con el uso de la función heurística elegida en el apartado anterior. 5. (1,5 puntos) Recientemente, el instituto científico ha recibido un número determinado de procesadores que van todos hasta p veces más rápido que los antiguos. Considerando su uso concurrente con los procesadores anteriores, se pide: a) (0,75 puntos) Es preciso hacer alguna modificación en la representación del espacio de problemas sugerida en el primer apartado? Si es así, cuál o cuáles? b) (0,75 puntos) Es preciso hacer alguna modificación en el cálculo de la función heurística? Si es así, cuál o cuáles?

Soluciones del examen de Inteligencia Artificial Febrero 2006 Solución al problema 1 1. Apartado 1: Formalización Para describir el espacio del problema propuesto utilizamos marcos y reglas. Una posible jerarquía de marcos es la que se muestra en las siguientes tablas: Atributo id Coches Temperatura Taller cadena de caracteres #COCHE [calor, frío, n/s] La clase taller sólo tiene una instancia con identificador Talleres Martínez. La temperatura ambiente podemos incluirla como una variable del taller. En el atributo coches tendremos las instancias de la clase Coche definida más abajo. Atributo id Arranca Se-mueve Depósito Motor Transmisión Diagnóstico Coche cadena de caracteres [sí, no, n/s] [sí, no,, n/s] #DEPÓTO #MOTOR #TRANSMIÓN #DIAGNÓSTICO La clase coche necesita: un identificador (por ejemplo, su matrícula), dos atributos que consideramos propios (arranca y se-mueve) y, tal cómo se indica en el enunciado, tres atributos más (motor, depósito y transmisión). Añadimos la variable diagnostico que caracterizará el problema del vehículo y la forma de resolverlo. Atributo Coche Gasolina Depósito #COCHE [sí, no, n/s] Para representar el depósito no necesitamos más que identificar a qué coche pertenece y, en el contexto de nuestro problema, si tiene o no gasolina. Transmisión Atributo Coche #COCHE sistema-transmisión [func, no-func, n/s] Con esta clase representamos a qué coche pertenece la transmisión y si funciona el sistema que permite que el movimiento generado por el motor alcance las ruedas motrices.

Atributo Coche Potencia Estárter Bujías Carburador Batería Motor #COCHE [ok, baja, n/s] [abierto, cerrado, n/s] [ok, def, desaj, n/s] [limpio, sucio, n/s] [sí, no, n/s] Asignamos al motor, además de la referencia del coche al que pertenece, los atributos potencia, estárter, bujías, carburador y batería. Atributo Coche Problema Solución Diagnóstico #COCHE cadena de caracteres cadena de caracteres El diagnóstico de un coche estará formado por la identificación del problema que presenta y un mensaje sobre la forma de resolverlo. 2. Apartado 2: Reglas de producción En principio todo coche que llega al taller tiene el estado de sus variables desconocido (n/s) pero, tal como se expone en el enunciado, el sistema es capaz de conocer, de alguna manera, el estado de los siguientes atributos que llamaremos variables-iniciales: Coche.arranca = [sí, no] Coche.se-mueve = [sí, no] Coche.motor.potencia = [ok, baja] A partir de éste conocimiento se pueden plantear diferentes tipos de reglas. a) Reglas a partir del buen funcionamiento de variables iniciales Tendremos una clase de reglas que, a partir del conocimiento proporcionado por las variables-iniciales, nos permitirán conocer el estado de otros atributos. Por ejemplo, C.deposito.gasolina= sí Pero no serán aceptables reglas en el sentido contrario, como por ejemplo: C.deposito.gasolina= sí C.motor.arranca= sí Este tipo de regla no es correcta por dos motivos: en primer lugar, porque un coche puede tener el depósito lleno mientras que el estado de otra variable, por ejemplo la batería, puede no ser el adecuado, pero, en segundo lugar, porque admitimos la posibilidad de que el sistema necesite un experto humano para resolver precisamente las situaciones en que todas las variables son correctas y el vehículo siga

presentando problemas. En esta sección incluimos la primera de las reglas que se nos pide formalizar: C.se-mueve= no b) Reglas de diagnóstico En el caso en que las variables iniciales nos informen de algún problema, debemos detectar cuál es el origen del mismo. Describimos a continuación el conjunto de reglas que determinan dónde, en función de los síntomas, debemos buscar la solución. El sistema no conoce el estado de sus variables y podríamos indicar expresamente que el valor de cada atributo es (n/s) en las precondiciones. Por sencillez, no lo indicaremos en todos los casos de manera explícita. C.se-mueve= sí C.motor.potencia= ok C.diagnóstico.problema= coche sin avería C.se-mueve= no C.transmisión.sistema= n/s C.transmisión.sistema= no-func C.diagnóstico.problema= problema en el sistema de transmisión Taller.id= T (C.motor.batería= no AND C.diagnóstico.problema= cambiar batería ) OR (C.motor.gasolina= no AND C.diagnóstico.problema= llenar depósito ) OR (C.motor.bujías= def AND C.diagnóstico.problema= cambiar bujías ) OR ((C.motor.estárter= cerrado AND T.temperatura= frío) AND C.diagnóstico.problema= abrir estárter ) Como la noción de la disyunción en lógica se define de manera incluyente, el consecuente de la última regla se interpreta de la siguiente manera: Si el coche no arranca entonces uno o varios de los hechos inferidos son ciertos. Taller.id= T C.se-mueve= sí C.motor.potencia= baja (C.motor.bujías= desj AND C.diagnóstico.problema= ajustar bujías ) OR ((C.motor.estárter= abierto AND T.temperatura= calor) AND C.diagnóstico.problema= cerrar estárter )

c) Reglas para la reparación del vehículo Tal como indica el enunciado se consideran reglas diferentes aquellas que se refieren a diagnósticos y aquellas, que con el diagnostico hecho, modifican los estados de los atributos solucionando el problema que presentaba el vehículo. Suponemos, por tanto, que una vez que el sistema tiene el diagnostico, tiene también la capacidad para modificar el estado de sus variables. Las reglas relacionadas con la solución de problemas en el motor, en la transmisión y en el depósito podrían representarse como sigue: Problemas en la transmisión C.se-mueve= no C.transmisión.sistema= no-func C.diagnostico.problema= problema en el sistema de transmisión Modificar (C.transmisión.sistema)= func Modificar (C.diagnóstico.problema)= coche sin avería Imprimir (C.diagnostico.solución)= arreglado el sistema de transmisión Problemas en la batería C.motor.batería= no C.diagnóstico.problema= cambiar batería Modificar (C.motor.batería)= sí Modificar (C.diagnóstico.problema)= coche sin avería Imprimir (C.diagnostico.solución)= se ha cambiado la batería Problemas en las bujías C.motor.bujías= def C.diagnóstico.problema= cambiar bujías Modificar (C.motor.bujías)= ok Modificar (C.diagnóstico.problema)= coche sin avería Imprimir (C.diagnostico.solución)= se han cambiado las bujías Problemas con el estárter Taller.id= T (C.motor.estárter= cerrado AND T.temperatura= frío) C.diagnóstico.problema= abrir estárter Modificar (C.motor.estárter)= abierto Modificar (C.diagnóstico.problema)= coche sin avería Imprimir (C.diagnostico.solución)= se ha abierto el estárter

Problemas en el depósito C.depósito.gasolina= no C.diagnóstico.problema= llenar depósito Modificar (C.depósito.gasolina)= sí Modificar (C.diagnóstico.problema)= coche sin avería Imprimir (C.diagnostico.solución)= se ha llenado el depósito d) Reglas para acudir a un experto Las últimas reglas que queremos representar son aquellas que recojan las siguientes situaciones: el vehículo presenta un problema, realizamos su reparación y sin embargo el problema sigue sin resolverse. Obsérvese las diferencias en las precondiciones de éstas reglas con respecto a las del apartado anterior. Regla 1 de consulta a un experto C.se-mueve= no C.transmisión.sistema= func C.diagnóstico.problema= no se conoce cómo localizar la avería Imprimir (C.diagnostico.solución)= El coche debe pasar a revisarlo un experto de la familia Martínez Regla 2 de consulta a un experto Taller.id= T C.motor.batería= sí C.motor.gasolina= sí AND C.motor.bujías= ok AND NOT ((T.temperatura= frío) AND NOT (C.motor.estárter=abierto)) C.diagnóstico.problema= no se conoce cómo localizar la avería Imprimir (C.diagnostico.solución)= El coche debe pasar a revisarlo un experto de la familia Martínez Hemos utilizado la regla de DeMorgan (A B (A B)) para expresar que cuando la temperatura es baja, se garantiza que el estárter está abierto. En la siguiente regla utilizamos el mismo esquema para asegurar que si la temperatura es alta, el estárter está cerrado. Regla 3 de consulta a un experto Taller.id= T C.se-mueve= sí C.potencia= baja C.motor.bujías= ok AND C.motor.carburador=limpio AND

NOT ((T.temperatura= calor) AND NOT (C.motor.estárter=cerrado)) C.diagnóstico.problema= no se conoce cómo localizar la avería Imprimir (C.diagnostico.solución)= El coche debe pasar a revisarlo un experto de la familia Martínez

Solución al problema 2 1. La representación del espacio de problemas consiste en decidir, por una parte, la representación de los estados y, por la otra, de los operadores con los que es posible transitar desde unos estados hasta otros. La asignación de recursos (procesadores en este caso) a tareas (trabajos en el problema) se conoce típicamente con el nombre de. Por lo tanto, se distinguirá con este nombre el marco clase en el que se representará la solución propuesta por el sistema que se construirá en este problema. Obviamente, otros nombres habrían valido igualmente. Atributo makespan entero {1..N} num procesadores entero {1..N} trabajos #TRABAJO procesadores #PROCESADOR de las que tendremos una única instancia Por otra parte, son conceptos bien distinguidos en el enunciado del problema, procesadores y trabajos. Por lo tanto, se sugiere para la representación de estos conceptos, los siguientes marcos clase: Atributo id t cadena de caracteres entero {1..N} de las que tendremos tantas instancias, M, como procesadores haya disponibles Atributo id t asignado cadena de caracteres entero {1..N} símbolo { si, no} de las que tendremos tantas instancias, T, como trabajos se hayan definido inicialmente Efectivamente, la representación sugerida es suficiente para distinguir los estados iniciales y finales como sigue: En el estado inicial habrá tantas instancias de trabajos como peticiones haya, distinguidos por su id y con el valor de asignado igual a no. Su atributo o slot t tomará el valor que representa el tiempo que tardará en ejecutarse en un procesador. Por otra parte, habrá tantos marcos instancia de, como procesadores haya en el sistema multiprocesador considerado, distinguidos todos por un id. Además, el atributo t, que representa la disponibilidad de un procesador, tomará el valor 0 en todas las instancias indicando, con ello, que están inmediatamente disponibles. Por otra parte, el schedule tendrá un makespan inicialmente igual a 0 y almacenará en num procesadores el número de instancias del marco clase. En el estado final, todos los trabajos deberán tener el slot asignado a si. Después del procesamiento, el slot makespan del schedule tendrá un valor distinto de 0 que es, de hecho, el parámetro que se desea minimizar

Por otra parte, el único operador de este problema resulta fácilmente de observar que la única acción contemplada en este problema consiste en asignar procesadores a la realización de trabajos: Asignar: t m s asignado ( t ) = no dar-valor (t, asignado, si) dar-valor (t, procesador, m) dar-valor (m,t,t.t+m.t) dar-valor (s,makespan, máx{s, m.t + t.t}) k = s.makespan Obsérvese que el operador actualiza el coste de la solución parcial construída con su aplicación al makespan o tiempo del procesador que está más tiempo ocupado. 2. Resulta fácil observar que en la aplicación de la técnica de relajación de restricciones, las restricciones factibles de ser relajadas y que, de hecho, afectan al coste (como puede observarse en la formulación de la regla asignar) son: La secuencialidad en la asignación de trabajos a procesadores: podría relajarse esta condición imaginando entonces que cualquier procesador podría atender cualesquiera trabajos al mismo tiempo! lo que es obviamente infactible, pero puede que sea conveniente a efectos de calcular una función heurística. La solución óptima de cualquier problema en este caso sería, entonces, el tiempo máximo de procesamiento de cualquiera de los trabajos pendientes de ser asignados: h 1 = máx {t.t} t t.asignado= no El hecho de que los trabajos deben ser atendidos en un único procesador: esto es, podría imaginarse que cualquier trabajo pendiente de ser asignado es descompuesto en varias partes, cada una de las cuales sería entonces ejecutada por un procesador diferente. Esta suposición, es la que inevitablemente reduce el makespan al máximo: h 2 = mín m m.t + 1 T t i.t M donde M es el número de procesadores disponibles y T es el número de trabajos pendientes de ser asignados nótese que, en el apartado anterior se había definido T como el número de trabajos definidos inicialmente, de modo que T T. Obviamente, h 2 será admisible. Más aún, en algún caso podría ser incluso menor que el makespan que ya se haya consumido en una solución parcial construida durante el procedimiento de búsqueda, de modo que para mejorar la estimación anterior se sugiere la función heurística siguiente: h 3 = máx mín m i=1 m.t + 1 T t i.t M ; makespan Claramente, de todas las funciones heurísticas construidas metódicamente con el modelo de relajación de restricciones, h 3 es la más informada y, por lo tanto, la que sugiere en la resolución de este problema. 3. A la hora de decidir qué algoritmo de búsqueda debería emplearse para resolver un problema concreto resulta conveniente analizar cuidadosamente las siguientes cuestiones: Se dispone de una función heurística? Si es así, entonces será posible aplicar la clase de algoritmos de búsqueda denominados heurísticos; en otro caso, sólo deberían considerarse los algoritmos de búsqueda sin información. i=1

makespan: 0 num_procs: 2 id: makespan: 0 id: asignar (P1, ) asignar (P2, ) asignar (P1, ) asignar (P2, ) makespan: 2 makespan: 5 makespan: 2 h = 2,5 num_procs: 2 h = 5 num_procs: 2 h = 2,5 num_procs: 2 h = 5 makespan: 5 num_procs: 2 id: id: id: id: id: id: id: id: makespan: 2 makespan: 5 makespan: 2 makespan: 5 Figura 1: Algoritmo de escalada - Nivel 1 En cualquier caso, también es preciso decidir si se desea recorrer el espacio de estados en profundidad o en amplitud ocupando más o menos espacio en el ordenador al tiempo que se persiguen soluciones óptimas o no. En este problema, se dispone efectivamente de una función heurística, de modo que se sugiere restringir la atención a la clase de algoritmos de búsqueda heurística. De entre ellos, llaman especialmente la atención los algoritmos de el mejor primero puesto que el algoritmo A (esto es, el algoritmo de el mejor primero que resulta de aplicar f(n) = g(n) + h(n)) es completo y, además, admisible. Sin embargo, para poder aplicar esa función de ordenación de los nodos en la lista ABIERTA, es preciso que g(n) y h(n) puedan sumarse convenientemente. Obsérvese que, en este caso, g(n) es la suma de los costes del operador asignar que, tal y como se ha definido, será la suma de varios makespan seguidos, en vez del cálculo incremental de un único makespan!, mientras que h(n) es la estimación de un único makespan para la realización de todos los trabajos pendientes. En otras palabras, no son cantidades que, tal y como se han definido, puedan sumarse directamente! Por otra parte, resulta conveniente recordar que en el problema no se pedían en absoluto soluciones óptimas. Por lo tanto, son elecciones inteligentes en este caso el algoritmo de escalada o el algoritmo de búsqueda en haz. 4. La figura 1 muestra el nodo inicial como la raíz de un árbol de búsqueda desarrollado a profundidad 1. Este nodo, y todos los demás, se representan como una colección de marcos instancia de los marcos clase definidos en el apartado 1. Además, con el objeto de mejorar la claridad, cada nodo está representado gráficamente, con la asignación de trabajos a los procesadores que se decide en cada estado. Aplicando la expresión para el cálculo del valor heurístico h 3, obtenida en el apartado 2, se ve que el primer y tercer nodo más a la izquierda tendrán un valor h 3 = 2, 5 puesto que, en cualquiera de los dos casos, después de asignar el trabajo a uno de los dos procesadores, el único trabajo pendiente es, con una duración de 5 unidades. Imaginando que este trabajo pudiera llevarse a cabo por ambos procesadores,

h = 2,5 makespan: 2 num_procs: 2 makespan: 2 asignar (P1, ) id: id: asignar (P2, ) makespan: 7 C = 7 num_procs: 2 C = 5 makespan: 5 num_procs: 2 t: 7 id: id: id: id: makespan: 7 makespan: 5 Figura 2: Algoritmo de escalada - Nivel 2 cada uno de ellos invertiría una cantidad de tiempo que no excedería de 5/2 = 2, 5 unidades que, o bien se suman al tiempo consumido por el procesador que atiende el trabajo, o al otro que aún estará ocioso. Obviamente, el segundo es el mejor de los casos, de modo que así se estima un makespan igual a 2,5 unidades. Puesto que ha habido empate en la evaluación heurística de dos sucesores del nodo inicial, se escoge arbitrariamente expandir el nodo más a la izquierda, resultando entonces el caso de la figura 2 que tiene dos sucesores únicamente. Cualquiera de los dos nuevos sucesores son nodos finales, puesto que en ellos todos los trabajos tienen su slot asignado con el valor si. Escogiendo el de menor coste, resulta que la solución propuesta por el sistema será el nodo más a la derecha donde, como debía esperarse, el sistema ha propuesto la ejecución concurrente de los trabajos y en ambos procesadores. 5. Puesto que los nuevos procesadores se distinguen de los anteriores únicamente en su capacidad de proceso, que de hecho resulta ser p veces mayor que la de los procesadores antiguos, es preciso: a) Identificar este caracter distintivo en la representación del espacio de problemas: Actualizando el espacio de estados. Para ello basta con añadir un nuevo slot capacidad a cada marco clase que, por defecto, valdrá 1 y, para los nuevos procesadores será p. Modificando los operadores. En este caso es preciso actualizar el tiempo que tarda un procesador en ejecutar un trabajo, de modo que el atributo t de la máquina m a la que se le asigna un trabajo t, será igual a m.t + t.t m.p, en vez de m.t + t.t. b) Actualizar la función heurística sugerida en el tercer apartado, de modo que el reparto de la carga de un trabajo entre varios procesadores debe hacerse considerando el mejor caso esto es, que esos procesadores ejecutan una parte del trabajo hasta p veces más rápido resultando: h 4 = máx mín m m.t + 1 pm T t i.t ; makespan i=1