Programação linear

Modelação, formas standard e slack, pivôs de Simplex, viabilidade e certificados por dualidade.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Uma oficina produz quantidades xx e yy de dois produtos divisíveis. O lucro depende das quantidades e as capacidades limitam as combinações possíveis. A programação linear, ou LP, otimiza uma função linear sob restrições lineares, com variáveis reais que podem tomar valores fracionários.

Vamos conservar o mesmo plano desde a formulação até aos pivôs de Simplex e ao certificado dual. Cada transformação tem de preservar as decisões permitidas e o valor do objetivo, para que o certificado final fale do problema original.

Modelar um plano de produção

O lucro por unidade é 3 e 2. A capacidade conjunta é 4 unidades, a capacidade exclusiva do primeiro produto é 2 e a do segundo é 3. O modelo é

max⁡3x+2y\max 3x+2y

sujeito a

x+y≤4,x≤2,y≤3,x,y≥0.x+y\le4,\qquad x\le2,\qquad y\le3,\qquad x,y\ge0.

Se só pudéssemos fabricar produtos inteiros, teríamos de acrescentar integridade, o tema da programação inteira. Uma restrição xy≤4xy\le4 não é linear; uma multiplicação por uma constante, como 2x2x, é.

O conjunto de pontos que respeitam as restrições é a região admissível, uma interseção de semiespaços. É convexa: o segmento entre dois pontos admissíveis também é admissível.

VérticeObjetivo 3x+2y3x+2y
(0,0)(0,0)0
(2,0)(2,0)6
(2,2)(2,2)10
(1,3)(1,3)9
(0,3)(0,3)6

O ótimo é (2,2)(2,2), lucro 10. Numa região admissível não vazia em forma standard, se o objetivo tem ótimo finito, existe uma solução ótima num vértice. Isso não significa que todos os ótimos sejam vértices: uma função paralela a uma face pode ter uma face inteira de ótimos.

Viável, limitado e ótimo são factos diferentes

Um LP pode ser inviável, ter ótimo finito ou ter objetivo ilimitado. As restrições x+y≤1x+y\le1 e x+y≥3x+y\ge3 são incompatíveis, portanto inviáveis.

A região x≥1x\ge1, y≥0y\ge0 é ilimitada. Mesmo assim, minimizar x+yx+y tem ótimo finito 1 em (1,0)(1,0), enquanto maximizar x+yx+y é ilimitado. O tamanho geométrico da região não determina sozinho o comportamento do objetivo.

Se maximizarmos x+yx+y na região do exemplo, todos os pontos do segmento entre (2,2)(2,2) e (1,3)(1,3) atingem 4. Empates não autorizam escolher um ponto fora das restrições.

Forma standard

Usamos a convenção

max⁡cTxsujeito a Ax≤b,x≥0.\max c^Tx\quad\text{sujeito a }Ax\le b,\quad x\ge0.

AA tem mm linhas, uma por restrição, e nn colunas, uma por variável. bb guarda limites e cc coeficientes do objetivo. Para o plano,

A=(111001),b=(423),c=(32).A=\begin{pmatrix}1&1\\1&0\\0&1\end{pmatrix},\quad b=\begin{pmatrix}4\\2\\3\end{pmatrix},\quad c=\begin{pmatrix}3\\2\end{pmatrix}.

Podemos converter outras formas:

  • Minimizar cTxc^Tx equivale a maximizar −cTx-c^Tx.
  • Multiplicar uma desigualdade aTx≥ba^Tx\ge b por −1-1 dá −aTx≤−b-a^Tx\le-b.
  • Uma igualdade é o par de desigualdades opostas.
  • Uma variável livre pode ser escrita como xj=xj+−xj−x_j=x_j^+-x_j^-, com as duas parcelas não negativas.

Por exemplo, minimizar 2x−y2x-y sujeito a x+y=3x+y=3, y≥1y\ge1 e x≥0x\ge0, com yy livre de restrição de sinal explícita, pode escrever-se com y=y+−y−y=y^+-y^- e y+,y−≥0y^+,y^-\ge0:

max⁡−2x+y+−y−,\max -2x+y^+-y^-, x+y+−y−≤3,−x−y++y−≤−3,−y++y−≤−1.x+y^+-y^-\le3,\quad -x-y^++y^-\le-3,\quad -y^++y^-\le-1.

A igualdade deu duas desigualdades e o limite inferior mudou de sinal. Uma solução original dá uma solução nova tomando y+=max⁡(y,0)y^+=\max(y,0) e y−=max⁡(−y,0)y^-=\max(-y,0). Uma solução nova recupera y=y+−y−y=y^+-y^-. O objetivo novo é o negativo do original, logo maximizar um minimiza o outro.

A forma standard não exige b≥0b\ge0; esse sinal é relevante para a solução inicial de Simplex.

Forma slack e solução básica

Acrescentamos variáveis de folga não negativas:

s1=4−x−y,s2=2−x,s3=3−y.s_1=4-x-y,\qquad s_2=2-x,\qquad s_3=3-y.

