Acessibilidade / Reportar erro

Enumeração implícita aplicada à seleção de investimentos

ARTIGOS

Enumeração implícita aplicada à seleção de investimentos

Samsão Woiler

Livre docente da Escola Politécnica da Universidade de São Paulo

A aplicação da programação matemática teve um grande impulso com um trabalho apresentado por WEINGARTNER.(1 1 ) WEINGARTNER, H. M. Mathematical Programming and the Analysis of Capital Budgeting Problems, Englewood Cliffs, Prentice-Hall Inc., 1963. ) Entretanto, por não existirem algoritmos eficientes para resolver problemas de programação linear com variáveis inteiras, o citado trabalho preocupou-se principalmente em desenvolver modelos de programação linear para a seleção de investimentos.

WEINGARTNER(2 (2 ) Idem, ibidem. ) definiu diversos tipos de propostas de investimento: investimentos mutuamente exclusivos, aquêles dos quais se pode selecionar no máximo um; investimentos dependentes, que só podem ser aprovados se os investimentos dos quais êles dependem forem aprovados; e investimentos independentes, que não estão ligados a nenhuma outra proposta. Investimentos mutuamente exclusivos e investimentos dependentes podem ser considerados depois de resolvido o problema de programação linear, mas nos modelos apresentados neste artigo êles serão considerados na formulação inicial. Quando não consideramos a interdependência entre os projetos e empregamos a programação linear, podemos ter dificuldades com as respostas fracionais para investimentos independentes que sejam fundamentais para a aceitação de investimentos dependentes. Um teorema apresentado por WEINGARTNER(3 (3 ) Idem, ibidem. ) mostra que o número máximo de projetos com respostas fracionais numa solução por programação linear é o número de períodos com restrições orçamentárias mais o número de restrições expressando relações de interdependência.

1. Modelos de Programação Matemática

Nesta seção apresentamos um modelo matemático de programação linear com variáveis inteiras bivalentes para resolver o problema da seleção de investimentos; os investimentos que forem aceitos estarão associados à variáveis com valor unitário e os outros a variáveis com valor 0.

No que segue, usaremos a seguinte notação:

a) Ctk é o valor recebido (>0) ou Pago (<0) no fim de período t se aceitamos a proposta k de investimento.

b) Xk é a variável associada à proposta k. Valerá 1 se a proposta fôr aceita e zero no caso contrário.

c) K é o número de propostas que serão analisadas. Evidentemente k = 1, 2,. .., K.

d) n é o número de períodos que utilizaremos na análise dos investimentos. É o horizonte fixado no caso de seleção de investimentos futuros. Portanto, t = O, 1, 2,. .., n.

e) bt são fundos provenientes de fontes diferentes das propostas consideradas e que se encontram disponíveis no fim do período t.

Êles podem provir de investimentos já feitos antes da data de início da seleção em questão ou de outra fonte qualquer, independente das propostas em estudo.

f) cnk é o valor residual da proposta k no fim do n-ésimo período. Ou seja, é o valor presente dos valôres a serem recebidos e pagos após o término do período (n -1) computada a taxa de retôrno da proposta k. Assumiremos em nosso modêlo que cada proposta tenha uma única taxa de retôrno.

g) r é a taxa de juros por período paga pelos bancos.

h) Vt é o saldo no fim do período t.

Inicialmente, apresentaremos um modêlo de programação linear inteira, assumindo que as propostas sejam independentes. Em seguida, mostraremos como acrescentar as restrições de interdependência entre os projetos.

De acordo com a notação considerada anteriormente, podemos descrever o problema da seleção de investimentos com o seguinte modêlo matemático:

maximizar

sujeito a

onde,

O modêlo anterior é muito complexo, e sabendo que r é muito pequeno podemos assumir que os juros pagos pelos bancos não são investidos nas propostas consideradas. Considerando-se a hipótese acima, o modêlo pode ser expresso da seguinte forma:

maximizar

sujeito a

, no início do 1.º período

, no fim do 1.0 período

e

, no fim do período (n-1)

onde,

xk = 0 ou 1.

Além de ser mais simples, o segundo modêlo está formulado apenas em função das variáveis Xk. Entretanto, a segunda formulação tem mais têrmos em cada restrição.

Como os valôres bt são parâmetros independentes das variáveis Xk, podemos simplificar a função-objetivo para

maximizar.

