Escolar Documentos
Profissional Documentos
Cultura Documentos
otimização linear usando um método muito comum conhecido como o grande M, será dada uma
breve revisão sobre a obtenção de soluções básicas factível para problemas de otimização linear,
envolvendo o método de duas fases e o método de grande M. Programação linear é uma técnica
de modelação matemática que visa a otimização da utilização de recursos limitados. É aplicada
em áreas tao diversas como a indústria, agricultura, os transportes, a economia, os sistemas de
saúde, e mesmo as ciências sociais e comportamentais. Devido a sua elevada eficiência
computacional é a base do desenvolvimento de algoritmos de solução de outros tipos de
investigação operacional. 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 interacçõ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 optimização linear. 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.
ALGORITMOS
ALGORITMO SIMPLEX
O método Simplex é um processo iterativo que permite melhorar a solução da função objetivo
em cada etapa. O processo finaliza quando não é possível continuar melhorando este valor, ou
seja, quando se obtenha a solução ótima (o maior ou menor valor possível, segundo o caso, para
que todas as restrições sejam satisfeitas). método simplex, técnica padrão em programação linear
para resolver um problema de otimização, tipicamente envolvendo uma função e várias
restrições expressas como desigualdades.
4. PRIMEL SIMPLEX
E uma técnica utilizada para determinar numericamente a solução ótima de um modelo na forma
canónica, mais com as seguintes características para o sistema linear de equação:
Entendesse por maximizar a função Objetiva, sendo todas restrições do tipo "<" e todas variáveis
forem não negativas (X; > 0)
Isso e dividindo os termos independente das restrições pelos elementos da coluna de PIVOT O
menor coficiente ira direcionar a linha de PIVOT
Para ilustrar o método Simplex, considere o exemplo de certa empresa rápido fabrica 2 produtos
pl e p2. O lucro por unidade de pl e de 100 u.m. e o lucro unitário de p2 e de 150 u.m. A empresa
necessita de 2 horas para fabricar uma unidade de pl e 3 horas para fabricar uma unidade de p2.
O tempo mensal disponível para essas atividades e de 120 horas. As demandas esperadas para os
2 produtos levaram a empresa a decidir que os montantes produzidos d p1 e p2 não devem
ultrap`assar 40 unidades de pl e 30 unidades de p2 por mês.
Sujeito a Ax = b (2)
x ≥0 (3)
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.
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
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 = (yl, y2, ...ym) e D uma matriz diagonal com valores 1 e -1, satisfazendo D-1b≥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).
Dada uma solução (x, y) das equações descritas em (4) e que satisfaça (5), tem-se A x = b se, e
somente se, y = 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,y) 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:
sujeito a Ax+ly = 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 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.
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.
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. 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
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, 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. 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 legitimas 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 Mgrande
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.
8. ALGORITMO GRANDE M
• Para restrições inferiores ou iguais, introduza variáveis folgas para que todos os restrições
sejam iguais.
O valor de M deve ser escolhido suficientemente grande para que a variável artificial não faça
parte de nenhuma solução viável.
9. UTILIDADE DO GRANDE M
x-y≤ Mz
x-y-≥Mz
certifique-se de que quando z=0 então x=y. Caso contrário, quando z=1, então - M< X- Y<M,
indicando que as variáveis x e y podem ter quaisquer valores desde que o valor absoluto de sua
diferença seja limitado por M (daí a necessidade de M ser "grande o suficiente").
9.1.EXERCICIO RESOLVIDO
= 2x1 + x2+x3≥6
1x + 1x2 + 2x3 ≤8
x1 + x2 ≥0
= XI + x2 sl +0s2+ 0al = 10
-x1 + x2 +0s1 - e. + al = 2
Base X1 X2 S1 e A1 bi
S1 1 1 1 0 0 10
a1 -1 1 0 1 1 2
Z -2 -1 0 0 M 0
Base X1 X2 S1 e A1 Bi
S1 1 1 -1 0 0 10
a1 -1 1 0 -1 1 2
Z M-2 -M-1 0 0 M 0
Base M X2 S1 e A1 bi
S1 2 0 1 1 -1 8
X2 -1 1 0 1 1 2
Z -3 0 0 -1 M+1 2
Base X1 X2 S1 e al bi
S1 2/2 0/2 ½ 1/2 -1/2 8
X2 -1 1 0 -1 1 2
Z -3 0 0 -1 M=1 2
Exemplo:
Função objetivo
Max= 3x + 3y >
Sujeito {3x+3y>5
{4x + 3y>10
{2x + ly >12
X, Y >0
Para mudar a nossa função objetivo em problema de minimização às nossas restrições também
sofreram alterações cada restrição será multiplicada por (-1) E os nossos sinais anteriores ">"
será "<"
Sujeito à
Introduzindo as variáveis de folga (+xi), de excesso (-xi) e apresentando a tabela inicial simplex
teremos:
Da tabela inicial, x1 e x2 não são básicas e x4 < 0, logo o conjunto {x1 = 0; x2 = 0; x3 = 10; x4
= -2; z = 0}, não é solução válida, poís viola a condição de não negatividade. Para resolver este
tipo de problema, introduz – se uma outra modificação no método simplex e usa – se o método
simplex de Grande M.
De um modo geral, para problemas que contêm vários tipos de desigualdade deve-se usar o
procedimento geral:
Procedimento Geral
Passo 1. Introduzir uma variável de folga (+xi) para cada restrição da forma ;
Passo 2. Introduzir uma variável de excesso (-xi) e uma variável artificial (+ai) para cada
restrição da forma ;
Passo 3. Introduzir uma variável artificial (+ai) para cada restrição da forma =.
Atenção uma restrição do tipo (=) dá lugar a duas restrições da forma e , equivalendo a duas
inequações uma com (+xi) outra com (-xi+ai) caso seja necessário.
Passo 4. Para cada variável de folga e excesso adicionar 0xi e para cada variável artificial
adiciona -se -Mai na função objectiva, onde M é um grande número positivo.
Resumo do procedimento
Problemas de Maximização
Passo 1. Realizar o procedimento geral e escrever o sistema na forma padrão incluindo a função
objectiva;
Passo 2. Na tabela preliminar simplex, procurar pôr na base todas as variáveis artificiais, isto é,
procurar eliminar a constante M nas colunas de ai até chegar a tabela simplex inicial com uma
solução básica inicial viável.
Passo 3. Escolher um pivô e resolver o simplex, até que todos coeficientes da função objectiva
sejam positivos, ter – se – à uma tabela terminal.
Maximizar Z = 2x1 + x2
Sujeito à
Sujeito à
Vamos procurar encontrar a solução básica inicial viável, para isso temos que eliminar M na
coluna a1 tomando 1 como pivô.
Tabela simplex inicial
A solução agora obtida não é final, pois a linha indicadora de pivô apresenta números negativos
(-M-1 <0), portanto vamos agora melhorar a solução.
1a Iteração
2a Iteração
Solução: x1 = 4; x2 = 6; x3 = x4 = 0; a1 = 0; Zmax = 14
Observação: Como as variáveis artificiais não têm significado nenhum para o problema e são
iguais a zero na tabela terminal simplex, elas podem não figurar na solução.
Maximizar Z=12x1+26x2
Resolução
Tabela preliminar
Solução X = (7/2, 1/2, 2, 0,0,0) ; Zmax = 55
Problemas de Minimização
Passo 2. Escrever o sistema composto pela função max Z = - Ci*Xi e o conjunto das restrições
originais;
Minimizar W = 30x1+30x2+10x3
Resolução
Exemplo 1.17. Resolver o seguinte problema de programação linear pelo método simplex de
Grande M.
Resolução
Tabela preliminar 1
Solução: X = (8, 2, 0, 8, 0, 0) Wmin = -Zmax = 14