Inicialmente, x,yx,y são não básicas e fixadas a zero; as folgas são básicas e ficam (4,2,3)(4,2,3). Esta solução básica é admissível porque as folgas são não negativas. Os conjuntos de variáveis básicas BB e não básicas NN mudam em cada pivô; não são propriedades permanentes de uma variável.

Na forma slack, o objetivo é um valor constante mais uma combinação das não básicas. Aumentar uma não básica com coeficiente positivo melhora o objetivo num problema de maximização, até alguma básica chegar a zero.

Dois pivôs de Simplex

Começamos com z=3x+2yz=3x+2y. Fazemos xx entrar. Para aumentar xx, as restrições com coeficiente que o limita dão razões 4/14/1 para s1s_1 e 2/12/1 para s2s_2. A menor é 2, portanto s2s_2 sai. A folga s3=3−ys_3=3-y não limita xx, porque o coeficiente de xx nessa linha é 00; razões só usam linhas onde a entrada tem coeficiente positivo. Se nenhuma linha limitasse xx, o objetivo seria ilimitado nessa direção.

Isola x=2−s2x=2-s_2 e substitui em todas as equações:

s1=2+s2−y,s3=3−y,z=6−3s2+2y.s_1=2+s_2-y,\qquad s_3=3-y,\qquad z=6-3s_2+2y.

Com não básicas s2=y=0s_2=y=0, temos x=2x=2, s1=2s_1=2, s3=3s_3=3, objetivo 6. Agora yy tem coeficiente positivo. As razões que limitam o aumento são 2 por s1s_1 e 3 por s3s_3. s1s_1 sai e yy entra:

y=2+s2−s1,x=2−s2,y=2+s_2-s_1,\qquad x=2-s_2, s3=1−s2+s1,z=10−s2−2s1.s_3=1-s_2+s_1,\qquad z=10-s_2-2s_1.

Com s1=s2=0s_1=s_2=0, obtemos x=y=2x=y=2, s3=1s_3=1 e z=10z=10. Todos os coeficientes das não básicas no objetivo são não positivos, e como são variáveis não negativas, não há solução admissível com objetivo superior a 10 neste dicionário.

Regra da razão e casos especiais

A variável que sai minimiza a razão entre valor atual da básica e o coeficiente positivo que limita a entrada. Ignora coeficientes que não limitam um aumento. Se nenhum limita uma variável que melhora o objetivo, podemos aumentá-la sem fim e o objetivo é ilimitado.

Razões empatadas podem produzir vários pivôs válidos. Uma básica já a zero pode sair sem melhorar o objetivo, um pivô degenerado. Isso pode originar ciclos com certas regras. A regra de Bland escolhe a variável elegível de menor índice para entrar e, nos empates da razão, a de menor índice para sair; evita ciclos. Simplex é muito usado, mas tem pior caso exponencial. Existem algoritmos polinomiais para LP, por exemplo métodos de ponto interior, sob o modelo de entrada racional.

Encontrar uma solução inicial

Se algum termo independente for negativo, fixar as não básicas a zero pode dar uma folga negativa. Isso não prova que o LP é inviável: prova apenas que esta base inicial não serve.

Uma fase I introduz variáveis artificiais e otimiza um objetivo auxiliar que mede a violação necessária para obter uma base admissível. Se o melhor ainda exigir uma quantidade artificial positiva, o problema original é inviável. Se a quantidade artificial pode chegar a zero, retira as artificiais, ajusta a base quando necessário e repõe o objetivo original para a fase II.

Por exemplo, x≥2x\ge2 escreve-se −x≤−2-x\le-2. A folga inicial seria s=x−2=−2s=x-2=-2 em x=0x=0, mas x=2x=2 é admissível. Declarar inviabilidade só pelo termo negativo rejeitaria esta solução válida.

Para iniciar a fase I deste exemplo, escreve x−s+a=2x-s+a=2, com x,s,a≥0x,s,a\ge0 e artificial aa. A base a=2a=2, com x=s=0x=s=0, é admissível para o problema auxiliar que minimiza aa. Aumentar xx até 2 leva aa a zero; retirando aa, fica x−s=2x-s=2, uma base admissível para o problema original. Se o mínimo auxiliar fosse positivo, não conseguiríamos satisfazer a igualdade sem a artificial.

Dualidade

Ao primal max⁡cTx\max c^Tx com Ax≤bAx\le b, x≥0x\ge0, corresponde o dual

min⁡bTysujeito a ATy≥c,y≥0.\min b^Ty\quad\text{sujeito a }A^Ty\ge c,\quad y\ge0.

As variáveis duais podem ser vistas como preços dos recursos. O preço combinado dos recursos necessários a um produto deve cobrir o seu lucro, criando um limite superior para o lucro total.

Para qualquer primal admissível xx e dual admissível yy,

cTx≤yTAx≤yTb.c^Tx\le y^TAx\le y^Tb.

A primeira desigualdade usa ATy≥cA^Ty\ge c e x≥0x\ge0; a segunda usa Ax≤bAx\le b e y≥0y\ge0. Esta é a dualidade fraca. Se encontramos soluções admissíveis com os mesmos objetivos, ambas são ótimas. A dualidade forte garante a igualdade dos ótimos quando há ótimo finito nas condições usuais de LP.

