Ошибка в задаче оптимизации с пакетом ompr в R - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь закодировать проблему оптимизации с помощью пакета ompr в R. Я попробовал несколько примеров, и теперь мне было удобно пытаться реализовать простую версию моей проблемы.

Я получаю несколько ошибок, еслиЯ пытаюсь изменить код, который у меня есть. Это код, который я использовал. Первая ошибка, которую я получаю:

Error in set_objective(sum(skater_proj[i] * skaters_lineup[i]) + sum(goalie_proj[f] *  : 
  unused arguments (i = 1:num_skaters, f = 1:num_goalies)

Вот код:

model <- MIPModel() %>% 
  add_variable(skaters_lineup[i],i = 1:num_skaters,type = "binary") %>%
  add_variable(goalies_lineup[i],i = 1:num_goalies,type = "binary") %>%
  add_constraint(sum(goalies_lineup[i]) == 1, i=1:num_goalies)%>%
  add_constraint(sum(skaters_lineup[i]) == 8, i=1:num_skaters)%>%
  add_constraint(sum(centers[i]*skaters_lineup[i]) <= 3, i=1:num_skaters)%>%  
  add_constraint(sum(centers[i]*skaters_lineup[i]) >= 2, i=1:num_skaters)%>%  
  add_constraint(sum(wingers[i]*skaters_lineup[i]) <= 4, i=1:num_skaters)%>%  
  add_constraint(sum(wingers[i]*skaters_lineup[i]) >= 3, i=1:num_skaters)%>%   
  add_constraint(sum(defenders[i]*skaters_lineup[i]) <= 3, i=1:num_skaters)%>%  
  add_constraint(sum(defenders[i]*skaters_lineup[i]) >= 2, i=1:num_skaters)%>% 
  add_constraint(sum(salary_skater[i]*skaters_lineup[i]) + sum(salary_goalie[d]*goalies_lineup[d]) <= 50000 , i=1:num_skaters,d=1:num_goalies)

set_objective(sum(skater_proj[i]*skaters_lineup[i]) + sum(goalie_proj[f]*goalies_lineup[f]),i=1:num_skaters , f = 1:num_goalies)

Если я изменю цель на:

set_objective(sum(skater_proj*skaters_lineup) + sum(goalie_proj*goalies_lineup))

, я получаю эту проблему:

Error in set_objective_(model, expression = lazyeval::as.lazy(substitute(expression),  : 
  object 'skaters_lineup' not found

Я не знаю, как это может произойти, я определил переменную раньше.

Есть у кого-нибудь идея?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...