• No results found

7.2 Evaluation of Scalar RVMP with Memory Overlap

7.2.2.3 Simulation Demonstration

Se define como problema de la mochila a la situación que se genera cuando se tienen m

objetos, cada uno con un valor pj y un peso aj. Se tiene una mochila con una capacidad c. Se

desea determinar los objetos a introducir en la mochila de manera que se maximice el valor total dentro de la mochila, pero sin rebasar la capacidad de la mochila (Venezuela Rendóm, 2009). Lo anteriormente dicho puede expresarse como se muestra en las expresiones 1.1, 1.2 y 1.3. 1 * n j j j MAX p x

(1.1) Sujeto a: 1 * n j j j a x C  

(1.2) En casos de que existan n mochilas con una capacidad ci la restricción del problema se puede

representar como se muestra a continuación.

1 * 1, 2... n ij j i j a x C n    

(1.3) Existen otras variaciones del problema de la mochila como el problema de la mochila multidimensional. El problema de la mochila multidimensional (MKP, del inglés Multiple Knapsack Problem) puede ser definido como una generalidad del problema de mochila 0-1, con la particularidad de que existen mmochilas en las que se deben introducir nobjetos respetando las restricciones de capacidad y tratando de maximizar un beneficio.

Métodos de solución del problema de la mochila

Los métodos de solución del problema de la mochila según lo encontrado en la bibliografía, están agrupados en cuatro grupos: métodos exactos, métodos aproximados, métodos heurísticos y metaheurísticos.

Es necesario mencionar que la bibliografía consultada no se pudo encontrar ningún método hiperheurístico para la solución del problema de la mochila, este es un factor que si bien no

las técnicas hiperheurísticas para la solución de problemas de diferente índole donde las metaheurísticas carecen de robustez y tienen asociadas un alto costo de tiempo para el ajuste de los parámetros.

La hiperheurística es un algoritmo de clase abstracta que opera a un nivel mas alto que las metaheurísticas, y dirige a un grupo de heurísticas simples (de un nivel más bajo) las cuales son aplicadas, dependiendo de la característica del espacio de soluciones donde se encuentra explorando. Una hiperheurística selecciona a cada paso la más prometedora heurística simple (o una combinación de heurísticas) que puede mejorar potencialmente la solución.

Por otro lado, si no hay mejora, es decir, fue encontrada una solución óptima local, ella es capaz de diversificar la búsqueda a otras áreas del espacio de solución realizando una apropiada selección de un nuevo juego de heurísticas. Las heurísticas de bajo nivel, normalmente representan a los métodos de búsquedas locales o a las técnicas constructivas (Díaz Díaz, 2009).

Ventajas de los métodos hiperheurísticos.

1. Los métodos hiperheurísticos son sencillos y de rápida implementación.

2. Producen soluciones comparables en calidad a otras ya encontradas por eficientes metaheurísticas.

3. No tienen el acceso al conocimiento del dominio específico del problema, haciéndola aplicable en pequeños estudios o a problemas reales pobremente estudiados.

Aunque no se conozca un método hiperheurístico para la solución del problema de la mochila, siempre es interesante hacer referencia a este tipo de algoritmo por las ventajas que aportan a la solución de dificultades que se presentan en los procesos logísticos.

Métodos de solución exactos. Métodos de optimización

Programación lineal

La programación lineal también conocida como optimización lineal, es la maximización o

minimización de una función lineal sobre un poliedro convexo definido por un conjunto de restricciones lineales no negativas. La teoría de la programación lineal cae dentro de la teoría de la optimización convexa y es también considerada como parte importante de la Investigación

de Operaciones, la cual constituye una herramienta de modelos cuantitativos para manejar diferentes tipos de problemas y ayudar a la toma de decisiones (Monografías, 2009).

La programación lineal entera (PLE) es el conjunto de problemas de programación lineal, para los cuales todas o parte de sus variables pertenecen a los números enteros.

Un problema de PLE puede describirse de la forma siguiente: Optimizar una función objetivo z = c. x

Bajo las restricciones Ax ≤ ó ≥ b, x ≥ 0 Donde:

