Está en la página 1de 34

Conceptos y ejemplos básicos de

Programación Dinámica

Wilson Julián Rodríguez Rojas


julianrodriguez1212@hotmail.com

Trabajo de Grado para Optar por el Título de Matemático

Director: Pervys Rengifo Rengifo


Ingeniero Universidad Nacional de Colombia

Fundación Universitaria Konrad Lorenz


Facultad de Matemáticas
Bogotá D.C.
2005
Introducción......................................................................................................................4
Programación dinámica...................................................................................................5
Ejemplos de funciones recursivas ....................................................................................6
Ejemplo 1.1:...................................................................................................................6
Ejemplo 1.2:...................................................................................................................6
Ejemplos de Programación Dinámica.............................................................................7
Ejemplo 1.3 (El problema de la diligencia) .....................................................................7
Teorema de optimalidad...............................................................................................12
Ejemplo 1.4: (Problema de la distribución de la inversión)...........................................13
Ejemplo 1.5: (Proble ma de la subdivisión óptima)........................................................17
Ejemplo 1.6: (Problema de Programación Lineal)........................................................23
Ejemplo 1.7: (Problema de Programación Lineal Entera)............................................25
Ejemplo 1.8: (Problema de Programación no Lineal)...................................................27
Comparación entre los métodos basados en ecuaciones recursivas de
avance y los basados en ecuaciones recursivas de retroceso........................................31
Ejemplo 1.9:.................................................................................................................31
Conclusión ......................................................................................................................33
Bibliografía.....................................................................................................................33

2
Resumen

Se presentan algunos resultados de la teoría matemática de Programación


Dinámica y se exponen ejemplos que muestran la gran versatilidad de la
técnica. También se muestra un esquema de demostración del Principio
de Optimalidad.

Abstract
Some results of the Mathematical theory of Dynamic Programming are
presented and some of the consequences of these results are exposed
through examples that demonstrate the great versatility this technique
owns; There is here also included a demonstration scheme of the
Optimal Principle.

3
Introducción

El presente trabajo comprende la exposición de la teoría y algunos


ejemplos de Programación Dinámica (P.D.). La P.D. está comprendida
dentro de un conjunto de técnicas matemáticas que a su vez forman parte
de un área más amplia, conocida como Investigación de Operaciones.
Esta última puede definirse como una ciencia interdisciplinaria que tiene
por objeto la búsqueda de estrategias que permitan obtener resultados
óptimos en el desarrollo de actividades por parte de sistemas hombre-
máquina (estos sistemas pueden estar formados exclusivamente por
hombres, por máquinas o por una combinación de los dos). Como se verá
más adelante, los problemas propios de la P.D. son aquellos que pueden
ser divididos en subproblemas, los cuales, a su vez, tienen una estructura
igual al problema original (en este sentido podría decirse que tienen una
estructura “fractal”). Para este propósito, el método consiste en dividir el
problema en etapas, resolver la primera de estas, utilizar esta solución
para resolver la etapa siguiente y continuar así sucesivamente hasta
encontrar la solución del problema en su totalidad.

Son características esenciales de la P.D. por un lado, la versatilidad con


respecto a la amplia gama de problemas que puede atacar y, por otra
parte, que la P.D. se limita a aportar un esquema de solución (ya
mencionado arriba) dejando al ingenio de quien resuelva el problema la
construcción del modelo matemático para realizar la optimización de cada
caso en particular. En este sentido el trabajo en P.D. está más en relación
directa con la labor del matemático que del ingeniero, pues este último no
necesita comprender la base teórica en la cual descansa el procedimiento,
sino únicamente conocer el algoritmo propio del problema particular que
pretende resolver.

Para lograr la comprensión de la técnica el trabajo se ha estructurado


sobre ejemplos que ilustran la versatilidad de la P.D., con este fín se
presentan soluciones de problemas propios del trabajo en Programación
Lineal, Programación Lineal Entera, Programación No Lineal etc. El
objetivo es más presentar la potencia de la P.D. que proponerla como la
panacea de los métodos de Investigació n de Operaciones, pues también se
verá que aunque funciona, en ocasiones la técnica puede resultar
impractica al momento de resolver problemas de cierta envergadura.

4
Programación dinámica

Las características propias de la Programación Dinámica (PD) como son:


el no tener un tipo específico de problemas sobre el cual operar, el carecer
de un algoritmo estándar de solución , etc.,hacen que exista una gran
dificultad en el momento de intentar dar una definición de ella. Sin
embargo, para comenzar, se debe tener alguna definición que, aunque
parcial e incompleta, sirva para ir demarcando el terreno al que se
circunscribirá este trabajo.

Definición 1.0 : La programación dinámica es un procedimiento


matemático diseñado principalmente para mejorar la eficiencia de
cálculo de problemas de programación matemática seleccionados,
descomponiéndolos en subproblemas de menor tamaño y por
consiguiente mas fáciles de calcular. La PD normalmente resuelve el
problema en etapas. Los cálculos en las diferentes etapas se enlazan a
través de cálculos recursivos de manera que se genere una solución
óptima factible a todo el problema. ∗

Para ayudar a aclarar algunos conceptos presentes en la definición


anterior y en el trabajo posterior se dan las siguientes definiciones:

Definición 1.1 (Máximo): sea {a k }k =1 , 2 ,3 ,..., n una sucesión finita, se dice


que am es el máximo de {ak }k =1, 2 , 3,..., n si a m ≥ a k para k = 1,2,3,..., n .

Definición 1.2 (Mínimo): sea {a k }k =1, 2,3,..., n una sucesión finita, se dice
que am es el mínimo de {a k }k =1 , 2 ,3 ,..., n si a m ≤ a k para k = 1,2,3,..., n .

Definición 1.3 (Función Recursiva): Sea f : N → S , donde N es el


conjunto de los números naturales y S cualquier conjunto, a F se le
denomina una sucesión en S, y se denota f (n ) = s n , donde sn se
denomina el n-ésimo elemento de la sucesión. A una función se le llama
función de recurrencia si es una sucesión donde el n-ésimo elemento se


Tomado de [Tah95]

5
obtiene a partir de un elemento o varios elementos anteriores de la
sucesión.

Ejemplos de funciones recursivas

