Вы находитесь на странице: 1из 209

Universidade do Estado do Rio de Janeiro

Faculdade de Administrao e Finanas


Departamento de Cincias Contbeis
Aula 6
Business Intelligence e Minerao de Dados
Programao
Linear com o programa R
Programao
Inteira Jos Francisco Moreira Pessanha
Instituto de Matemtica e Estatstica - Uerj
Anlise professorjfmp@hotmail.com
Envoltria de
Dados

Mquina de Vetor
de Suporte

Algoritmo
Gentico

Rio de Janeiro, 24 de Junho de 2017


Programao linear

Programao linear inteira

Anlise Envoltria de dados

Mquina de Vetor de Suporte

Algoritmos genticos
Programao linear
Programao linear
Business management must always, in every decision and action, put
economic performance first
Peter Drucker

Diversas decises tomadas no dia-a-dia das organizaes dizem respeito


a qual combinao de recursos produz o resultado timo:

Qual o mix de produtos a serem fabricados de forma a atingir o maior


lucro ?

Qual a combinao de investimentos que maximiza o retorno de uma


carteira ?

Qual composio de insumos corresponde ao custo mnimo ?

Quais rotas geram maior economia?

A programao linear ajuda a identificar a combinao de recursos que


otimiza algum critrio (minimizar custos ou maximizar lucros) e satisfaz
as limitaes dos recursos disponveis e restries operativas.
Problema de Programao Linear - PPL
Funo objetivo, por exemplo, o custo total

Minimizar f x1 , x2 ,..., xn d c1 x1 c2 x2 cn xn
x1, x2 ,..., xn
s.a. a11 x1 a12 x2 a1n xn b1
m restries de
a21 x1 a22 x2 a2 n xn b2 igualdade ou
Definir os valores das desigualdade
...
variveis de deciso (lineares)
x1,...,xn que minimizam am1 x1 am 2 x2 amn xn bm
o custo total
x1 0 , x2 0 ,, xn 0 n variveis no negativas

Pressupostos do modelo:

Proporcionalidade: A contribuio de cada atividade xj para o valor da funo objetivo


proporcional ao nvel dessa atividade.
Aditividade: os relacionamentos entre as variveis so sempre adies ou subtraes..
Divisibilidade: As variveis de deciso xj podem assumir valores fracionrios.
Determinismo ou certeza: Os parmetros do modelo (a,b,c,d) so constantes conhecidas.
Exemplo 1: Fabricante de piscinas (RAGSDALE, 2004)
SITUAO
Um fabricante de piscinas manufatura e instala dois tipos de piscinas de fibra de
vidro: Aqua-Spa e Hydro-Lux, ambas acompanhadas de um mesmo modelo de
bomba.

OBJETIVO
O fabricante deve decidir quanto produzir de cada tipo de piscina no prximo
ciclo de produo.

DADOS
S h 200 bombas no estoque
Cada Aqua-Spa requer 9 horas de trabalho e 12 ft de tubulao de fibra de vidro
Cada Hydro-Lux requer 6 horas de trabalho e 16 ft de fibra de vidro
O gerente tem 1.566 horas de trabalho e 2.880 ft de fibra de vidro disponveis
Cada Aqua-Spa vendida gera um lucro de $ 350,00
Cada Hydro-Lux rende $ 300,00 de lucro
O fabricante otimista e acredita que vender todas as piscinas produzidas

PROBLEMA
Quanto produzir de cada tipo de piscina de forma
a maximizar a receita das vendas ?
Exemplo 1: Soluo Grfica Max 350x1 300 x2
x1 , x2
x1 x2 200
Problema de Programao Linear - PPL s.a.
9 x1 6 x2 1566
12 x1 16 x2 2880
x1 0
Restrio da jornada de trabalho x2 0

Restrio do estoque de bombas

Restrio da disponibilidade
da fibra de vidro
CONJUNTO DE
POSSIBILIDADES DE
PRODUO OU
CONJUNTO VIVEL
Exemplo 1: Soluo grfica

Os vrtices so as solues em pontos extremos


(podem ser viveis ou inviveis).

As solues viveis em pontos extremos so


adjacentes e constituem as solues de interesse.

Para encontrar a soluo tima basta pesquisar entre


as solues viveis em pontos extremos.

Solues viveis em
pontos extremos

60.900
Exemplo 1: Soluo grfica
Dada uma soluo vivel em um vrtice, a busca pela soluo tima deve
responder duas perguntas:
Essa soluo tima ?
Caso, no seja tima, como determinar uma outra soluo vivel melhor ?

Teste de otimalidade: Se uma soluo vivel em ponto


extremo no tiver nenhuma soluo vivel adjacente que
seja melhor, ento esta soluo uma soluo tima.

122 Aqua-Spa
78 Hydro.Lux
lucro = $ 66.100

Soluo tima

0
60.900
Algoritmo Simplex

Desenvolvido em 1947 por George Dantzig para


resolver problemas de programao linear.

Algoritmo algbrico iterativo que percorre os


vrtices de forma inteligente at encontrar uma
soluo tima.
George Dantzig
1914-2005

Soluo inicial (inicializao)

A soluo Sim, ento pare,


Teste de otimalidade
tima soluo encontrada

Aponte uma nova soluo No


melhor que a anterior
Programao linear e Algoritmo Simplex

Mathematical Programming The State of the Art, Bonn, 1982

https://link.springer.com/chapter/10.1007%2F978-3-642-68874-4_4#page-2
Exemplo 1: Resoluo pelo algoritmo Simplex

PPL PPL na forma padro


Max 350x1 300 x2 Min 350x1 300 x2
x1 , x2 x1 , x 2

s.a.
x1 x2 200
s.a. x1 x2 s1 200
9 x1 6 x2 1566 9 x1 6 x2 s2 1566
12 x1 16 x2 2880 12 x1 16 x2 s3 2880
x1 0 x1 , x2 0
x2 0 s1 , s2 , s3 0 Variveis de folga

A funo objetivo a minimizao


Restries de igualdade
Variveis de deciso no negativas
Min 350x1 300 x2
x1 , x 2

s.a. x1 x2 s1 200 Sistema de equao


9 x1 6 x2 s2 1566 lineares com 3 equaes e
5 cinco variveis
12 x1 16 x2 s3 2880
x1 , x2 0
s1 , s2 , s3 0
Sistema com 3 equaes e 3 variveis
Exemplo 1: Resoluo pelo algoritmo Simplex

Min 350x1 300 x2


x1 , x 2

s.a. x1 x2 s1 200
9 x1 6 x2 s2 1566
12 x1 16 x2 s3 2880
x1 , x2 0
s1 , s2 , s3 0

ESTRATGIA DE SOLUO
Fixar duas variveis em zero e resolver o sistema para encontrar os valores
das trs variveis restantes.

Variveis fixadas em zero so as variveis no bsicas

As demais variveis so bsicas

O Simplex testa diferentes combinaes das variveis bsicas e no bsicas


at encontrar a soluo tima
Exemplo 1: Resoluo pelo algoritmo Simplex

Min 350x1 300 x2


x1 , x 2

s.a. x1 x2 s1 200
9 x1 6 x2 s2 1566
12 x1 16 x2 s3 2880
x1 , x2 0
s1 , s2 , s3 0

Soluo trivial: todas as variveis de deciso so fixadas em zero (x1 , x2 = 0)

Receita = 350 x1 300 x2 0 Receita =0


x1 x2 s1 200 s1 = 200
soluo
9 x1 6 x2 s2 1566 s2 = 1566
12 x1 16 x2 s3 2880 s3 = 2880
Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita -350 -300 0 0 0 0

s1 1 1 1 0 0 200

s2 9 6 0 1 0 1566

s3 12 16 0 0 1 2880

Variveis no bsicas Variveis bsicas


Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX Soluo trivial


x1 x2 s1 s2 s3

Receita -350 -300 0 0 0 0

s1 1 1 1 0 0 200

s2 9 6 0 1 0 1566

s3 12 16 0 0 1 2880

Variveis no bsicas Variveis bsicas


Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita -350 -300 0 0 0 0

s1 1 1 1 0 0 200

s2 9 6 0 1 0 1566

s3 12 16 0 0 1 2880

Receita = 350 x1 + 300 x2 , quanto maior x1 maior a receita (x1 entre na base).
Alguma varivel deve sair da base.
Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita -350 -300 0 0 0 0

s1 1 1 1 0 0 200

s2 9 6 0 1 0 1566

s3 12 16 0 0 1 2880

x1 x2 s1 200 x1 200 / 1 200


Limites para x1 9 x1 6 x2 s2 1566 x1 1566 / 9 174
12 x 16 x s 2880 x 2880 / 12 240
Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita -350 -300 0 0 0 0

s1 1 1 1 0 0 200

9 s2 9 6 0 1 0 1566

s3 12 16 0 0 1 2880

x1 mnimo na segunda restrio


s1 = 200-174 = 26
9 x1 6 x2 s2 1566 x1 1566 / 9 174 x1 = entra na base s3 = 2880-12*174 = 792
x2 = 0 s2 = 0 s2 = sai da base Receita = 350*174 =60900
Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita -350 -300 0 0 0 0

s1 1 1 1 0 0 200

x1 1 6/9 0 1/9 0 174

s3 12 16 0 0 1 2880
Operaes elementares
Multiplica a segunda restrio por 350 e soma com a primeira linha
Multiplica a segunda restrio por -1 e soma com a segunda linha
Multiplica a segunda restrio por -12 e soma com a ltima linha
Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita 0 -600/9 0 350/9 0 60900

s1 0 3/9 1 -1/9 0 26

x1 1 6/9 0 1/9 0 174

s3 0 72/9 0 -12/9 1 792


s1 = 26 Receita = -600/9*0 + 350/9*0 + 60900
Nova soluo bsica x1 = 174 Receita = 60900
s3 = 792
Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita 0 -600/9 0 350/9 0 60900

s1 0 3/9 1 -1/9 0 26

x1 1 6/9 0 1/9 0 174

s3 0 72/9 0 -12/9 1 792

Receita = 600/9 x2 - 350/9 s2 + 60900, quanto maior x2 maior a receita (x2 entra na base)
Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita 0 -600/9 0 350/9 0 60900

s1 0 3/9 1 -1/9 0 26

x1 1 6/9 0 1/9 0 174

s3 0 72/9 0 -12/9 1 792


3 / 9 x2 s1 1 / 9 s2 26 x2 78
Limites para x1 x1 6 / 9 x2 1 / 9 s2 174 x2 261
72 / 9 x2 12 / 9 s2 s3 792 x2 99
Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita 0 -600/9 0 350/9 0 60900


3
s1 0 3/9 1 -1/9 0 26
9
x1 1 6/9 0 1/9 0 174

s3 0 72/9 0 -12/9 1 792


x2 mnimo na primeira restrio x1 = 174 - 6*78/9 = 122
3 / 9 x2 s1 1 / 9 s2 26 x2 78 x2 = entra na base s3 = 792-72*78/9 = 168
s1 = 0 s2 = 0 s1 = sai da base Receita = 600*78/9 + 60900 = 66100
Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita 0 -600/9 0 350/9 0 60900

x2 0 1 3 -1/3 0 78

x1 1 6/9 0 1/9 0 174

s3 0 72/9 0 -12/9 1 792


Operaes elementares
Multiplica a primeira restrio por 600/9 e soma com a primeira linha
Multiplica a primeira restrio por 6/9 e soma com a terceira linha
Multiplica a primeira restrio por 72/9 e soma com a ltima linha
Exemplo 1: Resoluo pelo algoritmo Simplex

TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita 0 0 1800/9 550/9 0 66100

x2 0 1 3 -1/3 0 78

x1 1 0 -2 1/3 0 122

s3 0 0 -24 12/9 1 168


x1 = 122 Receita = 1800/9*0 + 550/9*0 + 66100
Nova soluo bsica x2 = 78 Receita = 66100
s3 = 168
Exemplo 1: Resoluo pelo algoritmo Simplex
122 Aqua-Spa e 78 Hydro-Lux
Receita mxima
TABLEAU SIMPLEX

x1 x2 s1 s2 s3

Receita 0 0 1800/9 550/9 0 66100