x - Vector con variables enteras

c - Vector de coeficientes de la función objetivo A - Matriz de coeficientes de las restricciones b - Vector de términos independientes

La metodología de la programación lineal se divide en dos pasos: primero modela o formula el problema, y posteriormente se resuelve el modelo de manera exacta.

En la modelización se tienen en cuenta:

 La variable de decisión, dada la problemática del problema.

 La función objetivo que se determina por la combinación de variables de decisión en vistas de optimizar esta función objetivo, según un criterio de mínimo o máximo.

 Las restricciones del sistema, las cuales determinan el conjunto de valores posibles para las variables de decisión, también denominada como región factible. Las restricciones pueden ser tanto ecuaciones como inecuaciones, donde pueden ser de menor o igual, mayor o igual, o de igualdad. La solución óptima del modelo se encuentra independientemente de esa región factible.

Programación dinámica

La programación dinámica es una técnica donde se empieza a construir la solución desde las soluciones de los subproblemas más pequeños, guardando las soluciones en una forma

sistemática para construir soluciones a problemas mayores. Típicamente las soluciones parciales están guardadas en un arreglo para evitar tener que solucionar un subproblema igual más tarde en la ejecución del algoritmo (Schaeffer, 2006).

La programación dinámica comienza por analizar una pequeña parte del problema y encuentra la solución óptima para esta etapa. Poco a poco va aumentando el problema, hasta encontrar la solución óptima de la etapa actual a partir de la inmediata anterior, hasta que el problema original se resuelve completo.

Por lo que el problema se desarrolla desde el final hacia el comienzo del problema real, es decir, primero se determina la solución del último paso o etapa, para hallar esto es necesario hacer distintas suposiciones acerca de cómo terminó el penúltimo paso y así sucesivamente con el resto de las etapas hasta llegar a la primera.

El sistema original puede descomponerse en subsistemas que recibirán el nombre de etapas y que serán resueltos de acuerdo con una política de decisión definida previamente. En cada etapa o subsistema existen estados.

Un estado es la descripción de una condición del sistema, es decir, la posible situación en que se encuentra un sistema analizado. Estos estados son excluyentes en una etapa determinada, y finitos. La política de decisión define la acción tomada para cada estado en cada etapa. Una política de decisión estacionaria es aquella que no varía con las etapas, es decir, en cada una de ellas la acción que se toma depende solo del estado en que está. La función de recursividad (o recursiva) es la presentación cuantitativa de la política de decisión; constituye una función que evalúa el objetivo a alcanzar en cada etapa y define la decisión a tomar. Esta función relaciona las etapas o subsistemas. El principio de la optimización de la programación dinámica, fue enunciado anteriormente, significa que dado un estado conocido para un subsistema, una decisión óptima para las etapas restantes es independiente de la decisión adoptada en las etapas previas.

El procedimiento de solución comienza hallando la política óptima para cada estado de la primera etapa. Luego continua moviéndose hacia “adelante” en el sentido de la PD etapa a etapa (“hacia atrás”, en el sentido del problema real), hasta alcanzar la última etapa y el estado inicial, cuya política óptima será la del sistema o problema real.

Planteamiento general del problema a través de la programación dinámica:

Etapa (n): Cada uno de los subproblemas en que puede dividirse el sistema o situación problemática analizada.

Estado (s): Cada situación en que puede encontrarse el sistema en una etapa dada y a partir del cual se adopta una política de decisión determinada, o sea, es una situación que determina dentro del sistema una política de decisión determinada.

Variable de decisión (xn): Alternativa de solución que se puede dar al sistema en una etapa

determinada conociéndose el estado en el cual se encuentra al comenzar dicha etapa. Función de recursividad: n

 

fn

s xn



n s f

x

, min max * (1.4)

Algoritmo dinámico con estados reducidos

Desde el punto de vista de la programación dinámica, la descomposición natural del problema de la mochila consiste en los subproblemas PM (m,cI) con m (1≤mn) ítems, y con capacidad

cI, 0≤cI≤c. Sea

 

1 1

max

m

*

