• Nenhum resultado encontrado

Um algoritmo exato para a otimização de carteiras de investimento com restrições de cardinalidade

N/A
N/A
Protected

Academic year: 2021

Share "Um algoritmo exato para a otimização de carteiras de investimento com restrições de cardinalidade"

Copied!
115
0
0

Texto

(1)

UM ALGORITMO EXATO PARA

A OTIMIZAÇÃO DE CARTEIRAS DE INVESTIMENTO

COM RESTRIÇÕES DE CARDINALIDADE

Dissertação de mestrado em matemática aplicada financiada pelo CNPq

IMECC - UNICAMP

Pedro Ferraz Villela

Prof. Dr. Francisco de Assis Magalhães Gomes Neto - Orientador

(2)
(3)

ii

FICHA CATALOGRÁFICA ELABORADA PELA BIBLIOTECA DO IMECC DA UNICAMP Bibliotecária: Crisllene Queiroz Custódio – CRB8a 162/2005

Villela, Pedro Ferraz

V715a Um algoritmo exato para a otimização de carteiras de investimento com restrições de cardinalidade / Pedro Ferraz Villela -- Campinas, [S.P. : s.n.], 2008.

Orientador : Francisco de Assis Magalhães Gomes Neto

Dissertação (Mestrado) - Universidade Estadual de Campinas, Instituto de Matemática, Estatística e Computação Científica.

1. Otimização de Carteiras de Investimento. 2. Método de Lemke. 3. Algoritmo Branch and Bound. 4. Restrições de cardinalidade. I. Gomes Neto, Francisco de Assis Magalhães. II. Universidade Estadual de Campinas. Instituto de Matemática, Estatística e Computação Científica. III. Título.

(cqc/imecc)

Título em inglês: An exact algorithm for portifolio optimization with cardinality constraints. Palavras-chave em inglês (Keywords): 1. Portfolio optimization. 2. Lemke's method. 3. Branch and Bound algorithms. 4. Cardinality constraints.

Área de concentração: Otimização Titulação: Mestre em Matemática Aplicada

Banca examinadora: Prof. Dr. Francisco de Assis Magalhães Gomes Neto (IMECC-UNICAMP) Prof. Dr. Antonio Carlos Moretti (IMECC-UNICAMP)

Prof. Dr. Paulo Augusto Valente Ferreira (FEEC-UNICAMP) Data da defesa: 16/12/2008

(4)
(5)

v

AGRADECIMENTOS

Em primeiro lugar, gostaria de agradecer ao meu orientador e amigo Chico, que sempre esteve junto comigo durante todo o trabalho. Agradeço por toda a sua disposição e paciência ao longo desse período

Também agradeço muito a minha família, que sempre esteve comigo nos momentos mais difíceis, apoiando-me com muito amor. Em especial aos meus pais, que se dispuseram a me ajudar até nos horários mais indejesáveis.

Sou muito grato também aos meus amigos Carlos e Rodrigo, que sempre se disporam a me ajudar quando preciso. Em especial ao Carlos, pela ajuda vital na formatação do texto.

Por último, agradeço ao CNPq (Conselho Nacional de Desenvolvimento Científico e Tecnológico), pelo essencial apoio financeiro prestado durante a vigência do trabalho.

(6)

vii

RESUMO

Neste trabalho, propomos um método exato para a resolução de problemas de programação quadrática que envolvem restrições de cardinalidade. Como aplicação, empregamos o método para a obtenção da fronteira eficiente de um problema (bi-objetivo) de otimização de carteiras de investimento. Nosso algoritmo é baseado no método Branch-and-Bound. A chave de seu sucesso, entretanto, reside no uso do método de Lemke, que é aplicado para a resolução dos subproblemas associados aos nós da árvore gerada pelo Branch-and-Bound. Ao longo do texto, algumas heurísticas também são introduzidas, com o propósito de acelerar a convergência do método. Os resultados computacionais obtidos comprovam que o algoritmo proposto é eficiente.

Palavras-chave: Otimização de carteiras de investimento. método de Lemke. Branch-and-Bound. Restrição de cardinalidade.

(7)

ix ABSTRACT

In this work, we propose an exact method for the resolution of quadratic programming problems involving cardinality restrictions. As an application, the algorithm is used to generate the effective Pareto frontier of a (bi-objective) portfolio optimization problem. This algorithm is based on the Branch-and-Bound method. The key to its success, however, resides in the application of Lemke’s method to the resolution of the subproblems associated to the nodes of the tree generated by the Branch-and-Bound algorithm. Throughout the text, some heuristics are also introduced as a way to accelerate the performance of the method. The computational results acquired show that the proposed algorithm is efficient.

Keywords: Portfolio optimization. Lemke’s method. Cardinality constraints. Branch-and-Bound algorithm

(8)

xi SUMÁRIO

RESUMO ...VII ABSTRACT ... IX

INTRODUÇÃO ...1

MODELOS DE CARTEIRAS DE INVESTIMENTO ...3

1.1 O MODELO DE MARKOWITZ ... 3

1.2 OUTROS MODELOS ... 5

1.2.1 O modelo paramétrico... 5

1.2.2 O modelo MAD... 6

1.2.3 Um modelo de programação por metas ... 7

1.3 O MODELO COM RESTRIÇÃO DE CARDINALIDADE E CANALIZAÇÕES. ... 8

1.4 MEDIDAS DE RETORNO E RISCO ... 10

1.5 A FRONTEIRA EFICIENTE ... 12

1.6 PROBLEMAS DE PROGRAMAÇÃO QUADRÁTICA MISTA... 14

2 O MÉTODO DE LEMKE ...19

2.1 INTRODUÇÃO ... 19

2.2 O PROBLEMA DE COMPLEMENTARIDADE LINEAR... 20

2.3 O MÉTODO DE LEMKE... 23

2.4 ALGORITMO... 25

2.5 EXEMPLO NUMÉRICO ... 27

2.6 RESOLVENDO AS ITERAÇÕES DO MÉTODO DE LEMKE ... 29

3 O MÉTODO BRANCH-AND-BOUND IMPLÍCITO ...31

3.1 INTRODUÇÃO ... 31

3.2 O MÉTODO BRANCH-AND-BOUND PARA PROBLEMAS 0-1... 32

3.3 O MÉTODO BRANCH-AND-BOUND IMPLÍCITO... 35

3.4 ALGORITMO E EXEMPLO ... 37

3.4.1 Algoritmo ... 37

3.4.2 Exemplo ... 38

3.5 RAMIFICANDO PARA BAIXO ... 42

3.5.1 Exemplo ... 46

3.6 RAMIFICANDO PARA CIMA ... 46

3.6.1 Exemplo ... 48

4 PROCEDIMENTOS COMPUTACIONAIS ...51

4.1 O PROJETO... 51

4.2 ESCOLHENDO A VARIÁVEL A SER RAMIFICADA ... 52

4.2.1 Ramificando a variável mais próxima de um de seus limites... 53

4.2.2 Ramificando a variável mais distante de um de seus limites... 53

4.2.3 Ramificando a variável mais distante de zero e de seu limite inferior. ... 54

4.2.4 Ramificando quando o nó pai tem cardinalidade maior ou igual a K... 55

(9)

xii

4.3.1 Escolhendo o nó com melhor ζζζζ... 56

4.3.2 Fazendo uma busca em profundidade... 56

4.3.3 Fazendo uma busca em largura... 57

4.4 APROVEITANDO A BASE NO MÉTODO DE LEMKE ... 58

4.5 ATUALIZANDO A FATORAÇÃO LU DA BASE. ... 60

4.6 HEURÍSTICAS ADICIONAIS. ... 61

4.6.1 Limitando o número de ramificações para cima... 62

4.6.2 Determinando precocemente a infactibilidade de um subproblema... 62

5 RESULTADOS COMPUTACIONAIS ...65

5.1 OBJETIVOS ... 65

5.2 OS PROBLEMAS DE CARTEIRAS DE INVESTIMENTO ... 66

