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