Se as propostas k1, k2,. .., kn forem mútuamente exclusivas, deveremos acrescentar uma restrição do tipo

,

que garantirá que no máximo uma das propostas seja aceita.

Se a aceitação da proposta kd depender da aceitação da proposta ki, acrescentaremos uma restrição do tipo xkd - xki< 0, que impedirá que xkd possa ser igual a 1 com xki igual a zero.

Os símbolos bt e ckt são parâmetros do modêlo e, portanto, deverão ser substituídos antes de aplicarmos os algoritmos para resolver o problema.

O número de períodos (n) e o número de propostas (K) que podem ser examinados pelo modêlo dependem do programa e do computador que se devem usar.

Segundo WEINGARTNER,(4 (4 ) Idem, ibidem. ) o problema da seleção de investimentos foi colocado pela primeira vez na forma de um modelo de programação linear inteira por J. H. LORIE e L. J. SAVAGE. O modêlo básico

por êles desenvolvido foi o seguinte:

maximizar

sujeito a

onde xk = 0 ou 1 para k = 1, 2,. .., K.

A diferença fundamental entre o modêlo acima e os anteriores está na utilização dos coeficientes ck, que podem ser substituídos pelos valôres presentes dos investimentos a uma dada taxa de juros real, se considerarmos os valôres atk deflacionados a preços do instante em que t = 0.

O modêlo de LOBIE e SAVAGE pode ser aplicado a diversos casos práticos, mesmo que introduzamos a hipótese de que todos os parâmetros akt sejam substituídos por valôres positivos. Por exemplo, PETERSON considerou essa hipótese na seleção de propostas de pesquisa e desenvolvimento. No algoritmo descrito a seguir, consideramos essa mesma hipótese(5 (5 ) PETERSEN, C. C. Computational Experience with Variants of the Balas Algorithm Applied to the Selection of R. and D. Projects, in ManagementScience, vol. 13, n.º 9, 1967, p. 736 a 750. ).

2. Algoritmo

Antes de definirmos a notação a ser usada na descrição do algoritmo de enumeração implícita por nós introduzido, recordaremos alguns conceitos encontrados na literatura.

Uma solução parcial fica definida quando se especificam valôres para as variáveis de um subconjunto das n variáveis originais. As variáveis para as quais não forem especificados valôres serão chamadas livres. Cada vez que especificarmos um valor para uma das variáveis livres, aumentaremos a solução parcial. Se especificarmos valôres para tôdas as variáveis livres de uma solução parcial, definiremos uma descendente da mesma.

Nos algoritmos de enumeração implícita procuramos sempre manter um conjunto de soluções parciais cujas descendentes incluam no mínimo uma solução ótima, e através de modificações e testes de eliminação tentamos reduzir êste conjunto até que seus elementos sejam apenas soluções ótimas.

2.1. NOTAÇÃO

O algoritmo descrito nesta seção utiliza o clássico backtracking de GLOVER(6 (6 ) GLOVER, F. A Multiphase Dual Algorithm for the Zero-One Integer Programming Problem, in Operations Research, vol. 13, n.º 6, 1965, p. 879 a 919. ), GEOFFRION(7 (7 ) GEOFFRION, A. M. Integer Programming by Implicit Enumeration and Balas Method, Califórnia, The Rand Corporation, RM-4783 - PR, 1966. ) e outros. Êste método de enumeração exige apenas um vetor de n componentes, u = (u1, u2,. .., un) , para especificar o estado da enumeração implícita.

Sejam xj1 xj2,. .., xjk as k variáveis com valores especificados na solução parcial sq obtida na q-ésima iteração. Faremos uk = jk se xjk = 1 e seu complemento ainda não foi considerado e uk = - jk se xik = 0 ou 1 e seus respectivos complementos já foram considerados no processo de enumeração implícita. Quando os testes de eliminação mostram que sq não tem descendente viável, o elemento positivo mais à direita do vetor u é multiplicado por - 1, e todos os componentes negativos à sua direita são anulados. A enumeração terminará quando todos os componentes forem não-positivos, desde que inicialmente u1; u2,. .., un sejam iguais a zero.

Seja (Sq, 0) a solução obtida quando se consideram as variáveis xj1, xj2,. .., xik iguais aos valores especificados e as variáveis livres iguais a zero.

Antes de apresentarmos o diagrama de bloco e os testes usados na eliminação de soluções parciais, introduziremos a seguinte notação:

é o valor da função-objetivo para a solução (sq, 0).

Desde que CJ>0 seja o mínimo valor que poderemos obter, se considerarmos tôdas as descendentes de sq.

é uma limitação superior para o valor ótimo da função-objetivo, onde 1, 2,. .,n é a melhor solução viável obtida até a q-ésima iteração.

determina se a restrição i está satisfeita ou não; de fato, se algum yi fôr negativo, a solução (sq, 0) não é viável; entretanto, sq pode ter descendentes viáveis.

é a soma de todos coeficientes positivos, tais que xjk é uma variável livre.

onde Ti é o conjunto de todos os índices f, tais que xf é livre, z + Cf < e aif > 0.

Wi = yi + di e wi* = yi + di*

determinam se a restrição i pode ser satisfeita ou não.

Seja i0 um particular índice i, tal que yio < 0, e j0 um particular índice j, tal que xjo é variável livre.

2.2. DIAGRAMA DE BLOCO

No diagrama de bloco que segue o modêlo de LORIE e SAVAGE será considerado na seguinte forma:

minimizar

sujeito a

aij xj> bi, i = 1, 2,. .., m

onde Xj = 0 ou 1, Cj> 0, aij> 0 e bi é irrestrito.

Para passarmos da forma inicial para esta última, temos que considerar:

n = K

Xj = xk, para j = k, k = 1, 2,. .., K

m = T+ 1

aij = atk, para i =t + 1,t=0, 1,. .., T, e j =k, k = 1, 2,. .., K

bi = aij - bt para t = i - 1

2.3. TESTES

Baseados na notação anterior, os seguintes testes foram aplicados para a eliminação da solução parcial sq:

1. Se z + Cj> , podemos eliminar sq, pois não existem descendentes dessa solução parcial que melhorem a solução viável conhecida, 1, 2,. .., n.

2. Se wio < 0, podemos eliminar sq, pois não existem descendentes viáveis dessa solução parcial.

3. Se wio > 0 e wio - aiojo< 0, então devemos ter necessariamente Xjo = 1.

4. Se Tio é vazio, podemos eliminar sq.

5. Consideremos o seguinte problema:

minimizar cf xf,

sujeito a

yio + aif xf> 0, fE Tio, e

Xf = 0 ou 1.

Se Xf1, Xf2,. .., Xfr-1, xfr é uma solução ótima do problema, onde apenas xfr pode ser fração, então

Lio = z + cf1 + cf2 +. .. + cfr-1

é uma limitação inferior para o valor da função-objetivo da melhor descendente da solução parcial Sq. Portanto, se Lio> , podemos eliminar Sq, pois não poderemos obter nenhuma solução melhor que 1; 2,. .., n, se continuarmos usando os valôres fixados para xj1, xj2,. .., xjk.

Testes (2*) e (3*), obtidos quando substituímos Wi por Wi* nos testes (2) e (3), foram introduzidos por BALAS(8 (8 ) BALAS, E. An Additive Algorithm for Solving Linear Programs with Zero - One Variables, in Operations Research, vol. 13, n.º 4, 1965, p. 517 a 546. ).

2.4. RESULTADOS

Utilizando um programa em Algol no Computador Bourroughs 5500 da Universidade de Stanford, resolvemos o problema 5 de PETERSON(9 (9 ) PETERSEN, C. C. Computational Experience with Variants of the Balas Algorithm Applied to the Selection of R. and D. Projects, in ManagementScience, vol. 13, n.º 9, 1967, p. 736 a 750. ), com 10 restrições e 28 vanaveis, em 20,2 segundos. nsse tempo de processamento é menor do que todos os tempos já observados na solução do referido problema conforme podemos observar na tabela 1.

A melhora de 3,5% em relação ao melhor tempo por nós obtido anteriormente pode ser muito importante para problemas de maior dimensão. De fato, o tempo de computador deve ser bem aproveitado, devido ao seu custo elevado.

É importante lembrarmos que os algoritmos que se aplicam a problemas específicos sempre podem resolver com maior eficiência os problemas aos quais se aplicam. O algoritmo em questão é um exemplo dêsse fato.

Algoritmos para problemas mais gerais de seleção de investimentos poderão ser encontrados nos trabalhos por nós apresentados em 1967 e 1968.(10 (10 ) WOILER, S. Implicit Enumeration Algorithms for Discrete Optimization Problems, Department of Industrial Engineering Tech. Report Stanford University, 1967; Programação Linear com Variáveis Inteiras: Algoritmos e Aplicações, tese de Livre Docência, Escola Politécnica, Universidade de São Paulo, 1968. )

