Introducción El presente informe muestra el Modelo Funcional para el prototipo propuesto que ejemplificara el funcionamiento del Orquestador de Ejecución de Componentes de Software. El prototipo consiste en resolver el problema del agente viajero mediante la aplicación de algoritmos genéticos. Aquí se efectúa el correspondiente análisis de requerimientos funcionales y no funcionales del sistema y los diseños de casos de uso. Adicionalmente se especifican los requerimientos para el funcionamiento del Orquestador de Ejecución de Componentes se incluirán los casos de uso del orquestador también?. OBJETIVOS Identificar y definir los requerimientos funcionales y no funcionales del sistema. Identificar y definir los requerimientos del componente Orquestador de Ejecución de componentes de software. Identificar y especificar los casos de uso del sistema. Identificar los actores que intervienen en la realización de los casos de uso. Analizar la comunicación requerida en el sistema para llevar una respuesta a una solicitud del actor. MODELO FUNCIONAL DEFINICIÓN DEL PROBLEMA (Agente Viajero) Consiste en un agente de ventas que tiene que visitar n ciudades, comenzando y terminando en la misma ciudad, visitando solamente una vez cada ciudad, y haciendo el recorrido de costo mínimo, este costo de recorrido puede ser expresado en términos de distancia, es decir recorrer el mínimo de kilómetros posibles. Se trata de un problema NP completo, en el que la única alternativa para su solución consiste en verificar todas las posibles opciones para encontrar cuál es la óptima, hay que tener en cuenta que si el número de ciudades es n, el número de posibles recorridos a ensayar resulta ser n!/2n. ref1. A cada uno de los recorridos que puede realizar el viajero se le denomina viaje. Comprobar uno por una todos los posibles viajes para n ciudades requiere realizar n! sumas, por lo tanto se requiere utilizar algoritmos de búsquedas que permitan encontrar una solución optima. USO DE ALGORITMOS GENETICOS PARA RESOLVER EL PROBLEMA DEL AGENTE VIAJERO Un algoritmo genético puede encontrar una solución óptima al problema del agente viajero en una cantidad de tiempo razonable, aunque probablemente no sea la mejor solución. Para llevar a cabo el algoritmo genético, es necesario definir inicialmente la cantidad de ciudades a visitar y las distancias entre ellas, esto para definir el tamaño que tendrá el cromosoma. Seguido de esto, se debe definir la función de aptitud donde serán evaluados los diferentes cromosomas que componen la población. La población que se utilizará para la resolución del problema, en la primera generación, será creada de forma aleatoria, para ello se necesita definir el tamaño que tendrá durante toda la ejecución del algoritmo genético. (ref2 aqui esta la de alander) Alander (1992), basándose en evidencia empírica sugiere que un tamaño de población comprendida entre el número de ciudades y el doble de este tamaño es suficiente para atacar con éxito te tipo de problemas. Una vez se realice la evaluación de los cromosomas mediante la función de aptitud, se debe realizar la selección de aquellos que son más aptos para la resolución del problema, para esto se deben utilizar diferentes técnicas de selección basadas en probabilidad. Este procedimiento se repite n veces, de acuerdo al número de iteraciones establecidas para tratar de encontrar el cromosoma optimo, es decir el mejor viaje a realizar. Para seleccionar los individuos de la población inicial en cada iteración se toman los mejores individuos de la iteración inmediatamente anterior y se realizan operaciones de cruce, mutación o selección por torneo. ref 1: http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/t2geneticos.pdf página 18 ref 2: http://www.sc.ehu.es/ccwbayes/docencia/mmcc/docs/t2geneticos.pdf página 9 GLOSARIO TECNOLOGÍA UTILIZADA Modelamiento: Enterprise Architecte 7.5 Diseño: Mozart Oz REQUERIMIENTOS DE SOFTWARE REQUERIMIENTOS FUNCIONALES IDENTIFICADOR DEL NOMBRE DE REQUERIMIENTO REQUERIMIENTO REQ-1 Establecer función objetivo REQ-2 Determinar numero de generaciones REQ-3 Determinar numero de ciudades REQ-3.1 El usuario debe ingresar el numero de ciudades REQ-4 Determinar nombre de ciudades REQ-5 Determinar Distancia entre ciudades REQ-5.1 Generar aleatoriamente distancia entre ciudades REQ-5.2 Permitir ingresar la distancia entre ciudades REQ-5.3 Permitir editar la distancia entre ciudades REQ-6 Determinar ciudad de origen REQ-7 Generar Población Inicial REQ-7.1 Determinar tamaño de población inicial REQ-7.2 Generar aleatoriamente la población inicial (No estoy segura si estos son casos de uso aparte como lo tengo en el diseño o es solo uno y en la especificación es q se detalla) REQ-11. Se debe determinar el tamaño del cromosoma Generación de Cromosomas Se debe generar aleatoriamente los genes que conforman un cromosoma (es decir las ciudades que conforman un cromosoma) Se debe asegurar que el primer gen de un cromosoma corresponda con la ciudad de origen Se debe garantizar que no se repita ningún gen dentro del cromosoma Fitness El sistema debe evaluar cada cromosoma dentro de la función objetivo para obtener el fitness de cada uno de ellos. Selección de padres REQ-11.1 Selección de padres por el método de la ruleta REQ-11.2 Selección de padres por el método elitista REQ-11.3 Selección de padres por torneo REQ-12 Generación de nuevos individuos para la población REQ-12.1 Reproducción por cruce REQ-12.1.1 Reproducción por el operador de cruce basado en el orden (OX1) REQ-12.1.2 Reproducción por el operador de cruce basado en una correspondencia parcial (PMX) REQ-12.2 Reproducción por mutación REQ-12.2.1 Reproducción por el operador de mutación basado en el desplazamiento (DM) REQ-12.2.2 Reproducción por el operador de mutación basado en el cambio (SM) REQ-13 Generación de nueva población REQ-13.1 Tomar el 20 % de la población anterior. REQ-13.2 Tomar el 80% de la nueva población Finalización del algoritmo Luego de evaluar el número de generaciones ingresadas por el usuario, el sistema debe estar en la capacidad de mostrar el cromosoma que contiene el mejor fitness de la población. X REQUERIMIENTOS NO FUNCIONALES IDENTIFICADOR DEL REQUERIMIENTO NOMBRE DE REQUERIMIENTO RFN-1 TIEMPO DE RESPUESTA. RNF-1.1 No hay un parámetro de respuesta, Este tiempo viene determinado por el número de generaciones que el usuario quiera utilizar para encontrar la solución al problema del agente viajero. Se espera que el tiempo de ejecución de cada corrida sea meno a un minuto. RNF-2 INTERFAZ DE USUARIO. RNF-2.1 Presentar al usuario una interfaz amigable. RNF-2.2 El software debe proveer una navegación sencilla. RNF-2.3 El software deberá tener una interfaz gráfica uniforme de las pantallas, menús y opciones, teniendo en cuenta factores como el tamaño de las pantallas, color, tipo de letra y la configuración de los campos de entrada. RNF-2.4 Dentro de lo posible el software debe facilitar la entrada de datos a los usuarios, presentando listas de opciones que permitan escoger valores predeterminados. RNF-3 REUSABILIDAD. RNF-3.1 Los componentes desarrollados deben poder ser utilizados en otros desarrollos de Software. RNF-4 MODULARIDAD. RNF-4.1 El proceso de diseño deberá proveer una correcta modularidad, tal que permita agregar nuevas funcionalidades en etapas futuras sin traer grandes complicaciones. IDENTIFICADOR DEL REQUERIMIENTO NOMBRE DE REQUERIMIENTO RNF-5 TOLERANCIA A FALLAS RNF-5.1 El software debe estar en la capacidad de manejar cualquier error que afecten la prestación estable del servicio. RNF-5.2 Manejo de excepciones. RNF-6 CONFIABILIDAD RNF-6.1 La información otorgada por el aplicativo luego de la ejecución del algoritmo genético debe ser confiable. MODELAMIENTO FUNCIONAL BASADO EN CASOS DE USO DIAGRAMA GENERAL DE CASOS DE USO ESPECIFICACION DE CASOS DE USO Identificación: CU-1 Caso de uso: Ingresar datos de configuración del AG Actores: Usuario Descripción: El sistema debe permitirle al usuario ingresar el número de generaciones a evaluar para obtener una solución óptima, además el usuario debe ingresar el número de ciudades a recorrer por el viajero. Finalmente el sistema le debe preguntar al usuario si desea ingresar la distancia entre las ciudades o desea que el sistema las genere aleatoriamente. Tipo: Primario Precondiciones: Sistema en ejecución, el usuario debe encontrarse en la pantalla inicial del sistema. Postcondiciones: El sistema debe contar con las variables de: Número de generaciones Número de ciudades Se requiere la generación automática de distancias entre ciudades Referencias Cruzadas: CU-2 Asignar nombre a las ciudades CU-3 Ingresar distancia entre ciudades CU-4 Asignación aleatoria de distancia entre ciudades Requerimientos asociados: REQ-2 Determinar numero de generaciones REQ-3 Determinar numero de ciudades REQ-3.1 El usuario debe ingresar el numero de ciudades REQ-6 Determinar ciudad de origen Secuencia Identificación: CU-2 Caso de uso: Asignar nombre a las ciudades Actores: Sistema Descripción: El sistema debe generar de manera automática los nombres de las ciudades a recorrer por el viajero. Tipo: Secundario Precondiciones: El usuario ha proveído el numero de ciudades a recorrer por el viajero Postcondiciones: El sistema debe contar con las ciudades a recorrer por el viajero Referencias Cruzadas: CU-1 Ingresar datos de configuración del AG Requerimientos asociados: REQ-4 Determinar nombre de ciudades Secuencia Identificación: CU-3 Caso de uso: CU-3 Ingresar distancia entre ciudades Actores: Usuario Descripción: El sistema debe permitir al usuario ingresar la distancia que existe entre una ciudad y otra Tipo: Secundario Precondiciones: El usuario ha proveído el número de ciudades a recorrer por el viajero. El sistema ha asignado un nombre a cada una de las ciudades. Postcondiciones: El sistema debe contar con la distancia entre las ciudades a recorrer por el viajero Referencias Cruzadas: CU-1 Ingresar datos de configuración del AG Requerimientos asociados: REQ-5 Determinar Distancia entre ciudades REQ-5.1 Permitir ingresar la distancia entre ciudades Secuencia Identificación: CU-4 Caso de uso: Selección aleatoria de distancia entre ciudades Actores: Usuario Descripción: El usuario ha proveído el número de ciudades a recorrer por el viajero. El sistema ha asignado un nombre a cada una de las ciudades. El usuario selecciono la opción de generar automaticamente la distancia entre ciudades. Tipo: Secundario Precondiciones: El sistema debe contar con la distancia entre las ciudades a recorrer por el viajero Postcondiciones: El sistema debe contar con las ciudades a recorrer por el viajero Referencias Cruzadas: CU-1 Ingresar datos de configuración del AG Requerimientos asociados: REQ-5 Determinar Distancia entre ciudades REQ-5.1 Generar aleatoriamente distancia entre ciudades REQ-5.3 Permitir editar la distancia entre ciudades Secuencia