No exemplo, o dual minimiza 4y1+2y2+3y34y_1+2y_2+3y_3, sujeito a y1+y2≥3y_1+y_2\ge3 e y1+y3≥2y_1+y_3\ge2, com yi≥0y_i\ge0. A solução (2,1,0)(2,1,0) dá 10. O primal (x,y)=(2,2)(x,y)=(2,2) também dá 10; isto certifica o ótimo sem depender da sequência de pivôs.

A folga complementar liga restrições e preços: um recurso com folga positiva tem preço dual zero numa solução ótima; uma variável primal positiva exige que a restrição dual correspondente esteja em igualdade. Aqui sobrou uma unidade do terceiro recurso e y3=0y_3=0.

Como verificar um modelo

Substitui a solução em todas as restrições e calcula o objetivo nas unidades originais. Confirma se frações são admissíveis, se limites são superiores ou inferiores e se faltam decisões, como um produto obrigatório ou um custo de ativação. Um solver resolve o modelo fornecido; não deteta por si só que omitiste uma regra do problema.

Exercícios

Escolher quem sai da base

Maximiza 4x+y sujeito a x+y≤5, 2x+y≤6 e x,y≥0. Usa folgas e faz o primeiro pivô com x a entrar. Dá a solução básica resultante e o valor do objetivo.

Pista

As folgas são s1=5-x-y e s2=6-2x-y. Calcula as razões para aumentar x.

Mais uma pista

As razões são 5 e 3, logo s2 sai e x=(6-y-s2)/2.

Solução

A menor razão é 6/2=3 contra 5/1=5, portanto s2 sai. A comparação usa só linhas com coeficiente positivo de x. Temos x=3-y/2-s2/2, s1=2-y/2+s2/2 e z=12-y-2s2. Com não básicas y=s2=0, a solução é x=3, y=0, s1=2 e s2=0, valor 12. Como os coeficientes das não básicas no objetivo são não positivos, este dicionário já certifica o ótimo.

Confere a tua resposta:

  • Usei as razões 5 e 3.
  • Fiz s2 sair e obtive x=3.
  • Derivei z=12-y-2s2 e objetivo 12.

Erros frequentes

Usar o maior quociente violaria uma restrição antes de o atingir. Qualquer não básica com coeficiente positivo pode entrar, mas essa escolha não determina por si só quem sai; é preciso aplicar a razão mínima.

Voltar à explicação
Uma região ilimitada com mínimo finito

Minimiza 2x+y sujeito a x≥3 e y≥0. Dá o ótimo e explica se a região e o objetivo são limitados no sentido necessário à minimização.

Pista

Aumentar qualquer variável não melhora o objetivo.

Solução

O ótimo é (3,0), valor 6. A região é ilimitada, porque podemos aumentar x ou y sem sair dela. O objetivo está limitado inferiormente por 6 e atinge esse limite. A região ilimitada não torna automaticamente o problema de otimização ilimitado.

Erros frequentes

Confundir a região com o sentido de melhoria do objetivo leva a declarar ilimitado um mínimo que existe.

Voltar à explicação
Conferir o valor e o ponto arredondado

Maximiza 3x+2y3x+2y, sujeito a x/2+y≤4x/2+y\le4, 3x/2−y≤23x/2-y\le2 e x,y≥0x,y\ge0. Uma resolução declara que (3,5/2) é o ótimo, com valor 15, e recomenda arredondar para (3,3) na variante inteira. Confere as afirmações. Dá as folgas, prova o ótimo LP e encontra o ótimo inteiro sem escolher apenas o ponto mais próximo.

Solução

As folgas são s1=4−x/2−ys_1=4-x/2-y e s2=2−3x/2+ys_2=2-3x/2+y, ambas não negativas. Em (3,5/2), as duas são zero, mas o objetivo vale 9+5=149+5=14, não 15.

Somar as restrições dá 2x≤62x\le6, logo x≤3x\le3. Pela primeira, y≤4−x/2y\le4-x/2. Assim 3x+2y≤3x+8−x=8+2x≤143x+2y\le3x+8-x=8+2x\le14. O ponto (3,5/2) é admissível e atinge esse limite: é ótimo.

Arredondar para (3,3) dá 3/2+3=9/2>43/2+3=9/2>4 e viola a primeira restrição. Para inteiros, x só pode ser 0,1,2 ou 3. Com x≤2x\le2, o limite 8+2x8+2x não passa de 12. Para x=3, as restrições exigem 5/2≤y≤5/25/2\le y\le5/2, portanto não há y inteiro. O melhor candidato inteiro é (2,3), que dá 12 e cumpre 1+3=41+3=4 e 3−3=0≤23-3=0\le2. O ótimo inteiro é 12.

Confere a tua resposta:

  • Obtive ótimo LP (3,5/2), valor 14.
  • Rejeitei (3,3) pela primeira restrição.
  • Certifiquei o ótimo inteiro (2,3), valor 12.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.