08.02.2015 Views

Programação Linear (e rudimentos de otimização não-linear)

Programação Linear (e rudimentos de otimização não-linear)

Programação Linear (e rudimentos de otimização não-linear)

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Programação <strong>Linear</strong> (e <strong>rudimentos</strong> <strong>de</strong><br />

otimização não <strong>linear</strong>)<br />

notas <strong>de</strong> aula – versão 64<br />

Jerônimo C. Pellegrini<br />

20 <strong>de</strong> <strong>de</strong>zembro <strong>de</strong> 2014<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

ii<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Apresentação<br />

Esta é uma introdução à Otimização, com ênfase em Programação <strong>Linear</strong> e<br />

aplicações, mas expondo também alguns <strong>rudimentos</strong> <strong>de</strong> Otimização Não<br />

<strong>Linear</strong>.<br />

Os pré-requisitos para a leitura são Álgebra <strong>Linear</strong>, para as partes I e II, e<br />

Cálculo em Várias Variáveis para os Capítulos <strong>de</strong> Programação Quadrática<br />

e Otimização não <strong>linear</strong>.<br />

Versão Preliminar<br />

iii


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

iv<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Sumário<br />

Sumário<br />

I Programação <strong>Linear</strong> 1<br />

1 Programação <strong>Linear</strong> 3<br />

1.1 Forma padrão . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

1.2 Interpretação geométrica . . . . . . . . . . . . . . . . . . . . . 7<br />

1.3 Programação fracionária <strong>linear</strong> . . . . . . . . . . . . . . . . . . 10<br />

1.4 Exemplos <strong>de</strong> aplicação . . . . . . . . . . . . . . . . . . . . . . . 10<br />

1.4.1 Mistura ótima . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

1.4.2 Fluxo em re<strong>de</strong>s . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2 Conjuntos Convexos e Soluções Viáveis 17<br />

2.1 Conjuntos convexos . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

2.2 Soluções viáveis para programas <strong>linear</strong>es . . . . . . . . . . . . 25<br />

2.3 Funções Convexas . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

3 O Método Simplex 39<br />

3.1 Exemplo inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />

3.2 Formulação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

3.3 Intuição geométrica . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

3.4 Coeficientes reduzidos <strong>de</strong> custo . . . . . . . . . . . . . . . . . 44<br />

3.4.1 Primeira <strong>de</strong>finição . . . . . . . . . . . . . . . . . . . . . 44<br />

3.4.2 Segunda <strong>de</strong>finição . . . . . . . . . . . . . . . . . . . . . 46<br />

3.4.3 Representação no tableau . . . . . . . . . . . . . . . . 47<br />

3.4.4 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

3.5 A operação <strong>de</strong> mudança <strong>de</strong> base . . . . . . . . . . . . . . . . . 49<br />

3.6 Que variável entra na base . . . . . . . . . . . . . . . . . . . . 49<br />

3.7 Que variável sai da base . . . . . . . . . . . . . . . . . . . . . . 52<br />

Versão Preliminar<br />

v<br />

v


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

vi<br />

SUMÁRIO<br />

3.8 Método Simplex (algoritmo) . . . . . . . . . . . . . . . . . . . . 53<br />

3.9 Obtendo uma solução viável básica inicial . . . . . . . . . . . 56<br />

3.9.1 O método das duas fases . . . . . . . . . . . . . . . . . 56<br />

3.9.2 O método do M gran<strong>de</strong> . . . . . . . . . . . . . . . . . . 59<br />

3.10 Minimização e <strong>de</strong>sigualda<strong>de</strong>s do tipo ≥ . . . . . . . . . . . . . 61<br />

3.11 Soluções <strong>de</strong>generadas . . . . . . . . . . . . . . . . . . . . . . . 63<br />

3.12 Método Simplex Revisado . . . . . . . . . . . . . . . . . . . . . 67<br />

4 Dualida<strong>de</strong> 73<br />

4.1 Interpretações do dual . . . . . . . . . . . . . . . . . . . . . . . 75<br />

4.1.1 Interpretação operacional . . . . . . . . . . . . . . . . 75<br />

4.1.2 Interpretação econômica . . . . . . . . . . . . . . . . . 75<br />

4.2 Lema <strong>de</strong> Farkas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />

4.3 Teoremas <strong>de</strong> dualida<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . 80<br />

4.4 Algoritmo simplex dual . . . . . . . . . . . . . . . . . . . . . . 84<br />

5 Análise <strong>de</strong> Sensibilida<strong>de</strong> 89<br />

5.1 Mudanças no objetivo . . . . . . . . . . . . . . . . . . . . . . . 89<br />

5.2 Mudanças no vetor b . . . . . . . . . . . . . . . . . . . . . . . . 92<br />

5.3 Mudanças nos coeficientes <strong>de</strong> A . . . . . . . . . . . . . . . . . 93<br />

5.3.1 Caso (i) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

5.3.2 Caso (ii) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

5.4 Nova variável . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />

5.5 Nova restrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />

6 Outros Métodos 97<br />

6.1 O método do elipsoi<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . 97<br />

6.1.1 O algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . 97<br />

6.1.2 Resolvendo problemas <strong>de</strong> programação <strong>linear</strong> . . . . 101<br />

6.2 Pontos interiores . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

6.2.1 Affine scaling . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

6.2.2 Métodos <strong>de</strong> barreira . . . . . . . . . . . . . . . . . . . . 108<br />

II Aplicações 111<br />

Versão Preliminar<br />

7 Problemas <strong>de</strong> Transporte 113<br />

7.1 Solução básica inicial . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

7.2 Solução inteira . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

7.3 Algoritmo para solução do problema <strong>de</strong> transporte . . . . . 120


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

SUMÁRIO<br />

vii<br />

7.4 Bases <strong>de</strong>generadas . . . . . . . . . . . . . . . . . . . . . . . . . 121<br />

7.5 O problema <strong>de</strong> atribuição . . . . . . . . . . . . . . . . . . . . . 121<br />

8 Teoria dos Jogos 125<br />

8.1 Jogos <strong>de</strong> soma zero . . . . . . . . . . . . . . . . . . . . . . . . . 125<br />

8.2 Estratégia mista . . . . . . . . . . . . . . . . . . . . . . . . . . . 127<br />

8.2.1 Formulação como programa <strong>linear</strong> . . . . . . . . . . . 127<br />

9 Controle Discreto 131<br />

9.1 Programação Dinâmica . . . . . . . . . . . . . . . . . . . . . . . 131<br />

9.1.1 Aplicabilida<strong>de</strong> do Algoritmo . . . . . . . . . . . . . . . 133<br />

9.2 Processo Markoviano <strong>de</strong> Decisão . . . . . . . . . . . . . . . . . 133<br />

9.3 Formulação como Programa <strong>Linear</strong> . . . . . . . . . . . . . . . 135<br />

9.4 Horizonte infinito e convergência . . . . . . . . . . . . . . . . 135<br />

9.4.1 Convergência . . . . . . . . . . . . . . . . . . . . . . . . 136<br />

9.5 Variantes <strong>de</strong> MDPs . . . . . . . . . . . . . . . . . . . . . . . . . . 137<br />

9.5.1 Tempo contínuo . . . . . . . . . . . . . . . . . . . . . . 137<br />

9.5.2 Parâmetros imprecisos . . . . . . . . . . . . . . . . . . 139<br />

9.5.3 Observabilida<strong>de</strong> parcial . . . . . . . . . . . . . . . . . . 139<br />

III Tópicos Relacionados 143<br />

10 O Algoritmo Primal-Dual e suas Aplicações 145<br />

10.1 O algoritmo primal-dual . . . . . . . . . . . . . . . . . . . . . . 145<br />

10.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145<br />

11 Programação Inteira 147<br />

11.1 Planos <strong>de</strong> corte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147<br />

11.2 Branch-and-bound . . . . . . . . . . . . . . . . . . . . . . . . . 152<br />

11.3 Variantes: branch-and-cut, branch-and-price . . . . . . . . 154<br />

11.4 Unimodularida<strong>de</strong> e poliedros integrais . . . . . . . . . . . . . 154<br />

12 Programação Quadrática 157<br />

12.1 Problemas mo<strong>de</strong>lados como programas quadráticos . . . . 157<br />

12.2 Representação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159<br />

12.3 Soluções ótimas para programas quadráticos . . . . . . . . . 161<br />

12.4 Método <strong>de</strong> Beale . . . . . . . . . . . . . . . . . . . . . . . . . . . 162<br />

12.5 Pontos interiores . . . . . . . . . . . . . . . . . . . . . . . . . . 169<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

viii<br />

SUMÁRIO<br />

13 Otimização Não <strong>Linear</strong> 171<br />

13.1 Otimização sem restrições . . . . . . . . . . . . . . . . . . . . . 172<br />

13.1.1 Condições <strong>de</strong> otimalida<strong>de</strong> . . . . . . . . . . . . . . . . 173<br />

13.1.2 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . 177<br />

13.2 Otimização com restrições . . . . . . . . . . . . . . . . . . . . 177<br />

13.2.1 O Lagrangeano . . . . . . . . . . . . . . . . . . . . . . . 178<br />

13.2.2 Dualida<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . 179<br />

13.2.3 Condições <strong>de</strong> otimalida<strong>de</strong> . . . . . . . . . . . . . . . . 179<br />

13.2.4 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . 182<br />

13.3 Otimização <strong>linear</strong> e dualida<strong>de</strong> . . . . . . . . . . . . . . . . . . 182<br />

IV Apêndices 183<br />

A Teoria da Utilida<strong>de</strong> 185<br />

B Respostas e Dicas 187<br />

Ficha Técnica 193<br />

Bibliografia 195<br />

Índice Remissivo 200<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Notação<br />

Negrito é usado para vetores, inclusive colunas <strong>de</strong> matrizes, quando tratadas<br />

isoladamente.<br />

arg max i {. . .} é o índice, <strong>de</strong>ntre todos os i, que <strong>de</strong>termina o máximo do<br />

conjunto (usamos arg min <strong>de</strong> forma análoga).<br />

A notação ⌊x⌋ é para “chão <strong>de</strong> x”, ou “maior inteiro menor ou igual a x”.<br />

Similarmente, ⌈x⌉ é usado para o conceito simétrico (menor inteiro maior<br />

ou igual a x, ou “teto <strong>de</strong> x”) 1 .<br />

É usada a notação “s.a.” para “sujeito a”.<br />

Neste texto, o índice j é usado para colunas da matriz A, que <strong>de</strong>screve<br />

as restrições do programa <strong>linear</strong>. Neste contexto, uso “j ≤ m” e “j > m”<br />

como formas abreviadas <strong>de</strong> “j pertencente à base” e “j fora da base”.<br />

Versão Preliminar<br />

1 O leitor possivelmente conhece a notação [x] e ]x[.<br />

1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2 SUMÁRIO<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Parte I<br />

Programação <strong>Linear</strong><br />

Versão Preliminar<br />

1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 1<br />

Programação <strong>Linear</strong><br />

“Problema <strong>de</strong> programação <strong>linear</strong>” é o nome dado a alguns problemas <strong>de</strong><br />

otimização. Um problema <strong>de</strong>ste tipo consiste em encontrar o melhor valor<br />

possível para uma função <strong>linear</strong> <strong>de</strong> n variáveis respeitando uma série <strong>de</strong><br />

restrições, <strong>de</strong>scritas como <strong>de</strong>sigualda<strong>de</strong>s <strong>linear</strong>es.<br />

Como um exemplo inicial, suponha que uma fábrica possa produzir<br />

dois produtos diferentes: jaquetas e calças <strong>de</strong> poliéster. Cada lote <strong>de</strong> jaquetas<br />

resulta em lucro <strong>de</strong> 500 para a empresa, e cada lote <strong>de</strong> calças resulta<br />

em lucro <strong>de</strong> 700.<br />

• Cada lote <strong>de</strong> jaquetas custa 10, e cada lote <strong>de</strong> calças custa 15. O orçamento<br />

mensal da empresa que po<strong>de</strong> ser <strong>de</strong>stinado à produção é<br />

igual a 400. O lucro só é realizado muito mais tar<strong>de</strong>, e cada lote <strong>de</strong>ve<br />

ser pago antes da produção iniciar (isso significa que há um limite<br />

para a quantida<strong>de</strong> <strong>de</strong> lotes produzidos em um mês).<br />

• Cada lote <strong>de</strong> jaquetas leva um dia para ser produzido, e cada lote <strong>de</strong><br />

calças precisa <strong>de</strong> dois dias. A fábrica tem 22 dias por mês disponíveis<br />

para a produção.<br />

• A empresa tem um contrato com o governo que a obriga a produzir<br />

no mínimo 5 lotes <strong>de</strong> jaquetas por mês.<br />

Versão Preliminar<br />

• Além disso, um contrato <strong>de</strong> licenciamento <strong>de</strong> patente limita a produção<br />

<strong>de</strong> calças a 10 lotes por mês.<br />

Passamos agora à mo<strong>de</strong>lagem <strong>de</strong>ste problema: encontraremos uma<br />

<strong>de</strong>scrição formal <strong>de</strong>le, que facilitará a obtenção da solução.<br />

3


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

4 CAPÍTULO 1. PROGRAMAÇÃO LINEAR<br />

A função 500x + 700y expressa o lucro <strong>de</strong> x lotes <strong>de</strong> jaquetas e y lotes<br />

<strong>de</strong> calças. Queremos encontrar as quantida<strong>de</strong>s <strong>de</strong> lotes – ou seja, os valore<br />

sx e y – para os quais esta função atinge seu máximo, obe<strong>de</strong>cendo as<br />

seguintes restrições:<br />

• 10x + 15y ≤ 400 (o custo da produção não ultrapassa 400)<br />

• x + 2y ≤ 22 (a quantida<strong>de</strong> <strong>de</strong> dias usados não ultrapassa 22)<br />

• x ≥ 5 (pelo menos cinco lotes <strong>de</strong> jaquetas)<br />

• y ≤ 10 (no máximo <strong>de</strong>z lotes <strong>de</strong> calças)<br />

Como tanto a função objetivo (500x + 700y, a ser maximizada) como as<br />

restrições são funções <strong>linear</strong>es nas variáveis x e y, dizemos que este é um<br />

problema <strong>de</strong> otimização <strong>linear</strong> (ou <strong>de</strong> programação <strong>linear</strong>). Na maior parte<br />

<strong>de</strong>ste livro, trataremos <strong>de</strong> problemas <strong>de</strong>ste tipo. Em alguns Capítulos abordaremos<br />

também problemas <strong>de</strong> otimização não <strong>linear</strong>, on<strong>de</strong> a função objetivo<br />

e as restrições não precisam ser funções <strong>linear</strong>es.<br />

Este é um exemplo bastante prático e aplicado. Há outros problemas,<br />

completamente diferentes <strong>de</strong>ste, que po<strong>de</strong>m ser mo<strong>de</strong>lados como programação<br />

<strong>linear</strong> – inclusive problemas mais abstratos e sem uma ligação<br />

aparente tão clara com aplicações práticas. Mais exemplos <strong>de</strong> aplicação<br />

mo<strong>de</strong>lagem serão dados no final <strong>de</strong>ste Capítulo.<br />

Definição 1.1 (problema <strong>de</strong> programação <strong>linear</strong>). Um problema <strong>de</strong> programação<br />

<strong>linear</strong> consiste <strong>de</strong> uma função objetivo, <strong>linear</strong> em n variáveis, e um<br />

conjunto <strong>de</strong> restrições, representadas por m <strong>de</strong>sigualda<strong>de</strong>s (ou igualda<strong>de</strong>s)<br />

<strong>linear</strong>es.<br />

Uma solução para o problema é um vetor em R n . Uma solução é viável<br />

se satisfaz as restrições, e inviável caso contrário.<br />

Um problema po<strong>de</strong> ser <strong>de</strong> maximização ou <strong>de</strong> minimização. A solução<br />

ótima para o problema é a solução viável que dá o maior valor possível à<br />

função objetivo, quando o problema é <strong>de</strong> maximização, ou aquela que dá<br />

o menor valor ao objetivo, se o problema é <strong>de</strong> minimização.<br />

<br />

Versão Preliminar<br />

Problemas <strong>de</strong> programação <strong>linear</strong> são normalmente <strong>de</strong>scritos em uma<br />

forma padrão, <strong>de</strong>talhada na próxima seção.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

1.1. FORMA PADRÃO 5<br />

1.1 Forma padrão<br />

Na maior parte do tempo, presumiremos que o programa <strong>linear</strong> está na<br />

seguinte forma.<br />

max c 1 x 1 + c 2 x 2 + · · · + c n x n<br />

s.a. : a 11 x 1 + a 12 x 2 + · · · + a 1n x n = b 1<br />

a 21 x 1 + a 22 x 2 + · · · + a 2n x n = b 2<br />

a m1 x 1 + a m2 x 2 + · · · + a mn x n = b m<br />

e x i ≥ 0 para alguns i.<br />

Mostramos agora como transformar qualquer programa <strong>linear</strong> em outro<br />

equivalente na forma padrão.<br />

• Maximização/minimização: notamos que min c T x é o mesmo que<br />

max −c T x.<br />

• Desigualda<strong>de</strong>s: consi<strong>de</strong>re a restrição<br />

a i1 x 1 + a i2 x 2 + · · · + a in x n ≥ b i .<br />

Esta <strong>de</strong>sigualda<strong>de</strong> po<strong>de</strong> ser transformada em<br />

a i1 x 1 + a i2 x 2 + · · · + a in x n − s i = b i ,<br />

.<br />

s i ≥ 0<br />

Chamamos s i <strong>de</strong> variável <strong>de</strong> folga quando a <strong>de</strong>sigualda<strong>de</strong> vale com o<br />

lado direito igual ao esquerdo, temos s i = 0. Quando o lado direito<br />

da <strong>de</strong>sigualda<strong>de</strong> é menor que o esquerdo, temos s i > 0. Da mesma<br />

forma, po<strong>de</strong>mos transformar<br />

em<br />

a i1 x 1 + a i2 x 2 + · · · + a in x n ≤ b i .<br />

Versão Preliminar<br />

a i1 x 1 + a i2 x 2 + · · · + a in x n + u i = b i .<br />

• Variáveis com valores negativos: se, em uma solução, uma variável x i<br />

pu<strong>de</strong>r ser negativa, usamos duas variáveis positivas para representála.<br />

Fazemos x i = p − q, com p, q ≥ 0.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

6 CAPÍTULO 1. PROGRAMAÇÃO LINEAR<br />

Exemplo 1.2. Ilustramos as técnicas <strong>de</strong>scritas transformando o seguinte<br />

problema para a forma padrão.<br />

min x 1 − 3x 2 + 5x 3<br />

s.a. : 4x 1 + x 2 ≥ 10<br />

x 1 − 3x 3 ≤ 20<br />

x 3 + x 2 = 15<br />

x 1 , x 2 ≥ 0<br />

Para transformar o problema <strong>de</strong> minimização em maximização, multiplicamos<br />

a função objetivo por −1.<br />

max −x 1 + 3x 2 − 5x 3<br />

Incluímos uma variável nova a cada <strong>de</strong>sigualda<strong>de</strong>, obtendo<br />

4x 1 + x 2 − s 1 = 10<br />

x 1 − 3x 3 + s 2 = 20<br />

Finalmente, <strong>de</strong>terminamos x 3 = v − w, com v, w ≥ 0. O programa <strong>linear</strong> é<br />

então<br />

max − x 1 + 3x 2 − 5v + 5w<br />

s.a. : 4x 1 + x 2 − s 1 = 10<br />

x 1 − 3v + 3w + s 2 = 20<br />

v − w + x 2 = 15<br />

x i , v, w ≥ 0<br />

Também será conveniente representar programas <strong>linear</strong>es usando notação<br />

matricial. Claramente, um problema<br />

max c 1 x 1 + c 2 x 2 + · · · + c n x n<br />

s.a. : a 11 x 1 + a 12 x 2 + · · · + a 1n x n = b 1<br />

Versão Preliminar<br />

a 21 x 1 + a 22 x 2 + · · · + a 2n x n = b 2<br />

a m1 x 1 + a m2 x 2 + · · · + a mn x n = b m<br />

x i ≥ 0<br />

.<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

1.2. INTERPRETAÇÃO GEOMÉTRICA 7<br />

po<strong>de</strong> ser <strong>de</strong>scrito <strong>de</strong> forma mais compacta como<br />

max c T x<br />

s.a. : Ax = b<br />

x ≥ 0<br />

Exemplo 1.3. Para <strong>de</strong>screver o problema do exemplo 1.2, renomeamos as<br />

variáveis<br />

x 1 → y 1<br />

x 2 → y 2<br />

v → y 3<br />

w → y 4<br />

s 1 → y 5<br />

s 2 → y 6 ,<br />

e o programa <strong>linear</strong> po<strong>de</strong> ser reescrito como max c T y, sujeito a Ay = b,<br />

y ≥ 0, com<br />

y = ( y 1 y 2 y 3 y 4 y 5 y 6<br />

) T<br />

c = ( −1 3 −5 5 0 0 ) T<br />

b = ( 10 20 15 ) T<br />

1.2 Interpretação geométrica<br />

⎛<br />

4 1 0 0 −1<br />

⎞<br />

0<br />

A = ⎝1 0 −3 3 0 1⎠<br />

0 1 1 −1 0 0<br />

Nesta seção damos a interpretação geométrica <strong>de</strong> problemas <strong>de</strong> programação<br />

<strong>linear</strong>, e um método para solução <strong>de</strong> programação <strong>linear</strong> por inspeção<br />

do gráfico. Este método não <strong>de</strong>ve ser visto como ferramenta prática,<br />

já que só é viável para problemas com duas variáveis e poucas restrições.<br />

Além disso, Normalmente qualquer ferramenta computacional produzirá<br />

resultados mais rapidamente do que este método. Ele é, no entanto, útil<br />

para aprofundar a compreensão do que é um problema <strong>de</strong> programação<br />

<strong>linear</strong> e quais são suas soluções.<br />

A função objetivo <strong>de</strong>fine um hiperplano (uma reta em R 2 , um plano em<br />

R 3 ). Note que queremos maximizá-la (ou minimizá-la), portanto não nos<br />

fará diferença se a modificarmos adicionando uma constante: maximizar<br />

Versão Preliminar<br />

z = 2c 1 + 3c 2<br />

é o memso que maximizar<br />

z ′ = 2c 1 + 3c 2 + 50.<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

8 CAPÍTULO 1. PROGRAMAÇÃO LINEAR<br />

Geometricamente a função objetivo, como a <strong>de</strong>finimos, passa pela origem.<br />

Quando somamos a ela um valor constante, ela se afasta dali.<br />

Cada restrição <strong>de</strong>fine um semiespaço: em R 2 , um dos lados <strong>de</strong> uma reta;<br />

em R 3 , um dos lados <strong>de</strong> um plano.<br />

Queremos o maior valor da função objetivo <strong>de</strong>ntro da região <strong>de</strong>finida pelas<br />

restrições. A pequena seta na próxima figura mostra o gradiente da<br />

função objetivo.<br />

Se nos movermos, a partir da reta <strong>de</strong>finida pela função objetivo, na direção<br />

<strong>de</strong> seu gradiente, mantendo-nos <strong>de</strong>ntro da região viável, conseguiremos<br />

soluções cada vez melhores. Isso é o mesmo que mover a reta <strong>de</strong>finida<br />

pela função objetivo na direção <strong>de</strong> seu gradiente, até que não possa mais<br />

ser “empurrada”. O último ponto em que ela tocar a região viável é a solução<br />

ótima para o problema.<br />

Ainda po<strong>de</strong>mos fazer outra observação importante: vemos claramente<br />

que se uma solução ótima existe, ela ocorrerá em um dos pontos extremos<br />

(“cantos”) da região viável – ou seja, na interseção <strong>de</strong> duas restrições.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

1.2. INTERPRETAÇÃO GEOMÉTRICA 9<br />

Disso po<strong>de</strong>mos extrair um método para obter a solução ótima <strong>de</strong> programas<br />

<strong>linear</strong>es por inspeção do gráfico, <strong>de</strong>s<strong>de</strong> que tenhamos apenas duas<br />

variáveis (o que não é comum em problemas reais).<br />

Exemplo 1.4. Resolveremos o seguinte problema <strong>de</strong> programação <strong>linear</strong>:<br />

max 2x 1 + x 2<br />

s.a.: 3x 1 + x 2 ≤ 15<br />

x 2 ≤ 6<br />

x 1 + x 2 ≤ 7<br />

x 1 ≤ 9/2<br />

x ≥ 0<br />

Plotamos apenas as restrições, e verificamos que formam uma região fechada<br />

no plano.<br />

16<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

x 2<br />

A<br />

B<br />

0 1 2 3 4 E 5<br />

Notamos que há poucas restrições, portanto po<strong>de</strong>mos simplesmente calcular<br />

os pontos on<strong>de</strong> as retas se interceptam e verificar qual <strong>de</strong>sses pontos<br />

nos dá o maior valor para a função objetivo.<br />

x 1<br />

ponto valor<br />

A = (0, 6) 6<br />

B = (1, 6) 8<br />

C = (4, 3) 11<br />

D = (9/2, 3/2) 10.5<br />

E = (9/2, 0) 9<br />

C<br />

Versão Preliminar<br />

Verificamos que o ponto C nos dá o maior valor, portanto a solução (4, 3)<br />

é ótima, com valor 11.<br />

◭<br />

D


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

10 CAPÍTULO 1. PROGRAMAÇÃO LINEAR<br />

1.3 Programação fracionária <strong>linear</strong><br />

No problema a seguir a função objetivo não é <strong>linear</strong>:<br />

min cT x + d<br />

e T x + f<br />

s.a.: Ax ≥ b<br />

x ≥ 0<br />

Este problema po<strong>de</strong>, no entanto, ser transformado em um programa <strong>linear</strong>.<br />

O problema a seguir é equivalente ao primeiro:<br />

Versão Preliminar<br />

(1.1)<br />

min c T y + dz (1.2)<br />

s.a.: Ay − bz ≥ 0<br />

e T y + fz = 1<br />

y ≥ 0<br />

on<strong>de</strong> as variáveis são y e z.<br />

Po<strong>de</strong>-se mostrar que a solução ótima para o problema 1.2 é ótima para 1.1,<br />

<strong>de</strong>finindo<br />

on<strong>de</strong> x/k é evi<strong>de</strong>ntemente (1/k)x.<br />

x<br />

y =<br />

e T x + f<br />

1<br />

z =<br />

e T x + f ,<br />

1.4 Exemplos <strong>de</strong> aplicação<br />

Damos aqui alguns exemplos <strong>de</strong> mo<strong>de</strong>lagem <strong>de</strong> problemas como Programação<br />

<strong>Linear</strong>.<br />

1.4.1 Mistura ótima<br />

É comum que se queira <strong>de</strong>terminar a proporção ótima <strong>de</strong> mistura <strong>de</strong> diferentes<br />

ingredientes, insumos, recursos, etc, a fim <strong>de</strong> otimizar alguma função.<br />

Dizemos que estes são problemas <strong>de</strong> mistura ótima.<br />

Exemplo 1.5.<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

1.4. EXEMPLOS DE APLICAÇÃO 11<br />

1.4.2 Fluxo em re<strong>de</strong>s<br />

Tratamos nesta seção <strong>de</strong> uma aplicação on<strong>de</strong> a correspondência entre os<br />

objetos mo<strong>de</strong>lados e as variáveis do programa <strong>linear</strong> não são tão imediatamente<br />

óbvias como no caso <strong>de</strong> mistura ótima.<br />

Informalmente, uma re<strong>de</strong> é semelhante a um conjunto <strong>de</strong> tubos por<br />

on<strong>de</strong> escoamos algum fluido. Queremos <strong>de</strong>cidir quanto <strong>de</strong> fluido <strong>de</strong>vemos<br />

passar em cada tubo a fim <strong>de</strong> maximizar o fluxo entre dois pontos.<br />

Para <strong>de</strong>finir re<strong>de</strong>s <strong>de</strong> fluxo com mais rigor, precisaremos <strong>de</strong>finir grafos dirigidos.<br />

Um grafo é um conjunto <strong>de</strong> nós (ou “vértices”) ligado por arestas. Usamos<br />

grafos, por exemplo, para representar locais e caminhos entre eles.<br />

Definição 1.6 (grafo dirigido). Um grafo direcionado consiste <strong>de</strong> um conjunto<br />

não vazio <strong>de</strong> vértices V e um conjunto <strong>de</strong> arestas E. O conjunto <strong>de</strong><br />

arestas representa ligações entre os vértices, <strong>de</strong> forma que E ⊆ V 2 . Denotamos<br />

por (u, v) a aresta que leva do vértice u ao vértice v.<br />

Em um grafo com peso nas arestas, cada aresta tem um valor associado,<br />

dado por uma função w : E → R.<br />

<br />

Exemplo 1.7. A seguir mostramos um grafo e sua representação <strong>de</strong> um<br />

grafo como diagrama.<br />

V = {a, b, c, d, e}<br />

{ }<br />

(a, b), (b, c), (c, a)<br />

E =<br />

(d, c), (d, e), (a, e)<br />

a<br />

b<br />

c<br />

Note que a disposição dos vértices e arestas no diagrama é arbitrária. O<br />

grafo seria o mesmo se movêssemos estes vértices e arestas <strong>de</strong> lugar, mantendo<br />

as ligações entre eles.<br />

◭<br />

Exemplo 1.8. A seguir mostramos um grafo com pesos nas arestas<br />

e<br />

d<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

12 CAPÍTULO 1. PROGRAMAÇÃO LINEAR<br />

b<br />

a<br />

5<br />

c<br />

8<br />

2<br />

3<br />

1<br />

Definição 1.9 (Re<strong>de</strong> <strong>de</strong> fluxo). Uma re<strong>de</strong> <strong>de</strong> fluxo é um grafo dirigido acíclico<br />

on<strong>de</strong> são i<strong>de</strong>ntificados dois vértices: um é a fonte e o outro é o <strong>de</strong>stino.<br />

Não há arestas chegando à fonte, e não há arestas saindo do <strong>de</strong>stino.<br />

O peso em cada aresta representa uma capacida<strong>de</strong>.<br />

Um fluxo em uma re<strong>de</strong> é uma atribuição <strong>de</strong> um número (o “fluxo”) a<br />

cada aresta (o fluxo <strong>de</strong>ve ser menor ou igual à capacida<strong>de</strong> da aresta). <br />

Um problema <strong>de</strong> fluxo em re<strong>de</strong> consiste em encontrar, em uma re<strong>de</strong>,<br />

<strong>de</strong>ntre todos os fluxos possíveis, aquele com maior valor total.<br />

Seja x ij o fluxo do vértice v i para o vértice v j .<br />

O fluxo entrando em um nó i <strong>de</strong>ve ser igual ao fluxo saindo <strong>de</strong>le.<br />

∑<br />

x ji = ∑<br />

j<br />

j<br />

Os fluxos saindo da fonte e chegando ao <strong>de</strong>stino são iguais.<br />

∑<br />

x jd = ∑<br />

j<br />

j<br />

Versão Preliminar<br />

O fluxo em uma aresta <strong>de</strong>ve ser menor ou igual que a capacida<strong>de</strong> da aresta.<br />

x ij ≤ w ij<br />

Concluímos portanto que o fluxo ótimo na re<strong>de</strong> é dado pela solução ótima<br />

x ij<br />

x sj<br />

d<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

1.4. EXEMPLOS DE APLICAÇÃO 13<br />

do problema <strong>de</strong> programação <strong>linear</strong> a seguir.<br />

max ∑ x ij<br />

∑<br />

s.a. : x ji − ∑ x ij = 0<br />

j j<br />

∑<br />

x jd − ∑ x sj = 0<br />

j<br />

j<br />

x ij ≤ w ij<br />

x ij ≥ 0<br />

Exemplo 1.10. Consi<strong>de</strong>re a re<strong>de</strong> <strong>de</strong> fluxo a seguir.<br />

s<br />

5<br />

4<br />

v 1<br />

v 3<br />

5<br />

3 4<br />

v 4<br />

1 3<br />

3 3<br />

2<br />

v 2<br />

v 5<br />

Versão Preliminar<br />

Sua solução ótima é também a solução ótima do programa <strong>linear</strong> a seguir<br />

d<br />

(∀i)


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

14 CAPÍTULO 1. PROGRAMAÇÃO LINEAR<br />

(para simplificar a notação, fazemos x 0 = s e x 6 = d.<br />

Notas<br />

max c T x<br />

s.a. : x 01 − x 10 = 0<br />

x 12 − x 21 = 0<br />

.<br />

x 56 − x 65 = 0<br />

x 01 + x 02 − x 36 − x 46 − x 56 = 0<br />

x 01 ≤ 5<br />

x 02 ≤ 4<br />

x 13 ≤ 5<br />

x 24 ≤ 3<br />

x 25 ≤ 2<br />

x 32 ≤ 1<br />

x 36 ≤ 4<br />

x 43 ≤ 3<br />

x 46 ≤ 3<br />

x 56 ≤ 3<br />

x ≥ 0<br />

Os exemplos dados neste Capítulo não foram apresentados <strong>de</strong> forma <strong>de</strong>talhada;<br />

sua função aqui é apenas ilustrar a utilida<strong>de</strong> da mo<strong>de</strong>lagem <strong>de</strong><br />

problemas como programas <strong>linear</strong>es.<br />

Programação <strong>linear</strong> não é o melhor método para resolver problemas<br />

<strong>de</strong> fluxo em re<strong>de</strong>s, mas é útil para enten<strong>de</strong>r a estrutura dos problemas e<br />

como para mo<strong>de</strong>lagem e solução rápida <strong>de</strong> pequenos exemplos. O livro<br />

<strong>de</strong> Cormen, Leiserson, Rivest e Stein [Cor+09] contém um capítulo sobre<br />

fluxo em re<strong>de</strong>s. O livro <strong>de</strong> Bazaraa, Jarvis e Sherali [BSS06] trata mais extensivamente<br />

do assunto.<br />

Versão Preliminar<br />

Exercícios<br />

Ex. 1 — Um veículo tem 100 unida<strong>de</strong>s <strong>de</strong> combustível, e <strong>de</strong>ve andar por<br />

um labirinto acíclico. Caminhos diferentes consomem mais ou menos<br />

combustível, e dão ao veículo recompensas diferentes. Sabendo o mapa e<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

1.4. EXEMPLOS DE APLICAÇÃO 15<br />

os custos e recompensas, o veículo <strong>de</strong>ve usar da melhor maneira possível<br />

suas 100 unida<strong>de</strong>s <strong>de</strong> combustível. Mo<strong>de</strong>le este problema como programa<br />

<strong>linear</strong>.<br />

Ex. 2 — No exercício 1, exigimos que o labirinto (e consequentemente o<br />

grafo que o representa) fosse acíclico. Explique porque, e diga o que aconteceria<br />

com seu mo<strong>de</strong>lo <strong>de</strong> programa <strong>linear</strong> se o grafo tivesse ciclos.<br />

Ex. 3 — Resolva os programas <strong>linear</strong>es usando o método gráfico.<br />

min x 1 + 3x 2<br />

min x 1 − 2x 2<br />

s.a. : x 1 − 2x 2 ≤ 50<br />

s.a. : 3x 1 + x 2 ≤ 6<br />

2x 1 + 4x 2 ≥ 30<br />

2x 1 − x 2 ≤ 9<br />

− x 1 + 4x 2 ≥ 15<br />

x 1 , x 2 ≥ 0<br />

x 1 , x 2 ≥ 0<br />

min x 1 − 3x 2<br />

s.a. : x 1 + x 2 ≤ 10<br />

x 1 − x 2 ≥ 5<br />

2x 1 + 3x 2 ≥ 10<br />

x 1 , x 2 ≥ 0<br />

Ex. 4 — Converta o programa <strong>linear</strong> a seguir para a forma padrão <strong>de</strong> problema<br />

<strong>de</strong> maximização.<br />

min x 1 − 3x 2 + 5x 3<br />

s.a. : 8x 1 + x 2 − x 3 ≥ 100<br />

2x 1 − x 2 + 4x 3 ≤ 120<br />

x 1 + x 2 ≥ x 3<br />

x 1 , x 2 ≥ 0<br />

Ex. 5 — Converta o programa <strong>linear</strong> apresentado na introdução para a forma<br />

padrão <strong>de</strong> problema <strong>de</strong> maximização.<br />

Ex. 6 — Demonstre a equivalência dos dois problemas mostrados na Seção<br />

1.3.<br />

Ex. 7 — Como seria a formulação, como programa <strong>linear</strong>, <strong>de</strong> uma re<strong>de</strong> <strong>de</strong><br />

fluxo on<strong>de</strong> (i) não há conservação <strong>de</strong> fluxo nos nós (ou seja, cada nó v i po<strong>de</strong><br />

produzir ou consumir uma quantida<strong>de</strong> fixa f i <strong>de</strong> fluxo), e (ii) on<strong>de</strong> cada<br />

canal, além <strong>de</strong> ter um fluxo máximo suportado, tem também um mínimo<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

16 CAPÍTULO 1. PROGRAMAÇÃO LINEAR<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 2<br />

Conjuntos Convexos e Soluções<br />

Viáveis<br />

O conjunto das soluções viáveis para um programa <strong>linear</strong> é um conjunto<br />

convexo. Iniciamos este Capítulo com uma breve introdução à convexida<strong>de</strong><br />

e <strong>de</strong>pois abordamos algumas proprieda<strong>de</strong>s das soluções <strong>de</strong> programas<br />

<strong>linear</strong>es.<br />

2.1 Conjuntos convexos<br />

Definição 2.1 (Conjunto aberto). Um conjunto X é aberto se para todo ponto<br />

x ∈ X há uma distância ɛ tal que qualquer ponto y cuja distância <strong>de</strong> x seja<br />

menor que ɛ também pertence a X.<br />

<br />

Definição 2.2 (Conjunto fechado). Um conjunto é fechado se seu complemento<br />

é aberto.<br />

<br />

Observe que um conjunto po<strong>de</strong> ser fechado e aberto ao mesmo tempo,<br />

e também po<strong>de</strong> não ser nem fechado e nem aberto.<br />

Trabalharemos com problemas <strong>de</strong> otimização que são bem <strong>de</strong>finidos<br />

em conjuntos fechados: no conjunto x ∈ (0, 1), por exemplo, não po<strong>de</strong>mos<br />

selecionar o maior elemento.<br />

Definição 2.3 (Combinação afim). Uma combinação afim <strong>de</strong> x 1 , x 2 , . . . , x n<br />

é uma combinação <strong>linear</strong> dos x i , com a soma dos coeficientes igual a um.<br />

<br />

Exemplo 2.4. Sejam x 1 , x 2 , x 3 elementos quaisquer. Então<br />

−0.1x 1 + 0.4x 2 + 0.7x 3<br />

Versão Preliminar<br />

17


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

18 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

é combinação afim <strong>de</strong> x 1 , x 2 , x 3 .<br />

Definição 2.5 (envoltória afim). A envoltória afim <strong>de</strong> um conjunto X ⊂ R n ,<br />

<strong>de</strong>notada aff(X), é o conjunto <strong>de</strong> todas as combinações afim dos elementos<br />

<strong>de</strong> X.<br />

<br />

Exemplo 2.6. A envoltória afim <strong>de</strong> dois pontos diferentes é a reta passando<br />

por eles: seja A = {x, y}, com x = (1, 2) e y = (1, 1). A envoltória afim dos<br />

dois pontos é<br />

aff(X) = {αx + (1 − α)y, α ∈ R}<br />

ou<br />

aff(X) = {( α + (1 − α), 2α + (1 − α) ) α ∈ R }<br />

= {(1, α + 1), α ∈ R}<br />

A envoltória afim <strong>de</strong> quatro ou mais pontos não coplanares em R 3 é todo o<br />

R 3 . Seja B = {x, y, z}, com x = (1, 1), y = (1, 2) e z = (3, 1). Temos portanto<br />

aff(B) = {( αx + βy + (1 − α − β)z, α, β ∈ R )}<br />

= {(α, α) + (β, 2β) + (3 − 3(α + β), 1 − (α + β))}<br />

A envoltória afim <strong>de</strong> três ou mais pontos não co<strong>linear</strong>es (afim-in<strong>de</strong>pen<strong>de</strong>ntes)<br />

mas coplanares é o plano em que eles estão.<br />

◭<br />

Definição 2.7 (Combinação convexa). Uma combinação convexa <strong>de</strong> x 1 , x 2 , . . . , x n<br />

é uma combinação afim com coeficientes não negativos.<br />

<br />

Exemplo 2.8. Sejam x 1 , x 2 , x 3 elementos quaisquer. Então<br />

é combinação convexa <strong>de</strong> x 1 , x 2 , x 3 .<br />

0.2x 1 + 0.3x 2 + 0.5x 3<br />

Definição 2.9 (Conjunto convexo). X ⊂ R n é convexo se ∀x, y ∈ X, todas<br />

as combinações convexas <strong>de</strong> x e y também estão em X.<br />

<br />

Alternativamente, po<strong>de</strong>mos dizer que um conjunto S <strong>de</strong> pontos é convexo<br />

se para toda reta r, S ∩ r é conexo, ou seja, S ∩ r forma um único<br />

segmento (ou reta).<br />

Versão Preliminar<br />

Exemplo 2.10. Qualquer intervalo fechado [a, b] ⊂ R é convexo. Suponha<br />

que x, y ∈ [a, b], e x < y. Claramente, temos a ≤ x ≤ y. Então para<br />

qualquer combinação convexa z = λx + (1 − λ)y, temos x ≤ z ≤ y, que<br />

implica que a ≤ z ≤ b, e a combinação z ∈ [a, b].<br />

Lembramos que os intervalos (−∞, b] e [a, ∞) são fechados. ◭<br />

◭<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2.1. CONJUNTOS CONVEXOS 19<br />

Exemplo 2.11. Damos exemplos <strong>de</strong> conjuntos convexos e não convexos<br />

em R 2 . São convexos:<br />

Os seguintes conjuntos <strong>de</strong> pontos não são convexos, e em cada um há a<br />

indicação <strong>de</strong> dois pontos com combinação convexa fora do conjunto.<br />

Definição 2.12 (Envoltória Convexa). A envoltória convexa <strong>de</strong> um conjunto<br />

X ⊂ R n é o menor subconjunto convexo <strong>de</strong> R n contendo X. Denotamos a<br />

envoltória convexa <strong>de</strong> X por [X].<br />

<br />

Versão Preliminar<br />

Note que em muitos textos <strong>de</strong> Álgebra <strong>Linear</strong>, usa-se [X] para o subespaço<br />

gerado por X (todas as combinações <strong>linear</strong>es <strong>de</strong> vetores <strong>de</strong> X – o que<br />

é diferente da envoltória convexa).<br />

A figura a seguir ilustra um conjunto <strong>de</strong> pontos e sua envoltória convexa<br />

em R 2 .<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

20 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

Teorema 2.13. [X] é igual ao conjunto <strong>de</strong> todas as combinações convexas<br />

<strong>de</strong> subconjuntos finitos <strong>de</strong> X.<br />

Demonstração. Temos C = ∩Y i , on<strong>de</strong> Y i são conjuntos convexos contendo<br />

X.<br />

C ′ é o conjunto <strong>de</strong> combinações convexas finitas <strong>de</strong> pontos <strong>de</strong> X.<br />

(⇐), C ⊂ C ′ : basta verificar que C ′ é convexo, porque X ⊂ C ′ .<br />

Sejam x, y ∈ C ′ . Então x, y são combinações convexas <strong>de</strong> pontos <strong>de</strong> X.<br />

Seja t ∈ [0, 1]. Então, tx + (1 − t)y é combinação convexa <strong>de</strong> pontos <strong>de</strong> X,<br />

e C ′ é convexo.<br />

(⇒), C ′ ⊂ C : realizamos a prova por indução no número <strong>de</strong> pontos,<br />

que <strong>de</strong>notaremos por m.<br />

A base po<strong>de</strong> ser verificada trivialmente para m = 1 e m = 2. Para o<br />

passo, consi<strong>de</strong>ramos m ≥ 3.<br />

Nossa hipótese <strong>de</strong> indução diz que todo ponto em C ′ que é combinação<br />

convexa <strong>de</strong> m − 1 pontos <strong>de</strong> X também está em todos os conjuntos<br />

convexos contendo X (está em C).<br />

Seja x = t 1 x 1 + . . . + t m x m . (Note que x ∈ C ′ )<br />

Se t m = 1, então x = x m e o resultado vale trivialmente.<br />

Se t m < 1, seja então<br />

Então temos<br />

t i<br />

t i ′ = , i = 1, 2, . . . , m − 1<br />

1 − t m<br />

m−1<br />

∑<br />

m−1<br />

t i ′ = ∑<br />

i=1<br />

i=1<br />

Versão Preliminar<br />

Então<br />

t i<br />

1 − t m<br />

= (∑ m<br />

i=1 t i) − t m<br />

1 − t m<br />

= 1 − t m<br />

1 − t m<br />

= 1.<br />

x ′ = t 1 ′ x 1 + t 2 ′ x 2 + . . . + t m−1 ′ x m−1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2.1. CONJUNTOS CONVEXOS 21<br />

é combinação convexa <strong>de</strong> x 1 , x 2 , . . . , x m−1 . Pela hipótese <strong>de</strong> indução, x ′ ∈<br />

C. Como x m ∈ X, então x m ∈ C. Então<br />

x = (1 − t m )x ′ + t m x m<br />

é combinação convexa <strong>de</strong> dois pontos em C e, como C é convexo, x ∈<br />

C. <br />

Cada restrição <strong>de</strong> um programa <strong>linear</strong> <strong>de</strong>fine uma região do espaço<br />

que chamamos <strong>de</strong> semiespaço. Definimos a seguir hiperplano e semiespaço.<br />

Definição 2.14 (hiperplano). Seja X um conjunto <strong>de</strong> pontos X ⊂ R n tal que<br />

para todo x ∈ X, existem a i e b, com pelo menos um a i diferente <strong>de</strong> zero,<br />

Então X é um hiperplano em R n .<br />

a 1 x 1 + a 2 x 2 + · · · + a n x n = b.<br />

Exemplo 2.15. Retas são hiperplanos em R 2 , e planos são hiperplanos em<br />

R 3 . Similarmente, pontos são hiperplanos em R.<br />

◭<br />

Definição 2.16 (semiespaço). Em R n , um semiespaço é a região <strong>de</strong> um dos<br />

lados <strong>de</strong> um hiperplano. Em outras palavras, são os pontos x tais que<br />

para <strong>de</strong>terminados a i , b ∈ R.<br />

a 1 x 1 + a 2 x 2 + · · · + a n x n ≥ b,<br />

Exemplo 2.17. O conjunto {x ∈ R : x ≤ k} com k constante é o intervalo<br />

(−∞, k], que é um semiespaço <strong>de</strong> R.<br />

◭<br />

Exemplo 2.18. As soluções para uma <strong>de</strong>sigualda<strong>de</strong> em R n <strong>de</strong>finem um<br />

semiespaço.<br />

◭<br />

Semiespaços são convexos: se S é o conjunto <strong>de</strong> pontos <strong>de</strong> um dos lados<br />

<strong>de</strong> uma reta, as combinações convexas <strong>de</strong> pontos <strong>de</strong> S também estarão<br />

naquele mesmo lado da reta.<br />

Versão Preliminar<br />

Definição 2.19 (Epigrafo). Seja f : R n → R uma função. O epigrafo <strong>de</strong><br />

f é o conjunto <strong>de</strong> pontos (x 1 , x 2 , . . . , x n , x n+1 ) ∈ R n+1 tais que x n+1 ≥<br />

f(x 1 , x 2 , . . . , x n ).<br />

<br />

A figura a seguir mostra o epigrafo da função f(x) = x3<br />

30 − 3 2 x + 4.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

22 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

10<br />

8<br />

6<br />

4<br />

2<br />

f(x)<br />

−4 −2 0 2 4<br />

x<br />

Definição 2.20 (Ponto extremo <strong>de</strong> conjunto convexo). Um ponto x ∈ S<br />

convexo é um ponto extremo <strong>de</strong> S se não é combinação convexa <strong>de</strong> outros<br />

pontos <strong>de</strong> S.<br />

<br />

Exemplo 2.21. Qualquer ponto <strong>de</strong> uma parábola é ponto extremo <strong>de</strong> seu<br />

epigrafo.<br />

◭<br />

Exemplo 2.22. Ilustramos alguns dos pontos extremos (não todos) nos<br />

conjuntos a seguir.<br />

Versão Preliminar<br />

Teorema 2.23. Sejam S 1 , S 2 , . . . , S n conjuntos convexos. Então também<br />

são convexos ∩S i , ∑ S i e αS i , α ∈ R.<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2.1. CONJUNTOS CONVEXOS 23<br />

Demonstração. Demonstramos apenas o caso da soma. Os outros são pedidos<br />

no exercício 10.<br />

Sejam a, b ∈ S i + S j . Então a = a 1 + a 2 e b = b 1 + b 2 , com a 1 , b 1 ∈ S i e<br />

a 2 , b 2 ∈ S j . Para 0 ≤ λ ≤ 1,<br />

que está em S i + S j .<br />

λa + (1 − λ)b = λ(a 1 + a 2 ) + (1 − λ)(b 1 + b 2 )<br />

= λa 1 + λa 2 + (1 − λ)b 1 + (1 − λ)b 2<br />

= λa 1 + (1 − λ)b 1 + λa 2 + (1 − λ)b 2<br />

= [λa 1 + (1 − λ)b 1 ] + [λa 2 + (1 − λ)b 2 ] ,<br />

Definição 2.24 (poliedro). A interseção <strong>de</strong> um número finito <strong>de</strong> semiespaços<br />

em R n é um poliedro.<br />

<br />

Po<strong>de</strong>mos reescrever esta <strong>de</strong>finição.<br />

Definição 2.25 (poliedro). Um conjunto <strong>de</strong> pontos P ∈ R n é um poliedro<br />

se e somente se po<strong>de</strong> ser <strong>de</strong>scrito como P = {x ∈ R n : Ax = b}, on<strong>de</strong> A é<br />

uma matriz e b ∈ R n .<br />

<br />

Um poliedro po<strong>de</strong> não ser limitado, como por exemplo o poliedro <strong>de</strong>finido<br />

pelas inequações<br />

ilustrado na figura a seguir.<br />

x 2<br />

−5x 1 + 2x 2 ≤ −2<br />

−6x 1 + 25x 2 ≥ 27<br />

2 ,<br />

4<br />

3<br />

2<br />

Versão Preliminar<br />

1<br />

0<br />

-1 0 1 2 3 4<br />

-1<br />

−5x 1 + 2x 2 ≤ −2<br />

−6x 1 + 25x 2 ≥ 27<br />

2<br />

x 1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

24 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

Definição 2.26 (Politopo). Um politopo é um poliedro limitado.<br />

Exemplo 2.27. Semiespaços e epigrafos <strong>de</strong> funções não são politopos. Um<br />

polígono convexo (triângulo, quadrado, pentágono, etc) em R 2 é um politopo.<br />

◭<br />

A noção <strong>de</strong> <strong>de</strong>pendência <strong>linear</strong> esten<strong>de</strong>-se naturalmente para combinações<br />

afim e convexas.<br />

Definição 2.28 (afim-in<strong>de</strong>pen<strong>de</strong>nte). Um conjunto <strong>de</strong> pontos é afim-in<strong>de</strong>pen<strong>de</strong>nte<br />

quando nenhum <strong>de</strong>les é combinação afim dos outros.<br />

<br />

Exemplo 2.29. Os pontos (1, 1) e (2, 3) são afim-in<strong>de</strong>pen<strong>de</strong>ntes. Se tentarmos<br />

escrever um como combinação afim do outro, teremos<br />

(1, 1) = λ(2, 3),<br />

o que seria impossível.<br />

Os pontos (2, 2) e (6, 6) também são afim-in<strong>de</strong>pen<strong>de</strong>ntes, mesmo sendo<br />

<strong>linear</strong>mente <strong>de</strong>pen<strong>de</strong>ntes: se<br />

(6, 6) = λ(2, 2),<br />

<strong>de</strong>veríamos ter λ = 3, mas para que a combinação fosse afim, λ teria que<br />

ser um.<br />

◭<br />

Exemplo 2.30. Os pontos (1, 2), (2, −2) e (5/4, 1) são afim-<strong>de</strong>pen<strong>de</strong>ntes.<br />

Para verificar, mostraremos que existem a, b, com a + b = 1, tais que<br />

(1, 2) = a(2, −2) + b(5/4, 1).<br />

Para obter os coeficientes resolvemos o sistema<br />

2a + 5 4 b = 1<br />

−2a + b = 2<br />

a + b = 1<br />

O sistema tem solução a = −1/3 e b = 4/3, e portanto (1, 2) é combinação<br />

afim <strong>de</strong> (2, −2) e (5/4, 1).<br />

◭<br />

Versão Preliminar<br />

Definição 2.31 (Dimensão <strong>de</strong> um politopo). Um politopo P tem dimensão<br />

igual a d se d + 1 é o maior número <strong>de</strong> pontos afim-in<strong>de</strong>pen<strong>de</strong>ntes que<br />

po<strong>de</strong>m existir em P.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2.2. SOLUÇÕES VIÁVEIS PARA PROGRAMAS LINEARES 25<br />

Exemplo 2.32. Um ponto tem dimensão zero, porque é um conjunto <strong>de</strong><br />

um (0+1) único ponto. Uma reta é um politopo <strong>de</strong> dimensão um, porque<br />

um terceiro ponto sempre po<strong>de</strong> ser <strong>de</strong>scrito como combinação afim <strong>de</strong><br />

dois (1+1) outros na mesma reta. Um triângulo tem dimensão dois, porque<br />

um quarto ponto po<strong>de</strong> ser <strong>de</strong>scrito como combinação afim <strong>de</strong> outros três<br />

(2+1) no mesmo plano. ◭<br />

Teorema 2.33. Um politopo P tem dimensão igual à dimensão <strong>de</strong> aff(P).<br />

Exemplo 2.34. Sabemos que um triângulo tem dimensão dois. De fato, a<br />

envoltória afim do triângulo é R 2 , com dimensão dois.<br />

◭<br />

2.2 Soluções viáveis para programas <strong>linear</strong>es<br />

Teorema 2.35. O conjunto S <strong>de</strong> soluções viáveis para um programa <strong>linear</strong><br />

é fechado, convexo e limitado por baixo.<br />

Demonstração. Pela restrição x ≥ 0, S é limitado por baixo. Além disso,<br />

S é interseção dos semiespaços <strong>de</strong>finidos pelas restrições do problema e<br />

pela restrição <strong>de</strong> não negativida<strong>de</strong>. Como os semiespaços são convexos e<br />

fechados, S também é.<br />

<br />

Teorema 2.36. Seja S o conjunto <strong>de</strong> soluções viáveis para um programa<br />

<strong>linear</strong>. Então, se existe solução ótima para o programa <strong>linear</strong>, existe um<br />

ponto extremo em S com o valor ótimo.<br />

Antes <strong>de</strong> elaborarmos a <strong>de</strong>monstração formal <strong>de</strong>ste Teorema, notamos<br />

que é intuitivamente simples perceber o que está sendo enunciado.<br />

Escolhemos um ponto <strong>de</strong>ntro do poliedro. Traçamos neste ponto um hiperplano<br />

ortogonal ao gradiente do objetivo e movemos esse hiperplano<br />

na direção do gradiente. Há uma distância máxima que esse movimento<br />

po<strong>de</strong> ser feito sem que o hiperplano fique completamente fora do poliedro.<br />

Quando essa distância é máxima, o hiperplano toca o poliedro em<br />

um ponto extremo (po<strong>de</strong> tocar em uma aresta ou face, mas ainda assim<br />

ele toca um ponto extremo). A figura a seguir ilustra graficamente esta<br />

intuição.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

26 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

A seguir damos uma <strong>de</strong>monstração formal <strong>de</strong>sse Teorema.<br />

Demonstração. (do Teorema 2.36).<br />

S tem um número finito <strong>de</strong> pontos extremos, que <strong>de</strong>notamos 1 x ∗ 1 , x∗ 2 , . . . , x∗ p.<br />

Seja x 0 um ponto viável maximizando c T x em S:<br />

∀x ∈ S, c T x 0 ≥ c T x.<br />

Suponha que x 0 não é ponto extremo. Então x 0 po<strong>de</strong> ser <strong>de</strong>scrito como<br />

combinação convexa dos pontos extremos <strong>de</strong> S.<br />

x 0 =<br />

p∑<br />

λ i x ∗ i , λ i ≥ 0, ∑ λ i = 1<br />

i=1<br />

Seja então x ∗ r o ponto extremo com maior valor objetivo. Então,<br />

)<br />

( p∑<br />

c T x 0 = c T λ i x ∗ i<br />

i=1<br />

p∑ )<br />

= λ i<br />

(c T x ∗ i<br />

≤<br />

i=1<br />

p∑ )<br />

λ i<br />

(c T x ∗ r<br />

i=1<br />

= c T x ∗ r<br />

= c T x ∗ r.<br />

Temos então c T x 0 ≤ c T x ∗ r. Como x 0 é ótimo, c T x 0 = c T x ∗ r, e existe o ponto<br />

extremo x ∗ r on<strong>de</strong> o valor do objetivo é ótimo.<br />

<br />

Representamos as restrições <strong>de</strong> um problema na forma matricial como<br />

Ax = b. A matriz A normalmente terá m linhas e n colunas, com n > m.<br />

Presumiremos que o posto da matriz é m – caso não seja, sempre po<strong>de</strong>mos<br />

eliminar uma das restrições.<br />

Cada coluna <strong>de</strong> A representa uma variável. Como a matriz tem posto<br />

m, po<strong>de</strong>mos tomar m colunas LI (ou m variáveis), formando uma matriz<br />

quadrada B, <strong>de</strong> or<strong>de</strong>m m, e resolver o sistema<br />

Versão Preliminar<br />

p∑<br />

i=1<br />

Bx B = b,<br />

1 Insistimos em mostrar os pontos como vetores!<br />

λ i


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2.2. SOLUÇÕES VIÁVEIS PARA PROGRAMAS LINEARES 27<br />

on<strong>de</strong> x B é o vetor composto pelas variáveis relacionadas às colunas em B.<br />

A matriz B tem posto completo, portanto o sistema sempre terá solução.<br />

As variáveis representadas pelas colunas que usamos para formar B<br />

são chamadas <strong>de</strong> variáveis básicas, e as outras são as variáveis não básicas.<br />

Ao resolver o sistema, <strong>de</strong>terminamos valores para m variáveis. Se fizermos<br />

as outras variáveis iguais a zero, teremos uma solução para Ax = b.<br />

Definição 2.37 (solução básica). Seja Ax = b o conjunto <strong>de</strong> restrições <strong>de</strong><br />

um problema <strong>de</strong> programação <strong>linear</strong>, on<strong>de</strong> A tem m linhas e n colunas.<br />

Seja B uma matriz formada por m colunas <strong>linear</strong>mente in<strong>de</strong>pen<strong>de</strong>ntes <strong>de</strong><br />

A. Então os vetores x tais que Bx = b são chamados <strong>de</strong> soluções básicas<br />

para o problema.<br />

<br />

Suponha que a matriz A tenha posto m. A matriz B com m colunas LI<br />

é uma base para o espaço-coluna <strong>de</strong> A – daí o nome “solução básica”.<br />

Definição 2.38 (solução viável básica). x ∈ R n é solução viável básica para<br />

um problema <strong>de</strong> programação <strong>linear</strong> se é viável e também básica. <br />

Teorema 2.39. Seja S o conjunto <strong>de</strong> soluções viáveis para um programa<br />

<strong>linear</strong>. Então uma solução viável x ∈ S é básica se e somente se é um<br />

ponto extremo <strong>de</strong> S.<br />

Demonstração. (⇐) Seja x ponto extremo <strong>de</strong> S e, sem perda <strong>de</strong> generalida<strong>de</strong>,<br />

presuma que x 1 , x 2 , . . . , x k > 0 e x k+1 , . . . , x n = 0. Mostraremos<br />

que as k primeiras colunas formam um conjunto LI, sendo portanto uma<br />

solução viável básica.<br />

Denotando a j-ésima coluna <strong>de</strong> A por a j , temos<br />

a 1 x 1 + a 2 x 2 + . . . + a k x k = b. (2.1)<br />

Suponha que a 1 , . . . , a k são <strong>linear</strong>mente <strong>de</strong>pen<strong>de</strong>ntes. Então, pela <strong>de</strong>finição<br />

<strong>de</strong> <strong>de</strong>pendência <strong>linear</strong>,<br />

∑<br />

∃α 1 , α 2 , . . . , α k , αi a i = 0, (2.2)<br />

com algum α i ≠ 0.<br />

Usaremos os coeficientes <strong>de</strong>sta combinação <strong>linear</strong> para <strong>de</strong>screver o<br />

ponto xtremo x como combinação <strong>linear</strong> <strong>de</strong> outros pontos (o que seria<br />

uma contradição).<br />

Seja ε > 0. Sejam<br />

Versão Preliminar<br />

x 1 = (x 1 + εα 1 , x 2 + εα 2 , . . . , x k + εα k , 0, 0, . . . , 0) T<br />

x 2 = (x 1 − εα 1 , x 2 − εα 2 , . . . , x k − εα k , 0, 0, . . . , 0) T


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

28 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

Temos x j > 0 para j ≤ k. Então existe ε > 0 tal que os primeiros k elementos<br />

<strong>de</strong> x 1 e x 2 são maiores que zero:<br />

Po<strong>de</strong>-se verificar que<br />

0 < ε < min<br />

x j + εα j > 0<br />

x j − εα j > 0<br />

j<br />

{<br />

xj<br />

}<br />

|α j | , α j ≠ 0<br />

satisfaz estas condições.<br />

Temos portanto x 1 e x 2 viáveis (ambos maiores que zero). Mas x =<br />

1<br />

2 x1 + 1 2 x2 , e x é combinação convexa <strong>de</strong> x 1 e x 2 – não po<strong>de</strong> ser ponto<br />

extremo!<br />

Concluímos que nossa hipótese era falsa: a 1 , . . . , a k é <strong>linear</strong>mente in<strong>de</strong>pen<strong>de</strong>nte,<br />

e a solução é básica.<br />

(⇒) Suponha que x ∗ é uma solução viável básica, com componentes<br />

x ∗ 1 , x∗ 2 , . . . , x∗ m, 0, 0, . . . , 0. O valor dos x ∗ i<br />

é dado por<br />

∑<br />

a ij x j = b i , i = 1, 2, . . . , m. (2.3)<br />

j≤m<br />

Como a 1 , a 2 , . . . , a m é <strong>linear</strong>mente in<strong>de</strong>pen<strong>de</strong>nte, as soluções são únicas.<br />

Suponha que x ∗ não é ponto extremo <strong>de</strong> S. Então <strong>de</strong>ve ser combinação<br />

<strong>linear</strong> <strong>de</strong> duas soluções viáveis x 1 e x 2 , diferentes entre si.<br />

x ∗ j = λx1 j + (1 − λ)x2 j ,<br />

j ≤ m<br />

0 = λx 1 j + (1 − λ)x2 j , j > m<br />

para 0 < λ < 1.<br />

Como x 1 j , x2 j ≥ 0 então x1 j , x2 j<br />

= 0 para j > m.<br />

Restam os x 1 j e x2 j<br />

com j ≤ m. Como as soluções para o sistema (2.3) são<br />

únicas, necessariamente temos x ∗ j<br />

= x 1 j<br />

= x 2 j<br />

, mas havíamos presumido<br />

x 1 ≠ x 2 .<br />

Concluímos então que x ∗ não po<strong>de</strong> ser <strong>de</strong>scrito como combinação <strong>linear</strong><br />

<strong>de</strong> pontos <strong>de</strong> S – é um ponto extremo.<br />

<br />

Versão Preliminar<br />

Teorema 2.40. O conjunto <strong>de</strong> soluções ótimas para um programa <strong>linear</strong> é<br />

um conjunto convexo.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2.2. SOLUÇÕES VIÁVEIS PARA PROGRAMAS LINEARES 29<br />

Demonstração. Seja K o conjunto <strong>de</strong> soluções ótimas, x ∗ 1 , x∗ 2 ∈ K, e z∗ o<br />

valor ótimo da função objetivo. Então,<br />

c T x ∗ 1 = cT x ∗ 2 = z∗ .<br />

Como são viáveis, x ∗ 1 , x∗ 2<br />

∈ S e S é convexo, portanto<br />

Temos então<br />

λx ∗ 1 + (1 − λ)x∗ 2 ∈ S, 0 ≤ λ ≤ 1.<br />

c T (x ∗ 1 , x∗ 2 ) = λcT x ∗ 1 + (1 − λ)cT x ∗ 2<br />

= λz ∗ + (1 − λ)z ∗ = z ∗ .<br />

Assim, λx ∗ 1 + (1 − λ)x∗ 2<br />

∈ K, para 0 ≤ λ ≤ 1, e K é convexo.<br />

<br />

Corolário 2.41. Se há mais <strong>de</strong> uma solução ótima para um programa <strong>linear</strong>,<br />

há uma quantida<strong>de</strong> infinita e não enumerável <strong>de</strong>las.<br />

Claramente, o conjunto <strong>de</strong> soluções ótimas contém um único ponto<br />

se for um ponto extremo isolado, ou infinitos pontos, se for a envoltória<br />

convexa <strong>de</strong> alguns pontos extremos.<br />

Teorema 2.42. Se existe solução viável para um programa <strong>linear</strong>, então<br />

também existe solução viável básica.<br />

Demonstração. Sejam a 1 , a 2 , . . . , a n as colunas <strong>de</strong> A, e x = (x 1 , x 2 , . . . , x n )<br />

viável:<br />

x 1 a 1 + x 2 a 2 + . . . = b.<br />

Suponha, sem perda <strong>de</strong> generalida<strong>de</strong>, que as k primeiras variáveis <strong>de</strong> x,<br />

são maiores que zero, e portanto x 1 a 1 + x 2 a 2 + . . . + x k a k = b.<br />

Trataremos dois casos: no primeiro, a 1 , . . . , a k são <strong>linear</strong>mente in<strong>de</strong>pen<strong>de</strong>nte.<br />

No segundo, são <strong>linear</strong>mente <strong>de</strong>pen<strong>de</strong>ntes.<br />

Primeiro caso (colunas L.I.): nesta situação, k ≤ m, porque A tem posto<br />

completo.<br />

Versão Preliminar<br />

• Se k = m a solução é, por <strong>de</strong>finição, básica.<br />

• Se k < m, então m − k colunas po<strong>de</strong>m ser obtidas <strong>de</strong> A para formar<br />

uma matriz m × m com colunas a 1 , . . . , a k , . . . , a m , todas L.I.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

30 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

Segundo caso (colunas L.D.): se a 1 , . . . , a k são L.D., então existem α 1 , . . . , α k ,<br />

com pelo menos um α j > 0 tais que<br />

∑<br />

αj a j = 0<br />

Multiplicamos a equação por ε:<br />

k∑<br />

εα j a j = 0 (2.4)<br />

Temos também, da <strong>de</strong>finição do programa <strong>linear</strong>, que<br />

Calculamos agora (2.5) − (2.4):<br />

j=1<br />

k∑<br />

x j a j = b (2.5)<br />

j=1<br />

k∑<br />

x j a j − εα j a j = b<br />

j=1<br />

k∑<br />

a j (x j − εα j ) = b<br />

j=1<br />

e portanto os (x j − εα j ) formam uma solução para o sistema Ax = b.<br />

Para garantir que a solução é viável escolhemos<br />

{ }<br />

xi<br />

ε = min , α i > 0<br />

j α i<br />

Seja p o índice do mínimo <strong>de</strong>finido acima, <strong>de</strong> forma que ε = x p /α p . Para<br />

p,<br />

(x p − εα p ) = x p − x pα p<br />

= 0<br />

α p<br />

Para i ≠ p,<br />

(x i − εα i ) = x i − x pα i<br />

.<br />

α p<br />

Como x i > 0 e xpα i<br />

α p<br />

≤ x i , temos x i ≥ 0 (não teremos uma solução inviável).<br />

A variável <strong>de</strong> índice p torna-se zero, e a nova solução<br />

Versão Preliminar<br />

x ′ = (x 1 − εα 1 , . . . , x k−1 − εα k−1 , 0, . . . , 0)<br />

tem então no máximo k − 1 variáveis positivas. Se as colunas associadas<br />

com estas k − 1 variáveis ainda forem L.D. repetimos a operação; senão, o<br />

primeiro caso se aplica.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2.3. FUNÇÕES CONVEXAS 31<br />

2.3 Funções Convexas<br />

Nesta seção tratamos brevemente <strong>de</strong> funções convexas, que são importantes<br />

para o <strong>de</strong>senvolvimento da teoria <strong>de</strong> otimização não <strong>linear</strong>.<br />

Definição 2.43 (Função convexa). Uma função é convexa se seu epigrafo<br />

é convexo. Uma função f é côncava se −f é convexa.<br />

<br />

A figura a seguir mostra o epigrafo da função convexa f(x) = x 2 −3x+3.<br />

f(x)<br />

4<br />

3<br />

2<br />

1<br />

0<br />

0 1 2 3 4<br />

x<br />

Teorema 2.44. Se f : R n → R é convexa e Dom(f) é convexo, então<br />

λf(x) + (1 − λ)f(y) ≥ f(λx + (1 − λ)y)<br />

para todos x, y ∈ Dom(f) e todo λ ∈ [0, 1].<br />

Teorema 2.45. Se f 1 , f 2 , . . . , f m : R n → R são convexas, então também são<br />

convexas<br />

g(x) = max{f i (x)}<br />

h(x) = ∑ f i (x)<br />

O teorema 2.46 nos dá uma segunda caracterização <strong>de</strong> funções convexas.<br />

Teorema 2.46. Uma função f com domínio D ⊆ R n é convexa se e somente<br />

se, para todos x 1 , x 2 ∈ D, e para todo λ ∈ [0, 1],<br />

f(λx 1 + (1 − λ)x 2 ) ≤ λf(x 1 ) + (1 − λ)f(x 2 ).<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

32 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

Definição 2.47. Seja A uma matriz quadrada simétrica. A é semi<strong>de</strong>finida<br />

positiva se x T Ax ≥ 0 para todo x. A é <strong>de</strong>finida positiva se x T Ax ≥ 0 para<br />

todo x ≠ 0. E A é in<strong>de</strong>finida se x T Ax assume valores positivos e negativos.<br />

<br />

Alternativamente, uma matriz é semi<strong>de</strong>finida positiva se todos seus<br />

autovalores são não-negativos.<br />

Definição 2.48 (Matriz Hessiana). Seja f : R n → R duas vezes diferenciável.<br />

A matriz Hessiana <strong>de</strong> f em x, <strong>de</strong>notada por H f (x) ou ∇ 2 f(x) é a forma<br />

bi<strong>linear</strong><br />

∇ 2 (x) i,j = ∂2 f(x)<br />

,<br />

∂x i ∂x j<br />

ou<br />

⎛<br />

∂ 2 f<br />

(x)<br />

∂x 2 1<br />

∂<br />

∇ 2 2 f<br />

∂x<br />

f(x) =<br />

2 ∂x 1<br />

(x)<br />

⎜ .<br />

⎝<br />

∂ 2 f<br />

∂x n∂x 1<br />

(x)<br />

∂ 2 f<br />

∂<br />

∂x 1 ∂x 2<br />

(x) . . . 2 f<br />

∂ 2 f<br />

∂x 2 2<br />

∂x 1 ∂x n<br />

(x)<br />

(x) . . .<br />

∂ 2 f<br />

∂x 2 ∂x n<br />

(x)<br />

.<br />

. ..<br />

∂ 2 f<br />

∂<br />

∂x n∂x 2<br />

(x) . . . 2 f<br />

∂x 2 n<br />

(x)<br />

Versão Preliminar<br />

⎞<br />

. <br />

⎟<br />

⎠<br />

Lema 2.49. Seja S um subconjunto não vazio, aberto e convexo <strong>de</strong> R n .<br />

Seja f : S → R diferenciável. Então f é convexa se e somente se, para todos<br />

x, x ′ ∈ R n ,<br />

f(x ′ ) ≥ f(x) + ∇(f(x)) T (x ′ − x).<br />

O Lema 2.49 nos diz que f é convexa se e somente se seu gráfico está<br />

sempre acima <strong>de</strong> qualquer plano tangente a ele – ou seja, que seu epigrafo<br />

é convexo.<br />

Exemplo 2.50. A função f(x) = 2x 2 + 1 é convexa, já que sua Hessiana é<br />

∇ 2 f(x) = ( 4 ). Verificamos que, <strong>de</strong> fato,<br />

f(x) + ∇(f(x)) T (x ′ − x) = f(x) + 4x(x ′ − x)<br />

= 2x 2 + ( 4x )( x ′ − x )<br />

= 2x 2 + 4x(x ′ − x)<br />

= 2x 2 + 4xx ′ − 4x 2 ≤ 2(x ′ ) 2<br />

Além <strong>de</strong> verificar algebricamente, observamos o gráfico <strong>de</strong> f(x) e percebemos<br />

que realmente, os planos tangentes sempre ficam abaixo do gráfico.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2.3. FUNÇÕES CONVEXAS 33<br />

f(x)<br />

9<br />

0<br />

0 2<br />

x<br />

Exemplo 2.51. A função f(x) = x 3 − x 2 − x + 1 não é convexa. Vemos que o<br />

plano tangente nãofica sempre acima <strong>de</strong> todos os pontos do gráfico, como<br />

é possível perceber na figura a seguir.<br />

f(x)<br />

3<br />

2<br />

1<br />

0<br />

0<br />

x<br />

Versão Preliminar<br />

Teorema 2.52. Seja f : D → R, com D ⊂ R n não vazio aberto e convexo, e<br />

f contínua e duas vezes diferenciável. f é convexa se e somente se ∇ 2 f(x)<br />

é semi<strong>de</strong>finida positiva para todo x ∈ Dom(f).<br />

◭<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

34 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

Exemplo 2.53. Seja f(a, b) = a 4 + b 2 . Temos<br />

( )<br />

∇ 2 12a<br />

2<br />

0<br />

f(a, b) =<br />

0 2<br />

Já po<strong>de</strong>mos perceber que os autovalores da Hessiana são a constante dois<br />

e 12a 2 , que são sempre positivos, e a função é convexa.<br />

Po<strong>de</strong>mos também verificar que x T (∇ 2 f(a, b))x é sempre positivo. Para<br />

qualquer x ∈ R 2 ,<br />

x T ∇ 2 f(a, b)x = ( 12a 2 ) ( )<br />

x<br />

x 1 2x 1<br />

2 = 12a 2 x 2 1<br />

x + 2x2 2 > 0,<br />

2<br />

portanto f é convexa em R 2 .<br />

Exemplo 2.54. Seja f(a, b) = e a + e b . Então<br />

( )<br />

∇ 2 e<br />

a<br />

0<br />

f(a, b) =<br />

0 e b<br />

Novamente notamos que os autovalores são positivos – a função é convexa.<br />

Para qualquer x ∈ R 2 ,<br />

x T ∇ 2 f(a, b)x = ( ( )<br />

x 1 e a x 2 e b) x 1<br />

= x 2 1<br />

x ea + x 2 2 eb > 0,<br />

2<br />

portanto f é convexa em R 2 .<br />

Po<strong>de</strong>ríamos também ter observado que f é a soma <strong>de</strong> e a com e b , duas<br />

funções convexas – e a soma <strong>de</strong> funções convexas sempre é convexa. ◭<br />

Exemplo 2.55. Seja f(a, b) = (a + b) 2 . Então<br />

( )<br />

∇ 2 2 2<br />

f(a, b) =<br />

2 2<br />

Para qualquer x ∈ R 2 ,<br />

Versão Preliminar<br />

x T ∇ 2 f(a, b)x = ( ) ( )<br />

x<br />

2x 1 + 2x 2 2x 1 + 2x 1<br />

2 = 2x 2 1<br />

x + 2x2 2 + 4x 1x 2 .<br />

2<br />

A função quadrática 2x 2 1 + 2x2 2 + 4x 1x 2 é sempre positiva, portanto f é convexa<br />

em R 2 .<br />

Os autovalores da Hessiana são 0 e 4.<br />

◭<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2.3. FUNÇÕES CONVEXAS 35<br />

Exemplo 2.56. Seja f(a, b) = a 3 + b 2 . Construímos a Hessiana no ponto<br />

(a, b),<br />

( )<br />

∇ 2 6a 0<br />

f(a, b) =<br />

0 2<br />

Os autovalores são 6a e 2. Quando a for menor que zero, o primeiro autovalor<br />

será negativo, e f não é convexa.<br />

No entanto, po<strong>de</strong>mos dizer que f é convexa se tiver seu domínio restrito<br />

a a ≥ 0.<br />

◭<br />

Notas<br />

Normalmente livros abordando Otimização Convexa (inclusive Programação<br />

<strong>Linear</strong>) tratam <strong>de</strong> Análise Convexa e sua relação com otimização. Por<br />

exemplo, os livros <strong>de</strong> Sinha [Sin06], Matousek [MG06] e Luenberger [Lue10]<br />

tratam do assunto.<br />

O Teorema 2.52 é <strong>de</strong>monstrado em diversos livros <strong>de</strong> otimização não<br />

<strong>linear</strong> – por exemplo nos livros <strong>de</strong> Mokhtar Bazaraa, Hanif Sherali e C. M.<br />

Shetty [BSS06] e <strong>de</strong> Andrzej Ruszczyski [Rus06].<br />

Os livros <strong>de</strong> Alexan<strong>de</strong>r Barvinok [Bar02] e <strong>de</strong> Steven Lay [Lay07] abordam<br />

<strong>de</strong>talhadamente o tópico <strong>de</strong> Convexida<strong>de</strong>. O livro <strong>de</strong> Dimitri Bertsekas<br />

e Angelia Nedic [BN03] também aborda convexida<strong>de</strong> e sua relação<br />

com otimização. Uma discussão em maior <strong>de</strong>nsida<strong>de</strong> <strong>de</strong> conjuntos e funções<br />

convexas é encontrada no livro <strong>de</strong> Rockafellar [Roc96].<br />

Exercícios<br />

Ex. 8 — Mostre como construir um poliedro com ( )<br />

n−k<br />

m vértices, para qualquer<br />

1 ≤ k ≤ n e quaisquer m, n, com n ≥ m, <strong>de</strong>screvendo o poliedro<br />

como interseção <strong>de</strong> semiespaços.<br />

Ex. 9 — Dissemos que um conjunto S <strong>de</strong> pontos é convexo se e somente<br />

se para toda reta r, S ∩ r é um único segmento <strong>de</strong> reta (ou seja, conexo).<br />

Demonstre que esta <strong>de</strong>finição é equivalente à <strong>de</strong>finição 2.9.<br />

Versão Preliminar<br />

Ex. 10 — Demonstre o que falta do Teorema 2.23.<br />

Ex. 11 — Mostre que para quaisquer a, b, c, α, β, γ, com a, α > 0, a interseção<br />

dos conjuntos {(x, y) : y < −ax 2 + bx + c} e {(x, y) : y > αx 2 + βx + γ}<br />

em R 2 é convexa.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

36 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

Ex. 12 — Sejam a e b dois pontos. O conjunto <strong>de</strong> pontos que não são mais<br />

próximos <strong>de</strong> b do que a é {x| dist(x, a) ≤ dist(x, b)}. Este conjunto é convexo<br />

Ex. 13 — Determine precisamente quando um subconjunto <strong>de</strong> R 2 <strong>de</strong>finido<br />

por um conjunto <strong>de</strong> inequações quadráticas {(x, y) : y ≤ ax 2 +bx+c}<br />

é convexo. Generalize para mais que duas dimensões.<br />

Ex. 14 — Prove o lema 2.49.<br />

Ex. 15 — Mostre que o conjunto <strong>de</strong> todas as matrizes semi<strong>de</strong>finidas positivas<br />

é convexo.<br />

Ex. 16 — Mostre que uma função f em R n é <strong>linear</strong> se e somente se f é convexa<br />

e côncava.<br />

Ex. 17 — Mostre que nenhuma função polinomial <strong>de</strong> grau ímpar maior ou<br />

igual a 3 e em uma variável é convexa.<br />

Ex. 18 — Determine se são convexas:<br />

i) f(a, b) = e a + log(b)<br />

ii) g(a, b) = e a − log(b)<br />

iii) h(a, b) = e a e b<br />

iv) j(a, b) = log(a) log(b)<br />

Ex. 19 — Prove que f(x) = x 2 1 /x 2 é convexa em R 2 on<strong>de</strong> x 2 > 0.<br />

Ex. 20 — I<strong>de</strong>ntifique subdomínios on<strong>de</strong> as funções são convexas:<br />

i) f(x, y) = sen(x) + cos(y)<br />

ii) g(x, y) = sen(x) cos(y)<br />

iii) h(x) = x log(x)<br />

iv) j(x, y, z) = e x − z log(y)<br />

v) k(x, y, z) = e x − log(xy) + z 2<br />

Versão Preliminar<br />

Ex. 21 — Prove o Teorema 2.44.<br />

Ex. 22 — Prove o Teorema 2.45.<br />

Ex. 23 — Suponha que queiramos otimizar uma função <strong>linear</strong>, sujeita a<br />

restrições estritamente não <strong>linear</strong>es. Se soubermos que a região viável é


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

2.3. FUNÇÕES CONVEXAS 37<br />

convexa, quantas soluções ótimas po<strong>de</strong>mos ter, no máximo E se a região<br />

viável não for convexa<br />

Ex. 24 — Suponha que saibamos que um problema <strong>de</strong> programação <strong>linear</strong><br />

é viável e limitado, e portanto tem solução ótima. Sem tentar resolvê-lo,<br />

há como verificar se ele tem somente uma ou infinitas soluções ótimas<br />

Ex. 25 — Seja R[x] o conjunto <strong>de</strong> todos os polinômios em x com coeficientes<br />

reais. Seja S o subconjunto <strong>de</strong> R[x] que são positivos no intervalo<br />

[0, 1]. Mostre que S é convexo.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

38 CAPÍTULO 2. CONJUNTOS CONVEXOS E SOLUÇÕES VIÁVEIS<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 3<br />

O Método Simplex<br />

Neste Capítulo tratamos do método mais conhecido para resolver problemas<br />

<strong>de</strong> Programação <strong>Linear</strong> – o método Simplex.<br />

3.1 Exemplo inicial<br />

Consi<strong>de</strong>re o problema <strong>de</strong> programação <strong>linear</strong>:<br />

sujeito a:<br />

max x 1 + 2x 2<br />

x 1 + x 2 ≤ 10<br />

−2x 1 + 3 4 x 2 ≤ 5<br />

x 1 − x 2 ≤ −3<br />

Transformamos o problema para que as restrições fiquem na forma <strong>de</strong><br />

igualda<strong>de</strong>s:<br />

x 1 +x 2 +x 3 = 10<br />

−2x 1 + 3 4 x 2 +x 4 = 5<br />

x 1 −x 2 +x 5 = −3<br />

Versão Preliminar<br />

e usaremos agora alguns passos do algoritmo Simplex.<br />

Temos cinco variáveis, e queremos inicialmente uma solução básica<br />

viável. Olhando para o problema, notamos que po<strong>de</strong>mos usar x 3 = 10,<br />

x 4 = 5, e x 5 = −3, com as outras variáveis iguais a zero. Temos então três<br />

variáveis não zero, e a solução é claramente viável. Temos uma solução<br />

39


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

40 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

viável básica. Note que os coeficientes das variáveis não zero é um, e os<br />

manteremos assim durante toda a execução do algoritmo Simplex.<br />

Representaremos o sistema <strong>de</strong> equações na forma <strong>de</strong> matriz:<br />

⎛ x 11 x 21 x 31 x 40 x 50 b ⎞<br />

10<br />

⎝−2 3/4 0 1 0 5⎠<br />

1 −1 0 0 1 −3<br />

e po<strong>de</strong>mos então reescrever as variáveis da forma como quisermos simplesmente<br />

usando operações elementares, semelhante aos passos <strong>de</strong> eliminação<br />

<strong>de</strong> Gauss, exceto que nosso objetivo não é transformar a matriz<br />

em forma triangular. O objetivo é escrever as variáveis básicas como função<br />

das não básicas: No tableau anterior a segunda linha, por exemplo,<br />

significa<br />

−2x 1 + 3 4 x 2 + 0x 3 + x 4 + x 5 = 5.<br />

Isolando x 4 , que é a única variável básica com coeficiente diferente <strong>de</strong> zero<br />

nesta linha,<br />

x 4 = 5 − 2x 1 − 3 4 x 2<br />

Neste momento, a solução atual dá o valor 5 − 0 − 0 = 0 para x 4 , mas a<br />

representação da linha nesta forma nos ajuda a compreen<strong>de</strong>r o que acontecerá<br />

quando <strong>de</strong>rmos valores positivos a x 1 e x 2 .<br />

Todo tableau Simplex po<strong>de</strong> ser lido, portanto, como uma expressão<br />

das variáveis básicas (ou da solução atual) em função das não-básicas.<br />

Agora introduzimos x 2 na base, retirando x 5 . Reescreveremos o sistema<br />

<strong>de</strong> forma que a coluna relativa a x 2 torne-se igual à coluna que agora<br />

representa x 5 .<br />

Conceitualmente, tomaremos a linha on<strong>de</strong> tínhamos x 5 representada<br />

como função das outras, e isolaremos x 2 , que passará a ser então representada<br />

como função das não básicas. Para isso, usamos eliminação <strong>de</strong><br />

Gauss <strong>de</strong> forma a tornar a 32 = 1 e a 12 = a 22 = 0. Primeiro, dividimos a<br />

linha 3 por a 32 = −1, e obtemos<br />

( )<br />

−1 1 0 0 −1 3<br />

Somamos múltiplos <strong>de</strong>sta linha às outras, para obter zeros no resto da coluna<br />

dois (somamos -3/4 da linha 3 à linha 2, e somamos -1 vezes a linha 3<br />

à linha 1):<br />

⎛<br />

2 0 1 0 1<br />

⎞<br />

7<br />

⎝−5/4 0 0 1 3/4 11/4⎠<br />

−1 1 0 0 −1 3<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.2. FORMULAÇÃO 41<br />

Temos agora x 1 = x 5 = 0, x 2 = 3, x 3 = 7, e x 4 = 11/4. O valor do objetivo<br />

para esta solução é x 1 + 2x 2 = 6. Representamos também a função<br />

objetivo como um vetor coluna c = ( 1 2 0 0 0 ) T , e a solução<br />

x = ( 0 3 7 11/4 0 ) T . Assim, po<strong>de</strong>mos expressar<br />

⎛ ⎞<br />

0<br />

c T x = ( 1 2 0 0 0 ) 3<br />

⎜ 7<br />

⎟<br />

⎝11/4⎠ = 6.<br />

0<br />

Conseguimos uma solução, com x 2 = 3, melhor que a inicial. Se incluirmos<br />

x 1 também na base, a solução será ainda melhor. O algoritmo Simplex<br />

<strong>de</strong>termina quais variáveis <strong>de</strong>vemos incluir e excluir da base a cada passo<br />

<strong>de</strong> forma que cada solução seja melhor que a anterior, e que todas sejam<br />

viáveis (garantindo assim que após um número finito <strong>de</strong> passos, obtenhamos<br />

a solução ótima).<br />

3.2 Formulação<br />

No resto do texto, usaremos uma matriz A, m × n, e vetores coluna b com<br />

m elementos e c com n elementos, <strong>de</strong> forma que programas <strong>linear</strong>es sejam<br />

<strong>de</strong>scritos como<br />

max c T x<br />

s.a.: Ax = b<br />

x ≥ 0,<br />

sendo x um vetor coluna com n elementos representando as variáveis<br />

para as quais queremos obter valores que maximizem c T x.<br />

Será útil dividir estes objetos (matriz A e vetores c e x) em duas partes:<br />

as que se referem às variáveis da base (A B , c B , x B ) e as que se referem às<br />

variáveis fora da base (A N , c N , x N ). Presumimos que as colunas <strong>de</strong> A e os<br />

elementos <strong>de</strong> x e c sempre são reor<strong>de</strong>nados <strong>de</strong> forma que as variáveis da<br />

base estejam à esquerda das outras – isso nos garante que a base é representada<br />

por uma submatriz m × m no lado esquerdo <strong>de</strong> A (isso apenas<br />

facilita a exposição do assunto, não interferindo em nada mais):<br />

A = ( )<br />

A B , A N<br />

Versão Preliminar<br />

c T = (c T B , cT N )<br />

x = (x B , x N )


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

42 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

Isto significa que a matriz A N e os vetores c N e x N tem índices iniciando<br />

em m + 1:<br />

3.3 Intuição geométrica<br />

)<br />

A N =<br />

(a m+1 , a m+2 , . . . , a n ,<br />

c T N = (c m+1, c m+2 , . . . , c n ),<br />

x N = (x m+1 , x m+2 , . . . , x n ).<br />

No capítulo 2, verificamos que as soluções viáveis básicas para um problema<br />

<strong>de</strong> programação <strong>linear</strong> são os pontos extremos do poliedro <strong>de</strong>finido<br />

pelas restrições. Nas próximas seções <strong>de</strong>senvolveremos o método<br />

Simplex, que verifica uma sequência <strong>de</strong> pontos extremos (ou <strong>de</strong> soluções<br />

viáveis básicas) para o problema até chegar à solução ótima.<br />

Damos aqui uma intuição simples <strong>de</strong> como é o funcionamento do Simplex:<br />

Saindo <strong>de</strong> alguma solução viável básica (ponto extremo), o Simplex<br />

procura outra solução que possa obter trocando uma única coluna da base<br />

(portanto algum ponto extremos adjacente ao atual), e que ofereça vantagem,<br />

ou seja, cujo valor objetivo seja melhor que o da solução atual. Prossegue<br />

assim até o momento em que não haja pontos extremos adjacentes<br />

com valor melhor que o atual – que portanto <strong>de</strong>ve ser ótimo.<br />

Exemplo 3.1. Ilustraremos esta idéia com o seguinte problema com duas<br />

variáveis.<br />

max 2x 1 + x 2<br />

s.a.: x 2 ≤ 3<br />

2x 1 + x 2 ≤ 4<br />

Versão Preliminar<br />

3x 1 − x 2 ≤ 1<br />

x ≥ 0.<br />

A representação gráfica da região viável <strong>de</strong>ste problema é dada a seguir.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.3. INTUIÇÃO GEOMÉTRICA 43<br />

Começamos com a solução viável básica x 1 = 0, x 2 = 0 (ou seja, x = 0,<br />

e mudamos uma coluna da base por vez, primeiro para (1/3, 0) e <strong>de</strong>pois<br />

para a solução ótima (1, 2).<br />

−→<br />

Tínhamos inicialmente uma base com variáveis <strong>de</strong> folga. Na primeira mudança,<br />

<strong>de</strong> (0, 0) para (1/3, 0), retiramos a folga da restrição 3x 1 − x 2 ≤ 1, e<br />

<strong>de</strong>terminamos para x 1 o maior valor possível respeitando a restrição: chegamos<br />

a uma nova base, on<strong>de</strong> a folga <strong>de</strong>sta restrição é zero, e o valor <strong>de</strong> x 1<br />

é 1/3. Depois retiramos a folga da restrição 2x 1 + x 2 ≤ 4, e aumentamos o<br />

valor <strong>de</strong> x 2 , chegando à solução ótima (1, 2).<br />

As <strong>de</strong>rivadas parciais do objetivo no ponto (1, 2) e na direção <strong>de</strong> seus<br />

pontos extremos vizinhos são todas negativas, portanto não há como melhorar<br />

a solução.<br />

◭<br />

−→<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

44 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

3.4 Coeficientes reduzidos <strong>de</strong> custo<br />

Embora possamos facilmente i<strong>de</strong>ntificar a restrição (e consequentemente<br />

a coluna) que <strong>de</strong>ve entrar na base no próximo passo do Simplex, esta intuição<br />

visual não é suficiente para implementar o algoritmo – que <strong>de</strong>ve funcionar<br />

para dimensões arbitrárias. Para cada variável não básica em um<br />

tableau Simplex existe um número que usaremos para <strong>de</strong>cidir se ela <strong>de</strong>ve<br />

ou não entrar na base. Daremos duas <strong>de</strong>finições diferentes (mas equivalentes)<br />

para estes números, chamados <strong>de</strong> coeficientes reduzidos <strong>de</strong> custo.<br />

3.4.1 Primeira <strong>de</strong>finição<br />

Nossa primeira <strong>de</strong>finição para coeficiente reduzido <strong>de</strong> custo é como a <strong>de</strong>rivada<br />

do objetivo na direção <strong>de</strong> cada variável não básica, porque com elas<br />

po<strong>de</strong>remos <strong>de</strong>terminar exatamente quais variáveis melhorarão o objetivo<br />

se as incluirmos na base.<br />

O valor do objetivo usando apenas as variáveis básicas é dado por<br />

Agora partimos do sistema Ax = b:<br />

z 0 = c T B x B.<br />

Ax = b<br />

A B x B + A N x N = b<br />

Como estamos consi<strong>de</strong>rando A B = I,<br />

x B = b − A N x N<br />

c T B x B = c T B b − cT B A Nx N<br />

Seja z = c T B A N, <strong>de</strong> forma que z j = c 1 a 1j + c 2 a 2j + . . . + c n a mj , para j > m<br />

(lembre-se que os índices das colunas <strong>de</strong> A N começam com m + 1).<br />

⎛<br />

⎛<br />

⎞<br />

a 1,m+1 a 1,m+2 , · · · a 1,n<br />

c T B A ⎜<br />

N = (c 1 , c 2 , . . . , c m ) ⎝<br />

.<br />

. ..<br />

⎟<br />

⎠ = ⎜<br />

⎝<br />

a m,n<br />

Versão Preliminar<br />

a m,m+1<br />

z m+1<br />

z m+2<br />

.<br />

z n<br />

⎞<br />

⎟<br />

⎠ ,<br />

on<strong>de</strong> z j = ∑ i≤m c ia ij . In<strong>de</strong>xamos z a partir <strong>de</strong> m + 1, porque também tem<br />

n − m elementos (um para cada variável não básica).


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.4. COEFICIENTES REDUZIDOS DE CUSTO 45<br />

Então,<br />

c T B x B = c T B b − zx N<br />

c T B x B = z 0 − zx N ,<br />

porque zx N = 0 (o vetor x N , com variáveis não básicas, vale zero). Mesmo<br />

que esta expressão valha zero, a manteremos ali, porque posteriormente<br />

ela será importante quando quisermos saber o que acontece quando mudamos<br />

o valor <strong>de</strong> alguma variável não básica. Assim,<br />

∑<br />

j≤m<br />

c j x j = z 0 − ∑ j>m<br />

z j x j .<br />

Temos somente as variáveis básicas no lado esquerdo. Se somarmos as<br />

não básicas obteremos c T x. Assim, somamos ∑ j>m c jx j aos dois lados da<br />

equação, obtendo<br />

c T x =z 0 + ∑ j>m<br />

c j x j − ∑ j>m<br />

z j x j<br />

=z 0 + ∑ j>m(c j − z j )x j<br />

Po<strong>de</strong>mos então <strong>de</strong>screver o valor da função objetivo usando apenas z 0 (o<br />

valor calculado usando as variáveis básicas) e os valores das variáveis não<br />

básicas:<br />

c T x = z 0 +<br />

j>m(c ∑ j − z j )x j<br />

Esta equação é importante porque mostra o quanto o valor da função objetivo<br />

aumenta se aumentarmos o valor <strong>de</strong> uma das variáveis não básicas:<br />

se aumentarmos uma variável não básica x j <strong>de</strong> zero para k, o objetivo aumentará<br />

em k(c j − z j ). Esta informação será usada para <strong>de</strong>terminar que<br />

variáveis <strong>de</strong>vem ter seu valor aumentado pelo algoritmo Simplex.<br />

Observe também que<br />

Versão Preliminar<br />

∂c T x<br />

= c j − z j ,<br />

∂x j<br />

e que os valores <strong>de</strong> (c j − z j ) nos dizem as direções em que po<strong>de</strong>mos melhorar<br />

o valor da função objetivo.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

46 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

Definição 3.2 (Coeficiente reduzido <strong>de</strong> custo). Em um programa <strong>linear</strong>, os<br />

valores<br />

r j = ∂cT x<br />

= c j − z j<br />

∂x j<br />

são chamados <strong>de</strong> coeficientes reduzidos (ou “relativos”) <strong>de</strong> custo, e <strong>de</strong>terminam<br />

em quanto cada variável não básica melhora o objetivo quando<br />

seu valor é aumentado em uma unida<strong>de</strong>.<br />

<br />

3.4.2 Segunda <strong>de</strong>finição<br />

A segunda <strong>de</strong>finição <strong>de</strong> coeficiente reduzido <strong>de</strong> custo (equivalente à primeira)<br />

é como a diferença <strong>de</strong> valor que uma coluna tem na base e fora <strong>de</strong>la<br />

(ou seja, quanto ganhamos se a incluirmos na base).<br />

Também po<strong>de</strong>mos <strong>de</strong>finir o coeficiente reduzido <strong>de</strong> custo <strong>de</strong> outra<br />

maneira. Chamamos A B <strong>de</strong> “base” porque ela é <strong>de</strong> fato base para o espaço<br />

coluna <strong>de</strong> A. Qualquer coluna <strong>de</strong> A po<strong>de</strong>, portanto, ser escrita como combinação<br />

<strong>linear</strong> das colunas <strong>de</strong> A B . Po<strong>de</strong>mos facilmente calcular o valor <strong>de</strong><br />

uma variável quando ela está na base – basta olhar para seu coeficiente<br />

c j no objetivo. Quando a variável não está na base, po<strong>de</strong>mos calcular o<br />

valor <strong>de</strong> sua coluna se a escrevermos como combinação <strong>linear</strong> da base e<br />

usarmos os valores das colunas básicas. Por exemplo, suponha que uma<br />

coluna a j esteja fora da base. Então<br />

a j = α 1 a 1 + · · · + α 1 a m<br />

⎛ ⎞<br />

⎛ ⎞<br />

a 11<br />

a 1m<br />

⎜ ⎟<br />

⎜ ⎟<br />

= α 1 ⎝ . ⎠ + · · · + α m ⎝ . ⎠<br />

a m1 a mm<br />

Quando multiplicamos cada coluna da base por seu valor para obter o valor<br />

<strong>de</strong> a j , temos<br />

c 1 α 1 a 1 + · · · + c m α 1 a m<br />

⎛ ⎞<br />

⎛ ⎞<br />

a 11<br />

a 1m<br />

⎜ ⎟<br />

⎜ ⎟<br />

= c 1 α 1 ⎝ . ⎠ + · · · + c m α m ⎝ . ⎠<br />

a m1 a mm<br />

Versão Preliminar<br />

= c T B A B,<br />

que é o valor <strong>de</strong> uma coluna <strong>de</strong> A N . Quando fazemos o mesmo com todas<br />

as colunas, temos<br />

z = c T B A BA N ,


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.4. COEFICIENTES REDUZIDOS DE CUSTO 47<br />

e se mantivermos a base representada como i<strong>de</strong>ntida<strong>de</strong>, temos<br />

z = c T B A N.<br />

Assim, enquanto c j nos dá o valor <strong>de</strong> uma variável quando ela está na base,<br />

z j nos dá seu valor quando a construímos sinteticamente quando ela não<br />

está na base. O coeficiente reduzido <strong>de</strong> custo, r j = c j − z j é a diferença entre<br />

os dois, e nos informa quanto po<strong>de</strong>remos ganhar incluindo a variável<br />

na base. Claramente, quando todos os r j forem negativos, não há como<br />

melhorar a solução.<br />

3.4.3 Representação no tableau<br />

Adicionamos a equação que dá o valor do objetivo ao sistema Ax = b:<br />

a 11 x 1 + a 12 x 2 + . . . + a 1n x n = b 1<br />

a 21 x 1 + a 22 x 2 + . . . + a 2n x n = b 2<br />

.<br />

.<br />

a m1 x 1 + a m2 x 2 + . . . + a mn x n = b m<br />

c 1 x 1 + c 2 x 2 + . . . + c n x n −z = −z 0<br />

Reescrevendo a última linha usando apenas as variáveis não básicas,<br />

obtemos<br />

z = z 0 + r m+1 x 1 + r m+2 x 2 + . . . + r n x n<br />

a 11 x 1 + . . . a 1m x 2 + a 1m+1 x m+1 + . . . + a 1n x n 0 = b 1<br />

a 21 x 1 + . . . a 2m x 2 + a 2m+1 x m+1 + . . . + a 2n x n 0 = b 2<br />

.<br />

.<br />

a m1 x 1 + . . . a mm x 2 + a mm+1 x m+1 + . . . + a mn x n 0 = b m<br />

0 + . . . 0 + r m+1 x m+1 + . . . + r n x n −z = −z 0<br />

on<strong>de</strong> r j = (c j − z j ). A coluna contendo zeros e −z nunca será parte <strong>de</strong> uma<br />

base, e não a representaremos nos tableaux.<br />

3.4.4 Exemplo<br />

Versão Preliminar<br />

Damos agora um exemplo do cálculo dos coeficientes reduzidos <strong>de</strong> custo.<br />

Exemplo 3.3. Suponha que um programa <strong>linear</strong> tenha como objetivo maximizar<br />

a função 2x 1 + 3x 2 + x 3 . Duas variáveis, x 4 e x 5 , foram adicionadas<br />

para transformar restrições <strong>de</strong> <strong>de</strong>sigualda<strong>de</strong> em igualda<strong>de</strong>. Suponha que


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

48 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

o seguinte tableau tenha sido encontrado durante a execução do método<br />

Simplex:<br />

⎛x 11 x 23 x 30 x 4<br />

−1 x 5 b ⎞<br />

0 4<br />

⎝ 0 −1 0 −2 1 5 ⎠<br />

0 4 1 3 0 12<br />

A base é formada por x 1 , x 3 e x 5 , mas a or<strong>de</strong>m das colunas da base é<br />

x 1 , x 5 , x 3 , e portanto consi<strong>de</strong>ramos c T B<br />

= (2, 0, 1). Os coeficientes reduzidos<br />

<strong>de</strong> custo da base são zero. Para obter os coeficientes reduzidos <strong>de</strong><br />

custo <strong>de</strong> x 2 e x 4 , calculamos z T = c T B A N, e r = c − z.<br />

Temos portanto<br />

e os coeficientes são<br />

⎛ ⎞<br />

c T B A n = ( 2 0 1 ) 3 −1<br />

⎝−1<br />

−2⎠ = ( 10 1 ) .<br />

4 3<br />

z 2 = 10<br />

z 4 = 1,<br />

r 2 = c 2 − z 2 = 3 − 10 = −7<br />

r 4 = c 4 − z 4 = 0 − 1 = −1.<br />

O tableau completo tem os coeficientes reduzidos <strong>de</strong> custo das variáveis<br />

não básicas na última linha, e o valor do objetivo na última posição (com<br />

sinal trocado).<br />

⎛x 11 x 23 x 30 x 4<br />

−1 x 5 b ⎞<br />

0 4<br />

⎜ 0 −1 0 −2 1 5<br />

⎟<br />

⎝ 0 4 1 3 0 12 ⎠<br />

0 −7 0 −1 0 −20<br />

Ps coeficientes reduzidos <strong>de</strong> custo são<br />

∂z<br />

= c 2 − z 2 = −7,<br />

∂x 2<br />

∂z<br />

= c 4 − z 4 = −1.<br />

∂x 4<br />

Versão Preliminar<br />

Como os coeficientes reduzidos <strong>de</strong> custo são todos negativos (-7 e -1), a<br />

solução já é ótima: não há variáveis que possam ser incluidas na base aumentando<br />

o valor da solução.<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.5. A OPERAÇÃO DE MUDANÇA DE BASE 49<br />

3.5 A operação <strong>de</strong> mudança <strong>de</strong> base<br />

Outra maneira <strong>de</strong> visualizar o tableau Simplex:<br />

⎛<br />

⎝ A B A N<br />

⎞<br />

b<br />

⎠<br />

c T B<br />

c T N −z 0<br />

Queremos percorrer diferentes bases do programa <strong>linear</strong>, sempre aumentando<br />

o valor da função objetivo. Manteremos as colunas da base sempre<br />

formando uma matriz i<strong>de</strong>ntida<strong>de</strong> m × m. Como já vimos antes, isto representa<br />

a <strong>de</strong>scrição <strong>de</strong> cada uma das variáveis básicas em função das não<br />

básicas.<br />

Suponha agora que queiramos incluir uma variável x q na base, retirando<br />

x p . Po<strong>de</strong>mos escrever x q em função das variáveis não básicas (inclusive<br />

x p ). Para isso basta operarmos as linhas do tableau, forçando a coluna<br />

a q a ficar igual a a p . Para isso po<strong>de</strong>-se usar a operação <strong>de</strong>finida a seguir.<br />

A fim <strong>de</strong> simplificar as referências ao tableau, usaremos a in+1 para b i<br />

e a m+1j para r j .<br />

Proposição 3.4. Seja um tableau Simplex representando o programa <strong>linear</strong><br />

<strong>de</strong>finido por A, b e c. Seja a p uma coluna da base e a q uma coluna fora da<br />

base. Então a seguinte operação modifica a coluna a q <strong>de</strong> forma que fique<br />

idêntica a a p , po<strong>de</strong>ndo substituí-la na base – e modifica também todas as<br />

colunas <strong>de</strong> A N , inclusive a p , <strong>de</strong> maneira que as soluções <strong>de</strong> Ax = b sejam<br />

as mesmas. Para todo elemento a ij , inclusive na coluna b e na linha do<br />

objetivo, faça:<br />

a ′ pj = a pj<br />

a pq<br />

a ′ ij = a ij − a pja iq<br />

a pq<br />

(i ≠ p).<br />

Demonstração. A coluna a p tinha zeros exceto em a pp , on<strong>de</strong> tinha um.<br />

Para a q , temos a pq ′ = a pq /a pq = 1, e po<strong>de</strong>-se verificar que para todo i ≠ p,<br />

a<br />

iq ′ = 0. A operação não muda as soluções: a primeira é multiplicação <strong>de</strong><br />

linha por escalar, e a segunda é soma <strong>de</strong> múltiplo <strong>de</strong> linha a outra. <br />

Versão Preliminar<br />

3.6 Que variável entra na base<br />

Sabemos como retirar uma coluna a p da base, trocando-a por outra coluna<br />

a q . Agora tratamos <strong>de</strong> como escolher a coluna (ou seja, a variável) que<br />

<strong>de</strong>ve ser incluída na base.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

50 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

Já sabemos que os coeficientes reduzidos <strong>de</strong> custo, dados por r j =<br />

c j − z j , nos informam quanto uma unida<strong>de</strong> <strong>de</strong> cada variável não básica x j<br />

aumenta a função objetivo, e po<strong>de</strong>mos portanto escolher alguma variável<br />

com r j > 0 (presumindo que estamos maximizando – se estivermos minimizando<br />

escolhemos r j < 0), tendo assim a garantia <strong>de</strong> que melhoraremos<br />

a solução.<br />

Este raciocínio é formalizado no teorema 3.5.<br />

Teorema 3.5. Seja x uma solução viável não <strong>de</strong>generada para um problema<br />

<strong>de</strong> programação on<strong>de</strong> queiramos maximizar o objetivo, sendo z o<br />

valor <strong>de</strong> x. Se o programa <strong>linear</strong> é limitado e existe j tal que (c j − z j ) > 0<br />

então há uma solução viável x ′ com valor z ′ > z, e x ′ po<strong>de</strong> ser obtida incluindo<br />

a j na base.<br />

Demonstração. Temos x = (x 1 , x 2 , . . . , x m , 0, . . . , 0). Suponha, sem perda<br />

<strong>de</strong> generalida<strong>de</strong>, que j = m + 1. Seja então<br />

x ′ = (x 1 ′ , x′ 2 , . . . , x′ m, x m+1 ′ , 0, . . . , 0),<br />

com x<br />

m+1 ′ > 0 uma solução viável. Temos<br />

z ′ = z + ∑ j>m(c j − z j )x j<br />

Como nesta soma somente x m+1 > 0,<br />

z ′ − z = (c m+1 − z m+1 )x m+1<br />

Mas tanto (c m+1 − z m+1 ) como x m+1 são positivos, portanto z − z 0 > 0 e<br />

z ′ > z.<br />

Os dois corolários a seguir são consequências simples do teorema 3.5.<br />

Corolário 3.6. Se c j −z j ≤ 0 para todo j, a solução representada no tableau<br />

é ótima.<br />

Versão Preliminar<br />

Corolário 3.7. Se c j − z j = 0 para alguma variável não básica x j , então há<br />

mais <strong>de</strong> uma solução viável básica ótima (e consequentemente infinitas<br />

soluções ótimas).<br />

Proposição 3.8. Se a ij ≤ 0 para todos i e j, o problema é ilimitado.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.6. QUE VARIÁVEL ENTRA NA BASE 51<br />

Po<strong>de</strong> haver mais <strong>de</strong> um j tal que (c j − z j ) > 0, e nem sempre o maior<br />

<strong>de</strong>les é a melhor opção. Precisamos <strong>de</strong> um critério <strong>de</strong> escolha. Dentre os<br />

critérios que po<strong>de</strong>m ser usados merecem ser mencionados os seguintes:<br />

• Maior coeficiente reduzido <strong>de</strong> custo, a regra proposta originalmente<br />

por George Dantzig.<br />

• Maior aumento absoluto no objetivo. Verifica-se quanto uma unida<strong>de</strong><br />

<strong>de</strong> cada variável x j valeria, e multiplica-se por c j . O maior valor<br />

é escolhido.<br />

• Aresta mais íngreme, com o maior aumento no valor do objetivo<br />

para cada unida<strong>de</strong> <strong>de</strong> distância. Se a solução viável básica atual é<br />

x e estamos consi<strong>de</strong>rando outra, x ′ , então a diferença entre os valores<br />

<strong>de</strong> objetivo é c T x ′ − c T x, ou c T (x ′ − x). A distância percorrida <strong>de</strong><br />

x até x ′ é a norma <strong>de</strong> x ′ − x. Assim, escolhemos<br />

c T (x ′ − x)<br />

max<br />

x ′ ||x ′ .<br />

− x||<br />

• Regra <strong>de</strong> Bland: escolha a variável com menor índice. A única vantagem<br />

<strong>de</strong>sta regra é a <strong>de</strong> garantir que não haverá ciclos.<br />

• Escolha aleatória, que po<strong>de</strong> ser uma boa escolha por resultar em<br />

baixa probabilida<strong>de</strong> <strong>de</strong> ciclos, usualmente convergindo mais rápido<br />

que quando a regra <strong>de</strong> Bland é usada.<br />

Estritamente falando, nenhuma das regras é melhor que as outras: po<strong>de</strong>se<br />

construir exemplos on<strong>de</strong> cada uma <strong>de</strong>las leva a convergência mais lenta<br />

que alguma outra regra.<br />

Exemplo 3.9. Consi<strong>de</strong>re o seguinte tableau:<br />

⎛ x 1<br />

−1 x 2 x 36 x 40 x 51 x 42 x 4 b ⎞<br />

0 −1 10<br />

⎜ 1/2 1 −1 0 0 −1/2 1/2 0<br />

⎟<br />

⎝ 1/2 0 −1 1 0 −1/2 −1/2 10 ⎠<br />

−3/2 0 6 0 0 −5/2 1/2 −20<br />

Versão Preliminar<br />

A base é formada por x 5 , x 2 e x 4 . Dentre as não básicas, somente x 3 e x 6 tem<br />

coefciente reduzido <strong>de</strong> custo positivo, portanto é uma <strong>de</strong>stas que <strong>de</strong>ve<br />

entrar na base.<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

52 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

3.7 Que variável sai da base<br />

Sabendo a coluna que entrará na base, nos resta escolher uma coluna da<br />

base para remover. Como estaremos retirando um valor que contribui<br />

para o objetivo, <strong>de</strong>vemos escolher uma variável que, ao ser removida, removerá<br />

do objetivo o menor valor possível (para problemas <strong>de</strong> maximização;<br />

para minimização todo o raciocínio é simétrico).<br />

Seja x = (x 1 , x 2 , . . . , x m , 0, . . . , 0) uma solução viável básica.<br />

a 1 x 1 + a 2 x 2 + . . . + a m x m = b (3.1)<br />

Queremos introduzir a q na base. Quem sai<br />

Observamos que, como A B é base para o espaço-coluna <strong>de</strong> A, a q po<strong>de</strong><br />

ser <strong>de</strong>scrita como combinação <strong>linear</strong> <strong>de</strong> colunas <strong>de</strong> A B :<br />

Seja ε ≥ 0. Calculamos (3.1)−ε(3.2):<br />

e portanto<br />

a 1q a 1 + a 2q a 2 + . . . + a mq a m = a q (3.2)<br />

a 1 (x 1 − a 1q ε) + . . . + a m (x m − a mq ε) = b − εa q<br />

εa q + a 1 (x 1 − a 1q ε) + . . . + a m (x m − a mq ε) = b<br />

εa q + ∑ i≤m<br />

a i (x i − εa iq ) = b<br />

Para ε suficientemente pequeno mas não zero, x i − εa iq é uma solução<br />

viável, mas não básica (com ε = 0 temos a solução básica da qual partimos,<br />

x). Queremos aumentar ε tanto quanto pu<strong>de</strong>rmos, mas sem tornar<br />

nenhum x i − εa iq negativo, porque assim tornaríamos a solução inviável.<br />

Queremos então que, ∀i ≤ m,<br />

x i − εa iq ≥ 0<br />

x i ≥ εa iq<br />

x i<br />

a iq<br />

≥ ε<br />

Assim, escolhemos para <strong>de</strong>ixar a base a coluna a p tal que p seja o índice<br />

que minimiza x i /a iq :<br />

{ }<br />

xi<br />

p = min : a iq > 0<br />

i≤m a iq<br />

Versão Preliminar<br />

Se todos os a iq forem negativos, o programa <strong>linear</strong> é ilimitado.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.8. MÉTODO SIMPLEX (ALGORITMO) 53<br />

Exemplo 3.10. Suponha que c T = (1, 1, 2), e consi<strong>de</strong>re o seguinte tableau.<br />

⎛x 11 x 23 x 30 x 4<br />

−1 x 5 b ⎞<br />

0 4<br />

⎜ 0 −1 0 2 1 5<br />

⎟<br />

⎝ 0 −2 1 3 0 12 ⎠<br />

0 3 0 −7 0 −20<br />

A coluna a 2 entrará na base; verificaremos qual coluna <strong>de</strong>verá sair. Dividimos<br />

cada x i pelos elementos <strong>de</strong> a 4 :<br />

4 ÷ 3 = 4/3<br />

5 ÷ −1 = −5<br />

12 ÷ −2 = −6<br />

Descartamos os valores negativos e <strong>de</strong>terminamos que a primeira variável<br />

básica (x 1 ) <strong>de</strong>ve sair da base.<br />

◭<br />

3.8 Método Simplex (algoritmo)<br />

O algoritmo Simplex é mostrado a seguir em pseudocódigo. Nesta <strong>de</strong>scrição<br />

o critério <strong>de</strong> seleção <strong>de</strong> variável a entrar na base não é explicitado. Ao<br />

escolher a coluna a sair da base, usamos b i , já que por enquanto representamos<br />

a base como i<strong>de</strong>ntida<strong>de</strong>, e nesta situação x i = b i .<br />

construa tableau para uma solu ção viável bá sica<br />

enquanto existe r j > 0:<br />

selecione q tal que r q > 0 // x q entrar á na base<br />

calcule b i /a iq para a iq ≠ 0 e i ≤ m<br />

se todo b i /a iq é negativo : PARE -- problema ilimitado<br />

{ }<br />

p ← min bi<br />

i≤m a iq<br />

, a iq ≤ 0<br />

faça x q entrar na base , retirando x p :<br />

a<br />

pj ′ ← a pj<br />

Versão Preliminar<br />

a pq<br />

a<br />

ij ′ ← a a<br />

ij − a iq pj a pq<br />

(i ≠ p)<br />

retorne x B // solu ção ó tima


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

54 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

Exemplo 3.11. Consi<strong>de</strong>re o problema a seguir.<br />

max 2x 1 + x 2<br />

s.a.: x 1 − x 2<br />

2 ≤ 3<br />

2x 1 + 3x 2 ≤ 20<br />

x ≥ 0.<br />

Adicionamos variáveis <strong>de</strong> folga para transformar as <strong>de</strong>sigualda<strong>de</strong>s em igualda<strong>de</strong>s,<br />

obtendo<br />

max 2x 1 + x 2<br />

s.a.: x 1 − x 2<br />

2 + x 3 = 3<br />

2x 1 + 3x 2 + x 4 = 20<br />

x ≥ 0.<br />

Montamos então o tableau Simplex.<br />

⎛<br />

1 −1/2 1 0<br />

⎞<br />

3<br />

⎝2 3 0 1 20⎠<br />

2 1 0 0 0<br />

Todas as variáveis não básicas tem coeficientes reduzidos positivos, portanto<br />

po<strong>de</strong>mos escolher qualquer uma <strong>de</strong>las. Escolhemos x 1 . Para <strong>de</strong>terminar<br />

a coluna a sair, dividimos cada x i básica pelos elementos correspon<strong>de</strong>ntes<br />

da coluna que entrará (a 1 ):<br />

3/1 = 3 ⇐<br />

20/2 = 10<br />

O menor <strong>de</strong>les é o primeiro, portanto retiraremos então a coluna atualmente<br />

ocupada pela primeira variável básica (x 3 ).<br />

↓<br />

⎛<br />

1 −1/2 1 ↑ 0<br />

⎞<br />

3<br />

⎝ 2 3 0 1 20⎠<br />

2 1 0 0 0<br />

Versão Preliminar<br />

As setas indicam as colunas a entrar e sair da base. Usamos operações<br />

elementares nas linhas do tableau para tornar a primeira coluna igual à<br />

coluna a 3 : como a 11 (que está marcado no tableau) já é um, só precisamos


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.8. MÉTODO SIMPLEX (ALGORITMO) 55<br />

tornar a 21 igual a zero. Então subtraímos da segunda linha duas vezes a<br />

primeira. O tableau resultante é<br />

⎛<br />

1 −1/2 1 0 3<br />

⎞<br />

⎝0 4 −2 1 14 ⎠<br />

0 2 −2 0 −6<br />

Note que agora temos apenas uma variável com coeficiente reduzido positivo.<br />

Ela entrará na base. Para <strong>de</strong>terminar a coluna a sair, calculamos<br />

3/(−1/2) = −6 (≤ 0)<br />

14/4 = 7/2 ⇐<br />

A segunda variável não básica (x 3 ), portanto, entra na base.<br />

⎛ ↓<br />

1 −1/2 1 0 ↑ 3<br />

⎞<br />

⎝0 4 −2 1 14 ⎠<br />

0 2 −2 0 −6<br />

O elemento marcado (a 22 = 4) será transformado em um usando operações<br />

elementares. O tableau resultante é:<br />

⎛<br />

1 0 3/4 1/8<br />

⎞<br />

19/4<br />

⎝0 1 −1/2 1/4 7/2 ⎠<br />

0 0 −1 −1/2 −13<br />

Como agora os coeficientes reduzidos <strong>de</strong> custo são todos negativos, chegamos<br />

a uma solução ótima, com x 1 = 19/4, x 2 = 7/2, e valor do objetivo<br />

igual a 13.<br />

◭<br />

Exemplo 3.12. Mostramos agora que quando não seguimos o método <strong>de</strong><br />

escolha da variável a sair da base, po<strong>de</strong>mos chegar a uma solução inviável.<br />

No exemplo 3.11, a primeira variável que escolhemos para entrar na<br />

base foi x 1 . O tableau era<br />

↓<br />

⎛<br />

1 −1/2 1 0<br />

⎞<br />

3<br />

⎝ 2 3 0 1 20⎠<br />

2 1 0 0 0<br />

Versão Preliminar<br />

Para escolher a variável a sair calculamos 3/1 = 1 e 20/2 = 10, <strong>de</strong>vendo<br />

portanto escolher a primeira coluna da base. Se fizermos o contrário e


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

56 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

escolhermos a segunda coluna, teremos que multiplicar a segunda linha<br />

por 1/2, e <strong>de</strong>pois subtraí-la da primeira. O resultado será<br />

( 0 −2 1 −1/2<br />

) −7<br />

1 3/2 0 1/2 10<br />

No entanto, esta solução é inviável, porque <strong>de</strong>termina x 3 = −7. A variável<br />

x 3 é <strong>de</strong> folga, e se atribuirmos a ela valor negativo, estaríamos violando<br />

uma <strong>de</strong>sigualda<strong>de</strong>.<br />

◭<br />

Teorema 3.13. Se após a execução do método Simplex uma solução ótima<br />

tiver sido encontrara e houver coeficientes reduzidos <strong>de</strong> custo com valor<br />

zero, então há múltiplas (infinitas) soluções ótimas para o problema.<br />

3.9 Obtendo uma solução viável básica inicial<br />

Para problemas do tipo max c T x s.a. Ax ≤ b, as variáveis <strong>de</strong> folga nos<br />

permitiram formar facilmente uma solução básica inicial. Nem todo problema<br />

terá uma variável <strong>de</strong> folga para cada restrição que nos permita obter<br />

<strong>de</strong> maneira simples uma solução inicial.<br />

3.9.1 O método das duas fases<br />

Consi<strong>de</strong>re agora o problema<br />

max : c T x (3.3)<br />

s.a.: Ax = b<br />

x ≥ 0<br />

Uma maneira <strong>de</strong> obter uma solução viável básica é criar variáveis artificiais<br />

(não <strong>de</strong> folga – variáveis sem qualquer significado, cuja única razão <strong>de</strong><br />

existir é permitir-nos encontrar uma solução inicial para o tableau Simplex).<br />

Veja por exemplo o problema a seguir.<br />

min :<br />

∑<br />

yi (3.4)<br />

Versão Preliminar<br />

s.a.: Ax + y = b<br />

x, y ≥ 0<br />

Proposição 3.14. O problema 3.3 é viável se e somente se 3.4 tem ótimo<br />

com y = 0.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.9. OBTENDO UMA SOLUÇÃO VIÁVEL BÁSICA INICIAL 57<br />

Demonstração. Trivialmente, se 3.3 é viável 3.4 também tem ótimo com<br />

y = 0. Se y = 0, claramente po<strong>de</strong>mos <strong>de</strong>sprezar y obtendo solução viável<br />

para 3.3.<br />

Se 3.4 tem ótimo com y > 0, não há como diminuir y mantendo a<br />

solução viável: note que as variáveis y i funcionam como variáveis <strong>de</strong> folga<br />

para o problema original, 3.3:<br />

a 11 x 1 + a 12 x 2 + · · · + a 1n x n<br />

[<br />

+ a1n+1 y 1<br />

]<br />

= b1 ,<br />

e se houver algum y i > 0, temos uma variável <strong>de</strong> folga sendo usada. Isso<br />

significa que o lado esquerdo <strong>de</strong> uma das restrições <strong>de</strong>ve ser estritamente<br />

menor que o direito:<br />

a 11 x 1 + a 12 x 2 + · · · + a 1n x n < b 1 ,<br />

mas o problema original, 3.3, não tem estas variáveis <strong>de</strong> folga, e portanto<br />

é inviável.<br />

<br />

Resolver 3.4 é fácil, com solução básica inicial y = b. A solução final,<br />

se houver, não terá variáveis y i na base (porque o mínimo do objetivo se<br />

dá com y = 0), e portanto serve para 3.3.<br />

Exemplo 3.15.<br />

max : 2x 1 + 5x 2 + 3x 3 + x 4<br />

s.a.: 2x 1 − 2x 2 + x 3 + 2x 4 = 2<br />

x 2 + x 3 − x 4 = 4<br />

4x 1 + 2x 2 − 8x 3 + 4x 4 = 8<br />

x ≥ 0<br />

Como não conseguimos facilmente uma solução viável básica, usamos o<br />

método das duas fases. Inicialmente resolvemos o problema a seguir.<br />

min : y 1 + y 2 + y 3<br />

s.a.: 2x 1 − 2x 2 + x 3 + 2x 4 + y 1 = 2<br />

Versão Preliminar<br />

x 2 + x 3 − x 4 + y 2 = 4<br />

4x 1 + 2x 2 − 8x 3 + 4x 4 + y 3 = 8<br />

x, y ≥ 0


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

58 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

Note que este problema tem uma solução viável básica trivial, com as novas<br />

variáveis artificiais na base. Depois <strong>de</strong> resolvê-lo, chegamos ao seguinte<br />

tableau:<br />

⎛<br />

⎞<br />

1 0 0 9/16 5/16 7/16 3/32 25/8<br />

⎜0 0 1 −3/8 1/8 3/8 −1/16 5/4<br />

⎟<br />

⎝0 1 0 −5/8 −5/4 1/16 1/16 11/4⎠<br />

0 0 0 0 −1 −1 −1 0<br />

O problema tem solução ótima com y = 0 e x = (25/8, 11/4, 5/4) T . Estes<br />

valores para os x i não são ótimos para o problema original, mas são uma<br />

solução viável básica, e po<strong>de</strong>m ser usados como ponto <strong>de</strong> partida. Removemos<br />

as variáveis y i do tableau e passamos a usar os custos originais,<br />

c = (2, 5, 3, 1) T .<br />

⎛<br />

⎞<br />

1 0 0 9/16 25/8<br />

⎜0 0 1 −3/8 5/4<br />

⎟<br />

⎝0 1 0 −5/8 11/4⎠<br />

0 0 0 33/8 95/4<br />

O valor atual do objetivo é 95/4, mas esta solução não é ótima, porque há<br />

um coeficiente reduzido <strong>de</strong> custo maior que zero. Temos<br />

⎛ ⎞<br />

9/16<br />

z = (2, 3, 5) ⎝−3/8⎠ = (−25/8),<br />

−5/8<br />

e portanto c 4 − z 4 = 1 − (−25/8) = 33/8. A variável x 4 entrará na base, e a<br />

primeira básica (x 1 ) <strong>de</strong>ve sair. O pivô é 9/16. Após um passo do Simplex,<br />

obtemos um novo tableau:<br />

⎛<br />

⎞<br />

16/9 0 0 1 50/9<br />

⎜ 2/3 0 1 0 10/3<br />

⎟<br />

⎝ 10/9 1 0 0 56/9 ⎠<br />

−22/3 0 0 0 140/3<br />

Agora sim, temos a solução ótima com x = (0, 56/9, 10/3, 50/9) T e valor<br />

140/3. ◭<br />

Exemplo 3.16. Temos agora o seguinte problema.<br />

Versão Preliminar<br />

max x 1 + x 2<br />

s.a. : x 1 + 2x 2 ≤ 2<br />

3x 1 + 4x 2 ≥ 12<br />

x ≥ 0


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.9. OBTENDO UMA SOLUÇÃO VIÁVEL BÁSICA INICIAL 59<br />

Ao montarmos o tableau, percebemos que não há uma base óbvia que<br />

possamos usar:<br />

⎛<br />

⎞<br />

1 2 1 0 2<br />

⎝3 4 0 −1 12⎠<br />

Adicionamos uma variável extra y 1 (porque não precisamos <strong>de</strong> duas – po<strong>de</strong>mos<br />

usar a folga da primeira linha), e minimizamos y, obtendo o tableau<br />

⎛<br />

1 2 1 0 0<br />

⎞<br />

2<br />

⎝3 4 0 −1 1 12⎠<br />

Como estamos minimizando y, po<strong>de</strong>mos simplesmente maximizar −y. O<br />

vetor c será (0, 0, 0, −1).<br />

⎛<br />

1 2 1 0 0<br />

⎞<br />

2<br />

⎝3 4 0 −1 1 12⎠<br />

3 4 0 −1 0<br />

incluiremos x 1 na base. Verificamos quem <strong>de</strong>veria sair:<br />

2 ÷ 1 =2 ⇐<br />

12 ÷ 3 =4<br />

Retiramos a primeira básica, s 1 .<br />

⎛<br />

1 2 1 0 0<br />

⎞<br />

2<br />

⎝0 −2 −3 −1 1 6⎠<br />

0 −2 −3 −1 0<br />

A solução para este problema é ótima, mas com y 1 = 6. Isto significa que<br />

não há solução para Ax = b, e o problema original não tem solução viável.<br />

◭<br />

3.9.2 O método do M gran<strong>de</strong><br />

O método do gran<strong>de</strong> M realiza a mesma coisa que o método das duas fases<br />

<strong>de</strong> uma única vez.<br />

max : c T x (3.5)<br />

s.a.: Ax = b<br />

x ≥ 0<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

60 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

No objetivo, subtraímos do vetor x um outro vetor, y, com coeficientes<br />

muito gran<strong>de</strong>s. Multiplicaremos um valor gran<strong>de</strong> M por um vetor <strong>de</strong> variáveis<br />

artificiais y.<br />

Exemplo 3.17.<br />

max : c T x − M(1 T y) (3.6)<br />

s.a.: Ax + y = b<br />

x, y ≥ 0<br />

max x 1 + 2x 2<br />

s.a.: − x 1 ≤ −1<br />

x 1 + x 2 ≤ 3<br />

x ≥ 0<br />

A representação gráfica <strong>de</strong>ste problema é mostrada na próxima figura.<br />

Observe que a origem não é viável, por isso não po<strong>de</strong>mos usar (0, 0) como<br />

solução viável básica.<br />

Usando o método do M gran<strong>de</strong> com M = 10, obtemos um novo problema.<br />

max x 1 + 2x 2 − 10(y 1 + y 2 )<br />

s.a.: − x 1 + y 1 ≤ −1<br />

x 1 + x 2 + y 2 ≤ 3<br />

x, y ≥ 0<br />

Versão Preliminar<br />

Observe que as variáveis y i aparecem no objetivo com sinal negativo e<br />

multiplicadas pelo valor M, muito gran<strong>de</strong> – assim, quando M for suficientemente<br />

gran<strong>de</strong>, teremos a solução ótima com y = 0, e o problema<br />

torna-se equivalente ao problema original, <strong>de</strong> on<strong>de</strong> partimos. ◭


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.10. MINIMIZAÇÃO E DESIGUALDADES DO TIPO ≥ 61<br />

O funcionamento do método do M gran<strong>de</strong> é garantido pelas proposições<br />

a seguir.<br />

Proposição 3.18. Se 3.6 é ilimitado e 3.5 é viável, então 3.5 é ilimitado.<br />

Proposição 3.19. Se 3.5 é viável e tem solução ótima finita, então existe um<br />

M > 0 tal que o tableau final do Simplex para 3.6 terá as variáveis artificiais<br />

fora da base.<br />

Proposição 3.20. Se 3.5 é inviável então não existe M > 0 para o qual o<br />

tableau final do Simplex para 3.6 terá as variáveis artificiais fora da base.<br />

Exemplo 3.21.<br />

max : 2x 1 + 5x 2 + 3x 3 + x 4<br />

s.a.: 2x 1 − 2x 2 + x 3 + 2x 4 = 2<br />

x 2 + x 3 − x 4 = 4<br />

4x 1 + 2x 2 − 8x 3 + 4x 4 = 8<br />

x ≥ 0<br />

Usando o método do M gran<strong>de</strong>, com M = 500, reescrevemos o problema<br />

da forma a seguir.<br />

min : 2x 1 + 5x 2 + 3x 3 + x 4 − 500y 1 − 500y 2 − 500y 3<br />

s.a.: 2x 1 − 2x 2 + x 3 + 2x 4 + y 1 = 2<br />

x 2 + x 3 − x 4 + y 2 = 4<br />

4x 1 + 2x 2 − 8x 3 + 4x 4 + y 3 = 8<br />

x, y ≥ 0<br />

Obtemos a solução ótima x = (0, 56/9, 10/3, 50/9) T e y = 0.<br />

3.10 Minimização e <strong>de</strong>sigualda<strong>de</strong>s do tipo ≥<br />

Até agora mantivemos o foco em problemas <strong>de</strong> maximização com <strong>de</strong>sigualda<strong>de</strong>s<br />

do tipo ≤. Era simples obter para esses problemas um tableau<br />

Simplex inicial, porque as variáveis <strong>de</strong> folga <strong>de</strong> das restrições formavam<br />

no tableau uma submatriz i<strong>de</strong>ntida<strong>de</strong>. Em problemas <strong>de</strong> minimização,<br />

que usualmente tem restrições do tipo ≥, esta solução não seria possível,<br />

porque as variáveis <strong>de</strong> folga tem coeficiente −1, e o que surge no tableau<br />

é a i<strong>de</strong>ntida<strong>de</strong> multiplicada por −1. Na última seção mostramos como lidar<br />

com esta situação, adicionando variáveis artificiais. Agora ilustraremos<br />

aquelas técnicas em problemas <strong>de</strong> minimização.<br />

Versão Preliminar<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

62 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

O simplex funciona da mesma forma em problemas <strong>de</strong> maximização<br />

e minimização. A única diferença na execução do algoritmo é que, como<br />

queremos minimizar o objetivo, escolheremos os coeficientes reduzidos<br />

<strong>de</strong> custo com valor negativo ao escolher a coluna a entrar na base, e teremos<br />

uma solução ótima quando só houver coeficientes reduzidos <strong>de</strong><br />

custo positivos.<br />

Exemplo 3.22. Resolveremos o seguinte problema <strong>de</strong> minimização.<br />

min 2x 1 + x 2 + x 3<br />

s.a.: x 1 + x 2 ≥ 2<br />

x 2 + x 3 ≥ 3<br />

x ≥ 0<br />

Com as variáveis <strong>de</strong> folga, o problema é reescrito da seguinte maneira.<br />

min 2x 1 + x 2 + x 3<br />

s.a.: x 1 + x 2 − x 4 = 2<br />

x 2 + x 3 − x 5 = 3<br />

x ≥ 0<br />

Se montarmos o tableau Simplex, não teremos uma escolha simples <strong>de</strong><br />

base inicial.<br />

⎛<br />

1 1 0 −1 0<br />

⎞<br />

2<br />

⎝1 0 1 0 −1 3⎠<br />

Não po<strong>de</strong>mos usar as variáveis <strong>de</strong> folga, porque elas tem coeficientes negativos<br />

no tableau, e portanto seus valores são negativos (x 4 = −2, x 5 =<br />

−3). Também não po<strong>de</strong>mos usar as colunas 2 e 3, que formam uma submatriz<br />

i<strong>de</strong>ntida<strong>de</strong> (referentes às variáveis x 2 e x 3 ), porque a solução seria<br />

inviável: teríamos x 2 = 2, x 3 = 3, e x 2 +x 3 = 5, violando a segunda restrição.<br />

Usamos portanto o método das duas fases. Minimizamos a função y 1 +<br />

y 2 , e o tableau inicial é<br />

⎛<br />

⎞<br />

1 1 0 −1 0 1 0 2<br />

⎝ 1 0 1 0 −1 0 1 3 ⎠<br />

−2 −1 −1 1 1 0 0 −5<br />

Versão Preliminar<br />

No cálculo dos coeficientes <strong>de</strong> custo, temos<br />

( )<br />

1 1 0 −1 0<br />

z = (1, 1)<br />

= (2, 1, 1, −1, −1),<br />

1 0 1 0 −1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.11. SOLUÇÕES DEGENERADAS 63<br />

e portanto c T N − z é (−2, −1, −1, 1, 1). Incluiremos x 1 na base, e y 1 sairá. O<br />

próximo tableau é<br />

⎛<br />

1 1 0 −1 0 1 0 2<br />

⎞<br />

⎝0 −1 1 1 −1 −1 1 1 ⎠<br />

0 1 −1 −1 −1 0 0 −1<br />

( )<br />

1 0 −1 0 1<br />

z = (0, 1)<br />

= (−1, 1, 1, −1, −1),<br />

−1 1 1 −1 −1<br />

e c T N − z é (1, −1, −1, −1, 0). Escolhemos x 3 para entrar na base. A coluna<br />

a sair da base é a segunda (y 2 ). A parte superior do tableau não mudará.<br />

Apenas recalculamos os coeficientes reduzidos <strong>de</strong> custo.<br />

⎛<br />

1 1 0 −1 0 1 0<br />

⎞<br />

2<br />

⎝0 −1 1 1 −1 −1 1 1⎠<br />

0 0 0 0 0 0 0 0<br />

z = (0, 0), A N = (0, 0, 0, 0, 0).<br />

Temos então c T N<br />

− z = 0, e a solução nos dá y = 0 – o que significa que<br />

o problema original é viável. Retiramos y do tableau e mudamos para a<br />

função objetivo original, c T = (2, 1, 1).<br />

⎛<br />

1 1 0 −1 0 2<br />

⎞<br />

⎝0 −1 1 1 −1 1 ⎠<br />

0 0 0 1 1 −3<br />

Ao calcularmos novamente os coeficientes reduzidos <strong>de</strong> custo, temos<br />

( )<br />

0 −1 0<br />

z = (2, 1)<br />

= (1, −1, −1).<br />

1 1 −1<br />

Assim, c T N<br />

− z = (0, 1, 1). A solução já é ótima.<br />

◭<br />

3.11 Soluções <strong>de</strong>generadas<br />

Versão Preliminar<br />

Definição 3.23 (solução <strong>de</strong>generada). Seja um problema <strong>de</strong> programação<br />

<strong>linear</strong> com n variáveis e m restrições. Uma solução viável básica é <strong>de</strong>generada<br />

se uma <strong>de</strong> suas variáveis básicas é igual a zero.<br />

Um problema <strong>de</strong> programação <strong>linear</strong> é <strong>de</strong>generado se uma <strong>de</strong> suas soluções<br />

viáveis básicas é <strong>de</strong>generada.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

64 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

Equivalentemente, um tableau representa uma solução <strong>de</strong>generada se<br />

a coluna das constantes (b) contém algum valor igual a zero.<br />

Exemplo 3.24. Consi<strong>de</strong>re o seguinte problema.<br />

max x 1 + x 2 + x 3<br />

s.a. : x 1 + x 2 ≤ 1<br />

x 3 ≤ 1<br />

x 1 + x 3 ≤ 2<br />

x ≥ 0.<br />

Quando usamos o método Simplex para resolvê-lo, chegamos ao seguinte<br />

tableau:<br />

⎛<br />

⎞<br />

1 0 0 1 0 0 1<br />

⎜0 0 1 0 1 0 1<br />

⎟<br />

⎝0 −1 0 −1 −1 1 0 ⎠<br />

0 0 0 −1 −1 0 −2<br />

com x 1 = 1, x 2 = 0 e x 3 = 1. Esta solução é <strong>de</strong>generada porque x 2 é<br />

zero.<br />

◭<br />

Soluções <strong>de</strong>generadas acontecem quando uma restrição redundante<br />

toca o politopo.<br />

Exemplo 3.25. Temos a seguir um exemplo <strong>de</strong> problema <strong>de</strong>generado.<br />

max x 1 + x 2<br />

s.a.: x 1 − x 2 ≤ 3<br />

− x 1 + x 2 ≤ 3<br />

x 1 ≤ 6<br />

Versão Preliminar<br />

3x 1 − x 2 ≤ 15<br />

x ≥ 0.<br />

A última restrição é redundante, tocando apenas no ponto (6, 3) do poliedro.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.11. SOLUÇÕES DEGENERADAS 65<br />

A seguir temos o mesmo problema, trocadas as <strong>de</strong>sigualda<strong>de</strong>s por igualda<strong>de</strong>s.<br />

max x 1 + x 2<br />

s.a.: x 1 − x 2 + x 3 = 3<br />

− x 1 + x 2 + x 4 = 3<br />

x 1 + x 5 = 6<br />

3x 1 − x 2 + x 6 = 15<br />

x ≥ 0.<br />

Montamos o tableau Simplex para o problema:<br />

⎛<br />

⎞<br />

1 −1 1 0 0 0 3<br />

−1 1 0 1 0 0 3<br />

⎜ 1 0 0 0 1 0 6<br />

⎟<br />

⎝ 3 −1 0 0 0 1 15⎠<br />

1 1 0 0 0 0 0<br />

Po<strong>de</strong>mos escolher tanto x 1 como x 2 para entrar na base. Escolhemos x 1 .<br />

Para <strong>de</strong>terminar a variável a sair, calculamos<br />

3 ÷ 1 = 3 ⇐<br />

3 ÷ −1 = −3<br />

6 ÷ 1 = 6<br />

15 ÷ 3 = 5<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

66 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

e escolhemos a primeira variável não básica (x 3 ). O novo tableau é<br />

⎛<br />

⎞<br />

1 −1 1 0 0 0 3<br />

0 0 1 1 0 0 6<br />

⎜0 1 −1 0 1 0 3<br />

⎟<br />

⎝0 2 −3 0 0 1 6 ⎠<br />

0 2 −1 0 0 0 −3<br />

Agora só po<strong>de</strong>mos incluir x 2 na base, porque é a única não básica com<br />

coeficiente reduzido <strong>de</strong> custo acima <strong>de</strong> zero. Para <strong>de</strong>terminar a variável a<br />

sair da base, novamente calculamos<br />

3 ÷ −1 = −3<br />

3 ÷ 0 = ...<br />

3 ÷ 1 = 3 ⇐<br />

6 ÷ 2 = 3 ⇐<br />

Temos um empate entre x 5 e x 6 . Estas são as variáveis <strong>de</strong> folga das duas<br />

restrições que tocam o ponto (3, 6), uma <strong>de</strong>las redundante. O fato <strong>de</strong> po<strong>de</strong>rmos<br />

retirar qualquer uma <strong>de</strong>stas variáveis da base significa que po<strong>de</strong>mos<br />

retirar a folga <strong>de</strong> qualquer uma das duas restrições para incluir x 2 .<br />

Escolhemos x 6 para sair, e o novo tableau é<br />

⎛<br />

⎞<br />

1 0 −1/2 0 0 1/2 6<br />

0 0 1 1 0 0 6<br />

⎜0 0 1/2 0 1 −1/2 0<br />

⎟<br />

⎝0 1 −3/2 0 0 1/2 3 ⎠<br />

0 0 2 0 0 −1 −9<br />

O valor <strong>de</strong> x 5 é zero, e a solução é <strong>de</strong>generada.<br />

Agora incluiremos x 3 , porque é nossa única opção.<br />

6 ÷ −1/2 = −12<br />

6 ÷ 1 = 6<br />

0 ÷ 1/2 = 0 ⇐<br />

3 ÷ −3/2 = −2<br />

A variável a sair é x 5 , e o novo tableau é<br />

⎛<br />

⎞<br />

1 0 0 0 1 0 6<br />

0 0 0 1 −2 1 6<br />

⎜0 0 1 0 2 −1 0<br />

⎟<br />

⎝0 1 0 0 3 −1 3 ⎠<br />

0 0 0 0 −4 1 −9<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.12. MÉTODO SIMPLEX REVISADO 67<br />

O valor <strong>de</strong> x 3 é zero, e temos outra solução <strong>de</strong>generada. Observe que o<br />

valor do objetivo não mudou.<br />

Agora incluiremos x 6 . A variável a sair será x 4 , e o tableau final é<br />

⎛<br />

⎞<br />

1 0 0 0 1 0 6<br />

0 0 0 1 −2 1 6<br />

⎜0 0 1 1 0 0 6<br />

⎟<br />

⎝0 1 0 1 1 0 9 ⎠<br />

0 0 0 −1 −2 0 −15<br />

Todos os coeficientes reduzidos <strong>de</strong> custo são negativos, portanto temos<br />

uma solução ótima, com x 1 = 6, x 2 = 9 e valor 15.<br />

◭<br />

Teorema 3.26. Um problema <strong>de</strong> programação <strong>linear</strong> tem uma restrição<br />

redundante que toca o politopo é <strong>de</strong>generado.<br />

Teorema 3.27. O uso da regra <strong>de</strong> Bland para escolher a coluna a entrar na<br />

base elimina a possibilida<strong>de</strong> <strong>de</strong> ciclos.<br />

3.12 Método Simplex Revisado<br />

O método Simplex mantém em memória – e percorre a cada passo – uma<br />

matriz com n colunas e m linhas. Quando n é muito maior que m, muitas<br />

<strong>de</strong>ssas colunas não são usadas durante a execução do algoritmo. Geometricamente,<br />

o caminho da solução inicial até a ótima não percorre todos<br />

os pontos extremos, mas um pequeno número <strong>de</strong>les – e isto é particularmente<br />

relevante quando a dimensão do politopo é alta. Cada vez que uma<br />

coluna entra na base, todas as colunas <strong>de</strong> A N são atualizadas, mesmo que<br />

nunca venham a ser usadas. O método Simplex revisado foi <strong>de</strong>senvolvido<br />

como uma forma <strong>de</strong> evitar o armazenamento e processamento <strong>de</strong>ssa informação<br />

<strong>de</strong>snecessária.<br />

Antes <strong>de</strong> mais nada, listamos a informação <strong>de</strong> que o Simplex precisa<br />

para cada operação:<br />

• Coeficientes reduzidos <strong>de</strong> custo para selecionar a coluna a entrar na<br />

base e para verificar otimalida<strong>de</strong> <strong>de</strong> soluções;<br />

Versão Preliminar<br />

• A coluna que entra na base e os valores <strong>de</strong> x B para selecionar a coluna<br />

a sair da base;<br />

• Os valores das variáveis básicas, para que possamos reportar a solução<br />

ótima quando a encontrarmos.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

68 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

Tudo mais é <strong>de</strong>snecessário.<br />

Como já fizemos antes na seção 3.2, representaremos o tableau simplex<br />

dividindo A, x e c em duas partes cada um – uma parte relativa às<br />

variáveis básicas e outra relativa às não básicas. Como <strong>de</strong>notamos<br />

A = ( )<br />

A B A N<br />

c T = ( c T )<br />

B<br />

cT N<br />

x = ( x B x N<br />

)<br />

,<br />

a <strong>de</strong>scrição <strong>de</strong> problemas <strong>de</strong> programação <strong>linear</strong> po<strong>de</strong> ser feita da seguinte<br />

maneira:<br />

O tableau simplex é<br />

max c T B x B + c T N x N<br />

s.a.: A B x B + A N x N ≤ b<br />

x B , x N ≥ 0.<br />

( ) ⎛<br />

⎞<br />

A b<br />

= ⎝ A B A N b<br />

⎠<br />

c T 0 c T B<br />

c T N 0<br />

Usamos operações elementares para obter coeficientes 1 nas variáveis básicas,<br />

<strong>de</strong> forma que a base seja a i<strong>de</strong>ntida<strong>de</strong>. Multiplicamos a parte superior<br />

por A −1<br />

B , obtendo<br />

⎛<br />

⎝ I A−1 B A N<br />

⎞<br />

A −1<br />

B b ⎠<br />

c T B<br />

c T N<br />

0<br />

Finalmente, subtraímos da última linha c T B<br />

multiplicado pela parte superior:<br />

⎛<br />

⎞<br />

⎝ I A−1 B A N A −1<br />

B b ⎠<br />

0 c T N − cT B A−1 B A N −c T B A−1 B b<br />

Observe na última linha que r T N = cT N −cT B A−1 B A N representa os coeficientes<br />

reduzidos <strong>de</strong> custo (c j −z j ). Já −c T B A−1 B b é igual a −cT B x B, ou −z 0 , e portanto<br />

o tableau é<br />

⎛<br />

⎞<br />

⎝ I A−1 B A N A −1<br />

B b ⎠<br />

0 r T N<br />

−z 0<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.12. MÉTODO SIMPLEX REVISADO 69<br />

Temos no tableau original n + 1 colunas, e cada vez que trocarmos uma<br />

variável da base, modificaremos todas elas.<br />

O algoritmo para o método Simplex revisado guarda apenas A −1<br />

B , porque<br />

ela nos permite gerar qualquer informação do tableau que precisemos,<br />

inclusive os valores <strong>de</strong> c j e x j :<br />

⎛<br />

⎞<br />

A −1<br />

⎝ B<br />

A −1<br />

B b ⎠<br />

−c T B A−1 B<br />

−z 0<br />

Temos agora um tableau com m + 1 colunas. Detalhamos a seguir as operações<br />

que o Simplex fará usando esta representação. Denotamos por a<br />

iq<br />

′<br />

o i-ésimo elemento do vetor coluna a q:<br />

′<br />

⎛ ⎞<br />

a 1 q<br />

a q ′ a 2 q<br />

= ⎜ ⎟<br />

⎝ . ⎠ .<br />

a m q<br />

• Coeficientes reduzidos <strong>de</strong> custo: para a variável x j , observamos que<br />

c j − z j = c j − c T B A−1 B a j.<br />

• A coluna da variável x q a entrar na base: basta escrevê-la usando a<br />

nova base, A −1<br />

B :<br />

a q ′ = A −1<br />

B a q<br />

• Atualização do tableau: para atualizar todos os valores, efetuamos<br />

pivoteamento em a pq ′ (o elemento na p-ésima linha do vetor coluna<br />

a q ).<br />

calcule A −1<br />

B<br />

repita:<br />

λ T ← c T B A−1 B<br />

calcule r T N , um <strong>de</strong> cada vez , parando ao encontrar r i > 0:<br />

r j ← c j − λ T a j<br />

se r T N ≤ 0 PARE : x B ó timo<br />

a q ← escolhe_coluna_a_entrar ()<br />

a q ′ ← A −1<br />

B a q<br />

se a q ′ ≤ 0 PARE : problema ilimitado<br />

calcule b i /a<br />

iq ′ e <strong>de</strong>termine a p<br />

atualize A −1<br />

B<br />

e a solu ção A −1<br />

B b<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

70 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

É comum que implementações não armazenem A −1<br />

B<br />

explicitamente,<br />

mas sim por sua fatoração LU. A fatoração LU <strong>de</strong> A −1<br />

B<br />

é apenas atualizada,<br />

sendo recalculada apenas <strong>de</strong> tempos em tempos. Isso traz um equilíbrio<br />

entre eficiência e precisão numérica.<br />

Exercícios<br />

Ex. 26 — Coloque os problemas na forma padrão para que possam ser resolvidos<br />

pelo método Simplex, e <strong>de</strong>pois use o Simplex para resolvê-los,<br />

mostrando os tableaux intermediários. Resolva cada um usando a regra<br />

<strong>de</strong> Bland e também alguma outra regra.<br />

(i) max 2x 1 + x 2 + 3x 3<br />

s.a. : x 1 − x 2 = 5<br />

2x 1 + x 3 = 10<br />

x 2 + 2x 3 ≤ 9<br />

x ≥ 0<br />

(iii) max 2x 1 + x 2 − x 3<br />

s.a. : x 1 + x 2 ≤ 3<br />

2x 2 + x 3 = 5<br />

x 1 − 3x 3 = 4<br />

x ≥ 0<br />

(ii) max 3x 1 + 2x 2<br />

s.a. : x 1 ≥ 1<br />

x 1 ≤ 2<br />

x 2 ≥ 1<br />

x 2 ≤ 2<br />

x ≥ 0<br />

(iv) max 2x 1 + x 2<br />

s.a. : x 1 + x 2 ≥ 3<br />

2x 2 + x 3 = 5<br />

x ≥ 0<br />

Ex. 27 — Coloque os problemas na forma padrão para que possam ser resolvidos<br />

pelo método Simplex, e <strong>de</strong>pois use o Simplex para resolvê-los,<br />

mostrando os tableaux intermediários. Use o método das duas fases em<br />

dois problemas, e o do M gran<strong>de</strong> em dois outros.<br />

(ii) min 2x 1 − x 2<br />

(i) min 2x 1 + 4x 2 + 8x 3<br />

s.a. : x 1 ≥ 2<br />

s.a. : x 1 + x 2 = 5<br />

x 1 ≤ 4<br />

x 1 + x 3 ≥ 4<br />

x 2 ≥ 2<br />

3x 2 + x 3 ≥ 5<br />

x 2 ≤ 4<br />

x ≥ 0<br />

x ≥ 0<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

3.12. MÉTODO SIMPLEX REVISADO 71<br />

(iii) min x 1 − x 2 + 2x 3<br />

s.a. : x 1 + x 2 ≥ 5<br />

x 2 + 3x 3 = 8<br />

x 1 − x 3 ≥ 4<br />

x ≥ 0<br />

(iv) min 8x 1 + 3x 2<br />

s.a. : 5x 1 − x 2 = 3<br />

x 2 + 3x 3 = 5<br />

x ≥ 0<br />

Ex. 28 — Implemente o método Simplex: primeiro, apenas para restrições<br />

na forma <strong>de</strong> <strong>de</strong>sigualda<strong>de</strong>, Ax ≤ b. Depois permitindo igualda<strong>de</strong>s, usando<br />

a técnica <strong>de</strong>scrita neste Capítulo para obter soluções viáveis básicas iniciais.<br />

Posteriormente, experimente com diferentes métodos para escolher<br />

a coluna a entrar na base.<br />

Ex. 29 — Demonstre rigorosamente os Corolários 3.6 e 3.7.<br />

Ex. 30 — Demonstre a Proposição 3.8. É realmente necessário verificar<br />

todos os a ij em A Explique.<br />

Ex. 31 — Prove que quando usamos o método Simplex em um problema<br />

não <strong>de</strong>generado, uma coluna que sai da base nunca mais é reinserida.<br />

Ex. 32 — O que acontece quando usamos o método do M gran<strong>de</strong> em um<br />

problema inviável E em um problema ilimitado<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

72 CAPÍTULO 3. O MÉTODO SIMPLEX<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 4<br />

Dualida<strong>de</strong><br />

A todo problema <strong>de</strong> maximização po<strong>de</strong>-se associar um problema <strong>de</strong> minimização,<br />

chamado <strong>de</strong> dual do problema. Neste Capítulo estudamos a<br />

dualida<strong>de</strong> em programas <strong>linear</strong>es.<br />

Definição 4.1 (Primal e dual). Consi<strong>de</strong>re o seguinte programa <strong>linear</strong>:<br />

max c T x<br />

s.a.: Ax ≤ b<br />

x ≥ 0.<br />

Damos o nome a este P.L. <strong>de</strong> primal, e dizemos que o P.L. a seguir é seu<br />

dual.<br />

min b T y<br />

s.a.: A T y ≥ c<br />

y ≥ 0.<br />

Se um problema tem restrições em forma <strong>de</strong> igualda<strong>de</strong>, po<strong>de</strong>mos construir<br />

seu dual primeiro passando o problema para a forma <strong>de</strong> <strong>de</strong>sigualda<strong>de</strong>,<br />

observando que a restrição<br />

Versão Preliminar<br />

po<strong>de</strong> ser reescrita como<br />

a i1 x 1 + . . . + a in x n = b i<br />

a i1 x 1 + . . . + a in x n ≤ b i<br />

−a i1 x 1 − . . . − a in x n ≤ −b i .<br />

<br />

73


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

74 CAPÍTULO 4. DUALIDADE<br />

Exemplo 4.2. Determinaremos o dual do seguinte problema.<br />

max x 1 + 2x 2 + x 3<br />

s.a.: x 1 − 3x 2 = 5<br />

− x 1 + 2x 2 − x 3 ≤ 3<br />

x ≥ 0.<br />

A primeira restrição é uma igualda<strong>de</strong>, portanto a transformamos em duas<br />

<strong>de</strong>sigualda<strong>de</strong>s,<br />

{<br />

x 1 − 3x 2 ≤ 5<br />

x 1 − 3x 2 = 5 =⇒<br />

−x 1 + 3x 2 ≤ −5,<br />

obtendo<br />

max x 1 + 2x 2 + x 3<br />

s.a.: x 1 − 3x 2 ≤ 5<br />

− x 1 + 3x 2 ≤ −5<br />

− x 1 + 2x 2 − x 3 ≤ 3<br />

x ≥ 0.<br />

Agora po<strong>de</strong>mos obter o dual do problema:<br />

min 5y 1 − 5y 2 + 3y 3<br />

s.a.: y 1 − y 2 − y 3 ≥ 1<br />

− 3y 1 + 3y 2 + 2y 3 ≥ 2<br />

− y 3 ≥ 1<br />

y ≥ 0.<br />

No entanto, este programa <strong>linear</strong> tem tres variáveis, e o primal do qual<br />

partimos originalmente tem duas restrições apenas.<br />

◭<br />

O Exercício 38 pe<strong>de</strong> a <strong>de</strong>monstração do Teorema 4.3, que consiste na<br />

formalização do que foi visto no exemplo anterior.<br />

Teorema 4.3. Consi<strong>de</strong>re um programa <strong>linear</strong> <strong>de</strong> maximização. É possível<br />

obter um programa <strong>linear</strong> dual a este, mas com o número <strong>de</strong> variáveis do<br />

dual exatamente igual ao número <strong>de</strong> restrições do primal. Se a i-ésima<br />

restrição do primal é uma<br />

Versão Preliminar<br />

• igualda<strong>de</strong>: então a variável correspon<strong>de</strong>nte y i no dual será livre (ou<br />

seja, po<strong>de</strong>rá assumir valores negativos)<br />

• <strong>de</strong>sigualda<strong>de</strong> ≥: então a variável y i do dual assumirá valores ≤ 0.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

4.1. INTERPRETAÇÕES DO DUAL 75<br />

4.1 Interpretações do dual<br />

Há duas interpretações importantes para o dual <strong>de</strong> um programa <strong>linear</strong>: a<br />

operacional e a econômica.<br />

4.1.1 Interpretação operacional<br />

Os coeficientes reduzidos <strong>de</strong> custo (na última linha do tableau Simplex)<br />

representam, para cada variável não básica, o quanto po<strong>de</strong>ríamos melhorar<br />

a função objetivo se ela fosse incluída na base. Esses coeficientes mudam<br />

à medida que o Simplex tenta encontrar soluções que se mantenham<br />

viáveis, mas mais próximas do ótimo. O vetor b representa o limite da viabilida<strong>de</strong><br />

– que não muda durante a execução do Simplex.<br />

No problema dual, a função a ser otimizada é b T y – ou seja, procuramos<br />

otimizar a distância até a viabilida<strong>de</strong>. Já as restrições são da forma<br />

Ay ⋚ c – e como c não muda, estamos mantendo a condição <strong>de</strong> otimalida<strong>de</strong>.<br />

Assim, o dual <strong>de</strong> um programa <strong>linear</strong> representa o problema <strong>de</strong>,<br />

dada uma solução qualquer que tenha valor ótimo, encontrar aquela mais<br />

próxima possível da viabilida<strong>de</strong>, mantendo o mesmo valor.<br />

4.1.2 Interpretação econômica<br />

Consi<strong>de</strong>re o problema <strong>de</strong> mistura a seguir: uma empresa produz refeições<br />

prontas para companhias aéreas. Em cada refeição po<strong>de</strong>m ser usadas<br />

quantida<strong>de</strong>s diferentes <strong>de</strong> alguns ingredientes.<br />

Ao resolver o problema primal, maximizamos o lucro total obtido com<br />

a produção das refeições escolhendo quanto usar <strong>de</strong> cada ingrediente. Resolvendo<br />

o problema dual, minimizamos o custo <strong>de</strong> cada recurso (e para<br />

isso diminuímos a quantida<strong>de</strong> usada, claro), <strong>de</strong> forma a manter o valor<br />

ótimo <strong>de</strong> lucro.<br />

Em outras palavras, resolver o primal significa partir <strong>de</strong> quantida<strong>de</strong>s<br />

<strong>de</strong> recursos menor que a ótima e aumentá-las até chegar ao ótimo, nunca<br />

usando mais recursos que o possível; resolver o dual significa partir <strong>de</strong><br />

uma quantida<strong>de</strong> <strong>de</strong> recursos maior que o disponível, e diminuí-las (diminuindo<br />

o custo) até chegar ao mínimo possível.<br />

Versão Preliminar<br />

4.2 Lema <strong>de</strong> Farkas<br />

Nesta seção tratamos do Lema <strong>de</strong> Farkas. Para uma melhor compreensão<br />

<strong>de</strong>ste Lema, usaremos as <strong>de</strong>finições <strong>de</strong> combinaçõs positivas e cones<br />

gerados por vetores.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

76 CAPÍTULO 4. DUALIDADE<br />

Definição 4.4 (combinação positiva). Uma combinação positiva <strong>de</strong> um conjunto<br />

<strong>de</strong> vetores é uma combinação <strong>linear</strong> <strong>de</strong>stes vetores, tendo coeficientes<br />

não negativos.<br />

<br />

Definição 4.5 (cone convexo). O cone convexo gerado por um conjunto <strong>de</strong><br />

vetores é o conjunto <strong>de</strong> todas as combinações positivas daquele conjunto.<br />

<br />

Exemplo 4.6. Seja V = {(2, 0) T , (1, 1) T }. O cone gerado por estes dois vetores<br />

é<br />

{<br />

} {<br />

}<br />

a(2, 0) + b(1, 1) : a, b ≥ 0 = (2a, 0) T + (b, b) T : a, b ≥ 0<br />

{<br />

}<br />

= (2a + b, b) T : a, b ≥ 0<br />

{<br />

}<br />

= (x, y) T : x > y ≥ 0 .<br />

Os dois vetores são mostrados na figura a seguir; o cone formado por eles<br />

é composto <strong>de</strong> todos os vetores na área sombreada.<br />

v 2<br />

Observe que para <strong>de</strong>screver um vetor <strong>de</strong> R 2 fora do cone como combinação<br />

<strong>linear</strong> <strong>de</strong> v 1 e v 2 , teríamos que usar coeficientes negativos:<br />

O vetor w = (1.5, 1) está contido no cone, e sua <strong>de</strong>scrição é<br />

z<br />

v 2<br />

Versão Preliminar<br />

w<br />

v 1<br />

v 1<br />

w = 1 4 (2, 0)T + (1, 1) T ,<br />

com coeficientes positivos 1/4, 1. Já o vetor fora do cone, (1, 2) T é<br />

z = − 1 2 (2, 0)T + 2(1, 1) T ,<br />

com um coeficiente negativo.<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

4.2. LEMA DE FARKAS 77<br />

Relembramos que a multiplicação <strong>de</strong> uma matriz por um vetor coluna<br />

<strong>de</strong>screve a combinação <strong>linear</strong> das colunas com os coeficientes dados no<br />

vetor:<br />

⎛ ⎞<br />

x 1<br />

(<br />

Ax = a 1 , a 2 , . . . , a n) x 2<br />

⎜ ⎟<br />

⎝ . ⎠<br />

x n<br />

= x 1 a 1 + x 2 a 2 + · · · + x n a n .<br />

Assim, o cone gerado pelas colunas <strong>de</strong> A é o conjunto <strong>de</strong> combinações<br />

positivas <strong>de</strong> suas colunas, ou<br />

{ }<br />

Ax, x ≥ 0 .<br />

O Lema <strong>de</strong> Farkas (Lema 4.7) representa a essência da dualida<strong>de</strong> em<br />

programação <strong>linear</strong>. O Lema diz, geometricamente, que dados n vetores,<br />

um vetor qualquer x po<strong>de</strong> estar <strong>de</strong>ntro do cone (e neste caso será combinação<br />

positiva dos outros) ou fora do cone (quando é combinação não<br />

positiva dos outros) – e nunca ambos ao mesmo tempo.<br />

Em essencia, o Lema <strong>de</strong> Farkas diz que o vetor b po<strong>de</strong> pertencer ao<br />

cone gerado por A ou não.<br />

Seja S a revião viável, <strong>de</strong>finida por um programa <strong>linear</strong> Ax = b. Então<br />

exatamente uma das duas situações ocorre:<br />

i) b pertence ao cone gerado por A, portanto temos Ax = b, com x ≥ 0<br />

(porque para pertencer ao cone <strong>de</strong>ve ser combinação positiva das<br />

colunas <strong>de</strong> A).<br />

a n<br />

b<br />

a 1<br />

Versão Preliminar<br />

ii) b não pertence ao cone gerado por A. Neste caso, <strong>de</strong>ve haver algum<br />

z, formando ângulo menor que 90 o com b, mas formando mais <strong>de</strong><br />

90 o com o cone <strong>de</strong>finido por A.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

78 CAPÍTULO 4. DUALIDADE<br />

z<br />

b<br />

Mostramos na figura apenas a 1 e a n ; os outros vetores a i estão entre<br />

eles; o semiespaço <strong>de</strong>terminado pela linha leve consiste dos vetores<br />

com ângulo menor que 90 o com b; o cone à esquerda e abaixo é<br />

formado pelos vetores com ângulo maior ou igual que 90 o com o<br />

cone <strong>de</strong> A.<br />

Assim, existe z tal que<br />

– o ângulo entre colunas <strong>de</strong> A e z é maior que 90 o , logo A T z ≤ 0;<br />

– o ângulo entre b e z é menor que 90 o , logo b T z > 0.<br />

Se tomarmos y = −z, teremos então A T y ≥ 0 para algum y tal que<br />

b T y < 0.<br />

Embora a discussão geométrica até este ponto possa ser convincente<br />

para o caso em que tratamos <strong>de</strong> vetores em R 2 , enunciamos e <strong>de</strong>monstramos<br />

algebricamente a seguir o Lema <strong>de</strong> Farkas.<br />

Lema 4.7 (<strong>de</strong> Farkas). Sejam A uma matriz e b um vetor, sendo que o número<br />

<strong>de</strong> linhas <strong>de</strong> A é igual à quantida<strong>de</strong> <strong>de</strong> elementos <strong>de</strong> b. Então exatamente<br />

um dos dois sistemas a seguir tem solução.<br />

i) Ax = b, para algum x ≥ 0.<br />

Versão Preliminar<br />

ii) y T A ≥ 0 para algum y tal que b T y < 0.<br />

Esta <strong>de</strong>monstração está incompleta. Outra <strong>de</strong>monstração diferente<br />

será usada em uma futura versão do texto.<br />

a 1<br />

a n


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

4.2. LEMA DE FARKAS 79<br />

Demonstração. (i ⇒ não ii) Suponha que (i) valha, e Ax = b tenha<br />

solução positiva. Se existe y tal que y T A ≥ 0, então<br />

y T A ≥ 0 T<br />

y T Ax ≥ 0 T x = 0 (porque x, Ay ≥ 0)<br />

y T b ≥ 0 (Ax = b)<br />

e o sistema (ii) não po<strong>de</strong> ter solução.<br />

(não i ⇒ ii) – esta parte é omitida por ora.<br />

Fica claro, do enunciado do Lema <strong>de</strong> Farkas, que ele tem forte relação<br />

com o conceito <strong>de</strong> dualida<strong>de</strong> – o produto A T y, com y não restrito a<br />

positivos, é parte da <strong>de</strong>scrição do dual <strong>de</strong> Ax = b.<br />

Exemplo 4.8. Sejam<br />

⎛<br />

1 3<br />

⎞<br />

2<br />

⎛ ⎞<br />

3<br />

A = ⎝0 −1 4⎠ , b = ⎝5⎠ .<br />

2 1 5<br />

1<br />

O sistema Ax = b só tem a solução x = (3, −5, 30/19) T , portanto o sistema<br />

A T y ≥ 0 <strong>de</strong>ve ter solução para algum y com b T y < 0. E realmente, a<br />

solução y = (2, −3, 4) T nos dá<br />

A T y = (10, 13, 12) T , yb = 3(2) + 5(−3) + 1(4) = −5.<br />

Exemplo 4.9. O Lema <strong>de</strong> Farkas vale para quaisquer matrizes, não apenas<br />

quadradas. Por exemplo, sejam<br />

( ) ( 1 3 1<br />

4<br />

A =<br />

, b = .<br />

0 1 2<br />

1)<br />

As soluções <strong>de</strong>ste sistema sào da forma<br />

x 1 − 2x 3 = 1,<br />

o que inclui a solução x = 5, 2) T . O sistema A T y ≥ 0 portanto não po<strong>de</strong><br />

ter solução com y T b < 0. Realmente,<br />

⎛ ⎞ ⎛ ⎞ ⎛ ⎞<br />

1 0 y 1 0<br />

⎝3 1⎠<br />

⎝y 2<br />

⎠ = ⎝0⎠<br />

1 2 y 3 0<br />

Versão Preliminar<br />

só tem a solução trivial, com y = 0.<br />

<br />

◭<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

80 CAPÍTULO 4. DUALIDADE<br />

4.3 Teoremas <strong>de</strong> dualida<strong>de</strong><br />

As soluções ótimas para o primal e o dual tem o mesmo valor, como mostraremos<br />

nos próximos teoremas.<br />

Teorema 4.10 (dualida<strong>de</strong> fraca). Sejam x e y soluções para o primal e o<br />

dual <strong>de</strong> um programa <strong>linear</strong>. Então c T x ≤ b T y.<br />

Demonstração.<br />

c ≤ A T y<br />

c T ≤ y T A<br />

c T x ≤ y T Ax<br />

≤ y T b<br />

= b T y <br />

Corolário 4.11. Se x 0 e y 0 são soluções para o primal e o dual, e c T x 0 =<br />

b T y 0 então ambas são soluções ótimas.<br />

Demonstração. Seja x solução viável para o primal. Então c T x ≤ b T y 0 =<br />

c T x 0 .<br />

<br />

As restrições <strong>de</strong> um programa <strong>linear</strong> max c T x, s.a Ax ≤ b são da forma<br />

a i x ≤ b i , on<strong>de</strong> a i é a i-ésima linha <strong>de</strong> A. Estas restrições po<strong>de</strong>m ser visualizadas<br />

como hiperplanos, cada um <strong>de</strong>finindo um semiespaço. A solução<br />

ótima está exatamente na interseção das restrições.<br />

a 1<br />

a 2<br />

a 3<br />

Na figura anterior, a solução ótima é a interseção das restrições a 1 x =<br />

b 1 e a 2 x = b 2 , e a 3 é redundante.<br />

Versão Preliminar<br />

Lema 4.12. Se o ponto ótimo <strong>de</strong> um programa <strong>linear</strong> não pertence ao hiperplano<br />

<strong>de</strong>finido por uma das restrições, ela é redundante e po<strong>de</strong> ser<br />

removida sem que a solução ótima mu<strong>de</strong>.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

4.3. TEOREMAS DE DUALIDADE 81<br />

Teorema 4.13 (dualida<strong>de</strong> forte). Se o primal ou o dual <strong>de</strong> um programa<br />

<strong>linear</strong> tem solução ótima, o outro também tem, e os valores das soluções<br />

ótimas são iguais.<br />

Demonstração. Sejam max c T x s.a Ax ≤ b o primal <strong>de</strong> um programa <strong>linear</strong><br />

e min b T y s.a A T y ≤ c seu dual. Suponha que o primal tem solução ótima<br />

x ∗ , com valor v = c T x ∗ .<br />

O hiperplano c T x ∗ = v toca no poliedro apenas no ponto ótimo x ∗ (ou<br />

nos pontos ótimos, se houver mais <strong>de</strong> um).<br />

a 2 x = b 2<br />

c<br />

a 1 x = b 1<br />

c T x ∗ = v<br />

Aqui <strong>de</strong>notamos por a i a i-ésima linha <strong>de</strong> A. Sejam a 1 x ≤ b 1 , a 2 x ≤ b 2 , . . .<br />

as restrições do primal, e consi<strong>de</strong>re os hiperplanos a 1 x = b 1 , a 2 x = b 2 , que<br />

<strong>de</strong>finem a borda do poliedro. Já o hiperplano c T x ∗ = v, ortogonal a c e que<br />

toca o poliedro em x ∗ , é claramente uma combinação <strong>linear</strong> não negativa<br />

dos hiperplanos <strong>de</strong>finidos pelos a i x = b i . Temos portanto<br />

E consequentemente,<br />

λ 1 (a 1 x)<br />

+λ 2 (a 2 x)<br />

+λ 3 (a 3 x)<br />

=<br />

λ 1 b 1<br />

+λ 2 b 2<br />

+λ 3 b 3<br />

.<br />

.<br />

∑<br />

λi a i x = ∑ λ i b i<br />

c T = ∑ λ i a i<br />

v = ∑ λ i b i<br />

Versão Preliminar<br />

Então,<br />

{<br />

}<br />

max c T x|Ax ≤ b, x ≥ 0 = v = ∑ λ i b i ,<br />

mas temos também<br />

∑ {<br />

}<br />

λi b i ≥ min b T y|A T y ≥ c, y ≥ 0 ,


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

82 CAPÍTULO 4. DUALIDADE<br />

e o valor máximo para o primal é maior ou igual que o valor mínimo para<br />

o dual.<br />

Mostramos que c T x ≥ b T y, mas também sabemos pelo teorema 4.10<br />

que c T x ≤ b T y, e portanto os dois valores <strong>de</strong>vem ser iguais.<br />

<br />

Teorema 4.14. Se o primal <strong>de</strong> um programa <strong>linear</strong> é viável e seu dual não<br />

é então o primal é ilimitado.<br />

Demonstração. Seja x viável para o primal. Como o dual é inviável, o sistema<br />

a seguir não tem solução.<br />

A T y ≥ c<br />

y ≥ 0<br />

Como não há solução para este sistema, pelo Lema <strong>de</strong> Farkas <strong>de</strong>ve existir<br />

solução para<br />

Az ≥ 0<br />

c T z > 0<br />

z ≥ 0<br />

Tomemos um z, solução do sistema acima. Observamos que z+ω é viável<br />

para o primal se ω ≥ 0:<br />

A(x + ωz) = Ax + ωAz<br />

e como ωAz ≤ 0, x + ωz ≤ b. Mas temos também<br />

c T (x + ωz) = c T x + ωc T z,<br />

e como ω > 0, c T z > 0, temos que c T (x + ωz) → ∞ quando ω → ∞, e x<br />

não é ótimo. Mais ainda, para qualquer x supostamente ótimo po<strong>de</strong>mos<br />

<strong>de</strong>terminar x ′ dando valor maior para o objetivo.<br />

<br />

Corolário 4.15. Se o primal <strong>de</strong> um programa <strong>linear</strong> é viável e f(x) = c T x é<br />

limitada por cima então o dual é viável.<br />

Se o dual <strong>de</strong> um programa <strong>linear</strong> é viável e g(y) = b T y é limitada por<br />

baixo então o primal é viável.<br />

Se tanto o primal como o dual forem viáveis, tanto f como g são limitadas,<br />

f por cima e g por baixo.<br />

Versão Preliminar<br />

Teorema 4.16. Se tanto o primal como o dual são viáveis, ambos tem (a<br />

mesma) solução ótima.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

4.3. TEOREMAS DE DUALIDADE 83<br />

Observamos também que o tableau simplex para o dual é exatamente<br />

o tableau transposto do primal:<br />

⎛<br />

( )<br />

AB A N b<br />

−→ ⎝<br />

c T B<br />

c T N<br />

A T B<br />

A T N<br />

b T<br />

O Teorema das folgas complementares, enunciado a seguir, é usado no<br />

<strong>de</strong>senvolvimento do algoritmo primal-dual. Informalmente, o Teorema<br />

<strong>de</strong>termina que quando há solução ótima para um par <strong>de</strong> problemas duais,<br />

se a i-ésima variável da solução do primal é não zero, a solução do dual<br />

torna sua i-ésima linha uma igualda<strong>de</strong> (sem folga); e quando a i-ésima<br />

linha do dual é <strong>de</strong>sigualda<strong>de</strong> estrita, a i-ésima variável do primal tem valor<br />

zero. Ou seja, se x j ≠ 0, então a j-ésima linha do dual é satisfeita sem folga,<br />

(a j ) T y = c j .<br />

Teorema 4.17 (das folgas complementares). Sejam um programa <strong>linear</strong> e<br />

seu dual,<br />

max c T x, s.a.: Ax ≤ b<br />

min b T y, s.a.: A T y ≥ c<br />

Duas soluções x e y para o primal e dual são ótimas se e somente se<br />

y T (Ax − b) = 0<br />

x T (c − A T y) = 0.<br />

Demonstração. Sejam x e y soluções viáveis para o primal e dual. Temos<br />

Ax ≤ b<br />

b − Ax ≥ 0<br />

y T ( b − Ax ) ≥ 0,<br />

porque y é viável (y ≥ 0). Similarmente,<br />

c B<br />

c N<br />

Versão Preliminar<br />

A T y ≥ c<br />

A T y − c ≥ 0<br />

x T ( A T y − c ) ≥ 0.<br />

⎞<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

84 CAPÍTULO 4. DUALIDADE<br />

Sejam p = y T (b − Ax) e q = x T ( A T y − c ) . Então,<br />

( )<br />

p + q = y T (b − Ax) + x T A T y − c<br />

(<br />

)<br />

= y T b + −y T Ax + x T A T y − x T c<br />

= y T b − x T c<br />

≥ 0,<br />

porque y T b ≥ x T c, pelo Teorema 4.10.<br />

(⇒) Se as duas soluções forem ótimas, temos p + q ≥ 0 e também<br />

p = q, e necessariamente p = q = 0. Portanto,<br />

(⇐) Suponha p = q = 0. Então<br />

y T ( (b − Ax) = 0<br />

)<br />

x T A T y − c = 0<br />

( )<br />

y T (b − Ax) + x T A T y − c = 0<br />

y T b − x T c = 0<br />

y T b = x T c<br />

e, como as soluções tem o mesmo valor objetivo e são viáveis para o primal<br />

e para o dual, são ambas ótimas.<br />

<br />

4.4 Algoritmo simplex dual<br />

Consi<strong>de</strong>re o primal e o dual <strong>de</strong> um programa <strong>linear</strong>, como os que são dados<br />

a seguir.<br />

maximize c T x<br />

s.a.: Ax ≤ b<br />

x ≥ 0.<br />

minimize b T y<br />

s.a.: A T y ≥ c<br />

y ≥ 0.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

4.4. ALGORITMO SIMPLEX DUAL 85<br />

O método Simplex, quando aplicado ao primal, procura por várias soluções<br />

viáveis (sempre obe<strong>de</strong>cendo as restrições) e básicas, cada uma com<br />

valor objetivo maior, até encontrar a solução ótima. Observando a formulação<br />

do dual, po<strong>de</strong>mos imaginar que se executarmos nele o mesmo<br />

algoritmo, o que sempre se mantém é a condição <strong>de</strong> otimalida<strong>de</strong> (porque<br />

c agora está no lugar <strong>de</strong> b), e que o que buscamos é uma solução cada vez<br />

mais próxima da viabilida<strong>de</strong>. Isto é o que faz o algoritmo dual-simplex.<br />

Suponha que tenhamos uma solução básica para o primal que tenha<br />

valor melhor que qualquer ponto do politopo, mas que não seja viável.<br />

Representamos esta solução pela base A B , tal que x B = A −1<br />

B b.<br />

Como a solução é ótima, c j − z j ≤ 0 para todo j, e<br />

c j ≤ z j .<br />

Seja y a solução correspon<strong>de</strong>nte para o dual. y = c T A −1 é viável:<br />

A T (c T A −1<br />

B ) ≥ c<br />

Se y é ótima para o dual, então x é ótima para o primal.<br />

Senão, x B tem algum elemento x i negativo.<br />

Seja B = A −1<br />

B , B i a i-ésima linha <strong>de</strong> B e<br />

^y T = y T + εB i<br />

com ε > 0 (ou seja, se A B fosse a i<strong>de</strong>ntida<strong>de</strong>, mudaríamos somente o valor<br />

<strong>de</strong> x i ). Então<br />

Como ε > 0 e x i < 0,<br />

^y T b = y T b + εB i b<br />

= y T b + εx i . (4.1)<br />

^y T b < y T b,<br />

o que significa que ^y é uma solução melhor para o dual (que é um problema<br />

<strong>de</strong> minimização), para qualquer ε > 0. Nos resta saber como escolher<br />

ε <strong>de</strong> forma que ^y seja viável.<br />

Observe que B i a j , para j > m, é igual a a ij . Para j ≤ m, B i a j = δ ij (este é<br />

o δ <strong>de</strong> Kronecker 1 ).<br />

Versão Preliminar<br />

1 δ ij = 1 se i = j, e zero caso contrário.<br />

B


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

86 CAPÍTULO 4. DUALIDADE<br />

Assim, para j > m,<br />

^y T a j = (y T + εB i )a j<br />

= y T a j + εB i a j<br />

= y T a j + εa ij<br />

= z j + εa ij .<br />

Se a ij ≥ 0,<br />

e a solução é viável para o dual.<br />

Para j ≤ m e i = j,<br />

Assim,<br />

^y T a j > z j > c j ,<br />

^y T a j = (y T + εB i )a j<br />

= y T a j + εB i a j<br />

= y T a j + ε.<br />

^y T a j > z j > c j ,<br />

e novamente a solução é viável para o dual.<br />

No entanto, se a ij ≥ 0 para todo j > m, por 4.1 o dual é ilimitado, porque<br />

y T b → −∞ quando ε → ∞.<br />

Se a ij < 0 para algum j > m, po<strong>de</strong>mos escolher ε <strong>de</strong> forma a manter a<br />

solução viável. Queremos<br />

∀j > m,<br />

z i − εa ij ≤ c j<br />

e portanto escolhemos<br />

{ }<br />

zj − c j<br />

ε ≤ min : j > m, a ij < 0 .<br />

j a ij<br />

Como aumentando ε melhoramos a função objetivo do dual, escolhemos<br />

{ }<br />

zj − c j<br />

ε = min : j > m, a ij < 0 .<br />

j a ij<br />

Seja k o índice que minimiza a expressão. Po<strong>de</strong>mos verificar que ε melhorou<br />

o objetivo do dual tanto quanto era possível:<br />

Versão Preliminar<br />

^y T a k = z k − εa ik<br />

= z k − (z k − c k )<br />

= c k .<br />

a ik<br />

a ik


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

4.4. ALGORITMO SIMPLEX DUAL 87<br />

Agora retiramos a coluna a i da base e incluímos a k , obtendo uma solução<br />

mais próxima <strong>de</strong> ser viável para o primal (porque tem valor melhor<br />

para o dual).<br />

O algoritmo dual-Simplex é mostrado a seguir.<br />

obtenha A B , base do primal com c j − z j < 0 ∀j /∈ B<br />

calcule x B = B −1 b<br />

enquanto x B tem elementos negativos :<br />

n ← {i : x i < 0}<br />

se a ij ≥ 0 para algum i ∈ n e todo j > m:<br />

PARE -- primal ilimitado<br />

se a ij < 0 para algum i ∈ n e todo j > m:<br />

r ← arg min i {x i < 0}<br />

{ }<br />

zj −c<br />

k ← arg min j j a rj<br />

: j > m, a rj < 0<br />

retire a r da base e inclua a k<br />

calcule a nova base A B<br />

PARE -- x B é ó tima<br />

Notas<br />

A <strong>de</strong>monstração do teorema forte da dualida<strong>de</strong> (Teorema 4.13) dada neste<br />

texto é semelhante àquela apresentada por Alexan<strong>de</strong>r Schrijver [Sch98].<br />

Exercícios<br />

Ex. 33 — Mostre o dual dos problemas a seguir.<br />

(i) max x 1 + x 2 + 3x 3<br />

s.a. : x 1 − 2x 2 = 5<br />

x 1 + x 3 ≥ 10<br />

3x 2 + 4x 3 ≤ 9<br />

(ii) min 3x 1 + 2x 2<br />

s.a. : x 1 + x 2 ≥ 1<br />

x 1 − x 2 ≤ 2<br />

Versão Preliminar<br />

(iii) max 2x 1 + 2x 2 − 3x 3<br />

s.a. : 2x 1 + 3x 2 ≤ 3<br />

5x 2 + 5x 3 ≤ 5<br />

9x 1 + 2x 3 ≤ 4<br />

(iv) min 2x 1 + 5x 2<br />

s.a. : 2x 1 + 7x 2 ≥ 5<br />

2x 2 − x 3 = 1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

88 CAPÍTULO 4. DUALIDADE<br />

Ex. 34 — Mostre que o problema<br />

max c T x<br />

s.a: Ax = b<br />

x ≥ 0<br />

tem solução se e somente se c T é combinação <strong>linear</strong> das linhas <strong>de</strong> A.<br />

Ex. 35 — Implemente o algoritmo Simplex dual e o primal-dual<br />

Ex. 36 — Antes do Lema 4.12, mencionamos que uma condição necessária<br />

para que um programa <strong>linear</strong> tenha solução ótima é que o gradiente<br />

do objetivo possa ser expresso como combinação <strong>linear</strong> não negativa das<br />

restrições. Demonstre rigorosamente isto.<br />

Ex. 37 — Prove o Lema 4.12.<br />

Ex. 38 — Prove o Teorema 4.3.<br />

Ex. 39 — Se a solução ótima do dual é <strong>de</strong>generada, o que se po<strong>de</strong> dizer<br />

sobre a solução ótima do primal<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 5<br />

Análise <strong>de</strong> Sensibilida<strong>de</strong><br />

Este capítulo será reescrito<br />

Suponha que tenhamos encontrado a solução x ∗ , ótima para o programa<br />

<strong>linear</strong><br />

max c T x s.a.: Ax ≤ b.<br />

Verificaremos o quanto po<strong>de</strong>mos mudar no problema sem mudar sua solução<br />

ótima, que já encontramos. A isso damos o nome <strong>de</strong> análise <strong>de</strong> sensibilida<strong>de</strong>.<br />

5.1 Mudanças no objetivo<br />

Mudar coeficientes no vetor que <strong>de</strong>fine a função objetivo terá um único<br />

efeito importante: o gradiente mudará <strong>de</strong> direção. Se o ângulo for suficientemente<br />

gran<strong>de</strong>, a solução ótima po<strong>de</strong> mudar.<br />

Teorema 5.1. Suponha que um valor ∆ tenha sido somado ao coeficiente<br />

c k . Se x k estiver na base, a solução ótima será a mesma, x ∗ , do problema<br />

original se<br />

∆ ≥ (c j − z j )<br />

se a kj > 0<br />

a kj<br />

∆ ≤ (c j − z j )<br />

se a kj < 0<br />

a kj<br />

Se x k não estiver na base, a solução continuará sendo ótima se<br />

∆ ≤ −(c k − z k ).<br />

Versão Preliminar<br />

89


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

90 CAPÍTULO 5. ANÁLISE DE SENSIBILIDADE<br />

Demonstração. Como a <strong>de</strong>scrição da região viável é dada somente por A<br />

e b, a solução x ∗ continua viável. Resta <strong>de</strong>terminarmos se continua ótima<br />

ou não.<br />

A condição <strong>de</strong> otimalida<strong>de</strong> para uma solução é<br />

c j − z j ≤ 0,<br />

Analisaremos dois casos: o primeiro, em que x ∗ k<br />

era básica na solução<br />

ótima, e o segundo caso, em que x k não era básica.<br />

Primeiro caso (x ∗ k básica): o novo valor z′ j<br />

será igual ao anterior (porque<br />

somente os c j para j fora da base compõe z j ), mas c<br />

k ′ passa a ser c k + ∆.<br />

Primeiro observamos que<br />

Assim, queremos<br />

⎛<br />

c j − c k ′ a kj − ⎝<br />

⎛<br />

c j − c k ′ a kj − ⎝<br />

⎛<br />

c j − (c k + ∆)a kj − ⎝<br />

⎛<br />

c j − c k a kj − ∆a kj − ⎝<br />

Versão Preliminar<br />

∀j.<br />

c j − z j = c j − c T B A N<br />

= c j − ∑ i≤m<br />

c i a ij .<br />

c j − z ′ j ≤ 0<br />

c j − ∑ i≤m<br />

c ′ i a ij ≤ 0<br />

∑<br />

i≤m,i≠k<br />

∑<br />

i≤m,i≠k<br />

∑<br />

i≤m,i≠k<br />

∑<br />

i≤m,i≠k<br />

⎞<br />

c i ′ a ⎠<br />

ij ≤ 0<br />

(tirando k do somatório)<br />

⎞<br />

c i a ij<br />

⎠ ≤ 0 (para i ≠ k, c i = c<br />

i ′)<br />

⎞<br />

c i a ij<br />

⎠ ≤ 0<br />

⎞<br />

c i a ij<br />

⎠ ≤ 0<br />

⎛ ⎞<br />

c j − ∆a kj − ⎝ ∑ c i a ij<br />

⎠ ≤ 0 (<strong>de</strong>volvendo c k a k ao somatório)<br />

i≤m<br />

c j − ∆a kj − z j ≤ 0<br />

(c j − z j ) − ∆a kj ≤ 0<br />

∆a kj ≥ (c j − z j )


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

5.1. MUDANÇAS NO OBJETIVO 91<br />

Multiplicamos a inequação por a kj , e o resultado <strong>de</strong>pen<strong>de</strong> do sinal <strong>de</strong> a kj :<br />

∆ ≥ (c j − z j )<br />

se a kj > 0<br />

a kj<br />

∆ ≤ (c j − z j )<br />

se a kj < 0<br />

a kj<br />

Assim, se ∆ respeitar essa restrição, x ∗ continua sendo ótima.<br />

Segundo caso (x ∗ k fora da base): o coeficiente c′ k<br />

modificado não altera<br />

o vetor z, portanto somente o coeficiente reduzido <strong>de</strong> custo da própria<br />

variável x k é modificado. Assim, queremos<br />

c ′ k − z k ≤ 0<br />

(c k + ∆) − z k ≤ 0<br />

Exemplo 5.2. Consi<strong>de</strong>re o problema :<br />

O tableau final é<br />

max 3x + 4y<br />

∆ ≤ −(c k − z k ).<br />

s.a.: 2x + y


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

92 CAPÍTULO 5. ANÁLISE DE SENSIBILIDADE<br />

• Para j = 4: como a 14 = −1/3 < 0, temos<br />

∆ ≤ −5/3<br />

−1/3 = +5.<br />

Assim, com ∆ ∈ [−1, +5] garantimos a otimalida<strong>de</strong> da solução que já tínhamos.<br />

De fato, para qualquer função objetivo entre 2x + 4y e 8x + 4y<br />

(ou seja, da forma [2, 8]x + 4y), a solução x = 2 e y = 3 continua ótima, mas<br />

fora <strong>de</strong>sse intervalo não.<br />

5.2 Mudanças no vetor b<br />

Teorema 5.3. Suponha que um valor ∆ k tenha sido somado ao coeficiente<br />

b k , resultando em b ′ . A solução ótima continuará sendo a mesma se<br />

∆ k ≥ − x∗ i<br />

, se B ik > 0<br />

B ik<br />

∆ k ≤ − x∗ i<br />

, se B ik < 0<br />

B ik<br />

Demonstração. Observamos que não temos somente uma solução x ∗ . Temos<br />

uma base A B , e calculamos nossa solução<br />

x ∗ = A −1<br />

B b.<br />

A mudança em b mudança não afeta o critério <strong>de</strong> otimalida<strong>de</strong> (c j − z j ≤ 0)<br />

para nossa base – se ela continuar representando uma solução viável, será<br />

ainda ótima. Seja<br />

x ∗∗ = A −1<br />

B b′<br />

Se <strong>de</strong>notarmos B = A −1<br />

B , temos<br />

Então queremos<br />

= A −1<br />

B b + A−1 B<br />

(0, 0, . . . , ∆ k, . . . , 0) T<br />

x ∗∗<br />

i = x ∗ i + B ik∆ k .<br />

Versão Preliminar<br />

x ∗∗<br />

i ≥ 0<br />

x ∗ i + B ik∆ k ≥ 0,<br />

o que nos leva diretamente ao enunciado do Teorema.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

5.3. MUDANÇAS NOS COEFICIENTES DE A 93<br />

5.3 Mudanças nos coeficientes <strong>de</strong> A<br />

Consi<strong>de</strong>ramos agora o que acontece se um dos coeficientes <strong>de</strong> A é modificado.<br />

Supomos então que a pq ′ = a pq + ∆.<br />

Há dois casos importantes a consi<strong>de</strong>rar: (i) q era coluna da base; e (ii) q<br />

não era coluna da base.<br />

5.3.1 Caso (i)<br />

Se q pertencia à base, é necessário verificar se a condição <strong>de</strong> viabilida<strong>de</strong> e<br />

a <strong>de</strong> otimalida<strong>de</strong> continuam sendo satisfeitas.<br />

5.3.2 Caso (ii)<br />

Se q não pertencia à base, a condição <strong>de</strong> viabilida<strong>de</strong> não é violada, e precisamos<br />

apenas observar a condição <strong>de</strong> otimalida<strong>de</strong>,<br />

c j − z ′ j ≤ 0,<br />

Denotamos o novo valor <strong>de</strong> z q por z q, ′ e o novo valor da coluna a q por a q.<br />

′<br />

A coluna a q ′ é igual a a q + ∆e p , on<strong>de</strong> e p é o p-ésimo vetor da base canônica<br />

<strong>de</strong> R n :<br />

⎛ ⎞<br />

0<br />

0<br />

.<br />

a q + ∆e p = a q +<br />

∆<br />

.<br />

⎜<br />

.<br />

⎟<br />

⎝0⎠<br />

0<br />

∀j.<br />

Versão Preliminar<br />

Também sabemos que z q = c T B Ba q, e que, consequentemente,<br />

z q ′ = c T B Ba′ q.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

94 CAPÍTULO 5. ANÁLISE DE SENSIBILIDADE<br />

Assim, a condição <strong>de</strong> otimalida<strong>de</strong> é<br />

c q − c T B Ba′ q ≤0<br />

c q − c T B B(a q + ∆e p ≤0<br />

( )<br />

c q − z q − ∆ c T B Be p ≤0<br />

( ) ∑<br />

c q − z q − ∆ c i B ip ≤0<br />

i<br />

( ) ∑<br />

−c q + z q + ∆ c i B ip ≥0<br />

i<br />

Isolamos ∆, levando em consi<strong>de</strong>ração dois casos:<br />

5.4 Nova variável<br />

∆ ≥ (z q − c q )<br />

∑<br />

i c ,<br />

iB ip<br />

∆ ≤ (z q − c q )<br />

∑<br />

i c ,<br />

iB ip<br />

se ∑ i<br />

se ∑ i<br />

c i B ip > 0<br />

c i B ip < 0.<br />

Se uma nova variável x n+1 é adicionada ao problema, sem mudanças nos<br />

coeficientes já existentes em A, b e c, teremos uma nova coluna a n+1 em<br />

A e um novo elemento c n+1 em c.<br />

Po<strong>de</strong>mos tomar o tableau que usamos para obter x ∗ e adicionar a nova<br />

coluna com a n+1 e c n+1 . Teremos também que calcular c n+1 − z n+1 . Isso<br />

já nos dará a informação que queremos: a solução x ∗ continuará sendo<br />

ótima somente se c n+1 −z n+1 ≤ 0. Caso não seja, po<strong>de</strong>mos imediatamente<br />

incluir a n+1 na base e usar o algoritmo Simplex para obter uma nova solução<br />

ótima.<br />

5.5 Nova restrição<br />

Suponha agora que uma nova restrição tenha sido adicionada ao problema.<br />

Se a solução ótima x ∗ satisfizer a restrição, ela claramente continuará sendo<br />

ótima. Trataremos então do que acontece quando nossa antiga solução<br />

não obe<strong>de</strong>ce a nova restrição (não é mais viável).<br />

Representamos a nova restrição por<br />

∑<br />

a m+1 x j = b m+1 ,<br />

Versão Preliminar<br />

j≤n


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

5.5. NOVA RESTRIÇÃO 95<br />

e o novo tableau simplex será<br />

( )<br />

AB 0<br />

α ±1<br />

on<strong>de</strong> α é a linha com os coeficientes da nova restrição, e ±1 é o coeficiente<br />

<strong>de</strong> uma nova variável, que já incluímos na base. A nova solução é<br />

x B ′ = (A′ B )−1 b ′<br />

( ) ( )<br />

A<br />

−1<br />

=<br />

B<br />

0 b<br />

∓αA −1<br />

B<br />

±1 b m+1<br />

( )<br />

xB 0<br />

=<br />

∓αx B ±b m+1<br />

Como adicionamos uma variável artificial sem participação na função objetivo,<br />

a nova solução tem c j − z j ≤ 0 para todo j (a condição <strong>de</strong> otimalida<strong>de</strong><br />

não mudou). Se a nova variável <strong>de</strong> folga for negativa (e portanto a<br />

nova solução não é viável), po<strong>de</strong>mos usar o método dual simplex para obter<br />

uma nova solução ótima. Se for positiva, po<strong>de</strong>mos atribuir um valor<br />

muito gran<strong>de</strong> para a posição do tableau on<strong>de</strong> teríamos c m+1 − z m+1 e usar<br />

o simplex para obter uma nova solução ótima.<br />

Notas<br />

Sinha [Sin06] e Van<strong>de</strong>rbei [Van07] discutem também Programação Paramétrica,<br />

que trata <strong>de</strong> problemas <strong>de</strong> programação <strong>linear</strong> on<strong>de</strong> as mudanças<br />

não são discretas como as <strong>de</strong> que tratamos aqui, mas contínuas: por<br />

exemplo, o vetor c po<strong>de</strong> variar continuamente com uma função<br />

on<strong>de</strong> c 0 e d são vetores.<br />

Exercícios<br />

c = c 0 + τd,<br />

Ex. 40 — Faça a análise <strong>de</strong> sensibilida<strong>de</strong> dos problemas apresentados no<br />

primeiro Capítulo.<br />

Versão Preliminar<br />

Ex. 41 — Suponha que tenhamos resolvido um problema <strong>de</strong> maximização,<br />

e encontrado a solução ótima x ∗ , com valor v. Em que situação é possível<br />

multiplicar uma linha i inteira da matriz A por −1 mantendo a otimalida<strong>de</strong><br />

da solução


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

96 CAPÍTULO 5. ANÁLISE DE SENSIBILIDADE<br />

Ex. 42 — Suponha que um programa <strong>linear</strong> tenha uma única solução ótima<br />

x ∗ . Quanto po<strong>de</strong>mos mudar um coeficiente da função objetivo <strong>de</strong> forma<br />

que x ∗ continue sendo a única solução ótima<br />

Ex. 43 — O que acontece com a solução ótima se removermos uma variável<br />

ou uma restrição <strong>de</strong> um problema <strong>de</strong> programação <strong>linear</strong><br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 6<br />

Outros Métodos<br />

O algoritmo Simplex e suas variantes trabalham iterando soluções básicas<br />

(pontos extremos do poliedro <strong>de</strong>finido pelas soluções viáveis do problema).<br />

É possível, embora muito raro na prática, que a quantida<strong>de</strong> <strong>de</strong><br />

bases visitada pelo Simplex seja exponencial (lembramos que há ( n<br />

m)<br />

<strong>de</strong>las).<br />

6.1 O método do elipsoi<strong>de</strong><br />

O russo 1 Khachiyan mostrou em 1979 como usar um algoritmo para resolver<br />

problemas <strong>de</strong> programação <strong>linear</strong> em tempo polinomial.<br />

O algoritmo apresentado por Khachiyan na verda<strong>de</strong> resolve o problema<br />

das <strong>de</strong>sigualda<strong>de</strong>s estritas, que consiste em <strong>de</strong>terminar, dados uma matriz<br />

A e um vetor b, se existe x tal que Ax < b. Nesta apresentação usaremos<br />

<strong>de</strong>sigualda<strong>de</strong>s não estritas, Ax ≤ b.<br />

Começamos apresentando o algoritmo do elipsoi<strong>de</strong> para sistemas <strong>de</strong><br />

<strong>de</strong>sigualda<strong>de</strong>s estritas, e em seguida mostramos como resolver problemas<br />

<strong>de</strong> programação <strong>linear</strong> apenas encontrando soluções para sistemas<br />

<strong>de</strong> <strong>de</strong>sigualda<strong>de</strong>s.<br />

6.1.1 O algoritmo<br />

Um elipsoi<strong>de</strong> é uma generalização <strong>de</strong> elipse para muitas dimensões. Em<br />

R 3 , um elipsói<strong>de</strong> é <strong>de</strong>finido pela forma quadrática<br />

Versão Preliminar<br />

1 Na época, também Soviético.<br />

x 2<br />

a 2 + y2<br />

b 2 + z2<br />

c 2 = k,<br />

97


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

98 CAPÍTULO 6. OUTROS MÉTODOS<br />

ou seja,<br />

⎛<br />

1<br />

⎛ ⎞<br />

( )<br />

0 0<br />

a<br />

x<br />

x y z ⎝<br />

2 1<br />

0 0 ⎠ ⎝y⎠ .<br />

b 2 1<br />

0 0 z<br />

Versão Preliminar<br />

c 2 ⎞<br />

Assim, po<strong>de</strong>mos representar um elispói<strong>de</strong> por uma matriz quadrada simétrica,<br />

e a <strong>de</strong>finição exten<strong>de</strong>-se naturalmente para R n .<br />

Definição 6.1 (Elipsoi<strong>de</strong>). Um elipsoi<strong>de</strong> é o conjunto <strong>de</strong> pontos <strong>de</strong>finido<br />

por<br />

{<br />

}<br />

x : (x − x ′ )M −1 (x − x ′ ) ≤ 1<br />

on<strong>de</strong> x e x ′ são vetores com n elementos e M é uma matriz quadrada <strong>de</strong>finida<br />

positiva e simétrica <strong>de</strong> or<strong>de</strong>m n. O vetor x ′ é o centro do elipsoi<strong>de</strong>. <br />

3<br />

2<br />

1<br />

−1 1 2 3<br />

O algoritmo inicia com um elipsoi<strong>de</strong> centrado na origem e tendo interseção<br />

com parte da região viável (se ela existir). Em cada iteração o algoritmo<br />

verifica se o centro do elipsoi<strong>de</strong> é viável. Se for, obviamente a solução<br />

foi encontrada; senão, troca o elipsoi<strong>de</strong> por outro, menor, que contém<br />

a interseção do anterior com a região viável. Po<strong>de</strong>-se <strong>de</strong>monstrar que se<br />

nenhuma solução for encontrada após um certo número <strong>de</strong> iterações, não<br />

há soluções viáveis para o sistema.<br />

A cada iteração, uma <strong>de</strong>sigualda<strong>de</strong> violada é usada para <strong>de</strong>terminar o<br />

novo elipsoi<strong>de</strong> (calcula-se novo centro x k+1 e nova matriz M k+1 ), resultando<br />

em um novo elipsói<strong>de</strong>.<br />

A cada iteração, se a solução atual (o centro do elipsói<strong>de</strong>) não é viável,<br />

há uma <strong>de</strong>sigualda<strong>de</strong> violada a i x ≤ b i . O algoritmo usa o hiperplano a i x =<br />

b i .


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

6.1. O MÉTODO DO ELIPSOIDE 99<br />

A próxima Figura ilustra o comportamento do algoritmo. A solução<br />

corrente era x, e a restrição violada é representada por α (x está abaixo <strong>de</strong><br />

α, mas a restrição <strong>de</strong>termina que a região viável é acima <strong>de</strong>la). Se movermos<br />

α paralelamente a si mesma até tornar-se tangente no elipsoi<strong>de</strong>, na<br />

direção da viabilida<strong>de</strong> (ou seja, para cima e à direita no exemplo dado), obtemos<br />

um ponto y. A nova solução x ′ estará entre x e y. O novo elipsoi<strong>de</strong>,<br />

menor, será tangente a y e conterá toda a área viável que estava contida<br />

antes no primeiro elipsoi<strong>de</strong>. Neste exemplo, x ′ é viável e o algoritmo po<strong>de</strong><br />

parar.<br />

α<br />

O primeiro elipsoi<strong>de</strong> <strong>de</strong>ve ser gran<strong>de</strong> o suficiente para conter pelo menos<br />

uma solução para o sistema, se alguma existir. Para <strong>de</strong>terminar o tamanho<br />

<strong>de</strong>ste elipsoi<strong>de</strong> usamos o número <strong>de</strong> bits que o problema ocupa quando<br />

representado em um computador. Cada número po<strong>de</strong> ser representado<br />

por ⌊1 + log 2<br />

|n|⌋ bits mais um bit para o sinal. Para representar a matriz A,<br />

o vetor b e os números n e m usamos L bits, on<strong>de</strong><br />

⎛<br />

⎞ ⎛<br />

⎞<br />

L = ⎝ ∑ ∑<br />

1 + ⌊1 + log 2<br />

|a ij |⌋⎠ + ⎝ ∑ 1 + ⌊1 + log 2<br />

|b i |⌋⎠<br />

i≤m j≤n<br />

i≤m<br />

+ (⌊1 + log 2<br />

n⌋) + (⌊1 + log 2<br />

m⌋)<br />

≥ ∑ ∑<br />

⌈log 2<br />

|a ij |⌉ + ∑ ⌈log 2<br />

|b i |⌉<br />

i≤m j≤n<br />

i≤m<br />

x<br />

x ′ α ′<br />

Versão Preliminar<br />

+ ⌈log 2<br />

n⌉ + ⌈log 2<br />

m⌉ + 2m(n + 1) + 2<br />

(Representamos n e m como inteiros sem sinal.)<br />

y


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

100 CAPÍTULO 6. OUTROS MÉTODOS<br />

Teorema 6.2. Uma hiperesfera centrada na origem e com raio 2 L inclui<br />

pelo menos uma solução para Ax ≤ b, se alguma existir.<br />

Po<strong>de</strong>mos portanto usar<br />

inicialmente.<br />

M 0 = 2 L I<br />

Lema 6.3. Se o volume do elipsoi<strong>de</strong> na k-ésima iteração é V k , então<br />

V k+1 < V k e −1/(2n+2) < 1.<br />

Temos portanto V k ≤ V 0 e −k/(2n+2) , e com isso po<strong>de</strong>mos <strong>de</strong>mostrar que<br />

o algoritmo roda em tempo polinomial.<br />

Teorema 6.4. O algoritmo do elipsoi<strong>de</strong> tem complexida<strong>de</strong> <strong>de</strong> tempo polinomial.<br />

Demonstração. Como o volume da esfera inicial é πC(n)(2 L ) n , on<strong>de</strong> C(n) →<br />

0 quando n → ∞, o algoritmo po<strong>de</strong> parar emm<br />

⌈<br />

( )⌉<br />

πC(n)2<br />

nL<br />

k = (2n + 2) log<br />

ε<br />

⌈<br />

( )⌉<br />

π2 (n+1)L<br />

≤ (2n + 2) log<br />

ε<br />

⌈<br />

)⌉<br />

= (2n + 2)<br />

(log π + log(2 n+1 ) + log 2L<br />

ε<br />

iterações. Cada iteração realiza O(n 2 ) operações, portanto a complexida<strong>de</strong><br />

do algoritmo é O(n 4 + n 3 log 2L ε ).<br />

É possível mostrar que o número <strong>de</strong> iterações que calculamos é menor<br />

que 6n(n + 1)L, e este é o critério <strong>de</strong> parada que usamos no algoritmo.<br />

<br />

Se a inequação violada por x era a i e o elipsoi<strong>de</strong> era <strong>de</strong>finido por M<br />

com centro em x, então um novo elipsoi<strong>de</strong> com centro em<br />

( ) 1 Ma<br />

x ′ i<br />

= x − √<br />

n + 1<br />

a T i Mai<br />

Versão Preliminar<br />

e com<br />

M ′ =<br />

(<br />

n2<br />

n 2 M − 2<br />

(<br />

Ma<br />

i ) ( Ma i) )<br />

T<br />

− 1 n + 1 (a i ) T Ma i


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

6.1. O MÉTODO DO ELIPSOIDE 101<br />

conterá a interseção do elipsoi<strong>de</strong> anterior com o semiespaço <strong>de</strong>finido pela<br />

inequação a i . O pseudocódigo do algoritmo do elipsoi<strong>de</strong> é dado a seguir.<br />

x ← 0<br />

M ← 2 L I<br />

repita 6n(n + 1)L vezes :<br />

se Ax < b PARE -- retorne x<br />

senao<br />

<strong>de</strong>termine inequa ção violada por x ((a i ) T x > b i )<br />

x ← x − ( )<br />

1 √Ma i<br />

n+1 a T<br />

i Ma<br />

(<br />

i<br />

M ←<br />

n2 M − 2 (Ma i )(Ma i ) T<br />

n 2 −1<br />

n+1<br />

PARE -- não há solu ção<br />

(a i ) T Ma i )<br />

6.1.2 Resolvendo problemas <strong>de</strong> programação <strong>linear</strong><br />

Descrevemos o método do elipsoi<strong>de</strong> como uma maneira <strong>de</strong> encontrar um<br />

ponto que satisfaça um sistema <strong>de</strong> inequações Ax ≤ b. Nesta seção mostramos<br />

que com isto po<strong>de</strong>mos resolver quaisquer problemas <strong>de</strong> programação<br />

<strong>linear</strong>.<br />

Consi<strong>de</strong>re o seguinte programa <strong>linear</strong>:<br />

max c T x<br />

s.a.: Ax ≤ b<br />

x ≥ 0<br />

Para resolvê-lo usando o método do elipsoi<strong>de</strong>, usaremos seu dual:<br />

min b T y<br />

s.a.: A T y ≥ c<br />

y ≥ 0<br />

Sabemos que as soluções ótimas para estes problemas são tais que<br />

Ax ≤ b<br />

(restrições do primal)<br />

Versão Preliminar<br />

−A T y ≤ −c<br />

(restrições do dual)<br />

−c T x + b T y ≤ 0 (dualida<strong>de</strong>: c T x = b T x)<br />

−x ≤ 0<br />

−y ≤ 0<br />

(não-negativida<strong>de</strong>)<br />

(não-negativida<strong>de</strong>)


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

102 CAPÍTULO 6. OUTROS MÉTODOS<br />

Usamos o método do elipsoi<strong>de</strong> para obter uma solução para este sistema,<br />

e teremos assim uma solução x ótima para o problema <strong>de</strong> programação<br />

<strong>linear</strong>.<br />

Exemplo 6.5. Consi<strong>de</strong>re o problema a seguir:<br />

O dual <strong>de</strong>ste problema é<br />

max 3x 1 + 2x 2<br />

s.a.: x 1 − 3x 2 ≤ 4<br />

4x 1 + x 2 ≤ 12<br />

x ≥ 0.<br />

min 4y 1 + 12y 2<br />

s.a.: y 1 + 4y 2 ≥ 3<br />

− 3y 1 + y 2 ≥ 2<br />

y ≥ 0.<br />

O problema, para ser resolvido pelo método do elipsói<strong>de</strong>, é posto na seguinte<br />

forma:<br />

x 1 − 3x 2 ≤ 4<br />

4x 1 + x 2 ≤ 12<br />

− y 1 − 4y 2 ≤ −3<br />

3y 1 − y 2 ≤ −2<br />

− 3x 1 − 2x 2 + 4y 1 + 12y 2 ≤ 0<br />

− x ≤ 0<br />

− y ≤ 0<br />

Versão Preliminar<br />

O algoritmo do elipsoi<strong>de</strong> precisa <strong>de</strong> 6n(n + 1)L iterações no pior caso.<br />

Infelizmente, o pior caso é o que quase sempre acontece na prática. O método<br />

Simplex, cujo pior caso roda em tempo exponencial, é quase sempre<br />

mais rápido que o elipsoi<strong>de</strong>.<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

6.2. PONTOS INTERIORES 103<br />

6.2 Pontos interiores<br />

O método Simplex percorre diferentes pontos extremos do poliedro até<br />

encontrar a solução ótima para um programa <strong>linear</strong>.<br />

Há métodos para resolução <strong>de</strong> problemas <strong>de</strong> programação <strong>linear</strong> que<br />

trabalham somente com pontos interiores do poliedro.<br />

6.2.1 Affine scaling<br />

Suponha que o problema esteja na forma<br />

max c T x s.a.: Ax = b<br />

O algoritmo começa com um ponto viável, muda a escala <strong>de</strong> forma que<br />

o ponto passe a ser um vetor unitário e o move na direção do gradiente<br />

do objetivo, garantindo que o valor da nova solução será melhor e que o<br />

novo ponto também será viável. Em cada iteração, temos um ponto viável<br />

x. Mostraremos como obter o próximo ponto x ′ . Primeiro mudamos a<br />

escala do problema para que o ponto passe a ser o vetor unitário: se x =<br />

(x 1 , x 2 , . . . , x n ), então <strong>de</strong>finimos<br />

⎛<br />

⎞<br />

x 1 0 . . . 0<br />

0 x 2 . . . 0<br />

D = ⎜<br />

⎝<br />

.<br />

. ..<br />

⎟<br />

. ⎠<br />

0 0 . . . x n<br />

O ponto modificado é y = D −1 x, <strong>de</strong> forma que<br />

⎛ ⎞<br />

1<br />

y = D −1 1<br />

x = ⎜ ⎟<br />

⎝ . ⎠ = e.<br />

1<br />

Dizemos que o algoritmo trabalhará tanto no espaço-x como no espaço-y.<br />

Temos portanto o problema A(Dy) = b, ou (AD)y = b. Fazemos S =<br />

AD, e o novo programa <strong>linear</strong> é<br />

max c T y<br />

s.a: Sy = b<br />

y ≥ 0<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

104 CAPÍTULO 6. OUTROS MÉTODOS<br />

E neste novo problema temos y = e, que evi<strong>de</strong>ntemente é um ponto viável.<br />

Moveremos y na direção do gradiente do objetivo. No entanto, não<br />

queremos sair da região viável. Uma maneira <strong>de</strong> permanecer na região<br />

viável é modificar a função objetivo, projetando-a no espaço nulo <strong>de</strong> S.<br />

Teorema 6.6. Se x ′ é solução viável para um problema cujas restrições são<br />

Ax = b, e y pertence ao espaço nulo <strong>de</strong> A, então x ′ + y também é viável.<br />

Demonstração. Trivialmente, temos<br />

Ax ′ = b<br />

Ay = 0 (y está no espaço nulo <strong>de</strong> A)<br />

Ao somarmos y à solução viável x ′ , obtemos outra solução viável:<br />

A(x ′ + y) = Ax ′ + Ay = b + 0 = b.<br />

O operador <strong>de</strong> projeção no espaço nulo <strong>de</strong> S é 2<br />

P = I − S T ( SS T ) −1<br />

S<br />

= I − (AD) T [ AD(AD) T ] −1<br />

AD<br />

= I − DA T [ AD 2 A T ] −1<br />

AD (D = D T (é diagonal))<br />

A projeção do gradiente c T T no espaço nulo <strong>de</strong> AD é<br />

c p = P(c T D) T<br />

= PDc<br />

= I − DA T [ AD 2 A T ] −1<br />

AD (Dc)<br />

= I − DA T [ AD 2 A T ] −1<br />

AD 2 c.<br />

Versão Preliminar<br />

Se c p (que é o gradiente do objetivo, projetado) for igual a zero, não há<br />

direção viável que melhore a solução, que portanto é ótima.<br />

2 Uma <strong>de</strong>monstração <strong>de</strong> que este <strong>de</strong> fato é o projetor no espaço nulo po<strong>de</strong> ser encontrada<br />

no livro <strong>de</strong> Harry Dym [Dym07].


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

6.2. PONTOS INTERIORES 105<br />

Se c p ≠ 0, moveremos y em sua direção. Nos falta então <strong>de</strong>terminar<br />

quanto movê-lo. Seja então δ > 0. A nova solução será<br />

Assim,<br />

y ′ = y + δc p<br />

D −1 y ′ = D −1 x + δc p<br />

x ′ = x + δDc p .<br />

d = Dc p<br />

é o gradiente projetado, mas no espaço-x.<br />

Já garantimos que a nova solução respeitará as restrições do problema,<br />

porque projetamos o gradiente no espaço nulo <strong>de</strong> S. No entanto, ainda<br />

falta garantir que a solução seja não-negativa: precisamos que x ′ ≥ 0 (ou<br />

seja, todos os componentes <strong>de</strong> x ′ <strong>de</strong>vem ser positivos). Como x ′ = Dy ′ ,<br />

x ′ ≥ 0<br />

Dy ′ ≥ 0<br />

D(y + δc p ) ≥ 0<br />

D(e + δc p ) ≥ 0 (y = e)<br />

De + δDc p ) ≥ 0<br />

x + δd ≥ 0<br />

δd ≥ −x.<br />

(D tem x na diagonal)<br />

Para os componentes positivos <strong>de</strong> d i esta condição é trivialmente satisfeita.<br />

Quando d i < 0, precisamos <strong>de</strong><br />

Po<strong>de</strong>mos então tomar<br />

δ ≤ − x i<br />

.<br />

d i<br />

{<br />

δ = min − x }<br />

j<br />

: d j < 0 .<br />

j≤n d j<br />

Versão Preliminar<br />

Note que estamos minimizando em um conjunto <strong>de</strong> números positivos<br />

(x j /d j , com d j < 0, x j > 0).<br />

Para termos x ′ ponto interior (e não na fronteira do poliedro), po<strong>de</strong>mos<br />

escolher um valor um pouco aquém do que o δ calculado acima nos daria<br />

(por exemplo, αδ, com α = 0.95).


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

106 CAPÍTULO 6. OUTROS MÉTODOS<br />

Concluímos então com<br />

x ′ = x + αδd, α ∈ (0, 1).<br />

Observe que, estritamente falando, o algoritmo nunca chega à solução<br />

ótima, mas a uma aproximação <strong>de</strong>la. Note no entanto que o gradiente do<br />

objetivo será cada vez menor, e o critério <strong>de</strong> parada po<strong>de</strong> ser portanto<br />

||c p || < ε<br />

para algum ε suficientemente pequeno.<br />

Exemplo 6.7. Consi<strong>de</strong>re o problema a seguir<br />

max x 1 + x 2 + x 3<br />

s.a.: x 1 + 2x 2 + x 3 = 2<br />

2x 1 + 4x 2 − x 3 = 1<br />

x ≥ 0.<br />

Começamos com a solução viável (mas não básica)<br />

x = (1/2, 1/4, 1) T .<br />

O valor do objetivo para esta solução é<br />

Assim, temos<br />

c T x = 1 2 + 1 4 + 1 = 7 = 1.75. (6.1)<br />

4<br />

⎛ ⎞<br />

( ) ( 1<br />

1 2 1 2<br />

A =<br />

b = c = ⎝1⎠<br />

2 4 −1 1)<br />

1<br />

Versão Preliminar<br />

Calculamos<br />

⎛<br />

1/2 0<br />

⎞<br />

0<br />

⎛<br />

1/4 0<br />

⎞<br />

0<br />

D = ⎝ 0 1/4 0⎠ , D 2 = ⎝ 0 1/16 0⎠ .<br />

0 0 1<br />

0 1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

6.2. PONTOS INTERIORES 107<br />

(<br />

)<br />

c p = I − DA T [AD 2 A T ] −1 AD Dc<br />

⎛ ⎛ ⎞<br />

1/2 1 [( )] −1 ( ) ⎞ ⎛<br />

⎞ ⎛ ⎞<br />

1/2 0 0 1<br />

= ⎝I − ⎝1/2 1⎠<br />

3/2 0 1/2 1/2 1<br />

⎠ ⎝ 0 1/4 0⎠<br />

⎝1⎠<br />

0 3 1 1 −1<br />

1 −1<br />

0 0 1 1<br />

⎛ ⎛ ⎞<br />

1/2 1 ( ) ( ) ⎞ ⎛<br />

⎞ ⎛ ⎞<br />

1/2 0 0 1<br />

= ⎝I − ⎝1/2 1⎠<br />

2/3 0 1/2 1/2 1<br />

⎠ ⎝ 0 1/4 0⎠<br />

⎝1⎠<br />

0 1/3 1 1 −1<br />

1 −1<br />

0 0 1 1<br />

⎛<br />

⎞ ⎛ ⎞<br />

1/4 −1/8 0 1<br />

= ⎝−1/4 1/8 0⎠<br />

⎝1⎠<br />

0 0 0 1<br />

⎛ ⎞<br />

1/8<br />

= ⎝−1/8⎠<br />

0<br />

Calculamos também<br />

⎛<br />

⎞ ⎛ ⎞ ⎛ ⎞<br />

1/2 0 0 1/8 1/16<br />

d = Dc p = ⎝ 0 1/4 0⎠<br />

⎝−1/8⎠ = ⎝−1/32⎠<br />

0 0 1 0<br />

0<br />

Determinamos<br />

O novo ponto será<br />

{<br />

δ = min − x }<br />

j<br />

: d j < 0 = − 1/4<br />

j≤n d j −1/32 = 8.<br />

x ′ = x + αδd<br />

⎛ ⎞ ⎛ ⎞<br />

1/2<br />

1/16<br />

= ⎝1/4⎠ + α(8) ⎝−1/32⎠<br />

1<br />

0<br />

⎛ ⎞ ⎛ ⎞<br />

1/2 1/2<br />

= ⎝1/4⎠ + α ⎝−1/4⎠<br />

1<br />

0<br />

⎛ ⎞<br />

1/2 + α/2<br />

= ⎝1/4 − α/4⎠<br />

1<br />

Versão Preliminar<br />

Se fizermos α = 0.95, teremos<br />

⎛<br />

⎞ ⎛ ⎞<br />

0.5 + 0.95 0.975<br />

x ′ = ⎝0.25 − 0.2375⎠ = ⎝0.0125⎠<br />

1<br />

1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

108 CAPÍTULO 6. OUTROS MÉTODOS<br />

A nova solução é viável: além <strong>de</strong> ser positiva,<br />

E seu valor é<br />

c T x ′ = 0.975 + 0.0125 + 1 = 1.19875,<br />

maior que o que tínhamos antes (1.75, conforme a equação 6.1).<br />

Continuamos até que a norma <strong>de</strong> c p seja suficientemente pequena (por<br />

exemplo, menor que 0.001).<br />

◭<br />

Descrevemos a seguir o algoritmo em pseudocódigo.<br />

repita:<br />

D ← diag(x)<br />

P ← I − DA T [AD 2 A T ] −1 AD 2 c<br />

se ||c p || ∞ < ε<br />

PARE -- solu ção suficientemente boa<br />

d ← D.c p<br />

se d i < 0 para todo i<br />

PARE -- problema ilimitado<br />

{<br />

}<br />

δ ← ε δ min j − x j<br />

d j<br />

: d j < 0<br />

x ← x + δd<br />

6.2.2 Métodos <strong>de</strong> barreira<br />

Notas<br />

Descrições do algoritmo do elipsoi<strong>de</strong> po<strong>de</strong>m ser encontradas nos livros <strong>de</strong><br />

Griva, Nash e Sofer [GNS09] e <strong>de</strong> Papadimitriou e Steiglitz [PS98], que discutem<br />

inclusive a representação computacional (o algoritmo calcula raízes<br />

quadradas, sendo necessário representar irracionais).<br />

O algoritmo usando affine scaling apresentado neste texto é uma simplificação<br />

do algoritmo <strong>de</strong> Karmarkar, elaborado por Narendra Karmarkar<br />

[Kar84].<br />

Exercícios<br />

Versão Preliminar<br />

Ex. 44 — Mostre como obter uma solução viável inicial para o algoritmo<br />

affine scaling.<br />

Ex. 45 — O algoritmo affine scaling po<strong>de</strong>ria ser usado em um problema<br />

<strong>de</strong> otimização com função objetivo não-<strong>linear</strong>, já que só precisa do vetor


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

6.2. PONTOS INTERIORES 109<br />

gradiente do obejtivo. Determine que funções não-<strong>linear</strong>es po<strong>de</strong>riam ser<br />

otimizadas por este algoritmo.<br />

Ex. 46 — Implemente o algoritmo affine scaling.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

110 CAPÍTULO 6. OUTROS MÉTODOS<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Parte II<br />

Aplicações<br />

Versão Preliminar<br />

111


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 7<br />

Problemas <strong>de</strong> Transporte<br />

Neste Capítulo abandonamos o uso da convenção <strong>de</strong> notação dos Capítulos<br />

anteriores, on<strong>de</strong> usávamos b, c, m e n sempre com o mesmo significado.<br />

Temos m fontes e n <strong>de</strong>stinos; a produção da i-ésima fonte é a i e a <strong>de</strong>manda<br />

do j-ésimo <strong>de</strong>stino é b j . O custo para levar cada unida<strong>de</strong> <strong>de</strong> a i até<br />

b j é c ij . A oferta total (somando a oferta <strong>de</strong> cada fonte) é igual à <strong>de</strong>manda<br />

total. O problema consiste em conseguir enviar toda a produção, satisfazendo<br />

toda a <strong>de</strong>manda, mas minimizando o custo total.<br />

A oferta total é igual à <strong>de</strong>manda total, portanto temos<br />

∑<br />

a i = ∑ b j<br />

i j<br />

O problema então é<br />

min ∑ ∑<br />

c ij x ij<br />

i j<br />

∑<br />

s.a. : x ij = a i (∀ i ≤ m)<br />

j<br />

∑<br />

x ij = b j (∀ j ≤ n) (7.1)<br />

i<br />

Versão Preliminar<br />

Exemplo 7.1. Suponha que tenhamos as fontes e <strong>de</strong>stinos a seguir, com as<br />

respectivas ofertas e <strong>de</strong>mandas:<br />

a 1 = 4 b 1 = 12<br />

a 2 = 10 b 2 = 8<br />

a 3 = 6<br />

113


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

114 CAPÍTULO 7. PROBLEMAS DE TRANSPORTE<br />

O custos <strong>de</strong> transporte são<br />

⎛ ⎞<br />

4 7<br />

⎝9 5⎠<br />

5 4<br />

Mo<strong>de</strong>lamos este problema como<br />

min 4x 11 + 7x 12 + 9x 21 + 5x 22 + 5x 31 + 4x 32<br />

s.a. : x 11 + x 12 = 4<br />

x 21 + x 22 = 10<br />

x 31 + x 32 = 6<br />

x 11 + x 21 + x 31 = 12<br />

x 12 + x 22 + x 32 = 8<br />

x ≥ 0,<br />

ou como min c T x, Ax = b, com<br />

e<br />

⎛ ⎞ ⎛ ⎞<br />

x 11<br />

4<br />

x 12<br />

7<br />

x =<br />

x 21<br />

⎜x 22<br />

, c =<br />

9<br />

⎟ ⎜ 5<br />

⎟<br />

⎝x 31<br />

⎠ ⎝ 5 ⎠<br />

x 32 4,<br />

⎛<br />

⎞<br />

1 1 0 0 0 0<br />

0 0 1 1 0 0<br />

A =<br />

⎜0 0 0 0 1 1<br />

⎟<br />

⎝1 0 1 0 1 0⎠ ,<br />

0 1 0 1 0 1<br />

⎛ ⎞<br />

4<br />

b = 10<br />

⎜ 6<br />

⎟<br />

⎝12⎠ .<br />

8<br />

Versão Preliminar<br />

Ao escrevermos o problema na forma matricial, observamos que a ma-<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

115<br />

triz das restrições tem a seguinte estrutura:<br />

x 11 + . . . + x 1n = a 1<br />

x 21 + . . . + x 2n = a 2<br />

. ..<br />

Ou seja,<br />

x m1 + . . . + x mn<br />

= a m<br />

x 11 +x 21 = b 1<br />

x 12 +x 22 = b 2<br />

. .. . .. .<br />

x 1n x 2n . . . x mn = b n<br />

(7.2)<br />

⎛<br />

⎞<br />

A =<br />

⎜<br />

⎝1 T 1 T . .. ⎟<br />

1 T ⎠<br />

I I I I<br />

A matriz do exemplo 7.1, por exemplo, é<br />

⎛<br />

⎞<br />

1 1 0 0 0 0<br />

0 0 1 1 0 0<br />

A =<br />

⎜0 0 0 0 1 1<br />

⎟<br />

⎝1 0 1 0 1 0⎠<br />

0 1 0 1 0 1<br />

Qualquer problema que possa ser <strong>de</strong>scrito <strong>de</strong>ssa forma é chamado <strong>de</strong> problema<br />

<strong>de</strong> transporte. Mostramos agora que todo problema <strong>de</strong> transporte<br />

tem solução ótima, porque todos tem solução viável e todos são limitados.<br />

Teorema 7.2. Todo problema <strong>de</strong> transporte tem uma solução viável.<br />

Demonstração. Seja X a <strong>de</strong>manda total (igual à oferta total). Então x ij =<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

116 CAPÍTULO 7. PROBLEMAS DE TRANSPORTE<br />

a i b j<br />

X é viável, já que ∑<br />

x ij = ∑ a i b j<br />

X<br />

j<br />

j<br />

= a ∑<br />

i<br />

X<br />

e semelhantemente para ∑ i x ij = b j .<br />

= a i<br />

X X<br />

= a i ,<br />

Exemplo 7.3. No exemplo 7.1, temos X = 20, e uma solução viável é<br />

Versão Preliminar<br />

j<br />

b j<br />

x 11 = a 1 b 1 /20 = 12/5<br />

x 12 = a 1 b 2 /20 = 8/5<br />

x 21 = a 2 b 1 /20 = 6<br />

x 22 = a 2 b 2 /20 = 4<br />

x 31 = a 3 b 1 /20 = 18/5<br />

x 32 = a 3 b 2 /20 = 12/5.<br />

Teorema 7.4. Todo problema <strong>de</strong> transporte é limitado.<br />

Demonstração. Como cada x ij é limitado por a i e b j , o problema é também<br />

limitado.<br />

<br />

A seguir mostramos alguns outros Teoremas a respeito <strong>de</strong> problemas<br />

<strong>de</strong> transporte.<br />

Teorema 7.5. A matriz A <strong>de</strong> um problema <strong>de</strong> transporte, da maneira como<br />

<strong>de</strong>scrita anteriormente, tem posto m + n − 1.<br />

Demonstração. Como a soma das primeiras m linhas é igual à soma das<br />

outras n linhas, claramente o posto não po<strong>de</strong> ser m+n (po<strong>de</strong>mos escrever<br />

uma das linhas como combinação <strong>linear</strong> das outras).<br />

Mostramos agora que retirando uma das linhas, o conjunto torna-se <strong>linear</strong>mente<br />

in<strong>de</strong>pen<strong>de</strong>nte e que o posto <strong>de</strong> A <strong>de</strong>ve ser m + n − 1. Denotamos<br />

as linhas por l i quando representam uma das m restrições do<br />

tipo ∑ j x ij = a i (que convencionamos posicionar na parte superior da<br />

∑<br />

matriz) e por L j quando representam uma das outras n restrições do tipo<br />

i x ij = b j .<br />

<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

7.1. SOLUÇÃO BÁSICA INICIAL 117<br />

Suponha, sem perda <strong>de</strong> generalida<strong>de</strong>, que retiramos a linha L n da matriz<br />

(a última). Agora suponha, por absurdo, que ainda há uma combinação<br />

<strong>linear</strong> das linhas, com nem todos os coeficientes nulos, igual a zero:<br />

α 1 l 1 + α 2 l 2 + . . . + α m l m + β 1 L 1 + β 2 L 2 + . . . + β n−1 L n−1 = 0<br />

Voltamos a atenção para a parte superior da matriz – veja (7.2). Cada x in<br />

só aparece na linha l i (<strong>de</strong> fato, x 1n só aparece na linha l 1 , uma vez que não<br />

estamos utilizando a linha L n ), e a única maneira <strong>de</strong> termos a combinação<br />

<strong>linear</strong> igual a zero é ter o coeficiente α i = 0 (<strong>de</strong> outra forma teríamos α i x ik<br />

no somatório). Como isso vale para todo i, então todos os α i <strong>de</strong>vem ser<br />

zero.<br />

Como os coeficientes α k são zero, nos interessam os coeficientes β j .<br />

Mas na parte inferior da matriz, cada x lj aparece uma única vez, e portanto<br />

precisamos também que todos os β j sejam zero.<br />

Assim, a única combinação <strong>linear</strong> que resulta em zero é com α i = 0 e<br />

β j = 0, ∀i, j – portanto as m + n − 1 linhas são <strong>linear</strong>mente in<strong>de</strong>pen<strong>de</strong>ntes<br />

e o posto da matriz <strong>de</strong> restrições é m + n − 1.<br />

<br />

Observe que isto significa que durante a execução do método Simplex<br />

teríamos também m + n − 1 variáveis básicas.<br />

7.1 Solução básica inicial<br />

A solução viável que <strong>de</strong>terminamos anteriormente, x ij = a ib j<br />

X<br />

, não é básica.<br />

Nesta seção tratamos <strong>de</strong> como obter uma solução viável inicial que<br />

também seja básica.<br />

Po<strong>de</strong>mos representar o sistema como uma tabela com m linhas e n<br />

colunas, on<strong>de</strong> cada linha da tabela correspon<strong>de</strong> a uma linha ∑ j x ij = a i e<br />

cada coluna da tabela correspon<strong>de</strong> a uma linha ∑ i x ijb j .<br />

x 11 x 12 . . . x 1n a 1<br />

x 21 x 22 x 2n a 2<br />

.<br />

.<br />

(7.3)<br />

x m1 x m2 x mn a m<br />

b 1 b 2 . . . b n<br />

Versão Preliminar<br />

A regra do canto noroeste permite obter uma solução viável básica inicial.<br />

O algoritmo começa com a célula no canto superior esquerdo. Alocamos<br />

tanto quanto pu<strong>de</strong>r (isso significa que estamos <strong>de</strong>terminando quanto<br />

da fonte a 1 vai para o <strong>de</strong>stino b 1 ), sem violar a viabilida<strong>de</strong> da solução. Se


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

118 CAPÍTULO 7. PROBLEMAS DE TRANSPORTE<br />

há oferta sobrando, passamos para uma célula para a direita (porque já<br />

saturamos a capacida<strong>de</strong> <strong>de</strong> b 1 ). Senão, vamos para a <strong>de</strong> baixo (porque a<br />

capacida<strong>de</strong> <strong>de</strong> a 1 foi completamente usada). Se não sobrou oferta ou <strong>de</strong>manda,<br />

vamos para uma célula para baixo e uma para a direita. Repetimos<br />

enquanto for possível mover-se para as células <strong>de</strong> baixo ou da esquerda.<br />

Exemplo 7.6. Consi<strong>de</strong>re um problema <strong>de</strong> transporte com a e b mostrados<br />

a seguir.<br />

a = ( 22 4 17 )<br />

b = ( 9 27 7 )<br />

Começamos montando uma tabela 3 × 3 representando as variáveis x ij .<br />

Alocamos o máximo que po<strong>de</strong>mos em x 11 : como a 1 = 22 e b 1 = 9, alocamos<br />

9 e movemos para a direita. Ainda faltam 13 unida<strong>de</strong>s <strong>de</strong> a 1 para<br />

alocar. Como b 2 = 27, terminamos alocando todas as 13 em a 12 .<br />

Versão Preliminar<br />

a i<br />

9 13 22<br />

4<br />

17<br />

b j 9 27 7<br />

Continuamos agora <strong>de</strong>scendo para a linha <strong>de</strong>baixo, mas ainda na coluna<br />

2. a 2 = 4 e ainda sobram 14 da <strong>de</strong>manda <strong>de</strong> b 2 , portanto alocamos todos<br />

os 4 e movemos novamente para a linha <strong>de</strong>baixo (ainda po<strong>de</strong>mos alocar<br />

10 em b 2 . Das 17 unida<strong>de</strong>s <strong>de</strong> a 3 , 10 po<strong>de</strong>m ser enviadas para b 2 . As outras<br />

7 vão para b 3 . A tabela final é mostrada a seguir.<br />

a i<br />

9 13 22<br />

4 4<br />

10 7 17<br />

b j 9 27 7<br />

Temos agora uma solução viável básica: as somas das linhas resultam nos<br />

a i , e as somas das colunas resultam nos b j . As variáveis básicas são x 11 = 9,<br />

x 12 = 13, x 21 = 4, x 32 = 10, e x 33 = 7. Todos os outros x ij ficam fora da base<br />

e valem zero.<br />

◭<br />

Há métodos diferentes para obter soluções viáveis básicas.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

7.2. SOLUÇÃO INTEIRA 119<br />

7.2 Solução inteira<br />

O último Teorema <strong>de</strong>sta seção é importante porque i<strong>de</strong>ntifica os problemas<br />

<strong>de</strong> transporte como uma classe <strong>de</strong> problemas para as quais po<strong>de</strong>mos<br />

obter soluções inteiras <strong>de</strong> forma eficiente (isto é relevante porque <strong>de</strong> maneira<br />

geral, obter soluções inteiras para problemas <strong>de</strong> otimização <strong>linear</strong> é<br />

difícil – veja o Capítulo 11).<br />

Uma matriz A é triangular se pu<strong>de</strong>r ter suas linhas reor<strong>de</strong>nadas <strong>de</strong><br />

forma que a ij = 0 sempre que i > j.<br />

Teorema 7.7. A base para um problema <strong>de</strong> transporte é triangular.<br />

Demonstração. Consi<strong>de</strong>re a tabela <strong>de</strong> transporte (7.3). Ela mostra claramente<br />

a solução viável básica que estivermos trabalhando, portanto po<strong>de</strong>mos<br />

usá-la para representar uma base.<br />

Suponha que tenhamos alocado valores em um conjunto <strong>de</strong> células,<br />

obtendo uma solução viável básica.<br />

Mostraremos que cada linha ou coluna tem o valor <strong>de</strong> exatamente uma<br />

variável básica: primeiro mostramos que <strong>de</strong>ve haver pelo menos uma variável<br />

básica em cada linha/coluna, e <strong>de</strong>pois argumentamos que <strong>de</strong>ve haver<br />

ao menos uma linha ou coluna on<strong>de</strong> não há mais que uma variável<br />

básica alocada – e que o resultado <strong>de</strong>ve valer para o sistema que resulta<br />

<strong>de</strong> sua remoção.<br />

Primeiro, notamos que não há linha ou coluna sem variável básica (ou<br />

seja, sem célula alocada), porque os a i e b j são positivos.<br />

Suponha, por absurdo, que cada linha e cada coluna tenham pelo menos<br />

duas variáveis básicas alocadas. O número <strong>de</strong> variáveis básicas é então<br />

k ≥2m<br />

k ≥2n.<br />

E portanto k ≥ m + n – mas temos somente m + n − 1 variáveis básicas<br />

(porque este é o posto da matriz <strong>de</strong> restrições). Assim, existe ao menos<br />

uma linha ou coluna on<strong>de</strong> há somente uma variável básica alocada. Se<br />

removermos esta linha ou coluna, obteremos um sistema reduzido e o<br />

argumento po<strong>de</strong> ser repetido.<br />

Como po<strong>de</strong>mos obter os valores <strong>de</strong> cada variável básica, uma a uma,<br />

neste processo, por simples substituição, concluímos que a matriz é triangular.<br />

<br />

Versão Preliminar<br />

Além do fato da base ser triangular, os coeficientes nela são unitários,<br />

e disso concluímos o Teorema a seguir.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

120 CAPÍTULO 7. PROBLEMAS DE TRANSPORTE<br />

Teorema 7.8. Quando todos os a i e b j são inteiros, os valores das variáveis<br />

básicas para qualquer base serão também inteiros.<br />

7.3 Algoritmo para solução do problema <strong>de</strong> transporte<br />

O método Simplex revisado po<strong>de</strong> ser adaptado para explorar o fato da base<br />

ser triangular.<br />

O dual do problema <strong>de</strong> transporte <strong>de</strong>scrito em (7.1) é<br />

max ∑ i≤m<br />

a i u i + ∑ j≤n<br />

b j v j<br />

s.a. : u i + v j ≤ c ij<br />

u ∈ R m<br />

v ∈ R n<br />

Note que o vetor objetivo no dual foi particionado, para refletir mais claramente<br />

a estrutura do problema. As variáveis do dual são os u i (associados<br />

às linhas superiores da matriz <strong>de</strong> restrições do primal) e os v j (associados às<br />

linhas inferiores). As variáveis do dual são, como já vimos anteriormente,<br />

os coeficientes reduzidos <strong>de</strong> custo do primal.<br />

Consi<strong>de</strong>re (7.2). Se x ij é básica, então a coluna correspon<strong>de</strong>nte em A<br />

terá exatamente duas entradas +1: uma na linha i e uma na linha j.<br />

u i + v j = c ij<br />

Ou seja, os coeficientes reduzidos <strong>de</strong> custo são u i + v j − c ij .<br />

Se c ij − u i − v j < 0, po<strong>de</strong>mos melhorar a solução aumentando o valor<br />

da variável não básica que viola o critério <strong>de</strong> otimalida<strong>de</strong>. Suponha que<br />

esta seja x pq , e que c pq − u p − v q < 0. Aumentamos x pq em uma quantida<strong>de</strong><br />

Θ. Com isso a solução torna-se inviável, já que as somas <strong>de</strong> linhas e<br />

colunas <strong>de</strong>vem ser iguais aos a i e b j . Alguma variável na mesma linha ou<br />

na mesma coluna que x pq <strong>de</strong>ve ser reduzida em Θ. Mas suponha que tenhamos<br />

retirado Θ <strong>de</strong> uma variável na mesma linha que x pq . Agora haverá<br />

uma outra coluna on<strong>de</strong> falta Θ. Modificamos esta coluna, e assim sucessivamente<br />

até que tenhamos chegado novamente à linha p, formando um<br />

ciclo.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

7.4. BASES DEGENERADAS 121<br />

encontre uma solu ção viável bá sica x<br />

repita:<br />

resolva c ij − u i − v j = 0 para i, j na base , fixando u 1 = 0<br />

calcule c<br />

ij ′ = c ij − u i − v j para i, j fora da base<br />

se c<br />

ij ′ < 0 para algum par (i, j)<br />

seja (p, q) a posi ção com menor c<br />

ij<br />

′<br />

aumente x pq , corrigindo a viabilida<strong>de</strong> fechando o ciclo<br />

uma vari á vel <strong>de</strong>ixar á a base<br />

senao PARE -- solu ção ó tima<br />

7.4 Bases <strong>de</strong>generadas<br />

É possível, durante a execução do algoritmo para problemas <strong>de</strong> transporte,<br />

encontrar bases <strong>de</strong>generadas. Se isto acontecer, po<strong>de</strong>mos usar o método<br />

da perturbação: quando uma variável com valor zero entra na base, modificamos<br />

seu valor para algum ε > 0, suficientemente pequeno. Quando<br />

a variável sair da base, mudamos novamente seu valor para zero.<br />

7.5 O problema <strong>de</strong> atribuição<br />

Suponha que há n pessoas disponíveis para realizar n trabalhos. Cada pessoa<br />

se a<strong>de</strong>qua <strong>de</strong> maneira diferente a trabalhos diferentes, portanto há um<br />

custo c ij para atribuir a j-ésima tarefa à i-ésima pessoa. Queremos <strong>de</strong>signar<br />

cada pessoa para um trabalho, minimizando o custo total. Este é o<br />

problema da atribuição (ou da <strong>de</strong>signação – ou ainda, problema <strong>de</strong> emparelhamento<br />

<strong>de</strong> custo mínimo) que po<strong>de</strong> ser mo<strong>de</strong>lado como programa<br />

<strong>linear</strong> da seguinte maneira.<br />

min ∑ c ij x ij<br />

i,j<br />

n∑<br />

s.a.: x ij = 1<br />

j<br />

n∑<br />

x ij = 1<br />

i ≤ n<br />

Versão Preliminar<br />

i<br />

x ij ≥ 0<br />

j ≤ n<br />

O problema da atribuição é claramente um caso especial <strong>de</strong> problema <strong>de</strong><br />

transporte.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

122 CAPÍTULO 7. PROBLEMAS DE TRANSPORTE<br />

Teorema 7.9. Seja x uma solução viável básica para um problema <strong>de</strong> <strong>de</strong>signação.<br />

Então as variáveis básicas em x tem valor zero ou um.<br />

Demonstração. A solução é inteira por se tratar <strong>de</strong> um problema <strong>de</strong> transporte;<br />

e é composta <strong>de</strong> zeros e uns porque o lado direito das restrições é<br />

um e os x ij não po<strong>de</strong>m ser negativos.<br />

<br />

O algoritmo para problemas <strong>de</strong> transporte <strong>de</strong>scrito anteriormente neste<br />

Capítulo não é a melhor opção para problemas <strong>de</strong> atribuição, porque neste<br />

tipo <strong>de</strong> problema as soluções são naturalmente <strong>de</strong>generadas (cada x ij é<br />

igual a zero ou um). Há um algoritmo melhor, chamado <strong>de</strong> “método Húngaro”.<br />

Teorema 7.10. Se uma constante for somada a uma das linhas ou colunas<br />

da matriz <strong>de</strong> custos <strong>de</strong> um problema <strong>de</strong> <strong>de</strong>signação, a solução ótima<br />

permanece a mesma.<br />

Demonstração. Demonstramos o fato para linhas, sendo que para colunas<br />

o <strong>de</strong>senvolvimento é semelhante.<br />

Seja C a matriz <strong>de</strong> custos do problema original com valor ótimo z. Somamos<br />

α a uma linha <strong>de</strong> C, obtendo a matriz C ′ . Ao calcularmos o valor<br />

ótimo, a única mudança será na linha i, on<strong>de</strong> teremos<br />

(c i1 + α)x i1 + (c i2 + α)x i2 + . . . = c i1 x i1 + αx i1 + c i1 x i2 + αx i2 + . . .<br />

= c i1 x i1 + c i1 x i2 + . . . + α ∑ j<br />

= z + α ∑ j<br />

= z + α.<br />

O último passo segue <strong>de</strong> ∑ j x ij = 1.<br />

Como o valor objetivo é apenas aumentado por uma constante para<br />

qualquer solução, a solução ótima permanece a mesma.<br />

<br />

subtraia o mí nimo <strong>de</strong> cada linha <strong>de</strong> todos elementos da linha<br />

subtraia o mí nimo <strong>de</strong> cada coluna <strong>de</strong> todos elementos da coluna<br />

repita:<br />

cubra os zeros com o menor nú mero <strong>de</strong> tra ços<br />

se L = n PARE<br />

seja x a menor quantida<strong>de</strong> não coberta pelos tra ços<br />

subtraia x das linhas não cobertas<br />

some x ás colunas cobertas<br />

Versão Preliminar<br />

x ij<br />

x ij


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

7.5. O PROBLEMA DE ATRIBUIÇÃO 123<br />

Notas<br />

O método Húngaro foi <strong>de</strong>senvolvido por Kuhn [Kuh55] a partir do trabalho<br />

dos matemáticos Húngaros Egerváry e König.<br />

O livro <strong>de</strong> Mokhtar Bazaraa e John Jarvis [BJ77] trata <strong>de</strong> programação<br />

<strong>linear</strong> relacionada a problemas em re<strong>de</strong>s.<br />

Exercícios<br />

Ex. 47 — Use a regra do canto noroeste para obter soluções viáveis básicas<br />

iniciais para os problemas <strong>de</strong> transporte a seguir.<br />

a) a = ( 100 100 200 ) , b = ( 50 300 50 )<br />

b) a = ( 3 4 5 6 1 ) , b = ( 6 2 2 7 2 )<br />

c) a = ( 10 10 20 20 30 ) , b = ( 15 15 40 4 16 )<br />

Ex. 48 — Resolva o problema <strong>de</strong> transporte a seguir usando o algoritmo<br />

elaborado neste Capítulo.<br />

⎛ ⎞<br />

a = ( 10 21 7 27 ) 3 2 4 5<br />

b = ( 10 50 5 ) C = ⎝4 3 3 2⎠<br />

2 5 5 1<br />

Ex. 49 — Aplique o algoritmo <strong>de</strong> transporte no seguinte problema. Há três<br />

origens, com oferta igual a 20, 50 e 10; quatro <strong>de</strong>stinos, com <strong>de</strong>mandas 30,<br />

5, 15 e 35. Os custos são dados abaixo.<br />

a 1 a 2 a 3<br />

b 1 1 3 2<br />

b 2 3 2 1<br />

b 3 2 1 3<br />

b 4 1 3 2<br />

Ex. 50 — Implemente o algoritmo <strong>de</strong>scrito neste Capítulo para problemas<br />

<strong>de</strong> transporte.<br />

Versão Preliminar<br />

Ex. 51 — O Teorema 7.5 po<strong>de</strong> ser mostrado extraindo <strong>de</strong> A uma matriz<br />

quadrada <strong>de</strong> or<strong>de</strong>m m + n − 1 e observando seu <strong>de</strong>terminante. Elabore<br />

esta <strong>de</strong>monstração.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

124 CAPÍTULO 7. PROBLEMAS DE TRANSPORTE<br />

Ex. 52 — Prove que a regra do canto noroeste sempre resulta em uma solução<br />

viável básica.<br />

Ex. 53 — Mencionamos que o Teorema 7.8 é consequência da base ser triangular<br />

e ter coeficientes unitários, mas não mostramos que os coeficientes<br />

são <strong>de</strong> fato sempre unitários. Elabore a <strong>de</strong>monstração.<br />

Ex. 54 — Dissemos que é possível contornar o problema <strong>de</strong> bases <strong>de</strong>generadas<br />

usando o método da perturbação (transformando zeros em ε > 0<br />

em variáveis básicas). Se, ao invés disso, nada fizermos <strong>de</strong> especial em relação<br />

a soluções <strong>de</strong>generadas, haveria a possibilida<strong>de</strong> do algoritmo entrar<br />

em um loop infinito ou ele po<strong>de</strong>ria apenas ficar mais lento<br />

Ex. 55 — Mostre como transformar um problema <strong>de</strong> transporte com alguns<br />

custos negativos em outro com todos os custos positivos.<br />

Ex. 56 — Se todos os valores que <strong>de</strong>finem um problema <strong>de</strong> transporte forem<br />

inteiros, a solução do dual também será, em todas as etapas do algoritmo<br />

Ex. 57 — Mostre como transformar um problema <strong>de</strong> transporte não balanceado<br />

(com ∑ a i ≠ ∑ b j ) em um problema <strong>de</strong> transporte balanceado<br />

equivalente.<br />

Ex. 58 — Consi<strong>de</strong>re um problema <strong>de</strong> transporte com uma restrição adicional:<br />

cada fonte não po<strong>de</strong> mandar toda sua produção para um único<br />

<strong>de</strong>stino (a produção <strong>de</strong> cada fonte <strong>de</strong>ve ser dividida em pelo menos dois<br />

<strong>de</strong>stinos). Formule este problema. Tente mostrar como usar o algoritmo<br />

elaborado neste Capítulo para problemas <strong>de</strong> transporte po<strong>de</strong> ser usado<br />

para esta variante do problema, adaptando o algoritmo ou formulando o<br />

problema como um problema <strong>de</strong> transporte comum.<br />

Ex. 59 — Explique brevemente o significado do dual <strong>de</strong> um problema <strong>de</strong><br />

transporte: o que são as variáveis e que significam as restrições E os coeficientes<br />

<strong>de</strong> cada variável no objetivo<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 8<br />

Teoria dos Jogos<br />

O objeto <strong>de</strong> estudo da Teoria dos Jogos são situações envolvendo conflito<br />

<strong>de</strong> interesse entre diversas partes.<br />

8.1 Jogos <strong>de</strong> soma zero<br />

Uma categoria importante <strong>de</strong> jogo é a dos jogos <strong>de</strong> soma zero<br />

Um jogo é dito <strong>de</strong> soma zero se o pagamento <strong>de</strong> um jogador sempre<br />

implica em perda da mesma quantida<strong>de</strong> pelos outros jogadores, <strong>de</strong> tal maneira<br />

que ao somarmos o saldo <strong>de</strong> todos os jogadores ao final do jogo, obteremos<br />

zero (presumindo, claro, que o saldo inicial <strong>de</strong> cada um também<br />

era zero). Como exemplos <strong>de</strong> jogos <strong>de</strong> soma zero temos diversos jogos recreativos<br />

entre duas pessoas, como xadrez, damas, pôquer e outros jogos<br />

semelhantes.<br />

Os jogos <strong>de</strong> soma zero não tem, no entanto, sua relevância limitada<br />

a jogos recreativos – diversas situações diferentes po<strong>de</strong>m ser mo<strong>de</strong>ladas<br />

como jogos <strong>de</strong> soma zero.<br />

Descrevemos um jogo <strong>de</strong> soma zero com dois participantes por uma<br />

matriz <strong>de</strong> pagamentos: as linhas representam as possíveis estratégias do<br />

jogador A e as colunas representam as possíveis estratégias do jogador B.<br />

A posição i, j da matriz <strong>de</strong>screve o quanto o jogador A recebe (e consequentemente<br />

quanto B paga) quando A escolhe a estratégia i e B escolhe<br />

a estratégia j.<br />

Em uma versão simples <strong>de</strong> jogo com soma zero, os dois jogadores não<br />

se comunicam, conhecem a matriz <strong>de</strong> pagamentos, e cada um escolhe sua<br />

estratégia sem conhecimento da estratégia do oponente. Após a escolha<br />

das estratégias, os jogadores recebem ou pagam, <strong>de</strong> acordo com o resul-<br />

Versão Preliminar<br />

125


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

126 CAPÍTULO 8. TEORIA DOS JOGOS<br />

tado.<br />

O jogo a seguir nos dá um primeiro exemplo. O jogador A e o jogador<br />

B <strong>de</strong>vem escolher entre duas cores – preto e branco – em cada rodada.<br />

Quando as cores coinci<strong>de</strong>m, o jogador A ganha. Quando não coinci<strong>de</strong>m, o<br />

jogador B ganha. A matriz <strong>de</strong> pagamentos é mostrada a seguir. Chamamos<br />

o jogador A <strong>de</strong> “jogador linha”, porque suas opções estão à esquerda, uma<br />

por linha. O jogador B é o “jogador coluna”, porque suas escolhas estão<br />

acima, uma por coluna.<br />

preto branco<br />

preto +1 −1<br />

branco −1 +1<br />

Um exemplo mais elaborado é dado a seguir. O jogador A tem quatro opções<br />

<strong>de</strong> estratégia, e o jogador b tem três.<br />

b 1 b 2 b 3 min<br />

a 1 −2 4 8 −2<br />

a 2 1 3 4 1 ←<br />

a 3 −3 −6 5 −6<br />

a 4 −1 3 2 −1<br />

O menor valor em cada linha é o menor valor que resulta daquela estratégia<br />

– e portanto f(i) = min j c ij representa o valor mínimo assegurado pela<br />

estratégia i. A estratégia a 1 garante retorno <strong>de</strong> no mínimo −2; a 2 garante<br />

retorno mínimo <strong>de</strong> 1; e assim por diante. Jogando <strong>de</strong> forma pessimista, o<br />

jogador A claramente quer o maior dos retornos mínimos – ou seja,<br />

arg max min a ij .<br />

j<br />

i<br />

A estratégia a 2 é a que garante o maior retorno mínimo para A. O menor<br />

valor que o jogador-linha po<strong>de</strong> garantir para si, então, é max i min j a ij ,<br />

chamado <strong>de</strong> valor maxinmin. Presumindo que A sempre usará a mesma<br />

estratégia, sua melhor opção é escolher sempre a estratégia a 2 .<br />

O jogador B realiza a mesma análise, e escolhe sua estratégia, min i max j a ij<br />

– garantindo um retorno mínimo que chamaremos <strong>de</strong> valor minimax:<br />

b 1 b 2 b 3 min<br />

a 1 −2 4 8 −2<br />

a 2 1 3 4 1 ←<br />

a 3 −3 −6 5 −6<br />

a 4 −1 3 2 −1<br />

max 1 4 8<br />

↑<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

8.2. ESTRATÉGIA MISTA 127<br />

Presumimos também que B escolherá uma única estratégia, que neste<br />

exemplo <strong>de</strong>ve ser b 1 , que minimiza sua perda.<br />

8.2 Estratégia mista<br />

Quando o valor maximin é diferente do valor minimax, os dois jogadores<br />

<strong>de</strong>vem ter como aproximar seus níveis <strong>de</strong> segurança – como há um espaço<br />

entre os níveis <strong>de</strong> segurança <strong>de</strong> cada jogador, po<strong>de</strong>mos imaginar que <strong>de</strong>veria<br />

ser possível a ambos garantir retorno melhor. Isso não é possível, no<br />

entanto, usando estratégia fixa.<br />

Se o jogador A usar estratégias diferentes e maneira previsível, o jogador<br />

B po<strong>de</strong>rá usar esta informação e obter vantagem sobre A. I<strong>de</strong>almente,<br />

então, A <strong>de</strong>ve escolher sua estratégia aleatoriamente, mas com uma distribuição<br />

<strong>de</strong> probabilida<strong>de</strong>s <strong>de</strong>terminada – e a distribuição ótima é chamada<br />

<strong>de</strong> estratégia mista ótima.<br />

8.2.1 Formulação como programa <strong>linear</strong><br />

Seja x i a probabilida<strong>de</strong> <strong>de</strong> uso da estratégia i por A e y j a probabilida<strong>de</strong> <strong>de</strong><br />

uso da estratégia j por B. A esperança <strong>de</strong> retorno <strong>de</strong> A é<br />

∑ ∑<br />

x i c ij y j = y T Cx<br />

i<br />

j<br />

Presumimos que B queira minimizar este valor, escolhendo a estratégia y<br />

tal que<br />

min y T Cx<br />

y<br />

O jogador A, já supondo que esta será a estratégia <strong>de</strong> B, preten<strong>de</strong> escolher<br />

a estratégia x que maximize este valor:<br />

max min y T Cx<br />

x<br />

y<br />

Para formular este problema como um programa <strong>linear</strong>, observamos que<br />

a estratégia <strong>de</strong> A será tal que, para qualquer estratégia escolhida por B, A<br />

terá retorno <strong>de</strong> no mínimo v – e então temos, para cada coluna,<br />

∑<br />

c ij x i ≥ v<br />

Versão Preliminar<br />

j<br />

E maximizamos x. Além disso precisamos da restrição adicional ∑ x i = 1,<br />

uma vez que x representa uma distribuição <strong>de</strong> probabilida<strong>de</strong>s.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

128 CAPÍTULO 8. TEORIA DOS JOGOS<br />

Assim, se o jogo é <strong>de</strong>scrito por uma matriz <strong>de</strong> pagamentos C, a estratégia<br />

mista ótima para o jogador linha é dada pela solução do programa<br />

<strong>linear</strong> a seguir.<br />

max v<br />

s.a. : C T x ≥ v<br />

∑<br />

xi = 1<br />

x ≥ 0<br />

O dual <strong>de</strong>ste programa <strong>linear</strong> é o problema equivalente para o jogador B<br />

(veja o Exercício 63).<br />

Como exemplo, consi<strong>de</strong>re o jogo <strong>de</strong>finido pela matriz <strong>de</strong> pagamentos<br />

a seguir.<br />

1 2 3 4<br />

1 −500 −600 500 0<br />

2 600 500 −700 −400<br />

As estratégia ótima para o jogador linha po<strong>de</strong> ser obtida a partir do programa<br />

<strong>linear</strong> a seguir.<br />

max v<br />

s.a. : − 500x 1 + 600x 2 ≥ v<br />

− 600x 1 + 500x 2 ≥ v<br />

500x 1 − 700x 2 ≥ v<br />

− 400x 2 ≥ v<br />

x 1 + x 2 = 1<br />

x ≥ 0<br />

v ∈ R<br />

Note que a variável v é livre (queremos permitir valores negativos para v).<br />

A solução ótima para este programa <strong>linear</strong> é<br />

x = ( 0.6<br />

0.4 ) T<br />

Versão Preliminar<br />

com valor ótimo v = −160. Isto significa que a estratégia ótima para o<br />

jogador linha é usar a estratégia 1 com probabilida<strong>de</strong> 0.6 e a estratégia 2<br />

com probabilida<strong>de</strong> 0.4.<br />

O dual do programa <strong>linear</strong> <strong>de</strong>fine a estratégia ótima para o adversário<br />

(jogador coluna), portanto po<strong>de</strong>mos simplesmente usar os coeficientes


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

8.2. ESTRATÉGIA MISTA 129<br />

reduzidos <strong>de</strong> custo para obter sua estratégia ótima. Neste exemplo, temos<br />

y = ( 0 0.2666 0 0.7333 ) T<br />

e evi<strong>de</strong>ntemente, o valor ótimo para o jogador coluna é +160.<br />

Teorema 8.1 (Minimax). Em um jogo <strong>de</strong> soma zero com dois participantes,<br />

sempre existem um valor v e estratégias mistas x, y que garantem o<br />

retorno esperado <strong>de</strong> v para um dos jogadores e −v para o outro.<br />

Demonstração. O programa <strong>linear</strong> que representa o problema <strong>de</strong> A é viável,<br />

∑<br />

porque x = (1, 0, . . . , 0) é solução; além disso, é limitado (a restrição<br />

x = 1 nos garante isso). Assim, <strong>de</strong> acordo com o Corolário 4.15 tanto<br />

este programa <strong>linear</strong> como seu dual tem solução ótima.<br />

O programa <strong>linear</strong> correspon<strong>de</strong>nte ao problema <strong>de</strong> otimização para o<br />

jogador A é o dual daquele correspon<strong>de</strong>nte ao problema do jogador B. O<br />

valor ótimo para os dois programas <strong>linear</strong>es é o mesmo, e com isso a prova<br />

está concluída.<br />

<br />

Notas<br />

John von Neumann e Oskar Morgenstern publicaram em 1944 o livro “Theory<br />

of Games and Economic Behavior” [NM07], on<strong>de</strong> <strong>de</strong>senvolvem sistematicamente<br />

a Teoria dos Jogos, inclusive o Teorema minimax e a Teoria<br />

da Utilida<strong>de</strong>.<br />

Há diversos outras categorias <strong>de</strong> jogos além dos que <strong>de</strong>screvemos neste<br />

Capítulo, com duas pessoas e soma zero. Apenas como exemplo, jogos po<strong>de</strong>m<br />

ser classificados <strong>de</strong> acordo com os seguintes critérios, <strong>de</strong>ntre outros.<br />

• o resultado das ações po<strong>de</strong> ser perfeitamente <strong>de</strong>terminado; probabilístico;<br />

ou in<strong>de</strong>terminado (há um conjunto <strong>de</strong> possíveis resultados<br />

para cada estratégia, mas não se conhece probabilida<strong>de</strong>s sobre eles).<br />

• po<strong>de</strong>-se ter um só jogador (em um jogo contra a natureza) ou diversos<br />

jogadores<br />

• há jogos com informação imperfeita, on<strong>de</strong> a informação a respeito<br />

dos movimentos anteriores não é completo<br />

Versão Preliminar<br />

• quanto aos pagamentos, além <strong>de</strong> soma zero há jogos com soma constante<br />

e jogos com soma variável.<br />

Uma exposição mais ampla da Teoria dos Jogos po<strong>de</strong> ser encontrada<br />

no livro <strong>de</strong> Martin Osborne e Ariel Rubinstein [OR94] ou, em uma segunda<br />

leitura, no livro <strong>de</strong> Drew Fu<strong>de</strong>nberg e Jean Tirole [FT91].


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

130 CAPÍTULO 8. TEORIA DOS JOGOS<br />

Exercícios<br />

Ex. 60 — seria possível caracterizar o jogo <strong>de</strong> par-ou-ímpar como jogo <strong>de</strong><br />

soma zero Se não for possível, o que <strong>de</strong>veria ser modificado<br />

Ex. 61 — Sabemos que no jogo-da-velha, após os dois jogadores escolherem<br />

suas primeiras jogadas (o primeiro X e o primeiro O), o resultado do<br />

jogo já estará <strong>de</strong>terminado, se nenhum <strong>de</strong>les cometer nenhum erro dali<br />

para a frente. Mostre a matriz <strong>de</strong> pagamentos para este jogo, levando em<br />

consi<strong>de</strong>ração apenas a primeira escolha <strong>de</strong> cada um dos jogadores, e presumindo<br />

que esta jogada inicial é feita simultaneamente pelos dois jogadores<br />

(sem que um saiba a jogada do outro).<br />

Ex. 62 — No jogo <strong>de</strong> palitinho (ou “porrinha 1 ”), dois jogadores tem à sua<br />

disposição três palitos para cada um. Cada jogador põe as mãos atrás do<br />

corpo e escon<strong>de</strong> zero, um, dois ou três palitos em uma das mãos, e <strong>de</strong>pois<br />

que cada jogador escon<strong>de</strong>u seus palitos, ambos dão seus palpites a<br />

respeito da quantida<strong>de</strong> total <strong>de</strong> palitos que existe em suas mãos (que será<br />

um número entre zero e seis). Ambos abrem as mãos e o jogador que tiver<br />

acertado o palpite ganha. Normalmente um jogador dá o primeiro palpite<br />

e o outro dá seu palpite em seguida. Supondo que ambos <strong>de</strong>ssem seus<br />

palpites sem conhecer o palpite do outro, como seria a matriz <strong>de</strong> pagamentos<br />

do jogo<br />

Ex. 63 — Verifique que o dual do programa <strong>linear</strong> que <strong>de</strong>fine a estratégia<br />

<strong>de</strong> um jogador em um jogo <strong>de</strong> soma zero é o programa <strong>linear</strong> que <strong>de</strong>fine<br />

a estratégia <strong>de</strong> seu oponente.<br />

Versão Preliminar<br />

1 Muito provavelmente <strong>de</strong>rivado do jogo romano “morra”, on<strong>de</strong> os jogadores usam os<br />

<strong>de</strong>dos das mãos ao invés <strong>de</strong> palitos.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 9<br />

Controle Discreto<br />

Este Capítulo trata <strong>de</strong> problemas <strong>de</strong> controle em tempo discreto – um problema<br />

que po<strong>de</strong> ser naturalmente mo<strong>de</strong>lado como programa <strong>linear</strong>. Uma<br />

vez que o problema também po<strong>de</strong> ser resolvido usando a técnica <strong>de</strong> programação<br />

dinâmica, esta também é explorada. Em algumas áreas da Matemática<br />

Aplicada, controle discreto e programação dinâmica são tratados<br />

como um só tópico.<br />

9.1 Programação Dinâmica<br />

Programação Dinâmica é o nome <strong>de</strong> uma técnica geral <strong>de</strong> resolução <strong>de</strong><br />

problemas. Iniciamos com um subproblema pequeno, achamos a solução<br />

ótima para esta subproblema e <strong>de</strong>pois a usamos para construir soluções<br />

para subproblemas maiores.<br />

Consi<strong>de</strong>re a seguinte situação: temos diversos itens, x 1 , x 2 , ..., x n – cada<br />

um com um peso w 1 , ..., w n e um valor v 1 , ..., v n . Temos uma mochila com<br />

capacida<strong>de</strong> C e queremos incluir na mochila itens que maximizem o valor,<br />

sem exce<strong>de</strong>r a capacida<strong>de</strong> da mochila.<br />

O problema da mochila po<strong>de</strong> ser formulado como um programa <strong>linear</strong>:<br />

max v T x<br />

s.a : w T x ≤ C<br />

Versão Preliminar<br />

Esta formulação só faz sentido, no entanto, se os diversos itens pu<strong>de</strong>rem<br />

ser fracionados. Se exigirmos que as quantida<strong>de</strong>s sejam inteiras teremos<br />

um problema <strong>de</strong> programação inteira.<br />

Denotamos por m i,k o valor que po<strong>de</strong>mos incluir em uma mochila <strong>de</strong><br />

capacida<strong>de</strong> k usando somente os i primeiros itens (e claramente, m i,0 = 0<br />

131


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

132 CAPÍTULO 9. CONTROLE DISCRETO<br />

para qualquer i).<br />

Se sabemos o valor máximo que conseguimos acomodar na mochila<br />

usando apenas os i − 1 primeiros itens, po<strong>de</strong>mos calcular o valor máximo<br />

usando também o i-ésimo item. Se o novo item “cabe” em alguma das<br />

soluções “ótimas para capacida<strong>de</strong> k” anteriores, temos uma nova solução.<br />

A seguinte equação recursiva expressa este método.<br />

m i,k = max {m i−1,k , m i−1,k−wi + v i }<br />

Começamos com m i,0 = m 0,k = 0, para todo i e k. Os valores para os m i,j<br />

po<strong>de</strong>m ser obtidos por programação dinâmica, e o valor ótimo é m n,C . O<br />

algoritmo para <strong>de</strong>terminar m n,C é mostrado a seguir.<br />

mochila (v, w, C):<br />

m i,0 ← 0<br />

m 0,k ← 0<br />

para i <strong>de</strong> 1 a n:<br />

para k <strong>de</strong> 1 a C:<br />

se w i ≤ k: // item i cabe<br />

m i,k ← max {m i−1,k , m i−1,k−wi + v i }<br />

sen ão:<br />

m i,k ← m i−1,k<br />

retorne m n,C<br />

O algoritmo tem complexida<strong>de</strong> <strong>de</strong> tempo O(nC). O tamanho <strong>de</strong> C é<br />

codificado em bits, portanto a complexida<strong>de</strong> é O(2 k ), on<strong>de</strong> k é o número<br />

<strong>de</strong> bits usado para representar C.<br />

Exemplo 9.1. Suponha que os pesos, valores e a capacida<strong>de</strong> sejam w, v e<br />

C dados a seguir.<br />

w = ( 3 1 4 2 )<br />

v = ( 4 3 8 2 )<br />

C =8<br />

A tabela com os m i,k mostra o valor ótimo <strong>de</strong> 15.<br />

0 1 2 3 4 5 6 7 8<br />

0 0 0 0 0 0 0 0 0 0<br />

1 0 0 0 4 4 4 4 4 4<br />

2 0 3 3 4 7 7 7 7 7<br />

3 0 3 3 4 8 11 11 12 15<br />

4 0 3 3 4 8 11 11 12 15<br />

Versão Preliminar<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

9.2. PROCESSO MARKOVIANO DE DECISÃO 133<br />

9.1.1 Aplicabilida<strong>de</strong> do Algoritmo<br />

A técnica <strong>de</strong> programação dinâmica é interessante quando o problema a<br />

ser resolvido apresenta as duas características a seguir.<br />

• Subestrutura ótima: uma solução ótima para o problema po<strong>de</strong> ser<br />

construída a partir <strong>de</strong> soluções ótimas para subproblemas. No exemplo<br />

do problema da mochila, os subproblemas consistiam em maximizar<br />

o valor dos itens que po<strong>de</strong>ríamos acomodar em mochilas<br />

menores.<br />

• Subproblemas não completamente isolados: uma solução para um<br />

subproblema po<strong>de</strong> ser usada mais <strong>de</strong> uma vez, porque há diferentes<br />

subproblemas maiores que a usam. No exemplo da mochila, após<br />

calcularmos o valor máximo para uma mochila <strong>de</strong> tamanho 3, usamos<br />

este dado na construção das soluções para mochilas <strong>de</strong> tamanho<br />

4, 5, etc.<br />

9.2 Processo Markoviano <strong>de</strong> Decisão<br />

Há problemas <strong>de</strong> otimização que po<strong>de</strong>m ser formulados como programas<br />

<strong>linear</strong>es, mas que também po<strong>de</strong>m ser resolvidos por programação dinâmica.<br />

No restante <strong>de</strong>ste Capítulo analisamos os processos Markovianos <strong>de</strong><br />

<strong>de</strong>cisão.<br />

O seguinte problema é frequentemente usado para ilustrar o conceito<br />

<strong>de</strong> processo Markoviano <strong>de</strong> <strong>de</strong>cisão: um empresário produz um único tipo<br />

<strong>de</strong> produto. O empresário <strong>de</strong>ve, todo mês, verificar seu estoque e <strong>de</strong>cidir<br />

quantas unida<strong>de</strong>s adicionais <strong>de</strong>ve encomendar para a fábrica, sabendo,<br />

além da quantida<strong>de</strong> que tem em estoque, a probabilida<strong>de</strong> <strong>de</strong> que cada<br />

unida<strong>de</strong> seja vendida, e o custo <strong>de</strong> armazenamento por unida<strong>de</strong>. O empresário<br />

quer maximizar o lucro nos próximos meses.<br />

O estoque no começo do mês t é s t , que chamamos <strong>de</strong> estado do sistema.<br />

A quantida<strong>de</strong> <strong>de</strong> unida<strong>de</strong>s encomendada é a t . A quantida<strong>de</strong> <strong>de</strong><br />

pedidos é aleatória (com distribuição conhecida), e a <strong>de</strong>notamos por d t .<br />

Então<br />

s t+1 = max {0, s t + a t − d t }<br />

Versão Preliminar<br />

O empresário po<strong>de</strong>rá pedir mais ou menos unida<strong>de</strong>s, <strong>de</strong>pen<strong>de</strong>ndo do estoque.<br />

O problema <strong>de</strong>scrito envolve um sistema com estado interno. O estado<br />

do sistema muda <strong>de</strong> forma probabilística a cada intervalo <strong>de</strong> tempo,<br />

<strong>de</strong>pen<strong>de</strong>ndo <strong>de</strong> ações escolhidas – e o que se quer é a redução do custo ao


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

134 CAPÍTULO 9. CONTROLE DISCRETO<br />

longo do tempo (a minimização <strong>de</strong> uma função). Esta é uma instância <strong>de</strong><br />

um problema mais geral, chamado <strong>de</strong> processo Markoviano <strong>de</strong> <strong>de</strong>cisão.<br />

s (novo estado)<br />

ambiente<br />

política<br />

a (ação executada)<br />

Definição 9.2 (Processo Markoviano <strong>de</strong> Decisão). Um processo Markoviano<br />

<strong>de</strong> <strong>de</strong>cisão consiste <strong>de</strong> um sistema com estado interno, um agente<br />

controlador, uma função <strong>de</strong> transição para o próximo estado e uma função<br />

que dá a recompensa para cada estado. Define-se o processo Markoviano<br />

<strong>de</strong> <strong>de</strong>cisão, então, por (S, A, T, R), on<strong>de</strong> S é o conjunto <strong>de</strong> possíveis<br />

estados do sistema; A é o conjunto <strong>de</strong> possíveis ações (ou “controles”);<br />

T : S × A × S → [0, 1] é a função <strong>de</strong> transição: T(s, a, s ′ ) dá a probabilida<strong>de</strong><br />

do sistema passar ao estado s ′ dado que estava no estado s e a ação a foi<br />

executada; R : S → R é a função recompensa: R(s) é a recompensa por<br />

estar no estado s.<br />

Também se <strong>de</strong>ve associar ao problema um horizonte h, que consiste no<br />

número <strong>de</strong> <strong>de</strong>cisões a serem tomadas e um critério <strong>de</strong> otimalida<strong>de</strong>, que<br />

<strong>de</strong>termina o que se quer otimizar ao longo das épocas <strong>de</strong> <strong>de</strong>cisão. <br />

Este processo <strong>de</strong> <strong>de</strong>cisões em sequência é chamado <strong>de</strong> Markoviano<br />

porque a <strong>de</strong>cisão tomada em um dado momento <strong>de</strong>pen<strong>de</strong> apenas do estado<br />

do sistema naquele momento, e não das <strong>de</strong>cisões ou estados anteriores<br />

– esta é a proprieda<strong>de</strong> <strong>de</strong> Markov.<br />

Ao <strong>de</strong>finirmos um critério <strong>de</strong> otimalida<strong>de</strong>, <strong>de</strong>finimos um valor para<br />

cada estado s em cada época <strong>de</strong> <strong>de</strong>cisão k, que <strong>de</strong>notamos v k (s), <strong>de</strong> forma<br />

que em cada <strong>de</strong>cisão a melhor ação é aquela que maximiza o critério <strong>de</strong><br />

otimalida<strong>de</strong>. Por exemplo, po<strong>de</strong>mos <strong>de</strong>cidir maximizar a recompensa média<br />

nas épocas <strong>de</strong> <strong>de</strong>cisão (1/z ∑ t V t(s)) – ou a recompensa total, ∑ t V t(s),<br />

e neste último caso os valores <strong>de</strong> cada estado serão ótimos quando<br />

V t (s) = max<br />

Versão Preliminar<br />

a∈A<br />

{<br />

R(s) + ∑ s ′ ∈S<br />

T(s, a, s ′ )V t+1 (s ′ )<br />

Note que esta equação po<strong>de</strong> ser usada diretamente na elaboração <strong>de</strong> um<br />

algoritmo recursivo para a solução do problema: parte-se <strong>de</strong> v z (s) e calculase<br />

os valores da época anterior, até chegar à primeira época.<br />

}


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

9.3. FORMULAÇÃO COMO PROGRAMA LINEAR 135<br />

9.3 Formulação como Programa <strong>Linear</strong><br />

Embora a equação do princípio da otimalida<strong>de</strong> já seja ela mesma a expressão<br />

<strong>de</strong> um algoritmo recursivo para a resolução do problema, ele po<strong>de</strong><br />

também ser mo<strong>de</strong>lado como programa <strong>linear</strong>.<br />

{<br />

V t (s) = max R(s, a) + T(s, a, s ′ )V t+1 (s ′ ) }<br />

a<br />

A equação <strong>de</strong> Bellman <strong>de</strong>termina o valor ótimo que queremos. De todos<br />

os valores maiores ou iguais a este ótimo, tomamos então o menor. Daí<br />

temos as restrições V t (s) ≥ R(s, a) + V t+1 (T(s, a)), e extraímos agora o<br />

mínimo: basta <strong>de</strong>finir então o problema <strong>de</strong> minimização<br />

min ∑ V t (s)<br />

t,s<br />

s.a. : V t (s) ≥ R(s, a) + T(s, a, s ′ )V t+1 (s ′ )<br />

O programa <strong>linear</strong>, no entanto, teria |S|×|A|×z restrições, e |S|×z variáveis,<br />

on<strong>de</strong> z é o horizonte (o número <strong>de</strong> estágios). O dual teria |S| × z restrições.<br />

Para horizontes muito longos, este método não é bom.<br />

9.4 Horizonte infinito e convergência<br />

Po<strong>de</strong>mos esten<strong>de</strong>r estas noções para horizonte infinito. Claramente, não<br />

é possível usar o critério <strong>de</strong> otimalida<strong>de</strong> da recompensa total, porque o<br />

somatório não necessariamente convergiria. Po<strong>de</strong>mos, no entanto, multiplicar<br />

a <strong>de</strong>cisão na época k por γ k , com 0 < γ < 1, garantindo assim<br />

que o problema continuará tendo solução. A interpretação <strong>de</strong>ste fator é a<br />

seguinte: valorizamos mais as recompensas obtidas num horizonte mais<br />

próximo e menos aquelas obtidas em um horizonte distante. Este critério<br />

<strong>de</strong> otimalida<strong>de</strong> é o da recompensa total esperada, e nos leva à seguinte<br />

versão da equação <strong>de</strong> Bellman.<br />

{<br />

}<br />

v(s) = max<br />

a∈A<br />

R(s) + γ ∑ s ′ ∈S<br />

T(s, a, s ′ )v(s ′ )<br />

Versão Preliminar<br />

Sua formulação como programa <strong>linear</strong> é<br />

min ∑ V(s)<br />

s<br />

s.a. : V(s) ≥ R(s, a) + T(s, a, s ′ )V(s ′ )<br />

.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

136 CAPÍTULO 9. CONTROLE DISCRETO<br />

O programa <strong>linear</strong> tem |S| variáveis e |S| 2 |A| restrições.<br />

Da mesma forma que com horizonte finito, po<strong>de</strong>mos extrair da equação<br />

<strong>de</strong> otimalida<strong>de</strong> um algoritmo recursivo. Partimos <strong>de</strong> um ponto qualquer<br />

e calculamos os valores da época anterior até que os valores entre<br />

duas iterações estejam suficientemente próximos.<br />

9.4.1 Convergência<br />

Para <strong>de</strong>monstrar que o algoritmo <strong>de</strong> programação dinâmica converge para<br />

MDPs <strong>de</strong> horizonte infinito com 0 < γ < 1, precisamos mostrar que cada<br />

passo do algoritmo aplica uma contração na função valor.<br />

O que o algoritmo <strong>de</strong> programação dinâmica para MDPs faz é essencialmente<br />

aproximar uma função, e para garantir que o algoritmo converge<br />

mostramos que cada passo <strong>de</strong>le aplica uma contração sobre V.<br />

Definição 9.3 (Sequência <strong>de</strong> Cauchy). Uma sequência <strong>de</strong> elementos em<br />

um espaço métrico é dita <strong>de</strong> Cauchy quando a distância entre dois elementos<br />

a n , a n+1 consecutivos da sequência ten<strong>de</strong> a zero quando n →<br />

∞. <br />

Definição 9.4 (Espaço <strong>de</strong> Banach). Um espaço vetorial V com uma norma<br />

é um espaço <strong>de</strong> Banach se toda sequência <strong>de</strong> Cauchy <strong>de</strong> elementos <strong>de</strong> V<br />

tem limite em V.<br />

<br />

Teorema 9.5. Seja ||.|| a norma obtida tomando o maior valor absoluto dos<br />

elementos <strong>de</strong> um vetor. R n com esta norma é um espaço <strong>de</strong> Banach.<br />

Definição 9.6 (Contração). Seja V um espaço <strong>de</strong> Banach. Um operador<br />

F : V → V é uma contração se para todos u, v ∈ V, ||Fv − Fu|| ≤ α||v − u||,<br />

com 0 ≤ α ≤ 1.<br />

<br />

Teorema 9.7. Seja V um espaço <strong>de</strong> Banach e F : V → V uma contração<br />

em V. Então F tem um único ponto fixo x ∗ tal que Fx ∗ = x ∗ . Além disso,<br />

se x 0 é um elemento qualquer <strong>de</strong> V, e x 0 , x 1 , . . . , x k uma sequência tal que<br />

x i = Fx i−1 , então esta sequência converge para x ∗ .<br />

Observamos agora que po<strong>de</strong>mos reescrever a equação <strong>de</strong> otimalida<strong>de</strong><br />

<strong>de</strong> forma a ficar claro que se trata <strong>de</strong> um operador <strong>linear</strong>.<br />

Versão Preliminar<br />

v i (s) = Hv i−1 (s)<br />

{<br />

Hv(s) = max<br />

a∈A<br />

R(s, a) + γ ∑ s ′ ∈S<br />

T(s, a, s ′ )v(s ′ )<br />

}<br />

.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

9.5. VARIANTES DE MDPS 137<br />

Teorema 9.8. O operador H é uma contração em R n com a norma ||v|| =<br />

max i |v i |.<br />

Demonstração. Sejam u, v ∈ R n duas funções valor, com Hu(s) ≥ Hv(s).<br />

Seja a ∗ s uma ação ótima para a função valor v – ou seja,<br />

Então<br />

{<br />

a ∗ s ∈ arg max R(s, a) + γ ∑ }<br />

T(s, a, s ′ )v(s ′ ) .<br />

a<br />

Lv(s) − Lu(s) ≤ R(s, a ∗ s) + ∑ γT(s, a, s ′ )v(s ′ )<br />

− R(s, a ∗ s) + ∑ γT(s, a, s ′ )u(s ′ )<br />

= γ ∑ s ′ T(s, a, s ′ )(v(s) − u(s))<br />

≤ γ ∑ s ′<br />

T(s, a, s ′ )||v − u||<br />

= γ||v − u|| ≤ ||v − u||.<br />

Po<strong>de</strong>-se <strong>de</strong>finir diferentes critérios <strong>de</strong> otimalida<strong>de</strong>, como minimizar<br />

a variância da recompensa, sujeitando a solução a uma recompensa média<br />

mínima, ou minimizar a recompensa média, limitando a variância da<br />

recompensa.<br />

9.5 Variantes <strong>de</strong> MDPs<br />

Esta seção discute algumas variantes <strong>de</strong> MDPs, sem no entanto <strong>de</strong>talhar<br />

os métodos para sua resolução. A Seção <strong>de</strong> Notas ao final do Capítulo traz<br />

indicações <strong>de</strong> leitura adicional para o leitor interessado.<br />

9.5.1 Tempo contínuo<br />

Po<strong>de</strong>-se <strong>de</strong>finir MPDs em tempo contínuo, mas com estados e ações discretos.<br />

Os conjuntos <strong>de</strong> estados e ações (S e A) e a função <strong>de</strong> transição T em<br />

um SMDP são semelhantes às <strong>de</strong> um MDP.<br />

Versão Preliminar<br />

• R : S × A → R é composta <strong>de</strong> duas outras funções;


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

138 CAPÍTULO 9. CONTROLE DISCRETO<br />

• F : R + × S × A → [0, 1] dá a probabilida<strong>de</strong> da próxima época <strong>de</strong><br />

<strong>de</strong>cisão acontecer antes do tempo t, sendo que o processo está no<br />

estado s e a ação a será executada.<br />

A função <strong>de</strong> recompensa é composta por duas outras,<br />

• r : S × A → R dá a recompensa imediata após uma <strong>de</strong>cisão a em um<br />

estado s.<br />

• R : S × S × A → R dá a recompensa por permanecer em um estado<br />

s ′ dado que o estado anterior era s e a ação executada foi a.<br />

Como essa <strong>de</strong>scrição abre a possibilida<strong>de</strong> <strong>de</strong> termos infinitas épocas<br />

<strong>de</strong> <strong>de</strong>cisão em tempo finito, presumimos que para todos s ∈ S, a ∈ A,<br />

existem ε, δ > 0 tais que<br />

F(s, a, δ) ≤ 1 − ε<br />

O fator <strong>de</strong> <strong>de</strong>sconto usado para horizonte infinito é α > 0, e a recompensa<br />

no tempo t é multiplicada por e −αt (o que é equivalente a usar γ t ,<br />

com 0 < γ < 1).<br />

A recompensa entre duas épocas <strong>de</strong> <strong>de</strong>cisão acontecendo nos tempos<br />

u k e u k+1 é<br />

s t é o estado no tempo t.<br />

{<br />

∑ ∞<br />

V(s) = E<br />

k=0<br />

∫ uk+1<br />

u k<br />

e −αu k<br />

e −α(t−u k) R(s, s t , a)dt.<br />

[<br />

r(s, a) +<br />

∫ uk+1<br />

u k<br />

] }<br />

e −α(t−uk) R(s, s t , a)dt<br />

A recompensa R(s, a) po<strong>de</strong> ser calculada a partir <strong>de</strong> r e F.<br />

∫ ∞ ∑<br />

[∫ u<br />

]<br />

R(s, a) = r(s, a) +<br />

e −αt R(s, s ′ , a)T(s, a, s ′ )dt F(du, s, a)<br />

0<br />

s ′ 0<br />

Q(s ′ , t, s, a) é a probabilida<strong>de</strong> da próxima época <strong>de</strong> <strong>de</strong>cisão acontecer<br />

antes do tempo t e do próximo estado ser s ′ , dado que o estado atual era<br />

s e a ação executada foi a.<br />

Q(s ′ , t, s, a) = T(s ′ , s, a)F(t, s, a).<br />

Versão Preliminar<br />

Denotamos por m(s ′ , s, a) a probabilida<strong>de</strong> do próximo estado ser s ′ dado<br />

que o estado atual é s e a ação executada é a.<br />

m(s ′ , s, a) =<br />

∫ ∞<br />

0<br />

e −αt Q(dt, s ′ , s, a)


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

9.5. VARIANTES DE MDPS 139<br />

A equação <strong>de</strong> otimalida<strong>de</strong> para SMDPs é mostrada a seguir. Com ela<br />

po<strong>de</strong>mos usar programação dinâmica na solução <strong>de</strong>stes problemas.<br />

V k (s) = max<br />

a<br />

[<br />

R(s, a) + ∑ s ′ m(s ′ , s, a)V k+1 (s ′ )<br />

Diversos outros métodos para solução <strong>de</strong> MDPs também funcionam<br />

para SMDPs, inclusive a formulação como programa <strong>linear</strong>.<br />

9.5.2 Parâmetros imprecisos<br />

Suponha que alguns dos parâmetros <strong>de</strong> um MDP foram especificados com<br />

imprecisão: sabemos apenas que algumas probabilida<strong>de</strong>s <strong>de</strong> transição e<br />

valores <strong>de</strong> recompensa estão situados em <strong>de</strong>terminados intervalos. Um<br />

MDP especificado <strong>de</strong>sta forma é chamado <strong>de</strong> “MDP com parâmetros imprecisos”<br />

(MDPIP)<br />

9.5.3 Observabilida<strong>de</strong> parcial<br />

Em um Processo <strong>de</strong> Decisão <strong>de</strong> Markov Parcialmente Observável (POMDP 1 ),<br />

não presumimos que o tomador <strong>de</strong> <strong>de</strong>cisões conhece o estado do sistema.<br />

Ele conhece apenas uma distribuição <strong>de</strong> probabilida<strong>de</strong>s sobre os estados<br />

na primeira época <strong>de</strong> <strong>de</strong>cisão. Depois disso, a cada época <strong>de</strong> <strong>de</strong>cisão ele<br />

percebe, além <strong>de</strong> sua recompensa, uma observação vinda do ambiente (o<br />

conjunto <strong>de</strong> observações é finito). Após obter a recompensa e verificar a<br />

observação, o tomador <strong>de</strong> <strong>de</strong>cisões atualiza internamente uma estatística<br />

suficiente a respeito do sistema. Esta estatística representa, <strong>de</strong> certa forma,<br />

sua crença, e é chamada <strong>de</strong> estado <strong>de</strong> informação, porque não representa<br />

o estado do sistema, e sim o estado da informação que se tem a respeito<br />

do sistema.<br />

o (observação)<br />

ambiente<br />

Versão Preliminar<br />

estimador<br />

<strong>de</strong> estados<br />

nova<br />

estatística<br />

1 Partially Observable Markov Decision Process<br />

política<br />

]<br />

a (ação executada)


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

140 CAPÍTULO 9. CONTROLE DISCRETO<br />

Um POMDP po<strong>de</strong> ser <strong>de</strong>scrito da mesma forma que um MDP, pelos<br />

conjuntos S, A e funções T, R, além <strong>de</strong>:<br />

• Ω : o conjunto <strong>de</strong> possíveis observações.<br />

• O : S × A × Ω → [0, 1] : dá a probabilida<strong>de</strong> da observação o ser<br />

recebida após a ação a ser executada em um estado s.<br />

Há dois exemplos relevantes <strong>de</strong> estatística suficiente.<br />

• Histórico completo: a sequência completa <strong>de</strong> ações, observações e<br />

recompensas <strong>de</strong>s<strong>de</strong> o primeiro momento é uma estatística suficiente.<br />

• Distribuição <strong>de</strong> probabilida<strong>de</strong>s sobre estados: o tomador <strong>de</strong> <strong>de</strong>cisões<br />

po<strong>de</strong>, também, manter uma distribuição <strong>de</strong> probabilida<strong>de</strong> sobre<br />

os estados, e atualizá-la após cada estágio.<br />

A representação <strong>de</strong> políticas para POMDPs não po<strong>de</strong> ser feita diretamente,<br />

porque seria necessário mapear uma quantida<strong>de</strong> infinita e não<br />

enumerável <strong>de</strong> distribuições em valores. Po<strong>de</strong>-se <strong>de</strong>finir, no entanto, um<br />

MDP sobre um conjunto infinito <strong>de</strong> estados <strong>de</strong> crença, e a função valor<br />

torna-se convexa e <strong>linear</strong> por partes. O número <strong>de</strong> hiperplanos usado em<br />

cada época <strong>de</strong> <strong>de</strong>cisão) é exponencial em |Ω|, e portanto a quantida<strong>de</strong> <strong>de</strong><br />

vetores para z épocas <strong>de</strong> <strong>de</strong>cisão é duplamente exponencial em z. O algoritmo<br />

<strong>de</strong> programação dinâmica, quando aplicado diretamente a POMDPs,<br />

tem complexida<strong>de</strong> <strong>de</strong> tempo O(|S||A| |Ω|z ). O problema é P-ESPAÇO completo.<br />

Há outras formas <strong>de</strong> representar políticas para POMDPs, como por exemplo<br />

controladores (autômatos <strong>de</strong> Buchi) estocásticos.<br />

Notas<br />

O problema <strong>de</strong> Programação Dinâmica foi popularizado por Richard Bellman<br />

[Bel03] e Ronald Howard [How60].<br />

O livro <strong>de</strong> Martin Puterman trata <strong>de</strong>talhadamente do problema <strong>de</strong> <strong>de</strong>cisões<br />

em sequência [Put05], inclusive a formulação como programa <strong>linear</strong>.<br />

A abordagem mo<strong>de</strong>rna para programação dinâmica envolve métodos<br />

diferentes da programação <strong>linear</strong> – Bertsekas aborda o mesmo tema,<br />

<strong>de</strong> forma diferente [Ber07] [BT96]; o livro <strong>de</strong> Sutton e Barto apresenta métodos<br />

biologicamente inspirados [SB98]; o livro <strong>de</strong> Warren Powell trata <strong>de</strong><br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

9.5. VARIANTES DE MDPS 141<br />

métodos para a resolução <strong>de</strong> gran<strong>de</strong>s problemas <strong>de</strong> programação dinâmica<br />

[Pow11]. O livro <strong>de</strong> Robert Stengel é uma boa introdução à Teoria do<br />

Controle Ótimo [Ste94], também indicado ao leitor interessado no assunto.<br />

O algoritmo <strong>de</strong> programação dinâmica, elaborado para resolver um<br />

problemas <strong>de</strong> Controle Ótimo, mostrou-se útil também em outros contextos,<br />

tornando-se tópico obrigatório <strong>de</strong> estudo em Ciência da Computação<br />

[Cor+09; DPV06].<br />

Os SMDPs foram estudados inicialmente por W. S. Jewell [Jew63], Howard [How71]<br />

e <strong>de</strong>Cani [Can64], e são discutidos nos livros <strong>de</strong> Martin Puterman [Put05]<br />

e <strong>de</strong> Dimitri Bertsekas [Ber07].<br />

A <strong>de</strong>monstração <strong>de</strong> que o problema <strong>de</strong> resolver POMDPs é P-ESPAÇOdifícil<br />

foi dada por Christos Papadimitriou e John Tsitsiklis [PT87].<br />

MDPIPs são discutidos em diversos artigos [SL70; IE94; Fil+07], e há<br />

também POMDPs com parâmetros imprecisos, chamados <strong>de</strong> POMDPIPs [IN07].<br />

Exercícios<br />

Ex. 64 — Implemente o algoritmo <strong>de</strong> programação dinâmica para o problema<br />

da mochila.<br />

Ex. 65 — Implemente o algoritmo <strong>de</strong> programação dinâmica para MDPs.<br />

Ex. 66 — Se os pesos w i e a capacida<strong>de</strong> C em uma instância do problema<br />

da mochila são todos muito gran<strong>de</strong>s, é possível reescrever o problema <strong>de</strong><br />

forma que exija tempo <strong>de</strong> execução menor do algoritmo <strong>de</strong> programação<br />

dinâmica<br />

Ex. 67 — Mostre como resolver as seguintes do problema da mochila usando<br />

programação dinâmica (k ∈ N é parâmetro <strong>de</strong> entrada):<br />

i) que funcione permitindo repetição <strong>de</strong> itens;<br />

ii) que permita até k itens do mesmo tipo;<br />

iii) que permita que até 1/k do peso total seja <strong>de</strong> itens do mesmo tipo;<br />

iv) que permita que até 1/k do valor total seja <strong>de</strong> itens do mesmo tipo.<br />

Versão Preliminar<br />

v) que maximize a quantida<strong>de</strong> <strong>de</strong> itens, e não seus valores.<br />

Diga como fica a complexida<strong>de</strong> <strong>de</strong> cada um dos seus algoritmos.<br />

Ex. 68 — Tente formular os algoritmos do Exercício 67 como programas<br />

<strong>linear</strong>es.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

142 CAPÍTULO 9. CONTROLE DISCRETO<br />

Ex. 69 — O algoritmo dado neste Capítulo usando programação dinâmica<br />

para o problema <strong>de</strong> mochila apenas <strong>de</strong>termina o valor máximo que po<strong>de</strong><br />

ser acomodado na mochila, e não os itens. Mostre como modificá-lo para<br />

que inclua também os itens. Mostre como fica a complexida<strong>de</strong> do seu<br />

algoritmo modificado.<br />

Ex. 70 — Uma fábrica usa uma máquina que se comporta da seguinte maneira:<br />

quando a máquina está em perfeito estado, ela produz $200 por semana.<br />

A máquina po<strong>de</strong> apresentar um problema típico que a fará produzir<br />

apenas $100 por semana. A manutenção preventiva da máquina custa $10<br />

por semana. A cada semana sem manutenção preventiva, a probabilida<strong>de</strong><br />

da máquina apresentar esse <strong>de</strong>feito é 0.2. A cada semana com manutenção<br />

preventiva, a probabilida<strong>de</strong> da máquina apresentar o <strong>de</strong>feito é 0.1. Se a<br />

máquina estiver com esse <strong>de</strong>feito, po<strong>de</strong>-se pagar $300 a um técnico para<br />

consertá-la. Se a máquina estiver com <strong>de</strong>feito, ela também po<strong>de</strong> quebrar<br />

completamente na semana seguinte com probabilida<strong>de</strong> 0.08. Nesse caso<br />

uma nova máquina precisa ser comprada por $10000. Um gerente da fábrica<br />

precisa <strong>de</strong>cidir quando realizar manutenção preventiva e quando<br />

consertar máquinas <strong>de</strong>feituosas.<br />

Ex. 71 — Usando a formalização <strong>de</strong> SMDPs dada neste Capítulo, <strong>de</strong>screva<br />

MDPs, possivelmente modificando pequena parte daquele formalismo.<br />

Ex. 72 — Descreva claramente a relação entre o algoritmo para o problema<br />

da mochila e o princípio da indução matemática (a versão forte).<br />

Ex. 73 — Imagine um processo <strong>de</strong> <strong>de</strong>cisão <strong>de</strong> Markov com horizonte finito<br />

on<strong>de</strong> a recompensa é <strong>de</strong>finida probabilisticamente em função do tempo:<br />

temos R(s, a, t, h) – on<strong>de</strong> t é o tempo e h é o horizonte (fixo) – ao invés<br />

<strong>de</strong> R(s, a). Você ainda po<strong>de</strong> <strong>de</strong>terminar a equação <strong>de</strong> otimalida<strong>de</strong> Ela<br />

po<strong>de</strong>ria ser usada para mo<strong>de</strong>lar este problema como programa <strong>linear</strong><br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Parte III<br />

Tópicos Relacionados<br />

Versão Preliminar<br />

143


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 10<br />

O Algoritmo Primal-Dual e<br />

suas Aplicações<br />

Neste Capítulo <strong>de</strong>screvemos o algoritmo Primal-Dual para resolução <strong>de</strong><br />

programas <strong>linear</strong>es. A importância <strong>de</strong>ste método está não em sua aplicabilida<strong>de</strong><br />

em programas <strong>linear</strong>es comuns, mas sim no seu uso para o <strong>de</strong>senvolvimento<br />

<strong>de</strong> algoritmos <strong>de</strong> otimização combinatória.<br />

10.1 O algoritmo primal-dual<br />

10.2<br />

Exercícios<br />

Versão Preliminar<br />

145


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

146 CAPÍTULO 10. O ALGORITMO PRIMAL-DUAL E SUAS APLICAÇÕES<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 11<br />

Programação Inteira<br />

Muitas vezes queremos resolver um problema <strong>de</strong> otimização <strong>linear</strong> on<strong>de</strong><br />

só nos interessam as soluções inteiras. Um problema <strong>de</strong> programação inteira<br />

é semelhante a um problema <strong>de</strong> programação <strong>linear</strong>, mas restringindo<br />

parte das variáveis a valores inteiros:<br />

max c T x<br />

s.a. : Ax = b<br />

x ≥ 0<br />

x j ∈ Z, se j ∈ K<br />

on<strong>de</strong> o conjunto K contém os índices das variáveis inteiras.<br />

Neste texto trataremos <strong>de</strong> dois métodos para resolver programas inteiros.<br />

O primeiro é o método dos planos <strong>de</strong> corte, que consiste em <strong>de</strong>terminar<br />

novas <strong>de</strong>sigualda<strong>de</strong>s que reduzam o poliedro das soluções viáveis,<br />

facilitando a obtenção <strong>de</strong> uma solução inteira. O segundo é o método<br />

branch-and-bound, que enumera <strong>de</strong> forma inteligente as soluções.<br />

Versão Preliminar<br />

11.1 Planos <strong>de</strong> corte<br />

Suponha que queiramos resolver um programa <strong>linear</strong> inteiro <strong>de</strong> minimização<br />

e que a região viável seja como a que é mostrada na próxima figura.<br />

A seta mostra a direção para a qual o valor da função objetivo f <strong>de</strong>cresce.<br />

147


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

148 CAPÍTULO 11. PROGRAMAÇÃO INTEIRA<br />

x 2<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

1 2 3 4 5 6<br />

Suponha que queiramos tentar resolver o problema relaxando a restrição<br />

<strong>de</strong> integralida<strong>de</strong> e usando, por exemplo, o método Simplex. Obtemos<br />

uma solução não inteira. A partir <strong>de</strong>la, temos duas opções:<br />

• Se tentarmos usar a solução inteira mais próxima, chegaremos ao<br />

ponto (5, 1) fora do politopo (e portanto inviável).<br />

• Se tentarmos percorrer o politopo procurando uma solução inteira<br />

viável, teremos que andar uma gran<strong>de</strong> distância, já que a solução inteira<br />

viável ótima, (2, 5), está longe <strong>de</strong> (5, 1).<br />

Po<strong>de</strong>mos tentar adicionar restrições ao programa <strong>linear</strong>, <strong>de</strong> forma que a<br />

região viável fique menor, mas que nenhuma solução inteira seja removida.<br />

Essas restrições são chamadas <strong>de</strong> planos <strong>de</strong> corte, ou simplesmente<br />

cortes.<br />

Suponha que tenhamos usado o método Simplex para resolver a versão<br />

relaxada do programa <strong>linear</strong> inteiro. O tableau terá a <strong>de</strong>scrição das<br />

variáveis básicas em função das não básicas (que valem zero) e <strong>de</strong> b.<br />

x i + ∑ j>m<br />

a ij x j = b i i ≤ m (11.1)<br />

Versão Preliminar<br />

Como x j não é negativo,<br />

∑<br />

⌊a ij ⌋ x j ≤ ∑ a ij x j ,<br />

j>m j>m<br />

∇f<br />

x 1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

11.1. PLANOS DE CORTE 149<br />

e portanto<br />

x i + ∑ j>m<br />

⌊a ij ⌋ x j ≤ b i<br />

Como procuramos um valor inteiro para x i , e esta solução <strong>de</strong>termina que<br />

x i = b i , po<strong>de</strong>mos usar ⌊b i ⌋ sem alterar a solução inteira.<br />

x i + ∑ j>m<br />

⌊a ij ⌋ x j ≤ ⌊b i ⌋ i ≤ m (11.2)<br />

Subtraindo 11.2 <strong>de</strong> 11.1, obtemos<br />

∑<br />

(a ij − ⌊a ij ⌋) x j ≥ b i − ⌊b i ⌋<br />

j>m<br />

Observe que a variável x i básica <strong>de</strong>saparece. Esta <strong>de</strong>sigualda<strong>de</strong> é o corte<br />

<strong>de</strong> Gomory para a i-ésima linha, e a adicionamos diretamente ao tableau<br />

Simplex, após multiplicá-la por −1 e adicionar uma variável <strong>de</strong> folga s, que<br />

passa a ser básica, com valor −⌊b i ⌋:<br />

− ∑ j>m<br />

(a ij − ⌊a ij ⌋) x j + s = −b i + ⌊b i ⌋<br />

Desta discussão fica claro o Teorema a seguir.<br />

Teorema 11.1. O corte <strong>de</strong> Gomory não exclui solução inteira.<br />

O próximo Teorema também é parte da essência do método dos planos<br />

<strong>de</strong> corte.<br />

Teorema 11.2. Após a adição <strong>de</strong> um corte <strong>de</strong> Gomory, o tableau torna-se<br />

inviável para o primal e viável para o dual.<br />

Demonstração. Se b i não era inteiro, então ⌊b i ⌋ > 0, e o tableau agora tem<br />

a linha s = − ⌊b i ⌋, e portanto é inviável para o primal.<br />

A viabilida<strong>de</strong> para o dual segue trivialmente do fato <strong>de</strong> não termos modificado<br />

a última linha do tableau, on<strong>de</strong> estão os coeficientes relativos <strong>de</strong><br />

custo c j − z j (que são a solução para o dual).<br />

<br />

Po<strong>de</strong>mos então prosseguir com o método Simplex dual, obtendo uma<br />

nova solução. Se a nova solução for inteira, encontramos o ótimo. Se for<br />

fracionária, recomeçamos e adicionamos um novo corte. Se não houver<br />

solução viável, é porque não há solução inteira para o problema original.<br />

É possível garantir que o método dos planos <strong>de</strong> corte sempre termine<br />

em tempo finito, usando <strong>de</strong>terminada disciplina nas escolhas feitas durante<br />

a execução do método Simplex. Não faremos a <strong>de</strong>monstração neste<br />

texto.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

150 CAPÍTULO 11. PROGRAMAÇÃO INTEIRA<br />

Exemplo 11.3. Mostraremos neste exemplo a adição <strong>de</strong> um plano <strong>de</strong> corte<br />

ao programa <strong>linear</strong> a seguir, que exige solução inteira.<br />

min − x 1 + 5x 2<br />

s.a: x 2 ≤ 6<br />

0.5x 1 + 2x 2 ≥ 6.4<br />

1.1x 1 + x 2 ≤ 6.7<br />

x ≥ 0<br />

x ∈ Z 2<br />

Quando resolvemos o problema sem as restrições <strong>de</strong> integralida<strong>de</strong>, obtemos<br />

a solução (4.117, 2.110). No entanto, como po<strong>de</strong>mos ver na figura a<br />

seguir, esta solução está longe da única solução inteira para o problema.<br />

x 2<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0<br />

1 2 3 4 5<br />

Escolhemos uma variável para adicionar o corte <strong>de</strong> Gomory. O tableau<br />

Simplex é<br />

Versão Preliminar<br />

⎛<br />

⎞<br />

x 1 x 2 w 1 w 2 w 3 b i<br />

0 0 1 0.323529 0.294118 3.82941<br />

⎜ 0 1 0 −0.323529 −0.294118 2.17059<br />

⎟<br />

⎝ 1 0 0 0.294118 1.17647 4.11765⎠<br />

0 0 0 1.91176 2.64706 6.73529<br />

x 1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

11.1. PLANOS DE CORTE 151<br />

A linha <strong>de</strong> x 1 no tableau é<br />

x 1 − 0.294118w 2 − 1.176472w 3 = 4.11765<br />

Construimos o corte <strong>de</strong> Gomory:<br />

(0.294118 − ⌊0.294118⌋)w 2 + (1.17647 − ⌊1.17647⌋)w 3 ≥ 4.11765 − ⌊4.11765⌋<br />

A nova variável <strong>de</strong> folga é<br />

0.294118w 2 + 0.17647w 3 ≥ 0.11765 (*)<br />

0.294118w 2 + 0.17647w 3 − s = 0.11765<br />

−0.294118w 2 − 0.17647w 3 + s = −0.11765<br />

s = −0.11765 + 0.294118w 2 + 0.17647w 3<br />

Po<strong>de</strong>mos visualizar a nova restrição (marcada com (*)) se pu<strong>de</strong>rmos escrevêla<br />

usando apenas x 1 e x 2 . Usando o problema original, substituímos<br />

Assim obtemos a restrição<br />

w 2 = − 6.4 + 0.5x 1 + 2x 2<br />

w 3 = + 6.7 − 1.1x 1 − x 2<br />

−0.411766x 2 + 0.047058x 1 + 0.7000062 ≥ −0.11765.<br />

é mostrada no gráfico da região viável a seguir.<br />

x 2<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

0 1 2 3 4 5<br />

Versão Preliminar<br />

x 1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

152 CAPÍTULO 11. PROGRAMAÇÃO INTEIRA<br />

Observe que, como já <strong>de</strong>monstramos, o corte <strong>de</strong> Gomory não exclui solução<br />

inteira da região viável. Por outro lado, ele exclui a solução ótima não<br />

inteira.<br />

Agora adicionamos a restrição ao tableau. Com isso, adicionamos a<br />

variável s, básica, com valor −0.11765, tornando a solução inviável para o<br />

primal:<br />

⎛<br />

⎞<br />

x 1 x 2 w 1 w 2 w 3 s b i<br />

0 0 1 0.323529 0.294118 0 3.82941<br />

0 1 0 −0.323529 −0.294118 0 2.17059<br />

⎜ 1 0 0 0.294118 1.17647 0 4.11765<br />

⎟<br />

⎝ 0 0 0 −0.294118 −0.17647 1 −0.11765⎠<br />

0 0 0 1.91176 2.64706 0 6.73529<br />

Para continuar, observamos que o tableau ainda é viável para o dual,<br />

mas que não é ótimo para ele, porque se fosse seria ótimo para o primal,<br />

e portanto viável aos dois.<br />

Após obter nova solução (usando o dual), verificamos se é inteira. Se<br />

não for, obtemos um novo corte <strong>de</strong> Gomory e repetimos o processo. ◭<br />

11.2 Branch-and-bound<br />

Suponha que tenhamos resolvido a versão relaxada <strong>de</strong> um programa inteiro,<br />

e que a solução obtida, ^x, tem um elemento não inteiro ^x i . Resolvemos<br />

então dois problemas, um presumindo que x i ≥ ⌊^x i ⌋ + 1 e outro<br />

presumindo que x i ≤ ⌊^x i ⌋.<br />

max c T x s.a : Ax ≥ b<br />

x ≥ 0<br />

x j ∈ Z, se j ∈ K<br />

x i ≤ ⌊^x i ⌋<br />

Versão Preliminar<br />

max c T x s.a : Ax ≥ b<br />

x ≥ 0<br />

x j ∈ Z, se j ∈ K<br />

x i ≥ ⌊^x i ⌋ + 1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

11.2. BRANCH-AND-BOUND 153<br />

Exemplo 11.4. As duas figuras a seguir ilustram como a região viável é dividida<br />

em duas. Na primeira figura, a solução fracionária (4.3, 2.4) é obtida.<br />

A variável x 2 é escolhida para criar uma ramificação, e na segunda figura<br />

temos as regiões viáveis para os dois programas <strong>linear</strong>es – um com x 3 ≤ 2<br />

e outra com x 2 ≥ 3.<br />

5<br />

4<br />

5<br />

4<br />

x 2 x 2<br />

x 2 ≥ 3<br />

3<br />

3<br />

2<br />

2<br />

x 2 ≤ 2<br />

1<br />

1<br />

0 1 2 3 4 5<br />

x 1 0 1 2 3 4 5<br />

x 1<br />

Cada vez que dividimos o problema, criamos dois outros, <strong>de</strong>rivados do<br />

primeiro. Isto é naturalmente representado como uma árvore binária,<br />

on<strong>de</strong> cada nó é um problema <strong>de</strong> programação <strong>linear</strong>. A ramificação do<br />

exemplo que <strong>de</strong>mos é representada como árvore a seguir.<br />

x 2 ≤ 2<br />

x 2 ≥ 3<br />

Um limite superior para o valor do objetivo do problema original é obtido<br />

facilmente da solução <strong>de</strong> qualquer um dos problemas relaxados.<br />

Um limite inferior para o valor do objetivo do problema original é obtido<br />

quando um dos problemas relaxados tem solução inteira (po<strong>de</strong>-se<br />

ainda usar diversas técnicas para obter uma solução inteira viável a partir<br />

<strong>de</strong> uma solução fracionária).<br />

Suponha que para um nó a da árvore tenhamos <strong>de</strong>terminado que a<br />

melhor solução possível é α, e que para outro nó b tenhamos verificado<br />

que a pior solução terá valor no mínimo β > α. Po<strong>de</strong>mos evi<strong>de</strong>ntemente<br />

Versão Preliminar<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

154 CAPÍTULO 11. PROGRAMAÇÃO INTEIRA<br />

abandonar o nó α, já que qualquer solução que pu<strong>de</strong>sse ser obtida ali será<br />

pior (ou no máximo tão boa quanto) as soluções obtidas a partir <strong>de</strong> β.<br />

Há escolhas que po<strong>de</strong>m interferir na eficiência do algoritmo:<br />

• Tendo uma árvore com vários nós, a partir <strong>de</strong> qual <strong>de</strong>les faremos a<br />

próxima ramificação;<br />

• Uma vez que tenhamos escolhido um nó da árvore, <strong>de</strong>veremos escolher<br />

uma das variáveis com valor não inteiro para criar a próxima<br />

ramificação.<br />

11.3 Variantes: branch-and-cut, branch-and-price<br />

O nome branch-and-cut é dado à combinação das técnicas <strong>de</strong>scritas anteriormente<br />

(planos <strong>de</strong> corte e branch-and-bound. Após resolver uma versão<br />

relaxada do problema, po<strong>de</strong>-se adicionar um corte ou uma ramificação.<br />

Um corte gera uma nova linha no tableau Simplex. Po<strong>de</strong>-se também<br />

gerar novas colunas – este é o método chamado <strong>de</strong> pricing, que quando<br />

combinado com branch-and-bound é chamado <strong>de</strong> branch-and-price.<br />

11.4 Unimodularida<strong>de</strong> e poliedros integrais<br />

Os problemas <strong>de</strong> transporte com restrições inteiras abordados no Capítulo<br />

7 sempre tem solução ótima inteira, sendo assim possível usarmos<br />

algoritmos eficientes como o Simplex na obtenção <strong>de</strong>ssas soluções. Há<br />

também uma classe <strong>de</strong> problemas com a mesma característica que apresentamos<br />

brevemente nesta Seção.<br />

Definição 11.5. Um poliedro em R n é integral se seus pontos extremos pertencem<br />

a Z n .<br />

<br />

Definição 11.6. Uma matriz é totalmente unimodular se todos os seus sub<strong>de</strong>terminantes<br />

são iguais a +1, −1 ou 0.<br />

<br />

Claramente, todos os elementos <strong>de</strong> uma matriz totalmente unimodular<br />

<strong>de</strong>vem ser +1, −1 ou 0, caso contrário a submatriz 1 × 1 com cada elemento<br />

não seria unimodular. No entanto, nem toda matriz com elementos<br />

+1, −1 e 0 é totalmente unimodular: por exemplo, a matriz a seguir tem<br />

<strong>de</strong>terminante igual a 2.<br />

⎛ ⎞<br />

1 0 1<br />

⎝1 1 0⎠<br />

0 1 1<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

11.4. UNIMODULARIDADE E POLIEDROS INTEGRAIS 155<br />

Teorema 11.7. Se A é totalmente unimodular, então também o são:<br />

• A transposta <strong>de</strong> A.<br />

• As matrizes obtidas removendo linhas ou colunas inteiras <strong>de</strong> A.<br />

• As matrizes obtidas multiplicando linhas ou colunas inteiras por −1.<br />

• As matrizes obtidas por reor<strong>de</strong>nação <strong>de</strong> linhas ou colunas.<br />

• As matrizes obtidas por operação <strong>de</strong> pivoteamento (passo do Simplex).<br />

• (A, I).<br />

Lema 11.8. Se A e b tem apenas valores inteiros então Ax = b tem solução<br />

integral quando <strong>de</strong>t(A) = ±1.<br />

Demonstração. Usamos a regra <strong>de</strong> Cramer: seja A j a matriz A on<strong>de</strong> a j-<br />

ésima coluna foi trocada pelo vetor b. então x j = <strong>de</strong>t(Aj )<br />

<strong>de</strong>t(A) .<br />

Quando <strong>de</strong>t(A) é ±1, x j tem o mesmo valor absoluto que <strong>de</strong>t(A j ). Como<br />

os elementos <strong>de</strong> A e <strong>de</strong> b são inteiros, <strong>de</strong>t(A j ) é inteiro, e também o serão<br />

todos os x j .<br />

<br />

Teorema 11.9. Se A é totalmente unimodular e b ∈ Z n , então os pontos<br />

extremos do poliedro {x : Ax ≤ b} são inteiros.<br />

Demonstração. Os vértices <strong>de</strong> Ax ≤ b são <strong>de</strong>finidos por A ′ , uma submatriz<br />

quadrada <strong>de</strong> A. Como A é totalmente unimodular, A ′ também é.<br />

A ′ x = b ′ tem solução inteira quando <strong>de</strong>t(A ′ ) = ±1, e portanto x é integral.<br />

<br />

Notas<br />

O livro <strong>de</strong> Papadimitriou e Steiglitz [PS98] dá uma boa introdução à Programação<br />

<strong>Linear</strong> Inteira, incluindo os métodos <strong>de</strong> planos <strong>de</strong> corte e branchand-bound.<br />

Há também o livro <strong>de</strong> Laurence Wolsey [Wol98], o <strong>de</strong> Wolsey<br />

e Nemhauser [WN99] e o <strong>de</strong> Korte [KV12]. Para uma visão mais completa<br />

da área veja o livro <strong>de</strong> Schriver [Sch03]. O livro <strong>de</strong> Goldbarg e Luna [GL00]<br />

cita numerosas técnicas usadas no <strong>de</strong>senvolvimento dos <strong>de</strong>talhes do algoritmo<br />

<strong>de</strong> branch-and-bound.<br />

O método dos planos <strong>de</strong> corte foi <strong>de</strong>senvolvido por R. Gomory [Gom58].<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

156 CAPÍTULO 11. PROGRAMAÇÃO INTEIRA<br />

O método <strong>de</strong> branch-and-bound, no contexto <strong>de</strong> Otimização Combinatória,<br />

foi proposto por Land e Doig [LD60] é semelhante à técnica <strong>de</strong><br />

busca usando cortes α − β, usada em Inteligência Artificial [NR10].<br />

O método <strong>de</strong> branch-and-price foi <strong>de</strong>scrito por Barnhart, Johnson, Nemhauser,<br />

Savelsbergh e Vance [Bar+98].<br />

O livro <strong>de</strong> Alexan<strong>de</strong>r Schriver [Sch03] elabora o tópico da unimodularida<strong>de</strong><br />

<strong>de</strong> matrizes e sua conexão com programação inteira.<br />

Politopos relacionados a diferentes classes <strong>de</strong> problemas são estudados<br />

no volume editado por David Avis, David Bremner e Antoine Deza [ABD09].<br />

Exercícios<br />

Ex. 74 — Implemente o algoritmo dos planos <strong>de</strong> corte.<br />

Ex. 75 — Mostre que uma matriz é totalmente unimodular se e somente<br />

se é invertível sobre os inteiros.<br />

Ex. 76 — Prove a recíproca do Teorema 11.9.<br />

Ex. 77 — Prove o Teorema 11.7.<br />

Ex. 78 — Suponha que um poliedro P <strong>de</strong>finido por um programa <strong>linear</strong><br />

seja integral (ou seja, b é inteiro e A é totalmente unimodular). Prove que<br />

após a execução do método Simplex os coeficientes reduzidos <strong>de</strong> custo<br />

do programa <strong>linear</strong> são inteiros.<br />

Ex. 79 — Suponha que A não é totalmente unimodular, mas tem coeficientes<br />

inteiros, e que b seja integral. Quando a solução para Ax = b é<br />

integral Responda para matrizes quadradas <strong>de</strong> or<strong>de</strong>m 2 e 3.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 12<br />

Programação Quadrática<br />

Um problema <strong>de</strong> programação quadrática é semelhante a um problema <strong>de</strong><br />

programação <strong>linear</strong>, exceto que a função objetivo é quadrática e não <strong>linear</strong><br />

(mas as restrições continuam sendo <strong>linear</strong>es). O objetivo <strong>de</strong>ste Capítulo é<br />

meramente o <strong>de</strong> ilustrar conceitos relacionados a Programação Quadrática<br />

e apresentar um algoritmo para solução <strong>de</strong>ste tipo <strong>de</strong> problema, sem<br />

a pretensão <strong>de</strong> compor um estudo <strong>de</strong>talhado do assunto.<br />

12.1 Problemas mo<strong>de</strong>lados como programas quadráticos<br />

Esta seção ilustra brevemente a utilida<strong>de</strong> da programação quadrática atrvés<br />

<strong>de</strong> alguns exemplos.<br />

Exemplo 12.1 (regressão por mínimos quadrados). Um primeiro exemplo<br />

<strong>de</strong> problema <strong>de</strong> programação quadrática é o <strong>de</strong> regressão por mínimos<br />

quadrados. Suponha que tenhamos um conjunto <strong>de</strong> dados (x i , y i ), on<strong>de</strong><br />

x i é um vetor com k elementos. Queremos obter coeficientes a i para a<br />

função<br />

f(x i ) = a 0 + a 1 x i,1 + a 2 x i,2 + . . . + a k x i,k<br />

<strong>de</strong> forma a minimizar a soma dos quadrados dos erros<br />

Versão Preliminar<br />

∑<br />

(y i − f(x i )) 2 .<br />

i<br />

Queremos também impor algumas restrições <strong>linear</strong>es aos coeficientes, e<br />

as <strong>de</strong>screvemos como Ra = b. Este é um problema <strong>de</strong> programação qua-<br />

157


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

158 CAPÍTULO 12. PROGRAMAÇÃO QUADRÁTICA<br />

drática:<br />

min ∑ (y i − a 0 − a 1 x i,1 − a 2 x i,2 − . . . − a k x i,k ) 2<br />

i<br />

s.a. : Ra = b<br />

a ≥ 0.<br />

Exemplo 12.2 (maximização <strong>de</strong> lucro). Em um segundo exemplo, um empresário<br />

preten<strong>de</strong> maximizar o lucro que provém da fabricação <strong>de</strong> diferentes<br />

produtos. O preço p i <strong>de</strong> cada produto <strong>de</strong>cai <strong>linear</strong>mente com a<br />

quantida<strong>de</strong> x i produzida:<br />

p i = k i − γ i x i<br />

on<strong>de</strong> k i > 0 e γ i > 0.<br />

Para maximizar o lucro, o empresário resolve o programa quadrático<br />

min ∑ (k i − γ i x i ) x i<br />

i<br />

s.a. : Ax = b<br />

x ≥ 0.<br />

on<strong>de</strong> A e b <strong>de</strong>terminam restrições advindas da quantida<strong>de</strong> <strong>de</strong> recursos<br />

para a fabricação <strong>de</strong> cada tipo <strong>de</strong> produto.<br />

◭<br />

Exemplo 12.3 (otimização <strong>de</strong> portfólio). O terceiro exemplo é o <strong>de</strong> um investidor<br />

procurando construir uma carteira <strong>de</strong> ativos. O investidor conhece<br />

a variância σ ii e as covariâncias σ ij dos ativos, além da esperança <strong>de</strong><br />

retorno (µ i ) <strong>de</strong> cada um. Ele quer fixar um retorno mínimo esperado M e<br />

minimizar seu risco. Este é um problema <strong>de</strong> programação quadrática:<br />

min ∑ ∑<br />

σ ij x i x j<br />

i j<br />

∑<br />

s.a. : x i = 1<br />

Versão Preliminar<br />

i<br />

∑<br />

µ i x i ≥ M<br />

i<br />

x ≥ 0.<br />

◭<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

12.2. REPRESENTAÇÃO 159<br />

12.2 Representação<br />

Na forma mais geral, um programa quadrático é usualmente <strong>de</strong>finido por<br />

min z(λ, x) = λc T x + 1 2 xT Qx.<br />

s.a. : Ax ≤ b<br />

x ≥ 0<br />

on<strong>de</strong> λ é um parâmetro escalar e x é um vetor com n elementos.<br />

• λc T x <strong>de</strong>screve a parte <strong>linear</strong> da função quadrática;<br />

• Q é uma matriz quadrada <strong>de</strong> or<strong>de</strong>m n <strong>de</strong>screvendo uma função quadrática;<br />

• A e b <strong>de</strong>screvem as restrições. A é uma matriz m × n, e b é um vetor<br />

com m elementos.<br />

É comum exigir que Q seja semi<strong>de</strong>finida positiva, para garantir que a<br />

função sendo otimizada é convexa.<br />

Exemplo 12.4. A função<br />

f(vex) = 2x 2 1 + x2 3 + x 1x 2 − 4x 2 x 3 − x 1 + 3x 2<br />

é <strong>de</strong>scrita por λ = 1 e<br />

⎛ ⎞<br />

−1<br />

⎛<br />

4 1<br />

⎞<br />

0<br />

c = ⎝ 3⎠ , Q = ⎝1 0 −4⎠ ,<br />

0<br />

0 −4 2<br />

jé que<br />

c T x + 1 2 xT Qx = 2x 2 1 + x2 3 + x 1x 2 − 4x 2 x 3 − x 1 + 3x 2 .<br />

Po<strong>de</strong>-se também adotar uma <strong>de</strong>scrição mais compacta:<br />

min z(x) = 1 2 xT Qx.<br />

Versão Preliminar<br />

s.a. : Ax ≤ b<br />

x ≥ 0<br />

Proposição 12.5. Qualquer função quadrática com n−1 variáveis po<strong>de</strong> ser<br />

<strong>de</strong>scrita por uma única matriz simétrica Q <strong>de</strong> or<strong>de</strong>m n.<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

160 CAPÍTULO 12. PROGRAMAÇÃO QUADRÁTICA<br />

Demonstração. Basta que a variável x n seja igual a um.<br />

Mais <strong>de</strong>talhadamente: sejam<br />

⎛<br />

⎞ ⎛ ⎞<br />

q 11 q 12 q 13<br />

1<br />

Q = ⎝q 21 q 22 q 23<br />

⎠ , x = ⎝x 1<br />

⎠<br />

q 31 q 23 q 33 x 2<br />

Então<br />

⎛<br />

⎞ ⎛ ⎞<br />

x T Qx = ( )<br />

q 11 q 12 q 13 1<br />

1 x 1 x 2<br />

⎝q 21 q 22 q 23<br />

⎠ ⎝x 1<br />

⎠<br />

q 31 q 23 q 33 x 2<br />

⎡ ( ) ⎤ ⎛ ⎞<br />

( q11 q 12 q 13 )<br />

1<br />

= ⎣+x 1 ( q21 q 22 q 23<br />

⎦ ⎝<br />

)<br />

x 1<br />

⎠<br />

+x 2 q31 q 32 q 33 x 2<br />

⎛<br />

⎞T ⎛ ⎞<br />

q 11 + x 1 q 21 + x 2 q 31 1<br />

= ⎝q 12 + x 1 q 21 + x 2 q 32<br />

⎠ ⎝x 1<br />

⎠<br />

q 13 + x 1 q 23 + x 2 q 33 x 2<br />

q 11 + x 1 q 21 + x 2 q 31<br />

= +x 1 (q 12 + x 1 q 22 + x 2 q 32 )<br />

+x 2 (q 13 + x 1 q 23 + x 2 q 33 )<br />

= q 11 + (q 21 + q 12 )x 1 + (q 31 + q 13 )x 2 + (q 32 + q 23 )x 1 x 2 + q 22 x 2 1 + q 33x 2 2<br />

Note a presença <strong>de</strong> termos constantes e <strong>de</strong> grau um. Descrevemos a forma<br />

geral <strong>de</strong> uma função <strong>de</strong> grau dois em duas variáveis com uma matriz <strong>de</strong><br />

or<strong>de</strong>m tres.<br />

<br />

Exemplo 12.6. A função dada no exemplo 12.4,<br />

é <strong>de</strong>scrita por<br />

f(vex) = 2x 2 1 + x2 3 + x 1x 2 − 4x 2 x 3 − x 1 + 3x 2<br />

⎛<br />

⎞<br />

0 0 3/2 0<br />

Q = ⎜−1/2 2 1/2 0<br />

⎟<br />

⎝ 3/2 1/2 0 −2⎠ ,<br />

0 0 −2 2<br />

Versão Preliminar<br />

jé que<br />

x T Qx = 2x 2 1 + x2 3 + x 1x 2 − 4x 2 x 3 − x 1 + 3x 2 .<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

12.3. SOLUÇÕES ÓTIMAS PARA PROGRAMAS QUADRÁTICOS 161<br />

12.3 Soluções ótimas para programas quadráticos<br />

Observamos que, como somente a função objetivo é quadrática, a região<br />

viável continua sendo um poliedro – da mesma forma que em programação<br />

<strong>linear</strong>. E similarmente, po<strong>de</strong>mos usar o gradiente da função objetivo<br />

para <strong>de</strong>terminar a solução ótima.<br />

A próxima figura mostra um exemplo <strong>de</strong> programa quadrático: o poliedro<br />

da região viável tem arestas sólidas, e as curvas <strong>de</strong> nível da função<br />

objetivo z(x) são pontilhadas.<br />

x 2<br />

−∇(z)<br />

Se a função objetivo <strong>de</strong> um problema <strong>de</strong> minimização é convexa e o<br />

vértice do parabolói<strong>de</strong> está <strong>de</strong>ntro da região viável, ele é a solução ótima.<br />

Versão Preliminar<br />

Se a função objetivo <strong>de</strong> um problema <strong>de</strong> minimização é côncava (ou<br />

seja, −z(x) é convexa), a solução ótima estará na borda do poliedro, mas<br />

não necessariamente em um ponto extremo.<br />

Observamos também que a função po<strong>de</strong> não ser convexa e nem côncava<br />

(e neste caso terá pontos <strong>de</strong> sela).<br />

x 1


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

162 CAPÍTULO 12. PROGRAMAÇÃO QUADRÁTICA<br />

12.4 Método <strong>de</strong> Beale<br />

As restrições impostas ao problema são <strong>linear</strong>es (e portanto <strong>de</strong>scritas como<br />

Ax = b, como em um proglema <strong>de</strong> programação <strong>linear</strong>). Só temos uma<br />

função quadrática no objetivo cujas <strong>de</strong>rivadas direcionais po<strong>de</strong>mos calcular,<br />

<strong>de</strong> forma semelhante ao que fizemos no método Simplex. No entanto,<br />

para cada função quadrática <strong>de</strong> uma variável, o gradiente aponta para direções<br />

opostas em lados diferentes do véretice da parábola (no caso <strong>linear</strong>,<br />

o gradiente do obejtivo é constante – porque é uma função <strong>linear</strong> – e a<br />

direção <strong>de</strong> maior aumento é fixa. Já no caso quadrático a direção muda,<br />

porque o gradiente <strong>de</strong> uma função quadrática é <strong>linear</strong>.). Isto significa que<br />

seguir cegamente o gradiente po<strong>de</strong> não levar ao ótimo.<br />

Exemplo 12.7. Para um primeiro exemplo minimalista, temos o seguinte<br />

problema.<br />

min (x − 1) 2<br />

s.a.: x ≤ 2<br />

x ≥ 0<br />

Versão Preliminar<br />

A figura a seguir mostra a região viável e a função objetivo.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

12.4. MÉTODO DE BEALE 163<br />

z<br />

4<br />

3<br />

2<br />

1<br />

0<br />

0 1 2 3 4<br />

x<br />

0 1 2 3 4<br />

∇f ∇f x<br />

Observe que neste exemplo o poliedro tem dimensão um, como mostra<br />

parte <strong>de</strong> baixo da figura: ele é o segmento <strong>de</strong> reta entre x = 0 e x = 2.<br />

Na parte superior da figura usamos o plano para representar somente a<br />

função objetivo.<br />

Os pontos 0 e 2 são os únicos pontos extremos do poliedro, e claramente<br />

o ponto ótimo, x = 1, não é um <strong>de</strong>les.<br />

◭<br />

O que ocorre no exemplo 12.7 po<strong>de</strong> acontecer cada vez que uma variável<br />

não básica (e que portanto valia zero) é selecionada para entrar na<br />

base.<br />

O método <strong>de</strong> Beale é uma adaptação simples do algoritmo Simplex que<br />

leva em consi<strong>de</strong>ração esta situação. Começamos em um vértice da região<br />

viável (que é um poliedro, exatamente como em problemas <strong>de</strong> programação<br />

<strong>linear</strong>). Depois, seguimos por diferentes soluções viáveis básicas.<br />

Quando observarmos que uma <strong>de</strong>rivada muda <strong>de</strong> sinal entre dois pontos<br />

extremos, modificamos o problema <strong>de</strong> forma a garantir que a solução encontrada<br />

não estará em nenhum dos dois pontos extremos, mas sim on<strong>de</strong><br />

aquela <strong>de</strong>rivada é zero.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

164 CAPÍTULO 12. PROGRAMAÇÃO QUADRÁTICA<br />

Há duas diferenças importantes, portanto, entre o método Simplex e o<br />

<strong>de</strong> Beale:<br />

• As <strong>de</strong>rivadas direcionais das variáveis não básicas não são mais dadas<br />

por c − z, porque a função objetivo não é <strong>linear</strong>. Para a função<br />

objetivo x T Qx, calculamos a <strong>de</strong>rivada <strong>de</strong> x i :<br />

∂z<br />

∂x i<br />

= ∂ (<br />

q 22 x 2 2<br />

∂x + q 33x 2 3 + · · · + q iix 2 i + · · ·<br />

i } {{ }<br />

2q ii<br />

+ q 23 x 2 x 3 + q 24 x 2 x 4 + · · · + q i2 x i x 2 + q i3 x i x 3 + · · ·<br />

+ q 21 x 2 + · · · + q i1 x<br />

} {{ } i + · · · + q 1i x i + · · ·<br />

} {{ }<br />

q i1<br />

q 1i<br />

)<br />

+ q 11<br />

= 2q ii x i + q i1 + q 1i<br />

= 2q ii x i + 2q i1 .<br />

Fica portanto claro agora porque é conveniente usarmos meta<strong>de</strong> <strong>de</strong>sta<br />

<strong>de</strong>rivada:<br />

1 ∂z<br />

= q ii x i + q i1 .<br />

2 ∂x i<br />

• Po<strong>de</strong>mos ter que parar entre um ponto extremo e outro, se uma <strong>de</strong>rivada<br />

parcial mudar <strong>de</strong> sinal naquele intervalo. Isso é feito incluindose<br />

no tableau uma variável e uma restrição adicionais:<br />

u t = 1 ∂z<br />

= q ii x i + q i1 .<br />

2 ∂x i<br />

nesta situação, para <strong>de</strong>terminar o valor que <strong>de</strong>veremos atribuir a x i ,<br />

igualamos a <strong>de</strong>rivada u t a zero:<br />

Versão Preliminar<br />

u t = 1 ∂z<br />

= 0<br />

2 ∂x i<br />

q ii x i + q i1 = 0<br />

x i = − q i1<br />

q ii<br />

.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

12.4. MÉTODO DE BEALE 165<br />

Ao escolher a variável a sair da base em otimização <strong>linear</strong>, tomamos o<br />

menor dos valores<br />

b i<br />

a ij<br />

Em um problema com função objetivo quadrática, <strong>de</strong>vemos além disso<br />

garantir que a <strong>de</strong>rivada da variável x j não mu<strong>de</strong> <strong>de</strong> sinal.<br />

Teorema 12.8. Seja min x T Cx s.a. Ax ≥ b, x ≥ 0 um problema <strong>de</strong> programação<br />

quadrática e suponha que uma solução viável básica para o problema<br />

seja tal que a variável x j <strong>de</strong>ve entrar na base em um próximo passo<br />

do Simplex.<br />

Para que a nova solução seja viável e que sua <strong>de</strong>rivada não mu<strong>de</strong> <strong>de</strong><br />

sinal, seu valor <strong>de</strong>ve ser o menor <strong>de</strong>ntre<br />

{ }<br />

bi<br />

min e q i1<br />

.<br />

i a ij q ii<br />

Demonstração. Seja g(x j ) a função quadrática <strong>de</strong>finida quando fixamos<br />

todas as variáveis do objetivo exceto x j . Temos<br />

g(x j ) = q jj x 2 j + q j1x j + k.<br />

O vértice da parábola 1 <strong>de</strong>scrita por g está em<br />

x j = −q j1<br />

,<br />

2q jj<br />

já que os coeficientes <strong>de</strong> x 2 j e x j são q jj e q j1 .<br />

Como x j era não básica, tinha valor zero; como já sabemos que vale a<br />

pena incluir x j na base, a <strong>de</strong>rivada direcional do objetivo em relação a x j<br />

é negativa (aponta para o vértice da parábola). Ao mudarmos continuamente<br />

o valor <strong>de</strong> x j , uma <strong>de</strong> duas coisas acontecerá primeiro:<br />

• O valor <strong>de</strong> x j chegará a min i<br />

{<br />

bi<br />

• A <strong>de</strong>rivada ∂g<br />

∂x j<br />

a ij<br />

}<br />

mudará <strong>de</strong> sinal ao atingirmos o vértice da parábola.<br />

<br />

Versão Preliminar<br />

1) Comece com uma solução viável básica, da mesma forma que no<br />

método Simplex;<br />

1 O vértice da parábola <strong>de</strong>scrita por ax 2 + bx + c é (−b/2a, −∆/4a), on<strong>de</strong> ∆ = b 2 − 4ac<br />

é o discriminante.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

166 CAPÍTULO 12. PROGRAMAÇÃO QUADRÁTICA<br />

2) Escreva as variáveis básicas em função das não básicas (no tableau,<br />

isto é o mesmo que usar a matriz i<strong>de</strong>ntida<strong>de</strong> como base).<br />

3) Expresse a função objetivo em função das variáveis não básicas.<br />

4) Verifique as <strong>de</strong>rivadas parciais <strong>de</strong> cada variável não básica x k .<br />

5) Se nenhuma <strong>de</strong>rivada parcial indica que po<strong>de</strong>ria haver melhora no<br />

objetivo, a solução é ótima.<br />

6) Se há alguma <strong>de</strong>rivada parcial que indica que há vantagem em introduzir<br />

uma variável não-básica na base, aumentamos a variável não<br />

básica, até que uma das duas situações a seguir se concertize:<br />

a) uma das básicas chega em zero;<br />

b) a <strong>de</strong>rivada parcial ∂f/∂z k muda <strong>de</strong> sinal.<br />

Se (a) acontecer, escolha uma coluna para <strong>de</strong>ixar a base, como no<br />

método Simplex. Se (b) ocorrer, insira na base a variável<br />

u i = 1 ∂z k<br />

2 ∂f<br />

7) Repita o processo até que as <strong>de</strong>rivadas parciais das variáveis originais<br />

do problema indiquem otimalida<strong>de</strong>, e que as variáveis artificiais introduzidas<br />

sejam todas zero.<br />

Exemplo 12.9. Consi<strong>de</strong>re o problema<br />

min − x 1 − 2x 2 + 2x 2 2<br />

s.a.: x 1 + x 2 ≤ 2<br />

2x 1 + x 2 ≤ 4<br />

x ≥ 0<br />

Pomos o problema na forma padrão,<br />

Versão Preliminar<br />

min − x 1 − 2x 2 + 2x 2 2<br />

s.a.: x 1 + x 2 + x 3 = 2<br />

2x 1 + x 2 + x 4 = 4<br />

x ≥ 0.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

12.4. MÉTODO DE BEALE 167<br />

. Temos<br />

⎛<br />

⎞<br />

0 −1/2 −1<br />

Q = ⎝−1/2 0 0⎠<br />

−1 0 2<br />

Neste problema, po<strong>de</strong>mos começar com a base x 3 = 2, x 4 = 4. Temos<br />

portanto<br />

x 3 = 2 − x 1 − x 2<br />

x 4 = 4 − 2x 1 − x 2<br />

z = x 2 2 − 2x 2 − x 1<br />

As <strong>de</strong>rivadas parciais nas direções das não-básicas são<br />

O tableau correspon<strong>de</strong>nte é<br />

⎛<br />

⎝<br />

1 ∂z<br />

= − 1 2 ∂x 1 2<br />

1 ∂z<br />

= −1 + −4x 2<br />

2 ∂x 2 } {{ }<br />

− 1 2<br />

= −1.<br />

zero<br />

1 1 1 1<br />

⎞<br />

2<br />

2 1 0 0 4⎠<br />

−1<br />

É interessante portanto incluir x 2 na base. Verificamos agora que<br />

2/1 = 2<br />

4/2 = 2<br />

−(−1)/2 = 1/2 (vértice da parábola 2x 2 2 − 2x 2)<br />

Criamos a nova variável<br />

u 1 = 1 ∂z<br />

= −1 − 2x 2<br />

2 ∂x 2<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

168 CAPÍTULO 12. PROGRAMAÇÃO QUADRÁTICA<br />

e reescrevemos as básicas em função das não básicas:<br />

x 2 = 1 2 u 1 + 1 2<br />

s 1 = 3 2 − x1 − 1 2 u 1<br />

s 2 = 7 2 − 2x1 − 1 2 u 1<br />

( 1<br />

z = −x 1 − u 1 − 1 +<br />

2 u 1 + 1 2<br />

2)<br />

= − 3 4 − x 1 − 1 2 u 1 + 1 4 u2 1<br />

O tableau correspon<strong>de</strong>nte, já com as <strong>de</strong>rivadas parciais ∂z<br />

Incluimos portanto x 1 na base.<br />

⎛<br />

⎞<br />

1 0 1 0 1/2 3/2<br />

⎜ 2 0 0 1 1/2 7/2<br />

⎟<br />

⎝ 0 1 0 0 −1/2 1/2⎠<br />

−1 −1/2<br />

(3/2)/1 = 1.5<br />

(7/2)/2 = 1.75<br />

∂x 1<br />

e ∂z<br />

∂u 1<br />

é<br />

A variável s 1 sairá da base. Como a função objetivo é <strong>linear</strong> em x 1 , não<br />

há parábola cujo vértice exija nossa atenção. Simplesmente proce<strong>de</strong>mos<br />

como no método Simplex, obtendo o tableau a seguir.<br />

⎛<br />

⎞<br />

1 0 1 0 1/2 3/2<br />

⎜0 0 −2 1 −1/2 7/2<br />

⎟<br />

⎝0 1 0 0 −1/2 1/2⎠<br />

+1 0<br />

Como a <strong>de</strong>rivada <strong>de</strong> s 1 é positiva e a <strong>de</strong> u 1 é zero, encontramos a solução<br />

ótima<br />

Versão Preliminar<br />

x 1 = 3/2<br />

x 2 = 1/2.<br />

A base também inclui a variável <strong>de</strong> folga s 2 , com valor 1/2.<br />


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

12.5. PONTOS INTERIORES 169<br />

12.5 Pontos interiores<br />

Métodos <strong>de</strong> pontos interiores po<strong>de</strong>m ser usados na resolução <strong>de</strong> problemas<br />

<strong>de</strong> programação quadrática. O método <strong>de</strong> affine scaling, <strong>de</strong>scrito na<br />

seção 6.2.1, adapta-se à programação quadrática: o gradiente do objetivo,<br />

projetado no espaço nulo <strong>de</strong> A, muda a cada iteração porque <strong>de</strong>pen<strong>de</strong> do<br />

ponto. Além disso, não basta que projetemos no espaço nulo <strong>de</strong> A, porque<br />

se o ótimo for ponto interior, o algoritmo andará <strong>de</strong> lado a lado da região<br />

viável, sem chegar ao ótimo.<br />

Notas<br />

Os primeiros métodos para resolução <strong>de</strong> programas quadráticos foram<br />

<strong>de</strong>senvolvidos por Wolfe [Wol59], Dantzig [Dan61], e Beale [Bea55]. Métodos<br />

mo<strong>de</strong>rnos para otimização <strong>de</strong> funções convexas em geral são <strong>de</strong>scritos<br />

por Luenberger [Lue10].<br />

O método do elipsoi<strong>de</strong> po<strong>de</strong> ser usado para programas quadráticos<br />

quando a função objetivo é convexa. Quando a função objetivo não é convexa,<br />

o problema é NP-difícil [PS91].<br />

Exercícios<br />

Ex. 80 — Converta os problemas do início do Capítulo para a forma min x T Qx,<br />

s.a. : Ax = b.<br />

Ex. 81 — Desenvolva um programa que leia uma expressão quadrática e<br />

mostre Q tal que x T Qx seja equivalente à expressão dada (este po<strong>de</strong>ria ser<br />

um módulo <strong>de</strong> entrara para um sistema <strong>de</strong> otimização).<br />

Ex. 82 — Use o método <strong>de</strong> Beale para obter uma solução ótima para os<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

170 CAPÍTULO 12. PROGRAMAÇÃO QUADRÁTICA<br />

seguintes problemas.<br />

(i)<br />

min − x 1 − 2x 2 + x 2 2<br />

s.a.: x 1 + 2x 2 ≤ 4<br />

3x 1 + 2x 2 ≤ 6<br />

x ≥ 0.<br />

(ii)<br />

max 3x 1 + 6x 2 − 4x 2 1 + 4x 1x 2 − x 2 2<br />

s.a.: x 1 + 4x 2 ≥ 9<br />

x 1 + x 2 ≤ 3<br />

x ≥ 0.<br />

Ex. 83 — Implemente o método <strong>de</strong> Beale<br />

Ex. 84 — O método <strong>de</strong> Beale po<strong>de</strong> ser usado com qualquer função objetivo<br />

convexa. Mostre como usá-lo com funções diferenciáveis convexas<br />

não quadráticas.<br />

Ex. 85 — Implemente o método <strong>de</strong> affine scaling para programação quadrática.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Capítulo 13<br />

Otimização Não <strong>Linear</strong><br />

Neste Capítulo abordamos otimização não <strong>linear</strong>. Além <strong>de</strong> ser um tópico<br />

importante por sua aplicabilida<strong>de</strong>, também permite compreen<strong>de</strong>r melhor<br />

os casos mais restritos <strong>de</strong> programação <strong>linear</strong> e quadrática.<br />

Um problema <strong>de</strong> programação não <strong>linear</strong> consiste em minimizar uma<br />

função qualquer f(x), sujeito a restrições quaisquer g i (x):<br />

min f(x)<br />

s.a. : g i (x) ≥ 0<br />

h j (x) = 0,<br />

i = 1, . . . , k<br />

j = 1, . . . , l<br />

on<strong>de</strong> f : R n → R, g i : R n → R e h j : R n → R são funções quaisquer.<br />

Po<strong>de</strong>mos também <strong>de</strong>screver um problema <strong>de</strong> otimização não <strong>linear</strong><br />

apenas com as restrições <strong>de</strong> <strong>de</strong>sigualda<strong>de</strong>, já que cada igualda<strong>de</strong> é equivalente<br />

a duas <strong>de</strong>sigualda<strong>de</strong>s.<br />

Definimos a seguir os conceitos <strong>de</strong> ótimo local e global.<br />

Definição 13.1 (Ótimo local). Seja f : R n → R. O ponto x é um mínimo local<br />

<strong>de</strong> f se f(x) ≤ f(x ′ ) para todo x ′ em alguma vizinhança <strong>de</strong> x. Um máximo<br />

local é <strong>de</strong>finido <strong>de</strong> forma análoga.<br />

<br />

Definição 13.2 (Ótimo global). Seja f : R n → R. O ponto x é o mínimo<br />

global <strong>de</strong> f se f(x) ≤ f(x ′ ) para todo x ′ ∈ Dom(f). O máximo global é<br />

<strong>de</strong>finido <strong>de</strong> forma análoga.<br />

<br />

Versão Preliminar<br />

Tratamos neste Capítulo <strong>de</strong> dois casos diferentes: otimizações sem restrições<br />

(quando as restrições não existem) e com restrições. Em ambos os<br />

casos, tratamos primeiro da caracterização dos pontos ótimos (as “condições<br />

<strong>de</strong> otimalida<strong>de</strong>”), e <strong>de</strong>pois dos métodos.<br />

171


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

172 CAPÍTULO 13. OTIMIZAÇÃO NÃO LINEAR<br />

13.1 Otimização sem restrições<br />

Quando as restrições g i e h j não existem, temos um problema <strong>de</strong> otimização<br />

sem restrições.<br />

Exemplo 13.3. A função a seguir,<br />

1 + cos<br />

(12 √ )<br />

(x − 1) 2 + y 2<br />

f(x, y) = −<br />

,<br />

1<br />

2 ((x − 1)2 + y 2 ) + 2<br />

é uma variante da função “drop wave” 1 , usada como teste prático para algoritmos<br />

<strong>de</strong> otimização. Seu mínimo global é f(1, 0) = −1.<br />

0<br />

−0.5<br />

−1<br />

0.6<br />

0.8 1<br />

1.2<br />

1.4 −0.5<br />

0<br />

Versão Preliminar<br />

1 Esta função po<strong>de</strong> ser transformada na drop wave original trocando “x + 1” por “x”. O<br />

mínimo global passará a ser no ponto (0, 0).<br />

0.5


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

13.1. OTIMIZAÇÃO SEM RESTRIÇÕES 173<br />

0<br />

−0.5<br />

−1<br />

−1<br />

0<br />

1<br />

2<br />

3 −2<br />

O gráfico da função mostra que po<strong>de</strong> haver uma gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> ótimos<br />

locais em uma função não convexa – o que é uma gran<strong>de</strong> dificulda<strong>de</strong><br />

para os métodos <strong>de</strong> otimização.<br />

◭<br />

13.1.1 Condições <strong>de</strong> otimalida<strong>de</strong><br />

Nesta seção abordamos as condições necessárias e suficientes para que<br />

um ponto seja ótimo local. Tratamos separadamente <strong>de</strong> condições <strong>de</strong> primeira<br />

or<strong>de</strong>m (que envolve o gradiente do objetivo) e <strong>de</strong> segunda or<strong>de</strong>m<br />

(on<strong>de</strong> a matriz Hessiana é usada).<br />

Para <strong>de</strong>monstrar as condições necessárias <strong>de</strong> otimalida<strong>de</strong> usamos o<br />

Teorema <strong>de</strong> Taylor.<br />

Teorema 13.4 (<strong>de</strong> Taylor). Seja f : R n → R contínua e diferenciável, e seja<br />

y ∈ R n . Então existe t ∈ (0, 1) tal que<br />

f(x + y) = f(x) + ∇f(x + ty) T y.<br />

Além disso, se f é duas vezes diferenciável,<br />

f(x + y) = f(x) + ∇f(x) T y + 1 2 yT ∇ 2 f(x + ty)y.<br />

Teorema 13.5 (Condição necessária <strong>de</strong> otimalida<strong>de</strong> <strong>de</strong> primeira or<strong>de</strong>m).<br />

Seja f : R n → R. Se f é diferenciável em x e x é ótimo (máximo ou mínimo)<br />

local <strong>de</strong> f, então ∇f(x) = 0.<br />

Versão Preliminar<br />

Intuitivamente, o gradiente em x ∗ <strong>de</strong>ve ser zero, <strong>de</strong> outra forma ele<br />

indicaria uma direção para on<strong>de</strong> f teria valores ainda melhores. Este raciocínio<br />

é formalizado a seguir.<br />

0<br />

2


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

174 CAPÍTULO 13. OTIMIZAÇÃO NÃO LINEAR<br />

Demonstração. Suponha que x ∗ seja um mínimo local em um problema<br />

<strong>de</strong> minimização com função objetivo f : R n → R. Suponha também, por<br />

contradição, que ∇f(x ∗ ) ≠ 0. Então seja<br />

d = −∇(x∗).<br />

Temos portanto d T ∇f(x ∗ ) igual a −||∇f(x)|| 2 , que é menor que zero. Como<br />

o gradiente <strong>de</strong> f é contínuo perto <strong>de</strong> x ∗ , <strong>de</strong>ve existir algum k ∈ R tal que<br />

para todo t ∈ (0, k],<br />

d T ∇f(x ∗ + td) < 0.<br />

No entanto, pelo teorema <strong>de</strong> Taylor, para qualquer s ∈ (0, k] existe algum<br />

r tal que<br />

f(x ∗ + sd) = f(x ∗ ) + sd T ∇f(x ∗ + rd),<br />

e f(x ∗ + sd) < f(x ∗ ) para todo s ∈ (0, k), e portanto há uma direção a<br />

partir <strong>de</strong> x ∗ na qual f <strong>de</strong>cresce – mas como presumimos inicialmente que<br />

x ∗ é mínimo local, concluímos que nossa suposição (<strong>de</strong> que ∇f(x ∗ ) ≠ 0) é<br />

falsa.<br />

<br />

Para problemas <strong>de</strong> maximização o raciocínio é semelhante.<br />

A recíproca do Teorema 13.5 não vale: se estivermos minimizando, po<strong>de</strong>remos<br />

encontrar ∇f(x) = 0 em um máximo local ou ponto <strong>de</strong> sela.<br />

Exemplo 13.6. A figura a seguir mostra a função f(x) = x 3 − 3x 2 + 3x + 1.<br />

f(x)<br />

−1 1 2 3<br />

Versão Preliminar<br />

No ponto x = 1 temos o gradiente igual a zero:<br />

6<br />

4<br />

2<br />

∇f(x) = (f ′ (x)) = (3x 2 − 6x + 3)<br />

= (3 − 6 + 3) (substituindo x = 1)<br />

= 0.<br />

x


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

13.1. OTIMIZAÇÃO SEM RESTRIÇÕES 175<br />

No entanto, não se trata <strong>de</strong> um mínimo local. De fato, como esta função é<br />

estritamente crescente 2 , ela não tem mínimos (locais ou globais)! ◭<br />

Se a função é convexa, todo mínimo local é mínimo global, e o teste do<br />

gradiente, enunciado nas condições <strong>de</strong> primeira or<strong>de</strong>m é também suficiente.<br />

Em outros casos, precisamos <strong>de</strong> testes adicionais.<br />

Teorema 13.7 (Condição necessária <strong>de</strong> otimalida<strong>de</strong> <strong>de</strong> segunda or<strong>de</strong>m).<br />

Seja f : R n → R. Então:<br />

• Se x ∗ é mínimo local então ∇ 2 f(x ∗ ) é semi<strong>de</strong>finida positiva.<br />

• Se x ∗ é máximo local então ∇ 2 f(x ∗ ) é semi<strong>de</strong>finida negativa.<br />

Demonstração. Suponha que ∇ 2 f(x ∗ ) não é semi<strong>de</strong>finida positiva. Então<br />

<strong>de</strong>ve haver algum d ∈ R n tal que<br />

d T ∇ 2 f(x ∗ )d < 0.<br />

Como ∇ 2 f é contínua perto <strong>de</strong> x ∗ , <strong>de</strong>ve haver algum k ∈ R tal que para<br />

todo r ∈ [0, k],<br />

d T ∇ 2 f(x ∗ + rd)d < 0.<br />

Fazendo uma expansão <strong>de</strong> Taylor, para todo s ∈ (0, k], existe algum r tal<br />

que<br />

f(x ∗ + sd) = f(x ∗ ) + sd T ∇f(x ∗ ) + 1 2 s2 d T ∇ 2 f(x ∗ + rd)d<br />

= f(x ∗ ) + 1 2 s2 d T ∇ 2 f(x ∗ + rd)d (∇f(x ∗ = 0), Teorema 13.5)<br />

< f(x ∗ ),<br />

e encontramos uma direção a partir <strong>de</strong> x ∗ na qual f <strong>de</strong>cresce.<br />

Se f é convexa, a matriz hessiana <strong>de</strong> f será positiva <strong>de</strong>finida para todo<br />

o domínio <strong>de</strong> f.<br />

O Teorema 13.8 dá condições suficientes para que um ponto seja ótimo<br />

local. A <strong>de</strong>monstração é pedida no Exercício 87.<br />

Teorema 13.8 (Condições suficientes <strong>de</strong> otimalida<strong>de</strong> <strong>de</strong> segunda or<strong>de</strong>m).<br />

Seja f : R n → R uma função contínua e duas vezes diferenciável; suponha<br />

que ∇ 2 f é contínua em uma vizinhança aberta <strong>de</strong> x ∗ , e que ∇f(x ∗ ) = 0.<br />

Então,<br />

Versão Preliminar<br />

2 Verifica-se facilmente: trata-se <strong>de</strong> f(x) = (x−1) 3 +2, que é x 3 transladada para a direita<br />

em 1 e para cima em 2.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

176 CAPÍTULO 13. OTIMIZAÇÃO NÃO LINEAR<br />

• Se ∇ 2 f(x ∗ ) é <strong>de</strong>finida positiva então x ∗ é mínimo local.<br />

• Se ∇ 2 f(x ∗ ) é <strong>de</strong>finida negativa então x ∗ é máximo local.<br />

Note que exigimos que a Hessiana seja <strong>de</strong>finida positiva (e não apenas<br />

semi<strong>de</strong>finida).<br />

Exemplo 13.9. Seja f(x, y) = 2 sen(x) + cos(y), cujo gráfico mostramos a<br />

seguir.<br />

2<br />

0<br />

−2<br />

−4<br />

−2 0<br />

2<br />

4 −5<br />

Temos<br />

( )<br />

∇f(x, y) = (2 cos x, − sin(x)) T , ∇ 2 −2 sen(x) 0<br />

f(x, y) =<br />

.<br />

0 − cos(x)<br />

Queremos <strong>de</strong>terminar se um dos pontos a seguir é mínimo local:<br />

( ) ( )<br />

−<br />

π<br />

2 −<br />

π<br />

, 2 .<br />

0 π<br />

Tomando o primeiro ponto, temos<br />

Versão Preliminar<br />

No entanto,<br />

∇ 2 f(x, y) =<br />

∇f(− π 2 , 0) = (2 cos −π 2 , − sin(0))T<br />

= (2(0) − 0) T = 0.<br />

( ) ( )<br />

−2 sen(x) 0 2 0<br />

= ,<br />

0 − cos(x) 0 −1<br />

0<br />

5


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

13.2. OTIMIZAÇÃO COM RESTRIÇÕES 177<br />

portanto não po<strong>de</strong>mos concluir que se trata <strong>de</strong> um ponto ótimo (<strong>de</strong> fato,<br />

é um ponto <strong>de</strong> sela!)<br />

Agora, para o segundo ponto,<br />

E a Hessiana é<br />

∇f(− π 2 , 0) = (2 cos −π 2 , − sin(π))T<br />

= (2(0) − 0) T = 0.<br />

( ) ( )<br />

∇ 2 −2 sen(x) 0 2 0<br />

f(x, y) =<br />

= ,<br />

0 − cos(x) 0 1<br />

e como a Hessiana é <strong>de</strong>finida positiva (seus autovalores são estritamente<br />

maiores que zero), temos um mínimo local.<br />

◭<br />

13.1.2 Métodos<br />

Há uma gran<strong>de</strong> quantida<strong>de</strong> <strong>de</strong> métodos para otimização não <strong>linear</strong> sem<br />

restrições. Apresentamos brevemente aqui algumas categorias <strong>de</strong> métodos.<br />

Busca <strong>linear</strong><br />

Ajuste <strong>de</strong> curvas<br />

Busca pelo gradiente (<strong>de</strong>scida mais íngreme)<br />

13.2 Otimização com restrições<br />

Exemplo 13.10. Consi<strong>de</strong>re o seguinte problema.<br />

max 1 T x<br />

s.a. : − x 2 1 + 4x 1 − 4 ≤ x 2<br />

Versão Preliminar<br />

− 4x 2 1 + 16x 1 − 4 ≥ x 2<br />

x ∈ R 2<br />

A próxima figura mostra a região viável <strong>de</strong>ste problema, o gradiente do<br />

objetivo e o hiperplano perpendicular a ele.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

178 CAPÍTULO 13. OTIMIZAÇÃO NÃO LINEAR<br />

x2<br />

12<br />

8<br />

4<br />

0<br />

−4<br />

0 1 2 3 4<br />

A solução ótima para este problema é x ∗ = (2.125, 11.9375) T , e o valor da<br />

função objetivo neste ponto é 14.0625.<br />

◭<br />

13.2.1 O Lagrangeano<br />

Versão Preliminar<br />

x 1<br />

Do Cálculo, relembramos o método dos multiplicadores <strong>de</strong> Lagrange para<br />

otimização.<br />

Dada uma função diferenciável F(x 1 , x 2 , . . . , x n ) e restrições g i (x 1 , x 2 , . . . , x n ) =<br />

0, se x ∗ é um ponto extremo (máximo ou mínimo local) <strong>de</strong> f, então existem<br />

λ 1 , λ 2 , . . . , λ n não negativos tais que<br />

∇f(x ∗ ) = ∑ i<br />

λ i ∇ i g i (x ∗ ),<br />

ou seja, o gradiente <strong>de</strong> f é combinação <strong>linear</strong> dos gradientes das g i com<br />

coeficientes λ i .<br />

Primeiro observamos que po<strong>de</strong>mos escrever<br />

∇f(x ∗ ) − ∑ i<br />

λ i ∇ i g i (x ∗ ) = 0.<br />

Notamos também que se o ponto x ∗ satisfaz <strong>de</strong> maneira estrita uma <strong>de</strong>sigualda<strong>de</strong><br />

g i (x) ≥ 0 – ou seja,<br />

g i (x ∗ ) > 0<br />

– então po<strong>de</strong>mos ignorá-la, usando λ i = 0. Desta forma po<strong>de</strong>mos presumir<br />

que, quando o multiplicador λ i > 0, a restrição é satisfeita como<br />

igualda<strong>de</strong>, g i (x ∗ ) = 0.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

13.2. OTIMIZAÇÃO COM RESTRIÇÕES 179<br />

Disso obtemos a <strong>de</strong>finição do Lagrangeano:<br />

Definição 13.11 (Lagrangeano). Seja λ o vetor (λ 1 , . . . , λ m ) T . O Lagrangeano<br />

para o problema é a função<br />

13.2.2 Dualida<strong>de</strong><br />

L(x, λ) = f(x) − ∑ λ i g i (x).<br />

Elaboramos agora o conceito <strong>de</strong> dualida<strong>de</strong> para problemas <strong>de</strong> otimização<br />

não <strong>linear</strong>.<br />

Definição 13.12 (Dual <strong>de</strong> problema <strong>de</strong> otimização não <strong>linear</strong>). Para o problema<br />

<strong>de</strong> otimização não <strong>linear</strong><br />

a função dual é<br />

e o problema dual é<br />

sem restrições.<br />

min f(x)<br />

s.a. : g i (x) ≥ 0<br />

i = 1, . . . , k<br />

L(λ) = inf L(x, λ)<br />

x<br />

max L(λ),<br />

13.2.3 Condições <strong>de</strong> otimalida<strong>de</strong><br />

Nesta seção tratamos das condições <strong>de</strong> otimalida<strong>de</strong> <strong>de</strong> Karush-Kuhn-Tucker.<br />

Estas são, basicamente, uma aplicação do método dos multiplicadores <strong>de</strong><br />

Lagrange para a <strong>de</strong>terminação <strong>de</strong> ótimos locais.<br />

Enunciamos as condições necessárias <strong>de</strong> primeira or<strong>de</strong>m para otimalida<strong>de</strong>,<br />

sem <strong>de</strong>monstração.<br />

Teorema 13.13 (Condições necessárias <strong>de</strong> primeira or<strong>de</strong>m (Karush-Kuhn-<br />

-Tucker) para otimalida<strong>de</strong>). Se a função objetivo e todas as restrições são<br />

diferenciáveis em um ótimo local x ∗ , então existe λ = (λ 1 , . . . , λ m ) tal que<br />

i) ponto estacionário: ∇ x L(x ∗ , λ) = 0<br />

ii) viabilida<strong>de</strong> dual: λ i ≥ 0<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

180 CAPÍTULO 13. OTIMIZAÇÃO NÃO LINEAR<br />

iii) folgas complementares: λ i g i (x ∗ ) = 0<br />

iv) viabilida<strong>de</strong> primal: g i (x ∗ ) ≤ 0.<br />

Além das condições necessárias <strong>de</strong> Karush-Kuhn-Tucker, há também<br />

uma condição suficiente, <strong>de</strong> segunda or<strong>de</strong>m, para otimalida<strong>de</strong>.<br />

Teorema 13.14 (Condições suficientes <strong>de</strong> segunda or<strong>de</strong>m para otimalida<strong>de</strong>).<br />

Se as condições <strong>de</strong> Karush-Kuhn-Tucker são satisfeitas e ∇ 2 xxL(x ∗ , λ) é positiva<br />

<strong>de</strong>finida, então x ∗ é ótimo local.<br />

Não conhecemos método para resolver para um problema <strong>de</strong> otimização<br />

não <strong>linear</strong> analiticamente usando apenas as condições <strong>de</strong> otimalida<strong>de</strong>.<br />

Estas condições são usadas por algoritmos para direcionar a busca<br />

pelo ótimo. No exemplo a seguir apenas verificamos que as condições são<br />

verda<strong>de</strong>iras para a solução do exemplo 13.10.<br />

Exemplo 13.15. Suponha que tenhamos o ponto (2.125, 11.9375) como candidato<br />

a solução do problema <strong>de</strong>scrito no exemplo 13.10. Verificaremos<br />

primeiro se este ponto po<strong>de</strong> ser uma solução ótima usando as condições<br />

necessárias <strong>de</strong> primeira or<strong>de</strong>m. Se forem, verificaremos a condição <strong>de</strong><br />

segunda or<strong>de</strong>m.<br />

O Lagrangeano é<br />

L(x, λ) =f(x) − ∑ λ i g i (x)<br />

(<br />

) (<br />

)<br />

=(x 1 + x 2 ) − λ 1 (−x 2 1 + 4x 1 − x 2 − 4) − λ 2 (4x 2 1 − 16x 1 + x 2 + 4) ,<br />

Precisamos então calcular ∇ x L(x, λ):<br />

)<br />

∇ x L(x, λ) =∇ x<br />

(x 1 + x 2 − λ 1 (−x 2 1 + 4x 1 − x 2 − 4) − λ 2 (4x 2 1 − 16x 1 + x 2 + 4)<br />

(<br />

)<br />

= − λ 2 (8x 1 − 16) − λ 1 (4 − 2x 1 ) + 1, λ 1 − λ 2 + 1<br />

As condições KKT são, portanto:<br />

i) −λ 2 (8x 1 − 16) − λ 1 (4 − 2x 1 ) + 1 = 0<br />

λ 1 − λ 2 + 1 = 0<br />

Versão Preliminar<br />

ii) λ 1 , λ 2 ≥ 0<br />

iii) λ 1 (−x 2 1 + 4x 1 − x 2 − 4) = 0<br />

λ 2 (4x 2 1 − 16x 1 + x 2 + 4) = 0


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

13.2. OTIMIZAÇÃO COM RESTRIÇÕES 181<br />

iv) −x 2 1 + 4x 1 − x 2 − 4 ≤ 0<br />

4x 2 1 − 16x 1 + x 2 + 4 ≤ 0<br />

Po<strong>de</strong>-se inferir <strong>de</strong>stas condições que λ 1 = 0 e λ 2 = 1.<br />

i) Temos<br />

−λ 2 (8x 1 − 16) − λ 1 (4 − 2x 1 ) + 1 =0<br />

λ 1 − λ 2 + 1 =0<br />

A segunda condição é trivialmente satisfeita. Verificamos a primeira:<br />

ii) Trivialmente, os dois λ são ≥ 0.<br />

−(8x 1 − 16) + 1 = −(17 − 16) + 1 = 0.<br />

iii) Como λ 1 = 0 a primeira equação é satisfeita. Para a segunda, com<br />

λ 2 = 1, temos<br />

4x 2 1 − 16x 1 + x 2 + 4 = 0<br />

iv) Para a primeira inequação,<br />

−x 2 1 + 4x 1 − x 2 − 4 = −11.953125 ≤ 0.<br />

A segunda já verificamos no item anterior.<br />

Já verificamos as condições necessárias. Agora usamos a condição <strong>de</strong> segunda<br />

or<strong>de</strong>m, que po<strong>de</strong> nos garantir que <strong>de</strong> fato a solução é ótima. O<br />

problema é <strong>de</strong> maximização, por isso verificamos agora que a hessiana<br />

∇ 2 xxL(x, λ) é negativa semi<strong>de</strong>finida. A Hessiana é<br />

∇ x L(x, λ) = (−λ 2 (8x 1 − 16) − λ 1 (4 − 2x 1 ) + 1, λ 1 − λ 2 + 1)<br />

( )<br />

∇ 2 2λ1 − 8λ<br />

xxL(x, λ) =<br />

2 0<br />

.<br />

0 0<br />

Para qualquer vetor v = (v 1 , v 2 ) T ,<br />

( ) ( )<br />

v ∇ 2 xxL(x, λ) v T 2λ1 − 8λ<br />

= v<br />

2 0<br />

0 0<br />

Substituindo os valores <strong>de</strong> λ, temos<br />

( )<br />

v ∇ 2 xxL(x, λ) v T = −8v 2 1 ≤ 0,<br />

Versão Preliminar<br />

o que nos garante que a solução é realmente um ótimo local.<br />

Observe que a Hessiana não <strong>de</strong>pen<strong>de</strong> <strong>de</strong> x 1 ou x 2 . ela será semi<strong>de</strong>finida<br />

negativa in<strong>de</strong>pen<strong>de</strong>nte do ponto on<strong>de</strong> estivermos.<br />

◭<br />

v T


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

182 CAPÍTULO 13. OTIMIZAÇÃO NÃO LINEAR<br />

13.2.4 Métodos<br />

13.3 Otimização <strong>linear</strong> e dualida<strong>de</strong><br />

Claramente, um problema <strong>de</strong> programação <strong>linear</strong> é um caso particular <strong>de</strong><br />

otimização não <strong>linear</strong>.<br />

Notas<br />

A <strong>de</strong>monstração do Teorema 13.4 (<strong>de</strong> Taylor) po<strong>de</strong> ser encontrada em livros<br />

<strong>de</strong> Cálculo <strong>de</strong> Várias Variáveis [CJ99; Apo69].<br />

Os livros <strong>de</strong> Luenberger [Lue10], Boyd e Van<strong>de</strong>nberghe [BV04] e <strong>de</strong><br />

Nocedal [NW06] são boas introduções ao assunto e contém <strong>de</strong>monstrações<br />

<strong>de</strong>talhadas das condições <strong>de</strong> Karush-Kuhn-Tucker. Os livros <strong>de</strong> Bazaraa<br />

[BSS06] e Griva [GNS09] são bons como segunda leitura.<br />

Exercícios<br />

Ex. 86 — Reescreva o primeiro exemplo como problema <strong>de</strong> minimização<br />

e mostre as condições <strong>de</strong> otimalida<strong>de</strong> para o problema modificado.<br />

Ex. 87 — Demonstre o Teorema 13.8.<br />

Ex. 88 — Mostre como foram obtidos λ 1 e λ 2 no exemplo 13.15.<br />

Ex. 89 — Consi<strong>de</strong>re novamente o exemplo 13.10. Suponha que tenhamos<br />

mudado o problema, mantendo a mesma função objetivo e as mesmas<br />

restrições, mas agora queremos minimizar. Faça uma análise semelhante<br />

àquela feita no exemplo 13.15, mostrando a solução ótima, os multiplicadores<br />

<strong>de</strong> Lagrange e o valor da Hessiana.<br />

Ex. 90 — Consi<strong>de</strong>re o seguinte problema:<br />

min x 2 + y 2<br />

i) Mostre o dual do problema.<br />

s.a: x 2 + y 2 ≥ (x + y + 1) cos(x) + xy<br />

Versão Preliminar<br />

ii) Descreva o Lagrangeano e as condições <strong>de</strong> Karush-Kuhn-Tucker.<br />

iii) Determine se (0, 0) T é solução ótima.<br />

Ex. 91 — Mostre a forma geral do dual <strong>de</strong> um programa quadrático.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Parte IV<br />

Apêndices<br />

Versão Preliminar<br />

183


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Apêndice A<br />

Teoria da Utilida<strong>de</strong><br />

No Capítulo 8 <strong>de</strong>screvemos uma matriz <strong>de</strong> pagamentos, que <strong>de</strong>termina<br />

quanto cada jogador ganha ou per<strong>de</strong> em um jogo. As entradas da matriz<br />

<strong>de</strong> pagamentos não precisam necessariamente representar valor monetário<br />

– ou qualquer quantida<strong>de</strong> mapeada diretamente do mundo real. Estes<br />

valores po<strong>de</strong>m também indicar preferências dos jogadores. Dizemos que<br />

cada valor na matriz representa a utilida<strong>de</strong> do retorno para o jogador. Por<br />

exemplo, no jogo <strong>de</strong> par ou ímpar, a utilida<strong>de</strong> dos dois retornos po<strong>de</strong> ser<br />

mo<strong>de</strong>lada como +1 e −1 – ou +k r −k, para qualquer k ≠ 0, importando<br />

apenas que a utilida<strong>de</strong> <strong>de</strong> uma vitória é igual à utilida<strong>de</strong> <strong>de</strong> uma <strong>de</strong>rrota,<br />

multiplicada por −1.<br />

Em Microeconomia, as preferências dos indivíduos são mo<strong>de</strong>ladas como<br />

utilida<strong>de</strong>: dado um conjunto X <strong>de</strong> opções, as preferências <strong>de</strong> um indivíduo<br />

são <strong>de</strong>scritas como uma função u : X → R, sendo que quando o indivíduo<br />

prefere x a y, então u(x) > u(y).<br />

Sejam A um conjunto <strong>de</strong> opções; X, Y ∈ A duas opções com utilida<strong>de</strong>s<br />

x e y respectivamente. Supomos que o indivíduo po<strong>de</strong> obter X ou Y com<br />

diferentes probabilida<strong>de</strong>s: Pr(X) = p e Pr(Y) = 1 − p. Esta distribuição <strong>de</strong><br />

probabilida<strong>de</strong>s sobre as opções é chamada <strong>de</strong> loteria. Po<strong>de</strong>mos calcular a<br />

utilida<strong>de</strong> esperada para esta loteria, sabendo as utilida<strong>de</strong>s das duas opções:<br />

L = pX + (1 − p)Y<br />

Versão Preliminar<br />

Teorema A.1 (da utilida<strong>de</strong> esperada). Seja A um conjunto <strong>de</strong> opções para o<br />

qual a relação ≼ <strong>de</strong> preferências <strong>de</strong> um indivíduo sejam conhecidas. Sejam<br />

as loterias a seguir todas <strong>de</strong>finidas sobre elementos <strong>de</strong> A. Se<br />

i) Completu<strong>de</strong>: dadas duas loterias L e M, então L ≼ M, M ≼ L ou<br />

ambos;<br />

185


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

186 APÊNDICE A. TEORIA DA UTILIDADE<br />

ii) Transitivida<strong>de</strong>: dadas três loterias L, M, N, se L ≼ M eM ≼ N então<br />

L ≼ N;<br />

iii) Convexida<strong>de</strong>: dadas loterias L ≼ M ≼ N, então M po<strong>de</strong> ser escrita<br />

como combinação convexa <strong>de</strong> L e M;<br />

iv) In<strong>de</strong>pendência: dadas três loterias L, M, N, então L ≼ M se e somente<br />

se pL + (1 − p)N ≼ pM + (1 − p)N,<br />

então existe uma função utilida<strong>de</strong> u : A → R que mo<strong>de</strong>la a relação <strong>de</strong><br />

preferências e que po<strong>de</strong> ser multiplicada e somada por números reais (e<br />

portanto po<strong>de</strong>-se calcular utilida<strong>de</strong> esperada para qualquer loteria envolvendo<br />

elementos <strong>de</strong> A).<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Apêndice B<br />

Respostas e Dicas<br />

Este Apêndice traz respostas e dicas para alguns dos exercícios propostos<br />

no texto.<br />

Resp. (Ex. 1) — (Dica) Não é um problema <strong>de</strong> fluxo em re<strong>de</strong>s, embora a restrição<br />

<strong>de</strong> conservação <strong>de</strong> fluxo possa ser usada.<br />

Tente representar o mapa como grafo. Se o veículo passará pelo caminho<br />

<strong>de</strong> v i para v j , <strong>de</strong>nota x ij = 1. Depois, represente os custos como c ij , recompensas<br />

como r ij , e formule o objetivo e as restrições. Uma das restrições<br />

<strong>de</strong>ve <strong>de</strong>terminar que, para todo i, ∑ j x ji ≤ ∑ j x ij. Outra, x ij ≤ 1 para todos<br />

i e j.<br />

Resp. (Ex. 3) — Primeiro problema, x = (0, 6), com valor do objetivo −12.<br />

Segundo problema, x = (5, 5), com valor do objetivo igual a 20. Terceiro<br />

problema, x = (15/2, 5/2), com objetivo igual a zero.<br />

Resp. (Ex. 7) — (i) Basta mudar as restrições <strong>de</strong> conservação <strong>de</strong> fluxo,<br />

∑<br />

x ji − ∑ x ij = 0<br />

j j<br />

Versão Preliminar<br />

para que levem em conta o fluxo F consumido no nó:<br />

∑<br />

x ji − ∑ x ij = F<br />

(∀i)<br />

j j<br />

(Se o nó gera mais fluxo, usa-se valor negativo para F)<br />

(∀i)<br />

187


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

188 APÊNDICE B. RESPOSTAS E DICAS<br />

Resp. (Ex. 9) — (Dica) Prove que cada uma das <strong>de</strong>finições tem a outra como<br />

consequência. (⇒) Presuma que a <strong>de</strong>finição a ser usada é a primeira (a que<br />

fala <strong>de</strong> combinações convexas). (i) uma reta é um conjunto convexo (ii) S é<br />

convexo (iii) interseção <strong>de</strong> convexos é convexa (iv) um conjunto <strong>de</strong> pontos<br />

co<strong>linear</strong>es mas não no mesmo segmento não po<strong>de</strong>ria ser convexo - então<br />

a interseção é um segmento.<br />

(⇐) Presuma que a <strong>de</strong>finição é a segunda (a que fala <strong>de</strong> interseção ao invés<br />

<strong>de</strong> combinações convexas) (i) para quaisquer pontos a e b em S, consi<strong>de</strong>re<br />

a reta que passa por a e b. (ii) a interseção com S é um segmento contendo<br />

a e b. (iii) ssim, as combinações convexas <strong>de</strong> a e b (que ficam no caminho<br />

entre eles) pertencem a S.<br />

Resp. (Ex. 18) — (i) Não:<br />

e<br />

( e<br />

∇ 2 a<br />

f(a, b) =<br />

Versão Preliminar<br />

)<br />

1<br />

b 2<br />

x T ∇ 2 f(a, b)x = e a x 2 1 − x2 2<br />

b 2 .<br />

Com x 1 = 0, temos − x2 2<br />

negativo para todos x<br />

b 2 2 e b.<br />

Ou ainda, geometricamente, se fixarmos a temos a função log(b), que não<br />

é convexa.<br />

(ii) g(a, b) = e a − log(b) é convexa, porque é soma <strong>de</strong> duas funções convexas.<br />

Ou ainda, porque<br />

x T ∇ 2 g(a, b)x = e a x 2 1 + x2 2<br />

é sempre positivo.<br />

(iii) Sim: a Hessiana é ( e<br />

a+b<br />

e a+b )<br />

e a+b e a+b ,<br />

com autovalores 0 e 2e a+b .<br />

Resp. (Ex. 20) — Em (iv), os autovalores são<br />

z ± √ z 2 + 4y 2<br />

2y 2 .<br />

b 2


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

189<br />

O autovalor relevante é<br />

z − √ z 2 + 4y 2<br />

2y 2 ,<br />

portanto a função seria convexa on<strong>de</strong><br />

z ≥ √ z 2 + 4y 2<br />

z 2 ≥ z 2 + 4y 2 ,<br />

ou seja, on<strong>de</strong> y = 0. No entanto, a função original toma log(y), e não existe,<br />

portanto, subdomínio on<strong>de</strong> a função é convexa.<br />

Em (v), a Hessiana é ⎛<br />

e x + x −2 0<br />

⎞<br />

0<br />

⎝ 0 y −2 0⎠ ,<br />

0 0 2<br />

com todos autovalores positivos e portanto convexa em todo domínio.<br />

Resp. (Ex. 24) — Sim. Verifique se o gradiente do objetivo é ortogonal aos<br />

hiperplanos <strong>de</strong>finidos pelas restrições.<br />

Resp. (Ex. 26) — (i) x = (5, 0, 0) T , z 0 = 10. (ii) x = (2, 2) T . (iii) inviável. (iv)<br />

ilimitado.<br />

Resp. (Ex. 34) — Escreva o dual, e observe que Mv = w significa que w é<br />

combinação <strong>linear</strong> das colunas <strong>de</strong> M, com coeficientes em v.<br />

Resp. (Ex. 38) — O Exemplo 4.2 mostra como obter o dual com uma variável<br />

a mais. Tente fazer uma troca <strong>de</strong> variáveis no dual obtido daquela<br />

forma.<br />

Resp. (Ex. 39) — Não será única.<br />

Resp. (Ex. 62) — As opções <strong>de</strong> cada jogador são a quantida<strong>de</strong> <strong>de</strong> palitos<br />

(0 ≤ p ≤ 3) a escon<strong>de</strong>r e seu palpite (0 ≤ a ≤ 6). Uma formulação ingênua<br />

usaria 4 × 7 = 28 linhas e colunas para ambos os jogadores, mas se<br />

notarmos que, sabendo quantos palitos tem em sua própria mão, sobram<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

190 APÊNDICE B. RESPOSTAS E DICAS<br />

quatro possibilida<strong>de</strong>s para o palpite (n + 0, n + 1, ..., n + 3), chegamos à<br />

seguinte matriz 16 × 16:<br />

0, 0 0, 1 0, 2 0, 3 1, 1 1, 2 1, 3 1, 4 2, 2 2, 3 2, 4 2, 5 3, 3 3, 4 3, 5 3, 6<br />

0, 0 + + + − − −<br />

0, 1 − + + + − −<br />

0, 2 − − + + + −<br />

0, 3 − − − + + +<br />

1, 1 + + + − − −<br />

1, 2 − + + + − −<br />

1, 3 − − + + + −<br />

1, 4 − − − + + +<br />

2, 2 + + + − − −<br />

2, 3 − + + + − −<br />

2, 4 − − + + + −<br />

2, 5 − − − + + +<br />

3, 3 + + + − − −<br />

3, 4 − + + + − −<br />

3, 5 − − + + + −<br />

3, 6 − − − + + +<br />

Resp. (Ex. 66) — Sim: divida os w i e C pelo seu mdc (o algoritmo tem complexida<strong>de</strong><br />

O(nC), portanto se diminuirmos C diminuímos o tempo <strong>de</strong> execução).<br />

Resp. (Ex. 71) — Use<br />

{<br />

1 se t < t ′<br />

F(s, a, t) =<br />

0 se t ≤ t ′<br />

Resp. (Ex. 78) — O poliedro <strong>de</strong>finido pelo dual também é integral.<br />

Resp. (Ex. 82) — (i) x 1 = 14/9, x 2 = 2/3.<br />

Resp. (Ex. 86) —<br />

min − x 1 + x 2<br />

s.a. : x 2 1 − 4x 1 + 4 ≥ x 2<br />

Versão Preliminar<br />

4x 2 1 − 16x 1 + 4 ≤ x 2<br />

x ∈ R 2


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

191<br />

Resp. (Ex. 89) — Po<strong>de</strong>-se inferir, do gráfico da região viável, que o mínimo<br />

ocorre no ponto on<strong>de</strong> as restrições se encontram, no lado esquerdo. Com<br />

isso obtém-se x ∗ = (0, −4) T , com valor −4. Com algumas contas simples<br />

chega-se em λ = − 1 12 (5, 17). A Hessiana será tal que vT Hv sempre igual a<br />

v 2 1<br />

2<br />

≥ 0, portanto semi<strong>de</strong>finida positiva.<br />

Resp. (Ex. 90) — Seja v = (x, y) T . Então L(v, λ) = x 2 +y 2 −λ(x 2 +y 2 −(x+y+<br />

1) cos(x)−xy). (i) max inf x 2 +y 2 −λ(x 2 +y 2 −(x+y+1) cos(x)−xy), λ ≥ 0<br />

(ii) O gradiente do lagrangeano é<br />

(<br />

)<br />

∇ v (v, λ) = 2x − λ [y + cos(x) − sin(x)(y + x + 1)] , 2y − λ [cos(x) + x]<br />

Assim, as condições KKT são:<br />

(iii) Não, porque<br />

2x − λ [y + cos(x) − sin(x)(y + x + 1)]] =0<br />

2y − λ [cos(x) + x] =0<br />

λ(x 2 + y 2 − (x + y + 1) cos(x) − xy) =0<br />

x 2 + y 2 − (x + y + 1) cos(x) − xy ≥0<br />

λ ≥0<br />

x 2 + y 2 − (x + y + 1) cos(x) − xy = −1 cos(0) < 0.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

192 APÊNDICE B. RESPOSTAS E DICAS<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Ficha Técnica<br />

Este texto foi produzido inteiramente em LATEX em um sistema Linux. Os<br />

diagramas foram criados sem editor gráfico, usando diretamente o pacote<br />

TikZ. O ambiente Emacs foi usado para edição do texto LATEX.<br />

Versão Preliminar<br />

193


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

194 FICHA TÉCNICA<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Bibliografia<br />

[ABD09]<br />

[Apo69]<br />

[Bar+98]<br />

[Bar02]<br />

[Bea55]<br />

[Bel03]<br />

[Ber07]<br />

[BJ77]<br />

[BN03]<br />

[BSS06]<br />

David Avis, David Bremner e Antoine Deza. Polyhedral Computation.<br />

AMS, 2009. ISBN: 978-0-8218-4633-9.<br />

Tom M. Apostol. Calculus, Vol. 2: Multi-Variable Calculus and<br />

<strong>Linear</strong> Algebra with Applications to Differential Equations and<br />

Probability. Wiley, 1969. ISBN: 978-0471000075.<br />

Cynthia Barnhart et al. “Branch-and-Price: column generation<br />

for solving huge integer programs”. Em: Operations Research<br />

46.3 (1998), pp. 316–329.<br />

Alexan<strong>de</strong>r Barvinok. A Course in Convexity. AMS, 2002. ISBN:<br />

978-0821829684.<br />

E. M. L Beale. “On Minimizing a Convex Function Subject to <strong>Linear</strong><br />

Inequalities”. Em: Journal of the Royal Statistics Society. B<br />

17 (1955), pp. 173–184.<br />

Richard Bellman. Dynamic Programming. Dover, 2003. ISBN:<br />

978-0486428093.<br />

Dimitri P. Bertsekas. Dynamic Programming and Optimal Control.<br />

2007. ISBN: 978-1886529083.<br />

Mokhtar S. Bazaraa e John J. Jarvis. <strong>Linear</strong> Programming and<br />

Network Flows. Wiley, 1977. ISBN: 0-471-06015-1.<br />

Dimitri Bertsekas e Angelia Nedic. Convex Analysis and Optimization.<br />

Athena Scientific, 2003. ISBN: 978-1886529458.<br />

Mokhtar S. Bazaraa, Hanif D. Sherali e C. M. Shetty. Non<strong>linear</strong><br />

Programming: Theory and Algorithms. Wiley-Insterscience, 2006.<br />

ISBN: 978-0471486008.<br />

Versão Preliminar<br />

[BT96]<br />

Dimitri P. Bertsekas e John Tsitsiklis. Neuro-Dynamic Programming.<br />

Athena Scientific, 1996. ISBN: 978-1886529106.<br />

195


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

196 BIBLIOGRAFIA<br />

[BV04]<br />

[Can64]<br />

[CJ99]<br />

[Cor+09]<br />

[Dan61]<br />

[DPV06]<br />

Stephen Boyd e Lieven Van<strong>de</strong>nberghe. Convex Optimization.<br />

Cambridge, 2004. ISBN: 978-0521833783.<br />

J. S. De Cani. “A dynamic programming algorithm for embed<strong>de</strong>d<br />

Markov chains when the planning horizon is at infinity”.<br />

Em: Management Science 10 (1964), p. 716.<br />

Richard Courant e Fritz John. Introduction to Calculus and Analysis,<br />

Vol. II/1. Springer, 1999. ISBN: 978-3540665694.<br />

Thomas Cormen et al. Introduction to Algorithms. 3ª ed. MIT<br />

Press, 2009.<br />

George B. Dantzig. Quadratic Programming, A Variant of the Wolfe-<br />

Markovitz Algorithms. Rel. téc. OCR 61-2. Operations Research<br />

Center, University of California, Berkeley, 1961.<br />

Sanjoy Dasgupta, Christos Papadimitriou e Umesh Vazirani. Algorithms.<br />

McGraw-Hill, 2006. ISBN: 0073523402.<br />

[Dym07] Harry Dym. <strong>Linear</strong> Algebra in Action. AMS, 2007. ISBN: 978-0-<br />

8218-3813-6.<br />

[Fil+07]<br />

Ricardo Shirota Filho et al. “Multi<strong>linear</strong> and Integer Programming<br />

for Markov Decision Processes with Imprecise Probabilities”.<br />

Em: Proceedings of the 5th International Symposium on<br />

Imprecise Probability: Theories and Applications. 2007.<br />

[FT91] Drew Fu<strong>de</strong>nberg e Jean Tirole. Game Theory. MIT Press, 1991.<br />

ISBN: 978-0262061414.<br />

[GL00]<br />

[GNS09]<br />

[Gom58]<br />

[How60]<br />

Marco Cesar Goldbarg e Henrique Pacca L. Luna. Otimização<br />

Combinatória e Programação <strong>Linear</strong>: mo<strong>de</strong>los e algoritmos. Campus,<br />

2000. ISBN: 85-352-0541-1.<br />

Igor Griva, Stephen G. Nash e Ariela Sofer. <strong>Linear</strong> and Non<strong>linear</strong><br />

optimization. SIAM, 2009. ISBN: 978-0898716610.<br />

R. E. Gomory. “Outline of an Algorithm for Integer Solution to<br />

<strong>Linear</strong> Programs”. Em: Bulletin of the American Mathematical<br />

Society 64.5 (1958).<br />

Ronald A. Howard. Dynamic Programming and Markov Processes.<br />

MIT Press, 1960.<br />

Versão Preliminar<br />

[How71]<br />

R. A. Howard. Semi-Markovian <strong>de</strong>cision processes. Proc. Intern.<br />

Stat. Inst. (Ottawa, Canada, 1963). 1971.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

BIBLIOGRAFIA 197<br />

[IE94]<br />

[IN07]<br />

[Jew63]<br />

[Kar84]<br />

[Kuh55]<br />

[KV12]<br />

C. C. White III e H. K. El-Deib. “Markov <strong>de</strong>cision processes with<br />

imprecise transition probabilities”. Em: Operations Research 42.4<br />

(1994), pp. 739–749.<br />

Hi<strong>de</strong>aki Itoh e Kiyohiko Nakamura. “Partially observable Markov<br />

<strong>de</strong>cision processes with imprecise parameters”. Em: Artificial<br />

Intelligence 171.8-9 (2007), pp. 453–490.<br />

W. S. Jewell. “Markov-renewal programming I: Formulation, finite<br />

return mo<strong>de</strong>ls; Markov-renewal programming II, infinite<br />

return mo<strong>de</strong>ls, example”. Em: Operations Research 11 (1963), pp. 938–<br />

971.<br />

Narendra Karmarkar. “A New Polynomial Time Algorithm for<br />

<strong>Linear</strong> Programming”. Em: Combinatorica 4.4 (1984), pp. 373–<br />

395.<br />

H. W. Kuhn. “The Hungarian Method for the Assignment Problem”.<br />

Em: Naval Research in Logistic Quarterly 2 (1955), pp. 83–<br />

97.<br />

Bernhard Korte e Jens Vygen. Combinatorial Optimization: Theory<br />

and Algorithms. Springer, 2012. ISBN: 978-3642244872.<br />

[Lay07] Steven R. Lay. Convex Sets and Their Applications. Dover, 2007.<br />

ISBN: 978-0486458038.<br />

[LD60]<br />

[Lue10]<br />

[MG06]<br />

[NM07]<br />

[NR10]<br />

A. H. Land e A. G. Doig. “An automatic method of solving discrete<br />

programming problems”. Em: Econometrica 28.3 (1960),<br />

pp. 497–520.<br />

David G. Luenberger. <strong>Linear</strong> and Non<strong>linear</strong> Programming. Springer,<br />

2010. ISBN: 978-1441945044.<br />

Jiri Matousek e Bernd Gärtner. Un<strong>de</strong>rstanding and Using <strong>Linear</strong><br />

Programming. Springer, 2006. ISBN: 978-3540306979.<br />

John von Neumann e Oskar Morgenstern. Theory of Games and<br />

Economic Behavior. Princeton University Press, 2007. ISBN: 978-<br />

0691130613.<br />

Peter Norvig e Stuart Russel. Artificial Intelligence: a mo<strong>de</strong>rn<br />

approach. Pearson, 2010. ISBN: 0-13-604259-7.<br />

Versão Preliminar<br />

[NW06]<br />

[OR94]<br />

Jorge Nocedal e Stephen Wright. Numerical Optimization. Springer,<br />

2006. ISBN: 978-0387303031.<br />

Martin J. Osborne e Ariel Rubinstein. A Course in Game Theory.<br />

MIT Press, 1994. ISBN: 978-0262650403.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

198 BIBLIOGRAFIA<br />

[Pow11]<br />

[PS91]<br />

[PS98]<br />

[PT87]<br />

[Put05]<br />

[Roc96]<br />

[Rus06]<br />

[SB98]<br />

Warren B. Powell. Approximate Dynamic Programming: Solving<br />

the Curses of Dimensionality. Wiley, 2011. ISBN: 978-0470604458.<br />

Panos M. Pardalos e Vavasis Stephen A. “Quadratic programming<br />

with one negative eigenvalue is NP-hard”. Em: Journal of<br />

Global Optimization 1.1 (1991), pp. 15–22.<br />

Christos Papadimitriou e Kenneth Steiglitz. Combinatorial Optimization.<br />

Dover, 1998. ISBN: 0-486-40258-4.<br />

Christos H. Papadimitriou e John N. Tsitsiklis. “The complexity<br />

of Markov <strong>de</strong>cision processes”. Em: Mathematics of Operations<br />

Research 12.3 (1987), pp. 441–450.<br />

Martin L. Puterman. Markov Decision Processes: Discrete Stochastic<br />

Dynamic Programming. Wiley-Interscience, 2005. ISBN:<br />

978-0471727828.<br />

Ralph Tyrell Rockafellar. Convex Analysis. Princeton University<br />

Press, 1996. ISBN: 978-0691015866.<br />

Andrzej Ruszczyski. Non<strong>linear</strong> Optimization. Princeton University<br />

Press, 2006. ISBN: 978-0-691-11915-1.<br />

Richard S. Sutton e Andrew G. Barto. Reinforcement Learning:<br />

An Introduction. MIT Press, 1998. ISBN: 978-0262193986.<br />

[Sch03] Alexan<strong>de</strong>r Schrijver. Combinatorial Optimization. Springer, 2003.<br />

ISBN: 978-3540443896.<br />

[Sch98]<br />

[Sin06]<br />

[SL70]<br />

Alexan<strong>de</strong>r Schrijver. Theory of <strong>Linear</strong> and Integer Programming.<br />

Wiley, 1998. ISBN: 978-0471982326.<br />

S. M. Sinha. Mathematical Programming: theory and methods.<br />

Elsevier, 2006. ISBN: 978-8131203767.<br />

J. K. Satia e R. E. Lave. “Markovian <strong>de</strong>cision processes with uncertain<br />

transition probabilities”. Em: Operations Research 21 (1970),<br />

pp. 728–740.<br />

[Ste94] Robert F. Stengel. Optimal Control and Estimation. Dover, 1994.<br />

ISBN: 978-0486682006.<br />

[Van07]<br />

Robert J. Van<strong>de</strong>rbei. <strong>Linear</strong> Programming: foundations and extensions.<br />

Springer, 2007. ISBN: 978-0387743875.<br />

Versão Preliminar<br />

[WN99]<br />

Laurence A. Wolsey e George L. Nemhauser. Integer and Combinatorial<br />

Optimization. Wiley-Insterscience, 1999. ISBN: 978-<br />

0471359432.


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

BIBLIOGRAFIA 199<br />

[Wol59]<br />

[Wol98]<br />

Philip Wolfe. “The Simplex Method for Quadratic Programming”.<br />

Em: Econometrica 27.3 (1959).<br />

Laurence Wolsey. Integer Programming. Wiley-Insterscience,<br />

1998. ISBN: 978-0471283669.<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

Índice Remissivo<br />

ótimo global, 171<br />

solução, 63<br />

ótimo local, 171<br />

<strong>de</strong>generado<br />

problema, 63<br />

aberto, 17<br />

dual, 73<br />

affine scaling, 103<br />

dual <strong>de</strong> problema não <strong>linear</strong>, 179<br />

afim-in<strong>de</strong>pen<strong>de</strong>nte, 24<br />

dualida<strong>de</strong>, 73<br />

análise <strong>de</strong> sensibilida<strong>de</strong>, 89<br />

em otimização não <strong>linear</strong>, 179<br />

aresta, 11<br />

atribuição<br />

elipsoi<strong>de</strong><br />

problema <strong>de</strong>, 121<br />

método do, 97<br />

envoltória afim, 18<br />

branch-and-bound, 152<br />

envoltória convexa, 19<br />

branch-and-cut, 154<br />

epigrafo, 21<br />

branch-and-price, 156<br />

espaço <strong>de</strong> Banach, 136<br />

estratégia mista em jogos <strong>de</strong> soma<br />

coeficiente reduzido <strong>de</strong> custo, 44, 46 zero, 127<br />

combinação afim, 17<br />

combinação convexa, 18<br />

fechado, 17<br />

condições <strong>de</strong> otimalida<strong>de</strong>, otimização<br />

não <strong>linear</strong> sem restrições173, folgas complementares, 82<br />

fluxo em re<strong>de</strong>s, 11<br />

otimização não <strong>linear</strong> com função côncava, 31<br />

restrições179<br />

função convexa, 31<br />

contração, 136<br />

controle discreto, 131<br />

grafo dirigido, 11<br />

convexo<br />

Hessiana (matriz), 32<br />

conjunto, 18<br />

hiperplano, 21<br />

corte <strong>de</strong> Gomory, 149<br />

cortes α − β, 156<br />

in<strong>de</strong>finida (matriz), 32<br />

interpretação do dual, 75<br />

<strong>de</strong>finida positiva (matriz), 32<br />

<strong>de</strong>generada<br />

jogo <strong>de</strong> soma zero, 125<br />

Versão Preliminar<br />

200


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

ÍNDICE REMISSIVO 201<br />

jogos <strong>de</strong> soma zero<br />

formulação como programa <strong>linear</strong>,<br />

127<br />

Karush-Kuhn-Tucker (condições <strong>de</strong><br />

otimalida<strong>de</strong>), 179<br />

Lagrangeano, 178, 179<br />

loteria, 185<br />

POMDPIP, 141<br />

ponto extremo, 22<br />

pontos interiores<br />

método <strong>de</strong>, 103<br />

portfólio<br />

otimização <strong>de</strong>, 158<br />

primal, 73<br />

processo Markoviano <strong>de</strong> <strong>de</strong>cisão, 133<br />

programação dinâmica, 131<br />

programação fracionária, 10<br />

programação inteira, 147<br />

programação <strong>linear</strong><br />

problema <strong>de</strong>, 4<br />

programação quadrática, 157<br />

mínimo global, 171<br />

mínimo local, 171<br />

mínimos quadrados, 157<br />

máximo global, 171<br />

máximo local, 171<br />

método das duas fases (para obter<br />

re<strong>de</strong> <strong>de</strong> fluxo, 12<br />

tableau Simplex inicial), 56<br />

método do M gran<strong>de</strong> (para obter tableau<br />

Simplex inicial), 59 semi<strong>de</strong>finida positiva (matriz), 32<br />

s.a., 1<br />

matriz triangular, 119<br />

semiespaço, 21<br />

maximização, 4<br />

sequência <strong>de</strong> Cauchy, 136<br />

MDPIP, 139<br />

simplex<br />

minimização, 4<br />

método, 39<br />

mistura ótima, 10<br />

simplex dual<br />

mochila<br />

algoritmo, 84<br />

problema da, 131<br />

simplex revisado<br />

multiplicadores <strong>de</strong> Lagrange, 178 método, 67<br />

SMDP, 137<br />

objetivo, 4<br />

solução<br />

otimização não <strong>linear</strong>, 171<br />

ótima, 4<br />

otimização não <strong>linear</strong> com restrições, básica, 27<br />

177<br />

viável, 4<br />

otimização não <strong>linear</strong> sem restrições, viável básica, 27<br />

172<br />

teoria os jogos, 125<br />

peso em arestas, 11<br />

totalmente unimodular<br />

planos <strong>de</strong> corte, 147<br />

matriz, 154<br />

poliedro, 23<br />

transporte<br />

politopo, 24<br />

problema <strong>de</strong>, 113<br />

dimensão <strong>de</strong>, 24<br />

POMDP, 139<br />

unimodularida<strong>de</strong>, 154<br />

Versão Preliminar


notas <strong>de</strong> aula – versão 64 - Jerônimo C. Pellegrini<br />

202 ÍNDICE REMISSIVO<br />

utilida<strong>de</strong>, 185<br />

vértice, 11<br />

variável <strong>de</strong> folga, 5<br />

Versão Preliminar

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!