Você está na página 1de 2

Brunch and bound – decompor a região admissível em sub-regiões.

Resolver a sua
relaxação linear. Atualizar a lista de problemas a resolver e o majorante/ minorante.
Regras: LIFO (o primeiro problema a analisar é o último a entrar na lista); BUB/BLB (é
analisado o problema de maior majorante/ menor minorante).

Corte de gomery: nova restrição que não exclui da RA da RL do problema nenhuma


solução admissível do problema de PLI e exclui a solução ótima da RL. O Corte é gerado
a partir de uma linha do quadro do simplex – no fim reotimizar simplex para nova sol.

Otimização em redes: Árvore – grafo (rede) não orientado, conexo (há um caminho a
ligar todos os nodos) e sem ciclos.
Problema da árvore geradora mínima: Algoritmo de Kruskal – criar uma lista de arestas
ordenadas por ordem crescente de comprimento, ir retirando (sem ser as que formam
ciclos) até estarem incluídas as v-1 arestas. Algoritmo de Prim: escolher um nodo e
incluí-lo na árvore. Encontrar a aresta (k,l) com k já incluído e l ainda não cujo
comprimento é o menor, incluí-la na árvore e ao nodo l. (Vt = nodos incluídos, T
={arestas})

Problema do Caminho + curto: Algoritmo de Dijkstra – atribuir marca permanente ao


nodo de origem; atualizar o valor das marcas e atribuir permanente ao de valor
mínimo.
Formulação: xij = 1 se o arco (i,j) é incluído no cmc de s para t; 0,c.c

Obj: min ∑ cij∗xij


i, j
❑ ❑ ❑ ❑
s.a. ∑ xsj=1 ; ∑ xi t = 1; ∑ xi k - ∑ x k j = 0
s, j i ,t i, k k, j

Problema do fluxo máximo: Algoritmo de Ford Fulkerson- inic. 𝑥ij = 0 ∀(𝑖, 𝑗) ∈ 𝐴 𝑓=0
Apagar todas as marcas 𝐿(𝑗) = (𝐿1(𝑗), 𝐿2(𝑗)) e marcar o nodo 1 com 𝐿(1) = (−, ∞). Se o
nodo 𝑖 está marcado, o nodo 𝑗 não está marcado e 𝑥ij < 𝑢ij, marcar o nodo 𝑗 com 𝐿(𝑗) =
(+𝑖, Δj), onde Δj = 𝑚𝑖𝑛{Δi, 𝑢ij – 𝑥ij}. Se o nodo 𝑖 está marcado, o nodo 𝑗 não está
marcado e 𝑥ij > 0, marcar o nodo 𝑗 com𝐿(𝑗)=(−𝑖,Δj),comΔj = 𝑚𝑖𝑛{Δi,𝑥ij}. Repetir até o
nodo destino, 𝑛, estar marcado ou não ser possível marcar mais nodos. Caso contrário,
atualizar os fluxos de acordo com: Δ = Δn;𝑓=𝑓+∆;𝑖=𝑛

Teorema: o valor do fluxo máximo é igual à capacidade do corte de capacidade mínima


Formulação: xij = qt de fluxo que passa no arco (i,j); f = fluxo da origem para o destino
❑ ❑ ❑ ❑
Obj: max f; s.a. ∑ x 1 j=f ; ∑ xi n = f; ∑ xik - ∑ xkj = 0; xij ≤ uij ; xij ≥ 0.
1, j i,n i,k k, j

Redes de projetos: Método CPM – caminho crítico: dij – duração atividade; cj – data +
cedo do acont. J ; tj – data + tarde do acontecimento j; Folgas – atv: Fij = tj-ci-dij; acont:
Fj = tj – cj; caminho crítico – não há folgas nos nodos nem nos arcos.

Método Pert: durações probabilísticas; média (aij + 4mij + bij /6); variância (bij – aij
/6)^2
Calcular a data mais cedo esperada de cada acontecimento (se empate, escolher o
caminho de variância máxima) (ex.: se Atividade no arco (1,2) tem média 4 e var 1, o
valor da aresta é A-4-1)

Programação não linear: Método da secção de ouro: α = 0,618; 1 - α = 0,382; N=n+1 e


α n ( b−a ) < L(L dado)

Inic. λ 1 = a1 + (1 – α )(b1-a1); μ1 = a1 + α (b1-a1); tabela: k | ak | bk | λ k | μk | f( λ k ¿ |f( μk ¿


Passo iterativo: se f( λ k ¿ < f( μk ¿ : [ak+1, bk+1] = [ λ k ,bk], se k= n stop; c.c. λ k+1=μ k
μk +1 = ak+1 + α (bk+1-ak+1); k = k+1
Se f( λ k ¿ ≥ f( μk ¿ : [ak+1, bk+1] = [a k , μk ], se k= n stop; c.c. μk +1=λ k
λ k+1 = ak+1 + (1-α ¿ (bk+1-ak+1); k = k+1

Método de Fibonacci: F 0=F 1=1; F n+1=F n + Fn−1 ; N = n+1; lim Fn/Fn-1=1,618


F n> b−a/ L
Inic. λ 1 = a1 + F N −2 / F N (b1-a1); μ1 = a1 + + F N −1 / F N (b1-a1);
Passo iterativo: se f( λ k ¿ < f( μk ¿ : [ak+1, bk+1] = [ λ k ,bk]; λ k+1=μ k
μk +1 = ak+1 + F N −k−1 /F N −k (bk+1-ak+1); se k= n-2 : ir para 3; c.c.k = k+1
Se f( λ k ¿ ≥ f( μk ¿ : [ak+1, bk+1] = [a k , μk ]; μk +1=λ k
λ k+1 = ak+1 + F N −k−2 /F N −k (bk+1-ak+1); se k= n-2 : ir para 3; c.c.k = k+1
Ponto 3: λ n=λ n−1; μn= λn−1 +ε (ε dado); se f( λ n ¿ < f( μn ¿ : [an, bn] = [ λ n,bn-1];
Se f( λ n ¿ ≥ f( μn ¿ : [an, bn] = [a n−1, λ n]. Stop

Método do gradiente:
Inic. Escolher ε > 0 e um ponto inicial x 1 ; k = 1
Passo iterativo: se ¿|∇ f ( x k ) <ε|∨¿ - stop
c.c. seja r k uma solução ótima do problema: max h(r) = f ( x k +r ∇ f ( x k ) ¿ s.a r≥ 0
(ver através da derivada de h); Gerar novo ponto x k+1=x k +r k ∇ f ( x k ); k=k+1

Você também pode gostar