• No se han encontrado resultados

Metaheuristicas y Redes Neuronales (1)

N/A
N/A
Protected

Academic year: 2021

Share "Metaheuristicas y Redes Neuronales (1)"

Copied!
118
0
0

Texto completo

(1)

Metaheurísticas y Redes Neuronales

Metaheurísticas y Redes Neuronales

(2)
(3)

Contenido

Contenido 1.

1. Introducción Introducción ... ... 55 1.1

1.1 Conceptos Conceptos básicos básicos de de grafos grafos y y redes redes ... ... 55 1.2

1.2 Grafos Grafos y y redes redes con con Mathematica Mathematica ... ... 1111 2.

2. Los Los métodos métodos heurísticos heurísticos ... ... 1212 2.1

2.1 Definición Definición y y propiedades propiedades de de los los métodos métodos heurísticos heurísticos ... ... 1212 2.2

2.2 Tipos Tipos de de métodos métodos heurísticos heurísticos ... ... 1515 2.2.1

2.2.1 Métodos de DescomposiciónMétodos de Descomposición ... 15 ... 15 2.2.2

2.2.2 Métodos InductivosMétodos Inductivos ... ... 1... 1 66 2.2.3

2.2.3 Métodos de ReducciónMétodos de Reducción ... ... 1... 1 66 2.2.4

2.2.4 Métodos ConstructivosMétodos Constructivos ... 16... 16 2.2.5

2.2.5 Métodos de Búsqueda LocalMétodos de Búsqueda Local ... 16 ... 16 2.2.6

2.2.6 Métodos combinadosMétodos combinados ... ... 1... 1 66 2.2.7

2.2.7 Métodos metaheurísticosMétodos metaheurísticos ... 16 ... 16 2.3

2.3 Problemas Problemas Estructurados Estructurados ... ... 1717 2.3.1

2.3.1 Problema de la Mochila (Knapsack Problem)Problema de la Mochila (Knapsack Problem) ... ... ... 1818 2.3.2

2.3.2 Los problemas de Recubrimiento, empaquetamiento y particionamiento deLos problemas de Recubrimiento, empaquetamiento y particionamiento de Conjuntos

Conjuntos ... ... 1... 1 99 2.3.3

2.3.3 Problema del Agente Viajero (Traveling Salesman Problem)Problema del Agente Viajero (Traveling Salesman Problem) ... 23 ... 23 2.3.4

2.3.4 El Problema de la Asignación CuadráticaEl Problema de la Asignación Cuadrática ... ... 2... 2 55 2.3.5

2.3.5 Problema de Asignación GeneralizadaProblema de Asignación Generalizada ... 26 ... 26 2.3.6

2.3.6 Problema de la Ordenación LinealProblema de la Ordenación Lineal ... 27 ... 27 2.4

2.4 Medidas Medidas de de Calidad Calidad de de un un Algoritmo Algoritmo ... ... 2828 2.4.1

2.4.1 Comparación con la solución óptimaComparación con la solución óptima ... ... 2... 2 88 2.4.2

2.4.2 Comparación con una cotaComparación con una cota ... ... 2... 2 88 2.4.3

2.4.3 Comparación con un método exacto truncadoComparación con un método exacto truncado ... 29 ... 29 2.4.4

2.4.4 Comparación con otros heurísticosComparación con otros heurísticos... 2... 299 2.4.5

2.4.5 Análisis del peor caso (worst case analisys)Análisis del peor caso (worst case analisys) ... 29 ... 29 3.

3. Métodos Métodos Constructivos Constructivos ... ... 3030 3.1

3.1 Heurísticos Heurísticos del del Vecino Vecino más más Cercano Cercano ... ... 3030 3.2

3.2 Heurísticos Heurísticos de de Inserción Inserción ... ... 3131 3.3

3.3 Heurísticos Heurísticos Basados Basados en en Árboles Árboles Generadores Generadores ... ... 3333 3.4

3.4 Heurísticos Heurísticos Basados Basados en en Ahorros Ahorros ... ... 3737 4.

4. Métodos Métodos de de Búsqueda Búsqueda Local Local ... ... 4040 4.1

4.1 Procedimientos Procedimientos de de 2 2 intercambio intercambio ... ... 4141 4.2

(4)

4.3

4.3 Algoritmo Algoritmo de de Lin Lin y y Kernighan Kernighan ... ... 4545 5.

5. Métodos Métodos Combinados Combinados ... ... 4949 5.1

5.1 Procedimientos Procedimientos Aleatorizados Aleatorizados ... ... 4949 5.2

5.2 Métodos Métodos Multi Multi - - Arranque Arranque ... ... 5151 6.

6. Método Método GRASP GRASP (Greedy (Greedy Randomized Randomized Adaptive Adaptive Search Search Procedures) Procedures) ... ... 5353 6.1

6.1 Rencadenamiento Rencadenamiento de de Trayectorias Trayectorias ... ... 5555 6.2

6.2 Búsqueda Búsqueda en en Vecindades Vecindades Variables Variables ... ... 5656 6.3

6.3 Resolución Resolución de de un un caso: caso: implementación implementación GRASP GRASP en en FS-scheduling: FS-scheduling: ... ... 5757 7.

7. Búsqueda Búsqueda Tabú Tabú ... ... 6363 7.1

7.1 Descripción Descripción del del método método de de búsqueda búsqueda tabú tabú ... ... 6363 7.2

7.2 Resolución Resolución de de un un caso: caso: implementación implementación de de Tabu Tabu Search Search para para resolver resolver el el TSP: TSP: ... ... 6767 7.2.1

7.2.1 Introducción:Introducción: ... ... ... 6767 7.2.2

7.2.2 AlgoritmoAlgoritmo ... 67 ... 67 7.2.3

7.2.3 Resultados numéricosResultados numéricos ... 68... 68 8.

8. Recocido Recocido Simulado Simulado ... ... 7373 8.1

8.1 Origen: Origen: ... ... 7373 8.2

8.2 El El algoritmo algoritmo SA SA ... ... 7474 8.3

8.3 Ejemplos Ejemplos de de aplicación aplicación ... ... 7676 9.

9. Métodos Métodos Evolutivos Evolutivos ... ... 7777 9.1

9.1 Algoritmos Algoritmos Genéticos Genéticos ... ... 7777 9.2

9.2 Búsqueda Búsqueda Dispersa Dispersa (Scatter (Scatter Search) Search) ... ... 8383 10.

10. Métodos Métodos de de evolución evolución diferencial diferencial ... ... 9191 10.1

10.1 Introducción Introducción ... ... 9191 10.2

10.2 Optimización Optimización combinatoria combinatoria DE DE basada basada en en permutaciones. permutaciones. ... ... 9292 10.3

10.3 Adecuación Adecuación de de la la DE DE como como un un optimizador optimizador combinatorio... combinatorio... 9292 10.4

10.4 DE DE canónica canónica para para problemas problemas de de optimización optimización contínuos. contínuos. ... ... 9292 10.5

10.5 DE DE para prpara problemas oblemas de de optimización optimización combinatorios combinatorios basados basados en en permutaciones. permutaciones. ... ... 9696 10.6

10.6 Enfoque dEnfoque de la e la indexación dindexación de la e la posición relatiposición relativa o va o el enfel enfoque Knapsack. oque Knapsack. ... ... 9797 10.6.1

10.6.1 EjemplosEjemplos ... ... 9... 9 88 11.

11. Otras Otras metaheurísticas: metaheurísticas: Harmony Harmony Search Search y y variantes variantes ... ... 108108 11.1

11.1 Introducción Introducción ... ... 108108 11.2

11.2 Descripción Descripción del del Proceso Proceso de de Optimización Optimización ... ... 109109 11.3

11.3 Pseudocódigo Pseudocódigo de de la la Metaheurística Metaheurística Harmony Harmony Search Search ... ... 110110 11.4

11.4 Variantes Variantes de de la la Metaheurística Metaheurística Harmony Harmony Search Search ... ... 111111 11.4.1

11.4.1 Improved Improved Harmony Harmony Search Search ... ... 111111 11.4.2

11.4.2 Global Global Best Best Harmony Harmony Search Search ... ... 111111 12.

(5)

22.1

22.1 Introducción Introducción ... ... 111111 22.2