Ejemplo 1.1:
Interés Compuesto
Supóngase que se consigna $100 en una cuenta que produce un
rendimiento del 5% mensual. ¿Cuál será el monto 4 meses mas tarde?.
Se define
M i = monto en el i-ésimo mes.
Y entonces se tiene
M 0 = 100
M i = M i −1 * 0.05 + M i −1 = 1.05M i −1 i = 1,2, . . .

a la pareja (M 0 = 100 , M i = 1.05 M i −1 ) , se le llama fórmula de recurrencia.


Y esto implica:
M1 = 1.05*100
M2 = 1.05*(1.05*100) = 1.05 2 *100
M3 = 1.05*(1.05 2 *100) = 1.05 3 *100
M4 = 1.05*(1.05 3 *100) = 1.05 4 *100 = 121.55

Ejemplo 1.2:
La sucesión de Fibonacci se define según la fórmula recursiva:
s0 = 1
s1 = 1
sn = s n −1 + s n −2 para n = 2,3,4,…

Si se desarrolla la formula de recurrencia general se obtiene

S2 = 2
S3 = 3
S4 = 5
S5 = 8 etc.

6
Ejemplos de Programación Dinámica

El siguiente ejemplo fue desarrollado por el profesor Harvey M. Wagner


cuando estaba en la universidad de Stanford con el fin de ilustrar los
elementos y la terminología propios de la PD.

Ejemplo 1.3 (El problema de la diligencia)


Una diligencia debe atravesar el oeste estadounidense en plena fiebre del
oro. Cada uno de los tramos de su recorrido está cubierto por una póliza
de seguro, cuyo costo es directamente proporcional al riesgo presente
durante el viaje. El recorrido se inicia en la ciudad A y tiene como destino
la ciudad J. La figura 1.1 ilustra la situación.

Los números en los arcos indican el costo de la póliza que cubre el viaje
entre las dos ciudades, por ejemplo, la póliza del viaje entre A y C tiene
un costo de 3. El conductor supone que la ruta más segura es aquella para
la cual la suma total de los costos de las pólizas sea mínima.

7
1
B 4 E
6 4
2 3
3
6 H
4 2
C F
A 3
4 J
4 3 4
3
1 I
3
D G
5
Figura 1.1

7
Solución del problema

En primer lugar debemos notar que la estrategia de escoger, en cada


etapa, la ruta con el costo mínimo no conduce a la solución óptima, pues
al seguir esta táctica se obtiene la ruta A → B → F → I → J la cual tiene un
costo total de 13. Sin embargo un pequeño sacrificio en una etapa puede
conducir a mejores resultados más adelante. Para este caso tenemos que
A →D → F ofrece un mejor resultado que A → B → F.

Un procedimiento que sí conduce a encontrar la solución óptima es la


enumeración exhaustiva de todas las posibilidades, las cuales en este caso
son: 3x3x2 = 18. Se procedería de la siguiente manera:

Ruta 1. A → B → E → H → J costo total 13


Ruta 2. A → B → E → I → J costo total 17
Μ
Ruta 18. A → D → G → I → J costo total 15

Recuérdese que la definición de PD habla de mejorar la eficiencia de


cálculo y por lo tanto , se observa que la enumeración exhaustiva de casos
no es eficiente porque, por ejemplo, al calcular los costos de las rutas 1 y
2 se repite el trabajo correspondiente al segmento A→ B → E y a su
aporte al costo total, que en este caso es de 9. Un procedimiento más
eficiente “guarda” este resultado intermedio para evitar la redundancia en
los cálculos, este es precisamente el enfoque de la PD para este tipo de
problemas.

En primer lugar debe notarse que cualquiera que sea la solución la


diligencia deberá realizar 4 etapas de camino. Por lo tanto se resolverá el
problema para cada una de las etapas , agregando en cada paso una etapa
más hasta llegar a la primera y con ello a la solución del problema. Sin
embargo, antes de comenzar a resolver el problema se introducirán
algunos conceptos que, aunque excesivos para este problema en
particular, (pues este problema puede resolverse desde el punto de vista
de la PD pero sin tanta para fernalia) van ambientando los elementos
propios del enfoque de la PD.

Sean x n (n = 1,2,3) las variables de decisión que representan la ciudad por


la cual deberá pasar la diligencia en la etapa n. Por ejemplo, el conjunto
de valores que puede tomar x 2 es { E, F, G }, los elementos de este

8
conjunto se denominan estados de la etapa 2. Entonces la ruta
seleccionada es A → x1 → x2 → x3 → J.

Sea f n ( s, x n −1 ) el costo total de la mejor política global para las etapas


anteriores, dado que la diligencia se encuentra en la ciudad s y acaba de
llegar de x n−1 .

Dados s y n, sea x *n −1 el valor de x n −1 (no necesariamente único) que


minimiza f n ( s, x n −1 ) , y sea f n* (s ) el valor mínimo correspondiente
de f n ( s, x n−1 ) . Entonces

f n* ( s) = mín f n (s , xn −1 ) = f n ( s, x *n −1 ) (1)
x
n
en donde

f n ( s, x n −1 ) = costo inmediato (etapa n) + costo mínimo etapas 1,2, . . ., n-


1

en otras palabras

f n ( s, x n −1 ) = C + f n ( s, x *n −1 ) (2)
sx n −1

Con la notación introd ucida se tiene que el objetivo es encontrar f 4* ( J ) .

Si alguna de estas definiciones no ha logrado ser entendida


completamente esto deberá lograrse viendo el proceso de solución, el cual
extrae la información de la figura 1.1 y de las tablas que se vayan
generando:

Para n = 1, x 0 = A y no existen opciones de caminos para s ∈{ B, C , D }


por lo tanto se tiene n únicamente soluciones óptimas

9
s f 1* ( s) x *0
B 2 A
C 4 A
D 3 A
Tabla 1.1

Para n = 2 se tiene, por ejemplo:

f 2 ( E , B ) = cEB1 + f 1* ( B ) = 7+2 = 9

esta ecuación tiene el siguiente significado: el costo mínimo para llegar a


E desde A pasando por B es igual al costo de ir de B a E ( c EB ) – este dato
aparece en la figura 1.1- más el costo mínimo del viaje de A hasta B
( f 1* ( B) ) -este dato se toma de la tabla 1.1, en general se tomará de la
tabla anterior -. De esta forma se calculan todas las entradas de la tabla
1.2.

La tabla 1.2 nos permite ver ya un resultado interesante: en este momento