x2 0 1 3 -1/3 0 78

x1 1 0 -2 1/3 0 122

s3 0 0 -24 12/9 1 168

Receita = -1800/9 s1 -550/9 s2 + 66100, qualquer aumento em s1 e s2 reduz a receita


Algoritmo encontrou a soluo tima
Pacotes para programao linear e inteira no R

2 pacotes:

lpSolve

Rsymphony
Exemplo 1: Soluo com o R

Lucros resultantes da
venda de uma piscina
PPL Programa R
Max 350x1 300 x2 obj=c(350,300)
x1 , x2
matrest=rbind(c(1,1),c(9,6),c(12,16))
x1 x2 200 dir=c("<=","<=","<=")
s.a.
9 x1 6 x2 1566 RHS=c(200,1566,2880)
12 x1 16 x2 2880 library(lpSolve)
resposta=lp("max",obj,matrest,dir,RHS)
x1 0
x2 0
122 Aqua-Spa
Recursos 78 Hydro.Lux
utilizados
Disponibilidade de recursos Mximo lucro total
200 bombas
1.566 horas de trabalho
2.880 ft de fibra de vidro
Teoria da Dualidade

Teorema da dualidade
Valor timo da funo objetivo
no primal igual ao valor timo
da funo objetivo no dual

PPL Primal PPL Dual

Max 350x1 300 x2 Min 2001 1566 2 2880 3


x1 , x2 1 , 2 , 3
s.a. x1 x2 200 s.a. 1 9 2 12 3 350
9 x1 6 x2 1566 1 6 2 16 3 300
12 x1 16 x2 2880 1 0
x1 0 2 0
x2 0 3 0
Exemplo 1: Soluo do problema dual com R

Programa R
obj=c(350,300) Calcula variveis duais
matrest=rbind(c(1,1),c(9,6),c(12,16))
dir=c("<=","<=","<=")
RHS=c(200,1566,2880)
library(lpSolve)
resposta=lp("max",obj,matrest,dir,RHS,compute.sens=1)

Uma bomba adicional


no estoque aumenta
o licro em $200 Min 2001 1566 2 2880 3
1 , 2 , 3
s.a. 1 9 2 12 3 350
1 6 2 16 3 300
Um p (ft) 1 0
adicional de
Uma hora de trabalho fibra de vidro 2 0
3
no aumenta
adicional aumenta o
o lucro 0
licro em $16,7
Exemplo 2: Aplicao financeira (LACHTERMACHER, 2006)
Uma empresa de investimentos gerencia recursos de terceiros atravs da escolha
de carteiras de investimento para diversos clientes, baseados em ttulos de
diversas empresas. Um de seus clientes exige que:

No mais de 25% do total seja aplicado em um nico investimento.


Mais de 50% do total deve ser aplicado em ttulos de maturidade de mais de
10 anos.
O total aplicado em ttulos de alto risco deve ser no mximo de 50% do total
investido.

A tabela a seguir mostra os dados dos ttulos selecionados

Retorno Anos para Risco


Anual Vencimento
Ttulo 1 8,7% 15 1- Muito Baixo
Ttulo 2 9,5% 12 3- Regular
Ttulo 3 12,0% 8 4- Alto
Ttulo 4 9,0% 7 2- Baixo
Ttulo 5 13,0% 11 4- Alto
Ttulo 6 20,0% 5 5- Muito Alto
Exemplo 2: Variveis de deciso e funo objetivo
Construo do problema de programao linear

Variveis de Deciso
P1 Parcela do total aplicado no ttulo do tipo 1
P2 Parcela do total aplicado no ttulo do tipo 2
P3 Parcela do total aplicado no ttulo do tipo 3
P4 Parcela do total aplicado no ttulo do tipo 4
P5 Parcela do total aplicado no ttulo do tipo 5
P6 Parcela do total aplicado no ttulo do tipo 6

Funo-objetivo
Exemplo 2: Restries

Restrio de Oramento

Restries de Mximo de Aplicao por Tipo de Ttulo


Exemplo 2: Restries

Restries de Mnimo de Aplicao em Ttulo de


Maturidade maior que 10 anos.

Restries de Mximo de Aplicao em Ttulo de Alto


Risco.
ou
Exemplo 2: PPL

Problema de programao linear

s.a.
Restrio de oramento

Restrio para o mnimo aplicado em


ativos com maturidade acima de 10 anos

Restrio para o mximo aplicado


em ativos de alto risco

Restrio para o mximo aplicado em


cada ativo

Soluo: 25% no ttulo 2 , 25% no ttulo 4 , 25% no ttulo 5 e 25% no ttulo 6


Exemplo 2: PPL em notao matricial

Problema de
programao linear
Funo objetivo

s.a.

Restries
Exemplo 2: Soluo com o R

Programa em R

library(lpSolve)

cfobj=c(0.087,0.095,0.12,0.09,0.13,0.2) Restries

rest1=rep(1,6)
rest2=c(1,1,0,0,1,0)
rest3=c(0,0,1,0,1,1)
rest4=diag(6)
mat_rest=rbind(rest1,rest2,rest3,rest4)

rhs=c(1,0.5,0.5,rep(0.25,6))

dir=c("=",">=","<=",rep("<=",6))

resposta=lp("max",cfobj,mat_rest,dir,rhs,scale=0)
Exemplo 2: Soluo com o R

Programa em R
# soluo
resposta$solution

# valor da funo objetivo Soluo tima


resposta$objval 25% na aplicao 2
25% na aplicao 4
25% na aplicao 5
25% na aplicao 6

Mxima taxa de retorno da carteira


12,875%
Exemplo 3: Problema da dieta
Proposto por Stigler em 1945
https://resources.mpi-inf.mpg.de/departments/d1/teaching/ws14/Ideen-
der-Informatik/Stigler-CostofSubsistence.pdf

Foi uma das primeiras aplicaes do algoritmo


Simplex

Para um homem pesando 70 quilos, quanto de George Stigler


cada um dos 77 alimentos recomendados deve 1911 - 1991
ser consumido diariamente para que a ingesto Nobel de Economia 1982
de nove nutrientes seja pelo menos igual ao
sugerido pelo Conselho Nacional de Pesquisa em
1943, com o custo da dieta sendo mnimo?
Nutrientes da dieta tima

Dieta tima
menor custo
$ 39,93

https://en.wikipedia.org/wiki/Stigler_diet
Exemplo 3: Problema da dieta (Stigler, 1945)
A formulao do problema de programao linear para resolver o
problema da dieta com os 77 alimentos pode ser encontrada no Google
Research Blog que ilustra o Glop (Google Linear Optimization Package)

https://research.googleblog.com/2014/09/sudoku-linear-optimization-and-ten-cent.html

Link para acesar os dados e a


formulao do problema da dieta
https://docs.google.com/spreadsheets/d/1XWJLkAwch5GXAt_7zOFDcg8Wm8Xv29_8PWuuW15qmAE/edit#gid=0

Os dados disponveis no blog do Google foram salvos na planilha


dieta.xls.

O custo anual 365 vezes o custo mnimo dirio obtido pelo problema de
programao linear.
Exemplo 3: Problema da dieta (Stigler, 1945)
https://docs.google.com/spreadsheets/d/1XWJLkAwch5GXAt_7zOFDcg8Wm8Xv29_8PWuuW15qmAE/edit#gid=0

77 alimentos (cada alimento uma coluna)

Coeficientes da funo objetivo todos = 1

Funo objetivo, mnimo custo dirio

Variveis de
deciso, despesas
em dlar em cada
alimento

nutrientes Quantidade Valor nutritivo (em cada nutriente)


por dlar gasto com wheat flour
(cada nutriente mnima
(enriched)
sugerida para
uma linha) cada
Em 1 dlar de wheat flour h
1411 gramas de ptotena
nutriente
Exemplo 3: Problema da dieta (Stigler, 1945)
# leitura de dados
library(excel.link)
setwd("c:/curso R/aula6/2017")
xl.workbook.open("dieta.xlsx")
xl.sheet.activate(1)

# monta PPL
matriz=xl[d5:cb13]
RHS=xl[b5:b13]
dir=rep(">=",length(RHS))
obj=rep(1,dim(matriz)[2])

# resolve o PPL
resposta=lp("min",obj,matriz,dir,RHS)
resposta$objval
names(resposta$solution)=xl[d1:cb1] # alimentos
resposta$solution[which(resposta$solution>0)]
nutrientes=data.frame(as.matrix(matriz)%*%as.matrix(resposta$solution))
rownames(nutrientes)=xl[a5:a13]
colnames(nutrientes)="nutrientes"
print(nutrientes)
Exemplo 4: Problema de transporte

Frank Lauren Hitchcock


1875 - 1957

Proposto por Hitchcock em 1941

The distribution of a product


from several sources to
numerous localities, MIT Journal
of Mathematics and Physics
20:224230

http://onlinelibrary.wiley.com/doi/10.1002/sapm1941201224/abstract
Exemplo 4: Problema de transporte
Rede logstica: m centros de produo suprem n centros de consumo

Dados:
Custos de transporte entre os centros de produo e os centros de consumo (c)
Demanda em cada centro de consumo (d)
Capacidade mxima de produo em cada centro de suprimento (a)

Variveis de deciso: Quantidade transportada de cada centro de suprimento at


cada centro de consumo (x)

Objetivo: Determinar o programa de distribuio com menor custo de transporte.


M Centros de produo N Centros de consumo

Capacidade de produo a1
c11 Demanda d1

c1n c12
c21 c22
Capacidade de produo a2 Demanda d2
c2n
cm1 cm2
Capacidade de produo am Demanda dn
c
Exemplo 4: Problema de transporte (ARENALES et al, 2007)
Uma companhia de bebidas tem 2 centros de produo (Araraquara e
So Jos dos Campos) e 3 mercados consumidores principais (So
Paulo , Belo Horizonte e Rio de Janeiro).

O custo unitrio de se transportar uma unidade do produto de cada


centro de produo a cada mercado consumidor dada na tabela abaixo:

Custos unitrios (R$ por unidade transportada)


Centro de Mercado Suprimento
suprimento So Paulo (1) Belo Horizonte (2) Rio de Janeiro (3) disponvel
Araraquara (1) 4 2 5 800
So Jos dos
11 7 4 1000
Campos (2)
Demanda dos
500 400 900
mercados

Varivel de deciso: quantidade do produto a ser enviada do centro de


suprimento i ao mercado j (xij ).

Objetivo: definir uma estratgia de transporte com custo mnimo.


Exemplo 4: Problema de transporte
Problema de Programao Linear

Min 4x11 + 2x12 + 5x13 + 11x21 + 7x22 + 4x23 Custo total

s.a.

x11 + x12 + x13 800 Restrio de oferta em Araraquara


x21 + x22 + x23 1000 Restrio de oferta em So Jos dos Campos

x11 + x21 = 500 Restrio de demanda em So Paulo


x12 + x22 = 400 Restrio de demanda em Belo Horizonte
x13 + x23 = 900 Restrio de demanda no Rio de Janeiro

x11 0
x12 0
x13 0 Resolva o problema de
x21 0 transporte com o R
x22 0
x23 0
Exemplo 4: Problema do transporte
capacidade_oferta=c(800,1000)
oferta demanda
demanda=c(500,400,900)
nos_oferta=length(capacidade_oferta) 500 1
nos_demanda=length(demanda) 1 800
400 2
# custos das rotas:
custos=rbind(c(4,2,5),c(11,7,4)) 2 1000
900 3
# X(n oferta , n demanda)
nomes_variaveis=c()
obj=c() # coeficientes da funo objetivo
no_from=c() # n oferta
no _to=c() # n demanda
for (i in 1:nos_oferta) {
obj=c(obj,custos[i,])
no_from=c(no_from,rep(i,nos_demanda))
for (j in 1:nos_demanda) {
no_to=c(no_to,j)
nomes_variaveis=c(nomes_variaveis,paste("X",i,j,sep=""))
}
}
Exemplo 4: Problema de transporte
# restries de oferta
rest_oferta=matrix(0,nos_oferta,length(obj))
for (i in 1:nos_oferta) {
rest_oferta[i,which(no_from==i)]=1
}