:

m

*

I I m j j j j j j

f C

P X

W X

C

 



(1.5) Con Xj =(0,1), j=1,…., m.

El valor de la solución óptima del problema de la mochila (m,cI).

Para resolver el problema de la mochila la programación dinámica considera n etapas (igual al número de ítems) y calcula en cada una de ellas los valores dados por la función anterior usando la recursión clásica de Bellman-Dantzig expresada de esta forma.

 

 

1

 

1 1 ,

m ax

m I I m m m f C I I m m f C W P

f

C

f

C

  

 

(1.6) Para C I= W m……., C

Las soluciones factibles asociadas a estos valores se denominan estados. La solución óptima del problema es el estado correspondiente a fn (c).

Se recomienda la eliminación de aquellos estados que no influyen en la determinación de los estados óptimos, llamados estados dominados. Dando origen así, al algoritmo dinámico con estados reducidos.

Este algoritmo en cada etapa calcula y reserva los estados los estados no dominados, los mismos que utiliza como valores de entrada para determinar los estados de la siguiente etapa. El proceso finaliza cuando se ha obtenido el estado fn (c), (Vergara et. al, 2004).

Métodos aproximados

En ciencias de la computación e Investigación de Operaciones, un algoritmo de aproximación es un algoritmo usado para encontrar soluciones aproximadas a problemas de optimización cuyos tiempos de ejecución están acotados por cotas conocidas. En muchos casos es posible llegar a una solución aproximada muy rápidamente mientras encontrar la solución óptima puede ser imposiblemente lento.

En situaciones donde todos los algoritmos conocidos son lentos, vale la pena considerar la posibilidad de usar una solución aproximada, o sea, una solución que tiene un valor de la función objetivo cerca del valor óptimo, pero no necesariamente el óptimo mismo

La teoría de la complejidad establece una clasificación de problemas, tales como: problemas P (Polinomial) y NP (No-determinístico-Polinomial); dentro de estos últimos se encuentran los NP duros y NP completo (Baase, 1983).

El problema de la mochila se clasifica como NP completo; sin embargo, se considera que el KP (del inglés Knapsack problem) no es un fuertemente NP completo. Un problema fuertemente NP completo no puede tener algoritmos pseudo-polinomiales salvo que se aplica que P sea igual a NP. Algoritmos pseudo-polinomiales son aquellos donde la cota de tiempo de ejecución es polinomial en los enteros de la entrada y no sus logaritmos (Schaeffer, 2009). Ejemplos de problemas fuertemente NP completo son:

1. Problema de satisfacibilidad booleana (SAT) 2. Problema del ciclo hamiltoniano

3. Problema del vendedor viajero 4. Problema de la clique

5. Problema de ruteo de vehículos

Algoritmo pseudo-polinomial (Schaeffer, 2009)

1. Definir variables auxiliares V (w; i) que es valor total máximo posible seleccionando algunos entre los primeros iartículos tal que su peso total es w.

2. Calcular cada uno de los V (w; i)con w=1;….;ψe i=1;….;Na través de la ecuación recursiva siguiente:

; 1

m ax

; ;

i

i 1;



V w i  V w i vV ww i (1.7) Donde V (w; 0)=0 para todo w y V (w; i)=- ∞ si w ≤ 0.

3. A partir de ahí se puede calcular en tiempo constante un valor de V (w; i). 4. La respuesta del problema es el máximo valor V (w; i).

Si existe un método sistemático para aproximar la solución a factores arbitrarios, ese método se llama esquema de aproximación de tiempo polinomial (Schaeffer, 2009).

Métodos heurísticos

Se denomina heurística a la capacidad de un sistema para realizar de forma inmediata innovaciones positivas para sus fines. La capacidad heurística es un rasgo característico de los humanos, desde cuyo punto de vista puede describirse como el arte y la ciencia del descubrimiento y de la invención o de resolver problemas mediante la creatividad y el pensamiento lateral o pensamiento divergente (Díaz et. al, 1996).

Los métodos heurísticos se emplean para resolver problemas No-Polinomiales (NP), y son aplicables además a cualquier ciencia. Dentro de esta clasificación se encuentran técnicas como:

