Práctica 2. Algoritmos de enfriamiento simulado (simulated annealing)

Documentos relacionados
Estructuras de control

ESTRUCTURAS REPETITIVAS EN PHP

Práctica 2. Introducción a net2plan (I)

Estructuras de Control

MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6

Instrucciones de control

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Práctica 1. Introducción a Java Optimization Modeler (JOM)

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Fundamentos de programación

Guía práctica de estudio 05: Diagramas de flujo

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

PROGRAMAS PARA LA CLASSPAD MANAGER.

Generación de variables aleatorias continuas Método de la transformada inversa

Práctica 7. Problemas de diseño de topologías de red con herramienta Net2Plan

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Estadística para la toma de decisiones

SIIGO WINDOWS. Comprobante Diferido. Cartilla I

Diseño Estructurado de Algoritmos

LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE

Especificación y uso de módulos en C++(II)

TEMA 4. ESTRUCTURAS DE CONTROL

Práctica 2: Análisis de sensibilidad e Interpretación Gráfica

OBJETIVO ESPECIFICO. Identificar peligros asociados a cada fase o etapa del trabajo y la posterior evaluación de los riesgos.

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

BLOQUE I: HOJA DE CÁLCULO

OPTIMIZACIÓN VECTORIAL

La eficiencia de los programas

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Notación Asintótica 2

Complejidad de Algoritmos

Figura 1: Abriendo el Performance Monitor Figura 2: Pantalla Inicial del Monitor

INDICE Parte 1. Visual Basic Capitulo 1. Qué es Visual Basic? Capitulo 22. Mi Primera Aplicación Capitulo 3. Elementos del lenguaje

: Algorítmica y Estructura de Datos I

Tema 2 Introducción a la Programación en C.

PRÁCTICA 3 TRANSISTORES BIPOLARES: POLARIZACIÓN Y GENERADORES DE CORRIENTE

Oracle Database: Programación con PL/SQL

MICROSOFT EXCEL PARA DIRECCIÓN FINANCIERA I. 1. Resolución de problemas de simulación de Montecarlo mediante el uso de la hoja de cálculo.

Nombre de la asignatura: Algoritmos y Lenguajes de programación.

Estatutos de Control C# Estatutos de Decisión (Selección)

Manual de usuario, Escritores

Proyecto: Fiesta Aniversario de la Empresa. Identificación de Riesgos

Tema: Excel Formulas, Funciones y Macros

Aulas Virtuales Introducción a la Docencia en Línea. Creando un Syllabus (Programa de Curso) en Línea

UNIÓN INTERNACIONAL DE TELECOMUNICACIONES

Diagramas de secuencia

Tutor de ventas de Amazon. Creación de catálogo, primeros pasos.

1. Introducción 2. Esquema básico 3. Codificación 4. Evaluación 5. Selección 6. Operadores 7. Ejemplo. Algoritmos genéticos

Estructuras en LabVIEW.

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

1.3.- V A L O R A B S O L U T O

4. DIAGRAMAS DE INTERACCIÓN INTRODUCCIÓN DIAGRAMAS DE SECUENCIA Objetos Mensajes

INSTRUCCIONES PRESENTACIÓN DE CUENTAS ANUALES EN EL REGISTRO MERCANTIL

LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I)

PROGRAMACION EN INTERNET

Análisis y Recuperación de Información

Normas de estilo para la codificación de programas

INTRODUCCION 1.1.-PREAMBULO

GUÍA DE ESTILO EN JAVA

Trabajando con Listas

Protocolo para el registro de la solicitud de. Colonoscopia diagnóstica

ASIGNATURA: FARMACOGNOSIA

Funciones. Parámetros por valor

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I)

Matemáticas financieras

Manual de usuario Portal de Proveedores

Longitud Lado 1 Longitud Lado 2 Perímetro Área. En base a lo anterior, Cuál es la decisión que debe tomar Romualdo?

Procesamiento de documentos XML.

OPCIÓN A. La empresa A (x) tiene 30 trabajadores, la B (y) 20 trabajadores y la C (z) 13 trabajadores.

Estructuras de Repetición (Repita para)

Aprendizaje Automatizado

Funciones y Condicionales Introducción a la Programación