hemos resuelto el problema si el destino de la diligencia fuera alguna de
las ciudades E, F o G. Por ejemplo, el costo mínimo para ir de A a E es de
7 ( f 2* ( E ) ) y se consigue llegando a E desde C o D ( x1* ), si por ejemplo se
llega por D la tabla 1.1 nos informa que a D debe llegarse en la ruta
óptima desde A, aunque este último resultado es trivial la atención se
centra en la lógica que sigue la construcción y lect ura de las tablas.

x1 f 2 ( s, x1 ) = c sx1 + f1* ( x1 )
s B C D f 2* ( s) x1*
E 9 7 7 7 CoD
F 6 6 4 4 D
G 8 8 8 8 BoCoD
Tabla 1.2

10
Para n=3 se tiene

x2 f 3 ( s, x2 ) = csx2 + f 2* ( x2 )
s E F G f 3* ( s) x *2
H 8 10 11 8 E
I 11 7 11 7 F
Tabla 1.3

Y finalmente para n=4

x2 f 4 ( s, x3 ) = csx3 + f 3* ( x3 )
s H I f 4* ( s) x3*
J 11 11 11 HoI
Tabla 1.4

De la tabla 1.4 se concluye que el costo mínimo es 11 y que puede


llegarse a J tanto de H como de I. Si se escoge la ruta que llega por H de
la tabla 1.3 se tiene que la ruta óptima llega a H a través de E. A su vez la
tabla 1.2 informa que existen rutas óptimas que llegan a E a través de C
tanto como de D. Finalmente, si se escoge la ruta que llega a E por C la
tabla 1.1 indica que la ruta optima llega a C a través de A (trivial). Con la
información anterior se concluye que una ruta óptima es

A →C →E →H →J

Análisis similares arrojan las siguientes rutas óptimas alternativas

A →D→E →H→J
A →D →F → I →J

Obviamente todas tienen un costo total de 11. ∗


Nota: este mismo ejemplo se encuentra resuelto en la página 533 de [Hil02] siguiendo
un procedimiento conocido como de retroceso, el cual consiste en atacar el problema de
adelante hacia atrás. Sin embargo, se ha considerado que el procedimiento de avance,
seguido aquí, es mas intuitivo. Más adelante se discutirán las ventajas de cada uno.

11
Teorema de optimalidad

El ejemplo 1.3 también permite ambientar la discusión de la base


fundamental de la PD que es el llamado Teorema (o principio) de
optimalidad, cuyo enunciado es el siguiente: Una política óptima solo
puede estar formada por subpolíticas óptimas. En esencia lo que significa
es que las diferentes restricciones de la solución al problema total
(política óptima) a cada uno de los subproblemas (subpolítica) es
también solución óptima de dicho subproblema. Acudiendo al ejemplo, se
tiene que la ruta A →C → E → H → J es una política óptima y que
C → E → H es una subpolítica de A → C → E → H → J. Lo que afirma el
teorema es que, en estas condiciones, C → E → H es a su vez subpolítica
óptima, o sea, que es solución óptima del subproblema que surge al
considerar como punto inicial C y como destino H. La justificación es
intuitiva: supóngase que la afirmación es falsa, existirá entonces un nodo
X tal que C → X → H es mejor que C → E → H, pero de ello surge una
contradicción, pues en ese caso se tendría que A → C → X → H → J sería
mejor que A→ C → E → H → J con lo cual esta última no sería política
óptima.

Con esto se tiene una motivación, no a una demostración, sino a un


esquema de demostración del principio de optimalidad. Consiste en una
generalización de lo discutido en el párrafo anterior: sea x1 , x2 , . . . ,xk, . . .
,xk+r, . . . ., xn una sucesión de soluciones óptimas a los subproblemas en
los cuales se ha dividido uno mayor o, en otras palabras, una solución
óptima del problema general. Supóngase además que xk , . . . ,xk+r no
constituyen una solución optima al subproblema restringido que las posee
como variables de decisión, entonces deben existir x’ k , . . . ,x’k+r tales que
constituyen una solución óptima del mencionado subproblema, con lo
cual se tendría que x1 , x2, . . . ,x’ k , . . . ,x’k+r, . . . ., xn sería una solución
mejor que x1 , x2 , . . . ,xk , . . . ,xk+r, . . . ., xn y esto contradice el hecho de
que esta última sea una solución óptima. Este esquema debe ser adaptado
para que constituya una demostración de cada caso particular al cual se
esté aplicando la PD. Esto último no debe verse como una dificultad
gratuita, sino como un paso adelante en el empeño por adquirir el
dominio total de las características del modelo matemático particular que
se pretende aplicar.

12
Como ya se dijo, el ejemplo 1.3 fue creado con el propósito de introducir
los elementos y la terminología propios de la P.D. Se tienen entonces las
siguientes características:

1. El problema se puede dividir en etapas que requieren una política


de decisión en cada una de ellas. Esta es quizá la principal
característica de los problemas de P.D. y se verá que la esencia de
la solución será identificar las etapas, en algunos ejemplos, como
el anterior, estas serán evidentes, sin embargo, se verán casos en
los cuales esto no será siempre así.
2. Los estados son las distintas condiciones posibles en las que se
puede encontrar el sistema en cada etapa del problema.
3. El procedimiento de solución está diseñado para encontrar una
política óptima para el problema completo, a partir de un
procedimiento que inicia analizando una etapa y que en cada uno
de los pasos agrega una nueva, hasta abarcar el problema en su
totalidad.
4. La decisión inmediata óptima depende sólo del estado actual y no
de cómo se llegó ahí. En el ejemplo anterior, esta afirmación se
evidencia en el hecho de que en cada paso únicamente se
consultaba la tabla anterior y no el conjunto total de tablas.
5. El procedimiento de solución emplea una relación recursiva que
identifica la política óptima para la etapa n, dada la política óptima
para la etapa n-1. Para el caso del ejemplo anterior esta relación
tenía la forma :

f n ( s, x n−1 ) = C + f n ( s, x *n −1 ) (3)
sx n−1

Con la ayuda de estas nuevas herramientas conceptuales se atacará otro


problema típico de la P.D.

Ejemplo 1.4: (Problema de la distribución de la inversión)


