Você está na página 1de 12

XL SBPO

A Pesquisa Operacional e o uso racional de recursos hídricos


02 a 05/09/08 João Pessoa, PB

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 retra-
tada 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. Howe-
ver, 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 re-
ported 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
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

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) des-
creve 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
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

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 fac-
tí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 conven-
cional 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) = ct x (1)
sujeito a Ax = b (2)
x≥0 (3)
com A ∈ Rm×n , x ∈ Rn , c ∈ Rn , b ∈ Rm , 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 é re-
solvido 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
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

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 yi > 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 = (y1 , y2 , . . . , ym ) 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 va-
riá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 Ax̄ = 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 carac-
terí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 fa (y) = m
P
i=1 yi
sujeito a 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 obje-
tivo 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 f (x, y) = ct x + M m
P
i=1 yi
sujeito a 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
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

(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 pro-
blemas 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 relaciona-
das à 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
102 555 8528305,923 282 -25,264706062 1034 904,9999999 107 68659,9952
103 569 10312115,935 287 -25,264706062 1195 904,9999999 107 686599,9517
104 570 10312115,935 287 -25,264706062 1334 904,9999999 1337 1470187,9193
105 570 10312115,935 287 -25,264706062 1151 904,9999999 1337 1470187,9193
106 569 10312115,935 287 -25,264706062 1151 904,9999999 1330 1470187,9193
107 571 10312115,935 324 -25,264706062 1187 904,9999999 1330 1470187,9193
108 569 10312115,935 308 -25,264706062 1153 904,9999999 1330 1470187,9193
109 571 10312115,935 357 -25,264706062 1311 904,9999999 1330 1470187,9193
1010 571 10312115,935 343 -25,264706062 1047 904,9999999 1330 1470187,9193
1050 601 10312115,935 308 -25,264706062 1256 904,9999999 2291 1470187,9193
10100 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 = 102 é 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 1050 e 10100 . Entretanto, esse fato
nem sempre é verificado, como mostra os problemas lotfi e scsd8. É importante observar
que mesmo para um valor exagerado como M = 10100 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
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

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 in-
factibilidade 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 pa-
râ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:  
x
, ct := ct | (M, . . . , M )t .
 
A := [A | I ] , x := (6)
y
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: xB = B−1 b, xN = 0.
Passo 2 Calcule o vetor multiplicador simplex: π t = ctB B−1 .
Passo 3 Teste de otimalidade:
Calcule os custos reduzidos c̄Nj = cNj − π t aNj , 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: dB = −B−1 aNk .
Passo 5 Teste da razão:
Se dBi ≥ 0 ∀i então PARE! O problema é ilimitado!
Caso contrário, obtenha l = arg min{−xBi /dBi | dBi < 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
xB = y = b e ctB = (M, M, . . . , M ). Assim, o vetor multiplicador simplex no Passo 2, pode

2198
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

ser escrito como:


π t = ctB B−1 = (M, M, . . . , M )B−1 = M et B−1
t = et B−1 , tem-se
com et = (1, 1, . . . , 1). Definindo o vetor πA
π t = M πA
t
. (7)
Desse modo, os custos reduzidos no Passo 3 podem ser calculados como:
t
c̄Nj = cNj − M πA aNj , 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 é,
t
M πA aNj >> cNj , j = 1, . . . , n,
t a
sempre que πA Nj 6= 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
t t
cNk − M πA aNk ≤ cNj − M πA aNj , j = 1, . . . , n. (9)
Para índices k e j arbitrários, essa desigualdade é verdadeira se, e somente se, um dos dois
casos ocorre:
(i) −πA t a t
Nk < −πA aNj ; ou
t t
(ii) πA aNk = πA aNj e cNk ≤ cNj .
Note que esse resultado é válido mesmo quando πA t a
Nj = 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 = [BL | BA ], sendo BL a matriz contendo as colunas de B correspondentes às variáveis
legítimas e BA as colunas correspondenteshàs variáveis
i artificiais. Essa partição induz sobre
t t t
o vetor de custos básicos a partição cB = cBL | cBA com

ctBL = ( cB1 . . . cBp 0 ... 0 ),


ctBA = ( 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 = ctB B−1 = ctBL B−1 + ctBA B−1 = ctBL 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 πLt = ctBL B−1 e πA t = ēt B−1

e, assim, o vetor multiplicador simplex é dado por:


π t = πLt + M πA
t
(10)

2199
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

Substituindo esse resultado na expressão do custo reduzido, dada do Passo 3, tem-se:

c̄Nj = cNj − (πLt + M πA


t
)aNj = cNj − πLt aNj − M πA
t
aNj , j = 1, . . . , n. (11)
t a
Para M positivo e suficientemente grande, a seguinte relação é válida sempre que πA Nj 6= 0:

t
M πA aNj >> cNj − πLt aNj , j = 1, . . . , n.

Para πAt a
Nj = 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
t
cNk − πLt aNk − M πA aNk ≤ cNj − πLt aNj − M πA
t
aNj , 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) −πA t a t
Nk < −πA aNj ; ou
(ii) πA aNk = πA aNj e (cNk − πLt aNk ) ≤ (cNj − πLt aNj ).
t t

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 parti-
cular 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 expres-
sã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 Nj | j =
1, . . . , n}. Se K possui apenas um elemento então defina-o como k. Caso contrário, obtenha
k = arg min{c̄L Nj | 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 trata-
mento 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
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

Entrada Problema M-grande conforme definido em (6).


Inicialize B = I, N = A, cBL = 0, ēt = (1, . . . , 1).
Passo 1 Calcule a solução básica primal: xB = B−1 b, xN = 0.
Passo 2 Calcule as componentes legítima e artificial do vetor multiplicador simplex:
πLt
= ctBL 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 t A t
Nj = cNj − πL aNj e c̄Nj = −πA aNj , j = 1, . . . , n.
L A
Se c̄Nj ≥ 0 e c̄Nj ≥ 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 A A
Nq | c̄Nq ≤ c̄Nj , q = 1, . . . , n e j = 1, . . . , n}.
Passo 4 Calcule as coordenadas básicas da direção simplex: dB = −B−1 aNk .
Passo 5 Teste da razão:
Se dBi ≥ 0 ∀i então PARE! O problema é ilimitado!
Caso contrário, obtenha l = arg min{−xBi /dBi | dBi < 0, i = 1, . . . , m}.
Passo 6 Atualização da base:
B = B \ {l} ∪ {k} e N = N \ {k} ∪ {l}.
Reordene B para obter B = [BL | BA ].
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 proble-
mas 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 = 100 , 101 , . . . , 1010 e M = 10100 . 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 106 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 1010 representa um M razoavelmente grande enquanto 10100
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 = 106 . Para M = 1010 , o problema
scorpion foi o único a apresentar erro em seu valor ótimo, que foi da ordem de 10−6 . Para
M = 10100 , 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 10100
apenas 3 problemas foram prejudicados por erros numéricos, ao contrário do que é afirmado

2201
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

Problema Valor ótimo Duas fases M implícito M = 106 M = 1010 M = 10100


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é 105 , o método M-grande obteve soluções infactíveis para alguns
problemas. Para M = 106 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 = 106 pode levar a soluções infactíveis.

2202
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

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 sim-
plex 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 cana-
lizados, 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 Scien-


tific, 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 Applica-
tions, 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 Pu-
blishers.

[9] Paparrizos, K (1993) An exterior point simplex algorithm for general linear problems.
Annals of Operations Research, v.32, p.497-508.

2203
XL SBPO
A Pesquisa Operacional e o uso racional de recursos hídricos
02 a 05/09/08 João Pessoa, PB

[10] Paparrizos, K; Samaras, N; Stephanides, G (2003) An efficient simplex type algo-


rithm 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 pro-
blemas 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

Você também pode gostar