До сих пор при рассмотрении задач оптимизации мы не делали никаких предположений о характере целевой функции и виде ограничений. Важным разделом математического программирования является линейное программирование, изучающее задачи оптимизации, в которых целевая функция является линейной функцией проектных параметров, а ограничения задаются в виде линейных уравнений и неравенств.
Стандартная (каноническая) постановка задачи линейного программирования формулируется следующим образом: найти значения переменных , которые:
* удовлетворяют системе линейных уравнений
(4)
* являются неотрицательными, т.е.
(5)
* обеспечивают наименьшее значение линейной целевой функции
(6).
Всякое решение системы уравнений (4), удовлетворяющее системе неравенств (5), называется допустимым решением. Допустимое решение, которое минимизирует целевую функцию (6), называется оптимальным решением.
Рассмотрим пример задачи линейного программирования (транспортную задачу).
Пример. Автобаза обслуживает три овощных магазина, причем товар доставляется в магазины из двух плодоовощных баз. Нужно спланировать перевозки так, чтобы их общая стоимость была минимальной.
Введем исходные данные. Ежедневно вывозится с первой базы 12 т товара, со второй 15 т. При этом завозится в первый магазин 8 т, во второй 9 т, в третий 10 т. Стоимость перевозки 1 т товара (в рублях) с баз в магазины дается следующей таблицей:
База
Магазин
Первый
Второй
Третий
Первая
0,80
1,10
0,90
Вторая
1,00
0,70
1,20
Решение. Обозначим через количество товара, который нужно доставить с первой базы соответственно в первый, второй и третий магазины, а через количество товара, который нужно доставить со второй базы в те же магазины. Эти значения в соответствии с исходными данными должны удовлетворять следующим условиям
(7).
Первые два уравнения этой системы описывают количество товара, которое необходимо вывезти с первой и второй баз, а три последних — сколько нужно завезти товара в каждый магазин.
К данной системе уравнений нужно добавить систему неравенств
(8),
которая означает, что товар обратно с магазинов на базы не вывозится. Общая стоимость перевозок с учетом приведенных в таблице расценок выразится формулой
(9).
Таким образом, мы пришли к типичной задаче линейного программирования: найти оптимальные значения проектных параметров , удовлетворяющих условиям (7),(8) и минимизирующих общую стоимость перевозок (9).
Из анализа системы уравнений (7) следует, что только первые четыре уравнения являются независимыми, а последнее можно получить из них (путем сложения первого и второго уравнений и вычитания из этой суммы третьего и четвертого уравнений). Поэтому фактически имеем систему
(10).
Число неизвестных на два больше числа уравнений, поэтому выразим через и все остальные неизвестные. Получим
(11).
Поскольку в соответствии с (8) все проектные параметры должны быть неотрицательны, то с учетом (11) получим следующую систему неравенств:
(12).
Эти неравенства можно записать в более компактном виде:
, , (13).
Данная система неравенств описывает все допустимые решения рассматриваемой задачи. Среди всех допустимых значений свободных параметров и нужно найти оптимальные, минимизирующие целевую функцию . Формула (9) для нее с учетом соотношений (11) принимает вид
(14).
Отсюда следует, что стоимость перевозок растет с увеличением значений ; поэтому нужно взять их наименьшие допустимые значения. В соответствии с (13)
; примем . Исключая один из параметров, например , получим . Тогда
.
Очевидно, что стоимость перевозок будет минимальной, если величина примет наибольшее значение в рамках сделанного ограничения . Таким оптимальным будет значение . Тогда , а оптимальные значения остальных проектных параметров можно найти по формулам (11): , , , . В этом случае минимальная общая стоимость перевозок равна р. На рисунке показана схема доставки товаров, соответствующая полученному решению. Числа указывают количество товара (в тоннах).