Una corporación recibe propuestas de sus tres plantas respecto a la
posible expansión de las instalaciones. La corporación tiene un
presupuesto de 5 millones de dólares para asignarlo a las tres plantas.
Cada planta expone sus prop uestas indicando el costo total (C) y el
ingreso total (R) para cada propuesta. En la tabla 1.5 se muestran los
costos e ingresos (en millones de dólares). Las propuestas de costo cero

13
indican la posibilidad de no asignar fondo alguno a la planta. El objetivo,
obviamente, es maximizar el ingreso total resultante.

Planta 1 Planta 2 Planta 3


Propuesta C1 R1 C2 R2 C3 R3
1 0 0 0 0 0 0
2 1 5 2 8 1 3
3 2 6 3 9 - -
4 - - 4 12 - -
Tabla 1.5

Las plantas definen las etapas. Las variables de decisión x1, x 2 y x3 se


definen de la siguiente manera:

x1 = monto de capital asignado a la planta 1.


x 2 = monto de capital asignado a las plantas 1 y 2.
x3 = monto de capital asignado a las plantas 1, 2 y 3.

Una solución es una tripla (P1 , P2 , P3 ) donde P i corresponde a la propuesta


que se escoge de la planta i, por ejemplo (2, 3, 1) significa escoger la
propuesta 2 para la planta 1, la propuesta 3 para la planta 2 y la propuesta
1 para la planta 3; esta solución tendría un costo de 1 + 3 + 0 = 4 millones
y produciría un ingreso de 5 + 9 + 0 = 15 millones. Existen solucione no
factibles como (3, 4, 2) pues tiene un costo de 7 millones.

Solución del problema

Como x1 corresponde al monto que se asignará a la planta 1, se deben


considerar todas las posibilidades desde hacer x1 = 0 lo que significaría
emplear los $5 millones en las otras dos plantas, hasta hacer x1 = 5 en
cuyo caso se asignaría la totalidad de los recursos a la planta 1 (Este
último caso, evidentemente, no corresponde a una solución óptima, pues
la máxima cantidad que puede aprovechar la planta 1 es $2 millones). Se
recurre a la siguiente notación:

Rn ( Pn ) = ingreso de la propuesta Pn en la etapa n.


f n ( xn ) = rendimiento óptimo de las etapas 1, 2, . . . , n dado el estado x n .

14
Pj* = propuesta óptima asociada a f n ( xn )

Por lo tanto se tiene

f 1 ( x1 ) = máx { R1 ( P1 ) } (4)
propuestas
factiblesP1

en esta ecuación se relacionan dos variables diferentes: por un lado x1 ,


que como ya se dijo corresponde a la cantidad asignada a la planta 1, y
por otro lado P1 que representa la propuesta que se elige de las
presentadas por la planta 1. Dependiendo del valor de x1 no todas las
propuestas son factibles, por ejemplo para x1 = 1 la propuesta P1 = 3 no
es factible pues tiene un costo de 2. La tabla 1.6 resume la relación de
todos los posibles valores de x1 con todos los posibles valores de P1 , los
asteriscos representan la no factibilidad de algunos casos.

n=1
R1 ( P1 )
x1 P1 = 1 P1 = 2 P1 = 3 f 1 ( x1 ) P1*
0 0 * * 0 1
1 0 5 * 5 2
2 0 5 6 6 3
3 0 5 6 6 3
4 0 5 6 6 3
5 0 5 6 6 3
Tabla 1.6

La tabla 1.5 informa cual es la política óptima que debe seguirse para
cada uno de los posibles valores de x1. Puede parecer redundante en su
construcción pues para cada estado la propuesta más alta que puede
cubrirse es la que genera el mayor ingreso, sin embargo, como ocurre en
la realidad, no siempre la mayor inversión genera el más alto beneficio.

Ahora se define la parte faltante de la ecuación recursiva y que


corresponde a las etapas 2, 3, . . .

15
f n ( xn ) = máx { Rn ( Pn ) + f n−1 ( xn−1 ) } (5)
propuestas
factiblesPn

pero como f n ( xn ) es función de x n exclusivamente, el lado derecho


también debe serlo, esto se consigue teniendo en cuenta que

x n −1 = x n − C n ( Pn ) (6)

donde Cn ( Pn ) es el costo de la propuesta Pn en la etapa n. Esta ecuación


ilustra la forma en que opera el procedimiento recursivo: de un dado x n se
asigna una parte ( C n ( Pn ) ) para cubrir la propuesta Pn de la etapa n y la
cantidad restante ( x n −1 = x n − C n ( Pn ) ) se destina a cubrir las propuestas
de las etapas 1,2, . . . ,n-1. Se tiene, entonces:

f n ( xn ) = máx { Rn ( Pn ) + f n−1 ( x n − Cn ( Pn )) } n = 2,3, . . . (7)


propuestas
factiblesPn

tabulando para n=2

R2 ( P2 ) + f1 ( x 2 − C2 ( P2 ))
x2 P2 = 1 P2 = 2 P2 = 3 P2 = 4 f 2 (x 2 ) P2*
0 0+0=0 * * * 0 1
1 0+5=5 * * * 5 1
2 0+6=6 8+0=8 * * 8 2
3 0+6=6 8+5=13 9+0=9 * 13 2
4 0+6=6 8+6=14 9+5=14 12+0=12 14 2o3
5 0+6=6 8+6=14 9+6=15 12+5=17 17 4
Tabla 1.7

Como en el ejemplo anterior, la tabla 1.5 contiene la solución total del


problema restringido a las dos primeras etapas, esto es, si el problema
total se limitara a las plantas 1 y 2, ya estaría resuelto, pues en la fila
correspondiente a x 2 = 5 vemos que se obtiene una ganancia máxima de
17, siguiendo la propuesta 4 de la planta 2 y como por la tabla 1.5
sabemos que esta tiene un costo de 4 tenemos x1 = 5 – 4 = 1 y para x1 = 1
la tabla 1.6 nos dice que se debe seguir la propuesta 2 de la planta 1. Se

16
tendría entonces la solución al problema reducido (2,4) que tiene un costo
de 5 millones y, como ya se dijo, reporta una ganancia de 17 .

La tabla para la última etapa posee solamente una fila, pues al no haber
etapas restantes no deben considerarse todas las posibilidades de
inversión sino, únicamente, el caso x3 =5.