# restries de damanda
rest_demanda=matrix(0,nos_demanda,length(obj))
for (i in 1:nos_demanda) {
for (j in 1:nos_oferta) {
rest_demanda[i,which(no_to==i)]=1
}
}

# matriz de restries
matriz=rbind(rest_oferta,rest_demanda)
Exemplo 4: Problema de transporte
# RHS
RHS=c(capacidade_oferta,demanda)

# tipos de restries
dir=c(rep("<=",nos_oferta),rep("=",nos_demanda))

# resolve PL
library(lpSolve)
resposta=lp("min",obj,matriz,dir,RHS,scale=0,compute.sens=T)
names(resposta)

Soluo tima 0 indica que o PL convergiu

Xij
Custo mnimo
Exemplo 4: Problema de transporte

Soluo tima

oferta demanda
500
500 1
1 800 300
100 400 2
2 1000
900 900 3
Exemplo 5: Otimizao de fluxo de caixa

ROBICHEK, A. A.; TEICHROEW, D.; JONES, J. M.


Optimal short term financing decision.
Management Science, v. 12, n. 1, p. 1-36, 1965.
Abstract
The cash requirements of many firms follow a seasonal pattern. These firms may obtain short term cash to
cover their seasonal needs from a variety of sources: e.g., lines of credit, delaying of accounts payable,
term loans, pledging or factoring receivables, etc. Each of these alternative sources of cash may have
different costs as well as special restrictions. Given the set of cash requirements and the costs and
constraints relating to alternative sources of cash, it is often difficult to determine the optimum manner of
meeting the short-term cash needs. In this paper, this short-term financing problem under certainty is
formulated as a mathematical model and solved through the use of a general linear programming routine.
Optimum solutions are determined for a number of cases and the general form of the solution is discussed.
The paper includes an analysis based on marginal costs and a discussion of the short-term financing
problem under uncertainty.
Exemplo 5: Otimizao de fluxo de caixa (RAGSDALE, 2004)
Uma cadeia de restaurantes deseja construir uma nova loja. Espera-se
que a construo do restaurante demore 6 meses e custe R$ 800.000.
A empresa deseja criar um fundo para construo a fim de custear a
nova instalao.

O contrato com a construtora exige pagamentos de duas parcelas de


R$ 250.000,00 ao final do 2 e do 4 meses e uma parcela de R$
300.000,00 ao final da construo no 6 ms.

A empresa dispe de 4 oportunidades de investimentos que podem ser


utilizadas a fim de criar o fundo de construo.

A gerncia da empresa deseja determinar um plano de investimento


que permita a programao necessria de pagamentos enquanto
coloca o mnimo de dinheiro no fundo de construo.

A deciso bsica consiste em definir a quantia que deve ser aplicada


em cada alternativa de investimento durante cada perodo.
Exemplo 5: Otimizao de fluxo de caixa
Oportunidades de investimento investimentos

Meses de Retorno ao
Ms Disponvel
Investimento Durao Final do
para aplicao Investimento
Da aplicao

Tipo A 1,2,3,4,5,6 1 1,8%

Tipo B 1,3,5 2 3,5%

Tipo C 1,4 3 5,8%

Tipo D 1 6 11,0%

12 Variveis de Deciso
Ai Valor aplicado no ms i na aplicao A (i=1,2,3,4,5,6)
Bi Valor aplicado no ms i na aplicao B (i=1,3,5)
Ci Valor aplicado no ms i na aplicao C (i=1,4)
Di Valor aplicado no ms i na aplicao D (i=1)
Exemplo 5: Otimizao de fluxo de caixa
A empresa deseja minimizar a quantia inicial de dinheiro aplicada no
fundo de construo e que junto com os rendimentos dos investimentos
cubra os pagamentos exigidos sem a injeo adicional de dinheiro.

Funo Objetivo

Restries para cada ms i, para i=2,...,7


Exemplo 5: Otimizao de fluxo de caixa
Fluxo de caixa Cada n um ms
e cada arco um
D1 investimento

C1 B3 C4 B5
B1

1 2 3 4 5 6 7
A1 A2 A3 A4 A5 A6
$ 250 $ 250 $ 300
Meses de Retorno ao
Ms Disponvel
Investimento Durao Final do
para aplicao Investimento
Da aplicao
Tipo A 1,2,3,4,5,6 1 1,8%
Tipo B 1,3,5 2 3,5%
Tipo C 1,4 3 5,8%
Tipo D 1 6 11,0%
Exemplo 5: Otimizao de fluxo de caixa
Fluxo de caixa Para cada n (ms) deve ser
D1 includa uma restrio do tipo:
Entradas Sadas = 0

C1 B3 C4 B5 Cada arco uma


B1 varivel

1 2 3 4 5 6 7
A1 A2 A3 A4 A5 A6

$ 250 $ 250 $ 300


Ms 2:
Ms 3:
Conjunto de
Ms 4:
restries
Ms 5:
Ms 6:
Ms 7:
Exemplo 5: Otimizao de fluxo de caixa
Resolva o problema de programao linear no R
minimizar o valor alocado na data
zero, i.e., incio do ms 1, para o
pagamento da obra.

Restries do fluxo de caixa (todo retorno reinvestido)

Fluxo de caixa para o ms 2


Fluxo de caixa para o ms 3
Fluxo de caixa para o ms 4
Fluxo de caixa para o ms 5
Fluxo de caixa para o ms 6
Fluxo de
caixa para o
ms 7
Restries de no negatividade
A, B, C, D 0
Exemplo 5: Otimizao de fluxo de caixa
# DADOS
num_periodos=7 # meses
desembolsos=c(250,250,300)
meses_pagamentos=c(3,5,7)
num_titulos=4
prazos=c(1,2,3,6)
juros=c(0.018,0.035,0.058,0.11)

# meses para aplicao e retirada


titulos=c()
resgate=c() # no_to
aplicacao=c() # no_from
nomes_titulos=c()
for (i in 1:num_titulos) {
aux=seq(1,(num_periodos-1),prazos[i]) # meses para aplicar no titulo i
nomes_titulos=c(nomes_titulos,paste(LETTERS[i],aux,sep=""))
titulos=c(titulos,rep(i,length(aux))) # ttulo em cada varivel do PL
aplicacao=c(aplicacao,aux) # meses para aplicar nos titulos
resgate=c(resgate,(aux+prazos[i])) # meses para resgatar os titulos
}
num_variaveis=length(titulos) # nmero de variveis
Exemplo 5: Otimizao de fluxo de caixa
# monta equaes de balano em cada perodo do fluxo de caixa
eqbalancos=matrix(0,num_periodos,length(titulos))
for (i in 1:num_periodos) {
iaplica=which(aplicacao==i) # ms da aplicao igual ao ms i
iresgate=which(resgate==i) # ms do resgate igual ao ms i
if (length(iresgate)>0) eqbalancos[i,iresgate]=1+juros[titulos[iresgate]]
if (length(iaplica)>0) eqbalancos[i,iaplica]=-1
}
colnames(eqbalancos)=nomes_titulos

Ms 1

Ms 7
Exemplo 5: Otimizao de fluxo de caixa
# restries equaes de balano nos meses 2 at 7
restricoes=eqbalancos[-1,]

# RHS
RHS=rep(0,dim(eqbalancos)[1])
RHS[meses_pagamentos]=desembolsos
RHS=RHS[-1]

# tipos das restricoes


dir=rep("=",dim(restricoes)[1])
Exemplo 5: Otimizao de fluxo de caixa
# coeficientes da funo objetivo
obj=-eqbalancos[1,]
names(obj)=nomes_titulos

# resolve o PL
library(lpSolve)
resposta=lp("min",obj,restricoes,dir,RHS,scale=0,compute.sens=T)

# soluo
resposta$objval Capital inicial necessrio

x=resposta$solution
names(x)=nomes_titulos
cbind(x) Programao da aplicao
do capital inicial
Exemplo 5: Otimizao de fluxo de caixa

500 284

1 2 3 4 5 6 7
241 246 246
$ 250 $ 250 $ 300
No ms 1:
aplique $241 em A
aplique $500 em C

Programao tima da No ms 2:
aplicao do capital inicial aplique $246 em A
mnimo de $741
No ms 4
aplique $246 em A
aplique $284 em C
Programao linear inteira
https://www.jstor.org/stable/1910129?seq=1#page_scan_tab_contents

http://www.math.uiuc.edu/documenta/vol-
ismp/38_cook-bill.pdf
X2
Solues inteiras viveis
3

0
0 1 2 3 4 X1
Exemplo 6: Escala de servio (LACHTERMACHER, 2006)

Uma franquia deseja estabelecer o nmero de funcionrios de horrio integral


que deve contratar para iniciar suas atividades.

A franquia deve manter um nmero mnimo de funcionrios em cada dia da


semana, conforme a tabela a seguir.

Dia da N. Mnimo Dia da N. Mnimo


Semana Empregados Semana Empregados
2 18 6 14
3 12 Sbado 16
4 15 Domingo 11
5 19

O sindicato dos empregados mantm um acordo sindical que determina que


cada empregado deve trabalhar cinco dias consecutivos e folgar dois dias, e
que as franquias devem ter apenas empregados em regime de horrio integral.
Formule o problema de programao linear inteira e determine o nmero timo
de empregados.
Exemplo 6: Variveis de deciso e funo objetivo

Variveis de deciso
N1 n de funcionrios que iniciam atividades no domingo
N2 n de funcionrios que iniciam atividades na 2 feira
N3 n de funcionrios que iniciam atividades na 3 feira
N4 n de funcionrios que iniciam atividades na 4 feira
N5 n de funcionrios que iniciam atividades na 5 feira
N6 n de funcionrios que iniciam atividades na 6 feira
N7 n de funcionrios que iniciam atividades no sbado

Funo objetivo

Min N1 N 2 N3 N 4 N5 N6 N7
Exemplo 6: Cada funcionrio trabalha 5 dias da semana

N1 + N 2 + N 3 + N 4 + N 5 = N de Empregados que trabalham na 5 feira

N 2 + N 3 + N 4 + N 5 + N 6 = N de Empregados que trabalham na 6 feira


N 3 + N 4 + N 5 + N 6 + N 7 = N de Empregados que trabalham no Sbado
N 4 + N 5 + N 6 + N 7 + N1 = N de Empregados que trabalham no Domingo

N 5 + N 6 + N 7 + N1 + N 2 = N de Empregados que trabalham na 2 feira

N 6 + N 7 + N1 + N 2 + N 3 = N de Empregados que trabalham na 3 feira

N 7 + N1 + N 2 + N 3 + N 4 = N de Empregados que trabalham na 4 feira


Exemplo 6: Restries de mo de obra mnima

Dia da N. Mnimo Dia da N. Mnimo


Semana Empregados Semana Empregados
2 18 6 14
3 12 Sbado 16
4 15 Domingo 11
5 19

Restries do nmero mnimo de empregados por dia da semana


Quinta-feira Sexta-feira
N1 N 2 N 3 N 4 N 5 19 N 2 N 3 N 4 N 5 N 6 14
Sbado Domingo
N 3 N 4 N 5 N 6 N 7 16 N 4 N 5 N 6 N 7 N1 11
Segunda-feira Tera-feira
N 5 N 6 N 7 N1 N 2 18 N 6 N 7 N1 N 2 N 3 12
Quarta-feira
N 7 N1 N 2 N 3 N 4 15
Exemplo 6: Problema de programao linear inteira

Min N1 N 2 N3 N 4 N5 N6 N7
s.a. N N N N N 11 domingo
1 4 5 6 7
N1 N 2 N 5 N 6 N 7 18 2 feira
N1 N 2 N 3 N 6 N 7 12 3 feira
N1 N 2 N 3 N 4 N 7 15 4 feira
N1 N 2 N 3 N 4 N 5 19 5 feira
N N N N N 14 6 feira
2 3 4 5 6
N 3 N 4 N 5 N 6 N 7 16 sbado
Ni 0 para i=1,7 so variveis inteiras
Exemplo 6: Soluo com o R
matrest=c(1,0,0,1,1,1,1)
matrest=rbind(matrest,c(1,1,0,0,1,1,1))
matrest=rbind(matrest,c(1,1,1,0,0,1,1))
matrest=rbind(matrest,c(1,1,1,1,0,0,1)) restries
matrest=rbind(matrest,c(1,1,1,1,1,0,0))
matrest=rbind(matrest,c(0,1,1,1,1,1,0))
matrest=rbind(matrest,c(0,0,1,1,1,1,1)) Todas as variveis
RHS=c(11,18,12,15,19,14,16) so inteiras
dir=rep(">=",length(RHS))
obj=rep(1,dim(matrest)[2]) 23 funcionrios devem
resposta=lp("min",obj,matrest,dir,RHS,all.int=T) ser contratados