Backtracking (Vuelta atrás)

En su forma básica, la idea de backtracking se asemeja a un recorrido en profundidad dentro de un grafo dirigido. El grafo en cuestión suele ser un árbol, o por lo menos no contiene ciclos. Sea cual sea su estructura, existe sólo implícitamente.

parciales limitan las regiones en las que se puede encontrar una solución completa. El recorrido tiene éxito si, procediendo de esta forma, se puede definir por completo una solución. En este caso el algoritmo puede bien detenerse (si lo único que se necesita es una solución del problema) o bien seguir buscando soluciones alternativas (si se desea examinarlas todas). Por otra parte, el recorrido no tiene éxito si en alguna etapa la solución parcial construida hasta el momento no se puede completar. En tal caso, el recorrido vuelve atrás exactamente igual que en un recorrido en profundidad, eliminando sobre la marcha los elementos que se hubieran añadido en cada fase. Cuando vuelve a un nodo que tiene uno o más vecinos sin explorar, prosigue el recorrido de una solución (Díaz et. al, 1996).

Método de ramificación y poda

El método de diseño de algoritmos ramificación y poda (también llamado ramificación y acotación) se aplica mayoritariamente para resolver cuestiones o problemas de optimización. El término (del inglés, Branch and Bound)

La técnica de ramificación y poda se suele interpretar como un árbol de soluciones, donde cada rama conduce a una posible solución posterior a la actual. La característica de esta técnica con respecto a otras anteriores (y a la que debe su nombre) es que el algoritmo se encarga de detectar en qué ramificación las soluciones dadas ya no están siendo óptimas, para «podar» esa rama del árbol y no continuar malgastando recursos y procesos en casos que se alejan de la solución óptima (Díaz et. al, 1996).

Algoritmos voraces (greedy)

La utilización de un algoritmo voraz consiste en introducir en la mochila según orden decreciente de utilidad (beneficio) los diversos objetos. En una primera etapa, se adicionarán unidades enteras hasta que, por motivo de capacidad, no sea posible seguir introduciendo enteros y haya que añadir la porción que quepa del siguiente objeto (Colmenares, 2004).

Los algoritmos greedy o voraces son métodos heurísticos simples, disponibles para cualquier tipo de problema de optimización combinatoria. Esta es una técnica iterativa que comienza con una solución factible o no factible y en cada iteración se obtiene un número de alternativas que pueden transformar la solución. Los métodos greedy tienen la gran ventaja de que son muy rápidos a la hora de su implementación, devuelven soluciones razonablemente buenas y no

requieren de un gran conocimiento del problema; sin embargo no puede garantizarse que estas soluciones sean óptimas con respecto a pequeños cambios a nivel local.

Según Colmenares 2004, generalmente, los algoritmos voraces y los problemas que éstos resuelven se caracterizan por la mayoría de las propiedades siguientes:

 Tratan de resolver problemas de forma óptima.

 Se dispone de un conjunto (o lista) de candidatos.

 A medida que avanza el algoritmo se van acumulando dos conjuntos: 1. A: candidatos considerados y seleccionados.

2. B: candidatos considerados y rechazados.

 Existe una función que comprueba si un cierto conjunto de candidatos constituye una

solucióndel problema, ignorando si es óptima o no por el momento.

 Existe una función que comprueba si un cierto conjunto de candidatos es factible, esto es, si es posible o no completar el conjunto añadiendo otros candidatos para obtener al menos una solución al problema. Una vez más, no importa si la solución es óptima o no. Normalmente se espera que al menos se pueda obtener una solución a partir de los candidatos disponibles inicialmente.

 Existe una función de selección que indica cuál es el más prometedor de los candidatos restantes no considerados aún.

 Implícitamente está presente una función objetivo que da el valor a la solución que hemos hallado (valor que se está tratando de optimizar).

De acuerdo con las características del problema de la mochila y las características generales de los algoritmos voraces se pueden identificar los subsecuentes elementos.

1. Candidatos: los diferentes objetos