22.2 Modelos Modelos de de neuronas neuronas ... ... 112112 22.3

22.3 Arquitecturas Arquitecturas ... ... 113113 22.4

22.4 Reglas Reglas de de aprendizajeaprendizaje... ... 114114 22.5

22.5 Redes Redes neuronales neuronales artificiales y artificiales y los los problemas problemas de de optimización optimización combinatoria combinatoria ... ... 115115 22.6

(6)

1.

1.

Introducción

Introducción

El propósito de este curso es introducir los principales métodos heurísticos y metaheurísticos El propósito de este curso es introducir los principales métodos heurísticos y metaheurísticos para resolver problemas de optimización combinatoria, y como analizar su eficiencia. Desde el para resolver problemas de optimización combinatoria, y como analizar su eficiencia. Desde el punto de vista práctico esto es muy interesante para la industria, la logística, el transporte, los punto de vista práctico esto es muy interesante para la industria, la logística, el transporte, los servicios, etc., basta decir que muchos de los problemas que encontramos en la literatura de la servicios, etc., basta decir que muchos de los problemas que encontramos en la literatura de la optimización combinatoria tienen sus orígenes en muchos problemas de ingeniería y optimización combinatoria tienen sus orígenes en muchos problemas de ingeniería y administración reales, por ejemplo diseño de las de hospitales, diseño de chips y circuitos administración reales, por ejemplo diseño de las de hospitales, diseño de chips y circuitos electrónicos, asignación de tareas, ruteo, diseño de líneas de ensamblaje, secuenciación de electrónicos, asignación de tareas, ruteo, diseño de líneas de ensamblaje, secuenciación de órdenes de producción, asignación de personal y determinación de turnos, planificación de órdenes de producción, asignación de personal y determinación de turnos, planificación de horarios, etc.. Todos estos problemas tienen sus abstracciones en la literatura científica, tales horarios, etc.. Todos estos problemas tienen sus abstracciones en la literatura científica, tales como:

como: Knapsack problemKnapsack problem,, set covering problemset covering problem,, set partitioning problemset partitioning problem,,  permutation permutation assignment 

assignment ,, travel salesman problemtravel salesman problem,, vehiche routing problemvehiche routing problem,,  flow  flow shop shop problemproblem,,  job  job shopshop  problem

 problem,, timetabling problemtimetabling problem, etc. A lo largo del texto consideraremos algunos de estos, etc. A lo largo del texto consideraremos algunos de estos problemas para desarrollar e implementar los algor

problemas para desarrollar e implementar los algoritmos propuestos.itmos propuestos.

La mayoría de problemas de optimización combinatoria pueden ser representados La mayoría de problemas de optimización combinatoria pueden ser representados eficientemente a través de grafos y redes, por lo que a continuación se revisan algunos eficientemente a través de grafos y redes, por lo que a continuación se revisan algunos aspectos relacionados con estos temas:

aspectos relacionados con estos temas:

1.1

1.1

C

C once

oncept

ptos

os bá

báss icos

icos de

de gg rafo

rafos

s y

y rede

redess

Grafos Dirigidos:

Grafos Dirigidos: Un grafo dirigido (o dígrafo)Un grafo dirigido (o dígrafo)

  ,,

  

 consiste en un conjunto consiste en un conjunto



 de nodos de nodos y un conjunto

y un conjunto

  

 de arcos cuyos  de arcos cuyos elementos son pares ordenados de nodos.elementos son pares ordenados de nodos.

Red Dirigida:

Red Dirigida: Una red dirigida es un grafo dirigido cuyos nodos o arcos tienen asociadosUna red dirigida es un grafo dirigido cuyos nodos o arcos tienen asociados valores numéricos tales como c

valores numéricos tales como costos, capacidades, ofertas, dostos, capacidades, ofertas, demandas, tiempo etc. emandas, tiempo etc. En generalEn general se suele representar el número de nodos con la letra

se suele representar el número de nodos con la letra



 y al número de arcos con y al número de arcos con



.. Grafos no Dirigidos

Grafos no Dirigidos: Un grafo no dirigido, o simplemente grafo,: Un grafo no dirigido, o simplemente grafo,

  

  ,,

  consiste en un  consiste en un conjunto

conjunto



 de nodos y un conjunto de nodos y un conjunto

  

 de aristas cuyos elementos son pares no ordenados de de aristas cuyos elementos son pares no ordenados de nodos distintos. En un grafo nos podemos referir a la arista que une a los nodos i-j, como nodos distintos. En un grafo nos podemos referir a la arista que une a los nodos i-j, como

,

,

o como

o como

,

,

. . Un grafo no dirigido permite Un grafo no dirigido permite el flujo en ambas direccionesel flujo en ambas direcciones, es decir desde , es decir desde elel nodo

(7)

Colas y Cabezas:

Colas y Cabezas: Un arco dirigidoUn arco dirigido

,

,

 tiene dos puntos de finalización tiene dos puntos de finalización

    

. . Nos Nos referiremosreferiremos al nodo

al nodo



 como la cola del arco y al nodo como la cola del arco y al nodo

  

 como su  como su cabeza. cabeza. Diremos que Diremos que al arcoal arco

,

,

  emana  emana del nodo

del nodo

  

 y termina en el nodo y termina en el nodo

  

. El arco. El arco

,

,

es incidente es incidente a los nodosa los nodos

    

.. El arco

El arco

,

,

es un es un arco saliente arco saliente del nododel nodo



 y un arco entrante al nodo y un arco entrante al nodo

  

. . Siempre que Siempre que el arcel arcoo

,

,

pertenezca al conjunto A, pertenezca al conjunto A, diremos que el diremos que el nodonodo

  

 es adyacente al nodo es adyacente al nodo



.. Grados:

Grados: El grado interno de un nodo es el número de arcos que llegan al nodo y su gradoEl grado interno de un nodo es el número de arcos que llegan al nodo y su grado externo es el número de arcos que salen del nodo.

externo es el número de arcos que salen del nodo. Al sumar el grado interno de un nodo conAl sumar el grado interno de un nodo con su grado externo se obtiene el grado del nodo.

su grado externo se obtiene el grado del nodo. Se observa que la suma de los grado interno deSe observa que la suma de los grado interno de todos los nodos es igual a la suma de todos los grados externos de todos los nodos y ambos todos los nodos es igual a la suma de todos los grados externos de todos los nodos y ambos son iguales al número de arcos

son iguales al número de arcos



 en la red. en la red. Lista de Adyacencia:

Lista de Adyacencia: La lista de arcos de adyacenciaLa lista de arcos de adyacencia

 

 

 de un nodo i es el conjunto de arcos de un nodo i es el conjunto de arcos que emanan del nodo i, esto es:

que emanan del nodo i, esto es:

    

  ,, ∈ 

 ∈ :: ∈ 

 ∈ 

SUBGRAFO:

SUBGRAFO: Un grafoUn grafo

’  ’,’

’  ’,’

 es un subgrafo de es un subgrafo de

  

  ,,

 si si

’ ⊆ 

’ ⊆ 

 y y

 ’ ⊆ 

 ’ ⊆

. Diremos. Diremos que

que

’  ’,’

’  ’,’

 es el subgrafo de es el subgrafo de



 inducido por inducido por

’’

 si si

 ’ ’

 contiene cada arco de contiene cada arco de

  

 con ambos con ambos puntos de finalización en

puntos de finalización en

’’

.. Un grafo

Un grafo

’  ’,’

’  ’,’

 es un subgrafo de expansión de es un subgrafo de expansión de

  

  ,,

 si si

’  

’  

 y y

 ’  ’ ⊆ ⊆ 

.. CAMINO:

CAMINO:  Un camino (o denominado también camino no dirigido) en un grafo dirigido  Un camino (o denominado también camino no dirigido) en un grafo dirigido

  

  ,,

 es un subgrafo de es un subgrafo de



 que satisface la propiedad que para todo que satisface la propiedad que para todo



, donde, donde

11







  

11

, , se se tiene tiene que:que:

(8)

CAMINO DIRIGIDO: Un camino dirigido es una versión orientada de un camino, en el sentido de que para dos nodos consecutivos ik e ik+1 en el camino, se tiene que

(

,

1

)

 k  k  i

i A.

Por ejemplo en el siguiente grafo un camino dirigido del nodo 1 al nodo 3 es: 1-2-3-4-5-2-3