resposta$objval # nmero mnimo de funcionrios

# escala de servio
dias=weekdays(as.Date("2017/06/25")+seq(0,6,1))
funcionarios=resposta$solution
names(funcionarios)=dias Escala de servio
cbind(funcionarios)
Exemplo 7: Problema de Programao Linear Inteira Mista
Uma empresa planeja expandir suas atividades abrindo dois novos
armazns, sendo que h trs locais sob estudo para a instalao destes
armazns. Quatro clientes devem ter atendidas suas demandas: 50, 100,
150 e 200.

Capacidades de armazenagem em cada local: 350, 300 e 200.


Investimentos iniciais em cada armazm: $50, $75 e $90.
Custos unitrios de operao em cada armazm: $5, $3 e $2.

Local 1 s pode atender clientes 1, 2 e 4


Local 3 pode atender clientes 2, 3 e 4
Local 2 pode atender todos os clientes.
Os custos unitrios de transporte do Local i ao Cliente j (Cij) so
conhecidos.

Deseja-se selecionar os locais apropriados para a instalao de dois


armazns de forma a minimizar o custo total.
Exemplo 7: Rede logstica e variveis de deciso
Rede Logstica, com Demandas (Clientes C), Capacidades (Armazns A) e
Custos de Transporte (Armazm-Cliente)

A1=350 C2 = 100
C12=9
C11=13 C22=7

C21=10
C14=12 A2 =300
C1 = 50 C32=2
C23=11
C3=150
C24=4
C33=13
C4=200
A3=200
C34=7

3 variveis inteiras: Yii=1,3, Yi=1 se armazm i contrudo, Yi=0 caso contrrio

10 variveis contnuas: Xij quantidade transportada do armazm i ao cliente j


Exemplo 7: Custo total

CT = 50Y1 + 5(X11 + X12 + X14) + 13X11 + 9X12 + 12X14 + Armazm 1


75Y2 + 3(X21+X22+X23+X24) + 10X21+7X22+11X23+4X24 + Armazm 2
90Y3 + 2(X32 + X33 + X34) + 2X32 + 13X33 + 7X34 Armazm 3

Custos de transporte entre


os armazns e os clientes

Custos de operao dos armazns

Custos de instalao dos armazns

12 variveis de deciso
Funo objetivo: minimizar o custo total
Exemplo 7: Restries

X11 + X12 + X14 350Y1


X21 + X22 + X23 + X24 300Y2 Restries de capacidade de
armazenamento
X32 + X33 + X34 200Y3

Y1 + Y2 + Y3 = 2 Instalar 2 Armazns

X11 + X21 = 50
X12 + X22 + X32 = 100 Restries de atendimento a
X23 + X33 = 150 demanda

X14 + X24 + X34 = 200

Xij 0 i=1,3, j=1,4 variveis no negativas


Yi {0,1} i=1,3 variveis binrias
Exemplo 7: Soluo com R
# dados
investimento=c(50,75,90)
custos.opera=c(5,3,2)
capacidade=c(350,300,200)
demanda=c(50,100,150,200)
custos.rotas=rbind(c(13,9,0,12),c(10,7,11,4),c(0,2,13,7))
narmazens=length(investimento)
nclientes=length(demanda)

# variveis de deciso
nomesvar=c(paste("Y",seq(1,narmazens,1),sep=""))
no.from=c()
no.to=c()
vetor.custos.rotas=c()
for (i in 1:narmazens) {
nomesvar=c(nomesvar,paste("X",i,seq(1,nclientes,1),sep=""))
no.from=c(no.from,rep(i,nclientes))
no.to=c(no.to,seq(1,nclientes,1))
vetor.custos.rotas=c(vetor.custos.rotas,custos.rotas[i,])
}
Exemplo 7: Soluo com R
# coeficientes da funo objetivo
fobj=c(investimento)
for (i in 1:narmazens) {
for (j in 1:nclientes) {
custo=0
if (custos.rotas[i,j]>0) custo=custos.opera[i]+custos.rotas[i,j]
fobj=c(fobj,custo)
}
}
names(fobj)=nomesvar

# restries de investimento
nvar=length(fobj)
rest1=rep(0,nvar)
rest1[1:narmazens]=1
RHS1=2
dir1="="

Y1 + Y2 + Y3 = 2 Instalar 2 Armazns
Exemplo 7: Soluo com R
# restries de capacidade de armazenamento
rest2=matrix(0,narmazens,nvar)
for (i in 1:narmazens) {
rest2[i,i]=-capacidade[i]
}
for (i in 1:narmazens) {
for (j in 1:nclientes) {
if (custos.rotas[i,j]>0) rest2[i,(narmazens+(i-1)*nclientes+j)]=1
}
}
RHS2=rep(0,narmazens)
dir2=rep("<=",narmazens)

X11 + X12 + X14 350Y1


X21 + X22 + X23 + X24 300Y2
X32 + X33 + X34 200Y3
Exemplo 7: Soluo com R
# restries de atendimento a demanda
rest3=matrix(0,nclientes,nvar)
for (i in 1:nclientes) {
for (j in 1:narmazens) {
indice=which(no.to==i)
rest3[i,narmazens+indice[which(vetor.custos.rotas[indice]>0)]]=1
}
}
RHS3=demanda
dir3=rep("=",nclientes)

X11 + X21 = 50
X12 + X22 + X32 = 100
X23 + X33 = 150
X14 + X24 + X34 = 200
Exemplo 7: Soluo com R
# concatena restricoes, RHS e dir
restricoes=rbind(rest1,rest2,rest3)
colnames(restricoes)=nomesvar
RHS=c(RHS1,RHS2,RHS3)
dir=c(dir1,dir2,dir3)

# Resolve PL
resposta=lp("min",fobj,restricoes,dir,RHS,scale=0,compute.sens=F,binary.vec=seq(1,3,1))
resposta$solution
resposta$objval
Armazns 2 e 3 devem ser construdos

Fluxo de mercadorias entre armazns e clientes

Armazns 2 e 3 devem ser construdos


Exemplo 7: Soluo

C2 = 100

50 A2 =300
C1 = 50 100
50
C3=150
200
100
C4=200
A3=200
Anlise Envoltria de Dados
Data Envelopment Analysis - DEA

Laboratrio de Alta Tenso - Cepel


Produo

A produo um processo pelo qual uma empresa


transforma os fatores de produo adquiridos (insumos ou
inputs) em bens ou servios (produtos ou outputs).

Vetor com as quantidades Vetor com as quantidades


de S tipos de insumos de M tipos de produtos
X={x1 ,..., xs} RS Unidade Produtora Y ={y1 ,..., yM} RM
ou
Decision Making Unit
(DMU)

A produo um processo de transformao de um conjunto de


insumos (X RS ) em um conjunto de produtos (Y RM )
Conjunto de Possibilidades de Produo CPP

A natureza impe restries tecnolgicas s empresas e


somente algumas combinaes de insumos constituem
formas viveis de produzir certa quantidade de produto.

O conjunto de todas as combinaes de insumos (X) e


produtos (Y) que compreendem formas tecnologicamente
viveis de produzir chamado conjunto de possibilidades
de produo.

Conjunto de Possibilidades de Produo (CPP) denotado por:

T(X,Y) = { (X,Y) | vivel produzir Y a partir de X }


Conjunto de Possibilidades de Produo CPP

Conjunto de possibilidades de produo com 1 insumo e 1 produto


Quantidade de produto (Y)

Conjunto de possibilidades de produo (CPP)

T(X,Y) = { (X,Y) | vivel produzir Y a partir de X }

Quantidade de insumo (X)

O CPP mostra as escolhas tecnolgicas com as quais a empresa se defronta.


Funo de Produo
Exemplo com 1 insumo e 1 produto

A envoltria do CPP a funo de produo


Quantidade de produto (Y)

(fronteira de eficincia)

Y0

X0
Quantidade de insumo (X)
A funo fronteira indica a maior quantidade de produto que pode ser obtida a
partir de determinada quantidade de insumo, ou a menor quantidade de
insumo necessria para produzir uma determinada quantidade de produto.
Orientao ao Produto x Orientao ao Insumo

Quantidade de produto (Y)


DMU
eficiente
Y1=h Y0
Expanso do
DMU produto
eficiente h>1
Y0
DMU
Contrao do insumo ineficiente
<1
X1= X0 X0 T(X,Y)

Quantidade de insumo (X)

ORIENTAO INPUT
Eficincia = = X1 / X0
Mxima contrao
Min { | ( X , Y) T ( X,Y ) } 0 1 do insumo

ORIENTAO OUTPUT Eficincia = h = Y1 / Y0


Mxima expanso
Max { h | ( X , h Y ) T ( X,Y ) } h 1 do produto
Estimao da fronteira de produo
Na prtica as informaes disponveis sobre o conjunto de possibilidades de
produo so limitadas s observaes acerca dos vetores de insumos X e
produtos Y de algumas DMUs

No se conhece plenamente o conjunto de possibilidade de produo nem a


fronteira e por isso a eficincia de cada empresa no pode ser mensurada
diretamente

produto

DMU 4
DMU 5

DMU N DMU 2

DMU 1

DMU 6 DMU 3

insumo
Estimao da fronteira de produo
Na prtica as informaes disponveis sobre o conjunto de possibilidades de
produo so limitadas s observaes acerca dos vetores de insumos X e
produtos Y de algumas DMUs

No se conhece plenamente o conjunto de possibilidade de produo nem a


fronteira e por isso a eficincia de cada empresa no pode ser mensurada
diretamente

produto

A proposta da DEA
DMU 4
DMU 5 identificar a fronteira e
derivar as medidas de
DMU N DMU 2 eficincia a partir das
DMU 1 quantidades observadas
de insumos e produtos do
DMU 6 DMU 3
conjunto de DMUs.

insumo
Anlise Envoltria de Dados

Abraham Charnes William W. Cooper Edwardo Lao Rhodes


1913 - 1992 1914 - 2012

CHARNES, A., COOPER, W. W. & RHODES, E. Measuring the efficiency of decision


making units, European Journal of Operational Research, Volume 2, Issue
6, November 1978, pp. 429-444
https://www.utdallas.edu/~ryoung/phdseminar/CCR1978.pdf

Admitindo que as DMUs so comparveis (hiptese da homogeneidade) e as


hipteses de rendimentos constantes de escala, tecnologia convexa e free
disposal CHARNES, COOPER & RHODES (1978) formulam um problema de
programao linear (PPL) para determinar os pesos.
Primeiro modelo DEA, conhecido como CRS (Constant Return of Scale) ou CCR.
Anlise Envoltria de Dados

http://www.sciencedirect.com/science/article/pii/S0038012117300174
Modelo envelope orientado ao insumo CRS/E/I

eficincia DMU0 Min A funo objetivo expressa a mxima


, contrao dos insumos (modelo orientado ao
insumo)
s.a. Min { | ( X , Y) T ( X,Y ) } 0 1
N
Restrio para o input 1 x1,0 k x1k x0 e y0 so as quantidades dos
insumos e produtos da DMU
k 1
avaliada ( DMU0)

N
Restrio para o input S xS ,0 k xSk
k 1
N As restries representam o CPP
Restrio para o output 1 y1,0 k y1k
k 1

N
Restrio para o output M y
M ,0 k yMk Problema de Programao Linear
k 1 (PPL) com N+1 variveis e
k 0, k 1, N M+S restries
Exemplo 8: Eficincia das transmissoras de energia (Pessanha et al, 2010)

Objetivo: determinar os nveis eficientes dos custos


