Você está na página 1de 24

Neste trabalho será abordado assuntos relacionados com o método simplex, onde faremos a

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

Em matemática e ciência da computação, um algoritmo é uma sequência finita de ações


executáveis que visam obter uma solução para um determinado tipo de problema. Segundo
Dasgupta, Papadimitriou e Vazirani; "Algoritmos são procedimentos precisos, não ambíguos,
padronizados, eficientes e corretos.". As suas características são: finitas, o algoritmo deve
eventualmente resolver o problema; bem definidas: os passos devem ser definidos de modo a
serem entendidos; efetivas, deve sempre resolver o que tem para solucionar, antecipando falhas.
Um algoritmo corretamente executado não irá resolver um problema se estiver implementado
incorretamente ou se não for apropriado ao problema.

Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos


necessários para realizar uma tarefa. Sua implementação pode ser feita por um computador, por
outro tipo de automato ou mesmo por um ser humano. Diferentes algoritmos podem realizar a
mesma tarefa usando um conjunto diferenciado de instruções em mais ou menos tempo, espaço
ou esforço do que outros. Tal diferença pode ser reflexo da complexidade computacional
aplicada, que depende de estruturas de dados adequadas ao algoritmo. Por exemplo, um
algoritmo para se vestir pode especificar que você vista primeiro as meias e os sapatos antes de
vestir a calça enquanto outro algoritmo especifica que você deve primeiro vestir a calça e depois
as meias e os sapatos. Fica claro que o primeiro algoritmo é mais difícil de executar que o
segundo apesar de ambos levarem ao mesmo resultado.

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.

As desigualdades definem uma região poligonal, e a solução está tipicamente em um dos


vértices. O método simplex é um procedimento sistemático para testar os vértices como possíveis
soluções. Alguns problemas simples de otimização podem ser resolvidos desenhando as
restrições em um gráfico. No entanto, este método é útil apenas para sistemas de desigualdades
envolvendo duas variáveis. Na prática, os problemas geralmente envolvem centenas de equações
com milhares de variáveis, o que pode resultar em um número astronômico de pontos extremos.
Em 1947, George Dantzig, consultor matemático da Força Aérea dos EUA, desenvolveu o
método simplex para restringir o número de pontos extremos que devem ser examinados. O
método simplex é um dos algoritmos mais úteis e eficientes já inventados, e ainda é o método
padrão empregado em computadores para resolver problemas de otimização.

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:

• Todas variáveis são não negativas

Todos termos independentes são não negativas

Todas equação iniciais de sistema são do tipo "<"

Assim sendo adicionamos uma ou mais variáveis de FOLGA

MODELO NA FORMA CANONICA

Entendesse por maximizar a função Objetiva, sendo todas restrições do tipo "<" e todas variáveis
forem não negativas (X; > 0)

TABELA RESUMIDA DA REPRESENTAÇÃO DOS MODELOS

GERAL CANONICA PADRAO


F.O MAX; MIN MAX MAX
RESTRICAO =
VARIAVEIS >0`

PROCEDIMENTOS PRIMAL SIMPLEX

Obter uma 1 solução básica admissível

Verificar se a solução básica e ótima isso e, se os coeficientes da função objetiva expressa em


termo das variáveis não básica forem todos positivos, se a solução for óptima o algoritmo
termina.

DETERMINAR A COLUNA DE PIVOT


Isso e colecionando o coeficiente com maior valor absoluto negativo da variável não básica da
função objetivo, a que correspondente a coluna de pivot e a variável que vai entrar na base.

DETERMINAR A LINHA DE PIVOT

Isso e dividindo os termos independente das restrições pelos elementos da coluna de PIVOT O
menor coficiente ira direcionar a linha de PIVOT

QUADRO PRIMEL SIMPLEX

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.

INICIALIZAÇAO 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) = ctx (1)

Sujeito a Ax = b (2)
x ≥0 (3)

`com AERXER, CER, beRm, m<ne 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.

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).

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, 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:

minimizar f(x, y) = ctx + 1 yi

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.

7. 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. 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=[AI], xct=c ct=ct | (M,...,M)t (6)

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

Em investigação operacional, o método GRANDE M é um método de resolução de problemas


de programação linear usando o algoritmo Simplex. O método GRANDE M estende o algoritmo
Simplex para problemas que contêm restrições "maiores que", "'igual" e "menor que" desde que
não haja números negativos no segundo membro das equações das O algoritmo Simplex é o
original e ainda um dos métodos mais utilizados para resolver problemas de maximização linear.
No entanto, para aplicá-lo, a origem (todas as variáveis iguais a 0) deve ser um ponto viável. Esta
condição é satisfeita apenas quando todas as restrições (exceto não-negatividade) são menores
que as restrições e com constante positiva no lado direito. O método GRANDE M introduz
variáveis de excesso e artificial para converter todas as desigualdades nessa forma. O "GRANDE
M" refere-se a um grande número associado às variáveis artificiais, representadas pela letra M.

Os passos no algoritmo são os seguintes:

• Multiplique as restrições de desigualdade para garantir que o lado direito é positivo.


Se o problema for de minimização, transforme-se em maximização multiplicando o objetivo por
-1

⚫ Para quaisquer restrições maiores, introduza a variável de execesso e as variáveis artificiais

(como mostrado abaixo).

⚫ Escolha um grande valor positivo M e introduza um termo no objetivo da forma -M

multiplicando as variáveis artificiais.

• Para restrições inferiores ou iguais, introduza variáveis folgas para que todos os restrições
sejam iguais.

⚫ Resolva o problema utilizando o método simplex habitual.

Por exemplo, x + y ≤ 100 se torna x + y + s1 = 100, enquanto x + y ≥ 100 se torna x + y - sl+al =


100. As variáveis artificiais devem ser mostradas como 0. A função a ser maximizada é reescrito
para incluir a soma de todas as variáveis artificiais. Em seguida, as reduções de linha são
aplicadas para obter uma solução final.

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.

Para um M suficientemente grande, a solução ótima contém quaisquer variáveis artificiais na


base (ou seja, valores positivos) se e somente se o problema não for viável.

9. UTILIDADE DO GRANDE M

Quando usado na função objetivo, o método GRANDE M às vezes se refere a formulações de


problemas de otimização linear em que as violações de uma restrição ou conjunto de restrições
estão associadas a uma grande constante de penalidade positiva, M. Quando usado nas próprias
restrições, um dos muitos usos de GRANDE M, por exemplo, refere-se a garantir igualdade de
variáveis apenas quando determinada variável binária assume um valor, mas deixar as variáveis
"abertas" se a variável binária assumir seu valor oposto. Um exemplo disso é o seguinte: para
uma variável binária M e z suficientemente grande (0 ou 1), as restrições

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

Min W 30x1+30x2 + 10x3

= 2x1 + x2+x3≥6

1x + 1x2 + 2x3 ≤8

x1 + x2 ≥0

Min W 2x + x2 +0s1 +0s2 - al

= XI + x2 sl +0s2+ 0al = 10

-x1 + x2 +0s1 - e. + al = 2

X1, x2, s1, e, al ≥0

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

10. SIMPLEX DUAL

Usamos quando o problema de programação linear é de maximizar. se tivermos um problema de


minimização ao usar o mesmo modelo transformaremos em problema de minimização

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á "<"

MÉTODO SIMPLEX DE GRANDE M


Em todos os problemas anteriores foram consideradas restrições com um único tipo de sinal de
desigualdade. Nesta secção vamos considerar o caso geral dos problemas de programação linear
com o conjunto das restrições que apresenta os sinais de tipo  ; = e  desde que não haja
números negativos no segundo membro das inequações das restrições.

Exemplo: Maximizar Z = 2x1 + x2

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.

Exemplo 1.14 Resolver o problema de maximização pelo método de grande M.

Maximizar Z = 2x1 + x2
Sujeito à

Resolução Maximizar Z = 2x1 + x2+0x3 + 0x4 – Ma1

Sujeito à

Tabela preliminar simplex

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

Solução básica inicial: x1 = 0; x2 = 0; x3 = 10; x4 = 0; a1 = 2 e Z = -2M.

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.

Exemplo 1.15 Usando o método simplex de Grande M, resolva o problema de programação


linear.

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

Para os problemas de minimização com restrições da forma  ; = e , o método simplex de


grande M tem os seguintes passos:
Passo1. Dado um problema de programação linear com a função objectiva de minimização,
deve- se converter a função objectiva para maximização multiplicando por -1, assim: max Z = -
min W = -Ci*Xi ;

Passo 2. Escrever o sistema composto pela função max Z = - Ci*Xi e o conjunto das restrições
originais;

Passo 3. Realizar o procedimento geral e escrever o problema de maximização na forma padrão;

Passo 4. Realizar os passos 2 e 3 do caso de maximização. Chegada a tabela terminal simplex o


valor da função objectiva será negativo, basta fazer W = -Z para obter o valor mínimo procurado
Wmin.

Exemplo 1.16 Resolver o seguinte problema pelo método simplex de Grande M.

Minimizar W = 30x1+30x2+10x3

Resolução

Maximizar Z = - Minimizar W = -30x1 - 30x2 - 10x3

O modelo depois da introdução das variáveis de folga, excesso e artificiais será :

Maximizar Z = -30x1-30x2 -10x3 + 0x4 + 0x5 –Ma1


Solução: x1 = 4/3; x2 = 0; x3 = 10/3; x4 = 0; x5 = 0; Wmin = - Zmax = 220/3

Exemplo 1.17. Resolver o seguinte problema de programação linear pelo método simplex de
Grande M.

Minimizar W = 15x1 + 12x2

Resolução

Tabela preliminar 1
Solução: X = (8, 2, 0, 8, 0, 0) Wmin = -Zmax = 14

Você também pode gostar