5.3 TESTANDO AS VARIANTES DO MÉTODO BRANCH-AND-BOUND ... 66

5.3.1 Determinando a melhor estratégia de ramificação ... 68

5.3.2 Determinando a estratégia de ramificação quando temos mais que K ativos... 75

5.3.3 Determinando a melhor estratégia de seleção do nó pendente ... 78

5.4 ATUALIZANDO A FATORAÇÃO LU DA BASE ... 83

5.4.1 Aplicando a atualização da base à resolução de problemas de complementaridade ... 83

5.4.2 Atualizando a base em todos os subproblemas gerados pelo Branch-and-Bound... 85

5.5 COMPARANDO DOIS ALGORITMOS PARA PROGRAMAÇÃO QUADRÁTICA... 86

5.6 TESTANDO O DESEMPENHO DO PROGRAMA ... 88

5.7 RESOLVENDO PROBLEMAS COM MAIS RESTRIÇÕES ... 101

5.8 USANDO RESTRIÇÕES DE IGUALDADE ... 102

CONCLUSÕES ...105

(10)

1

INTRODUÇÃO

Esta dissertação trata do problema de otimização de uma carteira de investimento, ou portfolio, que é o conjunto de ativos financeiros nos quais se investe. Em geral, ao montar uma carteira de investimento, o investidor procura maximizar o lucro, bem como minimizar o risco de perda de capital. Para lidar com o problema, o investidor precisa utilizar um modelo matemático que leve em conta esses dois objetivos antagônicos.

Uma das primeiras formulações matemáticas para esse problema de investimento foi o modelo de Média-Variância proposto por Markowitz [13] nos anos 50 do século 20. Ainda hoje, esse modelo tem uma boa aceitação por parte dos investidores. Em sua forma usual, o modelo de Markowitz se resume a um problema de programação quadrática no qual a função objetivo representa o risco a ser minimizado e o retorno mínimo da carteira é descrito através de uma restrição linear.

Com o passar do tempo, várias alterações foram sugeridas com o propósito de tornar o modelo de Markowitz mais compatível com o mercado financeiro real. Dentre essas alterações, destacamos a inclusão de restrições que limitam o tamanho da carteira e de restrições que estipulam um limite inferior para o montante aplicado em cada ativo.

Com essas novas restrições, o problema de programação quadrática passa a envolver variáveis inteiras, além das variáveis reais que já eram usadas para representar o valor investido em cada ativo. Naturalmente, com a inclusão de variáveis inteiras, o problema se torna NP-completo, exigindo um grande esforço computacional para a obtenção da solução ótima.

Em virtude da dificuldade do problema, uma alternativa prática para a obtenção de soluções satisfatórias em um tempo aceitável é a adoção de métodos heurísticos. Dentre os

(11)

trabalhos desta classe, podemos citar o artigo de Chang et al. [5] que investiga o uso de algoritmos genéticos, da busca tabu e da têmpera simulada para a determinação do portfolio apropriado para cada perfil de investidor, contemplando desde os mais conservadores até os mais arrojados. Seguindo o trabalho de Chang et al., Dias [7] propôs, recentemente, um novo algoritmo genético eficiente para resolver problemas de investimento.

Outra linha de solução do problema de carteiras de ativos financeiros envolve o emprego de métodos exatos, geralmente baseados no algoritmo Branch-and-Bound aliado a algum método para resolver problemas de otimização que envolvem variáveis contínuas. Dentre os trabalhos desta linha, podemos citar o desenvolvido por Bienstock [4], que utiliza técnicas de planos de corte aliadas ao algoritmo Branch-and-Bound. Outro trabalho igualmente importante foi o de Bertsimas e Shioda [3], que utiliza o algoritmo Branch-and-Bound aliado ao método de Lemke [6, 11].

Em nossa pesquisa, também desenvolvemos um algoritmo exato para o problema de portfolios, combinando o algoritmo Branch-and-Bound com o método de Lemke. Nosso objetivo principal é a obtenção de um algoritmo eficiente do ponto de vista computacional.

Esta dissertação está dividida da seguinte forma: no primeiro capítulo, fazemos uma introdução aos modelos de carteira de investimento, bem como apresentamos o tipo de problema problema específico que nos propomos a resolver. O Capítulo 2 é dedicado à apresentação detalhada do método de Lemke. No Capítulo 3, apresentamos o algoritmo Branch-and-Bound tradicional, seguido da versão implícita que desenvolvemos. No Capítulo 4, tratamos dos detalhes de implementação do Branch-and-Bound e do método de Lemke. Finalmente, o Capítulo 5 apresenta os resultados obtidos com a aplicação do nosso algoritmo a problemas reais de carteiras de investimento, que comprovam a eficiência do método que desenvolvemos.

(12)

3

CAPÍTULO

1

MODELOS DE CARTEIRAS

DE INVESTIMENTO

1.1 O MODELO DE MARKOWITZ

O tipo de problema de portfolio a ser estudado nesse trabalho caracteriza-se pela escolha de como investir o capital disponível entre as várias ações existentes no mercado. A estratégia envolvida na resolução desse tipo de problema envolve tanto a maximização do lucro do investimento, como a minimização do risco de perda de capital em virtude das flutuações dos preços do mercado. Naturalmente, estes objetivos são contraditórios e cabe ao investidor decidir como combiná-los.

O modelo matemático clássico para esse tipo de problema de portfolio é baseado na idéias propostas por Markowitz [13] em 1952. Definidos os N diferentes ativos que compõem a carteira de investimento, o montante a ser investido em cada ativo pode ser obtido resolvendo-se o problema de programação quadrática

(13)

. ,..., 1 , 0 1 . min 1 N i x x x a s Qx x i N i i T T = ≥ = =

= ρ µ , (1.1) onde • NxN

Q∈ℜ é a matriz de covariância do problema. Assim, o elemento qij da matriz

representa a covariância do ativo i em relação ao ativo j. Além disso, a matriz Q é simétrica e semidefinida positiva (Q = QT ≥ 0).

N

x∈ℜ é o vetor de incógnitas, que indica como o montante total disponível deve ser distribuído entre os ativos. Desta forma, a componente xi fornece a fração do montante a ser

investida no ativo i.

N

ℜ ∈

µ

é o vetor de retornos esperados. Ou seja, o elemento

µ

i representa o retorno

esperado para o ativo i.

• ρ∈ℜ é o nível desejado de retorno do portfolio.

Nesse modelo, temos como objetivo minimizar o risco, representado pela função quadrática baseada na matriz de covariância, para um nível predefinido de retorno, definido pela primeira restrição. A segunda restrição indica apenas que desejamos gastar todo o montante disponível, enquanto a terceira é usada para evitar que a porcentagem do dinheiro gasta em cada ativo seja negativa, o que significa que não permitimos a venda de ativos. Os conceitos de risco e retorno serão explicados detalhadamente na Seção 1.4.

Para definir um problema específico na forma (1.1), faz-se uma análise histórica dos ativos financeiros escolhidos para compor a carteira, de modo que seja possível criar tanto uma medida de risco (em geral, a variância), como também obter o valor esperado de retorno de capital (esperança).

(14)

5

1.2 OUTROS MODELOS

Naturalmente, o Modelo (1.1) poderia ser substituído por outro no qual se estabelecesse um nível para a variância e o retorno fosse minimizado. Outra possibilidade seria a adoção de uma desigualdade na restrição de retorno esperado, de modo que ρ correspondesse ao retorno mínimo admissível. Ao longo dessa seção, apresentaremos outros modelos que podem ser obtidos a partir de (1.1).

1.2.1 O modelo paramétrico

Uma modificação possível do Modelo (1.1) corresponde a incluir, além da função de risco, o desejo de maximizar o retorno dentro da função objetivo. Para tanto, é preciso utilizar um parâmetro λ que que pondera os objetivos conflitantes de redução do risco e aumento do retorno. Neste caso, obtemos o problema abaixo, no qual temos apenas as restrições de uso de todo o montante disponível e de não negatividade das variáveis.