2. Solución: un arreglo con las diferentes fracciones de los objetos

3. Solución factible: una solución es factible si respeta las restricciones

Se pueden considerar tres funciones de selección: 1. Seleccionar el objeto de mayor valor.

2. Seleccionar el objeto de menor peso (la capacidad se agota lo más lento posible).

3. Seleccionar el objeto cuyo valor por unidad de peso es mayor (mayor relación valor/peso). Se puede demostrar que la opción 3 es la que permite que el algoritmo voraz encuentre la solución óptima, de hecho es la alternativa mas frecuentemente utilizada. Esta idea tiene su fundamento en la perspectiva multicriterial del problema de la mochila, que por una parte trata de maximizar un beneficio y por trata de ajustarse a una capacidad de peso.

Métodos metaheurísticos

Según Alonso Rodríguez et al. (2004), las metaheurísticas consisten en conceptos generales empleados para definir métodos heurísticos. Dicho de otra manera, una metaheurística puede verse como un marco de trabajo general referido a algoritmos que puede aplicarse a diversos problemas de optimización combinatoria con pocos cambios significativos si ya existe previamente algún método heurístico específico para el problema. De hecho, las metaheurísticas son ampliamente reconocidas como una de las mejores aproximaciones para atacar los problemas de optimización combinatoria.

Las metaheurísticas generalmente se aplican a problemas que no tienen un algoritmo o heurística específica que dé una solución satisfactoria; o bien cuando no es posible implementar ese método óptimo. Se pueden aplicar a cualquier problema que se pueda reformular en términos heurísticos. Las metaheurísticas incorporan conceptos de muchos y diversos campos como la genética, la biología, la inteligencia artificial, las matemáticas, la física y la neurología, entre otras.

Algoritmo genético (AG)

La computación evolutiva o algoritmo evolutivo, abarca técnicas como los algoritmos genéticos que a su vez, constituyen una herramienta de resolución de problemas inspirada en la reproducción de los seres vivos; en la que las soluciones del problema son capaces de reproducirse entre sí, combinando sus características y generando soluciones nuevas. El funcionamiento básico es muy sencillo. Es también una búsqueda técnica usada en la

computación para encontrar soluciones reales o aproximadas para la optimización y solución de problemas de búsqueda.

Los algoritmos genéticos son categorizados como heurísticas de búsqueda global, es decir, metaheurísticas avanzadas. Los algoritmos genéticos son una clase particular de los algoritmos de evolución que usan técnicas inspiradas en la biología evolutiva, tales como herencia, mutación, selección y cruzamiento (también llamado recombinación) (De la Herrán Gascón, 2009).

El procedimiento para este algoritmo es el que se explica seguidamente:

1. Se genera un conjunto de 1-N soluciones al problema. Normalmente, estas entidades se generan al azar.

2. Se evalúan las soluciones existentes, de manera que se eliminan unas y se mantienen otras (o se limita el tiempo de ejecución).

3. Se permite la reproducción o combinación de genes (normalmente por parejas) de las entidades existentes.

4. Se efectúan mutaciones (cambios al azar) de los nuevos patrones, según una tasa determinada.

5. Se continúa en el paso 2.

Método de optimización por colonia de hormigas (OCH)

Actualmente existe un gran interés en implementar nuevas técnicas de optimización como son las metaheurísticas (algoritmos genéricos que pueden ser implementados para resolver diferentes problemas de optimización a través de variaciones mínimas).

Los algoritmos de optimización por colonia de hormigas son una metaheurística bioinspirada basada en el comportamiento de las hormigas naturales, en la forma de como estas establecen el camino más corto entre el hormiguero y su fuente de alimentos a través de una sustancia denominada feromona. Esta técnica es realmente un sistema multiagentes en la cual cada agente (hormiga), construye una solución candidata. La construcción de la solución por parte de una hormiga es guiada por una información heurística que depende del problema y por los rastros de feromonas que se encuentran depositados en los caminos (Ponce. et al. 2004).

Algoritmo Ponce-Padilla

El procedimiento a seguir con este algoritmo es el siguiente:

Related documents