Bibliografia

BALAS E. An Additive Algorithm for Solving Linear Programs with Zero - One Variables, in Operations Research, vol. 13, n.º 4, 1965, p. 517 a 546.

GEOFFRION, A. M. Integer Programming by Implicit Enumeration and Balas Method, Califórnia, The Rand Corporation, RM-4783 - PR, 1966.

GLOVER, F. A. Multiphase Dual Algorithm for the Zero - One Integer Programming Problem, in Operations Research, vol. 13, n.º 6, 1965, p. 879 a 919.

PETERSEN, C. C. Computational Experience with Variants of the Balas Algorithm Applied to the Selection of R. and D. Projects, in Management Science,vol. 13, n.º 9, 1967, p. 736 a 750.

WEINGARTNER, H.M. Mathematical Programming and the Analysis of Capital Budgeting Problems, Englewood Cliffs, Prentice-Hall Inc.,-1963.

WOILER, S. Implicit Enumeration Algorithms for Discrete Optimization Problems, Department of Industrial Engineering Tech. Report Stanford University, 1967.

WOILER, S. Programação Linear com Variáveis Inteiras: Algoritmos e Aplicações, tese de Livre Docência, Escola Politécnica, Universidade de São Paulo, 1968.

  • GEOFFRION, A. M. Integer Programming by Implicit Enumeration and Balas Method, Califórnia, The Rand Corporation, RM-4783 - PR, 1966.
  • WEINGARTNER, H.M. Mathematical Programming and the Analysis of Capital Budgeting Problems, Englewood Cliffs, Prentice-Hall Inc.,-1963.
  • WOILER, S. Implicit Enumeration Algorithms for Discrete Optimization Problems, Department of Industrial Engineering Tech. Report Stanford University, 1967.
  • WOILER, S. Programação Linear com Variáveis Inteiras: Algoritmos e Aplicações, tese de Livre Docência, Escola Politécnica, Universidade de São Paulo, 1968.
  • 1
    ) WEINGARTNER, H. M.
    Mathematical Programming and the Analysis of Capital Budgeting Problems, Englewood Cliffs, Prentice-Hall Inc., 1963.
  • (2
    ) Idem, ibidem.
  • (3
    ) Idem, ibidem.
  • (4
    )
    Idem, ibidem.
  • (5
    ) PETERSEN, C. C. Computational Experience with Variants of the Balas Algorithm Applied to the Selection of R. and D. Projects,
    in ManagementScience, vol. 13, n.º 9, 1967, p. 736 a 750.
  • (6
    ) GLOVER, F. A Multiphase Dual Algorithm for the Zero-One Integer Programming Problem,
    in Operations Research, vol. 13, n.º 6, 1965, p. 879 a 919.
  • (7
    ) GEOFFRION, A. M.
    Integer Programming by Implicit Enumeration and Balas Method, Califórnia, The Rand Corporation, RM-4783 - PR, 1966.
  • (8
    ) BALAS, E. An Additive Algorithm for Solving Linear Programs with Zero - One Variables,
    in Operations Research, vol. 13, n.º 4, 1965, p. 517 a 546.
  • (9
    ) PETERSEN, C. C. Computational Experience with Variants of the Balas Algorithm Applied to the Selection of R. and D. Projects,
    in ManagementScience, vol. 13, n.º 9, 1967, p. 736 a 750.
  • (10
    ) WOILER, S.
    Implicit Enumeration Algorithms for Discrete Optimization Problems, Department of Industrial Engineering Tech. Report Stanford University, 1967;
    Programação Linear com Variáveis Inteiras: Algoritmos e Aplicações, tese de Livre Docência, Escola Politécnica, Universidade de São Paulo, 1968.
  • Datas de Publicação

    • Publicação nesta coleção
      02 Jul 2015
    • Data do Fascículo
      Dez 1969
    Fundação Getulio Vargas, Escola de Administração de Empresas de S.Paulo Av 9 de Julho, 2029, 01313-902 S. Paulo - SP Brasil, Tel.: (55 11) 3799-7999, Fax: (55 11) 3799-7871 - São Paulo - SP - Brazil
    E-mail: rae@fgv.br