operacionais das empresas de transmisso de
energia eltrica
http://www.scielo.br/scielo.php?script=sci_arttext&pid=S0101-74382010000300002
Exemplo 8: Eficincia das transmissoras de energia (Pessanha et al, 2010)

Sistema Interligado Nacional


Exemplo 8: Eficincia das transmissoras de energia
Os custos operacionais relacionam-se com o servio prestado pelas
transmissoras, i.e., com a disponibilidade das capacidades de seus
ativos de transmisso, representada pela quantidade de quatro
agregados fisicos:

Capacidade de transformao (MVA)


Comprimento da rede (km)
Quantidade de trafos
Quantidade de mdulos de manobra

A transmissora deve buscar a minimizao dos custos operacionais

Orientao ao input pois para um dado nvel de produto (capacidade


de transmisso), desejamos o menor nvel de custos operacionais.

Com base nestas consideraes a ANEEL prope um modelo DEA


com orientao ao input, tendo o custo operacional como o nico
input e os agregados fsicos como outputs.
Exemplo 8: Eficincia das transmissoras de energia

Input Outputs
DMU Custos Capacidade de Comprimento Qtide. de Qtde. de
operacionais (R$) Transformao (MVA) de Rede (km) Trafos Mdulos
CEEE 146.580.493 7.043 6.204 169 906
CEMIG 149.067.203 14.644 5.946 124 516
CHESF 381.365.832 28.999 20.972 382 1.647
COPEL 110.822.217 17.943 7.618 286 1.064
CTEEP 602.352.315 45.292 18.301 565 1.936
ELENOR 313.485.008 14.539 7.795 161 574
ELESUL 204.500.605 17.868 11.007 127 488
FURNAS 563.816.133 53.944 19.119 332 720

Min
,

Input de Furnas 563.816.133 1146.580.493 8 563.816.133


MVA 53.944 1 7.043 8 53.944
Outputs de Furnas
km 19.119 1 6.204 819.119 PPL para avaliar a
k 0, k 1,8 eficincia de Furnas
Exemplo 8: Eficincia das transmissoras de energia

Input Outputs
DMU Custos Capacidade de Comprimento Qtide. de Qtde. de
operacionais (R$) Transformao (MVA) de Rede (km) Trafos Mdulos
CEEE 146.580.493 7.043 6.204 169 906
CEMIG 149.067.203 14.644 5.946 124 516
CHESF 381.365.832 28.999 20.972 382 1.647
COPEL 110.822.217 17.943 7.618 286 1.064
CTEEP 602.352.315 45.292 18.301 565 1.936
ELENOR 313.485.008 14.539 7.795 161 574
ELESUL 204.500.605 17.868 11.007 127 488
FURNAS 563.816.133 53.944 19.119 332 720

Min
,

Input da Chesf 361.365.832 1146.580.493 8 563.816.133


28.999 1 7.043 8 53.944
Outputs da Chesf
20.972 1 6.204 819.119
PPL para avaliar a
k 0, k 1,8 eficincia da Chesf
Exemplo 8: Eficincia das transmissoras de energia

Folgas
Eficincia peer set
MVA km OPEX
CEEE 0,6160 7568,27 0 0 Copel 0,814
Cemig 0,6070 0 271,93 0 Copel 0,816
Chesf 0,8000 20395,47 0 0 Copel 2,753
Copel 1,0000 0 0 0 Copel 1
Cteep 0,4640 0 929,41 0 Copel 2,524
Elenor 0,3620 3819,20 0 0 Copel 1,023
Elesul 0,7830 8057,59 0 0 Copel 1,445
Furnas 0,5910 0 3784,97 0 Copel 3,006
Dualidade entre as formulaes dos multiplicadores e envelope

Teorema da dualidade

Modelo envelope Modelo multiplicador

Restries = n de inputs + n de outputs = M+S N+1 restries


Variveis = n de DMUs +1 = N + 1 M+S variveis
Dualidade entre as formulaes dos multiplicadores e envelope
Modelo CRS/envelope orientado ao insumo M+S restries e N+1 variveis

Modelo CRS/multiplicador orientado ao insumo M+S variveis e N+1 restries


Modelos DEA na verso dos multiplicadores

Mltiplos inputs Mltiplos outputs


X={x1 ,..., xs} RS Decision Making Unit Y ={y1 ,..., yM} RM
(DMU)

A eficincia de uma DMU pode ser avaliada pela razo entre o produto
virtual e o insumo virtual

produto virtual v1 y1 vM yM
eficincia
insumo virtual u1x1 u S xS

Como determinar os pesos u e v dos outputs e dos inputs ?


Problema de Programao Fracionria
Considere N DMUs, S insumos e M produtos.

As eficincias das N DMUS so avaliadas por N problemas de programao


fracionria, um para cada DMU (n=1,N)

Pesos dos insumos e produtos determinados por meio do seguinte problema


programao fracionria com N restries de desigualdade e M+S variveis.

v1n y1n vMn yMn Eficincia da


eficincia DMU n Max unidade avaliada
u , v u1n x1n u Sn xSn
s.a. Uma restrio
Em cada unidade a para cada
v1n y1k vMn yMk
eficincia no 1, k 1, N uma das N
mximo 100% u1n x1k u Sn xSk unidades
ui 0, i 1, M
Problemas de
v j 0, j 1, S Programao
Fracionria
admitem mltiplas
solues
Para qualquer soluo (u*,v*), o par
(w.u*,w.v*) tambm soluo para w>0.
Problema de Programao Linear

Adicionando a restrio u1n x1n uSn xSn 1 o problema de Programao


Fracionria transformado no seguinte Problema de Programao Linear com
M+S variveis e N+1 restries.
eficincia DMU n
Max v1n y1n vMn yMn
u ,v
s.a.
v1n y1k vMn yMk u1n x1k u Sn xSk 0, k 1, N
u1n x1n u Sn xSn 1
ui 0, i 1, M N + 1 restries
v j 0, j 1, S M + S variveis de deciso

Modelo CRS/M/I = rendimento constantes de escala (CRS) na


verso dos multiplicadores (M) e com orientao ao insumo (I)
Eficincia
Seja (u*,v*) a soluo tima para o PPL da DMUn

O ndice de eficincia (0 1) para DMUn igual ao valor da funo


objetivo na soluo tima e indica a mxima contrao do vetor de
insumos para alcanar a eficincia.

v1*n y1n v* yMn


Mn

Identificao das DMUs ineficientes e eficientes

A DMUn eficiente se e somente se a funo objetivo assume um valor


unitrio (eficincia igual a 100%) e todos os pesos so positivos, caso
contrrio a DMU ineficiente.

1
ui* 0, i 1, M DMU
eficiente
v *j 0, j 1, S
Exemplo 8: Eficincia das transmissoras de energia
Modelo CRS/M/I
Input Outputs
DMU Custos Capacidade de Comprimento Qtide. de Qtde. de
operacionais (R$) Transformao (MVA) de Rede (km) Trafos Mdulos
CEEE 146,580,493 7,043 6,204 169 906
CEMIG 149,067,203 14,644 5,946 124 516
CHESF 381,365,832 28,999 20,972 382 1,647
COPEL 110,822,217 17,943 7,618 286 1,064
CTEEP 602,352,315 45,292 18,301 565 1,936
ELENOR 313,485,008 14,539 7,795 161 574
ELESUL 204,500,605 17,868 11,007 127 488
FURNAS 563,816,133 53,944 19,119 332 720
Fonte: ANEXO III Nota tcnica n 125/2007-SRE/ANEEL

A ttulo de ilustrao considere apenas dois outputs: capacidade


instalada (MWh) e comprimento da rede (km)

OPEXi o custo operacional da i-sima transmissora

vi1MVAi vi 2 kmi
eficinciai
ui OPEXi
Exemplo 8: Eficincia das transmissoras de energia

Outputs de Furnas
PPL para avaliar a
eficincia de Furnas
Max v153.944 v219.119
u,v
s.a.
Outputs Inputs

CEEE v1 7.043 v2 6.204 u1146.580.493 0


v114.644 v2 5.946 u1149.067.203 0 Restries do CPP
Cemig
Chesf v1 28.999 v2 20.972 u1381.365.832 0 As restries
Copel v117.943 v2 7.618 u1110.822.217 0 ativas na soluo
tima identificam as
Cteep v1 45.292 v218.301 u1 602.352.315 0 DMUs que formam o
Elenor v114.539 v2 7.795 u1313.485.008 0 conjunto de
referncia ou peer set
Elesul v117.868 v211.007 u1 204.500.605 0
da DMU avaliada
v153.944 v219.119 u1563.816.133 0
Input de Furnas u1563.816.133 1
u1 0
u2 0
v1 0
Exemplo 8: Eficincia das transmissoras de energia

Outputs da Chesf
PPL para avaliar a
eficincia da Chesf
Max v1 28.999 v2 20.972
u,v
s.a.
Outputs Inputs

CEEE v1 7.043 v2 6.204 u1146.580.493 0


Cemig v114.644 v2 5.946 u1149.067.203 0
Chesf v1 28.999 v2 20.972 u1381.365.832 0
Copel v117.943 v2 7.618 u1110.822.217 0
Cteep v1 45.292 v218.301 u1 602.352.315 0
Elenor v114.539 v2 7.795 u1313.485.008 0
Elesul v117.868 v211.007 u1 204.500.605 0
v153.944 v219.119 u1563.816.133 0
Input da Chesf u1381.365.832 1
u1 0
u2 0
v1 0
Exemplo 8: Eficincia das transmissoras de energia

Eficincia
CEEE 0,6160
Cemig 0,6070
Chesf 0,8000
Copel 1,0000
Cteep 0,4640
Elenor 0,3620
Elesul 0,7830
Furnas 0,5910
Pacotes para DEA no R

Benchmarking
rDEA
nonparaeff
Exemplo 8: Resolvido com R

vi1MVAi vi 2 kmi
eficinciai
ui OPEXi

empresas=c("CEEE","Cemig","Chesf","Copel","Cteep","Elenor","Elesul","Furnas")
opex=c(146580493,149067203,381365832,110822217,602352315,313485008,204500605,563816133)
MVA=c(7043,14644,28999,17943,45292,14539,17868,53944)
km=c(6204,5946,20972,7618,18301,7795,11007,19119)
matrizdados=cbind(opex,MVA,km)
rownames(matrizdados)=empresas
colnames(matrizdados)=c("opex","MVA","km")

library(Benchmarking)
X=matrizdados[,1] #input
Y=matrizdados[,2:3] #output

# modelo DEA CRS com orientao ao input


resposta=dea(X, Y, RTS="crs", ORIENTATION="in",DUAL=T)
Exemplo 8: Resolvido com R
eficiencia=resposta$eff

peer=resposta$lambda

eficincias

peer set
Exemplo 8: Resolvido com R

Pesos dos insumos

v MVAi vi 2 kmi
eficinciai i1
ui OPEXi

Pesos dos produtos


Fronteiras de eificncia segundo diferentes hipteses para os rendimentos de
escala (RTS return to scale)
VRS no decrescente ou NDRS
CRS

VRS FDH

Fonte: www.reckon.co.uk/open/dea
Fronteiras de eificncia segundo diferentes hipteses para os rendimentos de
escala (RTS return to scale)

Opes oferecidas pelo pacote benchmarking


Modelo com rendimento varivel de escala (VRS)
BANKER, CHARNES & COOPER (1984) adicionaram uma
combinao linear convexa como restrio ao modelo CRS,
criando o modelo VRS (Variable Return of Scale) ou BCC que
contempla a hiptese de rendimentos variveis de escala.
BANKER, R.D., CHARNES, A. & COOPER, W. W. Some models for estimating technical scale
inefficiencies in Data Envelopment Analysis, Management Scxience, v. 30, n. 9, pp. 1078-1092,
1984
Rajiv D. Banker

Fronteira CRS Fronteira VRS


Quantidade de produto (Y)

Quantidade de insumo (X)


Modelo com rendimento varivel de escala (VRS)

Eficincia CRS Eficincia VRS


OS OR
CRS VRS
O OP S OP R
P
Quantidade de produto (Y)

Fronteira CRS Fronteira VRS

Quantidade de insumo (X)

CRS VRS CRS


