Я пытаюсь решить проблему MIP в R с помощью пакета OMPR. Теоретическая модель верна, так как она работает в GAMS, но мне нужно, чтобы она работала и в R. Ниже мой код, но когда я его запускаю, я получаю сообщение об ошибке
"Ошибка в check_for_unknown_vars_impl (модель, the_ast):
Выражение содержит переменную, которая не является частью модели. "
Я проверил некоторые дискуссионные форумы в Интернете, но ни один из них до сих пор не работал.
#Loading packages
library(dplyr)
library(tidyr)
library(ROI)
library(ROI.plugin.symphony)
library(ROI.plugin.cplex)
library(ROI.plugin.glpk)
library(ompr)
library(ompr.roi)
library(magrittr)
#Data
Work_Order <- c(1:5)
Work_Center <- c(1:5)
Operations <- c(1:10)
Days <- c(1:100)
Early_Start <- c(2, 2, 1, 1, 5, 3, 3, 3, 2, 2)
Late_Finish <- c(9, 9, 9, 9, 14, 17, 17, 17, 12, 12)
Available_Capacity <- c(4, 2.5, 4, 4, 4)
Work_Required <- c(10, 16, 20, 30, 8, 8, 8, 10, 12, 14)
Weight <- c(5, 5, 4, 4, 3, 2, 2, 2, 1, 1)
Big_M <- 100
#MIP Model
m <- MIPModel() %>%
add_variable(e[k,t], k=Operations, t=Days, type = 'binary') %>%
add_variable(y[k,t], k=Operations, t=Days, type = 'binary') %>%
add_variable(L[k], k=Operations) %>%
add_variable(x[k,t], k=Operations, t=Days) %>%
add_variable(SW[i], i=Work_Order) %>%
add_variable(FW[i], i=Work_Order) %>%
add_variable(SO[k], k=Operations) %>%
add_variable(FO[k], k=Operations) %>%
add_constraint(sum_expr(x[k,t], t=Days) == Work_Required[k], k=Operations)
%>%
add_constraint(x[1,t] <= Available_Capacity[1], t=Days) %>%
add_constraint(x[2,t]+x[3,t]+x[9,t] <= Available_Capacity[2], t=Days) %>%
add_constraint(x[4,t]+x[10,t] <= Available_Capacity[3], t=Days) %>%
add_constraint(x[7,t] <= Available_Capacity[4], t=Days) %>%
add_constraint(x[5,t]+x[6,t]+x[8,t] <= Available_Capacity[5], t=Days) %>%
add_constraint(x[k,t] <= Big_M*e[k,t], k=Operations, t=Days) %>%
add_constraint(x[k,t] <= Big_M*(1-y[k,t]), k=Operations, t=Days) %>%
add_constraint(sum_expr(t*(e[k,t]-e[k,(t-1)]), t=Days) == SO[k],
k=Operations) %>%
add_constraint(sum_expr((t-1)*(y[k,t]-y[k,(t-1)]), t=Days) == FO[k],
k=Operations) %>%
add_constraint(SW[1] <= SO[1]) %>%
add_constraint(SW[1] <= SO[2]) %>%
add_constraint(SW[2] <= SO[3]) %>%
add_constraint(SW[2] <= SO[4]) %>%
add_constraint(SW[3] <= SO[5]) %>%
add_constraint(SW[4] <= SO[6]) %>%
add_constraint(SW[4] <= SO[7]) %>%
add_constraint(SW[4] <= SO[8]) %>%
add_constraint(SW[5] <= SO[9]) %>%
add_constraint(SW[5] <= SO[10]) %>%
add_constraint(FW[1] >= FO[1]) %>%
add_constraint(FW[1] >= FO[2]) %>%
add_constraint(FW[2] >= FO[3]) %>%
add_constraint(FW[2] >= FO[4]) %>%
add_constraint(FW[3] >= FO[5]) %>%
add_constraint(FW[4] >= FO[6]) %>%
add_constraint(FW[4] >= FO[7]) %>%
add_constraint(FW[4] >= FO[8]) %>%
add_constraint(FW[5] >= FO[9]) %>%
add_constraint(FW[5] >= FO[10]) %>%
add_constraint(SO[k] >= Early_Start[k], k=Operations) %>%
add_constraint(FO[k] <= Late_Finish[k]+L[k], k=Operations) %>%
add_constraint(L[k] >= 0, k=Operations) %>%
add_constraint(x[k,t] >= 0, k=Operations, t=Days) %>%
add_constraint(e[k,t]-e[k,(t-1)] >= 0, k=Operations, t=Days) %>%
add_constraint(y[k,t]-y[k,(t-1)] >= 0, k=Operations, t=Days) %>%
add_constraint(FO[k] >= 1, k=Operations) %>%
set_objective(sum_expr(Weight[k]*L[k], k=Operations),"min") %>%
solve_model(with_ROI(solver = "symphony",verbosity=1))
Буду признателен за помощь в обнаружении проблемы в коде.