Duración: 2 horas pedagógicas

Conceptos de Arquitectura de Computadoras Curso 2015

ANEXO 3. GUÍA DE ACTIVIDADES DE UNA ASIGNATURA DE EXPERIMENTACIÓN EN INGENIERÍA QUÍMICA

Especificación y uso de módulos en C++ (I)

PROYECTO 2 Parte 1 BASES DE DATOS. Curso (2 Semestre) Grupos 4F2M y 4F1M-1 (aula 5102) CONSULTAS REMOTAS EN JAVA A UNA BASE DE DATOS

Aplicaciones informáticas de gestión comercial. ADGD Actividades de gestión administrativa

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE


Sincronizador de Información Táctica

Tecnológico Nacional de México INSTITUTO TECNOLÓGICO DE SALINA CRUZ

Inicio. Cálculos previos GRASP. Resultados. Fin. Figura 5.1: Diagrama de flujo del algoritmo.

Tema 5 Algunas distribuciones importantes

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL

NUEVOS ALGORITMOS INTELIGENTES PARA REDES DE DISTRIBUCIÓN DESEQUILIBRADAS. Ana Morales Directora General DIgSILENT Ibérica

Manual de Publicación y Gestión de Ofertas

Ingeniería de Requerimientos. requiere de un Sistema de Software.

INSTITUTO POLITECNICO NACIONAL CENTRO DE ESTUDIOS CIENTIFICOS Y TECNOLOGICOS " GONZALO VAZQUEZ VELA "

Estructuras Repetitivas

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 8

Formato para prácticas de laboratorio

Ejercicios para el Examen departamental

. REGISTRO DE ENFERMEDADES RARAS

RADIO =? R AREA = : πr 2 < CIRC = : 2 πr

3. Métodos clásicos de optimización lineal

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

Transcripción:

PLANIFICACIÓN Y GESTIÓN DE REDES Grado en Ingeniería Telemática Curso 2012-2013 Práctica 2. Algoritmos de enfriamiento simulado (simulated annealing) Autor: Pablo Pavón Mariño