OS OS OR OS
VRS
OP OR OP OR
eficincia de escala
Decomposio da eficincia tcnica

Eficincia Eficincia
tcnica = tcnica X Eficincia
global pura de escala
CRS VRS
Formulao Envelope (VRS/E/I)
eficincia DMU0 Min
,
s.a.
N
x1,0 k x1k
k 1

N
xS ,0 k xSk
k 1 restries do
N CPP
y1,0 k y1k
k 1

N
y M ,0 k yMk combinao linear
k 1
convexa
k 0, k 1, N (apenas no modelo com
rendimento varivel de
1 N 1
escala)
Formulao multiplicador (VRS/M/I)

Adio de uma varivel u0 irrestrita

eficinciaDMU0 Max u1 y1,0 uM yM ,0 u0


u,v
s.a.
u1 y1k u M yMk u0 v1x1k vS xSk 0, k 1, N
v1x1,0 vS xS ,0 1
ui 0, i 1, M
v j 0, j 1, S
Exemplo 8: Froteira VRS resolvido com R

v MVAi vi 2 kmi v0
eficinciai i1
ui OPEX i

empresas=c("CEEE","Cemig","Chesf","Copel","Cteep","Elenor","Elesul","Furnas")
opex=c(146580493,149067203,381365832,110822217,602352315,313485008,204500605,563816133)
MVA=c(7043,14644,28999,17943,45292,14539,17868,53944)
km=c(6204,5946,20972,7618,18301,7795,11007,19119)
matrizdados=cbind(opex,MVA,km)
rownames(matrizdados)=empresas
colnames(matrizdados)=c("opex","MVA","km")

library(Benchmarking)
X=matrizdados[,1] #input
Y=matrizdados[,2:3] #output

# modelo DEA CRS com orientao ao input


resposta=dea(X, Y, RTS="vrs", ORIENTATION="in", DUAL=T)
Exemplo 8: CRS x VRS
respostavrs=dea(X, Y, RTS="vrs", ORIENTATION="in", DUAL=T)
respostacrs=dea(X, Y, RTS="crs", ORIENTATION="in", DUAL=T)
eficiencia=cbind(respostacrs$eff,respostavrs$eff)
colnames(eficiencia)=c("CRS","VRS")

Eficincia VRS Eficincia CRS


Maior capacidade Furnas
Maior rede Chesf
Menor custo Copel
Mais sobre DEA

DEA implementado apenas com o lpSolve


http://iase-web.org/documents/papers/sat2015/IASE2015%20Satellite%2013_PESSANHA.pdf
Mquinas de Vetor de Suporte
Support Vector Machine (SVM)
SVM
Mtodo de classificao
Baseia-se na teoria do aprendizado estatstico
Aprendizado o processo de inferir regras gerais a partir da
observao de exemplos.
Aprendizado supervisionado

The nature of Statistical Learning Theory, 1995

The Statistical Learning Theory, 1998

Vladmir Vapnik

http://www.mit.edu/~6.454/www_spring_2001/emin/slt.pdf
Classificador

f(x,w,b) = sign(w x + b)
w x + b>0
x2

y = +1
y = -1

w x + b<0

x1
Classificador

f(x,w,b) = sign(w x + b)

x2

y = +1
y = -1

x1
Classificador

f(x,w,b) = sign(w x + b)
x2

y = +1
y = -1

x1
Erro de classificao
Classificador linear de margem mxima

f(x,w,b) = sign(w x + b)
x2
y = +1
y = -1

Vetores suporte

x1
SVM linear: caso separvel

x+ M=Largura da margem

X-

Sabemos que:
w . x+ + b = +1
(x x ) w 2
w . x- + b = -1 M
w . (x+ - x-) = 2 w w
Problema de programao quadrtica
Classificao dos dados de treinamento, pares {(xi ,yi) i=1,n}
wxi b 1 se yi= +1
yi ( wx i b) 1 i = 1,n
wxi b 1 se yi = -1

2
Largura da margem M
w

Maximizar a margem = Minimizar a norma de w

Problema de programao quadrtica com restries lineares


1 t
Min ww
w,b 2
s.a. yi ( wx i b) 1 i 1, n
Dual do problema de programao quadrtica
1 t
Min w w Problema Primal
w ,b 2
s.a. yi ( wx i b) 1 i 1, n
K(xi,xj)
n n n
Max i i j yi y j xi x j
1
i 1 2 i 1 j 1

s.a. Problema Dual

n o multiplicador de Lagrange

i yi 0 associado com cada restrio do primal

i 1
Cada i diferente de zero indica
i 0 i 1, n que o correspondente xi um
Soluo vetor suporte
n
w* i* yi xi b* yk w *T xk para todo xk em que k 0
i 1
Regra de classificao

Soluo do problema dual


n
w* i* yi xi b* yk w *T xk para todo xk em que k 0
i 1

Regra de classificao para um dado z

n *
f z sign i yi xi z b *

i 1

i diferente de zero apenas se xi for um vetor suporte


SVM linear: caso no separvel
Adiciona variveis de folga 0 para permitir dados com rudos



Parmetro C
controla o overfitting

R
1 T
Min w w C k
w, 2 k 1
s.a. yi ( wxi b) 1 i
i 0 i 1, n
SVM linear: caso no separvel
R
1 T
Min w w C k Problema Primal
w, 2 k 1
s.a. yi ( wxi b) 1 i
i 0 i 1, n
K(xi,xj)
n n n
Max i i j yi y j xi x j
1
i 1 2 i 1 j 1

s.a. Problema Dual
n
i yi 0
i 1
0 i C i 1, n
SVM no linear: Feature space
Idia geral: o espao de entrada original pode sempre ser
mapeado em um espao de dimenso maior (feature
space) em que os padres de treinamento so
linearmente separveis.

: x (x)
Kernel Trick
O SVM linear baseia-se nos produtos internos entre vetores
K(xi,xj) = xiTxj

Ao mapear o espao de entrada em um espao de maior


dimenso (feature space), a tarefa de encontrar o separador
de magem mxima pode se tornar intratvel.

Os vetores passam a ter muitos componentes e fazer o


produto interno de dois vetores custoso.

A soluo usar o Teorema de Mercer (1909).

K(xi,xj)= (xi) T(xj)


em que (x) mapeia os dados em um James Mercer
1883 - 1932
espao de dimenso maior
Kernel Trick
Exemplo: Caso bidimensional com vetortes x=[x1 x2]

Seja K(xi,xj)=(1 + xiTxj)2

Mostre que K(xi,xj)= (xi) T(xj):

K(xi,xj)=(1 + xiTxj)2,

= 1+ xi12xj12 + 2 xi1xj1 xi2xj2+ xi22xj22 + 2xi1xj1 + 2xi2xj2


= [1 xi12 2 xi1xi2 xi22 2xi1 2xi2]T [1 xj12 2 xj1xj2 xj22 2xj1
2xj2]
= (xi) T(xj)

em que (x) = [1 x12 2 x1x2 x22 2x1 2x2]


Exemplos de funo Kernel
Linear: K(xi,xj)= xi Txj

Polinomial: K(xi,xj)= (1+ xi Txj)p

xi x j
2
Mais comuns
Gaussiana: K ( x i , x j ) exp( )
2 2

Sigmoide: K(xi,xj)= tanh(0xi Txj + 1)

K(x1,x1) K(x1,x2) K(x1,x3) K(x1,xN)


K(x2,x1) K(x2,x2) K(x2,x3) K(x2,xN)
K=

K(xN,x1) K(xN,x2) K(xN,x3) K(xN,xN)

Matriz positiva definida para qualquer pontos xi, xj


SVM no linear: Feature space

Localiza um hiperplano discriminante no


feature space e classifica as
observaes.

No h necessidade de representar o
espao explicitamente, simplesmente
escolha uma funo Kernel
Problema dual do SVM no linear

n

n n
Max i i j yi y j K xi , x j
1
i 1 2 i 1 j 1

s.a.
n
i yi 0
i 1
i 0 i 1, n
Regra de classificao

n
f z i yi K xi , z b *
*
i 1

Apenas os vetores de suporte contribuem

Todo aprendizado resulta na seleo dos vetores de


suporte que maximizam a margem e nos seus
respectivos pesos.
A qualide dos resultados sensvel funo Kernel
escolhida
SVM no R

Pacotes e1071 e kernlab


Exemplo (Corrar et al, 2007)
Um dos pontos de interesse em trabalhos de percia contbil voltados
para processos de concordatas a emisso de uma opinio sobre a
capacidade da empresa de recuperar-se financeiramente e retomar a sua
rotina, aps a concesso desse benefcio legal.

Emitir uma opinio dessa natureza sempre uma tarefa sujeita ao


questionamento por parte dos interessados, ou at mesmo da justia,
sobretudo quando levada a efeito sem bases objetivas.

Uma forma de prevenir problemas dessa natureza pode ser a comparao


estatstica da empresa em relao a outras, ou seja, buscar identificar se
a empresa que pleiteia a concordata possui caractersticas indicadoras
de que a sua classificao compatvel com a de uma empresa que se
encontre em condies financeiras saudveis.

Considere que o perito esteja diante dessa situao e tenha que avaliar a
capacidade da empresa P&R de passar pela concordata e sair com todos
os seus compromissos honrados e em condies de continuar operando
normalmente como outras empresas. Uma abordagem para solucionar o
problema consiste em utilizar a anlise discriminante.
Corrar L.J. et al, Anlise Multivariada para os cursos de admniistrao, cincias contbeis e economia, Editora Atlas, 2007
Exemplo (Corrar et al, 2007)
Varivel dependente (Y): varivel categrica com duas categorias
Empresas insolventes concordatrias (codificada com 1)
Empresas solventes (codificada com 2)

Variveis independentes (X)


Sigla Nome Composio

LS Liquidez seca Ativo circulante Estoques / Passivo circulante

GA Giro do ativo Receita de vendas / Ativo total

AVDREC Representatividade de duplicatas Estoque / Ativo total


a receber
AVEST Representatividade de estoques Passivo circulante / Passivo total

AVPC Representatividade do passivo Estoque / Custo


circulante
ESTCUS Estoque a preo de custo Fornecedores / Receita de Vendas

FORNVEN Relao fornecedores x Receita Fornecedores / Receita de vendas


de vendas
Leitura de dados
filename="c:/curso R/aula5/empresas.csv
dados=read.csv2(filename,header=T,sep=",",dec=".")
names(dados)

attach(dados)

dim(dados)
# 91 empresas
# 9 variveis

length(which(dados[,1]==1)) # CLASS_Y=1
# 49 empresas insolventes concordatrias

length(which(dados[,1]==2)) # CLASS_Y=2
# 42 empresas solventes

length(which(dados[,9]==0))
# 64 empresas na amostra insample, varivel ALEAT = 0

length(which(dados[,9]==1))
# 27 empresas na amostra outsample, varivel ALEAT = 1.
Anlise exploratria
par(mfrow=c(2,4))
for (i in 2:8){
boxplot(dados[,i] ~CLASS_Y,main=names(dados)[i])
}

Os dois grupos esto bem separados


nas variveis AVEST e AVPC
Funo svm do pacote e1071
insample=which(ALEAT==0) # indice das observaes na amostra insample
y=as.factor(CLASS_Y[insample])
x=data.frame(y,AVEST[insample],AVPC[insample])
colnames(x)=c("y","AVEST","AVPC")

library(e1071)
saida=svm(y~AVEST+AVPC,data=x,kernel="sigmoid",type="C-classification")
plot(saida,x)

Obtm vetores de suporte e


classifica amostra insample

table(y,saida$fitted)
Funo svm do pacote e1071
plot(saida,x)
Funo svm do pacote e1071
# outsample
outsample=which(ALEAT==1) # indice das observaes na amostra insample
y=as.factor(CLASS_Y[outsample])
x=data.frame(AVEST[outsample],AVPC[outsample])
colnames(x)=c("AVEST","AVPC")
resposta=predict(saida,x)
table(y,resposta)
Classifica amostra
outsample
Algoritmos genticos
Genetic Algorithms - GA
Algoritmos genticos
Algoritmos de otimizao inspirados nos processos subjacentes
evoluo biolgica (seleo, cruzamento e mutao).

