| Методы оптимизации |
| Конспект лекций |
Тема 3. Основные формы записи задач линейного программирования
3.1 Общая задача линейного программирования
В рассмотренных примерах (тема 2) требуется найти экстремум линейной функции от нескольких переменных; а условия, налагаемые на значения этих переменных, представляют собой линейные неравенства или уравнения. Таким образом, все эти модели являются задачами линейного программирования. Все эти примеры являются частными случаями так называемой общей задачи линейного программирования.
В
задаче линейного программирования,
представленной в общей форме, количество переменных и ограничений
заранее не
фиксируется, и для их задания используются переменные. Число переменных
задачи
обычно обозначают символом n, а
сами они обозначаются одноиндексными
переменными xj, где индекс j
задает номер переменной.
Вся совокупность переменных задачи линейного программирования задается
в виде n-мерного
вектора переменных
.
Число ограничений общего вида, являющихся линейными уравнениями или неравенствами, обычно обозначают символом m. В этих ограничениях накладываются условия на значения не одной, а нескольких переменных. Коэффициенты при неизвестных в левых частях ограничений обозначаются двухиндексными параметроми aij. Здесь индекс i задает значение номера ограничения, а j — значение номера переменной xj.
Например, а23 — это коэффициент при переменной x3 во втором ограничении задачи. Вся совокупность этих коэффициентов образует матрицу коэффициентов А = (aij), содержащую m строк и n столбцов.
Элементы
правых частей ограничений общего
вида обозначаются одноиндексными параметрами bi,
где индекс i
задает номер ограничения переменной. Вся совокупность правых
частей
ограничений задается m‑мерным вектором
,
называемым вектором ограничений.
Таким образом, любое ограничение общего вида записывается в форме:
,
где в фигурные скобки заключены возможные знаки неравенства, связывающие левую и правую часть ограничения. Если обозначить Аi = (ai1, ai2,…, ain) — i-ю строку матрицы коэффициентов А, то ограничение общего вида можно записать в более компактной форме:
.
Условия
на одиночные переменные (так
называемые верхние и нижние границы переменных), как правило,
указываются
отдельно. Часто они являются стандартными условиями
неотрицательности
переменных задачи: хj ≥ 0
для всех
или
в более краткой форме записи: х ≥
0.
Коэффициенты
при переменных в целевой функции
обозначаются символами сj,
где индекс j задает номер
переменной. Вся совокупность этих коэффициентов задается n-мерным
вектором
,
называемым вектором коэффициентов
целевой функции. Сама целевая функция Z
записывается в следующем
виде:
![]()
или
сокращенно
.
Числовой вектор х = (х1,…, хn) называется допустимым решением или планом задачи линейного программирования, если он удовлетворяет всем ее ограничениям. Множество всех допустимых решений называется областью допустимых решений (ОДР). В дальнейшем будем обозначать его Х.
Допустимое
решение называется оптимальным
решением или оптимальным планом, если
оно является наилучшим, т.е.
доставляет оптимум (максимум или минимум) целевой функции Z
в области
допустимых решений. Иными словами, допустимое решение
является
оптимальным, если для любого
другого допустимого решения х выполнено неравенство
,
если решается задача максимизации
целевой функции, или неравенство
,
если решается задача
минимизации этой функции.
Величина
Z* =
называется
оптимальным значением
целевой функции или значением задачи
линейного программирования. Задача
разрешима, если она имеет оптимальное решение.
Будем считать, что задача линейного программирования содержит только ограничения, имеющие тип ≤ (меньше или равно) или = (равно). Тогда задача записывается в таком виде:


Здесь
первые к ограничений в условиях являются
неравенствами, а остальные
равенствами. Соответственно первые l переменных
удовлетворяют условию
неотрицательности, а остальные могут принимать любые значения. Задача
линейного
программирования в такой форме называется общей задачей
линейного программирования.
Замечания.
1) От задачи определения минимума целевой функции всегда можно перейти к задаче определения максимума (и наоборот), используя следующие свойства:
max Z(x) = – min[– Z(x)],
min Z(x) = – max[– Z(x)].
2)
От ограничений типа ≥ (больше или
равно) всегда можно перейти к ограничениям ≤ ,
умножив неравенство
на (-1).
3.2
Каноническая и стандартная задачи линейного программирования
Частным
случаем общей формы являются так
называемые каноническая и стандартная формы записи задачи
линейного
программирования.
Если в задаче все переменные неотрицательны (l = n), а общие ограничения являются равенствами (k = 0), то она называется канонической задачей. Каноническая задача имеет такой вид:


Z = (с, х) → max,
или в матричной форме записи:
Ax = b,
x ≥ 0.
Каноническую задачу можно также записать в векторной форме:
,
,
,
где
—
m-мерные
вектор-столбцы
матрицы А = (aij).
Здесь Аj = (a1j, a2j,…,amj) — j-й столбец матрицы А.
Каноническая форма записи обычно используется в алгоритмах решения задач линейного программирования. В литературе каноническую задачу часто называют основной задачей.
Если в задаче все общие ограничения являются неравенствами, а все переменные неотрицательны, то она называется стандартной задачей. В литературе такую форму записи часто называют симметричной формой записи задачи линейного программирования. Стандартная задача имеет такой вид:
,
или в матричной форме записи:
(с, х) → max,
Ax ≤ b,
x ≥ 0,
или в векторной форме записи:
(с, х) → max,
(Ai,
x)
≤ bi,
,
x ≥ 0,
где Аi = (ai1, ai2,…, ain) — i-я строка матрицы А.
3.3 Преобразование одной формы в другую
Все указанные формы задач линейного программирования являются, в сущности, эквивалентными, так как всегда можно эквивалентными преобразованиями задачи придать ей ту или иную форму. Для этого достаточно использовать следующие свойства и правила.
1. Чтобы преобразовать каноническую задачу в стандартную, достаточно заменить каждое общее ограничение типа равенства:
![]()
равносильным условием, состоящим из двух неравенств:

2. Eсли
в задаче n
переменных и среди
ограничений задачи присутствует неравенство
,
то, вводя дополнительные переменные
(i
-номер
ограничения задачи) ,
мы можем заменить это ограничение парой
условий
,
![]()
Таким образом, преобразование стандартной задачи в каноническую осуществляется с помощью дополнительных неотрицательных переменных. Их число равно числу общих неравенств в исходной задаче. Это преобразование приводит к канонической задаче:
![]()

И,
если
—
оптимальное решение задачи полученной
канонической задачи, то вектор
будет
оптимальным
решением исходной задачи, записанной в стандартной форме.
Переменные
называются
дополнительными или балансовыми.
Если исходная стандартная задача
была задачей фирмы максимизации дохода при ограниченных ресурсах, то
переменные
имеют
ясную экономическую интерпретацию:
значение
—
это остаток i-го ресурса после
выполнения плана
.
3. Иногда
отдельные переменные задачи не
имеют ограничения на знак (для них отсутствует обычное условие
неотрицательности). Такие переменные называют свободными.
Любую
свободную переменную
можно
представить в виде
разности двух неотрицательных переменных.
и
,
т.е.
.
После
замены всех вхождений свободных переменных в целевую функцию и условия
задачи
этими разностями все переменные задачи будут неотрицательными.