UMA ABORDAGEM IMPLÍCITA PARA O MÉTODO M-GRANDE

Documentos relacionados
Marina Andretta. 10 de outubro de Baseado no livro Introduction to Linear Optimization, de D. Bertsimas e J. N. Tsitsiklis.

Programação Linear - Parte 5

ESTUDOS COMPUTACIONAIS SOBRE A INFLUÊNCIA DA MUDANÇA DE ESCALA NO MÉTODO SIMPLEX

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Programação Linear - Parte 3

Programação Matemática

Teoremas de dualidade

Método Simplex dual. Marina Andretta ICMC-USP. 24 de outubro de 2016

Teoria de dualidade. Marina Andretta ICMC-USP. 19 de outubro de 2016

Método Simplex. Marina Andretta ICMC-USP. 19 de outubro de 2016

Programação Linear/Inteira

5 Análise de Sensibilidade

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

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Otm1 12/04/2012. Método Simplex Obtenção base inicial Degeneração (alguns comentários) Variáveis Canalizadas

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Determinação de Uma Solução Básica Factível Inicial

Programação Linear/Inteira - Aula 5

Aula 10: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Regras para evitar ciclagem

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Método Simplex Dual. Prof. Fernando Augusto Silva Marins Departamento de Produção Faculdade de Engenharia Campus de Guaratinguetá UNESP

4- Dualidade em Programação Linear

Otimização Combinatória - Parte 4

TÉCNICAS DE ATUALIZAÇÃO DA DECOMPOSIÇÃO LU DA BASE NO MÉTODO SIMPLEX

Poliedros na forma padrão

Otimização Linear. Conceitos básicos Álgebra Linear Introdução ao método simplex

Faculdade de Engenharia Optimização. Prof. Doutor Engº Jorge Nhambiu

INVESTIGAÇÃO OPERACIONAL. Programação Linear. Exercícios. Cap. IV Modelo Dual

Maristela Santos. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo

TP052-PESQUISA OPERACIONAL I Algoritmo Dual Simplex. Prof. Volmir Wilhelm Curitiba, Paraná, Brasil

Graduação em Engenharia Elétrica MÉTODOS DE OTIMIZAÇÃO ENE081. PROF. IVO CHAVES DA SILVA JUNIOR

Aplicação do Método de Barreira Logarítmica na Resolução de um Problema de Programação Linear.

Programação Matemática. Método Simplex

Aula 07: Análise de sensibilidade (2)

Degenerescência. Marina Andretta ICMC-USP. 19 de outubro de 2016

Simplex. Investigação Operacional José António Oliveira Simplex

Solução de problemas de PL com restrições do tipo >= e =

Programação Linear M É T O D O S : E S T A T Í S T I C A E M A T E M Á T I C A A P L I C A D A S D e 1 1 d e m a r ç o a 2 9 d e a b r i l d e

Programação Matemática

DEPARTAMENTO DE ENGENHARIA MECÂNICA

Aula 20: Revisão Otimização Linear e Inteira Túlio A. M. Toffolo

Programação Matemática Lista 3

Prof. Lorí Viali, Dr. PUCRS FAMAT: Departamento de Estatística. Curso: Engenharia de Produção

Considere a função f(x). Para algum x a f (x) pode não existir. Suponha que. Max f(x) s. a a x b

Método Preditor-Corretor Aplicado ao Fluxo de Carga Ótimo com Correções Não-lineares nas Condições de Otimalidade

Aula 19: Lifting e matrizes ideais

Cálculo Numérico BCC760

étodos uméricos SISTEMAS DE EQUAÇÕES LINEARES (Continuação) Prof. Erivelton Geraldo Nepomuceno PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA

Lema de Farkas e desigualdades lineares

Programação Linear/Inteira

Métodos Numéricos - Notas de Aula

Métodos Iterativos para a Solução da Equação de Poisson

Cones e raios extremos

Heurísticas para o problema de corte com reaproveitamento das sobras de material

Resolvendo algebricamente um PPL

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Programação Linear. MÉTODOS QUANTITATIVOS: ESTATÍSTICA E MATEMÁTICA APLICADAS De 30 de setembro a 13 de novembro de 2011 prof. Lori Viali, Dr.

Resolução de Sistemas Lineares. Ana Paula

Otimização Aplicada à Engenharia de Processos

Investigação Operacional

Uma nova taxa de convergência para o Método do Gradiente

PESQUISA OPERACIONAL 11. SOLUÇÃO ALGEBRICA O MÉTODO SIMPLEX ( ) DEFINIÇÕES REGRAS DE TRANSFORMAÇÃO. Prof. Edson Rovina Página 16

Prática 02. Total. Pré-requisitos 2 MTM112. N o

Unidade: Modelo Simplex e Modelo Dual. Unidade I:

ITERAÇÕES CONTINUADAS APLICADAS AO MÉTODO DE PONTOS INTERIORES PREDITOR CORRETOR

Simplex. Transparências de apoio à leccionação de aulas teóricas. c 2011, 2009, 1998 José Fernando Oliveira, Maria Antónia Carravilla FEUP

3- O MÉTODO SIMPLEX Introdução e fundamentos teóricos para o Método Simplex

CAPÍTULO 4. Teoria da Dualidade

Otimização Multiobjetivo

PESQUISA OPERACIONAL Definições e Teoremas Básicos. Professor Volmir Wilhelm Professora Mariana Kleina

Programação Linear. Dual Simplex: Viabilidade Dual Método Dual Simplex

