Я использовал excel solver для решения проблемы оптимизации, и я пытаюсь реплицировать его в R.
Я нашел много пакетов, таких как optim, ROI и т.д., но кажется, что все они берут вектор только как объект для оптимизации и позволяют переменным принимать любое непрерывное значение. В моем случае у меня есть матрица ограничений, которая также должна быть удовлетворена, и мои переменные могут принимать только двоичные значения.
Вот проблема, которую я хочу решить:
A-D - это машины, 1-3 - задачи, а число в первой матрице - это значение, сгенерированное с помощью машины X для выполнения задачи Y. Ограничения: A-D может выполнять и выполнять только одну задачу (не может разделить); каждая задача может работать и обрабатываться только одной машиной.
Вот код, который я использую:
par = rep(c(0,1),6)
mat <- matrix(c(9,10,11,4,5,10,1,3,5,7,5,4), nrow = 3)
fr <- function(x) {
y= matrix(x,nrow = 4)
sum(mat %*% y)
}
a = optim(par, fr)
Некоторые вопросы: Как оптимизировать максимум, кажется, эта функция по умолчанию оптимизирует минимум? Как я могу добавить в него ограничения? Как ограничить двоичные переменные?