20. Задача линейного программирования
1. Определение
Задача линейного программирования — это задача нахождения максимального или минимального значения линейной функции нескольких переменных при линейных ограничениях в виде равенств и неравенств.
Линейная функция, значение которой требуется оптимизировать, называется целевой функцией:
Здесь — переменные задачи, а — заданные коэффициенты.
Ограничения имеют вид
или
На некоторые или на все переменные могут накладываться ограничения на знак, например .
2. Задача максимизации
Стандартную задачу максимизации можно записать в виде
при условиях
Переменные могут не иметь ограничений на знак.
В матричной форме целевая функция записывается как
3. Задача минимизации
Стандартную задачу минимизации можно представить в виде
при условиях
4. Допустимые и оптимальные решения
Вектор
удовлетворяющий всем ограничениям задачи, называется допустимым решением, или допустимым планом.
Множество всех допустимых решений обозначим через :
Поскольку все ограничения линейны, множество является выпуклым многогранным множеством.
Допустимое решение
называется оптимальным, если на нём целевая функция достигает наибольшего или наименьшего значения среди всех допустимых решений.
Для задачи максимизации:
Для задачи минимизации:
Число
называется оптимальным значением целевой функции.
5. Возможные случаи
При решении задачи линейного программирования возможны следующие ситуации:
- Множество пусто — задача не имеет допустимых решений.
- Целевая функция не ограничена на — конечного оптимального значения нет.
- Оптимальное решение существует и является единственным.
- Существует несколько оптимальных решений. В этом случае оптимальными являются все точки некоторой грани допустимого множества.
Если оптимальное значение достигается, то в стандартной задаче линейного программирования существует оптимальное решение, являющееся вершиной допустимого многогранника.
6. Приведение задач к эквивалентным формам
Задачу минимизации можно свести к максимизации:
Неравенство со знаком преобразуется в неравенство со знаком умножением обеих частей на .
Переменную без ограничения на знак можно представить как
Неравенства можно преобразовать в равенства введением дополнительных неотрицательных переменных. Поэтому различные формы записи задачи линейного программирования эквивалентны друг другу.