[R-br] Error: argument "ast" is missing, with no default (solve_model)
Adriele Giaretta Biase
adrielegbiase em gmail.com
Segunda Maio 28 15:01:26 -03 2018
Boa tarde pessoal,
estou trabalhando com modelos matemáticos de otimização usando o pacote
ompr. A ultima linha do código (azul) retorna um erro que não estou
conseguindo tratar.
Copiei o erro em baixo (vermelho). Alguém já teve a experiência de encontra
esse mesmo erro?
rm(list=ls(all=TRUE))
#install package from github
#devtools::install_github("dirkschumacher/ompr")
#devtools::install_github("dirkschumacher/ompr.roi")
#install.packages("ROI.plugin.glpk")
library(dplyr, warn.conflicts = FALSE)
library(ROI)
library(ROI.plugin.glpk)
library(ompr)
library(ompr.roi)
frig = rep(seq(1, 4,1), rep((150*40),4) )
carro = rep(rep(seq(1, 40, 1), rep(150, 40)), 4)
dias = rep( seq(1:150), 4*40)
lucro = (rnorm(4*40*150, 30,1))
merc = rep(1, length(150*40*4))
praca = rep(1, length(150*40*4))
conj_dados= cbind(frig, carro, dias, lucro, merc, praca)
DIF = 150
Trava_param <- function(DIF){
dia <- seq(1, DIF, 1)
trav <- rep(0, DIF)
praca <- rep(1, DIF)
Trava <- data.frame(dias = dia, praca = praca, Trava = trav)
return(Trava)
}
Trava = Trava_param(DIF)
Max_descasque <- 3
capac_cam <- 60
Carga_mercado_futuro <- 330
permissao_venda <- 1
bigM <- 5000
model <- MIPModel() %>%
# venda do animal i para o frigorifico j no mercado m,
# dado o peso no dia k
add_variable(
x[i,j,k,m],
i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"])))),
#1:carro,
j = as.numeric(as.vector(levels( as.factor(conj_dados[,"frig"])))),
#1:frig,
k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])))),
m = as.numeric(as.vector(levels(
as.factor(conj_dados[,"merc"])))),#1:merc,
type = "binary"
)%>%
# indica a venda de animais no dia k
add_variable(
y[k],
k = as.numeric(as.vector(levels(
as.factor(conj_dados[,"dias"])))),#1:dias,
type = "binary"
)%>%
# numero de caminhoes do tipo t indo para o frigorifico j no dia k
add_variable(
total[j,k],
j = as.numeric(as.vector(levels( as.factor(conj_dados[,"frig"])))),
#1:frig,
k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])))),
#1:dias,
type = "integer",
lb = 0
)%>%
# indica qual mercado esta sendo usado
add_variable(
w[k,m],
k = as.numeric(as.vector(levels(
as.factor(conj_dados[,"dias"])))),#1:dias,
m = as.numeric(as.vector(levels( as.factor(conj_dados[,"merc"])))),
#1:merc,
type = "binary"
)%>%
# indica se o boi i foi vendido na praca u no dia k
add_variable(
t[i,u,k],
i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"])))), #
1:carro,
u = as.numeric(as.vector(levels( as.factor(conj_dados[,"praca"])))),
#1:praca,
k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])))),
#1:dias,
type = "binary"
)%>%
# maximizar
set_objective(
sum_expr(
x[i,j,k,m]*lucro[i,j,k,m],
i = as.numeric(as.vector(levels(
as.factor(conj_dados[,"carro"])))),# 1:carro,
j = as.numeric(as.vector(levels(
as.factor(conj_dados[,"frig"])))),# 1: frig,
k = as.numeric(as.vector(levels(
as.factor(conj_dados[,"dias"])))),#1:dias,
m = as.numeric(as.vector(levels(
as.factor(conj_dados[,"merc"])))) ) #1:merc)
- sum_expr(
y[k],
k = as.numeric(as.vector(levels(
as.factor(conj_dados[,"dias"])))) )#1:dias)
+ sum_expr(130*t[i,u,k]*15,
i = as.numeric(as.vector(levels(
as.factor(conj_dados[,"carro"])))), #1:carro,
u = as.numeric(as.vector(levels(
as.factor(conj_dados[,"praca"])))), #1:praca,
k = as.numeric(as.vector(levels(
as.factor(conj_dados[,"dias"])))) )#1:dias)
) %>%
#Um animal eh vendido uma unica vez
add_constraint(
sum_expr(
x[i,j,k,m],
i = as.numeric(as.vector(levels(
as.factor(conj_dados[,"carro"])))),#1:carro,
j = as.numeric(as.vector(levels(
as.factor(conj_dados[,"frig"])))),#1: frig,
k = as.numeric(as.vector(levels(
as.factor(conj_dados[,"dias"])))), # 1:dias,
m = as.numeric(as.vector(levels(
as.factor(conj_dados[,"merc"])))))#1:merc)
+ sum_expr(
t[i,u,k],
i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"])))),#
1:carro,
u = as.numeric(as.vector(levels( as.factor(conj_dados[,"praca"])))),#
1: praca,
k = as.numeric(as.vector(levels(
as.factor(conj_dados[,"dias"])))))#1:dias,
<= 1
)%>%
# A capacidade do caminhao eh respeitada
add_constraint(
sum_expr(
x[i,j,k,m],
i = as.numeric(as.vector(levels(
as.factor(conj_dados[,"carro"])))),#1:carro,
m = as.numeric(as.vector(levels(
as.factor(conj_dados[,"merc"])))))#1:merc)
<= total[j,k] * capac_cam,
j = as.numeric(as.vector(levels(
as.factor(conj_dados[,"frig"])))),#1:frig,
k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"]))))
#1:dias
)%>%
# Caso exista uma venda no dia k eh calculado um
# descasque para mercado a vista e a prazo
add_constraint(
sum_expr(
x[i,j,k,m],
i = as.numeric(as.vector(levels(
as.factor(conj_dados[,"carro"])))),#1:carro,
j = as.numeric(as.vector(levels(
as.factor(conj_dados[,"frig"])))),#1:frig,
m = as.numeric(as.vector(levels(
as.factor(conj_dados[,"merc"])))) )#1:merc)
+ sum_expr(
t[i,u,k],
i = as.numeric(as.vector(levels(
as.factor(conj_dados[,"carro"])))), #1:carro,
u = as.numeric(as.vector(levels(
as.factor(conj_dados[,"praca"])))) )#,1:praca)
<= bigM * y[k],
k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"]))))#
1:dias
)%>%
# Respeito ao numero maximo de descasques
add_constraint(
sum_expr(
y[k],
k = as.numeric(as.vector(levels(
as.factor(conj_dados[,"dias"])))) ) #1:dias)
<= Max_descasque
)%>%
# Desigualdade valida para ajudar na convergencia -
# todos os animais devem ser vendidos
add_constraint(
sum_expr(
x[i,j,k,m],
i = as.numeric(as.vector(levels(as.factor(conj_dados[, "carro"])))),
j = as.numeric(as.vector(levels(as.factor(conj_dados[, "frig"])))),
k = as.numeric(as.vector(levels(as.factor(conj_dados[, "dias"])))),
m = as.numeric(as.vector(levels(as.factor(conj_dados[, "merc"])))) )
== 40
)%>%
# A carga vendida para mercado futuro eh de pelo menos 330 arobas
add_constraint(
15*130*sum_expr(
t[i,u,k], i = as.numeric(as.vector(levels(
as.factor(conj_dados[,"carro"])))) ) #1:carro)
<= Carga_mercado_futuro*Trava[k,u],
u = as.numeric(as.vector(levels( as.factor(conj_dados[,"praca"])))),
#1:praca,
k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"]))))
#1:dias
)%>%
# Permissao para venda no mercado futuro
add_constraint(
sum_expr(
t[i,u,k],
i = as.numeric(as.vector(levels(
as.factor(conj_dados[,"carro"])))), #1:carro,
u = as.numeric(as.vector(levels(
as.factor(conj_dados[,"praca"])))), #1:praca,
k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"]))))
)#1:dias)
<= bigM * permissao_venda
)%>%
saveRDS(model, file = "model.rds") %>%
solve_model(with_ROI(solver = "glpk"))
Error in on_element(push, inplace_update_ast, get_ast_value, element) :
argument "ast" is missing, with no default
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20180528/768621c2/attachment.html>
Mais detalhes sobre a lista de discussão R-br