Условия линейности, требуемые LP solver, не выполняются

#excel #linear-programming #solver

#excel #линейное программирование #решатель

Вопрос:

Итак, для задания я должен найти расписание, которое минимизирует сумму абсолютных различий между требуемым и запланированным количеством работников за интервал времени путем решения модели целочисленной линейной оптимизации.

Поэтому я смоделировал свое расписание как задачу с заданным покрытием и создал строку с требуемым количеством рабочих и строку с фактическим количеством рабочих.

введите описание изображения здесь

Я беру суммирование абсолютных различий между строками как объект и пытаюсь свести это к минимуму.

 =SUM(ABS(C39:Z39-C33:Z33))
  

Однако я получаю сообщение об ошибке «Условия линейности, требуемые LP-решателем, не выполнены«, и я не понимаю, почему, поскольку в отчете о линейности указано «да» для всего.

введите описание изображения здесь

* X_i — количество раз, когда выбирается сдвиг.

Ответ №1:

ABS() не является линейной функцией. Кто знает, почему excel не вызывает это … у внутреннего решателя нет отличной репутации.

Вы можете попытаться просто изменить свою OBJ-функцию на некоторые задания со штрафом * uncovered и посмотреть, сможете ли вы запустить и запустить свой режим. Тогда, возможно, вычтите использованных рабочих из доступных, суммируйте это и добавьте штраф за неиспользуемые рабочие….

Ответ №2:

Как уже указывал @AirSquid, абсолютное значение не является линейной функцией. Однако в вашем контексте его можно линеаризовать. Вы можете нам это

минимизация abs(sum x_i)

эквивалентно

минимизация sum a_i , где a_i находятся новые переменные с ограничениями a_i>=x_i, a_i>=-x_i .