programacion dinamica deterministica

8
PROGRAMACIÓN DINÁMICA DETERMINISTA “ASIGNACION DE RECURSOS” Willfredo Valbuena Amado 1,2 , Cod. 273208, [email protected] Universidad Nacional de Colombia. Bogotá D. C., Colombia Resumen: Los problemas de asignación de recursos, en los que se debe asignar una cantidad limitada de recursos entre varias actividades, se pueden resolver con frecuencia con programación dinámica. Abstrac: The problems of allocation of resources, in which a limited amount of resources between several activities is due to assign, can be solved frequently with dynamic programming Keywords: Programación, Dinámica, Deterministica, Asignación, Recursos. 1. INTRODUCCION La programación dinámica (PD) determina la solución óptima de un problema de n variables descomponiéndola en n etapas, con cada etapa incluyendo un subproblema de una sola variable. La ventaja en el aspecto de los cálculos es que optimizaremos una sola variable, en vez de subproblemas de n variables. La principal contribución de la PD es el principio de optimalidad, un marco de referencia para descomponer el problema en etapas. La programación dinámica es una técnica que se puede aplicar para resolver muchos problemas de optimización. La mayor parte de las veces, la programación dinámica obtiene soluciones con un avance en reversa, desde el final de un problema hacia el principio con lo que un problema grande y engorroso se convierte en una serie de problemas más pequeños y más tratables. 1.1 NATURALEZA RECURSIVA DE LOS CÁLCULOS EN LA PD Los cálculos en la PD se hacen recursivamente, en el sentido de la solución óptima de un subproblema se utiliza como una entrada para el siguiente subproblema. Para el momento en que resolvamos el último subproblema, tendremos a mano la solución óptima para todo el problema. La forma en la cual se hacen los cálculos recursivos depende de la forma en la cual descomponemos el problema original. En particular, los subproblemas por lo común se unen por medio de algunas restricciones comunes. A medida que avanzamos de un subproblema a otro, debemos dar razón de la variabilidad de estas restricciones.

Upload: mau-ares

Post on 26-Nov-2015

96 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Programacion dinamica Deterministica

PROGRAMACIÓN DINÁMICA DETERMINISTA “ASIGNACION DE RECURSOS”

Willfredo Valbuena Amado1,2, Cod. 273208, [email protected]

Universidad Nacional de Colombia. Bogotá D. C., Colombia

Resumen: Los problemas de asignación de recursos, en los que se debe asignar una cantidad limitada de recursos entre varias actividades, se pueden resolver con frecuencia con programación dinámica. Abstrac: The problems of allocation of resources, in which a limited amount of resources between several activities is due to assign, can be solved frequently with dynamic programming

Keywords: Programación, Dinámica, Deterministica, Asignación, Recursos.

1. INTRODUCCION La programación dinámica (PD) determina la solución óptima de un problema de n variables descomponiéndola en n etapas, con cada etapa incluyendo un subproblema de una sola variable. La ventaja en el aspecto de los cálculos es que optimizaremos una sola variable, en vez de subproblemas de n variables. La principal contribución de la PD es el principio de optimalidad, un marco de referencia para descomponer el problema en etapas. La programación dinámica es una técnica que se puede aplicar para resolver muchos problemas de optimización. La mayor parte de las veces, la programación dinámica obtiene soluciones con un avance en reversa, desde el final de un problema hacia el principio con lo que un problema grande y engorroso se convierte en una serie de problemas más pequeños y más tratables. 1.1 NATURALEZA RECURSIVA DE LOS CÁLCULOS EN LA PD Los cálculos en la PD se hacen recursivamente, en el sentido de la solución óptima de un subproblema se utiliza como una entrada para el siguiente subproblema. Para el momento en que resolvamos el último subproblema, tendremos a mano la solución óptima para todo el problema. La forma en la cual se hacen los cálculos recursivos depende de la forma en la cual descomponemos el problema original. En particular, los subproblemas por lo común se unen por medio de algunas restricciones comunes. A medida que avanzamos de un subproblema a otro, debemos dar razón de la variabilidad de estas restricciones.

