Title: Parte 3
1Parte 3
Técnicas de projeto de algoritmos
2Técnicas de projeto de algoritmos
- Divisão e conquista
- Algoritmos gulosos
- Programação dinâmica
- Caminhamento em grafos
- Heurísticas
3Divisão e conquista
4Divisão e conquista
Princípio básico
function DC (x) se x é suficientemente pequeno
ou simples então return
ADHOC(x) senão decompor x em x1, x2, ,
xK para i 1 até K faça yi ? DC (xi)
recombinar os yi para obter y return y
Pesquisa binária Merge Sort
Top down Recorrente Balanceamento
5Máximo e mínimo
Entrada a1,, a2 , , an Saída MIN, MAX com
MIN ? min a1, a2 , , an MAX
max a1, a2 , , an trivial determinar
MIN (n-1) comparações determinar MAX (n-1)
comparações 2n-2
comparações melhorado MIN, MAX ? a1 para i
2 até n faça se ai gt MAX então MAX ?
ai senão se ai lt MIN
então MIN ? ai
melhor caso ai? n-1 comparações pior caso
ai? 2n-1comparações
6Máximo e mínimo
procedure MaxMin(i, j, fmax, fmin) integer i,
j global n, A(1n) case ij fmax,
fmin ? A(i) ij-1 se A(i) lt A(j)
então fmax ? A(j) fmin ? A(i)
else fmax ? A(i) fmin ? A(j) else
meio ? ?(ij)/2? MaxMin(i, meio,
gmax , gmin) MaxMin(meio1, j, hmax ,
hmin) fmax ? max(hmax , gmax)
fmin ? min(hmin , gmin) endcase
T(n) O(1) 2T(n/2) T(n) O(n)
7Divisão e conquista
8Divisão e conquista
mergesort
multiplicação de polinômios
9Problema de seleção
Dado um vetor a1, a2, , an obter o k-ésimo menor
elemento
- ordenação O(n log n) O(k)
- k pequeno O(kn)
- É possível fazer melhor do que isso?
-
Reorganizar o vetor a em relação a um pivô x
10Problema de seleção
partition(A, p, r, x) i ? p-1 j ? r1
enquanto TRUE faça repita j ? j -1 até que
Aj ? x repita i ? i1 até que Ai ?
x se i lt j então troca Ai ? Aj
senão retornar j fim
Complexidade O(n)
11Exemplo
X 5
12Problema de seleção
P1
P2
? X
? X
- Determinar o k-ésimo menor elemento
- Se P1 ? k ? procurar o k-ésimo em P1
- Se P1 ? k ? procurar o k-P1 ésimo em P2
- usar o algoritmo de partição
13Problema de seleção
- Select(k,n)
- Dividir os n elementos em n/5 grupos de 5
elementos cada. - Extrair a mediama de cada um dos n/5 grupos de 5
elementos cada. - Extrair recursivamente a mediana das n/5 medianas
usando select Select (n/10,n/5). Seja x esta
mediana -
14Problema de seleção
15Problema de seleção
- Particionar os dados de entrada utilizando x como
pivô usando o algoritmo partition - Sejam b1 e b2 o número de elementos em cada
partição.Se k ? b1 aplicar select para obter o
k-ésimo da 1a parte - Se k gt b1 aplicar select para obter o
(k-b1)-ésimo da 2a parte(recursivamente) -
16Multiplicação de polinômios
Polinômio de grau n-1 tem n termos
Entrada p(x) e q(x) têm tamanho n Saída
r(x)p(x)q(x)
força bruta para i 0 até 2n-2 faça r(i) ?
0 para i 0 até n-1 faça para j 0 até
n-1 faça r(ij) ? r(ij) p(i)q(j)
T(n) O(n2)
17Multiplicação de polinômios
n2k p(x) q(x) ? O(n) p(x) q(x) ? O(n2),
computacionalmente mais caro
18Multiplicação de polinômios
b1 b0
a0b1
a1b1
b0 b1
a0b0
a1b0
a0 a1
a0 a1
19Multiplicação de polinômios
20Multiplicação de polinômios
Complexidade
É necessário resolver menos de quatro problemas
21Multiplicação de polinômios
22Multiplicação de polinômios
23Multiplicação de polinômios
24Multiplicação de matrizes
Multiplicação de matrizes
Hipótese n2k Particionar A e B em quatro
submatrizes n/2 x n/2
25Multiplicação de matrizes
Multiplicação de matrizes
A B oito multiplicações de matrizes
(n/2) Adicionar duas matrizes n/2 x n/2 O(n2)
26Multiplicação de matrizes
Aumentar o número de adições de matrizes para
diminuir o número de multiplicações método de
Strassen
7 multiplicações 18 adições
27Multiplicação de matrizes
28Problema do par mais próximo
- Problema do par mais próximo dados n pontos no
plano com coordenadas (xi, yi), i1,n, obter o
par de pontos mais próximo - Força bruta calcular todas as n(n-1)/2
distâncias O(n2)
É possível fazer melhor do que isso?
- Ordenar todos n pontos pelas coordenadas xi ? O(n
log n)
29Problema do par mais próximo
- Separar os pontos em duas metades, de acordo com
a ordenação pelas coordenadas xi - P1 P2
- d1 menor distância entre pontos de P1
- d2 menor distância entre pontos de P2
- Verificar se existe A1 ? P1 e A2 ? P2 tais
que - d(A1,A2) d lt mind1,d2
- d1 e d2 podem ser calculados recursivamente.
- Falta calcular d min d(A1,A2) A1 ? P1 e A2
? P2.
30Problema do par mais próximo
- T(n) 2.T(n/2) O(n) ? T(n) O(n log n)
- Como calcular d em O(n)?
- ? min d1,d2
- Só é necessário calcular d se d lt ?.
- Só é necessário examinar uma faixa de pontos a
distância ? ? da reta vertical que separa P1 e
P2.
31Problema do par mais próximo
- Muitos pontos são eliminados, mas no pior caso
podem restar O(n) pontos nesta faixa o cálculo
de d continuaria O(n2). - É possível mostrar que na média há
na média.
para i 1 até pontos_na_faixa-1 faça para j
i1 até pontos_na_faixa-1 faça se d(pi,
pj) lt ? então ? ? d(pi, pj)
Como melhorar?
32Problema do par mais próximo
- As coordenadas y dos dois pontos que definem d
diferem por no máximo ?, senão d gt ?. - Se os pontos na faixa estão ordenados em ordem
crescente pelas coordenadas y, se d(pi,pj) gt ?
pode-se abandonar a análise de pi e passar-se a
pi1. - Hipótese pontos na faixa ordenados por yi.
para i 1 até pontos_na_faixa-1 faça para j
i1 até pontos_na_faixa-1 faça se yi -
yj gt ? então examinar pi1 e sair do loop
interno senão se d(pi,pj) lt ? então ? ?
d(pi, pj)
33Problema do par mais próximo
?
?
?
?
?
i
?
?
- Não pode haver mais do que oito pontos no
retângulo ? x ?. - Um deles é o ponto sendo examinado.
- Verificar no máximo sete pontos pode ser feito
em O(1).
34Problema do par mais próximo
Algoritmo 1
- Ordenar os pontos pelas coordenadas x.
- Dividir o conjunto em duas partes P1 e P2.
- Recursivamente calcular as distâncias d1 e d2.
- Fazer ? ? min d1,d2.
- Eliminar os pontos a uma distância superior a ?
da linha de separação. - Ordenar os pontos na faixa de acordo com as
coordenadas y. - Investigar os pontos na ordem e computar a
distância de cada um deles a no máximo sete
vizinhos. Se alguma distância for menor do que ?,
então atualizar ?.
T(n) O(n log n) 2.T(n/2) O(1) O(n) O(n
log n) O(n)
35Problema do par mais próximo
36Problema do par mais próximo
Algoritmo 2
- Ordenar os pontos pelas coordenadas x.
- Dividir o conjunto em duas partes P1 e P2.
- Recursivamente
- Calcular as distâncias minímas d1 e d2. .
- Ordenar os pontos em P1 e P2 segundo as
coordenadas y. - Combinar as duas listas ordenadas em uma única
- Fazer ? ? min d1,d2.
- Eliminar os pontos a uma distância superior a ?
da linha de separação. - Investigar os pontos na ordem e computar a
distância de cada um deles a no máximo sete
vizinhos. Se alguma distância for menor do que ?,
então atualizar ?.
T(n) 2.T(n/2) O(n) O(n log n)
37Algoritmos gulosos
38Algoritmos gulosos
- Problema de otimização
- Extensões sucessivas de soluções parciais
- Sempre escolhe a extensão viável que propicia o
maior ganho (gula) - Otimalidade nem sempre garantida
- Sistema de subconjuntos matróide
- Algoritmos simples e eficientes
- Análise de complexidade simples
39Cobertura por nós mínima
- Grafo não-orientado G(V, E) obter S ? V tal
que - u, v ? E então u?S ou v?S
- S é mínima
40Cobertura por nós mínima
- O algoritmo guloso obtém necessariamente a
solução ótima?
41Cobertura por nós mínima
- O algoritmo guloso obtém necessariamente a
solução ótima?
grau 1
n2 nós
n2 nós
grau n1
grau n2
n nós
A solução pode ser muito ruim!
42Armazenamento em fita
- Entrada L ? (l1, l2, , ln) vetor com
comprimentos de n arquivos a serem armazenados em
uma fita suficientemente extensa - Saída (j, li(j)) para j1, , n
- i(j) é o índice do j-ésimo arquivo na fita
Determinar a ordem de armazenamento dos arquivos
na fita, de modo a minimizar o tempo médio TMR
(ou total) de recuperação de um arquivo.
43Armazenamento em fita
44Armazenamento em fita
- Armazenar arquivos em ordem crescente de tamanhos
- Algoritmo auxiliar ordenar o vetor em O(n log n)
Mostrar que o algoritmo é correto
Numa solução ótima não existe Supondo-se que
existisse Trocando
B-A?
45Armazenamento em fita
a troca diminuiria o custo.
46Problema da mochila
em qualquer solução ótima
47Problema da mochila
Exemplo Objeto Ganho Volume 1
25 18 2 24 15 3
15 10 total 64
43 Volume disponível na mochila
20
- Guloso 1 maior ganho primeiro
- Guloso 2 menor volume primeiro
- Guloso 3 maior densidade primeiro (densidade
ganho/volume)
48Problema da mochila
- É permitido fracionar os objetos
- guloso 1 ganhos decrescentes
- x1 fração do objeto 1 ? x1 1
- volume residual 20 - 18 2
- 15x2 2 ? x2 2/15
- valor total 25 2/15 24 28.2
- x1 x2 x3 ganho
- 2/15 0 28.2
- 4/9 4/5 0 30.3
Enche a mochila muito rapidamente!
49Problema da mochila
- i ci ai ci/ai
- 25 18 1.38 3?
- 2 24 15 1.60 1?
- 3 15 10 1.50 2?
- b20
50Problema da mochila
- Provar que a solução do guloso com o terceiro
critério é ótima - Ordenar os objetos em ordem decrescente das
razões cj/aj - Solução gulosa (1, 1, 1, , 1, gj, 0,, 0, 0)
- Diminuir o valor de uma variável em A ? aumentar
uma variável em B
51Problema da mochila
- Hipótese não é permitido fracionar os objetos
- O algoritmo guloso não obtém necessariamente a
solução ótima! - Por que?
- Propor outros algoritmos gulosos soluções
ótimas? contra-exemplos? - Algoritmo guloso é uma heurística de baixa
complexidade.
52Árvore Geradora de Peso Mínimo
- Entrada
- G (V,E) grafo não-orientado
- peso c(e) ?e ? E
- Saída F ? E tal que
- (i) O grafo G(V,F) é acíclico e conexo (G é
gerador de G) - (ii) F é maximal
- (iii) c(F) ? ? c(e) é mínimo
e ? F
53Árvore Geradora de Peso Mínimo
- Exemplos de árvores geradoras
8
Princípio do algoritmo a aresta de menor peso
sempre pertence à solução ótima
54Algoritmo de Kruskal
L ? lista com arestas ordenadas em ordem
crescente de pesos F ? ? count ? 0 enquanto
count lt n 1 e L ? ? faça seja (v,w) o
próximo arco de L remover (v,w) de
L se v e w não estão na mesma componente
início F ? F ? (v,w)
colocar v e w na mesma componente
count ? count 1
fim fim
55Exemplo
c(e) e
2 (f,c)
2 (c,e)
3 (a,b)
3 (a,d)
4 (a,f)
7 (b,c)
8 (b,e)
8 (e,f)
8 (c,d)
9 (d,e)
9 (b,f)
3
A
B
4
9
7
2
8
C
3
F
2
8
8
9
E
D
56Exemplo
57Exemplo
58Complexidade
Ordenar ? O(m log m) ? O(m log
n) Testar componentes ? O(1) m vezes
? O(m) Reorganizar componentes ? O(n)
n vezes ? O(n2)
T(n) O(m log m) O(m) O(n2) O(m log m
n2) O(m log n n2)
59Estrutura de dados
- Union finding
- 1) Dado um nó, obter sua componente.
- 2) Fundir duas componetes.
- Colocar os nós de cada componente em uma árvore e
representar a componente pela raiz da árvore. - Achar a componente seguir o caminho do nó até a
raiz. - Fundir duas componentes fazer a raiz de uma
componente tornar-se filha da raiz da outra. - A raiz da árvore mais baixa torna-se filho da
raiz da árvore mais alta. - Altura da árvore ? log n
60Estrutura de dados
...
1
3
2
árvore mais baixa ? árvore mais alta
61Complexidade
- altura ? log n
- Determinar cada componente e testar O(log n)
-
- Reorganizar componentes O(1)
- Complexidade
- T(n) O(m log n), melhor do que O(m log n n2)
62Algoritmo de Prim
- Começar com um nó qualquer.
- A cada iteração, adicionar a aresta de menor peso
que conecta um nó já conectado a um nó não
conectado.
3
A
B
4
9
7
2
8
C
3
F
2
8
8
9
E
D
63Algoritmo de Prim
- Seja (k,l) a aresta de menor peso
- Para i de 1 a n, fazer
- prox(i) ? l, se cil lt clk
- prox(i) ? k, caso contrário
- prox(k), prox(l) ? 0
- Fazer (n-2) iterações
- Seja j tal que prox(j) ? 0 e cj,prox(j) é mínimo
- Fazer prox(j) ? 0
- Para k de 1 a n, faça
- Se prox(k) ? 0 e ck,prox(k) gt ckj, então
prox(k) ? j
Complexidade T(n) O(n2)
64Exemplo
3
4
9
7
3
2
8
2
8
8
9
65Intercalação ótima de arquivos
- Intercalar 2 arquivos com m e n registros m n
operações (merge). - Intercalar diversos arquivos dois a dois
- Diferentes ordens levam a diferentes tempos de
processamento
A B 50 operações (A B) C 60
operações B C 30 operações (B C)
A 60 operações
66Intercalação ótima de arquivos
n1 n2 n1 n2 n3 n1 n2 n3 n4 3n1 3n2
2n3 n4
67Intercalação ótima de arquivos
Menores arquivos primeiro!
n1 n2 n3 n4 (n1 n2) (n3
n4) 2n1 2n2 2n3 2n4
68Intercalação ótima de arquivos
- Arquivos nós externos da árvore binária
- Operações nós internos
- di distâncias da raiz ao nó representando o
i-ésimo arquivo - Número total de operações (cópias/deslocamento)
69Intercalação ótima de arquivos
- Lista L de n árvores
- Cada nó na árvore tem 3 campos
- LCHILD
- RCHILD
- PESO tamanho de um arquivo
procedure TREE(i,n) para i 1 até n-1 GETNODE
(T) LCHILD(T) ? LEAST (L) RCHILD(T) ? LEAST
(L) WEIGHT(T) ? WEIGHT(LCHILD(T))
WEIGHT(RCHILD(T)) INSERT(L,T) return (LEAST(L))
70Intercalação ótima de arquivos
71Intercalação ótima de arquivos
4
2
3
5
1
L
T
GETNODE
LEAST (L) 1
LEAST (L) 2
L
5
3
4
6
72Intercalação ótima de arquivos
73Intercalação ótima de arquivos
74Intercalação ótima de arquivos
n 1 iterações Lista L ordenada pelos
pesos LEAST ? O(1) INSERT ? O(n) L
organizada como um heap LEAST ? O(log
n) INSERT ? O(log n)
O(n2)
O(n log n)
Prova por indução Se L inicialmente contém n ? 1
árvores-nós isoladas com pesos q1, ..., qn, então
o algoritmo gera uma árvore ótima com estes pesos.
75 76Motivação
- Problema determinar o caminho mais curto de 1 a
12 no grafo abaixo
Trajetória ótima de cada nó ao destino final
7
2
4
7
4
6
9
6
9
9
4
2
5
2
3
7
16
0
5
2
4
7
2
1
12
7
10
3
18
1
3
11
4
7
5
5
5
2
8
11
15
11
6
5
8
77Motivação
- Problema determinar o caminho mais curto de 1 a
12 no grafo abaixo
Trajetória ótima do nó inicial até cada nó
9
2
4
9
15
6
9
6
9
7
4
2
5
2
3
7
0
11
16
14
4
7
2
1
12
7
10
3
3
3
1
11
4
10
16
5
5
2
8
11
2
11
6
5
8
78Motivação
- Problema determinar o caminho mais curto de 1 a
12 no grafo abaixo
Trajetória ótima através de cada nó
2
4
97
6
9
6
9
79
4
2
5
2
3
7
016
160
142
4
7
2
1
12
7
10
3
3
1
11
4
5
5
2
8
11
11
6
5
8
- Combinação das trajetórias ótimas
79Motivação
- Problema determinar o caminho mais curto de 1 a
12 no grafo abaixo
Trajetória ótima através de cada nó
2
4
6
9
6
9
4
2
5
2
3
7
4
7
2
1
12
7
10
3
3
1
11
4
107
5
5
2
8
11
11
6
5
8
- Combinação das trajetórias ótimas
80Programação dinâmica
- Aplicação a problemas de decisões seqüenciais
cada decisão aplicada a um estado em determinado
estágio leva a um estado do estágio imediatamente
seguinte. - Princípio da otimalidade uma seqüência ótima de
decisões tem a propriedade de que quaisquer que
sejam o estado e a decisão inicial, as decisões
remanescentes constituem uma seqüência ótima de
decisões com relação ao estado decorrente da
primeira decisão. - Alternativamente toda subtrajetória da
trajetória ótima é ótima com relação a suas
extremidades inicial e final.
81Programação dinâmica
- Método exato para resolver problemas de
progamação inteira que envolvem apenas decisões
seqüenciais, nos quais cada nova decisão depende
apenas do estado do sistema, mas não das decisões
anteriores (isto é, da forma como este estado
foi atingido). - Principais conceitos envolvidos
- estágios (etapas)
- estados
- decisões
- função critério a ser otimizada
82Programação dinâmica
- Roteiro de aplicação
- Identificar um modelo de decisões seqüenciais
através de seus estágios. - Assegurar-se de que cada solução viável (ou
trajetória) pode ser vista como uma seqüência de
decisões tomadas a cada estágio, de modo tal que
seu custo seja igual à soma dos custos das
decisões individuais. - Definir o conceito de estado como a resultante de
todas as decisões relevantes tomadas no passado
(caso forward). - (alternativamente, definir o conceito de estado
como a resultante de todas as decisões relevantes
tomadas no futuro no caso backwards)
83Programação dinâmica
- Roteiro de aplicação (continuação)
- Determinar as transições de estado possíveis.
- Atribuir o custo de cada transição de estado à
decisão correspondente. - Escrever uma recursão que defina o custo ótimo do
estado inicial até o estado final. - Exemplo de aplicação problema da mochila
84Problema da mochila
- Caso (4) os itens não podem ser fracionados e no
máximo uma unidade de cada item pode ser
selecionada
- Problema de programação inteira
- As variáveis inteiras binárias (0-1) representam
a decisão de selecionar um objeto ou não. - Solução não trivial!
- Ordenar as variáveis pelo índice lucro/volume
resolve o problema linear apenas, mas não o de
programação inteira.
85Problema da mochila
- Decomposição do problema em estágios
- Em vez de considerar uma solução (x1,x2,...,xn)
completa de uma só vez, visualizar o problema
como se as decisões fossem tomadas para um item
de cada vez. - Após k decisões, terão sido determinados quais
dos primeiros k itens devem ser selecionados e,
conseqüentemente, terão sido determinados os
valores das variáveis x1,x2,...,xk. - Neste ponto, o valor acumulado é
e o volume acumulado é
- .
86Problema da mochila
- Estágio
- cada variável do problema
- Estado
- volume total ocupado com as decisões já tomadas
- Decisão
- selecionar ou não um item (isto é, fazer xk1)
- Custo da decisão de selecionar o item k
- aumento de ck unidades no lucro parcial
acumulado - Efeito da decisão de selecionar o item k
- aumento do volume ocupado (estado) em ak unidades
87Problema da mochila
- Definição yk(u) lucro máximo que pode ser
obtido com volume total igual a u e usando apenas
itens do conjunto 1,...,k - Quanto vale y0(0)?
- y0(0) 0 (sem objetos selecionados, o peso e o
lucro são nulos) - Definir yk(u) -? se é impossível obter um
volume total igual a u apenas com itens dentre os
do conjunto 1,...,k. - Quanto valem y0(u) e yk(0)?
- y0(u) -? para u gt 0 (impossível acumular peso
sem itens) - yk(0) 0 para k 1,2,...,n (nenhum item
selecionado) - Calcular yk(u) para k 1,...,n e u 0,...b, a
partir de y0(0).
88Problema da mochila
- yk(u) lucro máximo que pode ser obtido com
volume total igual a u e usando apenas itens do
conjunto 1,...,k - Calcular yk(u) para k 1,...,n e u 0,...b
- Interpretação há duas alternativas para se obter
yk(u), dependendo do item k ser selecionado ou
não - yk(u) yk-1(u), se o item k não é usado
- yk(u) yk-1(u-ak)ck, se o item k é usado
89Problema da mochila
- Observar que o lucro associado ao estado
resultante de uma decisão depende apenas do valor
desta decisão e do estado atual, mas não depende
da forma como este último foi atingido.
90Problema da mochila
y5(4)
91Problema da mochila
y5(b)
Valor ótimo maxb0,...,4 y5(b)
92Problema da mochila
y0(4) y5(4)
y0(3) y5(3)
y0(2) y5(2)
y0(1) y5(1)
y0(0) y1(0) y2(0) y3(0) y4(0) y5(0)
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
93Problema da mochila
y0(4)
y0(3)
y0(2)
y0(1)
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
94Problema da mochila
-?
-?
-?
-?
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
95Problema da mochila
-? ?
-? ?
-? ?
-? ?
0 ?
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
96Problema da mochila
-?
-?
-? -?
-? -?
0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
97Problema da mochila
-?
-? 3
-? -?
-? -?
0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
98Problema da mochila
-? -?
-? 3
-? -?
-? -?
0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
99Problema da mochila
-? -?
-? 3
-? -?
-? -?
0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
100Problema da mochila
-? -? ?
-? 3 ?
-? -? ?
-? -? ?
0 0 ?
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
101Problema da mochila
-? -?
-? 3
-? -?
-? -?
0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
102Problema da mochila
-? -?
-? 3
-? -? -?
-? -? -?
0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
103Problema da mochila
-? -?
-? 3
-? -? -?
-? -? -?
0 0 0
u 4
u 3
u 2
u 1
u 0
2
k 0 k 1 k 2 k 3 k 4 k 5
104Problema da mochila
-? -?
-? 3
-? -? -?
-? -? -?
0 0 0
u 4
u 3
u 2
u 1
u 0
0
2
k 0 k 1 k 2 k 3 k 4 k 5
105Problema da mochila
-? -?
-? 3 3
-? -? -?
-? -? -?
0 0 0
u 4
u 3
u 2
u 1
u 0
0
2
k 0 k 1 k 2 k 3 k 4 k 5
106Problema da mochila
-? -? -?
-? 3 3
-? -? -?
-? -? -?
0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
107Problema da mochila
-? -? -?
-? 3 3
-? -? -?
-? -? -?
0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
108Problema da mochila
-? -? -? ?
-? 3 3 ?
-? -? -? ?
-? -? -? ?
0 0 0 ?
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
109Problema da mochila
-? -? -?
-? 3 3
-? -? -?
-? -? -?
0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
110Problema da mochila
-? -? -?
-? 3 3
-? -? -?
-? -? -? 2
0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
111Problema da mochila
-? -? -?
-? 3 3
-? -? -? -?
-? -? -? 2
0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
112Problema da mochila
-? -? -?
-? 3 3
-? -? -? -?
-? -? -? 2
0 0 0 0
u 4
u 3
u 2
u 1
u 0
2
k 0 k 1 k 2 k 3 k 4 k 5
113Problema da mochila
-? -? -?
-? 3 3
-? -? -? -?
-? -? -? 2
0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
2
k 0 k 1 k 2 k 3 k 4 k 5
114Problema da mochila
-? -? -?
-? 3 3 3
-? -? -? -?
-? -? -? 2
0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
2
k 0 k 1 k 2 k 3 k 4 k 5
115Problema da mochila
-? -? -? 5
-? 3 3 3
-? -? -? -?
-? -? -? 2
0 0 0 0
u 4
u 3
u 2
u 1
u 0
2
k 0 k 1 k 2 k 3 k 4 k 5
116Problema da mochila
-? -? -? 5
-? 3 3 3
-? -? -? -?
-? -? -? 2
0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
117Problema da mochila
-? -? -? 5 ?
-? 3 3 3 ?
-? -? -? -? ?
-? -? -? 2 ?
0 0 0 0 ?
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
118Problema da mochila
-? -? -? 5
-? 3 3 3
-? -? -? -?
-? -? -? 2
0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
119Problema da mochila
-? -? -? 5
-? 3 3 3
-? -? -? -?
-? -? -? 2
0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
1
k 0 k 1 k 2 k 3 k 4 k 5
120Problema da mochila
-? -? -? 5
-? 3 3 3
-? -? -? -?
-? -? -? 2 2
0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
121Problema da mochila
-? -? -? 5
-? 3 3 3
-? -? -? -? 3
-? -? -? 2 2
0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
122Problema da mochila
-? -? -? 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2
0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
k 0 k 1 k 2 k 3 k 4 k 5
123Problema da mochila
-? -? -? 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2
0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
124Problema da mochila
-? -? -? 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2
0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
1
k 0 k 1 k 2 k 3 k 4 k 5
125Problema da mochila
0
-? -? -? 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2
0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
1
k 0 k 1 k 2 k 3 k 4 k 5
126Problema da mochila
0
-? -? -? 5 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2
0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
1
k 0 k 1 k 2 k 3 k 4 k 5
127Problema da mochila
-? -? -? 5 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2
0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
128Problema da mochila
-? -? -? 5 5 ?
-? 3 3 3 3 ?
-? -? -? -? 3 ?
-? -? -? 2 2 ?
0 0 0 0 0 ?
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
129Problema da mochila
-? -? -? 5 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
130Problema da mochila
-? -? -? 5 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
k 0 k 1 k 2 k 3 k 4 k 5
131Problema da mochila
-? -? -? 5 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
k 0 k 1 k 2 k 3 k 4 k 5
132Problema da mochila
-? -? -? 5 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
133Problema da mochila
-? -? -? 5 5
-? 3 3 3 3
-? -? -? -? 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
3
k 0 k 1 k 2 k 3 k 4 k 5
134Problema da mochila
-? -? -? 5 5
-? 3 3 3 3
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
3
k 0 k 1 k 2 k 3 k 4 k 5
135Problema da mochila
-? -? -? 5 5
-? 3 3 3 3
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
136Problema da mochila
-? -? -? 5 5
-? 3 3 3 3
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
3
k 0 k 1 k 2 k 3 k 4 k 5
137Problema da mochila
-? -? -? 5 5
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
3
k 0 k 1 k 2 k 3 k 4 k 5
138Problema da mochila
-? -? -? 5 5
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
139Problema da mochila
-? -? -? 5 5
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
3
k 0 k 1 k 2 k 3 k 4 k 5
140Problema da mochila
-? -? -? 5 5 6
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
0
3
k 0 k 1 k 2 k 3 k 4 k 5
141Problema da mochila
-? -? -? 5 5 6
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
k 0 k 1 k 2 k 3 k 4 k 5
142Problema da mochila
-? -? -? 5 5 6
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
y5(4) 6
y5(3) 5
y5(2) 3
y5(1) 2
y5(0) 0
k 0 k 1 k 2 k 3 k 4 k 5
143Problema da mochila
-? -? -? 5 5 6
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
y5(4) 6
y5(3) 5
y5(2) 3
y5(1) 2
y5(0) 0
k 0 k 1 k 2 k 3 k 4 k 5
144Problema da mochila
-? -? -? 5 5 6
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
y5(4) 6
y5(3) 5
y5(2) 3
y5(1) 2
y5(0) 0
k 0 k 1 k 2 k 3 k 4 k 5
145Problema da mochila
x51
-? -? -? 5 5 6
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
y5(4) 6
y5(3) 5
y5(2) 3
y5(1) 2
y5(0) 0
k 0 k 1 k 2 k 3 k 4 k 5
146Problema da mochila
x51
x41
-? -? -? 5 5 6
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
y5(4) 6
y5(3) 5
y5(2) 3
y5(1) 2
y5(0) 0
k 0 k 1 k 2 k 3 k 4 k 5
147Problema da mochila
x51
x41
x31
-? -? -? 5 5 6
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
y5(4) 6
y5(3) 5
y5(2) 3
y5(1) 2
y5(0) 0
k 0 k 1 k 2 k 3 k 4 k 5
148Problema da mochila
x51
x41
x31
x20
-? -? -? 5 5 6
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
y5(4) 6
y5(3) 5
y5(2) 3
y5(1) 2
y5(0) 0
k 0 k 1 k 2 k 3 k 4 k 5
149Problema da mochila
x51
x41
x31
x20
x10
-? -? -? 5 5 6
-? 3 3 3 3 5
-? -? -? -? 3 3
-? -? -? 2 2 2
0 0 0 0 0 0
u 4
u 3
u 2
u 1
u 0
y5(4) 6
y5(3) 5
y5(2) 3
y5(1) 2
y5(0) 0
k 0 k 1 k 2 k 3 k 4 k 5
150Problema da mochila
- Os estados em verde e as transições possíveis
(arcos com setas) definem um grafo multiestágio
para a aplicação da recursão de programação
dinâmica. - Número de operações (tempo de processamento)
diretamente proporcional ao produto do tamanho da
mochila pelo número de variáveis (preencher
inteiramente a matriz de dimensões (b1)x(n1))
aplicabilidade limitada aos valores de n e de b - Caso seja possível levar múltiplas cópias de cada
item, aumenta o número de decisões e a
complexidade do problema.
151Programação dinâmica
- Redução no número total de operações
p linhas
B
Cálculo da menor trajetória de A a B
Total de adições?
Total de trajetórias de A a B pn
Cálculo exaustivo n.pn
Programação dinâmica p p.p.(n-1) p ? n.p2
A
152Programação dinâmica
- Observar que o valor da função objetivo associado
a um estado depende apenas dele, mas não depende
da forma como foi atingido. - O fato de serem implicitamente descartadas
subtrajetórias não-ótimas é que leva à redução
significativa do número de operações.
153Programação dinâmica
- Identificar decisões e estágios
- Identificar o critério de otimização
- Construir a função critério
- Identificar o critério de otimalidade
- Para cada decisão relacionar recursivamente os
valores do critério definindo as variáveis de
estado necessários - Considerando as variáveis de estado, fornecer
condições de contorno para a função critério. - Determinar a política ótima para cada estágio e
estado.
154Programação dinâmica
- (I) Problema de otimização de investimentos
Considere-se um conjunto de n possíveis
investimentos, nos quais é possível aplicar no
máximo um total de M unidades monetárias. Seja
cj(k) o retorno obtido com a aplicação de 0 ? k ?
M unidades monetárias no investimento j
1,...,n. Determinar a aplicação ótima a ser feita
em cada investimento, de modo a maximizar o
retorno total. Resolver o problema para n 3 e M
4, considerando a matriz de retornos fornecida
a seguir
155Programação dinâmica
k c1(k) c2(k) c3(k)
0 0 0 0
1 3 1 2
2 7 2 4
3 11 4 6
4 12 8 8
156Programação dinâmica
- Estágio
- cada investimento k 1, 2, 3 considerado
- Estado
- total ainda disponível para ser aplicado nos
investimentos k, k1, , n - outra alternativa total aplicado nos
investimentos 1, 2, , k - Decisão
- quanto aplicar no investimento k
- Recursão
- Rk(x) max0?y?x ck(y) Rk1(x-y)
157Programação dinâmica
- Condições de contorno
- R4(0) 0Todos os recursos devem ser usados nos
três investimentos. - Valor máximo do retorno obtido
- R1(4) ?Maximizar o retorno obtido com a
aplicação de um total de quatro unidades nos
investimentos 1, 2, 3.
158Programação dinâmica
Estado inicial R1(4) ?
Estado final R4(0) 0
Investimento 1
Investimento 2
Investimento 3
159Programação dinâmica
4
Estado inicial R1(4) ?
Estado final R4(0) 0
0
Investimento 1
Investimento 2
Investimento 3
160Programação dinâmica
4
4
Estado inicial R1(4) ?
3
2
1
Estado final R4(0) 0
0
0
Investimento 1
Investimento 2
Investimento 3
161Programação dinâmica
4
4
4
Estado inicial R1(4) ?
3
3
2
2
1
1
Estado final R4(0) 0
0
0
0
Investimento 1
Investimento 2
Investimento 3
162Programação dinâmica
0
4
4
4
3
Estado inicial R1(4) ?
3
3
7
11
2
2
12
1
1
Estado final R4(0) 0
0
0
0
Investimento 1
Investimento 2
Investimento 3
163Programação dinâmica
0
0
4
4
4
3
Estado inicial R1(4) ?
1
3
3
7
2
11
2
2
4
12
1
1
Estado final R4(0) 0
8
0
0
0
Investimento 1
Investimento 2
Investimento 3
164Programação dinâmica
0
0
4
4
4
3
Estado inicial R1(4) ?
1
0
3
3
7
2
1
4
11
2
2
4
2
12
1
1
Estado final R4(0) 0
8
0
0
0
Investimento 1
Investimento 2
Investimento 3
165Programação dinâmica
0
0
4
4
4
3
Estado inicial R1(4) ?
1
0
3
3
7
2
1
4
0
11
2
2
4
1
2
2
12
1
1
Estado final R4(0) 0
8
0
0
0
Investimento 1
Investimento 2
Investimento 3
166Programação dinâmica
0
0
4
4
4
3
Estado inicial R1(4) ?
1
0
3
3
7
2
1
4
0
11
2
2
4
1
2
2
12
0
1
1
1
Estado final R4(0) 0
8
0
0
0
Investimento 1
Investimento 2
Investimento 3
167Programação dinâmica
0
0
4
4
4
3
Estado inicial R1(4) ?
1
0
3
3
7
2
1
4
0
11
2
2
4
1
2
2
12
0
1
1
1
Estado final R4(0) 0
8
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
168Programação dinâmica
0
0
4
4
4
3
8
Estado inicial R1(4) ?
1
0
3
3
7
6
2
1
4
0
11
2
2
4
1
4
2
2
12
0
1
1
2
1
Estado final R4(0) 0
8
0
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
169Programação dinâmica
0
0
4
4
4
3
8
Estado inicial R1(4) ?
1
0
3
3
7
6
2
1
4
0
11
2
2
4
1
4
2
2
12
0
1
1
2
1
Estado final R4(0) 0
8
0
0
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
170Programação dinâmica
8
0
0
4
4
4
3
8
Estado inicial R1(4) ?
1
6
0
3
3
7
6
2
1
4
4
0
11
2
2
4
1
4
2
2
2
12
0
1
1
2
1
Estado final R4(0) 0
8
0
0
0
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
171Programação dinâmica
8
8
0
0
4
4
4
3
8
Estado inicial R1(4) ?
1
6
0
3
3
7
6
2
1
4
4
0
11
2
2
4
1
4
2
2
2
12
0
1
1
2
1
Estado final R4(0) 0
8
0
0
0
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
172Programação dinâmica
8
8
0
0
4
4
4
3
8
Estado inicial R1(4) ?
1
6
6
0
3
3
7
6
2
1
4
4
0
11
2
2
4
1
4
2
2
2
12
0
1
1
2
1
Estado final R4(0) 0
8
0
0
0
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
173Programação dinâmica
8
8
0
0
4
4
4
3
8
Estado inicial R1(4) ?
1
6
6
0
3
3
7
6
2
1
4
4
4
0
11
2
2
4
1
4
2
2
2
12
0
1
1
2
1
Estado final R4(0) 0
8
0
0
0
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
174Programação dinâmica
8
8
0
0
4
4
4
3
8
Estado inicial R1(4) ?
1
6
6
0
3
3
7
6
2
1
4
4
4
0
11
2
2
4
1
4
2
2
2
2
12
0
1
1
2
1
Estado final R4(0) 0
8
0
0
0
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
175Programação dinâmica
8
8
0
0
4
4
4
3
8
Estado inicial R1(4) ?
1
6
6
0
3
3
7
6
2
1
4
4
4
0
11
2
2
4
1
4
2
2
2
2
12
0
1
1
2
1
Estado final R4(0) 0
8
0
0
0
0
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
176Programação dinâmica
8
8
13
0
0
4
4
4
3
8
Estado inicial R1(4) ?
1
6
6
0
3
3
7
6
2
1
4
4
4
0
11
2
2
4
1
4
2
2
2
2
12
0
1
1
2
1
Estado final R4(0) 0
8
0
0
0
0
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
177Programação dinâmica
8
8
13
0
0
4
4
4
3
8
Estado inicial R1(4) ?
1
Solução ótima projeto 1 3 unidades projeto 2 0
unidades projeto 3 1 unidade Retorno total 13
6
6
0
3
3
7
6
2
1
4
4
4
0
11
2
2
4
1
4
2
2
2
2
12
0
1
1
2
1
Estado final R4(0) 0
8
0
0
0
0
0
0
0
0
Investimento 1
Investimento 2
Investimento 3
178Programação dinâmica
- (II) Problema de substituição de equipamentos
Uma empresa precisa de uma máquina para produzir
determinado produto ao longo dos próximos N anos.
Os seguintes dados são disponíveisP preço de
compra de uma máquina novac(i) custo anual de
operação de uma máquina de idade it(i) preço
obtido na troca de uma máquina de idade ir(i)
valor de residual uma máquina de idade iNo
início do período de programação, a empresa
dispõe de uma máquina com M anos de uso.
Determinar a política ótima de substituição desta
máquina ao longo dos N anos, de modo a minimizar
a soma dos custos anuais. Considerar N 5
(horizonte), M 2 (idade da máquina no início do
horizonte), P 50 (preço de compra de uma
máquina nova) e os demais custos e preços
informados na tabela a seguir.
179Programação dinâmica
- Observar que o modelo pode ser estendido para
considerar preços diferentes para uma máquina
nova a cada ano, taxa de desconto, troca por
máquinas mais novas mas já usadas, etc.
180Programação dinâmica
idade i 0 1 2 3 4 5 6
c(i) 10 13 20 40 70 100 110
t(i) - 32 21 11 5 0 0
r(i) - 25 17 8 0 0 0
181Programação dinâmica
- Estágio
- cada ano k 1, 2, ..., N do horizonte
- Estado
- idade da máquina no ano k
- Decisão
- o que fazer com a máquina no ano k trocá-la por
uma nova ou mantê-la em funcionamento - Recursão
- Vk(i) custo ótimo total do ano k até o final do
horizonte a partir de uma máquina de idade i
182Programação dinâmica
- Recursão
- Vk(i) custo ótimo total do ano k até o final do
horizonte a partir de uma máquina de idade I - Máquinas novas são sempre compradas no dia 1 de
janeiro de cada ano e completam um ano de vida em
1 de janeiro do ano seguinte. - Caso uma máquina de idade i seja trocada por uma
nova no início do ano k Vk(i) p - t(i) c(0)
Vk1(1) - Caso contrário Vk(i) c(i) Vk1(i1)
- Vk(i) mínimo p - t(i) c(0) Vk1(1), c(i)
Vk1(i1)
183Programação dinâmica
- Condições de contorno
- VN1(i) -r(i)A máquina é vendida por seu valor
residual ao final do horizonte. - Início do ano 1 máquina tem idade M
- Custo mínimo ao longo do horizonte
- V1(M) ?
184Programação dinâmica
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
185Programação dinâmica
2
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
186Programação dinâmica
2
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 1
Ano 2
187Programação dinâmica
3
20
2
39
1
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
188Programação dinâmica
3
20
2
39
1
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
189Programação dinâmica
3
20
2
2
39
13
1
1
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
190Programação dinâmica
4
40
3
20
49
2
2
39
13
1
1
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
191Programação dinâmica
4
40
3
20
49
2
2
39
13
1
1
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
192Programação dinâmica
5
70
4
40
55
3
20
49
2
2
39
13
1
1
1
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
193Programação dinâmica
5
70
4
40
55
3
3
20
49
20
2
2
2
39
39
13
13
1
1
1
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
194Programação dinâmica
5
70
4
40
55
3
3
20
49
20
2
2
2
39
39
13
13
1
1
1
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
195Programação dinâmica
6
100
5
70
60
4
40
55
3
3
20
49
20
2
2
2
39
39
13
13
1
1
1
1
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
196Programação dinâmica
6
100
5
70
60
4
4
40
40
55
3
3
3
49
20
49
20
20
2
2
2
2
39
39
39
13
13
13
1
1
1
1
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
197Programação dinâmica
6
100
5
70
60
4
4
40
40
55
3
3
3
49
20
49
20
20
2
2
2
2
39
39
39
13
13
13
1
1
1
1
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
198Programação dinâmica
7
110
6
100
60
5
70
60
4
4
40
40
55
3
3
3
49
20
49
20
20
2
2
2
2
39
39
39
13
13
13
1
1
1
1
1
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
199Programação dinâmica
7
110
6
100
60
5
5
70
70
60
4
4
4
55
40
40
40
55
3
3
3
3
49
20
49
49
20
20
20
2
2
2
2
2
39
39
39
39
13
13
13
13
1
1
1
1
1
28
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
200Programação dinâmica
-0
7
110
6
100
60
-0
5
5
70
70
60
-0
4
4
4
55
40
40
40
55
-8
3
3
3
3
49
20
49
49
20
20
20
-17
2
2
2
2
2
39
39
39
39
13
13
13
13
-25
1
1
1
1
1
28
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
201Programação dinâmica
-0
7
110
6
100
60
-0
5
5
70
70
60
-0
4
4
4
55
40
40
40
55
-8
3
3
3
3
49
20
49
49
20
20
20
-17
2
2
2
2
2
39
39
39
39
13
13
13
13
-25
1
1
1
1
1
28
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
202Programação dinâmica
-0
7
110
35
6
100
60
-0
5
5
70
70
30
60
-0
4
4
4
55
40
40
40
55
24
-8
3
3
3
3
49
20
49
49
20
20
20
14
-17
2
2
2
2
2
39
39
39
39
13
13
13
13
-4
-25
1
1
1
1
1
28
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
203Programação dinâmica
-0
7
110
35
6
100
60
56
-0
5
5
70
70
30
60
-0
4
4
4
55
40
40
45
40
55
24
-8
3
3
3
3
49
20
49
49
20
20
20
14
35
-17
2
2
2
2
2
39
39
39
39
13
13
13
13
-4
24
-25
1
1
1
1
1
28
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
204Programação dinâmica
-0
7
110
35
6
100
60
56
-0
5
5
70
70
30
79
60
-0
4
4
4
55
40
40
45
40
55
24
-8
3
3
3
3
49
20
49
49
20
20
63
20
14
35
-17
2
2
2
2
2
39
39
39
39
13
48
13
13
13
-4
24
-25
1
1
1
1
1
28
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
205Programação dinâmica
-0
7
110
35
6
100
60
56
-0
5
5
70
70
30
79
60
-0
4
4
4
55
40
40
45
97
40
55
24
-8
3
3
3
3
49
20
49
49
20
20
63
20
14
35
-17
2
2
2
2
2
39
39
39
39
13
76
48
13
13
13
-4
24
-25
1
1
1
1
1
28
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
206Programação dinâmica
-0
7
110
35
6
100
60
56
-0
5
5
70
70
30
79
60
-0
4
4
4
55
40
40
45
97
40
55
24
-8
3
3
3
3
49
20
49
49
20
20
63
115
20
14
35
-17
2
2
2
2
2
39
39
39
39
13
76
48
13
13
13
-4
24
-25
1
1
1
1
1
28
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
207Programação dinâmica
-0
7
Solução ótima trocar a máquina nos anos 1, 2 e
4 Custo total 115
110
35
6
100
60
56
-0
5
5
70
70
30
79
60
-0
4
4
4
55
40
40
45
97
40
55
24
-8
3
3
3
3
49
20
49
49
20
20
63
115
20
14
35
-17
2
2
2
2
2
39
39
39
39
13
76
48
13
13
13
-4
24
-25
1
1
1
1
1
28
28
28
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
208Programação dinâmica
- (III) Problema simplificado de planejamento da
operação Considere-se um sistema formado por uma
usina hidráulica com reservatório (ou um sistema
equivalente) e uma usina térmica capaz de
complementar toda a demanda. São conhecidas as
afluências mensais, as demandas mensais, a vazão
turbinada máxima mensal da usina hidráulica e os
volumes inicial e final do reservatório.
Equacionar um modelo passível de ser resolvido
por programação dinâmica para a otimização da
operação, minimizando o custo de complementação
térmica.
209Programação dinâmica
- Dados
- Horizonte k 1, 2, , N
- Demanda no mês k d(k)
- Afluência no mês k a(k)
- Vazão turbinada máxima no mês k p(k)
- Custo unitário da geração térmica no mês k c(k)
- Volume mínimo do reservatório no mês k m(k)
- Volume máximo do reservatório no mês k M(k)
- Volume inicial do reservatório V(1) Vi
- Volume final do reservatório V(N1) Vf
210Programação dinâmica
- Estágio
- cada mês k 1, 2, , N do horizonte de
planejamento - Estado
- volume x(k) do reservatório no mês k
- Decisão
- vazão turbinada u(k) na usina hidráulica no mês k
- geração térmica t(k) no mês k calculada a partir
de u(k) e d(k)t(k) max 0,d(k)-produção(u(k))
211Programação dinâmica
- Recursão
- x(k1) x(k) a(k) - u(k)
- m(k) ? x(k) ? M(k)
- x(1) Vi
- x(N1) Vf
- 0 ? u(k) ? p(k)
- t(k) max 0,d(k)-produção(u(k))
- minimizar ?k1,,n c(k).t(k)
212Programação dinâmica
- Considerações
- Não-linearidades
- produção na usina hidráulica em função da vazão
turbinada - custo de complementação térmica
- Discretização dos volumes e das vazões turbinadas
- aumento do espaço de estados
- Outras variáveis de decisão
- vertimento v(k) no mês k x(k1) x(k) a(k) -
u(k) - v(k) - produção térmica no mês k d(k) produção(u(k))
t(k) deficit(k) - aumento do espaço de decisões
213Programação dinâmica