Я пытаюсь сделать симуляцию проблемы линейного программирования. Модель имеет функцию obj
и некоторые ограничения. В этом случае я вводил 2 значения, которые случайным образом вытягиваются из нормального распределения.Loop через набор элементов в R
Затем я моделирую модель оптимизации 10.000 раз, используя for-loop. Я знаю, что это плохая практика R для использования for-loops, но скорость в этом случае не является моей проблемой.
#List of 10000 random, normally distributed observations:
Demand = rnorm(10000, mean=5, sd=2.5)
Demand
Performance = rnorm(10000, mean=100, sd=6)
Performance
Optimas = NULL
#combined_list = c(Demand, Performance)
for (i in Performance){
op <- OP(objective = c(2.5, 4, i), #Performance value[i]: works fine
L_constraint(L = matrix(c(1, 0, 0, #LHS
0, 1, 0,
0, 0, 1),
ncol=3, nrow = 3,
byrow = TRUE),
dir = c("<=", "<=", "<="),
rhs = c(50, 70, Demand)), #Demand value[i]: should go here
maximum = TRUE,
types = c("B", "I", "I"))
Optima <- ROI_solve(op, solver = "glpk") #solve
print(Optima)
print(i)
Optimas = rbind(Optimas, Optima)
}
Optimas <- as.data.frame(Optimas)
Optimas$objval <- as.numeric(Optimas$objval)
hist(Optimas$objval)
Как показано выше, мой цикл не только идти корыто одну переменную (Performance), где я хочу значение спроса на ряд (I) в векторе Demand ввести в модель, в то же время, значение производительности для строки (i) в векторе производительности.
Общая цель состоит в том, чтобы иметь 10.000 симуляций модели LP, где как значения производительности, так и значения спроса появляются только один раз (в качестве другого цикла за пределами того, который у меня уже есть, будет производиться декартово произведение два списка).
Любая помощь будет высоко оценена.
Спасибо за ответ :-) Используемый пакет ROI для оптимизации – MikeR