Page 2: Programacion dinamica Deterministica

2. CARACTERÍSTICAS DE LAS APLICACIONES DE PROGRAMACIÓN

DINÁMICA A continuación veremos una explicación sobre las características que son comunes en la mayor parte de las aplicaciones de la programación dinámica. 2.1 CARACTERÍSTICA 1 El problema se puede dividir en etapas; cada etapa requiere una decisión. En muchos problemas de programación dinámica, la etapa es la cantidad de tiempo que pasa desde el inicio del problema, en ciertos casos no se necesitan decisiones en cada etapa. 2.2 CARACTERÍSTICA 2 Cada etapa tiene un número de estados asociados con ella. Por estado se entiende la información que se necesita en cualquier etapa para tomar una decisión óptima. 2.3 CARACTERÍSTICA 3 La decisión tomada en cualquier etapa indica cómo se transforma el estado en la etapa actual en el estado en la siguiente etapa. En muchos problemas, una decisión no determina con certeza el estado de la siguiente etapa; en lugar de ello, la decisión actual sólo determina la distribución de probabilidad del estado en la etapa siguiente. 2.4 CARACTERÍSTICA 4 Dado el estado actual, la decisión óptima para cada una de las etapas restantes no debe depender de estados previamente alcanzados o de decisiones previamente tomadas. A esta idea se le conoce como principio de optimalidad. 2.5 CARACTERÍSTICA 5 Si los estados del problema se han clasificado en uno de T etapas, debe haber una fórmula recursiva que relacione el costo o recompensa durante las etapas t, t+1,…, T con el costo o recompensa de las etapas t +1, t +2,…, T En esencia, la fórmula recursiva formaliza el procedimiento de marcha atrás. 2.6 Algunas Aplicaciones De La Programación Dinámica Determinística

• Modelo De La Ruta Más Corta

• Modelo De Volumen-Carga “Mochila”

• Modelo Del Numero De Empleados

• Modelo De Reemplazo De Equipos

• Modelo De Asignación De Recursos

• Modelo De Inventarios

Page 3: Programacion dinamica Deterministica

3. PROBLEMAS DE ASIGNACIÓN DE RECURSOS Los problemas de asignación de recursos, en los que se debe asignar una cantidad limitada de recursos entre varias actividades, se pueden resolver con frecuencia con programación dinámica. Recuerde que hemos resuelto esos problemas mediante programación lineal. Para usar programación lineal para asignar recursos, se deben hacer tres hipótesis: 3.1. Hipótesis 1 La cantidad de recursos asignados a una actividad puede ser

cualquier número no negativo. 3.2. Hipótesis 2 El beneficio obtenido de cada actividad es proporcional a la

cantidad de recursos asignados a la actividad. 3.3. Hipótesis 3 El beneficio obtenido con más de una actividad es la suma de

los beneficios obtenidos con las actividades individuales. Aún si no son válidas las hipótesis 1 y 2, la programación dinámica se puede usar para resolver con eficiencia los problemas de asignación de recursos cuando es válida la hipótesis 3 y cuando la cantidad de recursos asignados a cada actividad es elemento de un conjunto finito. 3.4 PROBLEMA GENERAL DE ASIGNACION DE RECURSOS

Suponga que tenemos w unidades de un recurso disponible, y T actividades a las que puede asignar este recurso. Si la actividad t se realiza en un nivel xt

(suponemos que xt debe de ser un número no negativo), entonces la actividad t usa gt(xt) unidades del recurso, y se obtiene el beneficio rt(xt). El problema de determinar la asignación de recursos que maximiza el beneficio total, sujeto a la disponibilidad de recurso puede formular como:

��� � �������

��

. � � ����� � � ��

��

(1)

Donde xt debe de ser el elemento de {0,1,2….}. Para resolver (1) con programación dinámica definimos a ft(d) como el beneficio máximo que se puede

Page 4: Programacion dinamica Deterministica

obtener de las actividades t, t+1, …..,T. podemos generalizar las formulas recursivas escribiendo.

������ � 0 para toda � ���� � ����� ����� ! ����"� # �����$%

(2)

Donde xt debe de ser entero no negativo que cumple con gt(xt) ≤ d. Sea xt(d) cualquier valor de xt que alcance ft(d). Para usar la Ecs. (2) para determinar una asignación optima de recursos a las actividades 1,2,…T comenzamos por determinar todas las fT(.) y las xT(.).

3.5 EJEMPLO:

Finco tiene 6000 dólares para invertir, y hay disponible tres inversiones. Si se invierte dólares dj dólares (en miles) en la inversión j, entonces se obtiene un valor presente neto, igual a rj (dj ), donde la rj(dj ) como sigue:

����� � 7�� ! 2 ��� ( 0

�)��) � 3�) ! 7 ��) ( 0

�+��+ � 4�+ ! 5 ��+ ( 0

���0 � �)�0 � �+�0 � 0

La cantidad colocada en cada inversión debe ser un múltiplo exacto de 1000 dólares. Para maximizar el valor presente neto que se obtiene en las inversiones, ¿cómo debe asignar Finco los 6000 dólares? Solución El interés de cada inversión no es proporcional a la cantidad invertida. Por ejemplo, 16= r1 (2) 2rj (1) =18. Entonces, no se puede usar la programación lineal para determinar una solución óptica a este problema. Matemáticamente, se puede expresar el problema de Finco como sigue:

��� ����� ! �)��) ! �+��+%

.. � �� ! �) ! �+ � 6

�0 entero no negativo �6 � 1,2,3.

Page 5: Programacion dinamica Deterministica

Naturalmente, si las rj (dj ) fueran lineales, tendríamos un problema como los de la mochila. Para formular el problema de Finco como de programación dinámica, comenzaremos identificándola etapa. La etapa se debe escoger de tal modo que cuando quede una etapa el problema sea fácil de resolver. Entonces, en vista de que se ha resuelto el problema para el caso en el que queda una etapa, debe sr fácil resolverlo cuando queden dos etapas, y así sucesivamente. Es evidente que sería fácil resolver un problema en el cual solo de dispusiera una de una inversión, por lo que definiremos la etapa t como representativa de un caso en el que los fondos se deban asignara las inversiones t , t + 1,……,3. Para una etapa dada, ¿Qué debemos conocer para determinar la cantidad óptica por invertir? Simplemente cuánto dinero queda disponible para las inversiones t, t+1,…,3. Así, definiremos el estado en cualquier etapa como la cantidad de dinero, en miles, disponible para inversiones t, t+1,…,3. Como nunca podremos tener más de 6000 dólares disponible, los estados disponibles en cualquier etapa son 0,1,2,3,4,5 y 6. Definiremos ft (dt) como el valor presente neto máximo (VPN) que se puede obtener invirtiendo dt miles de dólares en la inversiones t, t+1,…,3. También definiremos a xt (dt ) como la cantidad que se debe invertir en t ara alcanzar ft (dt). Iniciamos avanzando hacia atrás y calculamos f3(0),f3(1),…,f3(6), y a continuación determinamos f2(0),f2(1),…,f2(6). Como se dispone de 6000 dólares para invertir en 1,2,3, terminamos los cálculos al llegar f1(6). Entonces volvemos sobre nuestros pasos y determinamos la cantidad que se debería asignar a cada inversión. Cálculos De La Etapa 3. Primero determinamos f3(0),f3(1),…,f3(6). Vemos que f3(d3) se logra invirtiendo todo el dinero disponible (d3) en la inversión 3.

�+�0 � 0 �+�0 � 0

�+�1 � 9 �+�1 � 1

�+�2 � 13 �+�2 � 2

�+�3 � 17 �+�3 � 3

�+�4 � 21 �+�4 � 4

�+�5 � 25 �+�5 � 5

�+�6 � 29 �+�6 � 6

Cálculos De La Etapa 2. Para determinar f2(0),f2(1),…,f2(6). Vemos todas las cantidades posibles que se puedan colocar en la inversión 2. Para determinar

Page 6: Programacion dinamica Deterministica

f2(d2), sea x2 la cantidad invertida en 2. Entonces, se obtendrá un VPN de r2(x2) de la inversión 2, y un VPN igual a f3(d2-x2) de la inversión 3. Recuerde el principio de optimalidad. Como x2 se debe de escoger para minimizar el valor presente neto ganado con las inversiones 2 y 3 escribimos.

�)��) � ����: �)��) ! �+��) # �)% (3)

En la que x2 debe ser elemento de {0,1,…,d2}. Los cálculos para f2(0),f2(1),…,f2(6) y x2(0), x2(1),…, x2(6) se presentan en la tabla siguiente.

d2 x2 r2(x2) f3(d2-x2) VPN DE

INVERSIONES 2,3

0 0 0 0 0

1 0 0 9 9

1 1 10 0 10*

2 0 0 13 13

2 1 10 9 19*

2 2 13 0 13

3 0 0 17 17

3 1 10 13 23*

3 2 13 9 22

3 3 16 0 16

4 0 0 21 21

4 1 10 17 27*

4 2 13 13 26

4 3 16 9 25

4 4 19 0 19

5 0 0 25 25

5 1 10 21 31*

5 2 13 17 30

5 3 16 13 29

5 4 19 9 28

5 5 22 0 22

6 0 0 29 29

6 1 10 25 35*

6 2 13 21 34

6 3 16 17 33

6 4 19 13 32

6 5 22 9 31

6 6 25 0 25

Page 7: Programacion dinamica Deterministica

Cálculos De La Etapa 1. Según la Ec. (3), escribimos

���6 � ����; ����� ! �)�6 # ��%

d1 x1 r1(x1) f2(6-x1) VPN DE

INVERSIONES 1,3

6 0 0 35 35

6 1 9 31 40

6 2 16 27 43

6 3 23 23 46

6 4 30 19 49*

6 5 37 10 47

6 6 44 0 44

Determinación De La Asignación Óptima De Recursos. Como x1(6)*=49, la mayor ganancia en la etapa 1 Finco invierte 4000 dólares en la inversión 1, esto deja 2000 para las inversiones 2 y 3. Por lo tanto se buscar en la tabla la inversión de 2 en la etapa 2 con el mayor beneficio que es x2(2)*=19, 1000 dólares en la inversión 2 por lo tanto quedan 1000 para la inversión 3; x1(1) = 1; por lo tanto Finco puede alcanzar un valor presente máximo de 49000 dólares invirtiendo 4000 en la inversión 1 y 1000 dólares en la inversión 2 y 3. Representación En Forma De Red Este problema tiene un representación como red equivalente a determinar la ruta más larga de (1,6) a (4,0); por ejemplo el arco que uno a los nodos (2,4) y (3,1) tiene una longitud r2(3) = 16000 dólares que corresponde al invertir 3000 dólares en la inversión 2. Nótese que todos los pares de nodos en las etapas adyacentes están unidos con arcos. Por ejemplo, no hay que una los nodos (2,4) y (3,5). Después de todo si usted tiene solo tiene 4000 dólares disponibles para invertir en 2 y 3 ¿Cómo es posible tener 5000 dólares para la inversión 3? Según los cálculos, vemos que la ruta más larga desde (1,6) a (4,0) es la (1,6)-(2,2)-(3,1)-(4,0)

Page 8: Programacion dinamica Deterministica

4. BIBLIOGRAFIA

1. Introducción a La Investigación De Operaciones, Sexta Edición, Hamdy a. Taha, 1997

2. Investigación de operaciones, Wayne L. Winston

1,6

6

2,6

2,2

2,3

2,4

2,5

4,0

2,0

2,1

3,0

3,1

3,2

3,3

3,4

3,5

3,6