A busca pela soluo tima tratada como uma competio em uma


populao de solues evolutivas candidatas.

Uma funo de aptido avalia cada soluo para decidir se ela


contribuir para a prxima gerao de solues. Ento, por meio de
operaes anlogas transferncia de genes na reproduo sexual, o
algoritmo cria uma nova populao de solues candidatas.

Utilizados com sucesso em problemas de difcil manipulao pelas


tcnicas tradicionais de programao matemtica.

J.H. Holland (1975) Adaptation in Natural and


Artificial Systems, University of
Michigan Press, Ann Arbor, Michigan; re-issued by
MIT Press (1992).
John H. Holland
1929 - 2015
Otimizao
Objetivo: buscar a melhor soluo para um dado problema.

Envolve avaliar diversas solues e usar a informao obtida para


alcanar solues cada vez melhores (mais aptas).

Espao de busca: conjunto das possveis solues do problema

Funo de aptido: funo que se deseja otimizar (medida do grau de


aptido de cada possvel soluo do problema de otimizao).

O algoritmo gentico emprega o princpio da evoluo biolgica para


orientar a pesquisa pela soluo tima no espao de busca.

As espcies evoluem pelo principio da


seleo natural e sobrevivncia do mais apto.

Charles Darwin
1809-1882
Caractersticas gerais

http://www.geos.ed.ac.uk/~mscgis/12-13/s1100074/Holland.pdf

um algoritmo estocstico (no determinstico).


Trabalha com uma populao de solues simultaneamente.
Utiliza apenas informaes de custo e recompensa. No requer
nenhuma outra informao auxiliar (como por exemplo o
gradiente).
So fceis de serem implementados em computadores.
Adaptam-se bem a computadores paralelos.
So facilmente hibridizados com outras tcnicas.
Funcionam com parmetros contnuos ou discretos.
Cromossomo
Cada possvel soluo do problema no espao de busca codificada
geneticamente por um cromossomo, um vetor de bits (genes), por
exemplo, o cromossomo binrio (0,1,1,1,0,0,1,0).

Cada cromossomo um indivduo em uma populao de possves


solues do problema.

O algoritmo gentico avalia


uma grande quantidade de indivduos.

A aptido de um cromossomo para


resolver o problema de otimizao
em questo quantificada pela
funo de aptido.
Codificao das solues em cromossomos binrios

Cromossomo com 22 bits (genes)


1000101110110101000111

Quanto mais bits melhor preciso nmerica.

Longos cromossomos so difceis de manipular.


Decodificao do cromossomo binrio (LACERDA et al, 1999)

Considere uma varivel x no intervalo [xmin,xmax]


Seja L o nmero de genes no cromossomo, por exemplo, L=22.

A soluo codificada no cromossomo = 1000101110110101000111


Corresponde ao valor real da varivel x

x xmin xmax xmin


b10
L
2 1
b10 = (1000101110110101000111)2 = 2288967

2.288.967
x 1 (2 1) 0,637197
22
2 1
Funo de aptido
Baseia-se na funo objetivo que se deseja otimizar.

Avalia quo boa a soluo fornecida por cada cromossomo

Atribui uma nota (grau de aptido) cada indivduo da


populao de acordo com a qualidade da soluo do problema
em questo codificada em seu cromossomo.

A funo de avaliao deve ser tal que se o cromossomo c1


representa uma soluo melhor do que o cromossomo c2,
ento a avaliao de c1 deve ser maior do que a avaliao de
c2.

Fundamental na seleo dos individuos que sero pais da


prxima gerao de solues.
Operaes fundamentais da evoluo

Seleo Natural

Manipulao Gentica por Reproduo


(Cruzamento)

Manipulao Gentica por Mutao


Algoritmo

Scrucca, 2013

https://www.jstatsoft.org/article/view/v
053i04/v53i04.pdf
Parmetros para execuo do algoritmo gentico

Tamanho da populao de solues


Taxa de cruzamento
Taxa de mutao
Intervalo de gerao
Critrio de parada
Simulao do mecanismo da seleo natural
Selecione um par de cromossomos da populao de solues
de acordo com a aptido de cada um (os mais aptos tem
maior chance de serem selecionados)

Privilegia os indivduos com maior valor na funo de aptido.

Orienta o algoritmo para as melhores regies do espao de


busca.

Diversidade: Indivduos com baixa aptido no devem ser


descartados, pois podem ter caractersticas genticas que
sejam favorveis criao de um indivduo timo. Estas
caractersticas podem no estar presentes em nenhum outro
cromossomo.
Seleo Natural com o Mtodo da Roleta

Seleo aleatria dos cromossomos com probabilidades


proporcionais a aos respectivos graus de aptido.

Seleo aleatria realizada por meio de uma roleta


viciada na qual cada cromossomo recebe um pedao
proporcional sua aptido.

Os indivduos mais aptos tm maiores chances de serem


selecionados para gerar filhos atravs de cruzamento e
mutao.
Mtodo da roleta para seleo dos pais 0001

0011

0110 0100

Exemplo (LINDEN, 2008)


Pedao da Pedao da
Indivduo Aptido
roleta (%) roleta ()
0001 1 1.61 5.8

0011 9 14.51 52.2

0100 16 25.81 92.9

0110 36 58.07 209.1

Total 62 100.00 360.0


Operador de Cruzamento (crossover)
Principal operador gentico
Combina os genes de dois indivduos (pais) para gerar dois indivduos
novos (filhos). Cada cruzamento cria sempre dois filhos.
Os pais so substitudos pelos filhos, isso permite manter a populao com
um tamanho fixo (populao armazenada em um vetor de tamanho fixo).
Responsvel por gerar novos indivduos diferentes (sejam melhores ou
piores) a partir de indivduos j promissores
Operador de Cruzamento (crossover)

O Ponto de
corte
escolhido
O crossover aplicado 11001 aleatriamente
Pais
com uma dada 01111
probabilidade
denominada taxa de 11011
cruzamento (60% a 90%) Filhos
01101

Se o crossover aplicado os pais trocam partes dos


cromossomos gerando dois filhos, caso contrrio os dois
filhos sero cpias exatas dos pais.
Cruzamento Um-Ponto
Operao realizada sobre os cromossomos dos pais para a
criao de descendentes

O ponto para a realizao do cruzamento escolhido


aleatoriamente.
Separa-se os cromossomos dos pais em duas partes: uma
esquerda do ponto de corte e outra direita.

As partes dos cromossomos dois pais so intercambiadas

0 0 0 0 Pais 1 1 1 1

0 0 1 1 Filhos 1 1 0 0
Cruzamento Multi-Ponto
Operao realizada sobre os cromossomos dos pais para a
criao de descendentes

Seleciona-se aleatoriamente mais de um ponto de corte para a


realizao do cruzamento .

Segmenta-se os cromossomos dos pais em vrias partes

As partes dos cromossomos dois pais so intercambiadas

0 0 0 0 Pais 1 1 1 1

0 1 1 0 Filhos 1 0 0 1
Operador de Mutao
Entra em ao nos cromossomos dos filhos.
Operador randmico
Introduz e mantm a variedade gentica da populao
Garante a possibilidade de se alcanar qualquer ponto do
espao de busca
Contorna timos locais

0 1 1 0 0 0 1

0 1 0 0 0 0 1
Operador de Mutao

Cada gene do cromossomo tem uma probabilidade


extremamente baixa (da ordem de 0,5%) de sofrer uma
mutao.

Para cada gene sorteia-se um nmero entre 0 e 1 e se ele


for menor que a probabilidade pr-determinada ento o
operador atua sobre o gene em questo, alterando-lhe o
valor do bit correspondente.
Elitismo

O crossover ou mutao podem destruir


a melhor indivduo.

Por que perder a melhor soluo


encontrada?

Elitismo transfere a cpia do melhor


indviduo para a gerao seguinte.
Critrios de Parada

Nmero de geraes.

Perda de diversidade.

Convergncia, para caso no se verifique


melhora na aptido mdia ou mxima da
populao
Exemplo Problema de maximizao (LUDERMIR, 2016)
Use o algoritmo gentico para encontrar o nmero inteiro que maximiza
a funo f(x) = x2 no intervalo de busca [0 , 31]
http://slideplayer.com.br/slide/48747/
Regio de busca tem 32 solues possveis, logo adequado
considerar um cromosso com 5 bits, 25 =32.
0 = 00000 f(x)
1 = 00001
2 = 00010
3 = 00011

31 = 11111 x
Funo de aptido: neste problema, a aptido a prpria funo
objetivo.
Exemplo: aptido(00011) = f(3) = 9
Exemplo Populao inicial
Populao inicial de tamanho 4, selecioanda aleatoriamente

cromossomos x f (x ) Prob. de seleo


A1 = 1 1 0 0 1 25 625 54,5%
A2 = 0 1 1 1 1 15 225 19,6%
Populao
A3 = 0 1 1 1 0 14 196 17,1%
inicial
A4 = 0 1 0 1 0 10 100 8,7%

f ( xi )
Probabilidade de seleo pi

N
proporcional a aptido k 1
f ( xk )
Exemplo Seleo dos pais (roleta)

Pais selecionados
8,7%
A1 = 1 1 0 0 1
A4
17,1% A2 = 0 1 1 1 1
54,5% A3
A1 A2 = 0 1 1 1 1
19,6%
A2 A1 = 1 1 0 0 1
Exemplo Crossover e Mutao

Pais Filhos
crossover mutao
A1 = 1 1 0 0 1 11011 11011
A2 = 0 1 1 1 1 01101 110 01
Nova
crossover populao
mutao
A2 = 0 1 1 1 1 01111 10111
A1 = 1 1 0 0 1 11001 11001
Exemplo Segunda gerao

cromossomos prob. de
x f (x )
seleo
1 1 10 1 1 27 729 29,1%
2 1 10 0 1 25 625 24,9%
3 1 10 0 1 25 625 24,9%
4 1 01 1 1 23 529 21,1%

f ( xi )
Probabilidade de seleo pi

N
proporcional a aptido k 1
f ( xk )
Exemplo Terceira , Quarta e Quinta geraes
x f (x )
1 1 1 01 1 27 729
Terceira 2 1 0 11 1 23 529
Gerao
3 0 1 11 1 15 225
4 0 0 11 1 7 49
x f (x )
1 11111 31 961
Quarta 2 11011 27 729
Gerao
3 10111 23 529
4 10111 23 529
x f (x )
1 11111 31 961
Quinta
Gerao 2 11111 31 961
3 11111 31 961
4 10111 23 529
Algoritmo gentico no R
Pacotes
GA
genealg
Funo GA do Pacote GA

Tipo de GA (use binary


para GA tradicional)
Funo de aptido
Nmero de bit do cromossomo, se binrio

Regio de
busca
Tamanho da populao
Taxa de crossover
Taxa de mutao
elitismo
Nmero mximo de iteraes

BUSCA SOLUO QUE MAXIMIZA


A FUNO OBJETIVO

Semente do gerador de nmeros aleatrios


Exemplo Problema de maximizao de funo multimodal (LACERDA et al, 1999)

Use o algoritmo gentico para encontrar o nmero


inteiro que maximiza a funo f(x) = xsen(10x)+1 no
intervalo de busca [-1 , 2]. Mximo global
x = 1,85055
min=-1 f(x) = 2,85027
max=2 Mximos locais
nbits=22
f=function(x) x*sin(10*pi*x)+1
curve(f, min, max)
Exemplo Programa R

library(GA)
numbits=22 # nmero de genes do cromossomo

# funo de ativao
fa <- function(x) {
assign("minimo",min, envir = .GlobalEnv)
assign("maximo",max, envir = .GlobalEnv)
assign("nbits",numbits, envir = .GlobalEnv)
real = minimo+binary2decimal(x)*(maximo-minimo)/(2^nbits-1)
saida=real*sin(10*pi*real)+1
return(saida)
}

# busca a soluo tima


GA <- ga(type = "binary", fitness = fa, nBits=numbits,popSize=100,maxiter=100)

# soluo tima
xotimo=minimo+binary2decimal(GA@solution)*(maximo-minimo)/(2^numbits-1)
yotimo=f(xotimo) xotimo a soluo tima decodificada
Exemplo Resultado
summary(GA)