R3 ( P3 ) + f 2 ( x3 − C 3 ( P3 ))
x3 P3 = 1 P3 = 2 f 3 (x 3 ) P3*
5 0 + 17 = 17 3 + 14 = 17 17 1o2
Tabla 1.8

Se tiene, por lo tanto, de la tabla 1.8, que el ingreso máximo es de 17


millones, el cual se obtiene implementando las propuestas 1 o 2 de la
planta 3. En el caso de escogerse la propuesta 1 la cual, según la tabla 1.5
tiene un costo de 0 se tiene x 2 = 5 – 0 = 5, y en la tabla 1.7 se ve que para
este valor de x 2 se debe implementar la propuesta 4 de la planta 2, la
cual, según la tabla 1.5 tiene un costo de 4, con lo cual se tiene x1 = 5 – 4
= 1, finalmente, la tabla 1.6 indica que para este valor de x1 el
procedimiento óptimo es implementar la propuesta 2 de la planta 1.
Resumiendo la discusión anterior, se tiene como una solución optima (2,
4, 1) . Un procedimiento análogo permite encontrar otras dos soluciones
óptimas: (3, 2, 2) y (2, 3, 2), cada una de las cuales reporta ingresos de 17
millones.

Los dos últimos ejemplos comunican la sensación de que la P.D. consiste


en la resolución de problemas que involucran var iables discretas y que
son susceptibles de una representación tabular, los ejemplos que se
exponen a continuación muestran que ese no es el hecho.

Ejemplo 1.5: (Problema de la subdivisión óptima)


El problema consiste en dividir una cantidad q, mayor que cero, en n
partes. El objetivo es determinar la subdivisión óptima de q que maximiza
el producto de las n partes.

17
Solución del problema

Sea x i la i-ésima parte de q ( i = 1, 2 , . . . , n ). Entonces el problema


puede expresarse de la siguiente forma
n
maximizar p = ∏x
i =1
i

n
sujeto a ∑x
i =1
i
= q, x i > 0 para toda i

Se hacen las siguientes definiciones:

1. La etapa i representa la i-ésima parte de q.


2. El estado yi es la parte de q que se asigna a las etapas 1, 2, . . . , i.
Es evidente que, según esta definición, yn = q .
3. La alternativa xi es la parte de q asignada a la etapa i.

Sea f i ( y i ) el valor óptimo de la función objetivo para las etapas 1, 2, . . .


,i dado el estado yi y sea xi* el xi asociado con f i ( y i ) . Por lo tanto las
ecuaciones recursivas asumen la siguiente forma

f 1 ( y1 ) = máx{ x1} (8)


x1 ≤ y1

f i ( y i ) = máx{ x i * f i−1 ( yi − xi )} (9)


xi ≤ y1

Para i=1 es evidente que f 1 ( y1 ) = máx{ x1} = y1 y por lo tanto x1* = y1 .


x1 ≤ y1

Para i = 2 se debe calcular máx{ x 2 * f 1 ( y 2 − x2 )} pero como f 1 ( y1 ) = y1


x2 ≤ y2
entonces se tiene
f 2 ( y 2 ) = máx{ x2 * ( y2 − x 2 )} (10)
x2 ≤ y2
o
f 2 ( y2 ) = máx{ x2 y2 − x 22 )} (11)
x2 ≤ y2

para encontrar este máximo se acude al cálculo elemental y se sigue el


conocido recurso de derivar e igualar a cero, como la ecuación es de una

18
parábola que abre hacia abajo no deben realizarse más cálculos. Se define
la función h como:

h( x2 ) = x 2 y2 − x 22 (12)
entonces
h' ( x 2 ) = y 2 − 2x2 (13)

se resuelve la ecuación h' ( x2 ) = 0 y se tiene

x *2 = y2 / 2 (14)

como consecuencia de esto se tiene que

x1* = y 2 / 2 (15)

que es la conocida solución para el caso n = 2. De donde

f 2 ( y2 ) = y22 / 4 (16)

Para i = 3 se debe calcular f 3 ( y3 ) = máx{ x3 * f 2 ( y 3 − x3 )} lo cual,


x3 ≤ y3
aplicando el resultado que se acaba de obtener para la etapa 2, es igual a

f 3 ( y3 ) = máx{ x3 * ( y3 − x3 ) 2 / 4} (17)
x3 ≤ y3
o
f 3 ( y3 ) = máx{( y32 x3 − 2 y 3 x32 + x 33 ) / 4} (18)
x3 ≤ y3

Se define h ( x3 ) = ( y 32 x3 − 2 y3 x32 + x33 ) / 4 y se procede como en el caso


anterior:

h' ( x 3 ) = ( y 32 − 4 y 3 x3 + 3x32 ) / 4 = 0 (19)

factorizando y trasponiendo el 4

( y 3 − 3 x3 )( y3 − x3 ) = 0 (20)

19
Se tienen, en consecuencia, dos soluciones: x3 = y 3 /3 y x3 = y 3 . El
cálculo de la segunda derivada permitirá determinar la raíz correcta
aunque el modelo ya insinúa que se trata de la primera.

h' ' ( x3 ) =(-4 y3 +6 x3 )/4 (21)


h' ' ( y3 / 3) = − y 3 / 2 < 0 (22)
h' ' ( y3 ) = y3 / 2 > 0 (23)

Estos resultados confirman la predicción hecha. Se tiene el siguiente


conjunto de resultados:
x3* = y3 /3 (24)
f 3 ( y3 ) = y33 /27 (25)

Los cálculos realizados con i = 1, 2 y 3 insinúan que para cada etapa i los
resultados siguen el siguiente patrón:

xi* = yi / i (26)
f i ( yi ) = ( y i / i ) i (27)

Se recurrirá a la inducción matemática para demostrar este hecho. Para i =


1 ya se tiene el resultado. Supóngase que se cumple para i y calcúlese
para i + 1.

f i +1 ( yi +1 ) = máx {x i +1 * f i ( yi +1 − xi +1 )} (28)
xi +1 ≤ y+1 1

que aplicando la hipótesis de inducción se transforma en

f i +1 ( yi +1 ) = máx {xi +1 * (( y i +1 − xi +1 ) / i ) i } (29)


xi+ 1 ≤ y +11
definiendo
h( xi+1 ) = x i+1 * (( y i+1 − xi+1 ) / i ) i (30)

y haciendo los respectivos cálculos