Professor: Rodrigo A. Scarpel

Programação Linear. Dualidade

Representação de poliedros

Combinando inequações lineares

Algoritmo Simplex para Programação Linear I

Otimização Linear. Profª : Adriana Departamento de Matemática. wwwp.fc.unesp.br/~adriana

Métodos iterativos para sistemas lineares.

Universidade Federal do Espírito Santo - UFES

Capítulo 3. O Método Primal Simplex

COMBINANDO UM ALGORITMO DE AJUSTAMENTO ÓTIMO E O MÉTODO DE PONTOS INTERIORES


Aula 4: Gráficos lineares

Combinando inequações lineares

Método do Lagrangiano aumentado

Programação Linear. (3ª parte) Informática de Gestão Maria do Rosário Matos Bernardo 2016

Prof. Lorí Viali, Dr. PUCRS FAMAT: Departamento de Estatística

MÉTODO SIMPLEX SOLUÇÃO INICIAL ARTIFICIAL

Métodos de Pontos Interiores com a Aplicação do Precondicionador de Elman

UNIVERSIDADE FEDERAL DO ABC

3 Reformulação de IPs

PESQUISA OPERACIONAL -PROGRAMAÇÃO LINEAR MÉTODO SIMPLEX. Prof. Angelo Augusto Frozza, M.Sc.

CAPÍTULO 3. Método Simplex

Problemas de programação geométrica signomial via otimização DC

Aula 22: Formulações com número exponencial de variáveis

INTRODUÇÃO AOS MÉTODOS NUMÉRICOS. Solução de Sistemas Lineares

na Diagonal da Fatoração Controlada de Cholesky aplicado ao Método de Pontos Interiores

PESQUISA OPERACIONAL

Transcrição:

UMA ABORDAGEM IMPLÍCITA PARA O MÉTODO M-GRANDE Pedro Augusto Munari Junior, Marcos Nereu Arenales Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo Caixa Postal 668, São Carlos - SP, CEP 13560-970, Brasil munari@icmc.usp.br, arenales@icmc.usp.br RESUMO Um procedimento bastante conhecido para a obtenção de uma solução básica factível é o método M-grande. Entretanto, a dificuldade na escolha do parâmetro de penalização M é retratada na literatura de otimização linear como uma desvantagem do método. Em geral, um valor muito pequeno para M leva à obtenção de uma solução infactível, enquanto um valor muito grande pode resultar em um elevado número de iterações e na introdução de erros numéricos. Neste trabalho, é proposta uma modificação no método M-grande que considera M implicitamente durante a resolução do problema. Assim, a desvantagem retratada na literatura deixa de existir. Os aspectos conceituais dessa abordagem são descritos e os resultados computacionais obtidos na resolução de problemas da biblioteca NETLIB confirmam a eficiência da proposta. PALAVRAS CHAVE: otimização linear, método simplex, M-grande. ABSTRACT A well known procedure to obtain a basic feasible solution is the Big-M method. However, the difficulty in choosing the penalty parameter M is reported in the linear optimization literature as a disadvantage of the method. In general, a too small value for M produces an infeasible solution whereas a too high value can result in a large number of iterations and insert numerical errors. In this paper, we propose a change in the Big-M method which handles implicitly the parameter M when solving the problem. Hence, the disadvantage reported in the literature ceases to exist. We address conceptual aspects of this approach and computational results are given for a set of problems of the NETLIB library that confirm the efficiency of the method. KEYWORDS: linear optimization, simplex method, Big-M. 2193

1. Introdução A modelagem de problemas por meio da otimização linear foi formalizada por Dantzig em 1947 que, em seguida, desenvolveu também um método prático de solução, o qual chamou de método simplex. Desde então, um grande número de pesquisadores tem contribuído na área de otimização linear de diferentes maneiras, incluindo desenvolvimentos teóricos e computacionais e novas aplicações. A aplicação do método simplex para a resolução de um problema de otimização linear exige que uma solução básica factível seja conhecida. Desse modo, deve-se definir uma base inicial factível para a inicialização do método. O número de iterações e o tempo de execução do método simplex para a resolução de um problema são extremamente dependentes da base inicial escolhida. A obtenção de uma boa base inicial é ainda um ramo de investigação na área de otimização linear, como pode ser constatado nos trabalhos de Vieira Junior e Lins (2005), Hu (2007) e na literatura citada por esses autores. Um método bastante conhecido para a obtenção de uma base factível é o método M- grande. Este método é conceitualmente simples e sua implementação computacional é direta a partir do método simplex. Entretanto, dependendo da escolha do parâmetro de penalização M, dificuldades numéricas podem surgir durante a resolução do problema e até mesmo uma solução ótima equivocada pode ser obtida, fazendo com que a utilização do método M-grande seja evitada. Essas desvantagens envolvendo o método M-grande são retratadas por trabalhos recentes da literatura. Koberstein e Suhl (2007) relatam que a principal razão para o método M- grande não ser utilizado na prática é a dificuldade na escolha de M. Segundo os autores, um valor muito grande para M pode levar a problemas numéricos e a um número excessivo de iterações, enquanto um valor muito pequeno pode não produzir uma solução básica factível. Vieira Junior e Lins (2005) propõem uma nova técnica para a construção de uma base inicial que tem grandes chances de ser próxima da base ótima. Entretanto, a base obtida pode não ser factível e, então, os autores sugerem a utilização do método M-grande, porém alertando para a desvantagem computacional do método. Arsham (2007) cita que o método M-grande pode causar erros graves, fazendo o infactível parecer factível quando M é muito pequeno. Além disso, erros de arredondamento e overflow computacional podem destruir a precisão numérica da solução quando M é muito grande. Livros-texto de otimização linear também abordam esse assunto. Bazaraa (1990) descreve detalhadamente o método M-grande e fecha sua descrição com a pergunta: Quão grande deve ser o M-grande?. De acordo com o autor, M não pode ser escolhido apenas olhando-se para a magnitude dos coeficientes da função objetivo. Dado que o problema a ser resolvido é factível, M deve ser grande o bastante para que alguma solução básica factível, com todas as variáveis artificiais iguais a zero, tenha valor estritamente melhor que a melhor solução básica factível que não tenha todas as variáveis artificiais nulas. Porém, essa é uma condição teórica e mesmo quando satisfeita, o método ainda não está livre das dificuldades numéricas. Bertsimas e Tsitsiklis (1997) comentam que não há a necessidade de se fixar um valor numérico para M, basta considerá-lo como um parâmetro indeterminado durante a resolução do problema. Para isso, sugerem que a comparação entre expressões contendo M seja realizada considerando-o suficientemente grande. Entretanto, na descrição dos autores, os termos que não envolvem M são desprezados na comparação dessas expressões, fazendo com que a função objetivo do problema original seja ignorada nas expressões de custos reduzidos contendo o parâmetro. Além disso, a abordagem é descrita por meio da resolução de um problema particular usando o método simplex na forma tableau, sem expor as modificações necessárias para a implementação computacional da proposta. 2194

