<div dir="ltr">Em vez de usar o pipe você não devia chamar solve_model com a especificação do seu modelo, no seu caso <i>model</i>?</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 28, 2018 at 3:01 PM, Adriele Giaretta Biase via R-br <span dir="ltr"><<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Boa tarde pessoal,<div><br></div><div>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.</div><div><br></div><div>Copiei o erro em baixo (vermelho). Alguém já teve a experiência de encontra esse mesmo erro?<br></div><div><br></div><div><br></div><div><div>rm(list=ls(all=TRUE))</div><div><br></div><div>#install package from github</div><div>#devtools::install_github("<wbr>dirkschumacher/ompr")</div><div>#devtools::install_github("<wbr>dirkschumacher/ompr.roi")</div><div>#install.packages("ROI.plugin.<wbr>glpk")</div><div><br></div><div>library(dplyr, warn.conflicts = FALSE)</div><div>library(ROI)</div><div>library(ROI.plugin.glpk)</div><div>library(ompr)</div><div>library(ompr.roi)</div><div><br></div><div>frig = rep(seq(1, 4,1), rep((150*40),4) )</div><div>carro = rep(rep(seq(1, 40, 1), rep(150, 40)), 4)</div><div>dias = rep( seq(1:150), 4*40)</div><div>lucro = (rnorm(4*40*150, 30,1))</div><div>merc = rep(1, length(150*40*4))</div><div>praca = rep(1, length(150*40*4))</div><div>conj_dados= cbind(frig, carro, dias, lucro, merc, praca)</div><div>DIF = 150</div><div>Trava_param <- function(DIF){</div><div> dia <- seq(1, DIF, 1) </div><div> trav <- rep(0, DIF) </div><div> praca <- rep(1, DIF) </div><div> Trava <- data.frame(dias = dia, praca = praca, Trava = trav)</div><div> return(Trava)</div><div>}</div><div>Trava = Trava_param(DIF)</div><div>Max_descasque <- 3</div><div>capac_cam <- 60</div><div>Carga_mercado_futuro <- 330</div><div>permissao_venda <- 1</div><div>bigM <- 5000</div><div><br></div><div>model <- MIPModel() %>%</div><div> </div><div> # venda do animal i para o frigorifico j no mercado m, </div><div> # dado o peso no dia k</div><div> add_variable(</div><div> x[i,j,k,m],</div><div> i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))), #1:carro,</div><div> j = as.numeric(as.vector(levels( as.factor(conj_dados[,"frig"])<wbr>))), #1:frig,</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))),</div><div> m = as.numeric(as.vector(levels( as.factor(conj_dados[,"merc"])<wbr>))),#1:merc,</div><div> type = "binary"</div><div> )%>%</div><div> </div><div> # indica a venda de animais no dia k</div><div> add_variable(</div><div> y[k],</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))),#1:dias,</div><div> type = "binary"</div><div> )%>%</div><div> </div><div> # numero de caminhoes do tipo t indo para o frigorifico j no dia k</div><div> add_variable(</div><div> total[j,k],</div><div> j = as.numeric(as.vector(levels( as.factor(conj_dados[,"frig"])<wbr>))), #1:frig,</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))), #1:dias,</div><div> type = "integer",</div><div> lb = 0</div><div> )%>%</div><div> </div><div> # indica qual mercado esta sendo usado</div><div> add_variable(</div><div> w[k,m],</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))),#1:dias,</div><div> m = as.numeric(as.vector(levels( as.factor(conj_dados[,"merc"])<wbr>))), #1:merc,</div><div> type = "binary"</div><div> )%>%</div><div> </div><div> # indica se o boi i foi vendido na praca u no dia k</div><div> add_variable(</div><div> t[i,u,k],</div><div> i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))), # 1:carro,</div><div> u = as.numeric(as.vector(levels( as.factor(conj_dados[,"praca"]<wbr>)))), #1:praca,</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))), #1:dias,</div><div> type = "binary"</div><div> )%>%</div><div> </div><div> # maximizar</div><div> set_objective(</div><div> sum_expr(</div><div> x[i,j,k,m]*lucro[i,j,k,m], </div><div> i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))),# 1:carro,</div><div> j = as.numeric(as.vector(levels( as.factor(conj_dados[,"frig"])<wbr>))),# 1: frig,</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))),#1:dias,</div><div> m = as.numeric(as.vector(levels( as.factor(conj_dados[,"merc"])<wbr>))) ) #1:merc)</div><div> - sum_expr(</div><div> y[k],</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))) )#1:dias)</div><div> + sum_expr(130*t[i,u,k]*15,</div><div> i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))), #1:carro,</div><div> u = as.numeric(as.vector(levels( as.factor(conj_dados[,"praca"]<wbr>)))), #1:praca,</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))) )#1:dias)</div><div> ) %>%</div><div> </div><div> #Um animal eh vendido uma unica vez</div><div> add_constraint(</div><div> sum_expr(</div><div> x[i,j,k,m],</div><div> i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))),#1:carro,</div><div> j = as.numeric(as.vector(levels( as.factor(conj_dados[,"frig"])<wbr>))),#1: frig,</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))), # 1:dias,</div><div> m = as.numeric(as.vector(levels( as.factor(conj_dados[,"merc"])<wbr>))))#1:merc)</div><div> + sum_expr(</div><div> t[i,u,k],</div><div> i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))),# 1:carro,</div><div> u = as.numeric(as.vector(levels( as.factor(conj_dados[,"praca"]<wbr>)))),# 1: praca,</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))))#1:dias,</div><div> <= 1</div><div> )%>%</div><div> </div><div> # A capacidade do caminhao eh respeitada</div><div> add_constraint(</div><div> sum_expr(</div><div> x[i,j,k,m],</div><div> i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))),#1:carro,</div><div> m = as.numeric(as.vector(levels( as.factor(conj_dados[,"merc"])<wbr>))))#1:merc)</div><div> <= total[j,k] * capac_cam,</div><div> j = as.numeric(as.vector(levels( as.factor(conj_dados[,"frig"])<wbr>))),#1:frig,</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))) #1:dias</div><div> )%>%</div><div> </div><div> # Caso exista uma venda no dia k eh calculado um </div><div> # descasque para mercado a vista e a prazo</div><div> add_constraint(</div><div> sum_expr(</div><div> x[i,j,k,m],</div><div> i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))),#1:carro,</div><div> j = as.numeric(as.vector(levels( as.factor(conj_dados[,"frig"])<wbr>))),#1:frig,</div><div> m = as.numeric(as.vector(levels( as.factor(conj_dados[,"merc"])<wbr>))) )#1:merc)</div><div> + sum_expr(</div><div> t[i,u,k],</div><div> i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))), #1:carro,</div><div> u = as.numeric(as.vector(levels( as.factor(conj_dados[,"praca"]<wbr>)))) )#,1:praca)</div><div> <= bigM * y[k],</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>)))# 1:dias</div><div> )%>%</div><div> </div><div> # Respeito ao numero maximo de descasques</div><div> add_constraint(</div><div> sum_expr(</div><div> y[k],</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))) ) #1:dias)</div><div> <= Max_descasque</div><div> )%>%</div><div><br></div><div> # Desigualdade valida para ajudar na convergencia - </div><div> # todos os animais devem ser vendidos </div><div> add_constraint(</div><div> sum_expr(</div><div> x[i,j,k,m],</div><div> i = as.numeric(as.vector(levels(<wbr>as.factor(conj_dados[, "carro"])))),</div><div> j = as.numeric(as.vector(levels(<wbr>as.factor(conj_dados[, "frig"])))),</div><div> k = as.numeric(as.vector(levels(<wbr>as.factor(conj_dados[, "dias"])))),</div><div> m = as.numeric(as.vector(levels(<wbr>as.factor(conj_dados[, "merc"])))) )</div><div> == 40</div><div> )%>%</div><div> </div><div><br></div><div> # A carga vendida para mercado futuro eh de pelo menos 330 arobas</div><div> add_constraint(</div><div> 15*130*sum_expr(</div><div> t[i,u,k], i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))) ) #1:carro)</div><div> <= Carga_mercado_futuro*Trava[k,<wbr>u],</div><div> u = as.numeric(as.vector(levels( as.factor(conj_dados[,"praca"]<wbr>)))), #1:praca,</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))) #1:dias </div><div> )%>%</div><div> </div><div> # Permissao para venda no mercado futuro</div><div> add_constraint(</div><div> sum_expr(</div><div> t[i,u,k],</div><div> i = as.numeric(as.vector(levels( as.factor(conj_dados[,"carro"]<wbr>)))), #1:carro,</div><div> u = as.numeric(as.vector(levels( as.factor(conj_dados[,"praca"]<wbr>)))), #1:praca,</div><div> k = as.numeric(as.vector(levels( as.factor(conj_dados[,"dias"])<wbr>))) )#1:dias)</div><div> <= bigM * permissao_venda</div><div> )%>%</div><div> saveRDS(model, file = "model.rds") %>%</div><div> <font color="#0000ff"> solve_model(with_ROI(solver = "glpk"))</font><br></div><div><br></div><div><span style="color:rgb(255,0,0)">Error in on_element(push, inplace_update_ast, get_ast_value, element) : </span><br></div><div><div><font color="#ff0000"> argument "ast" is missing, with no default</font></div></div><div><br></div><div class="gmail-m_6206969911882369941gmail_signature"><div dir="ltr"><div dir="ltr"><div style="font-family:times,serif;margin:0cm 0cm 0.0001pt;font-size:16px"><span style="white-space:pre-wrap"> </span><br></div></div></div></div>
</div></div>
<br>______________________________<wbr>_________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/<wbr>cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-<wbr>guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>