. ,..., 1 , 0 1 . ) 1 ( min 1 N i x x a s x Qx x i N i i T T = ≥ = − −

=

µ

λ

λ

(1.2)

Tomando 0≤λ≤1, observamos que para λ = 0, apenas o retorno é considerado, enquanto λ = 1 corresponde à simples minimização do risco.

Caso a matriz Q seja positiva definida, o problema é convexo e possui solução única, pois o único mínimizador local existente é também minimizador global.

(15)

1.2.2 O modelo MAD

Problemas de programação quadrática como aqueles apresentados em (1.1) e (1.2) não são os únicos modelos utilizados na otimização de portfolios. O modelo do desvio absoluto com relação à média (MAD) [14], por exemplo, tem como idéia a minimização do risco através de uma função objetivo linear.

Neste modelo, considera-se a existência de T períodos para os quais conhecemos o retorno dos ativos disponíveis para aplicação. O objetivo do modelo é minimizar a soma do desvio absoluto do retorno de cada portfolio em relação à média de retorno para todos os períodos. Em termos matemáticos, a função a ser minimizada tem a forma

∑ ∑

= = − = T t N i i i t i x r T x f 1 1 , ) ( 1 ) ( µ ,

onderi,t é o retorno de um determinado ativo i no período de tempo t.

Para converter o modelo em um problema de programação linear, usamos variáveis auxiliares mt, de modo que cada termo que envolve o valor absoluto dá origem a duas restrições de desigualdade. Considerando também as restrições do problema de Markowitz, chegamos ao seguinte problema:

(16)

7 . ,.., 1 , 0 ,.., 1 , 0 1 ,.., 1 , ) ( ,.., 1 , ) ( . 1 min 1 1 , 1 , 1 N i i x T t t m x x T t t m x r T t t m x r a s m T N i i T N i i i t i N i i i t i T t t = ≥ = ≥ = = = − ≥ − = ≤ −

= = = =

ρ

µ

µ

µ

1.2.3 Um modelo de programação por metas

Outra abordagem linear interessante é a que envolve programação por metas (goal programming) [14]. Neste caso, minimiza-se tanto a chance de um retorno negativo como a de um risco elevado, dando um peso específico a cada uma dessas possibilidades. Assim, caso o investidor seja arrojado, o peso sobre o retorno será maior, enquanto o investidor conservador irá optar por usar um peso maior sobre o risco.

Para esse modelo, utilizamos os seguintes parâmetros e variáveis

Parâmetros:

W1: penalidade positiva associada ao retorno abaixo do objetivo esperado.

W2: penalidade positiva associada ao risco excessivo do portfolio em relação ao valor

esperado.

Riskp: risco global associado ao portfolio definido pelo investidor.

(17)

Variáveis:

n1: desvio negativo em relação ao retorno esperado.

p1: desvio positivo em relação ao retorno esperado.

n2: denota o desvio negativo em relação ao nível de risco.

p2: denota o desvio positivo em relação ao nível de risco.

Dessa forma, temos o seguinte modelo:

. ,..., 2 , 1 , 0 0 , , , 1 . min 2 1 2 1 1 1 2 2 1 1 1 2 2 1 1 N i x p p n n x Risk p n x Risk p n x a s p W n W i N i i N i p i i N i i i = ≥ ≥ = = − + = − + +

= = =

ρ

µ

A função objetivo procura minimizar apenas o risco acima da meta e o retorno abaixo da meta estabelecida. Deve-se notar que as variáveis n1 e p1 não serão diferentes de zero ao

mesmo tempo,o mesmo ocorrendo com n2 e p2,.

1.3 O MODELO COM RESTRIÇÃO DE CARDINALIDADE E CANALIZAÇÕES.

Outra linha de desenvolvimento de modelos para a otimização de carteiras de investimentos está relacionada à inclusão de restrições que tornam o problema mais compatível com as situações encontradas na vida real. Nessa linha, destacamos o modelo no qual se restringe a quantidade de ativos que irão compor a carteira, uma vez que normalmente não é viável investir

(18)

9

em todos os N ativos disponíveis no mercado. Este modelo geralmente inclui também um conjunto de limites inferiores, li, e superiores, ui, para as frações aplicadas a cada ativo

selecionado.

Para restringir a K o número de ativos, incluímos no modelo as variáveis binárias auxiliares

δ

i, i = 1,...,N, de modo que

δ

i =1 caso o ativo i faça parte da carteira e

δ

i =0 caso

contrário.

Já com relação aos limites inferiores e superiores, como estes só são aplicados às variáveis efetivamente incluídas na carteira, em lugar de utilizarmos canalizações simples, recorremos a desigualdades mistas, ou seja, com variáveis inteiras e reais.

Tomando por base o modelo de Markowitz, obtemos o seguinte problema

. ,..., 1 , 0 , ,..., 1 }, 1 , 0 { ,..., 1 , 1 . min 1 1 N i x N K K N i N i u x l x x a s Qx x i N i i i i i i i i N i i T T = ≥ ≤ ≤ = ∈ = ≤ ≤ = =

= = δ δ δ δ ρ µ (1.3)

Em (1.3), se

δ

i vale 0, xi também será igual a 0. Por outro lado, se

δ

i =1, temos i

i

i x u

l ≤ ≤ Como temos no máximo K variáveis inteiras

δ

i iguais a 1, somos forçados a escolher

no máximo K ativos.

Naturalmente, a restrição de cardinalidade pode ser incluída em todos os problemas apresentados neste capítulo, bem como em muitos outros modelos para problemas de otimização de carteiras. Para maiores informações, sugere-se consultar o artigo de Mitra et al.[14].

(19)

1.4 MEDIDAS DE RETORNO E RISCO

Naturalmente, não é possível medir o retorno futuro de um ativo. Assim, para estimar o retorno esperado, fazemos uma análise histórica, na esperança de que os valores registrados no passado recente voltem a ocorrer. Em termos matemáticos, supondo que um ativo tenho assumido historicamente n valores diferentes, definindo xi como o i-ésimo retorno possível e pi como a

respespectiva probabilidade de ocorrência, uma maneira de representar o retorno esperado do ativo é

= = = = n i i ip x x E x 1 ) ( µ .

O retorno esperado pode ser visto também como a média dos possíveis valores que o ativo assumiu historicamente.

Já o conceito de risco é algo muito mais complexo pois não existe uma fórmula universal para se medir o risco de um investimento, uma vez que o conceito é extremamente vasto e abstrato, não podendo ser representado de maneira exata. A medida de risco mais usada e intuitiva é a variância, como visto no modelo de Markowitz. Porém, esta é apenas uma das possíveis representações do risco.

Uma maneira mais geral de representar o risco envolve o uso do que chamamos de momentos parciais [14], ou simplesmente LPM (abreviatura do termo inglês lower partial moments), apresentados a seguir.

Seja α o parâmetro que indica o momento do retorno da distribuição, τ o nível pré-definido de retorno do investimento, e F(x) a função de densidade de probabilidade do investimento com retorno x. Neste caso, definimos os momentos parciais de ordem α como

(

)

{

max[0, ]

}

, 0 ) ( ) ( ) , ( ) ( = =

− = − > ∞ −

τ

τ

α

τ

τ

τ α α α α LPM x x f x dx E x F .

(20)

11

O LPM pode lidar tanto com medidas simétricas quanto assimétricas de risco. No caso simétrico, as medidas de risco incluem, por exemplo, a variância e o desvio absoluto com relação à média (MAD), como vemos abaixo.

• Variância: definindo o nível de retorno e o momento como τ =x e α = 2, obtemos

{

2

}

2 2 2 ( , ) ( ) ( ) ( ) x x E dx x f x x x x LPM = − = − =

+∞ ∞ −

σ

.

• MAD: definindo τ = x e α = 1, obtemos

{

x x

}

E dx x f x x x x LPM MAD= =

+∞ − = − ∞ − ( ) ) , ( 1 .

No caso assimétrico, desprezamos da medida de risco o retorno acima do nível desejado. Dentre as medidas assimétricas de risco, destacamos a semivariância e o MAD–, que são obtidas a partir das definições acima, substituindo o limite superior da integral por x , em lugar de +∞. Outra medida assimétrica muito usada atualmente é denominada Valor-em-Risco, ou VaR (do inglês Value-at-Risk).

Embora a escolha da medida de risco seja um assunto em grande ebulição, com defensores arraigados para os vários modelos existentes, utilizaremos, neste trabalho, a medida clássica, ou seja, a variância, que ainda conta com o maior número de adeptos.

(21)

1.5 A FRONTEIRA EFICIENTE

Problemas de programação multi-objetivo, como o que temos, geralmente não possuem uma solução ótima única. Em outras palavras, não é razoável esperar que a carteira com o maior retorno seja também aquela que tem o menor risco. Para comparar soluções diferentes, usamos a noção de dominância.

Dizemos que uma solução x1 domina uma outra solução x2 se:

• ∀i: fi(x1)≤ fi(x2); • ∃i: fi(x1)< fi(x2).

No caso de aplicações financeiras, dizemos que um portfolio, π1, domina outro, π2, se

π1 possui risco menor e retorno maior que π2, podendo haver igualdade em uma das duas

medidas.

Para um problema com p objetivos, a fronteira eficiente de investimento, ou fronteira de Pareto, é a curva em ℜ que representa o conjunto de pontos não dominados. Para o p problema de carteiras de investimentos, a fronteira eficiente é a curva não decrescente que contém as melhores possibilidades de conciliação entre risco e retorno. Vale notar que, caso não tenhamos restrições de cardinalidade, a curva é “bem comportada”, pois ela é não decrescente e possui uma reta suporte.

A Figura 1.1, mostrada a seguir, apresenta uma fronteira eficiente de investimento gerada a partir de ativos da bolsa de valores do Reino Unido. Nesta figura, o eixo das abscissas representa a medida de risco do portfolio, que nesse caso é a variância. Já o eixo das ordenadas representa o retorno médio dos ativos.

(22)

13

Figura 1.1 – FEI. dos ativos da bolsa de valores do Reino Unido (UK FTSE), extraída de [5].

A análise da Figura 1.1 revela que caso o investidor tenha uma grande aversão ao risco, ele deve optar por investir em um portfolio que tenha vários ativos, pois a possibilidade de perder dinheiro em todos eles é menor. Caso o investidor seja mais audaz e escolha priorizar o retorno, ele deve optar por investir em poucos ativos, em geral aqueles que apresentam o maior retorno, ainda que o risco de perda de capital seja grande devido à volatilidade do mercado financeiro. Vale notar ainda, que nenhuma das soluções da fronteira eficiente é “melhor” que as outras: cada ponto dela representa a melhor solução para o nível de risco especificado pelo investidor. Para maiores informações sobre fronteira eficiente de investimentos sugere-se consultar o livro de Luenberger [12].

Um modelo muito utilizado para a determinação da fronteira eficiente de investimento é o modelo parametrizado (1.2). Como a função objetivo desse problema é convexa, todo mínimo local é também mínimo global. Logo, cada ponto da fronteira nada mais é que a solução de (1.2) para um ou mais valores de λ.

Valores do parâmetro λ próximos de zero significam que o investidor prioriza o retorno, pouco se importando com o risco. Já valores de λ próximos de um, significam que o investidor prioriza excessivamente o risco, deixando o retorno em segundo plano. Logo, o parâmetro λ desempenha um papel essencial no modelo, uma vez que ele mede o nível de risco escolhido pelo investidor.

Portfolio selecionado contendo 1 ativo. Portfolio selecionado contendo 30 ativos. Risco - variância Retorno

(23)

Na prática, uma maneira de se construir a Fronteira Eficiente envolve a discretização dos valores λ no intervalo [0,1] e a resolução do Problema (1.2) para cada um dos valores de λ

selecionados. Em geral, essa discretização é feita definindo E como o tamanho da partição e tomando       − − − − ∈ 1 1 , , 1 2 , 1 1 , 0 E E E E L λ .

Quando se incorpora a restrição de cardinalidade, a fronteira eficiente passa a ser descontínua. Assim, a complexidade de problemas como o (1.4), a ser apresentado na próxima seção, é muito maior do que a de (1.2). Para maiores informações sobre a fronteira eficiente em problemas que envolvem restrições de cardinalidade pode-se consultar Chang et al. [5] e Dias [7].

1.6 PROBLEMAS DE PROGRAMAÇÃO QUADRÁTICA MISTA

Neste trabalho, nos concentramos no modelo apresentado na Seção 1.3, que inclui uma restrição de cardinalidade e limites inferiores para os montantes a serem aplicados nos ativos da carteira. Em nosso problema, não incluímos as restrições de limite superior para as variáveis.

Para permitir um maior controle sobre a minimização do risco e a maximização do retorno, combinamos o Modelo (1.3) com o modelo paramétrico, acrescentando o retorno parametrizado à função objetivo. Além disso, para facilitar a resolução do problema, transformamos em desigualdade a restrição de montante aplicado. Obtemos, assim, o problema

(24)

15 . ,..., 1 , 0 , ,..., 1 }, 1 , 0 { ,..., 1 , 1 . ) 1 ( min 1 1 N i x N K K N i N i l x x a s x Qx x i N i i i i i i N i i T T = ≥ ≤ ≤ = ∈ = ≥ ≤ − −

= = δ δ δ µ λ λ (1.4)

Com a conversão da restrição de montante aplicado em uma desigualdade, é possível que uma parte do dinheiro disponível não seja investida, particularmente no caso em que λ está próximo de 1, ou seja, quando a aversão ao risco é grande. Em particular, quando λ=1, caso a matriz Q seja definida positiva, nada é investido e, neste caso, a função objetivo atingirá o mínimo apenas para x = 0.

Como não é razoável supor que um investidor mantenha em caixa grande parte de seu dinheiro, podemos considerar a existência de um ativo livre de risco (como a caderneta de poupança ou as letras do tesouro americano) que absorva o montante não aplicado nos ativos passíveis de compor a carteira.

Esse ativo livre de risco pode, inclusive, ser introduzido no Modelo (1.4), o que tornaria semidefinida positiva a matriz Q. Com essa alteração, todo o dinheiro disponível seria aplicado, exceto no caso em que λ =1, situação para a qual há infinitas soluções ótimas, pois qualquer montante investido no ativo livre de risco seria ótimo, desde que nada fosse aplicado nos demais ativos. Naturalmente, a introdução de um ativo livre de risco altera a fronteira eficiente, fazendo com que esta toque o eixo vertical apresentado na Figura 1.1.

A analise das restrições de (1.4) revela que limitar o número de ativos na carteira nada mais é do que exigir que não mais que K componentes do vetor x sejam positivas. Logo, chamando de nz(x)={i|xi ≠0} o conjunto das componentes não nulas do vetor x, podemos substituir a restrição K N i i

=1

δ pela exigência de que a cardinalidade de nz(x) seja, no máximo, K, ou seja, que Card(nz(x))≤K.

(25)

Para manter as restrições de limite inferior, assim como as de positividade, basta exigir que as variávies cujos índices estam em nz(x) satisfaçam as restrições de limite inferior, permitindo que as demais sejam não negativas. Sendo assim, as 4 últimas restrições de (1.4) podem ser substituídas por

). ( , 0 ) ( , )) ( ( x nz i x x nz i l x K x nz Card i i i ∉ = ∈ ≥ ≤

Assim, podemos reescrever o problema (1.4) na forma

). ( , 0 ) ( , )) ( ( 1 . ) 1 ( ) ( min 1 2 1 x nz i x x nz i l x K x nz Card x a s x Qx x i i i N i i T T ∉ = ∈ ≥ ≤ ≤ − −

=

µ

λ

λ

(1.5)

Como essa mudança pode ser generalizada para qualquer problema de programçao quadrática, de uma forma geral, escrevemos nosso problema de programação quadrática mista 0-1 no seguinte formato: ), ( , 0 ) ( , )) ( ( . . min 21 x nz i x x nz i l x K x nz Card b Ax a s x c Qx x i i i T T ∉ = ∈ ≥ ≤ ≤ + (1.6)

(26)

17

onde N N

Q∈ℜ × é simétrica e definida positiva, N

c∈ℜ , m N

A∈ℜ × , m

b∈ℜ , N

l∈ℜ é o vetor de limites inferiores não negativos de x, K é um inteiro positivo, o conjunto nz(x) é definido por

} 0 | { ) (x = i xi

nz e Card(C) indica a cardinalidade do conjunto C.

Além do Problema (1.5), outro tipo de problema que pode ser escrito na forma (1.6) é obtido quando queremos construir um portfolio limitado a um máximo de K ações que, ao mesmo tempo,

se equipare, o tanto quanto possível, a um portfolio alvo composto por N ações (N > K); • minimize os custos transacionais;

• limite a mudança total de investimentos entre setores da economia.

Suponha que disponhamos de um portfolio atual, com frações de investimento em seus N ativos dadas pelo vetor x0. Assumindo a adoção de modelo simétrico para compras e vendas, podemos minimizar os custos associados às alterações na carteira incluindo na função objetivo o termo quadrático

, ) ( 0 2 1 i N i i i x x c

=

onde ci> 0 é o coeficiente de impacto relativo à movimentação do ativo i.

Para limitar o aumento ou a redução dos investimentos que fazem parte de um setor do mercado de ações, exigimos que

(

)

j, S i B i i j x x − ≤

ε

∈ (1.7)

onde

ε

j é a variação admissível para a soma das aplicações que pertencem ao conjunto Sj, que

representa o setor j da economia, e B i

x é fração alvo para o ativo i. Dentre possíveis setores da economia que poderiam compor Sj podemos citar os setores bancário, agropecuário e petrolífero.

Transformando a Restrição (1.7) em um par de desigualdades lineares, obtemos o seguinte problema

(27)

(

) (

)

(

)

, ,..., 1 0 ) ( )) ( ( 1 ,..., 1 , ,..., 1 , . 2 1 min 1 2 0 1 N i x x nz i l x K x nz Card x k j x x k j x x a s x x c x x Q x x x i i i N i i j S i B i S i i j S i B i S i i i i N i i B T B T j j j j = ≥ ∈ ≥ ≤ = = − ≥ = + ≤ − + − − + −

= ∈ ∈ ∈ ∈ =

ε

ε

µ

onde o termo

(

B

) (

T B

)

x x Q x

x− − representa o risco do porifolio almejado se afastar do porifolio alvo.

Claramente, o Problema (1.7) tem a forma (1.6), de modo que pode ser solucionado usando nossa metodologia.

(28)

19

CAPÍTULO

2

2

O MÉTODO DE LEMKE

2.1 INTRODUÇÃO

Em nosso trabalho, estamos interessados em encontrar a solução ótima exata de problemas de programação quadrática inteira mista dados na forma (1.6). Para tanto, usaremos um método do tipo Branch-and-Bound implícito, conforme será apresentado no Capítulo 3.

A cada passo do algoritmo Branch-and-Bound, precisamos resolver um problema relaxado, do qual excluímos as variáveis inteiras e as restições que as envolvem. Obtemos, assim, um problema na forma . 0 . min 21 ≥ ≤ + x b Ax a s x c Qx xT T (2.1)

Dentre as diversas alternativas existentes para a resolução desse problema, optamos por usar o método de Lemke, pois ele é particularmente eficiente quando começamos de uma solução infactível próxima à solução ótima, situação comumente encontrada durante a aplicação do método Branch-and-Bound, como será visto no próximo capítulo.

(29)

2.2 O PROBLEMA DE COMPLEMENTARIDADE LINEAR

O método de Lemke, utilizado para otimizar os problemas relaxados associados aos nós da árvore gerada pelo algoritmo Branch-and-Bound, foi criado originalmente para resolver problemas de complementaridade linear (PCL), que são apresentados da seguinte forma:

• Dados n n n M q∈ℜ , ∈ℜ × , achar n z∈ℜ e n w∈ℜ tais que: . 0 0 , 0 = ≥ ≥ + = w z w z q Mz w T (2.2)

Esse problema é conhecido como PCL(q,M). Um vetor z é dito factível se satisfaz as duas primeiras restrições de (2.2), e é dito complementar se satisfaz a última equação. Todo vetor z que é factível e complementar é chamado de ponto de equilíbrio do PCL(q,M). Note que, devido às restrições de não negatividade, z e w são complementares se e somente se

n i

w

zi i =0,∀ =1,..., .

Chamamos o par zi e wi de par complementar.

Voltando ao Subproblema (2.1), observamos que, se Q é uma matriz simétrica e definida positiva, as condições de Karush-Kuhn-Tucker são necessárias e suficientes para a caracterização de um mínimo global do problema. Tais condições KKT são definidas por

(30)

21

(

)

, 0 , , 0 0 0 ≥ = = − = − + + r g x x r Ax b g r g A Qx c T T T onde m N r e

g∈ℜ ∈ℜ são denominadas variáveis duais. Com o uso de um vetor auxiliar

m

v∈ℜ , podemos reescrever as condições acima como

. 0 , , , 0 , 0 ≥ = = − = + + = v r g x g v x r Ax b v g A Qx c r T T T (2.3) Utilizando a representação       =       =       − =       = v r w g x z A A Q M b c q T , , 0 , , (2.4) é possível reescrever (2.3) na forma

. 0 , 0 ≥ = = − z w z w q Mz w T (2.5)

A primeira Equação de (2.5) pode ser apresentada simplesmente como

[

]

q, w z I M n =      − (2.6)

(31)

onde In é a matriz identidade de ordem n = N + m.

Podemos encontrar uma solução factível para (2.3) escolhendo n colunas linearmente independentes da matriz

[

InM

]

e formando uma base B tal que 0

1

q

B . Neste caso, apenas as variáveis correspondentes às colunas da base não são nulas. Sendo assim, podemos particionar o nosso vetor      = w z

x em dois outros vetores, xB e xNB, sendo o primeiro composto pelas

varíaveis não nulas (básicas) e o segundo pelas variáveis nulas (não básicas).

Desprezando as variáveis não básicas, podemos escrever (2.6) como BxB =q. Para

atender as restrições de não negatividade de (2.3), exigimos que 1 0 ≥ = −

q B

xB . Além disso, para que as restrições de complementaridade sejam satisfeitas, ziserá básica se e somente se wi não for

básica, e vice-versa.

Seja, então,

β

o conjunto dos índices de z que estão na base. Neste caso, definimos a iésima coluna da base complementar (aquela que satisfaz as condições de complementaridade) por

   β ∉ β ∈ − = , , , , i se e i se M B i i i

onde ei é a iésima coluna da matriz identidade. Assim, cada coluna de B associada a uma

componente de z é igual a uma coluna de M com o sinal trocado, enquanto as colunas de B associadas às variáveis de w são colunas da identidade. O objetivo do método de Lemke é achar uma base complementar B, tal que 1 0

q

(32)

23

2.3 O MÉTODO DE LEMKE

Dados q, M e um vetor h positivo definido pelo usuário, o método de Lemke resolve o PCL (q,M) através de uma série de pivoteamentos.

Primeiramente, verificamos se q≥0, pois, nesse caso, temos a solução trivial z = 0 e w = q como solução do problema. Caso isso não aconteça, precisamos definir uma base complementar inicial. As variáveis básicas, entretanto, não precisam satisfazer a restrição de não negatividade. A estratégia padrão, nesse caso, é fazer com que as componentes de z sejam não básicas e as de w sejam básicas, de modo que a base inicial seja a matriz identidade.

Em seguida, aumentamos o PCL(q,M) , substituindo (2.4) por

. 0 , 0 , 0 0 0 0 ≥ ≥ ≥ = + + = z z w w z Mz hz q w t (2.7)

Essa alteração implica na ampliação de (2.6) para

[

]

, 0 q w z z I M h n =           − − (2.8) ou simplesmente Mx = , com q =

[

]

n×(2n+1) n I M h M e =

[

0 T T

]

T ∈ℜ2n+1 w z z x .

A idéia implícita no aumento do PCL é a de que, ao introduzirmos no problema a coluna positiva h relativa a zo e forçarmos tal variável a entrar na base, tornamos a nossa solução básica positiva.

(33)

Para mostrar que isso acontece, consideremos que a base inicial seja a trivial. Neste caso, queremos que w≥0, o que implica em q+ hz0 ≥0, pois z = 0. Escolhendo o vetor h de forma adequada1 e definindo

) / max(

0 qi hi

z = − ,

garantimos que a solução obtida após a transformação de z0 em variável básica seja necessariamente positiva. Nesse caso, a variável que é forçada a sair da base para a inclusão de z0

é exatamente aquela definida por argmax{-qi/hi}.

A introdução de z0 faz com que um par (zi,wi) deixe de ser complementar, pois as

duas variáveis que o compõem passam a ser não básicas. Para corrigir esse problema, o método de Lemke escolhe, a cada iteração, a variável complementar àquela que saiu da base na iteração anterior para entrar na base da iteração atual.

A variável que entra na base pode ter seu valor aumentado, até que uma das variáveis básicas se torne zero. A primeira variável básica a atingir o valor zero (denominada variável de bloqueio) deixa a base. O processo de determinação da variável que sai da base é análogo ao teste da razão, utilizado na Programação Linear.

Repetimos o processo de substituição de variáveis na base até que z0 se torne a

variável de bloqueio, ou até que não consigamos achar uma variável de bloqueio. No primeiro caso, z0 é retirada da base e, assim, obtemos uma solução que é ao mesmo tempo factível e

complementar, de modo que dispomos da solução ótima. No segundo caso, o nosso PCL original (2.5) (e, conseqüentemente, nosso problema de otimização quadrática) é infactível .

Na ausência de degenerescência e de uma região factível vazia, podemos garantir que o método de Lemke convirgirá para uma solução do problema (2.1) caso ao menos uma das condições abaixo seja satisfeita2:

1 Quando se usa a base trivial, uma opção simples consiste em definir h = [1 1 ... 1]T.

(34)

25

• A matriz Q seja simétrica e semidefinida positiva e c = [0 0 ... 0]T. • A matriz Q seja simétrica definida positiva.

• A matriz Q seja simétrica, possua todos os elementos não negativos e sua diagonal seja composta apenas por elementos positivos.

Em nosso trabalho, supomos que a matriz Q é simétrica e definida positiva, de modo que o método de Lemke sempre convergirá para o minimizador do problema quadrático. Além disso, é fácil notar que o algoritmo de Lemke termina em um número finito de passos, pois o número de bases complementares é finito. Entretanto, a seqüência de pivoteamentos depende diretamente da escolha do vetor h, sendo importante a escolha de um vetor que torne o algoritmo mais eficiente.

Durante a execução do algoritmo Branch-and-Bound, aplicamos o método de Lemke para resolver uma série de problemas quadráticos semelhantes. Para acelerar o algoritmo, aproveitamos a solução obtida para um problema como ponto inicial na resolução de outro problema. Neste caso, não é possível utilizar como base inicial, a base ótima de um problema anterior, como exposto acima, sendo necessário definir também um novo vetor h apropriado. Uma descrição de como introduzir essa alteração no método de Lemke é apresentada no Capítulo 4, no qual abordamos nossa implementação computacional.

2.4 ALGORITMO

A seguir, apresentamos o método de Lemke na forma algoritmica, partindo da solução inicial trivial. Supomos que sejam fornecidos os valores de q, h, e M. No algoritmo abaixo, os índices de 0 a n correspondem ao vetor z, e os índices de n + 1 a 2n dizem respeito ao vetor w. Ao longo do algoritmo, usaremos a notação M(:,IB) para representar a submatriz de

(35)

1. Se q ≥ 0, (a solução trivial z = 0 é ótima) 1.1. z ← 0, w ← q.

1.2. Terminar o algoritmo. 2. Fim Se

3. Definir os vetores de índices: IB

{

n+1,...,2n

}

, IN

{

0,...,n

}

4. Introduzir a coluna de z0 na base:

i ← argmax −

{

qj /hj

}

.

IB

(

IB \

{}

i

) { }

∪ 0 , IN

(

IN \

{ }

0

) {}

i

BM(:,IB)

5. Enquanto 0∈IB (a variável z0 é básica),

5.1. Forçar a entrada na base da variável complementar àquela que saiu na iteração anterior: ji+n−2n

i/(n+1)

.

5.2. Determinar a variável que sai da base pelo teste da razão:

i ← argmin

{

(

B-1

) (

B-1

) (

, B-1

)

>0

}

k j k j k m m q , onde mj é a j

ésima coluna da matriz M .

5.3. Se i estiver definido,

5.3.1. Atualizar os vetores de índices e a base:

IB

(

IB \

{}

i

) { }

j , IN

(

IN \

{ }

j

) {}

i BM(:,IB) 5.4. Senão, 5.4.1. O problema é infactível. 5.4.2. Terminar o algoritmo. 6. Fim Enquanto. 7. x ← B-1 q.

(36)

27

2.5 EXEMPLO NUMÉRICO

Para facilitar a compreensão do método de Lemke, apresentamos abaixo um exemplo de aplicação do mesmo a um problema simples na forma (2.1), usando como dados de entrada os vetores e matrizes fornecidos abaixo.

[

1 1

]

= A ,      = 2 1 1 2 Q , b=

[ ]

1 ,      − − = 5 , 2 8 , 1 c ,           = 1 1 1 h .

Vamos resolver o problema aumentado na forma (2.7), cuja dimensão é 7, partindo da base inicial trivial. As iterações serão apresentadas com o auxílio de tablôs. Nesses tablôs, as variáveis básicas são aquelas indicadas na primeira coluna, enquanto os valores dessas variáveis são mostrados na última coluna.

Aplicando o Algoritmo de Lemke ao problema, temos

Iteração 0.

VB z0 z1 z2 z3 w1 w2 w3 B-1q

w1 –1 –2 –1 –1 1 0 0 –1,8

w2 –1 –1 –2 –1 0 1 0 –2,5

w3 –1 1 1 0 0 0 1 1

• Variável que sai da base: w2

• Variável que entra na base: z0

(37)

VB z0 z1 z2 z3 w1 w2 w3 B-1q

w1 0 –1 1 0 1 –1 0 0,7

z0 1 1 2 1 0 –1 0 2,5

w3 0 2 3 1 0 –1 1 3,5

Iteração 1.

• Variável que sai da base: w1

• Variável que entra na base: z2

• Novo tablô: VB z0 z1 z2 z3 w1 w2 w3 B-1q z2 0 –1 1 0 1 –1 0 0,7 z0 1 3 0 1 –2 1 0 1,5 w3 0 5 0 1 –3 2 1 1,4 Iteração 2.

• Variável que sai da base: w3

• Variável que entra na base: z1

• Novo tablô:

VB z0 z1 z2 z3 w1 w2 w3 B-1q

z2 0 0 1 0,2 0,4 –0,6 0,2 0,98

z0 1 0 0 0,4 –0,2 –0,2 –0,6 0,26

(38)

29

Iteração 3.

• Variável que sai da base: z0

• Variável que entra na base: z3

• Novo tablô: VB z0 z1 z2 z3 w1 w2 w3 B-1q z2 –0,5 0 1 0 0,5 –0,5 0,5 0,85 z3 2,5 0 0 1 –0,5 –0,5 –1,5 0,65 z1 –0,5 1 0 0 –0,5 0,5 0,5 0,15 Iteração 4.

• Como z0 sai da base, a solução atual é ótima para o nosso problema. Sabendo que as duas

primeiras componentes de z correspondem ao vetor x, concluímos que x1 = 0,15 e x2 = 0,85.

2.6 RESOLVENDO AS ITERAÇÕES DO MÉTODO DE LEMKE

Observamos que o método de Lemke possui uma grande semelhança com o método Simplex, especialmente no que se refere ao uso de pivoteamentos e do teste da razão para determinar a variável que sai da base. Cabe notar, também, que, como na fase 1 do Simplex, tornamos factível a solução inicial incluindo uma ou mais variáveis artificiais no problema. Porém, diferentemente do Simplex, o método de Lemke não lida com a função objetivo e, conseqüentemente, com os custos associados a cada variável. Sendo assim, o critério de otimalidade e a estratégia usada para determinar a variável que entra na base são diferentes dos empregados na resolução do Simplex.

(39)

Dadas as semelhanças entre os algoritmos, podemos adaptar ao método de Lemke várias propostas desenvolvidas para o Simplex. Como os passos computacionalmente mais caros do método estão relacionados à resolução de sistemas lineares envolvendo a matriz B, consideramos duas possibilidades de implementação do método de Lemke. A primeira envolve a decomposição LU da base sempre que uma coluna é substituída por outra. A segunda proposta consiste em efetuar a decomposição LU no início do método, atualizando as matrizes L e U a cada iteração. As duas alternativas foram implementadas e testadas, conforme se verá adiante.

(40)

31

CAPÍTULO

3

3

O MÉTODO

BRANCH-AND-BOUND

IMPLÍCITO

3.1 INTRODUÇÃO

Uma vez que o Problema (1.6) é equivalente a um problema de programação quadrática inteira mista, a maneira usual de encontrar sua solução exata consiste em utilizar variantes do algoritmo Branch-and-Bound. Dessa forma, os métodos que investigamos para a resolução desse tipo de problema foram:

• A aplicação direta do método Branch-and-Bound, combinado com um algoritmo para resolver problemas convexos de programação quadrática. Essa estratégia, apesar de ser a mais intuitiva, é mais cara, em termos de gasto computacional, que os métodos citados abaixo. • O uso do algoritmo Branch-and-Cut, que inclui no problema restrições baseadas em métodos

de planos de corte, sempre que possível. Seguindo essa linha, Bienstock [4] investigou quatro estratégias diferentes de geração de planos de corte para o problema: cortes arredondados inteiro-mistos, cortes de mochila, cortes de intersecção e cortes disjuntos. Dentre elas, a última se mostrou mais eficiente devido ao fato da separação ser feita de maneira direta.

(41)

• O uso do algoritmo Branch-and-Bound implícito, combinado com o método de Lemke, para a resolução dos subproblemas quadráticos, além de técnicas de reformulação e eliminação de variáveis.

Dentre as estratégias descritas, a que mais nos pareceu promissora foi a última, uma vez que o método de Lemke pode ser facilmente adaptado à resolução dos problemas gerados a cada iteração do Branch-and-Bound, problemas estes que possuem, geralmente, um número muito pequeno de restrições e para os quais dispomos de uma solução inicial quase factível.

3.2 O MÉTODO BRANCH-AND-BOUND PARA PROBLEMAS 0-1

O Branch-and-Bound é um algoritmo baseado no processo de divisão e conquista, que consiste em quebrar um problema difícil (em geral, NP-completo) em vários problemas menores, de fácil resolução, para posteriormente juntar as informações obtidas para resolver o problema original. Dessa forma, é feita a enumeração sistemática das possíveis soluções, procurando sempre eliminar, ao longo do caminho, grupos de soluções menos proveitosas. Em geral, esse algoritmo é muito utilizado para achar a solução ótima de problemas de otimização que envolvem variáveis inteiras.

Neste trabalho, estamos interessados em resolver problemas de programação quadrática mista do tipo (1.4), em que algumas variáveis são binárias, ou seja, só podem assumir valores 0 ou 1. Para resolver esse tipo de problema usando o Branch-and-Bound, primeiramente resolvemos a versão relaxada do problema, o que no nosso caso corresponderia a resolver o problema no qual todas as variáveis binárias são consideradas contínuas no intervalo [0,1]. Feito isso, verificamos se, na solução obtida, todas as variáveis binárias valem 0 ou 1. Se isso ocorre, já resolvemos o problema. Caso contrário, como ainda não encontramos uma solução viável para o problema original, guardamos uma solução vazia como a melhor soluçao inteira. Neste caso,

(42)

33

definindo

ζ

* como o valor da função objetivo desta melhor solução, tomamos

ζ

* = ∞.

Em seguida, escolhemos uma das variáveis binárias que ora possue valor fracionário e a forçamos a assumir explicitamente cada um dos dois valores admissíveis (0 ou 1). Geramos, assim, dois subproblemas que precisam ser resolvidos. A essa subdivisão do problema damos o nome de ramificação. Nesse contexto, existem 2 tipos diferentes de ramificação: a para baixo e a para cima. Na ramificação para baixo, a variável escolhida assume o valor 0, ao passo que na ramificação para cima ela assume o valor 1.

É fácil observar que cada ramificação dá origem a outras ramificações, até que todas as variáveis inteiras da solução obtida possuam valor 0 ou 1. Assim, a estrutura do problema sugere a criação de uma árvore binária para poder representar todas as possíveis ramificações a serem investigadas.

Nessa árvore, cada subproblema gerado por uma ramificação é chamado de nó. O primeiro problema relaxado a ser resolvido, é conhecido como nó raiz. Um nó cuja solução tenha as variáveis binárias valendo 0 ou 1 é chamado de folha, ao passo que um nó em que algumas das variáveis binárias estejam em (0,1) é chamado de ramo. Quando um nó i gera um nó j via ramificação, dizemos que o nó i é o pai de j, de modo que este último é um nó filho de i. Um nó que ainda não foi resolvido é chamado de nó pendente. O número máximo de elementos da árvore é igual a 2n+1 – 1, onde n é o número de variáveis binárias do problema.

Depois de resolver o problema associado a uma ramificação, verificamos se a solução é factível, no sentido das variáveis binárias do problema assumirem apenas valores 0-1. Se isso ocorre, comparamos

ζ

, o valor da função objetivo, com

ζ

*, o valor de

ζ

associado à melhor solução inteira encontrada até o momento. Se

ζ

<

ζ

*, atualizamos

ζ

* e deixamos de resolver todas as ramificações pendentes cuja solução seja pior que aquela que acabamos de encontrar. Por outro lado, se a solução ainda incluir variáveis binárias com valores não inteiros, escolhemos uma nova variável para ramificar, gerando dois novos problemas.

Salvo quando aparece uma folha, a cada iteração do método, temos que armazenar 2 novos nós e decidir qual nó resolver dentre os possíveis pendentes. O número de nós pendentes só diminui quando achamos uma folha, pois, neste caso, além de não ramificarmos, eliminamos os nós pendentes com valor de

ζ

maior que o da solução recém encontrada. O algoritmo acaba

(43)

quando não existem mais nós pendentes para investigarmos.

Para facilitar o entendimento do leitor, apresentamos abaixo o algorimo Branch-and-Bound para problemas de programação quadrática mista 0-1.

1. Usando o método de Lemke, resolver o problema relaxado (assumindo que as variáveis binárias são contínuas no intervalo [0,1]).

2. Se, na solução obtida, todas as variáveis binárias valerem 0 ou 1, 2.1. Terminar o algoritmo (estamos no ótimo).

3. Fim Se.

4. Escolher uma variável binária não inteira para ramificar.

5. Criar uma lista de nós pendentes, nosp, contendo os 2 problemas gerados pela ramificação. 6. x* ← [] (vetor indefinido).

ζ

* ← ∞. 7. Enquanto nosp ≠ ∅,

7.1. Retirar um subproblema de nosp.

7.2. Usando o método de Lemke, resolver este problema, obtendo x e

ζ

ou a indicação de que ele é infactível.

7.3. Se x possuir variáveis binárias com valores fracionários, 7.3.1. Escolher uma variável para ramificar.

7.3.2. Incluir em nosp os 2 subproblemas a serem resolvidos. 7.4. Senão, Se as variáveis binárias de x forem inteiras e

ζ

<

ζ

*,

7.4.1. x* ← x.

ζ

*

ζ

.

7.4.2. Para cada nó i em nosp, 7.4.2.1. Se ζ p ≥ζ*

i , onde p i

ζ é o valor da função objetivo do pai do nó i, 7.4.2.1.1. Eliminar o nó i de nosp.

7.4.2.2. Fim Se. 7.4.3. Fim Para. 7.5. Fim Se.

8. Fim Enquanto.

(44)

35

Para obter maiores informações sobre o algoritmo Branch-and-Bound, o leitor pode consultar, por exemplo, Wolsey [16].

3.3 O MÉTODO BRANCH-AND-BOUND IMPLÍCITO

A principal diferença entre o Problema (1.5) ou (1.6) e um problema de programação quadrática 0-1 convencional é que as variáveis binárias estão implícitas, ou seja, não aparecem, mas são necessárias para que tenhamos no máximo K variáveis positivas, ou seja, para que

K x nz

Card( ( ))≤ . (3.1)

Essa forma implícita de tratar as variáveis binárias pode ser estendida ao método Branch-and-Bound. Neste caso, eliminamos do problema relaxado (o nó raiz da árvore binária) a Restrição (3.1) e os limites ), ( , 0 ) ( , x nz i x x nz i l x i i i ∉ = ∈ ≥ (3.2)

adotando apenas a restrição de não negatividade x ≥ 0.

Obtemos, assim, um problema clássico de programação quadrática, na forma (2.1). A única deferença entre este problema e o correspondente ao nó raiz do Branch-and-Bound usual é a inexistência da restrição , 1 K N i i

=

δ presente na formulação (1.4), mas não em (1.5). Ainda assim, a relaxação das restrições de integralidade das variáveis binárias, adotada na seção anterior, também permite que a cardinalidade de nz(x) seja superior a K e que as componentes

(45)

estritamente positivas do vetor x assumam valores abaixo de seus limites inferiores, de modo que há grande similaridade entre os problemas abordados pelo Branch-and-Bound usual e a versão implícita.

No caso provável da solução do nó raiz da árvore não satisfazer as restrições (3.1) ou (3.2), é necessário ramificar uma variável qualquer. É justamente na manipulação das ramificações que as restrições ignoradas são levadas em conta, justificando o caráter implícito do método Branch-and-Bound. A idéia é fazer com que, a cada ramificação, as variáveis estejam mais próximas de obedecer às restrições de cardinalidade e limite inferior.

Vejamos como ramificar uma variável xs:

• Habitualmente, a ramificação para baixo corresponde à atribuição do valor 0 à variável binária associada a xs. Naturalmente, isso também nos obriga a adotar xs = 0. No método

implícito, essa ramificação é obtida através da eliminação direta de xs, o que provoca a

geração de um novo subproblema com uma variável a menos. Esse subproblema é resolvido através do método de Lemke.

• No problema financeiro usual, a ramificação para cima está relacionada à inclusão forçada de um ativo na carteira. No Branch-and-Bound para problemas 0-1, isso equivale a atribuir o valor 1 à variável binária associada à variável xs, ao passo que, no Branch-and-Bound

implícito, tal exigência se resume à inclusão da restrição xs ≥ ls. Esse tipo de ramificação traz

conseqüências não só à restrição de limite inferior, mas também à restrição de cardinalidade, que pode passar a ser infactível. No método implícito, essa ramificação é feita apenas quando xs é estritamente positiva e está abaixo do seu limite inferior ls. Neste caso, incluímos no

problema a restrição xsls e o resolvemos pelo método de Lemke. Para evitar que a

Restrição (3.1) se torne infactível, a ramificação para cima não é feita se o número de variáveis ramificadas para cima for superior ou igual a K.

Como veremos a seguir, os principais conceitos do algoritmo Branch-and-Bound são mantidos em sua versão implícita, que pouco difere daquela apresentada na Seção 3.2.

(46)

37

3.4 ALGORITMO E EXEMPLO

Nesta seção, para facilitar a compreensão da versão implícita do Branch-and-Bound, apresentamos o passos que compõem o algoritmo, além de um exemplo numérico.

3.4.1 Algoritmo

1. Usando o método de Lemke, resolver o problema relaxado, retirando as Restrições (3.1) e (3.2).

2. Se, na solução obtida, não tivermos mais que K variáveis não nulas e se estas satisfizerem as restrições de limite inferior,

2.1. Terminar o algoritmo (estamos no ótimo). 3. Fim Se.

4. Escolher uma variável binária não inteira para ramificar.

5. Criar uma lista de nós pendentes, nosp, contendo os 2 problemas gerados pela ramificação. 6. x* ← [] (vetor indefinido). ζ

* ← ∞. 7. Enquanto nosp ≠ ∅,

7.1. Retirar um subproblema de nosp.

7.2. Usando o método de Lemke, resolver este problema, obtendo x e ζ ou a indicação de que ele é infactível.

7.3. Se x possuir componentes não nulas menores que os limites inferiores correspondentes ou se o número de componentes não nulas for maior que K,

7.3.1. Escolher uma variável para ramificar.

7.3.2. Incluir em nosp o problema relacionado à ramificação para baixo. 7.3.3. Se a ramificação para cima não violar a Restrição (3.1),

(47)

7.3.3.1. Incluir a ramificação para cima em nosp. 7.3.4. Fim Se.

7.4. Senão, Se ζ <ζ*, 7.4.1. x* ← x. ζ

* ← ζ.

7.4.2. Para cada nó i de nosp, 7.4.2.1. Se ζ p ≥ζ*

i , onde p i

ζ é o valor da função objetivo do pai do nó i, 7.4.2.1.1. Eliminar o nó i de nosp.

7.4.2.2. Fim Se. 7.4.3. Fim Para. 7.5. Fim Se.

8. Fim Enquanto.

9. A solução do problema é x*, com função objetivo igual a ζ*.

3.4.2 Exemplo

Consideremos o Problema (1.5) com λ = 0,5 e K = 2. Tomemos como dados iniciais

          = 6 . 2 2 2 2 5 . 2 2 2 2 2 . 2 Q ,           = 6 , 2 15 , 2 87 , 1

µ

,           = 85 , 0 5 , 0 3 , 0 l .

Ao longo do algoritmo, representaremos cada subproblema da lista de nós pendentes (nosp) utilizando o vetor ram, cuja iésima coordenada é definida conforme indicado abaixo:

• ram(i) = –1, se a variável xi ainda não tiver sido ramificada;

• ram(i) = 0, se a variável xi tiver sido ramificada para baixo;

Referências

Documentos relacionados

Para eficiência biológica, de forma geral, utiliza-se a comparação de produtividades entre sistemas (monocultivo e cultivo consorciado), sendo avaliados a partir de

2010, avaliando dados biométricos e a sobrevivência de espécies florestais, entre elas a andiroba, em duas condições de plantio a pleno sol e em faixas de enriquecimento de

Este trabalho tem como objetivo geral mapear os processos de negócio visando à análise crítica dos processos envolvidos em uma empresa de pequeno porte do

Outra conclusão que podemos constatar, é que ao realizar as análises de modelo de regressão, a mais válida para as correlações entre as matérias-primas utilizadas e os resultados

Neste contexto o poder no contrato de emprego fica limitado à observância aos direitos fundamentais do cidadão trabalhador, do que decorre o respeito aos princípios

educacao&#34;. Complementando a resposta anterior, 38,5% responderam que todos os livros de literatura eram lidos pela turma. Ao que parece a leitura dos livros de literatura

Apresenta-se neste trabalho uma sinopse das espécies de Bromeliaceae da região do curso médio do rio Toropi (Rio Grande do Sul, Brasil), sendo também fornecida uma chave

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam