MOQ – 43 PESQUISA OPERACIONAL Professor: Rodrigo A. Scarpel [email protected] www.mec.ita.br/~rodrigo Programa do curso: Semana Conteúdo 1 Apresentação da disciplina. Formulação em programação matemática (PM). 2 Introdução à Programação Linear. (PL) Resolução de problemas de PL pelo Método Gráfico. Introdução ao método simplex para resolução de PPL . 3 Resolução de problemas de PL pelo Método Simplex. A matemática do método simplex. 4 Problemas com soluções iniciais (Método das 2 fases e o Big-M). Degeneração, ciclagem e convergência do método simplex. 5 Análise de Sensibilidade. Resolução computacional de problemas de programação matemática. 6 Prova 1 7 O problema dual. Formulação e Interpretação econômica do problema dual. Teoremas da dualidade. 8 Algoritmos simplex adicionais. Análise pós-otimização. 9 O Problema do Transporte. 10 O problema do Transbordo. O problema da Designação. 11 Programação Linear Inteira: Formulação, Método de Branch and Bound. Problemas de otimização combinatória. 12 Prova 13 Otimização em Redes. O problema do caixeiro viajante e do carteiro chinês. Os problemas do caminho mínimo e do fluxo máximo. 14 Introdução à programação não-linear. 15 Princípios de otimização global. Métodos não exatos para resolução de problemas de PM. 16 Princípios de programação multiobjetivo. Fechamento da disciplina. MOQ – 43 OTIMIZAÇÃO EM REDES Professor: Rodrigo A. Scarpel [email protected] www.mec.ita.br/~rodrigo Fluxo em Redes (Network Flows) : Muitos problemas de otimização podem ser melhor analisados se for utilizada uma representação gráfica ou em forma de redes. Esses problemas são enquadrados como de otimização em redes ou fluxo em redes (network flows) Principais Problemas: • Transporte (Transportation) • Atribuição ou Designação (Assignment) • Transbordo (Transshipment) • Caminho Mínimo (Shortest-Path) / Máximo • Circuitos Hamiltonianos (TSP) • Máximo fluxo (Maximum-flow problems) • Problema da árvore geradora mínima (Minimum Spanning Tree) Fluxo em Redes (Network Flows) : Definições: Um grafo, ou rede, é definido por dois conjuntos de símbolos: nós (ou vértices) e arcos. Um arco consiste de um par ordenado de nós e representa uma possível direção de movimento que pode ocorrer entre os nós. Uma seqüência de arcos distintos que ligam nós é chamado de caminho (path). Uma árvore é uma rede conectada (todos os nós estão conectados por no mínimo 1 caminho) sem ciclos. MOQ – 43 OS PROBLEMAS DO CAIXEIRO VIAJANTE E CARTEIRO CHINÊS Professor: Rodrigo A. Scarpel [email protected] www.mec.ita.br/~rodrigo O problema do caixeiro viajante: O problema do caixeiro viajante é um problema de otimização associado à determinação dos circuitos hamiltonianos num grafo qualquer. Diz-se que um circuito é Hamiltoniano se passar uma e só uma vez por todos os vértices de uma rede. A designação provém do islandês Hamilton que em 1857 propôs um jogo denominado “Around the World". Nesse jogo, os vértices representavam as 20 cidades mais importantes do mundo na época. O objetivo do jogo consistia em encontrar um percurso através dos vértices, com início e fim no mesmo vértice e que passasse por cada vértice apenas uma vez. 0 2 0 2 4 1 3 6 4 1 5 3 6 5 O problema do caixeiro viajante: Formulação de Dantzig-Fulkerson-Johnson: Seja um grafo G = (V,A), em que V é o conjunto de vértices (cidades) e A é o conjunto de arcos (ligações entre duas cidades). Var. decisão: xij = 1, se o arco de i para j estiver no caminho 0, caso contrário Minimizar dij xij i j S . A. xij 1, j i xij 1, i j xij S 1, i , jS S grafo O problema do caixeiro viajante: Exemplo: 1 1 2 2 6 5 3 3 5 4 4 F.O.: MIN 1x1,2 + 1x2,1 + 2x2,3 + 2x3,2 + 3x3,4 + 3x4,3 + 6x1,4 + 6x4,1 + 4x4,5 + 4x5,4 + 5x5,1 + 5x1,5 S.A. x1,2 + x1,4 + x1,5 = 1 x2,3 + x2,1 = 1 x3,2 + x3,4 = 1 x3,4 + x1,4 + x5,4 = 1 x5,4 + x5,1 = 1 x2,1 + x4,1 + x5,1 = 1 x3,2 + x1,2 = 1 x2,3 + x4,3 = 1 x4,3 + x4,1 + x4,5 = 1 x1,5 + x4,5 = 1 O problema do caixeiro viajante: 1 1 2 2 6 5 x1,2 + x2,1 + x2,3 + x3,2 + x3,4 + x4,3 + x4,1 + x1,4 3 3 3 4 5 4 1 1 2 2 6 5 3 3 5 4 4 x1,4 + x4,1 + x4,5 + x5,4 + x1,5 + x5,1 2 O problema do caixeiro viajante: MIN 1x12 + 1x21 S.T. x12 + x14 + x15 x21 + x41 + x51 x23 + x21 = 1 x32 + x12 = 1 x32 + x34 = 1 x23 + x43 = 1 x34 + x14 + x54 x43 + x41 + x45 x54 + x51 = 1 x15 + x45 = 1 x12 + x21 + x23 x14 + x41 + x45 x12 >=0 x14 >=0 x15 >=0 x21 >=0 x41 >=0 x51 >=0 x23 >=0 x32 >=0 x34 >=0 x43 >=0 x54 >=0 x45 >=0 x12 <=1 x14 <=1 x15 <=1 x21 <=1 x41 <=1 x51 <=1 x23 <=1 x32 <=1 x34 <=1 x43 <=1 x54 <=1 x45 <=1 + 2x23 + 2x32 + 3x34 + 3x43 + 6x14 +6x41 + 4x45 + 4x54 + 5x51 + 5x15 = 1 = 1 = 1 = 1 + x32 + x34 + x43 + x41 + x14 <= 3 + x54 + x15 + x51 <= 2 1 1 2 2 5 3 3 5 4 4 O problema do caixeiro viajante: Embora a formulação de Dantzig-Fulkerson-Johnson tenha conseguido resolver o problema há uma dificuldade de implementação: colocar na formulação de todos os subgrafos de um grafo complexo. Exemplo: 2 1 3 5 4 O problema do caixeiro viajante: Resolução por branch-and-bound: Resolver o problema do caixeiro viajante como um problema de atribuição (relaxado) Minimizar dij xij i j S . A. xij 1, j i xij 1, i j Se a solução do problema relaxado for viável para o problema do caixeiro viajante, esta é ótima. Caso contrário adicione uma restrição para bloquear o arco (xij = 0). Repita o procedimento até encontrar uma solução ótima para o problema relaxado e que atenda o problema de caixeiro viajante. O problema do caixeiro viajante: Resolução por branch-and-bound: Exemplo 2 1 3 5 4 O problema do caixeiro viajante: Resolução pela heurística do vizinho mais próximo: Passo 1: selecione um ponto de partida. Passo 2: Conecte este ponto ao seu vizinho mais próximo, desde que esse não forme um subcircuito. Repita o passo 2 até que todos os nós tenham sido escolhidos. Exemplo: 2 1 3 1–5–2–4–3–1 5 4 D = 668 O problema do caixeiro viajante: Teste da solução pela heurística da inversão: É possível buscar melhorar a solução invertendo-se 2 a 2, 3 a 3, …, n-1 a n-1, em que n é o número de nós de uma rede. Exemplo: 1–5–2–4–3–1 D = 668 1–2–5–4–3–1 D = 737 1–5–4–2–3–1 D = 962 1–5–2–3–4–1 D = 704 1–4–2–5–3–1 D = 964 1–5–3–4–2–1 D = 807 1–3–2–4–5–1 D = 962 O problema do carteiro chinês (PCC): O PCC é um problema de otimização que objetiva cobrir com um passeio todos os arcos de um grafo, minimizando a distância total percorrida, permitindo a repetição de arestas. Ilustração: Existem formulações do PCC para o caso orientado, não-orientado e misto. O problema do carteiro chinês: Formulação (caso não-orientado): VD: xij é o número de vezes que o arco (i,j) é usado (no sentido i j) n Minimizar n d i 1 j 1 n S . A. x ij ij n x x j 1 ji j 1 ij (MINIMIZAR A DISTÂNCIA PERCORRIDA) 0, i 1,..., n xij x ji 1, i j xij 0 e inteiro O problema do carteiro chinês (PCC): Exemplo: M in 3x1, 2 4 x1,8 2 x 6,8 3x 2,1 4x 8,1 2 x 8,6 S.A. x1, 2 x1,5 x1, 6 x1,8 x 2,1 x 5,1 x 6,1 x 8,1 0 x 8, 6 x 8,1 x 6,8 x1,8 0 7 2 x1, 2 x 2,1 1 x 6 ,8 x 8, 6 1 x1, 2 , , x 8, 6 0 3 5 3 7 4 6 1 3 6 2 4 8 4 4 5 6 MOQ – 43 PROBLEMA DO CAMINHO MÍNIMO / MÁXIMO Professor: Rodrigo A. Scarpel [email protected] www.mec.ita.br/~rodrigo O problema do caminho mínimo / máximo: Problema do caminho mínimo / máximo Otimização de redes lineares Decisões estratégicas: selecionar o caminho mais curto / longo entre nós Utilidade: caminho mais curto: rota de transporte, substituição de equipam, … caminho mais longo: PERT, CPM e problema da mochila 2 3 4 2 4 Depósito 1 2 1 6 2 3 3 4 5 Cidade 1 Formulação do problema do caminho mínimo / máximo: Minimizar Maximizar dij xij i j dij é a distância entre a origem i e o destino j Var. decisão: xij = 1, se o arco (i,j) estiver no caminho mínino / máximo 0, caso contrário k s ( fonte ) 1 , S . A. xkj xik 0, para todos os outros k j i 1 , k r ( sorvedouro) xij 0 , i, j Formulação do problema do caminho mínimo / máximo: MIN / MAX Z = 4X12 + 3X13 + 3X24 + 2X25 + 4X35 + 2X46 + 2X56 Var. decisão: xij = 1, se a ligação fizer parte do caminho mínimo / máximo 0, caso contrário S.A. X12 + X13 = 1 (fonte) - X46 - X13 = -1 (sorvedouro) X12 = X24 + X25 X46 = X24 X13 = X35 X56 = X25 + X35 2 3 4 2 4 Depósito 1 2 1 6 2 3 3 4 5 Cidade 1 Resolução do problema do caminho mínimo: Algoritmo Dijkstra: Início: rotule o nó fonte de forma permanente com 0 e cada um dos nós conectados a este, de forma temporária, com a distância do arco que une 1 a este. Todos os outros nós receberão um rótulo temporário . 1 2 * 0 Depósito 1 0 4 4 3 2 4 2 1 6 2 3 4 3 1 3 5 Cidade 1 Resolução do problema do caminho mínimo: Algoritmo Dijkstra: Passo 2: Selecione o nó com o menor rótulo temporário e faça-o permanente. Então rotule cada um dos nós conectados a este, de forma temporária, com a distância do arco que os une. Repita o passo 2 até chegar no nó sorvedouro. 1 2 * 0 Depósito 1 0 4 4 3 2 4 2 1 6 2 3 4 3 1 3 * 5 3 7 Cidade 1 Resolução do problema do caminho mínimo: Algoritmo Dijkstra: Passo 2: Selecione o nó com o menor rótulo temporário e faça-o permanente. Então rotule cada um dos nós conectados a este, de forma temporária, com a distância do arco que os une. Repita o passo 2 até chegar no nó sorvedouro. * 1 2 * 0 Depósito 1 0 2 4 7 4 3 2 4 2 1 6 2 3 4 3 1 3 * 5 2 6 Cidade 1 Resolução do problema do caminho mínimo: Algoritmo Dijkstra: Passo 2: Selecione o nó com o menor rótulo temporário e faça-o permanente. Então rotule cada um dos nós conectados a este, de forma temporária, com a distância do arco que os une. Repita o passo 2 até chegar no nó sorvedouro. * 1 2 * 0 Depósito 1 0 2 4 7 4 3 2 4 2 1 2 1 4 3 * 8 6 3 3 5 5 2 6 * Cidade 1 Resolução do problema do caminho mínimo: Algoritmo Dijkstra: Passo 2: Selecione o nó com o menor rótulo temporário e faça-o permanente. Então rotule cada um dos nós conectados a este, de forma temporária, com a distância do arco que os une. Repita o passo 2 até chegar no nó sorvedouro. * 1 Depósito 1 4 2 * 0 * 0 2 7 4 3 2 4 2 1 2 1 4 3 * 8 6 3 3 5 5 2 6 * Cidade 1 Resolução do problema do caminho mínimo: Algoritmo Dijkstra: Passo 2: Selecione o nó com o menor rótulo temporário e faça-o permanente. Então rotule cada um dos nós conectados a este, de forma temporária, com a distância do arco que os une. Repita o passo 2 até chegar no nó sorvedouro. * 1 Depósito 1 4 2 * 0 * 0 2 7 4 3 * 2 4 2 1 2 1 4 3 * 8 6 3 3 5 5 2 6 * Cidade 1 Resolução do problema do caminho mínimo: Algoritmo Dijkstra: * 1 Depósito 1 4 2 * 0 * 0 2 7 4 3 * 2 4 2 1 2 1 4 3 * 8 6 3 3 5 5 2 6 * Caminho mais curto: 1 – 2 – 5 – 6 : distância = 8 Cidade 1 Resolução do problema do caminho mínimo: Problema do Transbordo: 2 3 4 2 4 Depósito 1 2 1 6 2 3 3 2 1 2 3 4 5 Demanda Cidade 1 4 3 5 4 5 6 4 3 M M M 0 M 3 2 M M 0 M 4 M M M 0 M 2 M M M 0 2 1 1 1 1 1 Oferta 1 1 1 1 1 Exemplo - problema do caminho mínimo: Um carro novo é comprado por US$12,000.00. O custo de manutenção e seu preço de revenda dependem da idade do carro como segue: Idade do carro (anos) Custo de Manutenção (US$) 0 2,000.00 1 4,000.00 2 5,000.00 3 9,000.00 4 12,000.00 Idade do carro (anos) Preço de Revenda (US$) 1 7,000.00 2 6,000.00 3 2,000.00 4 1,000.00 5 0,000.00 Formule o problema que determine a política ótima de troca de veículos no horizonte de 5 anos (leia-se política ótima aquela que minimiza a soma dos custos de compra, manutenção e revenda). 5 4 3 2 1 0 Exemplo - problema do caminho mínimo: Custo total: Ficar com o carro 1 ano (US$ mil) = 12+2 -7 = 7 Ficar com o carro 2 anos (US$ mil) = 12 +2 +4 -6 = 12 Ficar com o carro 3 anos (US$ mil) = 12 +2 +4 +5 -2 = 21 Ficar com o carro 4 anos (US$ mil) = 12+2 +4 +5 +9 -1 = 31 Ficar com o carro 5 anos (US$ mil) = 12+2 +4 +5 +9 +12 -0 = 44 5 0 0 5 2 3 4 7 5 12 5 21 1 5 31 0 5 44 Exemplo - problema do caminho mínimo: 5 0 0 5 5 0 0 7 5 12 4 7 5 12 19 1 4 2 3 4 5 2 3 4 4 19 3 19 28 0 4 1 3 24 38 0 3 33 Exemplo - problema do caminho mínimo: 5 0 0 5 5 0 0 7 5 12 4 19 3 19 7 5 12 1 3 2 3 4 5 2 3 4 4 19 3 19 24 0 2 1 3 24 31 0 2 31 1 31 Exemplo - problema do caminho mínimo: 5 0 0 5 2 3 4 7 5 12 4 19 3 19 1 3 Caminhos mais curtos: 5 – 3 – 1 – 0 : distância = 31 5 – 4 – 2 – 0 : distância = 31 5 – 3 – 2 – 0 : distância = 31 24 0 2 31 1 31 Problema do caminho máximo: CPM (critical path method) Exemplo (caminho máximo): CPM (critical path method) Número 0 1 2 3 4 5 6 7 8 9 10 Atividade Início do Trabalho Projeto de Simulação Treinamento de Pessoal Construção das Instalações Certificação das Instalações Aquisição de material Aferição dos instrumentos Teste do material adquirido Montagem da cabine de simulação Execução da simulação Fim Atividade de pré-requisito 0 1 1 3,6 1 5 2,4 7 8 9 2 0 1 7 3 5 Duração 0 2 6 4 1 1 3 3 1 2 0 4 6 8 9 10 Exemplo (caminho máximo): CPM (critical path method) X_27 2 X_12 7 3 X_47 6 3 X_01 0 2 X_13 1 4 X_34 3 4 1 X_64 X_15 1 5 X_56 3 1 X_78 1 8 9 10 X_89 X_910 2 0 6 Variável de decisão: x_ij = 1 se a ligação da etapa i para a etapa j estiver no caminho crítico e 0 caso contrário. Restrições: x_01 = 1 x_12 + x_13 + x_15 = x_01 x_27 = x_12 x_34 = x_13 x_56 = x_15 x_64 = x_56 x_47 = x_34 + x_64 x_78 = x_27 + x_47 x_89 = x_78 x_910 = x_89 x_ij = 0,1 Função Objetivo: MAX 2*x_01 + 6*x_12 + 4*x_13 + 1*x_15 + 3*x_27 + 1*x_34 + 3*x_56 + 1*x_64 + 3*x_47 + 1*x_78 + 2*x_89 Problema do caminho máximo: Resolução CPM (critical path method) Os cálculos do caminho crítico envolvem dois passos: Passo 1: Forward pass (tempo mais cedo de ocorrência) Passo 2: Backward pass (tempo mais tarde de ocorrência) Uma atividade estará no caminho crítico se: Exemplo (caminho máximo): CPM (critical path method) 11 11 8 8 3 2 7 6 6 2 0 4 1 2 2 3 1 3 4 1 14 14 12 12 8 2 9 0 1 1 0 0 7 5 4 3 3 6 8 7 14 14 7 6 Caminho crítico: 0 – 1 – 2 – 7 – 8 – 9 – 10 : distância = 14 10 Exemplo (caminho máximo): CPM (critical path method) Caminho crítico: 0 – 1 – 2 – 7 – 8 – 9 – 10 : distância = 14 11 11 8 8 3 2 7 6 6 2 0 4 1 1 4 5 2 4 3 3 8 7 6 7 6 7 8 3 9 5 4 6 2 6 8 11 12 1 14 14 12 12 8 2 9 1 2 2 0 0 3 3 1 1 7 14 tempo 14 14 0 10 MOQ – 43 PROBLEMA DA ÁRVORE GERADORA MÍNIMA Professor: Rodrigo A. Scarpel [email protected] www.mec.ita.br/~rodrigo O problema da árvore geradora mínima: Exemplo: O problema da árvore geradora mínima: Em uma rede com n nós, uma árvore geradora é um grupo de n-1 arcos que conectam todos os nós de uma rede sem formar loopings. A árvore geradora mínima é uma árvore geradora em que a soma dos n1 arcos é a menor possível Exemplo: O problema da árvore geradora mínima: Exemplo: F.O. MIN 2Xab + 1Xac + 4Xae + 2Xbd + 3Xbc + 2Xcd + 2Xce + 5Xcg + 3Xeg + 2Xdf + 4Xfg + 4Xfh + 5 Xgh S.A. Xab + Xac + Xae 2 Xab + Xbc + Xbd 2 Xac + Xbc + Xcd + Xce + Xcg 2 Xbd + Xcd + Xdf 2 Xae + Xce + Xeg 2 Xdf + Xfg + Xfh 2 Xeg + Xfg + Xgh 1 Xfh + Xgh 1 1 Xab, Xac, Xae, ..., Xgh 0 Xab, Xac, Xae, ..., Xgh inteiras b d a c f h e g Resolução do problema da árvore geradora mínima: Algoritmo de resolução: Seja N={1, 2, …, n} o conjunto de nós de uma rede, Ck o conjunto de nós conectados de forma permanente na iteração k e Ĉk o conjunto de nós anda não conectados de forma permanente na iteração k. Passo 0: C0 = e Ĉ0 = N Passo 1: Comece em qualquer nó i do conjunto Ĉ0, faça C1 = {i} e Ĉ1 = N-{i} Passo geral k: selecione o nó j* de Ĉk-1 que resulte no menor arco até um nó do conjunto Ck-1. Coloque j* permanentemente em Ck-1 e remova este de Ĉk-1, ou seja, Ck = Ck-1 + {j*} e Ĉk = Ĉk-1 – {j*} Resolução do problema da árvore geradora mínima: Solução: Passo 0: C0 = e Ĉ0 = {a,b,c,d,e,f,g,h} Passo 5: C5 = {e,c,a,d,b} e Ĉ5 = {f,g,h} Passo 1: C1 = {e} e Ĉ1 = {a,b,c,d,f,g,h} Passo 6: C5 = {e,c,a,d,b,f} e Ĉ5 = {g,h} Passo 2: C2 = {e,c} e Ĉ1 = {a,b,d,f,g,h} Passo 7: C5 = {e,c,a,d,b,f,g} e Ĉ5 = {h} Passo 3: C3 = {e,c,a} e Ĉ1 = {b,d,f,g,h} Passo 8: C5 = {e,c,a,d,b,f,g,h} e Ĉ5 = Passo 4: C4 = {e,c,a,d} e Ĉ1 = {b,f,g,h} EXEMPLO: ÁRVORE GERADORA MÍNIMA MOQ – 43 PROBLEMA DO FLUXO MÁXIMO Professor: Rodrigo A. Scarpel [email protected] www.mec.ita.br/~rodrigo Problema do fluxo máximo: • O problema do fluxo máximo é um problema de enumeração de cortes. • Um corte define um conjunto de arcos que, quando eliminado da rede, causará um rompimento total do fluxo entre o nó de origem e o nó sorvedouro. • A capacidade do corte é igual à soma das capacidades de seus arcos. Formulação do problema do fluxo máximo: Var. decisão: xij = qtde (volume) que deve ir da origem i para o destino j Maximizar Z x ij i corte j corte S . A. x x kj j xij Cij ik 0 , (i, j) origem ou destino i , (i, j) xij 0 , (i, j) Planejamento da Freqüência de Vôos: Uma empresa de transporte aéreo deseja determinar quantos vôos com conexão podem ser realizados entre Manaus e Salvador. Os vôos devem fazer conexão primeiro em Belém e depois em Brasília ou em Fortaleza. Em função da previsão de demanda e do tamanho da frota, determinou-se o numero máximo de vôos diários entre pares de cidade. Formular e resolva o problema objetivando maximizar o número de vôos diários entre Manaus e Salvador. Manaus Cidades Belém Manaus - Belém Belém - Brasília Belém - Fortaleza Brasília - Salvador Fortaleza - Salvador Fortaleza Brasília Salvador Número Máximo de Vôos Diários 3 2 3 1 2 Planejamento da Freqüência de Vôos: Variável de Decisão: Qi-j=Qtde de i para j Manaus 3 F.O. MAX = QMAN-BEL 2 Belém 1 Salvador Brasília 2 Manaus 3 1 Belém Fortaleza 1 2 Salvador Brasília 2 Restrições de Balanceamento Solução: Restrições de 3 Limite S.A. QMAN-BEL 3 QBEL-BRA 3 QBEL-FOR 2 QBRA-SAL 2 QFOR-SAL 1 QMAN-BEL = QBEL-BRA + QBEL-FOR QBEL-BRA = QBRA-SAL QBEL-FOR = QFOR-SAL Qi-j 0 Fortaleza Resolução do problema do fluxo máximo: • Resolução do problema de fluxo máximo por enumeração: • Entre todos os possíveis cortes na rede, o que tiver a menor capacidade dá o fluxo máximo na rede. • Uma alternativa para determinar o fluxo máximo é enumerar todos os cortes. • Em grandes redes a enumeração pode ser uma tarefa difícil. Assim, nestes casos, a necessidade de um algoritmo (ou heurística) eficiente é imperativa. Resolução do problema do fluxo máximo: • Algoritmo do fluxo máximo: IT1: SMANAUS = {Belém} K = Belém e [3,Manaus] 3 Manaus [3,Belém] 3 SBELÉM = {Fortaleza;Brasília} Belém Fortaleza [,-] CMANAUS-BELÉM = MAX{3} = 3 K = Fortaleza pois 2 2 [2,Fortaleza] Salvador Brasília 1 CBELÉM-FORTALEZA = MAX{3,2} = 3 SFORTALEZA = {Salvador} K = Salvador e CFORTALEZA-SALVADOR = MAX{2} = 2 FLUXO NA ITERAÇÃO 1 = MIN{,3,3,2} = 2 Atualizar as capacidades (C) Resolução do problema do fluxo máximo: • Algoritmo do fluxo máximo: IT2: SMANAUS = {Belém} K = Belém e [1,Manaus] 1 Manaus CMANAUS-BELÉM = MAX{1} = 1 1 SBELÉM = {Fortaleza;Brasília} Belém Fortaleza [,-] K = Brasília pois 0 2 [1,Belém] Salvador Brasília [2,Belém] 1 CBELÉM-BRASÍLIA = MAX{1,2} = 2 SBRASÍLIA = {Salvador} K = Salvador e CBRASÍLIA-SALVADOR = MAX{1} = 1 FLUXO NA ITERAÇÃO 2 = MIN{,1,2,1} = 1 Atualizar as capacidades (C) Resolução do problema do fluxo máximo: • Algoritmo do fluxo máximo: IT3: Como todos os nós que partem de Manaus (ou chegam a [1,Manaus] 0 Manaus Salvador) têm capacidade 1 Belém residual 0, não há mais nenhuma Fortaleza [,-] 0 1 Assim, [1,Belém] Salvador Brasília [2,Belém] rota de passagem possível. 0 FLUXO MÁXIMO NA REDE (F) = f1 + f2 = 2 + 1 = 3 vôos Para casa: • Lista de Exercícios 10 • Leitura Taha: 6, 9.1.2 e 9.3 Winston: 8.1 a 8.6 e 9.5 a 9.6 OBSERVAÇÃO Este material refere-se às notas de aula do curso MOQ-43 (Pesquisa Operacional) do Instituto Tecnológico de Aeronáutica (ITA). Não substitui o livro texto, as referências recomendadas e nem as aulas expositivas. Este material não pode ser reproduzido sem autorização prévia do autor. Quando autorizado, seu uso é exclusivo para atividades de ensino e pesquisa em instituições sem fins lucrativos.