Parte 3 - PowerPoint PPT Presentation

About This Presentation
Title:

Parte 3

Description:

Title: PowerPoint Presentation Author: cynthia Last modified by: Departamento de Informatica Created Date: 3/16/2004 2:27:57 PM Document presentation format – PowerPoint PPT presentation

Number of Views:67
Avg rating:3.0/5.0
Slides: 259
Provided by: cynthia3a
Category:
Tags: parte | sort

less

Transcript and Presenter's Notes

Title: Parte 3


1
Parte 3
Técnicas de projeto de algoritmos
2
Técnicas de projeto de algoritmos
  • Divisão e conquista
  • Algoritmos gulosos
  • Programação dinâmica
  • Caminhamento em grafos
  • Heurísticas

3
Divisão e conquista
4
Divisã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
5
Má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
6
Má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)
7
Divisão e conquista
8
Divisão e conquista
mergesort
multiplicação de polinômios
9
Problema 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
10
Problema 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)
11
Exemplo
X 5
12
Problema 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

13
Problema 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

14
Problema de seleção
15
Problema 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)

16
Multiplicaçã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)
17
Multiplicação de polinômios
n2k p(x) q(x) ? O(n) p(x) q(x) ? O(n2),
computacionalmente mais caro
18
Multiplicação de polinômios
b1 b0
a0b1
a1b1
b0 b1
a0b0
a1b0
a0 a1
a0 a1
19
Multiplicação de polinômios
20
Multiplicação de polinômios
Complexidade
É necessário resolver menos de quatro problemas
21
Multiplicação de polinômios
22
Multiplicação de polinômios
23
Multiplicação de polinômios
24
Multiplicação de matrizes
Multiplicação de matrizes
Hipótese n2k Particionar A e B em quatro
submatrizes n/2 x n/2
25
Multiplicaçã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)
26
Multiplicaçã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
27
Multiplicação de matrizes
28
Problema 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?
  1. Ordenar todos n pontos pelas coordenadas xi ? O(n
    log n)

29
Problema 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.

30
Problema 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.

31
Problema 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?
32
Problema 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)
33
Problema 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).

34
Problema 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)
35
Problema do par mais próximo
36
Problema 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)
37
Algoritmos gulosos
38
Algoritmos 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

39
Cobertura 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

40
Cobertura por nós mínima
  • O algoritmo guloso obtém necessariamente a
    solução ótima?

41
Cobertura 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!
42
Armazenamento 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.
43
Armazenamento em fita
44
Armazenamento 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?
45
Armazenamento em fita
a troca diminuiria o custo.
46
Problema da mochila
em qualquer solução ótima
47
Problema 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)

48
Problema 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!
49
Problema 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

50
Problema 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

51
Problema 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
54
Algoritmo 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
55
Exemplo
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
56
Exemplo
57
Exemplo
58
Complexidade
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)
59
Estrutura 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

60
Estrutura de dados
...
1
3
2
árvore mais baixa ? árvore mais alta
61
Complexidade
  • 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)

62
Algoritmo 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
63
Algoritmo 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)
64
Exemplo
3
4
9
7
3
2
8
2
8
8
9
65
Intercalaçã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
66
Intercalação ótima de arquivos
n1 n2 n1 n2 n3 n1 n2 n3 n4 3n1 3n2
2n3 n4
67
Intercalação ótima de arquivos
Menores arquivos primeiro!
n1 n2 n3 n4 (n1 n2) (n3
n4) 2n1 2n2 2n3 2n4
68
Intercalaçã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)

69
Intercalaçã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))
70
Intercalação ótima de arquivos
71
Intercalação ótima de arquivos
4
2
3
5
1
L
T
GETNODE
LEAST (L) 1
LEAST (L) 2
L
5
3
4
6
72
Intercalação ótima de arquivos
73
Intercalação ótima de arquivos
74
Intercalaçã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
  • Programação Dinâmica

76
Motivaçã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
  • Procedimento backwards

77
Motivaçã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
  • Procedimento forward

78
Motivaçã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

79
Motivaçã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

80
Programaçã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.

81
Programaçã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

82
Programaçã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)

83
Programaçã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

84
Problema 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.

85
Problema 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 é
  • .

86
Problema 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

87
Problema 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).

88
Problema 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

89
Problema 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.

90
Problema da mochila
y5(4)
91
Problema da mochila
y5(b)
Valor ótimo maxb0,...,4 y5(b)
92
Problema 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
93
Problema 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
94
Problema 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
95
Problema 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
96
Problema 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
97
Problema 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
98
Problema 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
99
Problema 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
100
Problema 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
101
Problema 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
102
Problema 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
103
Problema 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
104
Problema 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
105
Problema 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
106
Problema 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
107
Problema 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
108
Problema 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
109
Problema 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
110
Problema 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
111
Problema 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
112
Problema 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
113
Problema 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
114
Problema 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
115
Problema 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
116
Problema 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
117
Problema 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
118
Problema 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
119
Problema 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
120
Problema 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
121
Problema 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
122
Problema 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
123
Problema 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
124
Problema 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
125
Problema 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
126
Problema 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
127
Problema 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
128
Problema 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
129
Problema 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
130
Problema 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
131
Problema 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
132
Problema 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
133
Problema 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
134
Problema 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
135
Problema 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
136
Problema 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
137
Problema 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
138
Problema 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
139
Problema 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
140
Problema 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
141
Problema 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
142
Problema 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
143
Problema 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
144
Problema 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
145
Problema 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
146
Problema 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
147
Problema 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
148
Problema 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
149
Problema 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
150
Problema 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.

151
Programaçã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
152
Programaçã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.

153
Programaçã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.

154
Programaçã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

155
Programaçã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
156
Programaçã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)

157
Programaçã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.

158
Programação dinâmica
Estado inicial R1(4) ?
Estado final R4(0) 0
Investimento 1
Investimento 2
Investimento 3
159
Programação dinâmica
4
Estado inicial R1(4) ?
Estado final R4(0) 0
0
Investimento 1
Investimento 2
Investimento 3
160
Programaçã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
161
Programaçã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
162
Programaçã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
163
Programaçã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
164
Programaçã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
165
Programaçã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
166
Programaçã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
167
Programaçã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
168
Programaçã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
169
Programaçã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
170
Programaçã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
171
Programaçã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
172
Programaçã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
173
Programaçã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
174
Programaçã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
175
Programaçã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
176
Programaçã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
177
Programaçã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
178
Programaçã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.

179
Programaçã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.

180
Programaçã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
181
Programaçã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

182
Programaçã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)

183
Programaçã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) ?

184
Programação dinâmica
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
185
Programação dinâmica
2
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
186
Programação dinâmica
2
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 1
Ano 2
187
Programação dinâmica
3
20
2
39
1
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
188
Programação dinâmica
3
20
2
39
1
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
189
Programação dinâmica
3
20
2
2
39
13
1
1
28
Ano 3
Ano 4
Ano N5
Ano 6
Ano 1
Ano 2
190
Programaçã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
191
Programaçã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
192
Programaçã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
193
Programaçã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
194
Programaçã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
195
Programaçã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
196
Programaçã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
197
Programaçã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
198
Programaçã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
199
Programaçã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
200
Programaçã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
201
Programaçã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
202
Programaçã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
203
Programaçã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
204
Programaçã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
205
Programaçã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
206
Programaçã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
207
Programaçã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
208
Programaçã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.

209
Programaçã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

210
Programaçã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))

211
Programaçã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)

212
Programaçã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

213
Programação dinâmica
  • Considerações (contin
Write a Comment
User Comments (0)
About PowerShow.com