Линейная оптимизация минимизирует максимум значений вектора_Operational Research
Я хочу применить линейную оптимизацию. моя формулировка проблемы не на 100% правильная, поэтому я постараюсь объяснить их в тексте. мой входной набор данных DS, который имеет шесть слотов t и две строки, как показано ниже.
t1 t2 t3 t4 t5 t6
451 432 470 450 530 420
0 0 0 50 50 50
целевая функция находит минимум максимума для значений суммы столбца. например, максимальная сумма столбца в вышеуказанном наборе данных равна 580, в результате целевая функция минимизирует это максимальное значение на основе ограничений. Существует два ограничения: первое ограничение, первая строка оптимизированного набора данных равна исходному набору данных, который равен 451 432 470 450 530 420; второе ограничение - суммирование во втором ряду нового оптимизированного набора данных, равное суммированию во втором ряду исходного набора данных. ограничения кратко означают, что первая строка должна быть одинаковой, а значения второй строки можно перемещать из одного слота в другой для достижения минимальной целевой функции.
Я попытался математически написать вышеуказанную задачу следующим образом:
min z = max (colsum (DS))
при условии:
DS_new [1,] == DS [1,]
Sum (DS_new [2,]) == Sum (DS [2,])
Код в R:
DS <- mydataset
DS_new <- c()
P <- max(colSums(DS))
library(lpSolve)
objective.in <- c(P)
const.mat <- matrix(c(DS_new[1,],sum(DS_new[2,])), nrow=2,
byrow=TRUE)
const.rhs <- c(DS[1,],sum(DS[2,]))
const.dir <- c("==", "==")
optimum <- lp(direction="min", objective.in, const.mat,
const.dir, const.rhs)
Выход:
> optimum
Ошибка: не найдено подходящего решения
Однако, что я хочу, желаемый результат:
DS
t1 t2 t3 t4 t5 t6
1 451 432 470 450 530 420
2 50 50 50 0 0 0
максимальная сумма в столбце желаемого выходного набора данных составляет 530.