Simplex e o Problema do Transporte

Documentos relacionados
CAPÍTULO O Método Simplex Pesquisa Operacional

Método Simplex Revisado

Programação Linear - Parte 4

UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO

MANUAL DO USUÁRIO SIMPLEX. Prof. Erico Fagundes Anicet Lisboa, M. Sc.

PROGRAMAÇÃO LINEAR. Formulação de problemas de programação linear e resolução gráfica

Método Simplex Resolução Algébrica. Prof. Ricardo Santos

ANALISANDO AS TÉCNICAS DE SOLUÇÃO POR QUADROS E O MÉTODO SIMPLEX QUANDO EMPREGADOS NA RESOLUÇÃO DO PROBLEMA DE TRANSPORTE DE UMA INDÚSTRIA DE PNEUS

MÉTODO SIMPLEX QUADRO SIMPLEX

Introdução em Engenharia. Problemas de Engenharia. Engenharia: Sérgio Haffner SÍNTESE. Conceitos Conceitos fundamentais

UM SOFTWARE INTERATIVO PARA O ALGORITMO SIMPLEX EM PROGRAMAÇÃO LINEAR

Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos Jorge Figueiredo, DSC/UFCG. Análise e Técnicas de Algoritmos 2005.

Teoria Básica e o Método Simplex. Prof. Ricardo Santos

. (A verificação é imediata.)

Tipos de problemas de programação inteira (PI) Programação Inteira. Abordagem para solução de problemas de PI. Programação inteira

Método Simplex das Duas Fases

que não torne uma variável básica negativa. Se esse valor for infinito, o PL é ilimitado. Caso contrário, escolha uma variável

Exercícios de Método Simplex Enunciados

Roteiro da aula. MA091 Matemática básica. Conjuntos. Subconjunto. Aula 12 Conjuntos. Intervalos. Inequações. Francisco A. M. Gomes.

Avaliação e Desempenho Aula 1 - Simulação

Semana 7 Resolução de Sistemas Lineares

Investigação Operacional

Universidade Federal de Itajubá. Instituto de Engenharia de Produção e Gestão. Pesquisa Operacional. Dualidade

Algoritmo Simplex em Tabelas. Prof. Ricardo Santos

INVESTIGAÇÃO OPERACIONAL. Programação Linear. Exercícios. Cap. III Método Simplex

PESQUISA OPERACIONAL: NA TOMADA DE DECISÕES ADMINISTRATIVA

PRO Pesquisa Operacional II

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Análise de Sistemas de Controle no Espaço de Estados

Regressão, Interpolação e Extrapolação Numéricas

Matrizes e Sistemas Lineares. Professor: Juliano de Bem Francisco. Departamento de Matemática Universidade Federal de Santa Catarina.

(1, 6) é também uma solução da equação, pois = 15, isto é, 15 = 15. ( 23,

INSTITUTO SUPERIOR TÉCNICO Análise e Síntese de Algoritmos. RESOLUÇÃO DA RESPESCAGEM DO 2 o TESTE

Capítulo 4. Retas e Planos. 4.1 A reta

Prof. Michel Sadalla Filho

2 Casamento Inexato, Alinhamento de Sequências e Programação DRAFT

Teste de Funções por Cobertura do Grafo de Fluxo de Controle

OBSERVAÇÕES: EXERCÍCIOS

Gestão de Processos: Ciclo PDCA. Profa. Reane Franco Goulart

PESQUISA OPERACIONAL I

Equação e Inequação do 2 Grau Teoria

Definição de determinantes de primeira e segunda ordens. Seja A uma matriz quadrada. Representa-se o determinante de A por det(a) ou A.

Álgebra Linear AL. Luiza Amalia Pinto Cantão. Depto. de Engenharia Ambiental Universidade Estadual Paulista UNESP

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

COMO DETERMINAR O IMPACTO DAS VARIAÇÕES PERCENTUAIS

Onde: A é a matriz do sistema linear, X, a matriz das incógnitas e B a matriz dos termos independentes da equação

AGRUPAMENTO DE ESCOLAS DA SÉ GUARDA. MATEMÁTICA B Curso de Artes Visuais

5 Modelo de Distribuição de Viagens

CURSO DE MATEMÁTICA BÁSICA PROGRAMA DE EDUCAÇÃO TUTORIAL CENTRO DE ENGENHARIA DA MOBILIDADE

Resolução do exemplo 8.6a - pág 61 Apresente, analítica e geometricamente, a solução dos seguintes sistemas lineares.

CAP. II RESOLUÇÃO NUMÉRICA DE EQUAÇÕES NÃO LINEARES

TEORIA 5: EQUAÇÕES E SISTEMAS DO 1º GRAU MATEMÁTICA BÁSICA

O método Simplex Aplicado ao Problema de Transporte (PT).

Sistemas de equações do 1 grau com duas variáveis LISTA 1

2. Tipos Abstratos de Dados

Exercícios de Álgebra Linear

O cilindro deitado. Eduardo Colli

Método Simplex. Alexandre Salles da Cunha. DCC-UFMG, Março v.02

FUNÇÃO DO 2º GRAU PROF. LUIZ CARLOS MOREIRA SANTOS

Problemas de Rede Conteúdos do Capítulo

Coordenadoria de Matemática Programação Linear. Professor: Oscar Luiz T. de Rezende

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

Ficha de Exercícios nº 2

Lista de Exercícios 2a

Programação de Computadores I. Linguagem C Função

TUTORIAL MATLAB Victor Breder 2016

Árvores de Decisão Matemática Discreta

Estruturas de Repetição

Agrupamento de Escolas Júlio Dantas Escola Básica Tecnopolis

ÁLGEBRA. Aula 5 _ Função Polinomial do 1º Grau Professor Luciano Nóbrega. Maria Auxiliadora

Resolução de sistemas de equações lineares: Método de eliminação de Gauss

EA044 Planejamento e Análise de Sistemas de Produção Lista de Exercícios 1 Prof. Paulo Valente

ÁLGEBRA. Aula 1 _ Função Polinomial do 2º Grau Professor Luciano Nóbrega. Maria Auxiliadora

Metodologias de Programação

Relatório das Provas da 2ª. Fase - Vestibular 2016

Funções reais de variável real

Determinantes. Vamos associar a cada matriz quadrada A um número a que chamaremos determinante. a11 a Uma matriz de ordem 2, A =

Algoritmos APRENDENDO A PROGRAMAR COM C#

Relações. Antonio Alfredo Ferreira Loureiro. UFMG/ICEx/DCC MD Relações 1

Exercícios de Programação linear

MATEMÁTICA POLINÔMIOS

Elvis Magno da Silva, autor Vladas Urbanavicius Júnior, autor

Alocação de Custos pelo Método Recíproco

Chama-se razão de dois números racionais a e b (com b 0) ao quociente do primeiro

Capítulo 2 - Determinantes

Bases Matemáticas. Daniel Miranda de maio de sala Bloco B página: daniel.miranda

Em linguagem matemática, essa proprieade pode ser escrita da seguinte maneira: x. 1 = x Onde x representa um número natural qualquer.

Introdução à Aritmética Modular. George Darmiton da Cunha Cavalcanti CIn - UFPE

Teoria Geral da Administração II. Teoria Matemática

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Exame de Equivalência à Frequência do Ensino Secundário

Unidade III- Determinantes

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

de rede são comumente utilizadas nos dias de hoje. Um dos grandes desafios para a tecnologia de redes sem fio no momento é o handoff vertical, onde

Sumário 1. PROBLEMAS DE RACIOCÍNIO INTUITIVO ESPACIAL, NUMÉRICO E VERBAL PROBLEMAS DE ARGUMENTAÇÃO LÓGICA INTUITIVA...55

ÁLGEBRA VETORIAL E GEOMETRIA ANALÍTICA (UFCG- CUITÉ)

Departamento de Matemática da Universidade de Coimbra Álgebra Linear e Geometria Analítica Engenharia Civil Ano lectivo 2005/2006 Folha 1.

ESCOLA SUPERIOR DE TECNOLOGIA DE VISEU

Complexidade de Algoritmos

Transcrição:

Simplex e o Problema do Transporte Thuener Silva Departamento de Informática Pontifícia Universidade Católica Rio de Janeiro, Brasil E-mail: tsilva@inf.puc-rio.br I. INTRODUÇÃO Programação linear é uma área que trata da otimização de uma função linear enquanto satisfaz um conjunto de equações e/ou inequações que representam restrições ao problema[1][2]. O primeiro problema de programação linear foi concebido em 1947 por George B. Dantzig. Neste mesmo ano o primeiro método para resolução de problemas de programação linear foi desenvolvido pelo mesmo George B. Dantzig[3]. A área de programação linear teve grande aceitação, pelo fato de ser possível modelar problemas importantes e complexos. Aliado a capacidade do método simplex, na prática, obter a solução em pouco tempo. Rapidamente foram descobertos diversos novos tipos problemas que podiam ser formulados como um problema de programação linear e resolvidos pelo método simplex. A. O Problema do Transporte Um desses tipos de problemas é o problema do transporte[1][3] que é uma visão simplificada do problema real. O problema pode ser visualizado como um conjunto de produtores, consumidores e rotas. Passar cada unidade do produto por uma rota tem um custo, cada produtor tem uma capacidade de produção e cada consumidor precisa de certa quantidade de produtos. A Figura 1 mostra visualmente um exemplo do problema do transporte. Nesse exemplo temos três produtores de papel nas cidades: Boston (BS), New York (NY) e Chicago (CH) e duas editoras em: Pittsburgh (PT) e Buffalo (BF). Os produtores têm respectivamente produção máxima de 75, 230 e 240 toneladas de papel e as editoras necessitam de 130 e 235 toneladas de papel. Os valores em cada nó representam para produtores a quantidade máxima produzida e para consumidores a quantidade necessária do produto. As arestas representam o custo para transportar uma tonelada de papel de um produtor para um consumidor. Figura 1. B. Complexidade Exemplo gráfico do problema do transporte. O método simplex em teoria não tem uma boa complexidade, em seu pior caso ele é exponencial. No entanto, o simplex se revela eficiente para casos práticos [3][1]. De fato, por um certo tempo não se sabia se a área de programação linear fazia parte da classe de problemas que são resolvidos com esforço polinomial(p). Somente em 1979, foi proposto um algoritmo, denominado de Khachiyan s algorithm, que resolvia problemas de programação linear com crescimento do esforço polinomial no tamanho do problema[1]. II. FORMULAÇÃO MATEMÁTICA O problema do transporte pode ser formulado de diversas formas. Neste trabalho utilizamos uma formulação parecida com a da página 11 do livro Linear Programing and Network Flows [1], com exceção da restrição da demanda dos consumidores, que tratamos como uma inequação. Porém no ponto ótimo essa restrição vai estar com a variável de folga zerada, por causa dos custos de transporte. Na formulação a seguir temos as seguintes variáveis: n 1 quantidade de produtores ; n 2 quantidade de consumidores ; c ij custo de levar uma unidade do produto do produtor i ao consumidor j; x ij variável de decisão que representa a quantidade de produto que deve ser levada do produtor i ao consumidor j; P i quantidade máxima que pode produzir o produtor i; C j quantidade que o consumidor j demanda.

n 1 n 2 Minimizar c ij x ij i=1 j=1 n 2 Sujeito a x ij P i i = 1,..., n 1 j=1 n 1 x ij C j j = 1,..., n 2 i=1 x ij 0, i j III. SIMPLEX REVISADO O método do simplex revisado é um procedimento sistemático para programar os passos do simplex gastando menos espaço em memória. A implementação do simplex revisado apresentada neste trabalho foi feita guiando-se no livro Linear Programing [3]. Entretanto existe algumas diferenças, as duas principais foram: ao invés do novo x b da iteração k+1 (x k+1 b ) ser decrementado de Θ d incrementamos de Θ d, o que apenas muda o sinal da direção do vetor d e ao contrário de utilizarmos o primeiro cr > 0 usamos o maior custo reduzido, dando assim passo maiores. Temos os seguintes passos do simplex revisado: Passo 1: Resolver o sistema de equações yb = c b Passo 2: Escolher a variável com índice i que vai entrar na base, a variável com o maior custo reduzido cr[i], tal que cr = c T n y T N. Se não houver nenhum custo reduzido maior que zero então a solução é ótima. Passo 3: Resolver o sistema de equações Bd = c b Passo 4: Achar a variável que vai sair da base com índice i, achar o menor valor de x b [i]/d b [i] tal que d b [i] < 0. Variáveis: c b e c n são os custos referentes as variáveis básicas e não básicas; B e N é a matriz A dividida na parte das variáveis básicas e não básicas; x b e x n o vetor x dividida na parte das variáveis básicas e não básicas; y vetor de valores associados as variáveis duais do problema; d vetor de direção que modificará a solução básica viável (fica sobre uma restrição); t escalar que vai determinar o quando vamos mover para a direção d para chegar em uma solução básica viável; A. Implementação Nossa implementação do simplex foi desenvolvida em Matlab. Existe alguns cuidados que foram necessários na parte da implementação, principalmente com relação a utilização do ponto flutuante(double/float). Abaixo um pseudocódigo explicando a nossa implementação do simplex: Algoritmo 1 fase2(sbv) #Inicializa as variáveis com os valores da solução básica viável y SBV.y cr SBV.cr x b SBV.x b for i = 1 itmax do #Encontra a variável que vai entrar da base [crmax, ind Entr ] max(cr) if crmax e 1 then Ponto Ótimo Fim #Encontra a variável que vai sair da base tmin = INF if ind W 0 and db(ind W ) < e 1 then tmin = x b (ind W )/d b (ind W ) ind Sai = ind W for i = 1 numrest do if d b (i) < 0 and x b (i)/d b (i) tmin < e 1 then tmin = xb(i)/db(i); ind Sai = i; #Se {d b < 0} = if tmin = INF then Ilimitado Fim SBV T rocasbv (ind Ent, ind Sai, SBV ) #Atualiza as variáveis y linsolve(b T, c b ) cr (c T n y T N) T x b x b + tmin d b x b (ind Sai ) = tmin Algoritmo 2 Simplex(c; A; b) if b j 0 then SBV fase1(c, A, b) else SBV ObtemOrigemSBV(c, A, b) SolOpt fase2(sbv) Algoritmo 3 fase1(c; A; b) ind Ent n ind Sai iminb SBV ObtemOrigemSBV (c, A, b) SBV T rocasbv (ind Ent, ind Sai, SBV ) SolTemp fase2(sbv) SBV retiracolunaw(soltemp)

IV. ESTUDO DE CASO Nessa seção vamos validar os resultados e comparar o desempenho da nossa implementação do simplex em problemas de transporte. Nos testes de performance vamos gerar instâncias artificiais para o problema. Para pode gerar tais instâncias é necessário entender melhor o problema de transporte considerando a perspectiva de problemas de programação linear. A. Características do Problema Para entender melhor as características do problema de transporte vamos utilizar a forma canônica de programação linear[1] para descrever um problema genérico com dois consumidores e três produtores. A forma canônica: Maximizar C T X Sujeito a: Ax b x 0 Para transformar o problema para forma canônica temos que modificar as restrições de demanda dos consumidores multiplicando por 1. Também para que o problema do transporte, que é de minimização, seja utilizados para maximização basta apenas trocar o sinal do vetor c. Assim seguindo a definições das variáveis descritas na seção II podemos apresentar os vetores e matrizes c, x, A e b da seguinte forma: c = c 11 c 12 c 21 c 22 c 31 c 32 x T = [ x 11 x 12 x 21 x 22 x 31 x 32 ] A = 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 1 0 1 b = P 1 P 2 P 3 C 1 C 2 Analisando o exemplo acima podemos verificar algumas características desse tipo de problema. A matriz A é bem definida e esparsa, contém uma quantidade considerável de zeros e é formada apenas por valores 0, 1 ou 1. As n 1 primeiras linhas da matriz A e vetor b representam as restrições de produção e as outras n 2 linhas são referentes as necessidades dos consumidores. Esse tipo de problema não tem como solução viável a origem, uma vez que a solução na qual nenhum produto é transportado não é válida. Então quando passamos esse problema como entrada para o simplex ele sempre passará pela primeira fase do mesmo. B. Construção das Instâncias Considerando as características desse tipo de problema podemos gerar os vetores c e b, e a matriz A. Para construir a matriz A precisa-se apenas dos valores de n 1 e n 2, ou seja, diferentes problemas com menos número de produtores e consumidores tem a mesma matriz A. Ainda precisamos garantir que o espaço de soluções viáveis não é vazio para que o problema tenha uma solução ótima. No entanto, basta assegurar que o somatório produzido seja maior ou igual ao total requisitado pelos consumidor, ou seja, produção tem que ser maior ou igual a demanda. A cada iteração n 1 e n 2 eram multiplicados por 3 e 4, ou seja, n k+1 1 = n k 1 3 e n k+1 2 = n k 2 4. Esse acréscimo foi utilizado para manter o número de consumidores superior ao número de produtores, o que é esperado nesse tipo de problema. Os vetores b e c eram gerados aleatoriamente considerando as restrições de geração mencionadas e a matriz A era criada de forma determinística. C. Experimentos Os experimentos foram feitos em um laptop com AMD Turion(tm) 64 X2 TL-56 com 1.6 GHz, 4 Gigabytes de memória RAM e com sistema operacional Ubuntu 10.10 64 bits e Matlab 7.7.0 (R2008b). Os resultados da nossa implementação foram comparados com a implementação do Matlab para resolução de problemas de programação linear, o linprog. Além de apresentar os resultados para a implementação do simplex do linprog(linprogsim) também vamos apresentar o algoritmo primal dual de pontos interiores(linprogpd) que é o padrão do linprog. Durante os testes eram verificados se os resultados obtidos pelo linprog eram iguais aos da nossa implementação do simplex e não houve nenhum caso que os ótimos não fossem iguais. Nas Tabelas I e II temos o identificador de cada instância gerada e as características da instância: número de variáveis, número de restrições e o valor ótimo encontrado.

Características Id NumVar NumRes Ótimo 1 12 7 697 2 48 14 1478 3 108 21 2667 4 192 28 2344 5 300 35 3172 6 432 42 3585 7 588 49 3903 8 768 56 4525 9 972 63 4830 10 1200 70 5915 11 1452 77 5816 12 1728 84 6334 13 2028 91 6827 14 2352 98 7244 15 2700 105 7301 16 3072 112 8455 17 3468 119 8818 18 3888 126 8999 19 4332 133 9268 20 4800 140 10194 21 5292 147 10283 22 5808 154 10736 23 6348 161 11259 24 6912 168 12258 25 7500 175 13424 Tabela I PRIMEIRA TABELA SOBRE AS CARACTERÍSTICAS DE CADA INSTÂNCIA. Iterações 1 8 7 2 2 18 9 8 3 28 9 13 4 50 11 17 5 59 11 21 6 89 12 32 7 96 13 35 8 124 13 47 9 128 13 48 10 177 14 64 11 205 14 65 12 251 16 74 13 277 16 85 14 253 15 78 15 289 15 94 16 385 16 111 17 431 16 135 18 396 18 126 19 496 18 145 20 506 16 135 21 595 17 176 22 664 18 187 23 665 18 177 24 698 20 189 25 820 18 213 Tabela III PRIMEIRA TABELA COMPARANDO O NÚMERO DE ITERAÇÕES DE CADA IMPLEMENTAÇÃO. Características Id NumVar NumRes Ótimo 26 8112 182 12617 27 8748 189 13605 28 9408 196 13848 29 10092 203 14195 30 10800 210 14442 31 11532 217 16120 32 12288 224 16436 33 13068 231 16559 34 13872 238 16819 35 14700 245 17796 36 15552 252 18992 37 16428 259 19076 38 17328 266 18716 39 18252 273 19829 40 19200 280 20128 41 20172 287 19659 42 21168 294 21565 43 22188 301 22313 44 23232 308 22355 45 24300 315 21514 46 25392 322 23731 47 26508 329 22799 Tabela II SEGUNDA TABELA SOBRE AS CARACTERÍSTICAS DE CADA INSTÂNCIA. Nas Tabelas III e IV temos para cada instância o número iterações feita pelas seguintes implementações: simplex revisado desenvolvido nesse trabalho(simplexrev), primal dual de pontos interiores do linprog(linprogpd) e o simplex do linprog(linprogsim). Iterações 26 771 19 211 27 783 18 227 28 948 19 231 29 988 18 260 30 1046 19 253 31 1148 20 262 32 1217 21 285 33 1178 19 276 34 1228 19 292 35 1275 20 330 36 1578 20 350 37 1608 20 370 38 1402 20 329 39 1693 20 353 40 1848 20 419 41 2227 20 404 42 2133 22 441 43 1926 21 416 44 2701 25 521 45 2305 20 468 46 2733 23 548 47 2296 20 491 Tabela IV SEGUNDA TABELA COMPARANDO O NÚMERO DE ITERAÇÕES DE CADA IMPLEMENTAÇÃO. Na Figura 2 podemos verificar visualmente a diferença, em termos de iterações, entre as três implementações.

Figura 2. Comparação das iterações feitas pelas diferentes implementações. As duas implementações do simplex tiveram um número bem diferentes de iterações, essa diferença pode estar ocorrendo pela forma como é escolhida a variável de entrada ou por possíveis otimizações do código do linprog. Entretanto em ambos os casos o número de iterações é bem superior ao do método primal dual de pontos interiores do linprog(linprogpd). Tempo em segundos 26 9,277300 0,671542 5,190260 27 10,850300 0,754985 6,436400 28 13,355400 0,708597 7,189050 29 15,671200 0,697079 7,954670 30 18,222600 1,072380 8,762780 31 21,422400 0,948549 9,348010 32 24,503200 1,137540 10,696800 33 26,085500 1,076700 10,485600 34 29,182300 1,153120 11,606300 35 33,416900 1,436860 13,068000 36 43,835600 1,532390 16,230900 37 48,719900 1,377830 17,991300 38 49,432300 1,490000 16,131700 39 63,706500 1,894890 19,872500 40 71,676600 1,676660 23,769100 41 98,454600 1,689680 29,144300 42 93,275000 2,073650 29,375700 43 91,424300 2,103730 26,873200 44 130,149000 2,335170 38,737700 45 127,349000 2,259800 35,368000 46 151,477000 2,429870 44,109600 47 138,792000 2,198250 38,481600 Tabela VI SEGUNDA TABELA COMPARANDO O TEMPO DE CADA IMPLEMENTAÇÃO. Nas Tabelas V, VI e na Figura 3 são apresentados os tempos em segundos para cada instância para as três diferentes implementações. Tempo em segundos 1 3,319640 0,085054 0,026606 2 0,054160 0,028325 0,026541 3 0,061667 0,032303 0,057774 4 0,049778 0,035499 0,075744 5 0,058571 0,036637 0,092429 6 0,101236 0,086973 0,227877 7 0,165307 0,050412 0,165140 8 0,135228 0,100892 0,236856 9 0,160708 0,217938 0,345787 10 0,291724 0,122877 0,430883 11 0,388435 0,093183 0,523662 12 0,502535 0,141796 0,580303 13 0,775576 0,127207 0,841695 14 0,726438 0,171905 0,779277 15 0,995740 0,170870 0,940255 16 1,354660 0,202518 1,300340 17 1,795810 0,239502 2,063820 18 1,868470 0,360147 1,710160 19 2,631930 0,314109 2,121410 20 2,976940 0,279365 2,165670 21 3,991710 0,379658 2,894770 22 4,839130 0,385060 3,343050 23 5,550370 0,455340 3,409020 24 6,592490 0,543218 3,990400 25 8,954010 0,557568 5,029390 Tabela V PRIMEIRA TABELA COMPARANDO O TEMPO DE CADA IMPLEMENTAÇÃO. Figura 3. Comparação dos tempos em segundos das implementações. O gráfico deixa claro a diferença de performance entre o método primal dual de pontos interiores do linprog(linprogpd) e o método simplex. Analisando a Figura 2 juntamente com a Figura 3 podemos verificar que o principal fator determinante do tempo é o número de iterações. V. CONCLUSÃO Nossa implementação obteve os resultados corretos e teve uma boa performance. Porém, os métodos comercias são mais otimizados e obtiveram melhor performance. O principal desafio do trabalho foi implementar o algoritmo simplex de forma eficiente, tentando evitar cálculos desnecessários. Mas também foram encontradas dificuldades com relação a utilização de ponto flutuante em como usar o épsilon de maneira adequada. No desenvolvimento deste trabalho não tivemos nenhuma preocupação com a possibilidade de ciclagem do simplex revisado e nem com a otimização do cálculo das matrizes

envolvidas no problema. Então como trabalho futuro temos a implementação de verificação de ciclos ou algum método para que o mesmo não aconteça e também a utilização de métodos mais otimizados para o cálculo das matrizes, como por exemplo a otimização descrita no capítulo 8 do livro Linear Programing [3]. REFERENCES [1] M. Bazaraa, J. Jarvis, and H. Sherali, Linear programming and network flows. Wiley, 2009. [2] S. Boyd and L. Vandenberghe, Convex optimization. Cambridge Univ Pr, 2004. [3] V. Chvátal, Linear programming. WH Freeman, 1983.