RUTA: Una ruta es un camino sin repetición de nodos. Es posible particionar los arcos de un camino en dos grupos: los arcos que van hacia delante y los arcos que van hacia atrás. Un arco

)

,

(

i

j

 en el camino es un arco dirigido hacia delante si la ruta visita al nodo i antes de visitar al nodo j, de ser contrario es un arco que está dirigido hacia atrás.

RUTA DIRIGIDA: Una ruta dirigida es un camino dirigido en el que no se repiten nodos. Dicho de otra forma en una ruta dirigida no existen arcos dirigidos hacia atrás. Resulta fácil almacenar una ruta en una computadora definiendo un índice pred(j), para todo nodo j en la ruta.

CICLO: Un ciclo es una ruta i1 – i2- ...  –ir, junto con el arco

(

i1

,

ir 

)

o el arco

(

ir 

,

i1

)

. Nos

referiremos a un ciclo empleando la notación i1 – i2- ...  –ir –ir. De manera análoga a las rutas es posible definir arcos dirigidos hacia delante o hacia atrás.

(9)

GRAFO ACÍCLICO: Un grafo es acíclico si no contiene ciclos dirigidos.

CONECTIVIDAD: Dos nodos

,

  están conectados si el grafo contiene por lo menos una ruta desde el nodo

 al nodo

 

. Un grafo es conectado si cada par de nodos están conectados. De otra forma el grafo es desconectado. Nos referimos a los subgrafos conectados de una red como sus componentes.

CONECTIVIDAD FUERTE: Un grafo conectado está fuertemente conectado si contiene por lo menos una ruta dirigida desde cada nodo hacia todos los demás nodos.

ÁRBOL: Un árbol es un grafo conectado acíclico.

PROPIEDADES DE UN ÁRBOL:

 Un árbol de n nodos contiene exactamente n-1 arcos.

 Un árbol contiene por lo menos dos nodos hojas, es decir con grado 1.

 Cada pareja de nodos de un árbol están conectados por una ruta única. BOSQUE:

Un bosque es un grafo acíclico. De manera alternativa un bosque es una colección de árboles. SUBÁRBOL: Un subárbol es un subgrafo conectado de un árbol.

(10)

ÁRBOLES DE EXPANSIÓN: Un árbol

 es un árbol de expansión de

si

es un subgrafo de expansión. Cada árbol de expansión de un grafo conectado de n nodos, tienen n-1 arcos.

DEFINICIONES PARA REDES NO DIRIGIDAS:

Las definiciones para redes dirigidas se pueden trasladar hacia las redes no dirigidas. Un arco no dirigido

,

 tiene dos puntos de finalización

 y

 

, pero la cabeza y la cola del arco no están definidos.

Si la red contiene al arco

,

, el nodo

 es adyacente al nodo

 

  y el nodo

 

 es adyacente al nodo

. Las listas de nodos y arcos de adyacencia están definidas de manera similar, con la diferencia de que el arco

,

aparece en

 

 y también en

 

. En consecuencia se tiene

que  A i m

 N 

i

(

)

2

 .

El grado de un nodo es el número de nodos adyacentes al nodo

. Los demás conceptos como caminos, rutas, ciclos, cortaduras y árboles tienen las mismas definiciones para redes no dirigidas, pero no existen diferencias entre rutas y rutas dirigidas, ciclos y ciclos dirigidos, y así sucesivamente.

REPRESENTACIONES DE REDES: La resolución de problemas de redes no solo depende de los algoritmos empleados, sino también de la forma de representar la red en la computadora y el esquema de almacenamiento empleado para guardar y actualizar los resultados que se vayan obteniendo.

En la representación de una red se necesitan dos clases de información:

 La topología de la red, es decir la estructura de los nodos y arcos.

 Datos de interés como costos, capacidades, ofertas, demandas asociadas con los nodos y los arcos.

A continuación se presentan algunas representaciones.

MATRIZ DE INCIDENCIA DE NODOS Y ARCOS: Esta representación almacena la red como una matriz

de

 ×

, que contiene una fila por cada nodo, y una columna por cada arco. La

(11)

columna correspondiente al arco

,

 tiene solo dos elementos diferentes de cero, posee un +1 en la fila correspondiente al nodo

y un –1 en la fila correspondiente al nodo

 

.

Esta matriz tiene una estructura particular. De los

 ×

 elementos de la matriz solo

2

 son diferentes de cero, las que toman los valores de +1 y  –1 en cada columna. El número de elementos en la fila

-ésima iguales a +1 representa el grado exterior del nodo

 y el número de elementos en tal fila iguales a –1 representa el grado interior del nodo

.

Debido a que la matriz de incidencia de nodos y arcos contiene pocos elementos diferentes de cero en relación al número total de elementos, esta representación requiere del uso de matrices dispersas o de lo contrario origina algoritmos poco eficientes.

MATRIZ DE ADYACENCIA DE NODO A NODO: Esta representación almacena la red como una matriz

  ℎ



 de

 ×

. La matriz posee una fila y una columna por cada nodo y la i-ésima entrada



 es igual 1 si el arco

,

pertenece al conjunto

 

, y es igual a cero en otro caso. Si se pretende almacenar los costos y las capacidades de los arcos se pueden utilizar dos matrices adicionales de

 ×

 ,

 y

.

De los n2 elementos que posee la matriz, solo m son diferentes de cero, cuyo número se debe al número de arcos de la red. Por lo tanto esta representación es eficiente si la red es suficientemente densa, para redes esparcidas esta representación desperdicia mucho espacio en la matriz.

La manipulación de esta matriz es muy fácil. Para determinar el costo o la capacidad del arco

,

basta con ubicar a los elementos situados en la posición



  de las matrices

y

respectivamente. Se puede conocer qué arcos emanan del nodo

 observando los elementos iguales a 1 en la fila

-ésima de la matriz

. De manera análoga se pueden obtener los arcos que llegan al nodo

 

 examinando los elementos de la columna

 

de la matriz

, si elemento de la fila

-ésima es igual a 1, entonces el arco

,

pertenece a la red.

El tiempo requerido para determinar los arcos que llegan y salen de un nodo es proporcional a n. En conclusión para redes densas se podría permitir emplear esta representación, pero para redes dispersas contribuiría al mal desenvolvimiento del algoritmo empleado.

LISTAS DE ADYACENCIA: Anteriormente se definió a las listas de arcos de Adyacencia

 

como el conjunto de arcos que emanan del nodo

 y las listas de los nodos de adyacencia como el conjunto de nodos

 

 tal que el arco

,

pertenezca al conjunto

 

.

Esta representación almacena la lista de adyacencia de cada nodo en la estructura de datos llamada lista enlazada en una dirección. Una lista enlazada es una colección de celdas, donde cada celda puede contener uno o más campos.

La lista de adyacencia del nodo i será representada por una lista enlazada en una dirección, la que tendrá un número de celdas igual a la cardinalidad del conjunto

 

, y cada celda corresponde a un arco

,

perteneciente al conjunto

 

. El número de campos de la celda que hace referencia al arco

,

, será consistente con la cantidad de información que se desee

(12)

almacenar. Un campo almacenará al nodo

 

 y los demás pueden ser utilizados para guardar el costo

ij

c

, los límites de flujo del arco

ij

 y

ij

u

.

1.2

G rafos y redes con Mathematica

Mathematica Wolfram incluye grandes capacidades para modelado y visualización de grafos y redes. Esta plataforma contiene mecanismos simbólicos prácticos para crear, etiquetar y dar estilo a los grafos, desde pequeños y diagramáticos a largos y complejos. Todas las funciones están integradas completamente con la programabilidad, gráficos e interfaz dinámica.

 En el documento:  pasos para instalar MATHEMATICA.docx   se encuentran las instrucciones para descargar el programa y la licencia.

 En los archivos sesion1.nb, sesion2.nb y sesion3.nb  se encuentra el material introductorio al uso y programación con Mathematica.

(13)

2.

Los métodos heurísticos

Los métodos desarrollados para resolver problemas de optimización, que son abordados en este curso, reciben el nombre de algoritmos heurísticos o metaheurísticos. Este término se origina etimológicamente en la palabra griega heuriskein que significa encontrar  o descubrir  y se usa en el ámbito de la optimización para describir una clase de algoritmos aproximados de resolución.

Aunque estos algoritmos (heurísticos o Metaheurísticos) son aplicables a la resolución de problemas de optimización contínuos o discretos, en particular en este curso se utilizan en el contexto de la resolución de problemas de optimización combinatoria, es decir en problemas de optimización sobre un espacio discreto cuyo conjunto de decisiones factibles es particularmente de gran cardinalidad.

 2.1

Definici ón y propiedades de los métodos heurís ticos

En el lenguaje común las personas utilizan el término “optimizar”  en el sentido de mejorar;

pero, en el lenguaje de las matemáticas la optimización es el proceso de buscar la mejor solución posible para un determinado problema. En un  problema de optimización  existen diferentes soluciones, que conforman el conjunto de decisiones factibles, y una función que mide la calidad de cada una de esas soluciones, denominada función objetivo o criterio, la cual nos permite discriminar entre ellas, obviamente la meta  es encontrar la solución de mejor calidad, que se denomina la solución óptima del problema. De forma más precisa, un problema de optimización consiste en encontrar los valores que toman las variables de decisión para los que una determinada función objetivo alcanza su valor máximo o mínimo. El valor de las variables en ocasiones está sujeto a unas restricciones, que deben cumplirse de manera estricta (dura) o de manera suave.

Algunos tipos de problemas de optimización son, desde un punto de vista matemático, relativamente fáciles de resolver, este es el caso, por ejemplo, de los  problemas de  programación lineal , en los que tanto la función objetivo como las restricciones son expresiones lineales y las variables pueden tomar valores dentro del conjunto de los números reales. Para estos problemas existen algoritmos que permiten resolverlos de una manera eficiente, como con el método Simplex, o los métodos de punto interior; sin embargo, la mayoría de problemas de optimización son muy difíciles de resolver. Es más, casi todos los problemas reales en la logística, la industria y la ciencia que podemos encontrar en la práctica entran dentro de esta categoría. A partir de ahí surge la necesidad de tener métodos aproximados, que a pesar que no permiten determinar la solución óptima de estos problemas, por lo menos nos proporcionan buenas soluciones, cercanas a la solución óptima.

La idea intuitiva de los problemas “difíciles de resolver” queda reflejada en el término

matemático NP-duro (NP-hard ) proveniente de la teoría de la complejidad computacional. En términos resumidos podemos decir que un problema de optimización difícil es aquel para el que no podemos garantizar el encontrar la mejor solución posible en un tiempo razonable. La existencia de una gran cantidad y variedad de problemas reales que pertenecen a esta clase NP-hard impulsó el desarrollo de procedimientos eficientes para encontrar buenas soluciones

(14)

aunque no fueran óptimas. Estos métodos, en los que la rapidez del proceso es tan importante como la calidad de la solución obtenida, se denominan heurísticos o aproximados. En (1) se recogen algunas definiciones de algoritmo heurístico, entre las que se destaca la siguiente:

“Un método heurístico es un procedimiento simple, a menudo basado en el sentido común, que se supone ofrecerá una buena solución, aunque no necesariamente la óptima, a problemas difíciles, de un modo fácil y rápido.”

En ese sentido, al contrario de los métodos exactos  que proporcionan la solución óptima al problema, los métodos heurísticos se limitan a proporcionar una buena solución. Lo determinante es que el tiempo invertido por un método exacto para encontrar la solución óptima de un problema difícil, en general es muy superior (o incluso prácticamente infinito) en comparación con el tiempo que se requiere hallar una buena solución por el método heurístico.

Por su importancia en el campo de las aplicaciones en la industria, la logística y el transporte, en este curso consideraremos los llamados problemas de Optimización Combinatoria. En estos problemas el objetivo es encontrar el máximo (o el mínimo) de una determinada función sobre un conjunto finito de soluciones factibles que representaremos por S. No se exige ninguna condición o propiedad sobre la función objetivo (puede ser lineal, no lineal, convexa, no convexa, etc.) ni sobre la estructura del conjunto S, salvo su carácter finito. Es importante notar que dada la finitud de S, las variables de decisión son discretas, ya que su dominio queda restringido a un conjunto finito de valores. El problema es que a pesar de ser finito, el número de elementos de S es muy elevado, haciendo impracticable la exploración exhaustiva de todas sus soluciones para determinar el óptimo.

Aunque hemos mencionado que la razón de desarrollar y utilizar métodos heurísticos es la resolución de problemas difíciles de tipo NP-duros, existen otras razones por las que se necesita aplicar métodos heurísticos, entre las que se pueden resaltar:

 El problema a tratar es de una naturaleza tal que no se conoce ningún método exacto para su resolución.

 Aunque existe un método exacto para resolver el problema, su uso es computacionalmente muy costoso.

 Los métodos heurísticos son más flexibles que los métodos exactos, permitiendo, por ejemplo, la incorporación de condiciones de difícil modelización.

 Se puede requerir la utilización de un método heurístico como parte de un procedimiento global para encontrar el óptimo de un problema, sobre todo en las siguientes situaciones:

(15)

- El método heurístico participa en un paso intermedio del procedimiento, como por ejemplo las reglas de selección de la variable a entrar en la base en el método Simplex.

Una característica determinante de los algoritmos heurísticos es que estos dependen en gran medida del problema concreto para el que se han diseñado, es decir el algoritmo diseñado para un problema no es directamente aplicable a otro problema de optimización. Esta característica los diferencia de los métodos de resolución de propósito general, como por ejemplo los algoritmos exactos de Branch & Bound, para los cuales existe un procedimiento conciso y preestablecido, independiente del problema abordado.

Así, en los métodos heurísticos las técnicas e ideas aplicadas a la resolución de un problema son específicas y aplicables solo a éste y aunque, en general, pueden ser trasladadas a otros problemas, tienen que particularizarse y adaptarse en cada caso. Así pues, es necesario referirse a un problema concreto para estudiar con detalle los procedimientos heurísticos, por lo que, para su estudio, hay que considerar un problema de optimización combinatorio específico, y a partir de ahí describir el desarrollo de los métodos. Existen muchos problemas que se prestan, por ser fáciles de entender pero difíciles de resolver, para esto. En general se puede utilizar el Problema del Agente Viajero, que posee buenas propiedades combinatorias propiedades que lo hacen especialmente indicado. Dicho problema puede enunciarse del siguiente modo:

“Un agente viajero ha de visitar n ciudades, comenzando y

 finalizando en su propia ciudad. Conociendo el costo de ir de cada ciudad a otra, determinar el recorrido de costomínimo.” 

Entre las buenas características que posee el Problema del Agente Viajero que lo hacen ideal para el estudio de las técnicas heurísticas se pueden nombrar las siguientes:

 Resulta muy intuitivo y con un enunciado muy fácil de comprender.

 Es extremadamente difícil de resolver por lo que resulta un desafío constante para los investigadores y científicos.

 Es uno de los que más interés ha suscitado en Optimización Combinatoria y sobre el que se ha publicado abundante material.

 Sus soluciones admiten una doble interpretación: mediante grafos y mediante permutaciones, dos herramientas de representación muy habituales en problemas combinatorios, por lo que las ideas y estrategias empleadas son, en gran medida, generalizables a otros problemas.

 La gran mayoría de las técnicas que han ido apareciendo en el área de la Optimización Combinatoria han sido probadas en él, puesto que su resolución es de gran complejidad EJERCICIO:

(16)

a. Cuántas soluciones factibles tiene este problema.

b. Considere ahora un problema con cuatro nodos, la base desde donde debe partir el agente es la ciudad 1, las distancias inter-elemento están dadas en la siguiente tabla:



1 2 3 4

1 - 12 14 42

2 12 - 9 13

3 14 9 - 15

4 42 13 15

-- Utilizando la heurística del vecino más cercano (que funciona de la siguiente manera: en cada paso el siguiente nodo a visitar es el más cercano a la ubicación

actual) determine una “buena” solución a este problema.

- Explore exhaustivamente todas las soluciones posibles y determine cuál es el tour óptimo para visitar todas las ciudades.

- Cuál es el GAP relativo (diferencia entre la solución aproximada y la solución óptima). ¿Considera que la heurística del vecino más cercando le proporcionó una buena solución?

c. Cuánto tiempo se demoraría en encontrar una solución óptima por el procedimiento de exploración exhaustiva para un problema que tiene 20 nodos, 50 nodos, 70 nodos. Tomar en cuenta que una computadora promedio actualmente, tiene un rendimiento de unos 15 teraFLOPS (15×1012 flops1).

d. Implemente en la computadora un algoritmo para la búsqueda exhaustiva de la solución óptima del TSP.

e. Implemente en una computadora el algoritmo del vecino más cercano para determinar una solución al TSP.

Existen también otros problemas de optimización combinatoria que resultan también atractivos para el estudio de las técnicas heurísticas, estas técnicas también nos ayudaran a explicar e ilustrar algunas de las técnicas así como a plantear ejercicios para el estudiante, entre ellos tenemos: el problema de la mochila (Knapsack Problem), el problema de planificación de un taller (Job Shop Problem), el problema de ruteo de vehículos (Vehicle Routing Problem), el problema de asignación cuadrática y otros.

2.2

Tipos de métodos heurísticos

Existen muchos métodos heurísticos de naturaleza muy diferente, por lo que es complicado dar una clasificación completa. Además, muchos de ellos han sido diseñados para un problema específico sin posibilidad de generalización o aplicación a otros problemas similares. El siguiente esquema trata de dar unas categorías amplias, no excluyentes, en donde ubicar a los heurísticos más conocidos:

2.2.1 Métodos de Descomposición

En estos métodos heurísticos el problema original se descompone en subproblemas más sencillos de resolver, teniendo en cuenta, aunque sea de manera general, que estos pertenecen al mismo problema.

1FLOPS es el acrónimo de FLoating-point Operations Per Seconds, es decir el número de operaciones de punto flotante por segundo.

(17)

2.2.2 Métodos Inductivos

La idea de estos métodos es generalizar de versiones pequeñas o más sencillas al caso completo. Propiedades o técnicas identificadas en estos casos más fáciles de analizar pueden ser aplicadas al problema completo.

2.2.3 Métodos de Reducción

Estos métodos consisten en identificar propiedades que cumplen mayoritariamente las buenas soluciones e introducirlas como restricciones del problema. El objeto es restringir el espacio de soluciones, encogiendo el espacio de búsqueda de las soluciones y simplificando el problema. El riesgo obvio es dejar fuera buenas soluciones e incluso la óptima del problema original.

2.2.4 Métodos Constructivos

Consisten en construir literalmente paso a paso una solución del problema, incorporando un nuevo elemento a la solución en cada iteración. Usualmente son métodos deterministas. 2.2.5 Métodos de Búsqueda Local

A diferencia de los métodos anteriores, los procedimientos de búsqueda o mejora local  comienzan con una solución del problema y la mejoran progresivamente. El procedimiento realiza en cada paso un movimiento de una solución a otra con mejor valor. El método finaliza cuando, para una solución, no existe ninguna solución accesible que la mejore.

2.2.6 Métodos combinados

Si bien todos estos métodos han contribuido a ampliar nuestro conocimiento para la resolución de problemas reales, la integración de los métodos constructivos y los de búsqueda local constituyen la base de los procedimientos metaheurísticos. Por ello, estudiaremos en capítulos independientes los métodos constructivos y los métodos de búsqueda local, mientras que se harán menciones a lo largo del texto a cualquiera de los métodos de descomposición, inductivos o de reducción, pero no dedicaremos una sección específica a su estudio. Alternativamente, prestaremos especial atención a los métodos resultantes de combinar la construcción con la búsqueda local  y sus diferentes variantes, puesto que puede considerarse un punto de inicio en el desarrollo de los métodos metaheurísticos.

2.2.7 Métodos metaheurísticos

Existen una serie de métodos que se conocen bajo el nombre de Metaheurísticos, los cuales tienen el propósito de obtener mejores resultados que los alcanzados por los heurísticos tradicionales. El término metaheurístico fue introducido por Fred Glover en 1986. En este curso utilizaremos la acepción de heurísticos para referirnos a los métodos clásicos en contraposición a la de metaheurísticos que reservamos para los más recientes y complejos, con los que se obtienen mejores soluciones. En algunos textos podemos encontrar la expresión

“heurísticos modernos” refiriéndose a los Metaheurísticos. En (2) se introduce la siguiente definición:

(18)

“Los procedimientos Metaheurísticos son una clase de métodos

aproximados que están diseñados para resolver problemas difíciles de optimización combinatoria, en los que los heurísticos clásicos no son efectivos. Los Metaheurísticos proporcionan un marco general  para crear nuevos algoritmos híbridos combinando diferentes conceptos derivados de la inteligencia artificial, la evolución biológica

y los mecanismos estadísticos” 

De esta manera, los procedimientos Metaheurísticos se sitúan conceptualmente “por encima”

de los heurísticos en el sentido que guían el diseño de éstos. Así, al enfrentarnos a un problema de optimización, podemos escoger cualquiera de estos métodos para diseñar un algoritmo específico que lo resuelva aproximadamente.

En estos momentos existe un gran desarrollo y crecimiento de estos métodos. En este curso vamos a limitarnos a aquellos procedimientos relativamente consolidados y que han probado su eficacia sobre una colección significativa de problemas. Específicamente consideraremos en sendos capítulos la Búsqueda Tabú, el Recocido Simulado, los diferentes Métodos Evolutivos, incluyendo los Algoritmos Genéticos y la Búsqueda Dispersa (Scatter Search), la evolución diferencial, el rencadenamiento de trayectorias y los métodos GRASP.

Es importante notar que para la correcta compresión y asimilación de los métodos descritos, resulta indispensable su puesta en práctica, para lo cual el lector deberá implementar en un lenguaje de computación los algoritmos descritos y resolver algún problema de optimización combinatoria. Se recomendamos utilizar cualquier lenguaje de programación que permita controlar los detalles de implementación y que incluya la posibilidad de programación funcional y un buen manejo de estructuras de datos, en particular Wolfram Mathematica tiene esas características. La sección 2.3 incluye una colección de problemas de entre los que el lector puede escoger alguno e ir trabajando con él, aplicando los métodos descritos a lo largo de todo el texto.

Al resolver un problema de forma heurística debemos de medir la calidad de los resultados puesto que, como ya hemos mencionado, la optimalidad no está garantizada. En la sección  2.4 de este capítulo se recogen los principales métodos para medir la calidad y eficiencia de un algoritmo y poder determinar su valía frente a otros.

2.3

Problemas Estructurados

El objeto de esta sección no es únicamente dar una colección de ejemplos reales, sino el de establecer modelos que han sido muy estudiados. Así, al enfrentarse el lector a un problema dado, tratará de reconocer las estructuras especiales que aparecen en estos modelos y de esta forma se podrá aprovechar la extensa literatura y experiencia computacional al respecto. Además, no debemos olvidar la limitada, pero significativa, importancia práctica de estos modelos.

(19)

2.3.1 Problema de la Mochila (Knapsack Problem)

El problema de la mochila (KP por sus siglas en inglés), es un problema de optimización combinatoria muy referenciado en la literatura de investigación de operaciones, tanto por sus aplicaciones como por su estructura, que lo hace ideal para la evaluación del desempeño de métodos de búsqueda inteligente en problemas de optimización combinatoria.

El problema KP es un problema de optimización combinatoria de formulación sencilla, aunque su resolución es compleja, y que aparece, directamente, o como un subproblema, en una gran variedad de aplicaciones, incluyendo planificación de la producción, modelización financiera, muestreo estratificado, planificación de la capacidad de instalaciones, etc., como se observa en (3). Además de sus potenciales aplicaciones, el KP es de particular interés por sus características combinatorias y su estructura sencilla, que lo vuelve un problema ideal para el diseño de métodos de búsqueda inteligente. Con el tratamiento del problema KP se pueden evaluar las ventajas y desventajas de estos algoritmos, sobretodo su robustez, precisión y rapidez.

El KP es un problema combinatorio que es NP-duro, como se puede ver en (4), con respecto a la codificación binaria estándar, y consta en la lista de 21 problemas NP-completos de Karp, por tanto es improbable que, en algún momento, pueda ser encontrado un algoritmo que pueda resolverlo en tiempo polinomial. Sin embargo KP no es del tipo fuertemente NP-duro, y por tanto puede ser resuelto en tiempo seudo-polinomial, particularmente por programación dinámica, como se demuestra en (5) ; es decir, que en su codificación uniaria el problema es resoluble polinomialmente. De esta manera, incluso grandes instancias del problema pueden ser resueltas de manera exacta con solvers que utilizan métodos como la búsqueda dinámica o branch & bound (en particular Cplex), y el planteamiento de métodos aproximados, como los basados en metaheurísticas, se da para probar la eficiencia de estos procedimientos.

La formulación del KP se realiza de la siguiente manera:

Dado un conjunto de objetos

  1,2,3,…,

, con utilidades unitarias

,

,…,

, y con pesos

,

,…,

, respectivamente, y dado que se tiene un recipiente (la “mochila”), de

capacidad

, el problema KP consiste en determinar qué objetos debo seleccionar para incluir en la mochila, de tal manera que la utilidad total de los objetos que se cargan sea la máxima posible, como se puede ver esquemáticamente en la  Figura 1.

(20)

Así, el KP puede ser representado sencillamente por la siguiente formulación de programación binaria:

 

=

..

=

≤ 

∈ 0,1;  1,2,…,

En donde:

 1

 si decidimos incluir el objeto

 en la mochila, y

 0

 sino. Este problema tiene numerosas aplicaciones tales como:

 La denominada Cutting Stock , en donde hay que cortar una plancha de acero en diferentes piezas.

 Determinar los artículos que puede almacenar un depósito para maximizar su valor total.

 Maximizar el beneficio en asignación de inversiones cuando sólo hay una restricción. EJERCICIO:

Describir el problema Cutting Stock y plantearlo como un problema de la mochila.

2.3.2 Los problemas de Recubrimiento, empaquetamiento y particionamiento de Conjuntos

Estos problemas, en inglés conocidos como Set Covering (SCP) , Set Packing (SSP)  y Set Partitioning (SPP) ,  respectivamente, son problemas de optimización de tipo NP-hard con un tronco común con muchas aplicaciones, en particular serán tratados como problemas de prueba para los métodos basados en evolución diferencial (Capítulo 0)  y que se pueden enunciar del siguiente modo:

Sea

 

 una matriz binaria 0/1 de dimensiones

 ×

 y

  

,…,

 un vector de coeficientes enteros, entontes se definen los problemas SCP, SSP y SPP como:

SCP

SSP

SPP

 

..  ≥ 1

 ∈ 0,1

 

..  ≤ 1

 ∈ 0,1

 

..   1

 ∈ 0,1

Los tres problemas, SCP, SSP y SPP, pueden ser muy útiles para mostrar la transformación y relaciones entre problemas. Así podemos ver que el Set Packing y el Set Partitioning son equivalentes. Para pasar del primero al segundo basta con añadir variables de holgura. La

(21)

transformación inversa se realiza mediante variables artificiales. Estos dos problemas son más

“fáciles” de resolver de forma exacta que el Set Covering ya que en ellos las restricciones

lineales están más ajustadas respecto al conjunto de soluciones enteras posibles, por lo que los óptimos de las relajaciones lineales están más cerca de las soluciones enteras.

2.3.2.1 SCP (Problema del recubrimiento de Conjuntos):

Un ejemplo el problema de recubrimiento SPP podría ser el siguiente: Sea un conjunto de clientes

  1,2,..,

 a los cuales se pretende dar un servicio, y un conjunto H de posibles ubicaciones de facilidades logísticas desde donde se da servicio a los clientes; es decir, cada elemento de H da cobertura a un subconjunto de S, H={H1,H2,. .,Hn}, cada Hi  tiene un costo ci  asociado. El problema consiste en cubrir con costo mínimo todos los clientes con elementos de H.

Para formular el problema se define una variable

  1

si Hi está en la solución y 0 en otro caso. También se introduce una matriz A={aij } de cobertura, en la que



 1

 si el elemento j  de S está en Hi  y 0 en otro caso. La formulación es la siguiente:

 

=

..: 

=



≥ 1;   1,…,

∈ 0,1;   1,…,

Este problema tiene diferentes aplicaciones, entre las que podemos destacar la localización de servicios, tales como hospitales, bomberos, etc. y, la asignación de tripulaciones a vuelos. El problema del Set Covering es relativamente fácil de resolver con métodos de Ramificación y Acotación ya que la solución óptima del problema lineal coincide, en ocasiones, con la del problema MIP o está bastante cerca de él. La dificultad del problema proviene del número enorme de variables que suelen aparecer en problemas reales.

EJERCICIO: (Resolver con GAMS)

INSTALACION DE CENTROS DE SEGURIDAD

Una empresa de seguridad residencial e industrial ofrece respuesta rápida a llamadas de auxilio (en menos de 5 minutos de la alarma ellos estarán en el sitio auxiliando al afiliado). Para cumplir este objetivo la empresa deberá instalar Centros de Auxilio Inmediato en diferentes sectores de la ciudad, desde donde partirán patrullas armadas hacia el lugar de auxilio.

El gerente de operaciones ha establecido 15 locales que pueden ser adecuados como centros, así como también el costo de alquiler de estos locales. Así mismo se ha zonificado la ciudad en 17 zonas. En la tabla adjunta constan los costos así como también las zonas de la ciudad que

(22)

pueden ser servidas por cada uno de los mismos El objetivo es determinar que centros instalar de tal manera que se minimice el costo total y que permita dar el servicio a todas las zonas.

CENTRO DE AUXILIO INMEDIATO

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Z O N A 1 1 0 0 1 1 0 0 0 0 1 1 1 1 0 0 2 1 1 1 1 0 0 0 0 1 1 1 0 1 0 0 3 1 0 1 0 1 0 0 0 0 0 0 1 1 1 1 4 0 0 0 0 1 1 1 1 0 0 0 1 1 0 1 5 1 0 0 0 1 1 1 1 0 1 1 1 1 0 0 6 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 7 1 0 0 0 0 0 0 0 0 1 1 1 0 0 1 8 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 9 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 10 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 11 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 12 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0 13 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 14 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 15 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 16 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 17 1 1 1 0 0 0 1 0 1 0 1 0 1 0 1 ALQUILER 600 500 380 400 600 280 500 480 510 390 420 450 500 600 550

EJERCICIO: (Resolver con GAMS) ASIGNACION DE TRIPULACIONES

Una empresa aérea necesita asignar sus tripulaciones para cubrir todos sus vuelos. En particular, se quiere resolver el problema de asignar TRES tripulaciones con base en Bogotá a los vuelos listados en la primera columna de la tabla. Las otras columnas muestran las 12 secuencias factibles de vuelos para una tripulación cualquiera. Los números de cada columna indican el orden de los vuelos. Se necesita elegir tres secuencias (una por tripulación) de manera que se cubran todos los vuelos. Se permite tener más de una tripulación en un vuelo, donde la tripulación extra viaja como pasajeros, pero como parte del contrato colectivo cada tripulación extra que le toque viajar cobra como si estuviera trabajando. El coste de asignación de una tripulación a cada secuencia de vuelos se da en miles de dólares en la última fila.

El objetivo es determinar una forma óptima de asignación de las tres tripulaciones de tal manera que se minimice el costo total para cubrir todos los vuelos.

1 2 3 4 5 6 7 8 9 10 11 12 1 BOG-UIO 1 1 1 1 2 BOG-GYE 1 1 1 1 3 BOG-LIM 1 1 1 1 4 UIO-HAV 2 2 3 2 3 5 UIO-BOG 2 3 5 5 6 HAV-GYE 3 3 4 7 HAV-LIM 3 3 3 3 4

(23)

8 GYE-BOG 2 4 4 5

9 GYE-HAV 2 2 2

10 LIM-BOG 2 4 4 5

11 LIM-UIO 2 2 4 4 2

12 Costo 20 30 40 60 70 50 70 80 90 90 80 90

2.3.2.2 SPP (Problema de la Partición de Conjuntos)

Ahora consideremos el Set Partitioning y, al igual que en los dos anteriores, se tienen los conjuntos S y H. Así como en el Set Covering cada elemento de S tiene que aparecer al menos en uno de H, en este problema cada elemento de S tiene que aparecer exactamente en uno de H, por lo tanto la solución representa una partición del conjunto S. La función objetivo puede ser maximizar o minimizar, según la aplicación.

Aplicaciones:

 Asignación de tripulaciones en una versión más restringida que la anteriormente mencionada.

 Creación de distritos Electorales: Asignación de electores a un colegio electoral. EJEMPLO:

EL PROBLEMA DEL COLOREO DE GRAFOS

Dado un grafo G, el problema de coloreamiento del grafo consiste en colorear todos los nodos con la cantidad mínima de colores de tal manera que no existan dos nodos adyacentes (unidos con una arista) del mismo color. Este problema representa muchas situaciones reales como en la planificación de horarios para una serie de actividades que deben tener lugar, algunas de las cuales no pueden suceder simultáneamente, tales como horarios de exámenes, horarios de competencias deportivas, etc. Se desea conseguir una planificación que asegure la menor duración total de todo el plan.

Para formular este problema se define un grafo en el que cada nodo representa una actividad, y cada arista

,

  significa que las actividades

,

  no pueden ocurrir simultáneamente. El problema consiste en particionar el conjunto de nodos en el menor conjunto posible de subconjuntos disjuntos, de tal forma que no existan dos nodos adyacentes en el mismo subconjunto.

Para formular el problema se consideran todos los posibles conjuntos de nodos

 tales que no contengan dos nodos adyacentes, y a cada

 se le asocia una variable de decisión

. La matriz

   (



)

  se define como:



  1

  si el nodo j pertenece al subconjunto

, y cero en caso contrario. Entonces la formulación es:

(24)

..: 

=



 1;   1,…,

∈ 0,1;   1,…,

EJEMPLO:

Resolver con GAMS el problema de coloreo del grafo de Petersen:

2.3.2.3 SSP (Problema del empaquetamiento de Conjuntos):

Ahora consideremos una aplicación del Set Packing. Igual que en el problema anterior se tienen los conjuntos S y H, pero ahora cada H  tiene un valor asociado. El objetivo es empaquetar tantos elementos de S como sea posible de forma que el beneficio obtenido sea máximo y no haya solapamientos (ningún elemento de S puede aparecer más de una vez). En cierto modo, la relajación lineal del Set Covering y la del Set Packing son problemas duales. Sin embargo esto no sirve para establecer una relación entre los problemas enteros originales. Uno de los ejemplos/aplicaciones es el problema del Acoplamiento Máximo o Matching. Un acoplamiento es un subconjunto de las aristas de un grafo de manera que cualquier vértice no sea incidente con más de una de esas aristas. El problema del acoplamiento máximo consiste en encontrar un acoplamiento de máximo cardinal.

EJERCICIO:

Plantear una aplicación del SSP y resolverlo con GAMS

2.3.3 Problema del Agente Viajero (Traveling Salesman Problem)

Este problema, también conocido como Traveling Salesman Problem (TSP), ha sido uno de los más estudiados en Investigación Operativa, por lo que merece una atención especial. Cuando se desarrolló la teoría de la Complejidad Algorítmica, el TSP fue uno de los primeros problemas en estudiarse, probando Karp en 1972 que pertenece a la clase de los problemas difíciles (NP-hard).

Desde los métodos de Ramificación y Acotación hasta los basados en la Combinatoria Poliédrica, pasando por los procedimientos Metaheurísticos, todos han sido inicialmente

(25)

probados en el TSP, convirtiéndose éste en un problema de prueba obligado para “validar”

cualquier técnica de resolución de problemas enteros o combinatorios. La librería TSPLIB (http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/) de domino público contiene un conjunto de ejemplos del TSP para ser usados como ejemplos de prueba en los algoritmos, y en los que consta la mejor solución obtenida hasta la fecha y, en algunos casos, la solución óptima. A efectos de medir empíricamente la bondad de los algoritmos que se describe, consideraremos un conjunto de 30 ejemplos de la TSPLIB basados en problemas reales con óptimos conocidos.

El Problema del Agente Viajero puede enunciarse del siguiente modo:

“Un agente viajero ha de visitar n ciudades, comenzando y finalizando en su

 propia ciudad. Conociendo el costo de ir de cada ciudad a otra, determinar el recorrido de costomínimo.” 

Para enunciar el problema formalmente introducimos la siguiente terminología:

Sea un grafo G=(V , A,C ) donde V   es el conjunto de vértices,  A  es el de aristas y C =(cij ) es la matriz de costos. Esto es, cij  es el costo o distancia de la arista (i , j ).

 Un camino (o cadena) es una sucesión de aristas (e1, e2, …, ek) en donde el vértice final de cada arista coincide con el inicial de la siguiente. También puede representarse por la sucesión de vértices utilizados.

 Un camino es simple o elemental si no utiliza el mismo vértice más de una vez.

 Un ciclo es un camino (e1, e2, …, ek) en el que el vértice final de ek  coincide con el inicial de e1.

 Un ciclo es simple si lo es el camino que lo define.

 Un subtour es un ciclo simple que no pasa por todos los vértices del grafo.

 Un tour o ciclo hamiltoniano es un ciclo simple que pasa por todos los vértices del grafo. El Problema del Agente Viajero consiste en determinar un tour de costo mínimo. La figura 2 muestra un grafo de 8 vértices en el que aparece destacado un ciclo hamiltoniano.

Figura 2. Ciclo Hamiltoniano

Consideraremos, sin pérdida de generalidad, que el grafo es completo; es decir, que para cada par de vértices existe una arista que los une. Notar que, de no ser así, siempre podemos añadir una arista ficticia entre dos vértices con el costo del camino más corto que los une. Así por ejemplo, en el grafo de la figura 2 podemos añadir una arista entre los vértices 1 y 6 con costo 9 correspondiente al camino 1-3-6. 1 2 3 4 5 6 7 8 3 4 4 4 6 6 6 8 10 10 5 8 5 8 4 3 4

(26)

Entre las aplicaciones más importantes del TSP podemos destacar:

 Fabricación de circuitos integrados

 Rutas de vehículos

 Recogida (robotizada) de material en almacenes

 Instalación de componentes en computadores

 Aparece como subproblema en otras aplicaciones

Este problema puede ser formulado mediante un modelo de programación lineal entera con variables binarias. Para ello basta considerar las variables x ij que valen 1 si el viajante va de la ciudad i  a la j  y 0 en otro caso y llamar cij  al costo de ir de la ciudad i  a la j :

    i j  x n S  n S   x n i  x  x t   s  x c  MIN  ij S   j i ij  j i  j i  ji ij ij  j i ij                    1 , 0 2 / 3 }, ,.., 2 , 1 { 2 ,..., 2 , 1 2 : . . ) ( ) , (   

Donde(S) representa el conjunto de aristas incidentes con exactamente un vértice de S.

Las restricciones que aparecen en segundo lugar (vinculadas a todos los subconjuntos de vértices S) reciben el nombre de restricciones de eliminación de subtours y garantizan que la solución sea un tour. El problema es que al haber una por cada subconjunto del conjunto de vértices, aparecen en una cantidad del orden de 2n, lo cual hace inmanejable tal formulación. Se han encontrado restricciones alternativas para evitar la formación de subtours que suponen la incorporación de una cantidad polinómica de restricciones (Miller, Tucker y Zemlin, 1960). Aún así, la resolución óptima del problema ha resultado poco eficiente, salvo para ejemplos relativamente pequeños, dado el elevado tiempo de computación requerido por cualquier método exacto.

2.3.4 El Problema de la Asignación Cuadrática

Introduciremos el problema mediante el siguiente ejemplo: “Se tienen n módulos electrónicos

y n posiciones en donde situarlos sobre una placa. Sea t ik el número de cables que conectan los módulos i  y k , y sea d  jl  la distancia entre las posiciones j  y l  de la placa. El problema consiste en

determinar la ubicación de los módulos minimizando la longitud total del cable utilizado”

Al igual que en los otros modelos de asignación vistos, se introducen variables binarias  x ij  que toman el valor 1 si el módulo i  se asigna a la posición j  y 0 en otro caso. La formulación MIP es la siguiente:

(27)

 

0,1 ,..., 2 , 1 1 ,..., 2 , 1 1 : . . 1 1 1 1 1 1     

   

      ij n i ij n  j ij kl  n i n  j n k  ij n l   jl  ik   x n  j  x n i  x t   s  x  x d  t   MIN 

El problema se llama cuadrático por la función objetivo ya que el costo viene dado por parejas de variables que aparecen como producto. Así pues la función objetivo es no lineal, aunque se puede transformar en un problema lineal entero introduciendo variables que representen a los productos. Notar que esta transformación obligaría a reformular las restricciones.

Este problema tiene numerosas aplicaciones ya que podemos encontrar en ámbitos muy diversos situaciones como la descrita. Así, por ejemplo, el problema de ubicar determinados servicios (como laboratorios, rayos X,... etc.) en un hospital en donde se conoce el flujo previsto de personal entre tales servicios. Análogamente el guardar determinados productos en un almacén.

El objeto de introducir este problema es doble: por una parte mostrar un problema no lineal, con un gran número de aplicaciones prácticas, que puede transformarse en un PLE y, por otra, presentar uno de los problemas más difíciles (sino el que más) dentro de los ya de por sí difíciles problemas enteros.

EJERCICIO:

Introduciendo nuevas variables plantear el problema de asignación cuadrática como un problema MIP.

2.3.5 Problema de Asignación Generalizada

Se tiene un conjunto J={1,2,..,n} de índices de los trabajos a realizar y otro conjunto I={1,2,..,m} de personas para realizarlos. El costo (o valor) de asignar la persona i  al trabajo j  viene dado por cij . Además se tiene una disponibilidad bi  de recursos de la persona i  (como por ejemplo horas de trabajo) y una cantidad aij   de recursos de la persona i   necesarias para realizar el trabajo j .

Con todo esto, el problema consiste en asignar las personas a los trabajos con el mínimo costo (o el máximo valor).

Al igual que en los otros modelos de asignación vistos, se introducen variables  x ij  que valen 1 si la persona i  se asigna al trabajo j  y 0 en otro caso.

(28)

 

0,1 ,..., 2 , 1 ,..., 2 , 1 1 : . . 1 1 1 1     



    ij n  j i ij ij n i ij n i n  j ij ij  x n i b  x a n  j  x t   s  x c  MIN 

En este modelo de asignación se puede asignar una persona a más de un trabajo, respetando obviamente las limitaciones en los recursos.

Algunas de las aplicaciones más relevantes son:

 Asignación de clientes a camiones (de reparto o recogida) de mercancías.

 Asignación de tareas a programadores.

 Asignación de trabajos a una red de computadores. 2.3.6 Problema de la Ordenación Lineal

Este problema consiste en determinar una permutación  p de las filas y columnas de una matriz cuadrada dada, de manera que la suma de los elementos por encima de la diagonal sea máxima. Notar que la permutación  p  proporciona el orden tanto de las filas como de las columnas.

En términos económicos este problema es equivalente al de triangulación de matrices input-output, que puede describirse del siguiente modo: La economía de una región se divide en m sectores, se construye una matriz m*m donde la entrada aij  denota la cantidad de mercancías (en valor monetario) que el sector i  sirve al j   en un año dado. El problema de triangulación consiste en permutar las filas y columnas de la matriz simultáneamente de manera que la suma de elementos por encima de la diagonal sea lo mayor posible. Una solución óptima presenta una ordenación de sectores de modo que los proveedores (sectores que producen para otros) van en primer lugar seguidos de los consumidores.

Este problema también puede enunciarse en términos de grafos, lo cual ayuda a formularlo del siguiente modo:

 

0,1 n k  <  j < i 1 2 , , 1 : . . 1 1           

 

  ij ki  jk  ij  ji ij n i ij ij n  j  x  x  x  x  j i V   j i  x  x t   s  x c  MAX 

(29)

Donde  x ij =1 representa que el sector (vértice) i   precede al j   en la ordenación dada por la solución.

2.4

Medidas de Calidad de un Algoritmo

Un buen algoritmo heurístico debe de tener las siguientes propiedades: 1. Eficiente. Un esfuerzo computacional realista para obtener la solución. 2. Bueno. La solución debe de estar, en promedio, cerca del óptimo.

3. Robusto. La probabilidad de obtener una mala solución (lejos del óptimo) debe ser baja.

Para medir la calidad de un heurístico existen diversos procedimientos, entre los que se encuentran los siguientes:

2.4.1 Comparación con la solución óptima

Aunque normalmente se recurre al algoritmo aproximado por no existir un método exacto para obtener el óptimo, o por ser éste computacionalmente muy costoso, en ocasiones puede ser que dispongamos de un procedimiento que proporcione el óptimo para un conjunto limitado de ejemplos (usualmente de tamaño reducido). Este conjunto de ejemplos puede servir para medir la calidad del método heurístico.

Normalmente se mide, para cada uno de los ejemplos, la desviación porcentual de la solución heurística frente a la óptima, calculando posteriormente el promedio de dichas desviaciones. Si llamamos ch al valor objetivo en la solución del algoritmo heurístico y copt  al valor objetivo de la solución óptima de un ejemplo dado, en un problema de optimización el GAP absoluto (desviación absoluta) viene dada por la expresión:

  |

 



|

Y el GAP relativo (desviación relativa) como:

  |

 



|



  100%

2.4.2 Comparación con una cota

En ocasiones el óptimo del problema no está disponible ni siquiera para un conjunto limitado de ejemplos. Un método alternativo de evaluación consiste en comparar el valor de la solución que proporciona el heurístico con una cota del problema (inferior si es un problema de minimización y superior si es de maximización). Obviamente la bondad de esta medida dependerá de la bondad de la cota (cercanía de ésta al óptimo), por lo que, de alguna manera, tendremos que tener información de lo buena que es dicha cota. En caso contrario la comparación propuesta no tiene demasiado interés.

(30)

2.4.3 Comparación con un método exacto truncado

Un método enumerativo como el de Ramificación y Acotación explora una gran cantidad de soluciones, aunque sea únicamente una fracción del total, por lo que los problemas de gr andes dimensiones pueden resultar computacionalmente inabordables con estos métodos. Sin embargo, podemos establecer un límite de iteraciones (o de tiempo) máximo de ejecución para el algoritmo exacto.

También podemos saturar un nodo en un problema de maximización cuando su cota inferior sea menor o igual que la cota superior global más un cierto  (análogamente para el caso de minimizar). De esta forma se garantiza que el valor de la mejor solución proporcionada por el procedimiento no dista más de  del valor óptimo del problema. En cualquier caso, la mejor solución encontrada con estos procedimientos truncados proporciona una cota con la que contrastar el heurístico.

2.4.4 Comparación con otros heurísticos

Este es uno de los métodos más empleados en problemas difíciles (NP-duros) sobre los que se ha trabajado durante tiempo y para los que se conocen algunos buenos heurísticos. Al igual que ocurre con la comparación con las cotas, la conclusión de dicha comparación está en función de la bondad del heurístico escogido.

2.4.5 Análisis del peor caso (worst case analisys)

Uno de los métodos que durante un tiempo tuvo bastante aceptación es analizar el comportamiento en el peor caso del algoritmo heurístico; esto es, considerar los ejemplos que sean más desfavorables para el algoritmo y acotar analíticamente la máxima desviación respecto del óptimo del problema. Lo mejor de este método es que acota el resultado del algoritmo para cualquier ejemplo; sin embargo, por esto mismo, los resultados no suelen ser representativos del comportamiento medio del algoritmo. Además, el análisis puede ser muy complicado para los heurísticos más sofisticados.

Aquellos algoritmos que, para cualquier ejemplo, producen soluciones cuyo costo no se aleja de un porcentaje   del costo de la solución óptima, se llaman  Algoritmos  -Aproximados. Esto

es; en un problema de minimización se tiene que cumplir para un  > 0 que:

Referencias

Documento similar

El análisis de conglomerados jerárquico sirvió para clasificar un grupo de aspirantes a la residencia en 12 conglomerados ordenados por mérito, de acuerdo a la posición relativa de

Se destaca que la arquitectura GAD ene un mejor desempeño promedio que una descom- posición en cadena, es más, tanto la arquitectura maestra como básica descompuesta via GAD enen

En este sentido, se presenta un enfoque, conocido como el método Mosaico, que surge como propuesta para resolver las necesidades de contar con una herramienta, que considere tanto

En este orden de ideas, este trabajo presenta un método computacional por el cual, mediante la representación matricial de una Red de Petri y la aplicación de un algoritmo