Sei sulla pagina 1di 15

Programao Dinmica

Fernando Nogueira

Programao Dinmica

A Programao Dinmica procura resolver o problema de otimizao atravs da anlise de uma seqncia de problemas mais simples do que o problema original. A resoluo do problema original de N variveis caracterizado pela determinao de uma varivel e pela resoluo de um problema que possua uma varivel a menos (N-1). Este por sua vez resolvido pela determinao de uma varivel e pela resoluo de um problema de N-2 variveis e assim por diante. O problema a ser resolvido do tipo: -existem N atividades ou estgios numerados de 1 a N. -Xi a quantidade de recursos colocados nas atividades ou estgios i (X i 0) -gi(Xi) a funo que representa o ganho ou o retorno devido a colocao de Xi recursos na atividade i, Q = x1 + x2 + ... + xN a quantidade total de recursos disponveis. -O objetivo determinar a distribuio de recursos Xi que maximiza o ganho total. R(X1, X2,...,XN) = g1(X1) + g2(X2) + ...gN(XN). considerando que as atividades so independentes e os ganhos gi sejam aditivos.

Fernando Nogueira

Programao Dinmica

Formulao Maximizar R depende de Q e N. Esta dependncia explicada da seguinte maneira:


f N (Q ) = Max {R (X1 , X 2 ,..., X N )} Xi

fN(Q) representa o ganho mximo devido distribuio de Q quantidades de recursos nas N atividades. Condio Inicial a)gi(0) = 0 para cada atividade i (ganho nulo para zeros recursos distribudos). b)fN(0) = 0 para N = 1,2,... (se o total Q de recursos nulo, o ganho mximo tambm nulo). c)f1(Q) = g1(Q) se existir N = 1 atividade, ento R(X1) = g1(X1). Relao de Recorrncia entre fN(Q) e fN-1(Q) Ao atribuir a quantidade X N (0 X N Q ) de recursos atividade N, restaro Q-XN recursos a serem distribudos nas N-1 atividades restantes e o ganho mximo proveniente dessas N-1 atividades pode ser expresso por fN-1(Q-XN). Sendo assim, o ganho total das N atividades pode ser expresso por:
g N (X N ) + f N 1 (Q X N )
Fernando Nogueira Programao Dinmica 3

e se escolhermos XN, que maximize esse ganho, teremos o valor fN(Q) do ganho mximo devido aplicao de Q recursos em N atividades. Temos ento a relao fundamental da Programao Dinmica, dada por:
f N (Q ) = 0 Max XN Q

{g N (X N ) + f N 1 (Q X N )}para

N = 2,3,...

para N = 1 f1 (Q ) = g1 (Q )

Exemplo : Problema de Investimento de Capital Q = $6,00 unidades de capital disponvel N = 3 atividades diferentes para investimento e as funes de ganho gi(Xi) dadas pelo quadro abaixo:

Qual a distribuio tima do recurso Q = $6,00 nas 3 atividades ?


Fernando Nogueira Programao Dinmica 4

Obteno da funo f1(Q) da atividade 1 Condio inicial


f1 (0 ) = g1 (0 ) = 0 f1 (4 ) = g1 (4 ) = 90 f1 (5) = g1 (5) = 95 f1 (6 ) = g1 (6 ) = 100

f1 (1) = g1 (1) = 15

f1 (2) = g1 (2 ) = 40 f1 (3) = g1 (3) = 80

Obteno da funo f2(Q) da atividade 2 fN(Q) para N=2 Para Q = 0, f2(0) = 0 pela condio inicial (b)
Para Q = 1, f 2 (1) = 0 Max 1 X2

{g 2 (X 2 ) + f1 (1 X 2 )}

e como os valores possveis de X2 so 0 e 1, temos:

escolhemos, como soluo tima X2 = 0 (poderia ter sido X2 = 1).


Para Q = 2, f 2 (2 ) = 0
Fernando Nogueira

g 2 (0 ) + f1 (1) = 0 + 15 = 15 f 2 (1) = Max = 15 para X 2 = 0 ou X 2 = 1 ( ) ( ) g 1 + f 0 = 15 + 0 = 15 1 2


Max 2 X2

{g 2 (X 2 ) + f1 (2 X 2 )}
Programao Dinmica 5

e como os valores possveis de X2 so 0, 1 e 2 temos:


g 2 (0 ) + f1 (2 ) = 0 + 40 = 40 f 2 (2 ) = Max g 2 (1) + f1 (1) = 15 + 15 = 30 = 40 para X 2 = 0 ou X 2 = 2 g (2 ) + f (0 ) = 40 + 0 = 40 1 2

escolhemos, como soluo tima X2 = 0 (poderia ter sido X2 = 2).


Para Q = 3, f 2 (3) = 0 Max 3 X2

{g 2 (X 2 ) + f1 (3 X 2 )}

e como os valores possveis de X2 so 0, 1, 2 e 3 temos:


g 2 (0 ) + f1 (3) = 0 + 80 = 80 g 2 (1) + f1 (2 ) = 15 + 40 = 55 f 2 (3) = Max = 80 para X 2 = 0 g 2 (2 ) + f1 (1) = 40 + 15 = 55 g 2 (3) + f1 (0 ) = 60 + 0 = 60

Prosseguindo, pode-se encontrar: Para Q = 4, f2(4) = 95, para X2 = 1 Para Q = 5, f2(5) = 120, para X2 = 2 Para Q = 6, f2(6) = 140, para X2 = 3
Fernando Nogueira Programao Dinmica 6

