Свойства основной задачи линейного программирования. Геометрическое истолкование задачи линейного программирования
Рассмотрим основную задачу линейного программирования. Она состоит в определении максимального значения функции при условиях
Перепишем эту задачу в векторной форме: найти максимум функции
F=CX (15)
при условиях
(16)
(17)
где , CX — скалярное произведение; и — m-мерные вектор-столбцы, составленные из коэффициентов при неизвестных и свободных членах системы уравнений задачи:
Определение 1.7. План называется опорным планом, основной задачи линейного программирования, если система векторов , входящих в разложение (16) с положительными коэффициентами линейно независима.
Так как векторы являются m-мерными, то из определения опорного плана следует, что число его положительных компонент не может быть больше, чем т.
Определение 1.8. Опорный план называется невырожденным, если он содержит ровно т положительных компонент, в противном случае он называется вырожденным.
Свойства основной задачи линейного программирования (15) - (17) тесным образом связаны со свойствами выпуклых множеств.
Определение 1.9. Пусть — произвольные точки евклидова пространства . Выпуклой линейной комбинацией этих точек называется сумма где — произвольные неотрицательные числа, сумма которых равна 1:
Определение 1.10. Множество называется выпуклым, если вместе с любыми двумя своими точками оно содержит и их произвольную выпуклую линейную комбинацию.
Определение 1.11. Точка Х выпуклого множества называется угловой, если она не может быть представлена в виде выпуклой линейной комбинации каких-нибудь двух других различных точек данного множества.
Теорема 1.1. Множество планов основной задачи линейного программирования является выпуклым (если оно не пусто).
Определение 1.12. Непустое множество планов основной задачи линейного программирования называется многогранником решений, а всякая угловая точка многогранника решений — вершиной.
Теорема 1.2. Если основная задача линейного программирования имеет оптимальный план, то максимальное значение целевая функция задачи принимает в одной из вершин многогранника решений. Если максимальное значение целевая функция задачи принимает более чем в одной вершине, то она принимает его во всякой точке, являющейся выпуклой линейной комбинацией этих вершин.
Теорема 1.3. Если система векторов в разложении (16) линейно независима и такова, что
(18)
где все то точка является вершиной многогранника решений.
Теорема 1.4. Если — вершина многогранника решений, то векторы , соответствующие положительным в разложении (16), линейно независимы.
Сформулированные теоремы позволяют сделать следующие выводы.
Непустое множество планов основной задачи линейного программирования образует выпуклый многогранник. Каждая вершина этого многогранника определяет опорный план. В одной из вершин многогранника решений (т. е. для одного из опорных планов) значение целевой функции является максимальным (при условии, что функция ограничена сверху на множестве планов). Если максимальное значение функция принимает более чем в одной вершине, то это же значение она принимает в любой точке, являющейся выпуклой линейной комбинацией данных вершин.
Вершину многогранника решений, в которой целевая функция принимает максимальное значение, найти сравнительно просто, если задача, записанная в форме стандартной, содержит не более двух переменных или задача, записанная в форме основной, содержит не более двух свободных переменных, т. е. , где п — число переменных, r — ранг матрицы, составленной из коэффициентов в системе ограничений задачи.
Найдем решение задачи, состоящей в определении максимального значения функции
(19)
при условиях
(20)
(21)
Каждое из неравенств (20), (21) системы ограничений задачи геометрически определяет полуплоскость соответственно с граничными прямыми и . В том случае, если система неравенств (20), (21) совместна, область ее решений есть множество точек, принадлежащих всем указанным полуплоскостям. Так как множество точек пересечения данных полуплоскостей — выпуклое, то областью допустимых решений задачи (19) —(21) является выпуклое множество, которое называется многоугольником решений (введенный ранее термин «многогранник решений» обычно употребляется, если ). Стороны этого многоугольника лежат на прямых, уравнения которых получаются из исходной системы ограничений заменой знаков неравенств на знаки точных равенств.
Таким образом, исходная задача линейного программирования состоит в нахождении такой точки многоугольника решений, в которой целевая функция F принимает максимальное значение. Эта точка существует тогда, когда многоугольник решений не пуст и на нем целевая функция ограничена сверху. При указанных условиях в одной из вершин многоугольника решений целевая функция принимает максимальное значение. Для определения данной вершины построим линию уровня (где h — некоторая постоянная), проходящую через многоугольник решений, и будем передвигать ее в направлении вектора до тех пор, пока она не пройдет через последнюю ее общую точку с многоугольником решений. Координаты указанной точки и определяют оптимальный план данной задачи.
Заканчивая рассмотрение геометрической интерпретации задачи (19)-(21), отметим, что при нахождении ее решения могут встретиться случаи, изображенные на рис. 1 - 4. Рис. 1 характеризует такой случай, когда целевая функция принимает максимальное значение в единственной точке А. Из рис. 2 видно, что максимальное значение целевая функция принимает в любой точке отрезка АВ. На рис. 3 изображен случай, когда целевая функция не ограничена сверху на множестве допустимых решений, а на рис. 4 — случай, когда система ограничений задачи несовместна.
Рис. 1 Рис. 2
Рис. 3 Рис. 4
Отметим, что нахождение минимального значения линейной функции при данной системе ограничений отличается от нахождения ее максимального значения при тех же ограничениях лишь тем, что линия уровня передвигается не в направлении вектора а в противоположном направлении. Таким образом, отмеченные выше случаи, встречающиеся при нахождении максимального значения целевой функции, имеют место и при определении ее минимального значения.
Итак, нахождение решения задачи линейного программирования (19) - (21) на основе ее геометрической интерпретации включает следующие этапы:
1. Строят прямые, уравнения которых, получаются в результате замены в ограничениях (20) и (21) знаков неравенств на знаки точных равенств.
2. Находят полуплоскости, определяемые каждым из ограничений задачи.
3. Находят многоугольник решений.
4. Строят вектор .
5. Строят прямую , проходящую через многоугольник решений.
6. Передвигают прямую в направлении вектора , в результате чего-либо находят точку (точки), в которой целевая функция принимает максимальное значение, либо устанавливают неограниченность сверху функции на множестве планов.
7. Определяют координаты точки максимума функции и вычисляют значение целевой функции в этой точке.
1.6. Для производства двух видов изделий А и В предприятие использует три вида сырья. Нормы расхода сырья каждого вида на изготовление единицы продукции данного вида приведены в таблице 2. В ней же указаны прибыль от реализации одного изделия каждого вида и общее количество сырья данного вида, которое может быть использовано предприятием.
Таблица 2
Вид сырья | Нормы расхода сырья (кг) на одно изделие | Общее количество сырья (кг) | |
А | В | ||
I II III | |||
Прибыль от реализации одного изделия (руб.) |
Учитывая, что изделия А и В могут производиться в любых соотношениях (сбыт обеспечен), требуется составить такой план их выпуска, при котором прибыль предприятия от реализации всех изделий является максимальной,
Решение. Предположим, что предприятие изготовит изделий вида А и изделий вида В. Поскольку производство продукции ограничено имеющимся в распоряжении предприятия сырьем каждого вида и количество изготовляемых изделий не может быть отрицательным, должны выполняться неравенства
Общая прибыль от реализации изделий вида А и изделий вида В составит
Таким образом, мы приходим к следующей математической задаче: среди всех неотрицательных решений данной системы линейных неравенств требуется найти такое, при котором функция F принимает максимальное значение.
Найдем решение сформулированной задачи, используя ее геометрическую интерпретацию. Сначала определим многоугольник решений. Для этого в неравенствах системы ограничений и условиях неотрицательности переменных знаки неравенств заменим на знаки точных равенств и найдем соответствующие прямые:
Эти прямые изображены на рис. 5. Каждая из построенных прямых делит плоскость на две полуплоскости. Координаты точек одной полуплоскости удовлетворяют исходному неравенству, а другой — нет. Чтобы определить искомую полуплоскость, нужно взять какую-нибудь точку, принадлежащую одной из полуплоскостей, и проверить, удовлетворяют ли ее координаты данному неравенству. Если координаты взятой точки удовлетворяют данному неравенству, то искомой является та полуплоскость, которой принадлежит эта точка, в противном случае — другая полуплоскость.
Найдем, например, полуплоскость, определяемую неравенством Для этого, построив прямую (на рис. 5 эта прямая I), возьмем какую-нибудь точку, принадлежащую одной из двух полученных полуплоскостей, например точку О(0; 0). Координаты этой точки удовлетворяют неравенству значит, полуплоскость, которой принадлежит точка О(0; 0), определяется неравенством Это и показано стрелками на рис. 5.
Рис. 5
Пересечение полученных полуплоскостей и определяет многоугольник решений данной задачи.
Как видно из рис. 5, многоугольником решений является пятиугольник OABCD. Координаты любой точки, принадлежащей этому пятиугольнику, удовлетворяют данной системе неравенств и условию неотрицательности переменных. Поэтому сформулированная задача будет решена, если мы сможем найти точку, принадлежащую пятиугольнику OABCD, в которой функция F принимает максимальное значение. Чтобы найти указанную точку, построим вектор и прямую где h — некоторая постоянная такая, что прямая имеет общие точки с многоугольником решений. Положим, например, h = 480 и построим прямую (рис. 5).
Если теперь взять какую-нибудь точку, принадлежащую построенной прямой и многоугольнику решений, то ее координаты определяют такой план производства изделий А и В, при котором прибыль от их реализации равна 480 руб. Далее, полагая h равным некоторому числу, большему чем 480, мы будем получать различные параллельные прямые. Если они имеют общие точки с многоугольником решений, то эти точки определяют планы производства изделий А и В, при которых прибыль от их реализации превзойдет 480 руб.
Перемещая построенную прямую в направлении вектора видим, что последней общей точкой ее с многоугольником решений задачи служит точка В. Координаты этой точки и определяют план выпуска изделий А и В, при котором прибыль от их реализации является максимальной.
Найдем координаты точки В как точки пересечения прямых II и III. Следовательно, ее координаты удовлетворяют уравнениям этих прямых
Решив эту систему уравнений, получим Следовательно, если предприятие изготовит 12 изделий вида А и 18 изделий вида В, то оно получит максимальную прибыль, равную
1.7. Найти максимум и минимум функции при условиях
Решение. Построим многоугольник решений. Для этого в неравенствах системы ограничений и условиях неотрицательности переменных знаки неравенств заменим на знаки точных равенств:
Построив полученные прямые, найдем соответствующие полуплоскости и их пересечение (рис. 6).
Как видно из рис. 6, многоугольником решений задачи является треугольник АВС. Координаты точек этого треугольника удовлетворяют условию неотрицательности и неравенствам системы ограничений задачи. Следовательно, задача будет решена, если среди точек треугольника АВС найти такие, в которых функция принимает максимальное и минимальное значения. Для нахождения этих точек построим прямую (число 4 взято произвольно) и вектор
Рис. 6
Передвигая данную прямую параллельно самой себе в направлении вектора видим, что ее последней общей точкой с многоугольником решений задачи является точка С. Следовательно, в этой точке функция F принимает максимальное значение. Так как С — точка пересечения прямых I и II, то ее координаты удовлетворяют уравнениям этих прямых:
Решив эту систему уравнений, получим Таким образом, максимальное значение функции
Для нахождения минимального значения целевой функции задачи передвигаем прямую в направлении, противоположном направлению вектора В этом случае, как видно из рис. 6, последней общей точкой прямой с многоугольником решений задачи является точка А. Следовательно, в этой точке функция F принимает минимальное значение. Для определения координат точки А решаем систему уравнений
откуда Подставляя найденные значения переменных в целевую функцию, получим
Симплекс метод
Решение любой задачи линейного программирования можно найти симплексным методом. Прежде чем применять указанный метод, следует записать исходную задачу в форме основной задачи линейного программирования, если она не имеет такой формы записи.
Симплексный метод решения задачи линейного программирования основан на пеереходе от одного опорного плана к другому, при котором значение целевой функции возрастает (при условии, что данная задача имеет оптимальный план и каждый ее опорный план является невырожденным). Указанный переход возможен, если известен какой-нибудь исходный опорный план. Рассмотрим задачу, для которой этот план можно непосредственно записать.
Пусть требуется найти максимальное значение функции
при условиях
Здесь и — заданные постоянные числа
Векторная форма данной задачи имеет следующий вид: найти максимум функции
(22)
при условиях
(23)
(24)
где
Так как
то по определению опорного плана является опорным планом данной задачи (последние компонент вектора Х равны нулю). Этот план определяется системой единичных векторов которые образуют базис m-мерного пространства. Поэтому каждый из векторов а также вектор могут быть представлены в виде линейной комбинации векторов данного базиса. Пусть
Положим Так как векторы — единичные, то и а
Теорема 1.5 (признак оптимальности опорного плана). Опорный план задачи (22)-(24) является оптимальным, если для любого j
Теорема 1.6. Если для некоторого j=k и среди чисел нет положительных , то целевая функция (22) задачи (22)-(24) не ограничена на множестве ее планов.
Теорема 1.7. Если опорный план Х задачи (22)-(24) не вырожден и , но среди чисел аik есть положительные (не все ), то существует опорный план X' такой, что
Сформулированные теоремы позволяют проверить, является ли найденный опорный план оптимальным, и выявить целесообразность перехода к новому опорному плану.
Исследование опорного плана на оптимальность, а также дальнейший вычислительный процесс удобнее вести, если условия задачи и первоначальные данные, полученные после определения исходного опорного плана, записать так, как показано в таблице 3.
В столбце этой таблицы записывают коэффициенты при неизвестных целевой функции, имеющие те же индексы, что и векторы данного базиса.
В столбце записывают положительные компоненты исходного опорного плана, в нем же в результате вычислений получают положительные компоненты оптимального плана. Столбцы векторов представляют собой коэффициенты разложения этих векторов по векторам данного базиса.
В таблице 3 первые m строк определяются исходными данными задачи, а показатели -й строки вычисляют. В этой строке в столбце вектора записывают значение целевой функции, которое она принимает при данном опорном плане, а в столбце вектора — значение
Значение находится как скалярное произведение вектора на вектор
Значение равно скалярному произведению вектора на вектор :
После заполнения таблицы 3 исходный опорный план проверяют на оптимальность. Для этого просматривают элементы -й строки таблицы. В результате может иметь место один из следующих трех случаев:
1) для , (при ). Поэтому в данном случае числа для всех j от 1 до n;
2) для некоторого j, и все соответствующие этому индексу величины
3) для некоторых индексов j, и для каждого такого j, по крайней мере, одно из чисел положительно.
Таблица 3
i | Базис | P0 | ... | ... | ... | ... | ||||||||
... | ... | ... | ... | |||||||||||
... | ... | ... | ... |
В первом случае на основании признака оптимальности исходный опорный план является оптимальным. Во втором случае целевая функция не ограничена сверху на множестве планов, а в третьем случае можно перейти от исходного плана к новому опорному плану, при котором значение целевой функции увеличится. Этот переход от одного опорного плана к другому осуществляется исключением из исходного базиса какого-нибудь из векторов и введением в него нового вектора. В качестве вектора, вводимого в базис, можно взять любой из векторов имеющий индекс j, для которого . Пусть, например, и решено ввести в базис вектор
Для определения вектора, подлежащего исключению из базиса, находят для всех Пусть этот минимум достигается при i=r. Тогда из базиса исключают вектор ,а число называют разрешающим элементом.
Столбец и строку, на пересечении которых находится разрешающий элемент, называют направляющими.
После выделения направляющей строки и направляющего столбца находят новый опорный план и коэффициенты разложения векторов через векторы нового базиса, соответствующего новому опорному плану. Это легко реализовать, если воспользоваться методом Жордана—Гаусса. При этом можно показать, что положительные компоненты нового опорного плана вычисляются по формулам
(25)
а коэффициенты разложения векторов через векторы нового базиса, соответствующего новому опорному плану, — по формулам
(26)
После вычисления и согласно формулам (25) и (26) их значения заносят в табл. 4.
Таблица 4
i | Базис | P0 | ... | ... | ... | ... | ||||||||
... | ... | ... | ... | |||||||||||
... | ... | ... | ... |
Элементы -й строки этой таблицы могут быть вычислены либо по формулам
(27)
(28)
либо на основании их определения.
Наличие двух способов нахождения элементов -й строки позволяет осуществлять контроль правильности проводимых вычислений.
Из формулы (27) следует, что при переходе от одного опорного плана к другому наиболее целесообразно ввести в базис вектор , имеющий индекс j, при котором максимальным по абсолютной величине является число . Однако с целью упрощения вычислительного процесса в дальнейшем будем вектор, вводимый в базис, определять, исходя из максимальной абсолютной величины отрицательных чисел . Если же таких чисел несколько, то в базис будем вводить вектор, имеющий такой же индекс, как и максимальное из чисел , определяемых данными числами
Итак, переход от одного опорного плана к другому сводится к переходу от одной симплекс-таблицы к другой. Элементы новой симплекс-таблицы можно вычислить как с помощью рекуррентных формул (25)-(28), так и по правилам, непосредственно вытекающим из них. Эти правила состоят в следующем.
В столбцах векторов, входящих в базис, на пересечении строк и столбцов одноименных векторов проставляются единицы, а все остальные элементы данных столбцов полагают равными нулю.
Элементы векторов и в строке новой симплекс-таблицы, в которой записан вектор, вводимый в базис, получают из элементов этой же строки исходной таблицы делением их на величину разрешающего элемента. В столбце в строке вводимого вектора проставляют величину , где k — индекс вводимого вектора.
Остальные элементы столбцов вектора и новой симплекс-таблицы вычисляют по правилу треугольника. Для вычисления какого-нибудь из этих элементов находят три числа:
1) число, стоящее в исходной симплекс-таблице на месте искомого элемента новой симплекс-таблицы;
2) число, стоящее в исходной симплекс-таблице на пересечении строки, в которой находится искомый элемент новой симплекс-таблицы, и столбца, соответствующего вектору, вводимому в базис;
3) число, стоящее в новой симплекс-таблице на пересечении столбца, в котором стоит искомый элемент, и строки вновь вводимого в базис вектора (как отмечено выше, эта строка получается из строки исходной симплекс-таблицы делением ее элементов на разрешающий элемент).
Эти три числа образуют своеобразный треугольник, две вершины которого соответствуют числам, находящимся в исходной симплекс-таблице, а третья — числу, находящемуся в новой симплекс-таблице. Для определения искомого элемента новой симплекс-таблицы из первого числа вычитают произведение второго и третьего.
После заполнения новой симплекс-таблицы просматривают элементы -й строки. Если все , то новый опорный план является оптимальным. Если же среди указанных чисел имеются отрицательные, то, используя описанную выше последовательность действий, находят новый опорный план. Этот процесс продолжают до тех пор, пока либо не получают оптимальный план задачи, либо не устанавливают ее неразрешимость.
При нахождении решения задачи линейного программирования мы предполагали, что эта задача имеет опорные планы, и каждый такой план является невырожденным. Если же задача имеет вырожденные опорные планы, то на одной из итераций одна или несколько переменных опорного плана могут оказаться равными нулю. Таким образом, при переходе от одного опорного плана к другому значение функции может остаться прежним. Более того, возможен случай, когда функция сохраняет свое значение в течение нескольких итераций, а также возможен возврат к первоначальному базису. В последнем случае обычно говорят, что произошло зацикливание. Однако при решении практических задач этот случай встречается очень редко, поэтому мы на нем останавливаться не будем.
Итак, нахождение оптимального плана симплексным методом включает следующие этапы:
1. Находят опорный план.
2. Составляют симплекс-таблицу.
3. Выясняют, имеется ли хотя бы одно отрицательное число . Если нет, то найденный опорный план оптимален. Если же среди чисел имеются отрицательные, то либо устанавливают неразрешимость задачи, либо переходят к новому опорному плану.
4. Находят направляющие столбец и строку. Направляющий столбец определяется наибольшим по абсолютной величине отрицательным числом , а направляющая строка — минимальным из отношений компонент столбца вектора к положительным компонентам направляющего столбца.
5. По формулам (25) - (28) определяют положительные компоненты нового опорного плана, коэффициенты разложения векторов Pj по векторам нового базиса и числа , . Все эти числа зап