h' ( xi +1 ) = (( yi +1 − x i +1 ) / i) i − xi +1 (( y i +1 − xi +1 ) / i ) i −1 = 0 (31)

20
factorizando

(( y i+1 − xi+1 ) / i ) i−1 (( y i+1 − xi+1 ) / i − xi +1 ) = 0 (32)

el modelo permite descartar la posibilidad xi +1 = y i +1 en consecuencia


solo es necesario resolver

( y i +1 − xi +1 ) / i − x i +1 = 0 (33)

que da como resultado

xi*+1 = yi +1 /(i + 1) (34)

con lo cual se tiene

i
 y 
 yi +1 − i +1  i +1
y i +1
 i + 1   y i +1 
f i +1 ( yi +1 ) = * =  (35)
i +1  i   i + 1
 
 

con lo cual finaliza la demostración. Este resultado permite pasar


directamente a la evaluación de la etapa n.

Para i = n se tiene
x *n = y n / n = q / n (36)

( n − 1) ( n − 1)
y n −1 = y n − xn = y n − y n / n = yn = q (37)
n n

la fórmula xi* = yi / i permite concluir que x *n −1 = y n −1 /( n − 1) = q / n y por


lo tanto

n −1 q ( n − 2)
y n −2 = y n −1 − xn −1 = q− = q (38)
n n n

21
de donde, aplicando la misma fórmula

x *n−2 = q / n (39)
esto permite calcular
n−2 q n −3
y n −3 = y n −2 − x *n − 2 = q− = q (40)
n n n

Continuando estos cálculos se ve que xi* = q / n para todo i =1,2, . . . ,n y


con esto se concluye el producto máximo es

( q / n) n

lo cual confirma el resultado anticipado por la fórmula (27).∗

La utilización del cálculo en la solución de este ejemplo muestra que la


técnica de la P.D. se limita a la descomposición en etapas pero no dice
nada acerca de la forma como se optimiza el problema en cada etapa.
Refiriéndose a esta característica de la P.D. en la página 533 de [Hil02]
aparece la siguiente afirmación: “La P.D. se trata de un enfoque de tipo
general para la solución de problemas y las ecuaciones específicas que
se usan se deben desarrollar para que representen cada situación
individual. Entonces, se necesita cierto grado de creatividad y un buen
conocimiento de la estructura general de los problemas de P.D. para
reconocer cuando y como se puede resolver un problema por medio de
estos procedimientos”.

Solución de problemas de Programación lineal

El problema

maximizar z = c1 x1 + c 2 x 2 + ... + c p x p


Nota: este ejemplo se encuentra resuelto en la página 425 de [Tah95] siguiendo un
procedimiento de retroceso, el procedimiento de avance, seguido aquí, simplifica los
cálculos.

22
sujeto a
a11 x1 + a12 x2 + ... + a1 p x p ≤ b1
a 21 x1 + a 22 x2 + ... + a 2 p x p ≤ b2
ΜΛΛΛΜ ΛΛΛΜ ΛΛΛΜ ΛΜ
a m1 x1 + a m 2 x 2 + ... + amp x p ≤ bm
x1 , x 2 ,..., x p ≥ 0

puede formularse como un problema de P.D. Cada actividad j (j = 1, 2, . .


. ,p) se considera como una etapa. El nivel de actividad x j ( ≥ 0 )
representa la alternativa en la etapa j. Como en el ejemplo anterior, al
tratarse de variables continuas, cada etapa posee un número infinito de
alternativas dentro del espacio factible. Los estados pueden definirse
como las cantidades de recursos que se asignan a la etapa actual y a las
anteriores. Una diferencia con los problemas resueltos hasta el momento
radica en el hecho de que al existir m recursos los estados deben
representarse con un vector de m dimensiones.

Sean (v1 j , v2 j ,..., vmj ) los estados del sistema en la etapa j, o sea, las
cantidades de los recursos 1, 2, . . . , m, asignadas a las etapas 1, 2, . . . , j.
Sea f j (v1 j , v2 j ,..., vmj ) el valor óptimo de la función objetivo para las
etapas 1, 2, . . . ,j dados los estados v1 j , v 2 j ,..., v mj . Por lo tanto
f1 (v11, v21 ,..., vm1 ) = máx { c1x1} (41)
0 ≤ ai 1x1 ≤v i1
i =1, 2 ,..., m

f j (v1 j , v2 j ,..., vmj ) = máx { c j x j + f j −1 (v1 j − a1 j x1 j ,..., vmj − amj xmj ) },


0 ≤ aij x j ≤vij
i =1, 2 ,..., m

j = 2, 3, . . . ,p (42)

donde 0 ≤ vij ≤ bi para todas i y j.

Ejemplo 1.6: (Problema de Programación Lineal)


Resolver
maximizar z = 20 x1 + 16x 2

23
sujeto a
5x1 + 3 x2 ≤ 105
2 x1 + 4x 2 ≤ 70
x1, x2 ≥ 0

Solución del problema

A partir de (41) se tiene


f 1 (v11 , v21 ) = máx {20 x1 }
0 ≤5 x1 ≤v11
0 ≤2 x1 ≤ v21

v v 
Como 5 x1 ≤ v11 y 2 x1 ≤ v21 se concluye que x1 ≤ mín  11 , 21  pero
 5 2 
v v 
como se trata de maximizar se tiene x1 = mín  11 , 21  y por lo tanto
5 2 
 v11 v21 
f1 ( v11 , v12 ) = 20 mín  ,  (43)
 5 2 

Resta hacer los cálculos de la segunda etapa:

  v − 3 x2 v 22 − 4x 2 
f 2 (v12 , v22 ) = máx 16x2 + 20mín 21 ,  (44)
0 ≤3 x2 ≤ v1 2
0 ≤ 4 x2 ≤v2 2   5 2 

pero se tiene v12 = 105 y v 22 = 70 , entonces, 3x 2 ≤ 105 y 4 x2 ≤ 70 lo


cual equivale a x 2 ≤ 35 / 2 . Se tiene

 105 − 3 x2 70 − 4 x 2 
f 2 ( v12 , v 22 ) = máx 16x 2 + 20mín ,  (45)
0 ≤ x2 ≤35 / 2
  5 2 
105 − 3x 2 70 − 4 x2
Para 0= x 2 ≤ 35 / 2 es necesario resolver ≤ que tiene
5 2
como solución x2 ≤ 10 . Con lo cual se tiene

