Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Claudir Oliveira
coliverra@gmail.com
IV Encontro de Economia
22 de Outubro de 2016
Sumrio
1
Studio
Introduo
Problemas de Otimizao
Programao Linear
Exemplos
RStudio
Instalao de Pacotes
Lista de Comandos
Soluo de PL com R
e que x1 , x2 , ..., xn 0.
Z = c1 x1 + c2 x2 (2)
1 Modelagem Matemtica.
I Na forma de inequaes:
2x1 + x2 16
x1 + 2x2 11
x1 + 3x2 15
x1 , x2 0
1 Modelagem Matemtica.
max(x1 , x2 ) : Z = x1 + 1, 5x2
Sujeita
s seguintes restries:
2x 1 + 2x2 160
x1 + 2x2 120
4x1 + 2x2 280
x1 , x2 0
e que x1 , x2 , ..., xn 0.
Este modelo pode ser associado a uma pessoa que deseja minimizar
o custo da sua dieta diria.
1 As atividades apresentam os consumos dos alimentos que
podero entrar na dieta e os recursos so as vitaminas que no
podem deixar de ser supridas pela dieta
Este modelo pode ser associado a uma pessoa que deseja minimizar
o custo da sua dieta diria.
1 As atividades apresentam os consumos dos alimentos que
podero entrar na dieta e os recursos so as vitaminas que no
podem deixar de ser supridas pela dieta
Funo objetivo:
Minimizar:
m X
X n
Z = cij xij
i=1 j=1
Sujeito a
n
X
xij = Fi
j=1
m
X
xij = Dj
i=1
1 Modelagem Matemtica.
Minimizar:
Sujeito a:
I Restrio de produo:
x11 + x12 + x13 = 120
x21 + x22 + x23 = 80
x31 + x32 + x32 = 80
I Restrio de capacidade:
x11 + x21 + x31 = 150
x12 + x22 + x32 = 70
x13 + x23 + x33 = 60
Rotas:
ID Orig. ID Dest. Produo
1 5 5,1
1 6 3,2
2 5 6,7
2 6 7,2
3 5 2,8
3 6 4,1
4 5 6,9
4 6 5,3
Para a solucao: Podemos considerar o problema em termos de
bordas. Se 1, 2, 3, 4 so os produtores e 5, 6 os exportadores,
vamos dizer e15 o fluxo do produtor 1 exportando a 5, e25 do
produtor 2 exportando a 5 e assim por diante.
I Inslao de pacotes:
> install.packages("lpSolveAPI") #opo 1
> install.packages("lpSolve") #opo 2
I Chamando as libs:
> library("lpSolve")
> library("lpSolveAPI")
get.basis(lpexemplo)
I As trs primeiras colunas so para variveis de folga.
I Assim, o retorno de get.basis(), que -7, -2, -3, so coluna 7,
2, 3, que representam varivel 4, varivel folga 2 e 3.
get.basis(lpexemplo)
I As trs primeiras colunas so para variveis de folga.
I Assim, o retorno de get.basis(), que -7, -2, -3, so coluna 7,
2, 3, que representam varivel 4, varivel folga 2 e 3.
I Cdigo
library(lpSolveAPI)
lprec <- make.lp(5,6)
set.objfn(lprec, obj=c(1,1), indices=c(5,6))
set.row(lprec, 1, xt=c(1,1), indices=c(1,2))
set.row(lprec, 2, xt=c(1,1), indices=c(3,4))
set.row(lprec, 3, xt=c(1,1), indices=c(2,4))
set.row(lprec, 4, xt=c(1,1,-1), indices=c(1,2,5))
set.row(lprec, 5, xt=c(1,1,1,-1), indices=c(2,3,4,6))
set.type(lprec, 1, type="binary")
set.type(lprec, 2, type="binary")
set.type(lprec, 3, type="binary")
set.type(lprec, 4, type="binary")
set.type(lprec, 5, type="integer")
set.type(lprec, 6, type="integer")
set.constr.type(lprec, types=c(rep("<=",3), rep("=",2)))
set.rhs(lprec, b=c(2,5,3,0,0))
Claudir Oliveira | Introduo Programao Linear com RStudio
LINPROG Package
Exemplo
30
Studio
1 Problema de Mistura:
1 Problema de Mistura:
Instalao do pacote:
> install.packages("linprog")
> library("linprog")
> args(solveLP)
Soluo
> c<-c(0.48, 0.4, 0.29) # Funcao Objetivo
> names(c)<-c("Gas.Verde","Gas.Azul","Gas.Amarela")
> b<-c(3200000, 2400000, 1100000) # Vetor b
> names(b)<-c("Gas.Pura","Octanas","Aditivos")
> # Atribuindo as restricoes
> A<-rbind(c( 0.22, 0.55, 0.72), c(0.50, 0.32, 0.20),
c(0.28, 0.13, 0.08))
> solveLP(c, b, A, TRUE)