Valor da funo f(x) na soluo


tima (mximo global)

Soluo tima codificada no cromossomo

print(xotimo) 1.850587
print(yotimo) 2.850272
Exemplo Resultado
plot(GA)
Exemplo Primeira gerao
GA <- ga(type = "binary", fitness = fa, nBits=numbits,popSize=100,maxiter=1)
pop= GA@population
realpop=apply(pop,1,binary2decimal)
xpop=minimo+realpop*(maximo-minimo)/(2^numbits-1)
ypop=apply(pop,1,fa)
curve(f, min, max)
points(xpop,ypop,pch=20,col="black",cex=2)
Exemplo Dcima gerao
GA <- ga(type = "binary", fitness = fa, nBits=numbits,popSize=100,maxiter=10)
pop= GA@population
realpop=apply(pop,1,binary2decimal)
xpop=minimo+realpop*(maximo-minimo)/(2^numbits-1)
ypop=apply(pop,1,fa)
curve(f, min, max)
points(xpop,ypop,pch=20,col="black",cex=2)
Exemplo 25 gerao
GA <- ga(type = "binary", fitness = fa, nBits=numbits,popSize=100,maxiter=25)
pop= GA@population
realpop=apply(pop,1,binary2decimal)
xpop=minimo+realpop*(maximo-minimo)/(2^numbits-1)
ypop=apply(pop,1,fa)
curve(f, min, max)
points(xpop,ypop,pch=20,col="black",cex=2)
Problema da Mochila (knapsack problem)
Objetivo: preencher uma mochila com objetos de diferentes pesos e valores.
O objetivo que se preencha a mochila com o maior valor possvel, no
ultrapassando o peso mximo.

Suponha uma mochila com capacidade total W e um conjunto de n itens


distintos, cada um com um peso w1,...wn e valor v1,...,vn. Que quantidades
x1,..,xn dos n itens devem ser colocados na mochila para maximizar o valor da
mochila?

Problema de otimizao combinatria.

unbounded
knapsack
problem (UKP)

xiZ , xi um nmero inteiro


https://en.wikipedia.org/wiki/Knapsack_problem
Exemplo 0-1 knapsack problem com algoritmo gentico (Scrucca, 2013)

Maximizar o valor da mochila sujeito


capacidade da mochila

p = c(6, 5, 8, 9, 6, 7, 3) # valores
w = c(2, 3, 6, 7, 5, 9, 4) # pesos
W = 9 # capacidade da mochila

knapsack <- function(x) {


f = sum(x*p) # funo objetivo valor da mochila
penalty = sum(w)*abs(sum(x*w)-W) # penalidade
f - penalty # funo de aptido
}
Aplicao do algoritimo gentico em um
problema de otimizao com restrio
library(GA)
GA <- ga(type = "binary", fitness = knapsack, nBits = length(w), maxiter =
1000, run = 200, popSize = 20)

summary(GA)
sum(p * GA@solution) # valor da mochila
sum(w * GA@solution) # peso da mochila
Exemplo 0-1 knapsack problem
summary(GA)

Itens 5 e 7 selecionados
p = c(6, 5, 8, 9, 6, 7, 3) # valores
w = c(2, 3, 6, 7, 5, 9, 4) # pesos
sum(p * GA@solution) # valor da mochila
sum(w * GA@solution) # peso da mochila
Outras representaes (Linden, 2008)
Representao binria (algoritmo gentico clssico)
Soluo representada por um cromosso com genes binrios (vetor com
elementos binrios, conforme slides anteriores)
Exemplo: problema da mochila

Representao baseada em ordem


Soluo representada por uma sequncia de nmeros inteiros que indica
a ordem de execuo de atividades (vetor de nmeros inteiros)
Exemplo: problema do caixeiro viajante

Repressentao real
Soluo representada por um cromossomo cujos genes so codificados
como nmeros reais (vetor de nmeros reais)
Exemplo: otimizao da carteira de investimentos

Representaes hbridas tambm so possveis

Os mecanismos de cruzamento e mutao dependem do tipo de


representao adotada para os cromossomos.
Cruzamento na representao baseada em ordem (Linden, 2008)

Cromossomos pais
pai
me
Gere string de seleo com bits {0,1} aleatrios

Copie bits do pai associados com 1 no string de seleo

Permute os bits no selecionado do cromossomo pai


Filho 1 para que apaream na mesma ordem do cromossomo me

1,4,7,3 7,4,1,3
Preencha o cromossomo do filho 1
Cruzamento na representao baseada em ordem (Linden, 2008)

Cromossomos pais
pai
me
Gere string de seleo com bits {0,1} aleatrios

Copie bits da me associados com 1 no string de seleo

Permute os bits no selecionado do cromossomo me


Filho 2 para que apaream na mesma ordem do cromossomo pai

7,2,1,3 1,7,3,2
Preencha o cromossomo do filho 1
Cruzamento na representao real (Linden, 2008)

Cruzamento semelhante ao mtodo usado na representao binria

Cromossomos pais
pai
me
Cruzamento: selecione um ponto aleatrio e troque os bits
entre os cromossomos pais

Filhos
Cruzamento na representao real (Linden, 2008)
Mtodo alternativo
Cromossomos pais para o cruzamento
na repsentao real
pai
me
Em cada gene sorteie nmero aleatrios no intervalo entre o
mnimo e o mximo definidos nos cromossomos pais

Filhos
Mutao na representao baseada em ordem (Linden, 2008)
Cromossomo original

Permutao de dois bits selecionados aleatoriamente

Mutao

Escolha dois pontos aleatoriamente e permute os elementos


entre eles

Mutao
Mutao na representao real (Linden, 2008)
Cromossomo original

Selecione um gene aleatoriamente e precha o gene


seleciondo com um nmero aleatrio no intervalo entre o
mnimo e o mximo para o gene selecionado

Mutao
Problema do caixeiro viajante (travelling salesman problem)
Objetivo: para um dado conjunto de cidades de rotas entre elas, encontre um
circuito que possua a menor distncia, comeando numa cidade qualquer,
visitando cada cidade precisamente uma vez e regressando cidade inicial

Problema de otimizao combinatria.

Seleciona apenas uma rota


de sada em cada cidade

n cidades Evita subrotas Seleciona apenas uma rota


de entrada em cada cidade

https://en.wikipedia.org/wiki/Travelling_salesman_problem
Problema do caixeiro viajante (travelling salesman problem)
Formulao combinatria.

https://pt.wikipedia.org/wiki/Problema_do_caixeiro-viajante

O tamanho do espao de busca aumenta exponencialmente


em funo de n, o nmero de cidades
http://www.math.uwaterloo.ca/tsp/

G. Dantzig, R. Fulkerson, and S. Johnson, "Solution


of a large-scale traveling-salesman
problem", Operations Research 2, 393-410, 1954.
https://pdfs.semanticscholar.org/ea8f/931f77608f33e7368
e1b9b05ce2ca7d187ed.pdf
http://gtresearchnews.gatech.edu/newsrelease/salesman.htm

World tour
1.904.711cidades

http://www.math.uwaterloo.ca/tsp/world/images/worldmoll.html
7,515,772,212 meter tour length (May 24, 2013)
7,515,778,188 (October 25, 2011)
7,515,786,987 (April 4, 2011)
Lower bound
7,515,790,345 (October 10, 2010) 7.512.218.268
7,515,877,991 (May 12, 2009) meters
7,515,947,511 (November 27, 2008)
7,517,285,610 (September 16, 2003)

World tour
1.904.711cidades.
100,000-city Mona Lisa TSP

Leonardo da
Vincis Mona Lisa
as a TSP. Tour found
by Yuichi Nagata.
March 17, 2009: TOUR =
5757191, GAP = 256. Yuichi
Nagata has improved the best
known tour result by 8 units!
His solution was found via
series of computations with a
genetic algorithm that he has
designed.

http://www.math.uwaterloo.ca/tsp/data/ml/monalisa.html
http://www.math.uwaterloo.ca/tsp/data/art/index.html
Exemplo do Problema do Caixeiro Viajante (Scrucca, 2013)
data("eurodist", package = "datasets)
D = as.matrix(eurodist) # matriz de distncias entre 21 cidades da Europa

# Comprimento total de um roteiro (Tour length)


tourLength <- function(tour, distMatrix) {
tour = c(tour, tour[1]) roteiro
route = embed(tour, 2)[,2:1] roteiro comea e
termina na mesma
sum(distMatrix[route]) cidade
} Tour length Sequencia de rotas
(origem,destino) no
roteiro
# Funo de aptido
# minimizar o tour length
tspFitness = function(tour, ...) 1/tourLength(tour, ...)
Maximizar o Inverso do
tour length equivale a
minimizar o tour length
Exemplo do Problema do Caixeiro Viajante
# Executa algoritmo gentico
GA <- ga(type = "permutation",fitness = tspFitness, distMatrix = D,
min = 1, max = attr(eurodist, "Size"), popSize = 50, maxiter = 5000, run =
500, pmutation = 0.2)
Representao do
summary(GA) cromossomo baseada
apply(GA@solution, 1, tourLength, D) em ordem

Comprimento do menor
roteiro 12842 Km

2 roteiros
Exemplo do Problema do Caixeiro Viajante
# Mapa do roteiro timo determinado pelo algoritmo gentico
mds = cmdscale(eurodist) # faz escalonamento multidimensional (MDS)
x = mds[, 1] # abscissas das cidades no mapa gerado pelo mds
y = -mds[, 2] # oordenada das cidades no mapa gerado pelo mds
plot(x, y, type = "n", asp = 1, xlab = "", ylab = "")
abline(h = pretty(range(x), 10), v = pretty(range(y), 10),col = "light gray")

Escalonamento multidimensional Coordenadas das


cidades em um mapa
MDS
Matriz de distncias
Multidimensional
entre as cidades
Scaling

tour = GA@solution[1, ] # roteiro timo


tour = c(tour, tour[1]) # roteiro comea e termina na primeira cidade
n = length(tour) # nmero de cidades + 1
arrows(x[tour[-n]], y[tour[-n]], x[tour[-1]], y[tour[-1]],length = 0.15, angle =
25, col = "steelblue", lwd = 2)
text(x, y, labels(eurodist), cex=0.8)
Exemplo caixeiro viajante

Roteiro para as frias

21 cidades

12842 km
Referncias bibliogrficas

ARENALES, M.; ARMENTANO, V.; MORABITO, R.; YANASSE, H. Pesquisa Operacional, Rio de Janeiro:
Campus, 2007.

CORRAR, L.J.M PAULO, E.; DIAS FILHO, J.M. Anlise multivariada para os cursos de administrao,
cincias contbeis e economia, So Paulo: Editora Atlas, 2007.

LACERDA, E.G.M.; CARVALHO, A.C.P.L.F.; LUDERMIR, T.B, Um tutorial sobre algoritmos genticos, RITA,
Volume IV, Nmero 2, Julho, 1999

LACHTERMACHER, G. Pesquisa Operacional na Tomada de Decises. Rio de Janeiro: Campus, 2006.

LINDEN, R. Algortimos genticos: uma importante ferramenta da inteligncia computacional, Rio de


Janeiro, Brassport, 2008.

LUDERMIR, T.B. Algoritmos genticos, http://slideplayer.com.br/slide/48747/, acessado em 22/12/2016.

PESSANHA, J.F.M.; FIGUEIRA DE MELO, M.A.R.; BARROS, M.; SOUZA, R.C. Avaliao dos custos
operacionais eficientes das empresas de transmisso do setor eltrico Brasileiro: uma proposta de
adaptao do modelo dea adotado pela ANEEL, Pesquisa Operacional, V. 30, n. 3, Sept/Dec. 2010

RAGSDALE, C.T. Spreadsheet Modeling & Decision Analysis: a practical introduction to management
science, Fourth Edition, Thomson South-Western, 2004.

SCRUCCA, L. GA: A package for Genetic Algorithm in R, Journal of Statistical Software, April, 2013, V. 53,
n. 4, 2013.
Uma boa cabea e um bom corao formam sempre
uma combinao formidvel.
Nelson Mandela

Вам также может понравиться