24
 105 − 3 x2 
  0 ≤ x 2 ≤ 10 
5
f 2 (v12 , v22 ) = máx16x 2 + 20  (46)
  70 − 4 x2 10 ≤ x ≤ 35 / 2 
  2
2

o de forma equivalente

420 + 4x 2 0 ≤ x2 ≤ 10 
f 2 ( v12 , v 22 ) = máx   (47)
700 − 24 x2 10 ≤ x 2 ≤ 35 / 2 

En el intervalo [0,10] la función es creciente y por lo tanto tiene su


máximo en x 2 = 10 con un valor de 460; en [10,35/2] la función es
decreciente de donde el máximo está también en x2 = 10 y tiene el mismo
valor, de donde se concluye que en [0,35] el máximo se localiza en
x2 = 10 y tiene un valor de 460.
Para obtener x1 se tiene en cuenta que:

v11 = v12 − 3x2 = 105 − 30 = 75


y
v 21 = v 22 − 4 x 2 = 70 − 40 = 30

v v 
pero como x1 = mín  11 , 21 entonces x1 = 15 .
5 2 

Una leve variación a procedimiento anterior permite resolver problemas


de Programación Lineal entera, esto se ilustra en el siguiente ejemplo.

Ejemplo 1.7: (Problema de Programación Lineal Entera)

Resolver

maximizar z = 8 x1 + 7 x2

25
sujeto a
2 x1 + x2 ≤ 8
5x1 + 2x 2 ≤ 15
x1, x2 enteros no negativos

Solución del problema

f 1 (v11 , v21 ) = máx {8 x1} x1 entero


0 ≤ 2 x1 ≤v11
0 ≤5 x1 ≤ v21

v v 
Como 2 x1 ≤ v11 y 5x1 ≤ v21 se concluye que x1 ≤ mín  11 , 21  además
2 5 
tratándose de un problema de maximización con valores enteros se tiene
  v v 
x1 =  mín  11 , 21  (donde x representa la parte entera de x) y por lo
  2 5 
tanto
  v v 
f 1 ( v11 , v12 ) = 8 mín 11 , 21  (48)
  2 5 

Dado que v12 = 8 y v 22 = 15 para la etapa 2 se tiene :

  8 − x2 15 − 2 x2 
f 2 (v12 , v22 ) = máx 7 x2 + 8mín  ,   (49)
0 ≤ x2 ≤8
0 ≤ 2 x2 ≤15    2 5 

las desigualdades x 2 ≤ 8 y 2 x 2 ≤ 15 equivalen a x2 ≤ 7 , entonces para


8 − x2 15 − 2 x2
este rango resolvemos la desigualdad ≤ que tiene como
2 5
solución x2 ≥ 10 por lo tanto se tiene

 15 − 2 x2 
f 2 (v12 , v22 ) = máx 7 x2 + 8  (50)
0 ≤ x2 ≤7
  5 

La tabla 1.9 permite encontrar la solución de (50)

26
15 − 2 x2 
x2 7 x 2 + 8 
 5 
0 24
1 23
2 30
3 29
4 36
5 43
6 42
7 49
Tabla 1.8

se ve que el máximo se consigue con x 2 =7 y que tiene un valor de 49.


Como

 8 − x2 15 − 2x 2   1 1 
x1 = mín  ,  entonces x1 = mín  ,  = 0 .
  2 5    2 5 

Un procedimiento similar al seguido en los dos ejemplos anteriores sirve


también para resolver algunos problemas de programación no lineal como
se verá en el siguiente ejemplo.

Ejemplo 1.8: (Problema de Programación no Lineal)

Resolver el problema de Programación no Lineal:

maximizar z = 7 x12 + 6x1 + 5 x22


sujeto a
x1 + 2 x2 ≤ 10
x1 − 3 x2 ≤ 9
x1 , x2 ≥ 0

27
Solución del problema

f 1 (v11 , v21 ) = máx {7 x12 + 6 x1 } (51)


0 ≤x1 ≤v11
0 ≤x1 ≤v 21

entonces x1 ≤ mín{v11 ,v21 }. Sea h( x1 ) = 7 x12 + 6 x1 entonces

h' ( x1 ) = 14x1 + 6 (52)


3
se resuelve la desigualdad h' ( x1 ) ≥ 0 y se obtiene x1 ≥ − como x1 ≥ 0
7
entonces la función h es creciente en el rango de interés y por lo tanto

x1* = mín{v11, v21} (53)


y
f 1 ( v11 , v 21 ) = 7 x1* 2 + 6 x1* (54)

Para la etapa 2 se tiene

