Este documento describe cómo resolver problemas de asignación de recursos utilizando programación dinámica. Explica que estos problemas involucran asignar una cantidad limitada de recursos entre varias actividades. La programación dinámica descompone el problema en etapas, calculando de forma recursiva la solución óptima para cada subproblema. También presenta un ejemplo numérico para ilustrar cómo aplicar este enfoque para maximizar los beneficios de invertir una cantidad fija de dinero en diferentes opciones.
HISPANIDAD - La cultura común de la HISPANOAMERICA
Asignación recursos PD
1. PROGRAMACIÓN DINÁMICA DETERMINISTA “ASIGNACION DE
RECURSOS”
Willfredo Valbuena Amado1,2, Cod. 273208, wvalbuenaa@unal.edu.co
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.
2. 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
3. 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:
5. (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
6. obtener de las actividades t, t+1, …..,T. podemos generalizar las formulas
recursivas escribiendo.
8. # $%
(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:
12. 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:
15. 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
16. 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
20. %
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)
21. 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