Obteno da funo f3(Q) da atividade 3 De maneira anloga, obtemos f3(Q):


Para Q = 2, f 3 (2 ) = 0 Max 2 X3

{g 3 (X 3 ) + f 2 (2 X 3 )}

g 3 (0 ) + f 2 (2 ) = 0 + 40 = 40 f 3 (2 ) = Max g 3 (1) + f 2 (1) = 26 + 15 = 41 = 41 para X 3 = 1 g (2 ) + f (0 ) = 40 + 0 = 40 2 3

Quadro dos Valores de fN(Q)

Fernando Nogueira

Programao Dinmica

Ganho Mximo do Investimento Na coluna f3(Q) obtm-se como ganho mximo correspondente ao investimento nas 3 atividades, o valor $146,00, para Q = 6. A distribuio : a) para a atividade 3: X3 = $1,00 f3(Q) = 146 e subtraindo o ganho g3(1) = 26 (do quadro de ganhos) restam ainda 146-26 = 120 unidades que correspondem ao ganho da aplicao de Q = 5 unidades nas outras 2 atividades.

b) para a atividade 2, o ganho de 120 unidades corresponde a aplicao de X2 = 2 unidades na atividade e c) para a atividade 1, restam, portanto, Q-X3-X2 = 3 unidades a serem aplicadas. Portanto, X1 = 3.

Soluo tima X1 = 3 com g1(3) = 80, X2 = 2 com g2(2) = 40, X3 = 1 com g3(1) = 26 e R = g1 + g2 + g3 = $146,00

Fernando Nogueira

Programao Dinmica

Problema da Mochila (Knapsack problem)


Objetivo: maximizar a somatria dos valores dos itens que sero colocados na mochila, respeitando a sua capacidade. Existem n itens. Cada item i possui um valor ci e um peso wi associado. A capacidade da mochila L. As variveis de controle so xi tal que:

Max

c x
i =1 i

n w i x i L i=1 x {0,1} i

Cdigo MPL para o exemplo da figura MAX 4X1 + 2X2 + 10X3 + 1X4 + 2X5 SUBJECT TO 12X1 + 1X2 + 4X3 + 1X4 + 2X5 <= 15; BINARY X1 X2 X3 X4 X5

Fernando Nogueira

Programao Dinmica

Outra verso deste problema quando as variveis de controle no so binrias, mas sim inteiras (neste caso a soluo ir determinar quantas unidades de cada produto sero colocados na mochila):

Max

c x
i =1 i

n w i x i L i =1 x 0 e i
Outra verso deste problema quando as variveis de controle so reais, limitadas por valores mximos bi (neste caso a soluo ir determinar a quantidade (grandeza contnua) de cada produto que ser colocado na mochila):

Max

c x
i =1 i

n w i x i L i =1 0 x b i i
Fernando Nogueira Programao Dinmica 10

Exemplo Um navio pode carregar 4 toneladas. Existem 3 itens. A seguinte tabela fornece o peso unitrio wi em toneladas e o retorno unitrio ci em $ para cada item i. Como o navio deve ser carregado para maximizar o retorno total?
Item i 1 2 3 wi 2 3 1 ci 31 47 14

Uma vez que os pesos wi e o peso mximo que o navio pode carregar W so inteiros, as variveis xi devem ser somente inteiras tambm.

Fernando Nogueira

Programao Dinmica

11

Porque w3 = 1, o nmero mximo de itens 3 que o navio pode carregar 4/1 = 4, que significa que os valores de m3 so 0,1,2,3,4. Uma alternativa m3 vivel somente se

w 3m 3 x 3

4 f 3 (x 3 ) = max{ 14m3 }, max{m3 } = = 4 m3 1


14m3 Soluo tima

x3 0 1 2 3 4

m3=0 0 0 0 0 0

m3=1 --14 14 14 14

m3=2 ----28 28 28

m3=3 ------42 42

m3=4 --------56

f3(x3) 0 14 28 42 56

m3 0 1 2 3 4
12

Fernando Nogueira

Programao Dinmica

4 f 2 (x 2 ) = max{47 m 2 + f 3 (x 2 3m 2 )}, max{m 2 } = = 1 m2 3

47m2+f3(x2-3m2) x2 0 1 2 3 4 m2=0 0+0=0 0+14=14 0+28=28 0+42=42 0+56=56 m2=1 ------47+0=47 47+14=61

Soluo tima f2(x2) 0 14 28 47 61 m2 0 0 0 1 1

Fernando Nogueira

Programao Dinmica

13

4 f1 (x1 ) = max{31m1 + f 2 (x1 2m1 )}, max{m1} = = 2 m1 2


31m1+f2(x1-2m1) x1 0 1 2 3 4 m1=0 0+0=0 0+14=14 0+28=28 0+47=47 0+61=61 m1=1 ----31+0=31 31+14=45 31+28=59 m1=2 --------62+0=62 Soluo tima f1(x1) 0 14 31 47 62 m1 0 0 1 0 2

Fernando Nogueira

Programao Dinmica

14

Soluo tima

m1 = 2 x2 = x1 - 2m1 x2 = 4 2 x 2 = 0 => m2 = 0 x3 = x2 3m2 x3 = 0 3 x 0 = 0 => m3 = 0

m1 = 2, m2 = 0, m3 = 0 Z = $62,00

Fernando Nogueira

Programao Dinmica

15

Potrebbero piacerti anche