Considerando essa revisão da literatura, uma implementação computacional do método M-grande é sugerida neste trabalho, tratando o parâmetro M implicitamente durante a resolução do problema. Assim como na abordagem que atribui um valor numérico para M, os coeficientes da função objetivo do problema são considerados na comparação de custos reduzidos envolvendo o parâmetro. As modificações necessárias no método simplex para considerar M implicitamente são expostas e discutidas e os testes computacionais realizados ilustram a eficiência da abordagem em problemas de otimização linear da biblioteca NETLIB (http://www.netlib.org/lp/data). Na seção a seguir, é dada uma breve revisão sobre a obtenção de soluções básicas factíveis para problemas de otimização linear, envolvendo o método de duas fases e o método M-grande. Na Seção 3, é apresentada uma abordagem implícita para o método M-grande. Os testes realizados para a comparação dessa abordagem com o método M-grande convencional são expostos e discutidos na Seção 4. Por fim, as conclusões obtidas são apresentadas juntamente com a descrição de trabalhos futuros na Seção 5. 2. Inicialização do método simplex Os problemas de otimização linear consistem na minimização ou maximização de uma função linear sujeita a um número finito de restrições lineares sobre as variáveis envolvidas. Considere o seguinte problema de otimização linear na forma padrão: minimizar f(x) = c t x (1) sujeito a Ax = b (2) x 0 (3) com A R m n, x R n, c R n, b R m, m < n e posto(a) = m. Em (1) temos a função objetivo do problema que, nesse caso, será minimizada. As equações do sistema linear (2) recebem o nome de restrições do problema e as desigualdades em (3) são as condições de não-negatividade. Em geral, um problema de otimização linear na forma padrão possui diversas variáveis de folga, utilizadas para expressar restrições de desigualdade em forma de equações. Uma variável de folga é toda aquela cuja coluna correspondente em A é uma coluna da matriz identidade. O motivo de apresentar o problema na forma padrão é facilitar a descrição do método simplex e da teoria envolvida. Existem diversas outras formas equivalentes para se descrever um problema de otimização linear, as quais permitem a exploração de certas particularidades durante a resolução e podem levar a abordagens mais eficientes, como apresentado em Sousa et al. (2005) e Maros (2003). A aplicação do método simplex para a resolução de problemas de otimização linear exige que uma base inicial factível seja conhecida. Desse modo, o primeiro passo antes da aplicação do método é definir uma base inicial. Se essa base for factível, o método simplex pode ser iniciado. Caso contrário, dois caminhos são possíveis: utiliza-se uma abordagem de duas fases, caracterizada pela existência de uma fase inicial bem determinada, denominada Fase-I. Nesta fase, um problema auxiliar é resolvido e uma solução básica factível para o problema original é obtida. Em uma segunda etapa, denominada Fase-II, o método simplex é iniciado com a base factível obtida na Fase-I; ou utiliza-se uma abordagem de fase única, na qual o método simplex pode ser iniciado sem que se conheça uma base factível correspondente e a factibilidade da solução é obtida enquanto se busca, ao mesmo tempo, uma solução ótima do problema. Para isso, a função objetivo do problema deve ser modificada pela adição de termos que agem como penalizadores de soluções infactíveis. 2195

Aspectos teóricos e computacionais sobre a inicialização do método simplex envolvendo as abordagens citadas acima podem ser encontrados em Arenales et al. (2007) e Maros (2003). Uma maneira bastante simples de se construir uma base inicial para um problema de otimização linear é por meio da introdução de variáveis artificiais. Dado um problema de otimização linear na forma padrão (1)-(3), uma variável artificial y i > 0 é adicionada a cada restrição do problema, fazendo com que as restrições do problema sejam redefinidas como: Ax + Dy = b (4) x 0, y 0 (5) com y = (y 1, y 2,..., y m ) e D uma matriz diagonal com valores 1 e 1, satisfazendo D 1 b 0. Sem perda de generalidade, será considerado b 0, de modo que D = I. Assim, uma base inicial factível B = I com solução inicial (x, y) = (0, b) está sempre disponível para um problema com o conjunto de restrições (4) e (5). A introdução de variáveis artificiais tem o inconveniente de aumentar a dimensão do problema, já que são adicionadas m variáveis. Entretanto, a facilidade conceitual e prática dessa técnica é incontestável. Uma maneira de melhorá-la é através da utilização das variáveis de folga do problema original. Assim, uma variável artificial só é adicionada a uma restrição se não houver uma variável de folga disponível nessa restrição, ou se a variável de folga existir mas levar a uma solução básica infactível. Dada uma solução ( x, ȳ) das equações descritas em (4) e que satisfaça (5), tem-se A x = b se, e somente se, ȳ = 0. Em outras palavras, x será uma solução factível para o problema original quando cada variável artificial for nula. Para se obter um par ( x, ȳ) com tal característica, duas abordagens podem ser utilizadas, uma de duas fases e outra de fase única. A abordagem por duas fases cria um problema auxiliar a partir do conjunto de restrições (4) e (5), o qual também é um problema de otimização linear, cuja função objetivo é definida pela soma das variáveis artificiais. Matematicamente, o problema auxiliar é dado por: minimizar sujeito a f a (y) = m i=1 y i Ax + Iy = b x 0, y 0, Utilizando-se a base B = I, o método simplex pode ser aplicado a esse problema auxiliar e caso a solução ótima ( x, ȳ) obtida satisfaça ȳ = 0 tem-se x como solução factível do problema original, podendo ser iniciada a Fase-II. Note que a função objetivo do problema original não é considerada no problema auxiliar, fazendo com que essa abordagem obtenha uma solução factível x sem considerar sua otimalidade. A abordagem de fase única utilizando variáveis artificiais é conhecida na literatura como método M-grande. Nessa abordagem, as variáveis artificiais são incorporadas à função objetivo do problema original, porém penalizadas de acordo com um valor M > 0 suficientemente grande para que não seja vantajoso mantê-las em valores positivos. Sendo assim, o problema original é redefinido como: minimizar sujeito a f(x, y) = c t x + M m i=1 y i Ax + Iy = b x 0, y 0, Esse problema é chamado de problema M-grande e vale ressaltar que não corresponde a um problema auxiliar, mas sim à redefinição do problema original. O método M-grande consiste em aplicar o método simplex sobre o problema M-grande. A solução ótima obtida 2196

(x, y ) é analisada e, dependendo do resultado obtido, uma solução ótima para o problema original pode ter sido encontrada. Se y > 0 então o problema original é infactível. Caso contrário, tem-se y = 0 e x é solução ótima do problema original. Se o problema original for ilimitado então o problema M-grande também será. Até o momento, o parâmetro M foi considerado suficientemente grande. Entretanto, como definir um valor numérico para M? Infelizmente, não existe uma resposta direta para essa pergunta. Além de um bom valor para M depender do problema que se está resolvendo, efeitos numéricos também devem ser levados em conta. Um valor muito pequeno pode fazer com que uma solução do problema M-grande seja infactível para o problema original e um valor grande demais pode levar a um elevado número de iterações e à introdução de erros numéricos durante a resolução do problema. Conforme retratado na literatura, essas características fazem com que o método M-grande seja evitado e que uma abordagem de duas fases seja utilizada em implementações computacionais. Para verificar na prática como o valor escolhido para M pode influenciar o método M- grande, alguns problemas da biblioteca NETLIB foram resolvidos utilizando-se diferentes valores de M. Na Tabela 2, são apresentados os resultados obtidos na resolução dos problemas agg3, lotfi, scsd8 e ship12l pelo método, os quais possuem os respectivos valores ótimos: 10312115, 935; 25, 264706062; 904, 9999999 e 1470187, 9193. Questões relacionadas à implementação computacional do método encontram-se na Seção 4. agg3 lotfi scsd8 ship12l M IT Valor ótimo IT Valor ótimo IT Valor ótimo IT Valor ótimo 1 550-29860149,847 264-25,345372729 28 45,0000000 107 686,6000 10 554-25520859,080 303-25,264706062 414 441,2499999 107 6865,9995 10 2 555 8528305,923 282-25,264706062 1034 904,9999999 107 68659,9952 10 3 569 10312115,935 287-25,264706062 1195 904,9999999 107 686599,9517 10 4 570 10312115,935 287-25,264706062 1334 904,9999999 1337 1470187,9193 10 5 570 10312115,935 287-25,264706062 1151 904,9999999 1337 1470187,9193 10 6 569 10312115,935 287-25,264706062 1151 904,9999999 1330 1470187,9193 10 7 571 10312115,935 324-25,264706062 1187 904,9999999 1330 1470187,9193 10 8 569 10312115,935 308-25,264706062 1153 904,9999999 1330 1470187,9193 10 9 571 10312115,935 357-25,264706062 1311 904,9999999 1330 1470187,9193 10 10 571 10312115,935 343-25,264706062 1047 904,9999999 1330 1470187,9193 10 50 601 10312115,935 308-25,264706062 1256 904,9999999 2291 1470187,9193 10 100 597 10312115,935 319-25,264706062 1440 904,9999999 2240 1470187,9193 Tabela 2. Resultados obtidos pelo método M-grande para diferentes valores de M. Como pode ser observado na Tabela 2, o número de iterações para a resolução de um problema pelo método M-grande é extremamente dependente do valor escolhido para M. Além disso, note que é difícil definir um valor único para M que seja adequado para qualquer problema. Para o problema lotfi, M = 10 2 é um valor bom pois leva à obtenção da solução ótima do problema original em relativamente poucas iterações. Entretanto, para os problemas agg3 e ship12l esse valor de M leva a uma solução infactível. Em geral, valores grandes para M estão associados a um maior o número de iterações, como pode ser observado para os problemas agg3 e ship12l com M igual 10 50 e 10 100. Entretanto, esse fato nem sempre é verificado, como mostra os problemas lotfi e scsd8. É importante observar que mesmo para um valor exagerado como M = 10 100 o valor ótimo desses problemas não foi prejudicado por erros numéricos. Esse fato é melhor discutido na Seção 4. Pelos resultados obtidos, verifica-se que a definição de um valor adequado para o parâmetro M é determinante para a obtenção de uma solução correta em um número de iterações relativamente pequeno. Por outro lado, não existe uma regra que permita definir um bom valor para M a priore. A abordagem proposta na seção a seguir tem o objetivo de evitar essa escolha, considerando M implicitamente durante a resolução do problema. 2197

3. O método M-grande implícito Nesta seção é apresentada uma nova abordagem para o método M-grande, que será chamada de método M-grande implícito, na qual M é utilizado implicitamente, isto é, nenhum valor numérico é definido para M e o método simplex é modificado de modo a considerar M suficientemente grande. Uma abordagem semelhante foi proposta por Paparrizos et al. (2003) no contexto do método simplex de pontos exteriores, uma variação do método simplex que permite a infactibilidade da solução básica (Paparrizos, 1993). Além disso, os autores consideram que apenas uma variável artificial é adicionada ao problema. A abordagem aqui apresentada é mais geral pois é descrita para o método simplex convencional e não se restringe à utilização de apenas uma variável artificial. Na seção anterior, foi visto que o método M-grande redefine o problema a ser resolvido, adicionando variáveis artificiais e penalizando-as na função objetivo, por meio de um parâmetro numérico M. O problema continua sendo um problema de otimização linear na forma padrão com m restrições, porém possui agora m + n variáveis. A fim de facilitar a exposição, o problema M-grande será colocado no formato (1)-(3), de acordo com a seguinte redefinição: A := [A I ], x := [ x y ], c t := [ c t (M,..., M) t]. (6) A matriz de coeficientes do problema passa a ter a matriz identidade como submatriz, correspondendo às colunas das variáveis artificiais. O vetor de variáveis e o vetor de custos também são modificados de modo a considerar as variáveis artificiais e seus custos. O método (primal) simplex apresentado no Quadro 1 pode ser utilizado para resolver o problema M- grande, já que uma base factível B = I é conhecida. Entrada Problema de otimização linear na forma padrão com partição básica primal factível A = [B N]. A possui m linhas e m + n colunas. Passo 1 Calcule a solução básica primal: x B = B 1 b, x N = 0. Passo 2 Calcule o vetor multiplicador simplex: π t = c t B B 1. Passo 3 Teste de otimalidade: Calcule os custos reduzidos c Nj = c Nj π t a Nj, j = 1,..., n. Se c Nj 0 j então PARE! A solução básica atual é ótima! Caso contrário, obtenha k = arg min{ c Nj j = 1,..., n}. Passo 4 Calcule as coordenadas básicas da direção simplex: d B = B 1 a Nk. Passo 5 Teste da razão: Se d Bi 0 i então PARE! O problema é ilimitado! Caso contrário, obtenha l = arg min{ x Bi /d Bi d Bi < 0, i = 1,..., m}. Passo 6 Atualização da base: B = B \ {l} {k} e N = N \ {k} {l}. Redefina as matrizes B e N de acordo com os índices atualizados. Inicie uma nova iteração a partir do Passo 1. Quadro 1. Método simplex para problemas na forma padrão. Durante a resolução do problema M-grande pelo método simplex, deve ser mantido um registro de quais variáveis são legítimas e quais são artificiais para que ao se obter uma solução ótima, possa ser verificado se esta é factível para o problema original, conforme especificado pela Tabela 1. Além disso, uma vez que uma variável artificial tenha saído da base, ela não deve retornar à base, porém para as variáveis legítimas isso é permitido. Considere a primeira iteração do método simplex para a resolução do problema M- grande. A base nessa iteração é composta apenas de variáveis artificiais e tem-se B = I com x B = y = b e c t B = (M, M,..., M). Assim, o vetor multiplicador simplex no Passo 2, pode 2198

ser escrito como: π t = c t BB 1 = (M, M,..., M)B 1 = Me t B 1 com e t = (1, 1,..., 1). Definindo o vetor π t A = et B 1, tem-se π t = Mπ t A. (7) Desse modo, os custos reduzidos no Passo 3 podem ser calculados como: c Nj = c Nj Mπ t Aa Nj, j = 1,..., n. (8) Pelo método M-grande, M é positivo e suficientemente grande. Assim o segundo termo da diferença em (8) predomina sobre o primeiro, isto é, Mπ t A a Nj >> cnj, j = 1,..., n, sempre que πa t a N j 0. Quando esse termo é nulo, o custo reduzido é o próprio custo da variável não-básica. Sendo assim, observe que não há a necessidade de se atribuir um valor numérico para M e realizar o cálculo do custo reduzido exatamente como descrito pela expressão (8). Basta analisar os termos da expressão separadamente, levando-se em conta que M é positivo e suficientemente grande. De fato, na primeira iteração, o Passo 3 deve obter um índice k tal que c Nk MπAa t Nk c Nj MπAa t Nj, j = 1,..., n. (9) Para índices k e j arbitrários, essa desigualdade é verdadeira se, e somente se, um dos dois casos ocorre: (i) π t A a N k < π t A a N j ; ou (ii) π t A a N k = π t A a N j e c Nk c Nj. Note que esse resultado é válido mesmo quando πa t a N j = 0, para algum j. As expressões dos demais passos do método não dependem do vetor de custos, seja direta ou indiretamente. Dessa maneira, o parâmetro M não é utilizado em nenhum outro cálculo da iteração e não há necessidade de se analisar os demais passos. Considere agora uma iteração qualquer na resolução do problema M-grande pelo método simplex. Se nenhuma variável artificial se encontra na base, então o vetor de custos básicos não possui componentes iguais a M e, assim, os cálculos estão livres do parâmetro. Suponha, então, que exista pelo menos uma variável artificial na base. É possível realizar, sem perda de generalidade, uma reordenação das variáveis básicas de modo a particionar a base em B = [B L B A ], sendo B L a matriz contendo as colunas de B correspondentes às variáveis legítimas e B A as colunas correspondentes[ às variáveis ] artificiais. Essa partição induz sobre o vetor de custos básicos a partição c t B = c t B L c t B A com c t B L = ( c B1... c Bp 0... 0 ), c t B A = ( 0... 0 M... M ) e p sendo o número de variáveis legítimas na base. Considerando a partição definida, o vetor multiplicador simplex pode ser escrito como: π t = c t BB 1 = c t B L B 1 + c t B A B 1 = c t B L B 1 + Mē t B 1 com ē t = (0,..., 0, 1,..., 1), um vetor cujas primeiras p posições são nulas e as demais são iguais a 1. De maneira semelhante à primeira iteração, define-se π t L = ct B L B 1 e π t A = ēt B 1 e, assim, o vetor multiplicador simplex é dado por: π t = π t L + Mπ t A (10) 2199

Substituindo esse resultado na expressão do custo reduzido, dada do Passo 3, tem-se: c Nj = c Nj (π t L + Mπ t A)a Nj = c Nj π t La Nj Mπ t Aa Nj, j = 1,..., n. (11) Para M positivo e suficientemente grande, a seguinte relação é válida sempre que π t A a N j 0: Mπ t Aa Nj >> c Nj π t La Nj, j = 1,..., n. Para πa t a N j = 0, o custo reduzido c Nj possui apenas componentes legítimas e o parâmetro M não é utilizado em seu cálculo. Assim como na primeira iteração, não há necessidade de se atribuir um valor numérico para M e realizar o cálculo do custo reduzido exatamente como descrito pela expressão (11). De fato, para se obter um índice k tal que c Nk π t La Nk Mπ t Aa Nk c Nj π t La Nj Mπ t Aa Nj, j = 1,..., n, (12) basta analisar os termos da expressão separadamente, levando-se em conta que M é positivo e suficientemente grande. Para índices k e j arbitrários, a desigualdade acima é verdadeira se, e somente se, um dos dois casos ocorre: (i) π t A a N k < π t A a N j ; ou (ii) π t A a N k = π t A a N j e (c Nk π t L a N k ) (c Nj π t L a N j ). Observe a semelhança entre as expressões (7) e (8) obtidas na primeira iteração e as expressões (10) e (11). Na realidade, as expressões da primeira iteração são um caso particular destas, em que p = 0, ou seja, nenhuma variável legítima está na base. Por outro lado, se todas as variáveis básicas são legítimas, então p = m com π A = 0. Utilizando a expressão (11), os custos reduzidos calculados têm componentes artificiais nulas e correspondem ao cálculo convencional. Logo, todos os casos se enquadram nos resultados obtidos aqui, fazendo com que a modificação das expressões dos passos 2 e 3 do método simplex seja de âmbito geral. O método apresentado no Quadro 2 corresponde ao método simplex apresentado no Quadro 1, modificado de modo a considerar M implicitamente nos cálculos, de acordo com a descrição realizada. No Passo 3 do método modificado, a expressão para a obtenção do índice k pode ser reescrita da seguinte maneira: Calcule o conjunto K = arg min{ c A N j j = 1,..., n}. Se K possui apenas um elemento então defina-o como k. Caso contrário, obtenha k = arg min{ c L N j j K}. A ordenação das variáveis básicas sugerida na obtenção dos resultados, tem o único intuito de facilitar a compreensão do texto. Em uma implementação computacional do método apresentado no Quadro 2, deve-se apenas armazenar quais variáveis são legítimas e quais são artificiais e realizar os cálculos de acordo com essa informação. Além disso, um contador de quantas variáveis artificiais estão presentes na base pode ser utilizado a fim de evitar cálculos desnecessários. Com essa nova proposta, evita-se a definição de um valor numérico para M e o método M- grande está livre de desvantagens retratadas na literatura. Para atingir esse objetivo, apenas dois passos do método simplex precisam ser modificados, sem aumentar a dificuldade de sua implementação computacional. Vale ressaltar que a proposta apresentada por Bertsimas e Tsitsiklis (1997) para o tratamento implícito de M diferencia-se da abordagem descrita aqui por não realizar o desempate das expressões utilizando os termos que não dependem de M, conforme definido em (9) e (12). Assim, a proposta dos autores se assemelha ao método de duas fases, já que ignora os coeficientes da função objetivo do problema original nas expressões de custos reduzidos contendo M. 2200

Entrada Problema M-grande conforme definido em (6). Inicialize B = I, N = A, c BL = 0, ē t = (1,..., 1). Passo 1 Calcule a solução básica primal: x B = B 1 b, x N = 0. Passo 2 Calcule as componentes legítima e artificial do vetor multiplicador simplex: πl t = ct B L B 1 e πa t = ēt B 1. Passo 3 Teste de otimalidade: Calcule as componentes legítima e artificial dos custos reduzidos: c L N j = c Nj πl t a N j e c A N j = πa t a N j, j = 1,..., n. Se c L N j 0 e c A N j 0 j então PARE! A solução atual é ótima para o problema M-grande! Caso contrário, obtenha k tal que k = arg min{ c L N q c A N q c A N j, q = 1,..., n e j = 1,..., n}. Passo 4 Calcule as coordenadas básicas da direção simplex: d B = B 1 a Nk. Passo 5 Teste da razão: Se d Bi 0 i então PARE! O problema é ilimitado! Caso contrário, obtenha l = arg min{ x Bi /d Bi d Bi < 0, i = 1,..., m}. Passo 6 Atualização da base: B = B \ {l} {k} e N = N \ {k} {l}. Reordene B para obter B = [B L B A ]. Redefina as matrizes B e N e o vetor ē de acordo com os índices atualizados. Inicie uma nova iteração a partir do Passo 1. Quadro 2. Método simplex modificado para o método M-grande implícito. 4. Resultados e discussões Para verificar a eficiência da abordagem proposta na Seção 3 na resolução de problemas de otimização linear reais, 41 problemas da biblioteca NETLIB (http://www.netlib. org/lp/data) foram resolvidos pelos métodos M-grande implícito e M-grande convencional, sendo que para esse último utilizou-se M = 10 0, 10 1,..., 10 10 e M = 10 100. Além disso, os problemas também foram resolvidos pelo método de duas fases, descrito na Seção 2, com o intuito de se realizar uma melhor comparação dos resultados obtidos. Para a implementação desses métodos, foi utilizada uma biblioteca desenvolvida em linguagem C pelo autores, baseada no método primal simplex com características como estruturas de dados para matrizes esparsas, representação da base pela forma produto da inversa e teste da razão de passagem dupla (Harris ratio test). Na Tabela 3, são apresentados os resultados obtidos na resolução dos problemas. A segunda coluna da tabela corresponde ao valor ótimo de cada problema, obtidos pelo método M-grande implícito e verificados de acordo com Koch (2004). Nas demais colunas está o número de iterações para a resolução de cada problema, de acordo com o método e o valor de M utilizado (quando aplicável). Por questão de exposição, são apresentados os resultados de apenas três valores numéricos para M. O valor 10 6 foi escolhido por se tratar do menor valor de M com o qual o método M-grande foi capaz de obter a solução ótima correta de todos os problemas. O valor 10 10 representa um M razoavelmente grande enquanto 10 100 corresponde a uma valor exagerado, utilizado para verificar a introdução de erros numéricos. Todos os problemas foram resolvidos corretamente pelos métodos de duas fases, M- grande implícito e M-grande convencional com M = 10 6. Para M = 10 10, o problema scorpion foi o único a apresentar erro em seu valor ótimo, que foi da ordem de 10 6. Para M = 10 100, somente o problema scsd1 apresentou erro em seu valor ótimo, sendo da ordem de 10 8. Para esse mesmo valor de M, o método M-grande não foi capaz de resolver os problemas scorpion e scrs8, pois excedeu o número máximo de iterações sem obter uma solução ótima. É importante ressaltar que mesmo para um valor exagerado como 10 100 apenas 3 problemas foram prejudicados por erros numéricos, ao contrário do que é afirmado 2201

Problema Valor ótimo Duas fases M implícito M = 10 6 M = 10 10 M = 10 100 adlittle 2,2549496316E+05 167 176 164 170 158 afiro -4,6475314286E+02 29 28 28 28 28 agg2-2,0239252356e+07 585 550 548 548 585 agg3 1,0312115935E+07 594 570 569 571 597 bandm -1,5862801845E+02 1227 1207 1193 1193 1312 blend -3,0812149846E+01 140 141 141 127 127 bnl1 1,9776295615E+03 4236 4460 5002 4720 4481 bnl2 1,8112365404E+03 14946 13907 13630 14080 14422 brandy 1,5185098965E+03 559 560 560 559 559 e226-1,8751929066e+01 822 823 822 806 842 fffff800 5,5567956482E+05 1861 1669 1589 1680 1630 israel -8,9664482186E+05 881 887 890 862 751 lotfi -2,5264706062E+01 289 287 287 343 319 maros-r7 1,4971851665E+06 4293 4287 4287 4253 4255 sc105-5,2202061212e+01 130 129 129 129 126 sc205-5,2202061212e+01 238 237 237 243 243 sc50a -6,4575077059E+01 60 58 58 58 58 sc50b -7,0000000000E+01 59 58 58 60 58 scagr25-1,4753433061e+07 1032 942 942 937 924 scagr7-2,3313898243e+06 217 230 230 231 241 scfxm1 1,8416759028E+04 728 664 659 662 712 scfxm2 3,6660261565E+04 1460 1368 1384 1331 1423 scfxm3 5,4901254550E+04 2189 2073 2084 1972 2181 scorpion 1,8781248227E+03 406 398 398 398 scrs8 9,0429695380E+02 1584 1459 1459 1459 scsd1 8,6666666743E+00 216 216 235 251 238 scsd8 9,0499999993E+02 1323 1151 1151 1047 1440 sctap1 1,4122500000E+03 697 491 489 489 593 sctap2 1,7248071429E+03 2542 2063 2332 2547 2809 sctap3 1,4240000000E+03 3139 3233 3062 2994 3069 share1b -7,6589318579E+04 453 452 452 452 452 share2b -4,1573224074E+02 172 169 169 169 169 ship04l 1,7933245380E+06 483 434 434 434 487 ship04s 1,7987147004E+06 458 416 416 416 461 ship08l 1,9090552114E+06 1149 961 961 960 1191 ship08s 1,9200982105E+06 986 856 856 855 986 ship12l 1,4701879193E+06 2293 1330 1330 1330 2240 ship12s 1,4892361344E+06 1523 1229 1229 1229 1521 stocfor1-4,1131976219e+04 141 140 140 140 140 stocfor2-3,9024408538e+04 2867 2798 2798 2830 2866 woodw 1,3044763331E+00 2684 2625 2392 2486 2549 Tabela 3. Resultados obtidos na resolução dos problemas por diferentes métodos e parâmetros. recentemente na literatura (ver Introdução). Provavelmente, essas afirmações se baseiam em resultados computacionais antigos, referentes à utilização de variáveis com precisão simples. Analisando-se os dados da Tabela 3, é possível verificar que o método M-grande implícito resultou em um número de iterações menor ou igual que o método M-grande convencional em 17 problemas (41, 5%). Comparando o método de duas fases com o método M-grande implícito, em 33 problemas (80, 5%) esse resultou em um número de iterações menor ou igual ao obtido por aquele. Apenas para os problemas adlittle e sctap3 o método M-grande implícito obteve maior número de iterações que todos os demais. Para os testes com M até 10 5, o método M-grande obteve soluções infactíveis para alguns problemas. Para M = 10 6 todos os problemas foram resolvidos corretamente, podendo levar à conclusão equivocada de que essa seria uma boa escolha para M. Entretanto, um valor adequado para M depende do problema a ser resolvido e, assim, para a resolução de outros problemas, M = 10 6 pode levar a soluções infactíveis. 2202

Considerando os testes realizados, é possível verificar que o método M-grande implícito está realmente livre das principais desvantagens relatadas na literatura a respeito do método M-grande convencional e leva, na maioria dos casos, a menos iterações do que utilizando-se o método de duas fases. 5. Conclusões e trabalhos futuros O método M-grande implícito proposto mostrou-se superior ao método M-grande, como pôde ser observado nos resultados obtidos pela aplicação do método na resolução de 41 problemas de otimização linear da biblioteca NETLIB. Sem a necessidade de se definir um valor numérico para M, o método não obtém soluções ótimas equivocadas, não sofre a introdução de erros numéricos e, na maioria dos casos, não leva ao aumento do número de iterações. O método também se mostrou vantajoso com relação ao método de duas fases, devido ao menor número de iterações para a resolução de grande parte dos problemas. As mudanças propostas não dificultam a implementação computacional do método com relação ao método M-grande, já que são necessárias pequenas modificações no método simplex de modo a considerar o parâmetro M implicitamente na realização de comparações durante a resolução do problema. O próximo passo é estender essa abordagem para o método dual simplex, que também pode ser inicializado pelo método M-grande (Koberstein, 2007). Nesse caso, busca-se uma solução básica dual factível e, assim, o problema M-grande é definido de outra maneira. A abordagem também pode ser aplicada na resolução de problemas de otimização linear canalizados, quando incorporada ao método dual canalizado proposto por Sousa et al. (2005). Referências [1] Arenales, MN; Armentano, VA; Morabito, R; Yanasse, HH (2007) Pesquisa Operacional. Editora Campus. [2] Arsham, H (2007) A computationally stable solution algorithm for linear programs. Applied Mathematics and Computation. v.188, p.1549-1561. [3] Bazaraa, MS; Jarvis, JJ; Sherali, HD (1990) Linear Programming and Network Flows. 2a ed. John Wiley & Sons Inc. [4] Bertsimas, D; Tsitsiklis, JN (1997) Introduction to Linear Optimization. Athena Scientific, Belmont, Massachusetts. [5] Hu, J (2007) A note on an improved initial basis for the simplex algorithm. Computers & Operations Research, v.34, p.3397-3401. [6] Koberstein, A; Suhl, UH (2007) Progress in the dual simplex method for large scale LP problems: practical dual phase 1 algorithms. Computational Optimization and Applications, v.37(1), p.49-65. [7] Koch, T (2004) The final Netlib-LP results. Operations Research Letters, v.32, p.138-142. [8] Maros, I (2003) Computational techniques of the simplex method. Kluwer Academic Publishers. [9] Paparrizos, K (1993) An exterior point simplex algorithm for general linear problems. Annals of Operations Research, v.32, p.497-508. 2203

[10] Paparrizos, K; Samaras, N; Stephanides, G (2003) An efficient simplex type algorithm for sparse and dense linear programs. European Journal of Operational Research, v.148(2), p.323-334. [11] Sousa, RS; Silva, CTL; Arenales, MN (2005) Métodos do tipo dual simplex para problemas de otimização linear canalizados. Pesquisa Operacional. v.25(3), p.349-382. [12] Vieira Junior, H; Lins, MPE (2005) An improved initial basis for the simplex algorithm. Computers & Operations Research, v.32, p.1983-1993. 2204