f 2 (v12 , v22 ) = máx {5x 2 + f 1 (10 − 2x 2 ,9 + 3x 2 } (55)


2
0 ≤ 2 x2 ≤10
− 3 x2 ≤ 9

se tiene entonces, que x 2 está en el rango [0,5] y sobre él debe


optimizarse. Se resuelve la desigualdad 9 + 3x 2 ≤ 10 − 2 x2 y se obtiene
x 2 ≤ 1 / 5 con lo cual (55) se transforma en

5x 22 + 7(3x 2 + 9) 2 + 6(3x 2 + 9) 0 ≤ x2 ≤ 1/ 5


f 2 (v12 , v22 ) = máx  2
5x 2 + 7( −2 x2 + 10) + 6 ( −2 x 2 + 10 ) 1 / 5 ≤ x2 ≤ 5
2

(56)

que simplificado queda

68 x22 + 396 x 2 + 621 0 ≤ x2 ≤ 1/ 5


f 2 (v12 , v22 ) = máx  (57)
33 x 22 − 292 x 2 + 760 1/ 5 ≤ x2 ≤ 5

28
para resolver esta optimización se definen

h( x2 ) = 68x 22 + 396x2 + 621 y g ( x 2 ) = 33x22 − 292 x2 + 760


entonces
h' ( x2 ) = 136x 2 + 396 y g ( x 2 ) = 66x 2 − 292

resolviendo h' ( x2 ) ≥ 0 y g ' ( x2 ) ≥ 0 se obtiene

99 146
x2 ≥ − y x2 ≥ = 4.42
34 33

con lo cual, en los intervalos que nos ocupan se tiene que h(x) es creciente
en [0,1/5] y g(x) tiene un mínimo dentro de [1/5,5] por lo tanto h(x) tiene
máximo en 1/5 y lo tiene en alguno de los extremos de [1/5,5], se calcula n
entonces:

h (1/5) = 702.92
g(1/5) = 702.92
g(5) = 125

de lo cual se concluye que x *2 = 1 / 5 = 0.2 y f 2 ( v12 , v 22 ) = 702.92 y como

x1* = mín {10 − 2x 2 ,9 + 3x 2 }


entonces
x1* = mín {9.6,9.6} = 9.6.

Este problema de programación no lineal también puede ser resuelto por


un método gráfico que sigue la misma idea que el empleado en
programación lineal. La gráfica 1 ilustra el procedimiento.

29
Gráfica 1.

La parte sombreada corresponde a la región factible. También se ha


graficado la función objetivo con diferentes valores para z. Es evidente
que al aumentar z el gráfico de la función objetivo “crece” alejándose del
centro y que su último punto de contacto con la región factible coincide
con la intersección de las rectas que corresponden a las restricciones del
problema, en consecuencia el punto solución se halla resolviendo el
sistema de ecuaciones que determinan las rectas:

10 − x1 x1 − 9
=
2 3
que tiene como solución
x1 = 9.6
de donde
x 2 = 0.2

que coincide con la solución encontrada empleando P.D. La sencillez de


este método parece contradecir la definición de P.D. dada al comienzo,
más adelante se harán algunas conclusiones al respecto de esta
observación.

30
Compa ración entre los métodos basados en ecuaciones
recursivas de avance y los basados en ecuaciones recursivas de
retroceso

Un aspecto importante de la P.D. es la diferencia en el grado de dificultad


que se presenta al resolver un problema empleando ecuaciones recursivas
de avance o de retroceso. En este trabajo se ha optado por las primeras y
se ha indicado además, para algunos ejemplos, la bibliografía en la cual se
pueden consultar las soluciones que emplean ecuaciones recursivas de
retroceso. La razón de ello radica en que en la mayoría de los libros se
sigue un enfoque contrario, por lo cual se ha querido llamar la atención
sobre la otra cara de la moneda. En algunos casos, como en los ejemplos
tratados hasta ahora, el grado de dificultad es igual para ambos enfoques,
sin embargo este no es siempre el caso, como se ilustra con el siguiente
ejemplo.

Ejemplo 1.9:
Al comienzo del año 0 un campesino posee k ovejas. Al final de cada año
decide cuántas debe vender y cuantas conservar. La ganancia obtenida por
la venta de una oveja en el año i es pi . Las ovejas que conserve
duplicarán su número en el transcurso del año. El campesino venderá
todas sus ovejas al cabo de n años.

Para el año j se considerarán las siguientes variables:

x j : = número de ovejas conservadas


y j : = número de ovejas vendidas
z j = xj + yj

La gráfica 2 ilustra la situación planteada

Gráfica 2.

31
Se tiene
z1 = 2x 0 = 2k
z j = 2 x j −1 j = 1,2,..., n

Ecuación recursiva de retroceso:

f n ( z n ) = máxn { pn yn }
yn = z n ≤2 k

f j ( z j ) = máx j { p j y j + f j +1 ( 2[ z j − y j ]} , j = 1,2, . . . ,n-1


yj ≤z j≤2 k

Ecuación recursiva de avance:

f 1 ( x1 ) = máx { p1 y1}
y1 =2 k − x1

xj + yj
f j (x j ) = máx { p j y j + f j −1 ( } , j = 2, 3,. . . ,n
y j≤2 k−xj
j
2
( x j + y j ) / 2 entero

Al comparar las formulaciones se ve que el método de avance incluye una


condición de integridad lo que constituye una dificultad adicional que no
está presente en el método de retroceso. ∗

El ejemplo anterior ilustra que en algunos casos puede resultar


conveniente preferir un método al otro en pro de la simplificación de los
cálculos.


Nota: el ejemplo de las ovejas tiene más un propósito pedagógico que uno práctico,
pues se trata de un caso en el cual la solución se encuentra determinando el mejor
momento para vender las ovejas y venderlas todas en ese instante, para ello se determina
el mayor 2 i pi . En caso de presentarse un empate existirán soluciones alternativas a la
venta de todas las ovejas en un instante dado, pero la ganancia será la misma. Por lo
tanto atacar este problema con el enfoque de P.D. resultaría sumamente impráctico.

32
Conclusión

Las técnicas de P.D. nos han permitido resolver, entre otros, problemas de
Programación Lineal, de Programación Lineal Entera, de Programación
No Lineal etc. Esto no quiere decir que la P.D. constituya una panacea
para la solución de los problemas de todos estos campos, por dos razones:
en primer lugar, porque las técnicas de P.D. son aplicables únicamente a
un conjunto reducido de problemas en cada campo. Y en segundo lugar
porque, aunque la técnica sea aplicable, al resolver problemas grandes (de
Programación Lineal por ejemplo) el número de evaluaciones de todas las
alternativas crece de forma exagerada (este problema se conoce como la
plaga de la dimensionalidad ) lo cual hace que este enfoque sea
impráctico. Sin embargo, el propósito buscado al resolver este tipo de
problemas no ha sido proponer una alternativa a los métodos estándar de
solución de tales campos (como el método símplex en el caso de la
Programación Lineal) sino sencillamente poner en evidencia la
versatilidad propia de la P.D.

Por otra parte, cuando enfrenta problemas propios de su campo la P.D.


aporta una marco de procedimiento que ayuda a disminuir enormemente
el exceso de trabajo ocasionado por la redundancia en los cálculos a la
vez que estimula la creatividad al dejar espacios en blanco que deben ser
llenados al resolver cada caso en particular.

Debe emplearse la P.D. cuando la forma del problema permita dividirlo


en subproblemas que tengan la misma estructura del problema original.
También es importante tener en cuenta que el tamaño de los cálculos
tenga proporciones razonables.

33
Bibliografía

1. [Hil02] Hillier Frederick, Investigación de Operaciones,


México, D.F.: McGraw-Hill (2002).

2. [Tah95] Taha Hamdy, Investigación de Operaciones, México,


D.F.: Alfaomega (1995).

3. [Pra00] Prawda Juan, Métodos y modelos de Investigación de


Operaciones, México, D.F.: Limusa (2000).

34

También podría gustarte