1. Objetivos Los objetivos de esta práctica son: 1. Desarrollar en net2plan un algoritmo para el diseño de encaminamiento no bifurcado basado en un heurístico de tipo enfriamiento simulado (simulated annealing). Analizar los resultados y calidad de la solución. Desarrollar posibles variaciones del algoritmo. 2. Duración Esta práctica tiene una duración de 1 sesión, cumpliendo un total de 3 horas de laboratorio. 3. Evaluación Los alumnos no tienen que entregar ningún material al finalizar esta práctica. Este boletín es para el estudio del alumno. En él, el alumno deberá resolver los problemas planteados y anotar las aclaraciones que estime oportunas para su posterior repaso en casa. 4. Documentación empleada La información necesaria para resolver esta práctica se encuentra en: Ayuda de la herramienta net2plan (http://www.net2plan.com/). Instrucciones básicas presentes en este enunciado. Apuntes de la asignatura. 5. Algoritmos de tipo Simulated Annealing (SAN) Los algoritmos SAN son algoritmos iterativos, que parten de una solución inicial x 0, y en cada iteración se salta de una solución al problema a otra. Dada una solución actual x, se elige aleatoriamente una solución vecina v. Si el coste de la solución vecina mejora el coste de la solución actual (c(v) < c(x)), se adopta la nueva solución vecina como solución actual. En caso contrario, todavia es posible aceptar la nueva solución vecina (aunque sea de coste peor), y esto se hace con una probabilidad P dada por: P = e c(v) c(x) T Donde T es una variable global del sistema llamada temperatura del sistema, cumpliéndose que: Cuando la temperatura es un valor alto, la probabilidad P de aceptar una solución que empeore la actual es alta. Por ejemplo, si T es p.e. 100 veces la cantidad c(v) c(x) en que se empeora el coste, entonces la probabilidad es P 0,99. 1

Cuando la temperatura es un valor bajo, la probabilidad de aceptar una solución que empeore la solución actual es muy pequeña. Por ejemplo, si T es p.e. 10 veces inferior a c(v) c(x), entonces la probabilidad de aceptar la solución es P 0,000045. A continuación, mostramos un esquema habitual que ilustra el funcionamiento del algoritmo. Las iteraciones se organizan en dos bucles anidados, uno interno y uno externo. En cada iteración del bucle externo se disminuye la temperatura (en este caso de manera multiplicativa), y en cada iteración del bucle interno se itera la solución siempre con la misma temperatura. Algorithm 5.1: SAN() main x = x 0 comment: solución actual igual a la inicial x best = x 0 comment: mejor solución igual a la inicial T = T 0 comment: temperatura igual a la temperatura inicial while stopping criteria in outer loop does not hold do while stopping criteria in inner loop does not hold do v = solución vecina de x elegida aleatoriamente c = c(v) c(x) if c < 0 comment: la solución vecina v mejora la solución actual x then x = v if c(v) < c(x best ) { then x best = v else x = v, con probabilidad e c T T = αt comment: reducir la temperatura return (x best ) 5.1. Problema de encaminamiento no bifurcado Sea una topología G(N,E) dada por un conjunto de nodos N, y un conjunto E de enlaces entre ellos. Las capacidades u e de los enlaces son valores conocidos. El tráfico ofrecido a la red está compuesto por un conjunto conocido D de demandas. Para cada demanda d, conocemos el tráfico ofrecido h d, y sus nodos origen y destino. Para cada demanda, calculamos una lista de caminos admisibles formado por los k caminos más cortos en km entre los nodos extremos de la demanda. El parámetro k es un parámetro de entrada para el algoritmo. Se trata de encontrar el encaminamiento no bifurcado que minimice la congestión de red, medida como la utilización en el enlace de la red que mayor utilización tiene. 2

Es posible formular el problema de la siguiente manera: Parámetros de entrada: P d,d D = {Conjunto de caminos admisibles para la demanda d} P = {Unión de todos los caminos admisibles para las demandas} h p,p P = {tráfico ofrecido por la demanda d(p) asociada al camino p} Variables de decisión: x p,p P = {1 si la demanda d(p) se encamina por el camino p, 0 en caso contrario} ρ = {Utilización en el enlace más cargado} mínρ x p = 1 d D p P d h p x p ρu e e E p P e (1a) (1b) (1c) La función objetivo (1a) intenta minimizar la congestión. Las restricciones (1b), una para cada demanda, hacen que todas las demandas se encaminen por un y sólo un camino (encaminamiento no bifurcado). Las restricciones (1c), hacen que la utilización de cualquier enlace sea siempre menor o igual a ρ, y por tanto hará que ρ tome el valor de la utilización del enlace más cargado. El sumatorio de la parte izquierda acumula el tráfico que circula por los caminos que atraviesan el enlace e. 5.2. Algoritmo de tipo SAN para el problema de encaminamiento no bifurcado El problema de encaminamiento no bifurcado descrito es un problema NP-completo, y por tanto no existen algoritmos de complejidad polinomial que lo resuelvan óptimamente. El objetivo de este apartado de la práctica es desarrollar en net2plan un algoritmo heurístico de tipo Simulated Annealing para este problema. Las características del algoritmo pedido son: El algoritmo debe implementarse en una clase de nombre FA_SAN_minCongestion.java. Recibirá como entrada una topología con los nodos y los enlaces de la red, y un conjunto de demandas con el tráfico ofrecido. Se conocen también las capacidades en los enlaces de la red. El algoritmo devolverá un diseño con el encaminamiento no bifurcado encontrado como solución. Los parámetros de entrada definidos por el usuario serán: k: Número máximo de caminos admisibles para cada demanda. El alumno deberá utilizar la clase CandidatePathList incluida en net2plan para crear la lista de k caminos sin ciclos más cortos para cada demanda, que serán los caminos admisibles. san_numouteriterations: Número de iteraciones a ejecutar en el bucle externo del algoritmo. En cada iteración de este bucle, la temperatura del sistema se reduce, tal y como se indicará a continuación. san_numinneriterations: Número de iteraciones a ejecutar en el bucle interno del algoritmo. En cada iteración de este bucle, la temperatura del sistema es siempre la misma. La temperatura inicial del sistema se calculará de tal manera que una solución que empeora la congestión en 0.05, tenga una probabilidad de 0.99 de ser aceptada. Es decir: e 0,05 T init = 0,99 T init = 0,05 log 0,99 3

La temperatura final del sistema se calculará de tal manera que una solución que empeora la congestión en 0.05, tenga una probabilidad de 0.01 de ser aceptada. Es decir: e 0,05 T end = 0,01 T end = 0,05 log 0,01 En cada iteración del bucle externo, la temperatura se reduce multiplicativamente según factor α. Es decir: T i+1 = T i α El factorαse calcula tal que, si empezamos en la temperaturat init, después desan_numouteriterations, la temperatura sea T end. Por tanto: T end = T init α san_numouteriterations 1 α = ( Tend T init ) 1 san_numouteriterations 1 La solución inicial será aquella en la que cada demanda se encamina por el camino más corto en km. 5.3. Ayudas para la realización del algoritmo Se sugiere que el alumno utilice como plantilla el código que se incluye en Aula Virtual. En ese código: Se incluyen las líneas que recogen los parámetros de entrada del algoritmo. Se incluyen las líneas que calculan la lista de caminos admisibles de la demanda. Nótese que para cada demanda, el número máximo de caminos admisibles es k. Si k es un valor alto y/o la topología de red es pequeña, puede haber demandas con menos de k caminos admisibles (al no existir k caminos sin ciclos distintos para esa demanda). Se incluye la función computenetcongestion que calcula la congestión de red, a partir de una solución dada. La solución se codifica con un vector de enteros pathid_d, con un elemento para cada demanda. Para una demanda d, el valor asociado indica el identificador p del camino que cursa el 100% del tráfico de esa demanda. Ese identificador apunta a la lista de caminos admisibles. Use la clase java.util.random para generar números aleatorios. Se recuerda al alumno que antes de añadir las rutas al objeto netplan con la solución final, debe eliminar todas las rutas que el objeto pudiera tener anteriormente, p.e. llamando al método removeallroutes. 5.4. Análisis: ajuste de los parámetros del algoritmo El algoritmo SAN a desarrollar depende de varios parámetros, como el número de iteraciones en el bucle externo y en el interno. Realizando varias ejecuciones con distintos parámetros, podremos llegar a soluciones distintas. El alumno puede observar esto p.e. ejecutando el algoritmo sobre la red NSFNET, utilizando el fichero NSFNet_N14_E42_complete.n2p, que incluye la topología y el tráfico. Se recomienda que, cuando quiera realizar ejecuciones de prueba con el objetivo de analizar la evolución del algoritmo, imprima en cada iteración del bucle interno. 4

La congestión de la solución actual al finalizar el bucle La mejor congestión encontrada hasta el momento Si se acepta la solución vecina. En distintas ejecuciones podrá observar como: A menudo sucede que las soluciones vecinas probadas no varían la congestión de red, y son aceptadas. Esto es debido a que le congestión es la utilización del enlace más cargado. Si se varía el camino de una demanda de tal manera que no se ven afectados los enlaces cuello de botella, la congestión de red no varía, y el coste de la solución actual y la vecina son la misma. A temperaturas más altas, se observará en general que se aceptan prácticamente todas las soluciones vecinas. Sólo a temperaturas más bajas esto no se cumple. Valores mayores de k incrementan el espacio de soluciones, y provocan que las soluciones encontradas, si no se deja el algoritmo ejecutarse durante el tiempo suficiente, sean a menudo peores que las encontradas para menores valores de k. El motivo es que el algoritmo puede perderse iterando continuamente por soluciones claramente malas, sin inteligencia suficiente (debido a su comportamiento muy aleatorio) para corregir esta situación. 5.5. Posibles variaciones (opcional) Se sugieren algunas variaciones al algoritmo que pueden ser intentadas: Fijar un parámetro de entrada san_maxnuminneriterationswithoutimprovement y que el bucle interno se detenga sólo cuando hayan pasado ese número de iteraciones consecutivas sin que la solución mejore. Cada 10 iteraciones del bucle externo, el bucle interno empezará como solución inicial, con la mejor solución encontrada hasta el momento. De esta manera se intensifica la búsqueda en las soluciones que parecen más prometedoras. Variar la función objetivo del problema, se tal manera que sea la media de la utilización de los 5 5