<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>