Аналитический метод решения задач линейного программирования
АНАЛИТИЧЕСКИЙ СПОСОБ РЕШЕНИЯ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ;
Геометрическая интерпретация симплексного метода.
Симплекс – метод решения задач Л.П.
(симплекс – это простейший, выпуклый многоугольник).
Метод является универсальным, т.к. позволяет решить практически любую задачу Л.П., записанную в каноническом виде. Идея симплексного метода (метода последовательного улучшения плана) заключается в том, что, начиная с некоторого исходного опорного решения, осуществляется последовательно направленное перемещение по опорным решениям задачи к оптимальному.
Этот метод был предложен американским ученным Данцингом и опубликован в 1951 г., хотя идеи этого метода разработал Канторович еще в 1939 г. В настоящее время название «симплекс» используется независимо от формы линейных ограничений.
Схема решения задачи симплексным методом состоит из трёх основных элементов:
1) указывается способ вычисления первоначального допустимого решения задачи;
2) при помощи признака оптимальности проверяется, не является ли это решение оптимальным.
3) По выбранному начальному решению строятся другие решения, более близкие к оптимальному.
Доказано, что таким путем через конечное число шагов (итераций) можно получить оптимальное решение задачи. В ходе решения задачи симплекс-методом можно установить является ли задача разрешимой.
Из основных теорем Л.П. следует:
1. Если задача Л.П. имеет оптимальное решение, то оно соответствует хотя бы одной угловой точке многоугольника решений и совпадает, по крайней мере, с одним из допустимых базисных решений.
2. Для этого следует перебрать конечное число допустимых базисных решений системы ограничений и выбрать среди них то, на котором целевая функция Z принимает оптимальное решение.
3. Геометрически это соответствует перебору всех угловых точек многоугольника решений.
4. Число перебираемых допустимым базисных решений можно сократить, если перебор производить с учетом изменений целевой функции Z, т.е. добиваясь того, чтобы каждое следующее решение было лучше (по крайней мере, не хуже) предыдущего:
ü если Z → max, то Z должно увеличиваться;
ü если Z → min, то Z должно уменьшаться.
a) Задача на максимум
Хозяйству требуется не более десяти 3-х-тонных машин и не более восьми 5-тонных. Отпускная цена машины одной марки 2 000усл.ед., другой марки 4 000усл.ед. Хозяйство может выделить для приобретения машин 40 000усл.ед. Сколько следует приобрести машин каждой марки в отдельности, чтобы их общая суммарная грузоподъемность была максимальной?
Решение. Пусть хозяйство приобрело:
х1 – 3-х-тонных машин
Система ограничений:
— экономико-математическая модель задачи
Методы решения задач линейного программирования
Методы решения задач линейного программирования относятся к вычислительной математике, а не к экономике. Однако экономисту полезно знать о свойствах интеллектуального инструмента, которым он пользуется.
С ростом мощности компьютеров необходимость применения изощренных методов снижается, поскольку во многих случаях время счета перестает быть лимитирующим фактором, поскольку весьма мало (доли секунд). Поэтому мы разберем лишь три метода.
Простой перебор. Возьмем некоторый многомерный параллелепипед, в котором лежит многогранник, задаваемый ограничениями. Как его построить? Например, если имеется ограничение типа 2Х1 + 5Х2 ≤ 10, то, очевидно, 0 ≤ Х1 ≤ 10/2 = 5 и 0 ≤ Х2 ≤ 10/2 = 5. Аналогичным образом от линейных ограничений общего вида можно перейти к ограничениям на отдельные переменные. Остается взять максимальные границы по каждой переменной. Если многогранник, задаваемый ограничениями, неограничен, как было в задаче о диете, можно похожим, но несколько более сложным образом выделить его «обращенную» к началу координат часть, содержащую решение, и заключить ее в многомерный параллелепипед.
Проведем перебор точек параллелепипеда с шагом 1/10 n последовательно при n=2,3,…, вычисляя значения целевой функции и проверяя наличие ограничений. Из всех точек, удовлетворяющих ограничениям, возьмем ту, в которой целевая функция максимальна. Решение найдено! (Более строго выражаясь, найдено с точностью до 1/10 n .)
Направленный перебор.Начнем с точки, удовлетворяющей ограничениям (ее можно найти простым перебором). Будем последовательно (или случайно — т.н. метод случайного поиска) менять ее координаты на определенную величину ∆, каждый раз в точку с более высоким значением целевой функции. Если выйдем на плоскость ограничения, будем двигаться по ней (находя одну из координат по уравнению ограничения). Затем движение по ребру (когда два ограничения-неравенства переходят в равенства)… Остановка — в вершине линейного многогранника. Решение найдено! (Более строго выражаясь, найдено с точностью до ∆ ; если необходимо, в окрестности найденного решения проводим направленный перебор с шагом ∆/2 , ∆/4 и т.д.)
Симплекс-метод.Этот один из первых специализированных методов оптимизации, нацеленный на решение задач линейного программирования, в то время как методы простого и направленного перебора могут быть применены для решения практически любой задачи оптимизации. Он был предложен американцем Г. Данцигом в 1951 г. Симплекс-метод состоит в продвижении по выпуклому многограннику ограничений от вершины к вершине, при котором на каждом шаге значение целевой функции улучшается до тех пор, пока не будет достигнут оптимум. Разберем пример со стр.208 книги [3].
Рассмотрим задачу линейного программирования, сформулированную выше при рассмотрении оптимизации номенклатуры и объемов выпуска:
Неотрицательность переменных не будем специально указывать, поскольку в задачах линейного программирования это предположение всегда принимается.
В соответствии с симплекс-методом введем т.н. «свободные переменные» Х4 , Х5 , Х6 , соответствующие недоиспользованным мощностям, т.е. перейдем к системе уравнений:
У этой системы имеется очевидное решение, соответствующее вершине многогранника допустимых значений переменных:
В терминах исходной задачи это значит, что ничего не надо выпускать. Такое решение приемлемо только на период летних отпусков.
Выбираем переменную, которая входит в целевую функцию F с самым большим положительным коэффициентом. Это Х1 .
Сравниваем частные от деления свободных членов в первых трех уравнениях на коэффициенты при только что выбранной переменной Х1:
100 / (1/200) = 20000, 100 / (1/300) =30000, 100/0 = + ∞ .
Выбираем строку, которой соответствует минимальное из всех положительных отношений. В рассматриваемом примере — это первая строка, которой соответствует отношение 20000.
Умножим первую строку на 200, чтобы получить Х1 с единичным коэффициентом:
Затем умножим вновь полученную строку на (-1/300) и сложим со второй строкой, получим
Ту же преобразованную первую строку умножим на (-15) и сложим со строкой, в правой части которой стоит F, получим:
В результате система уравнений преобразуется к виду, в котором переменная Х1 входит только в первое уравнение:
Очевидно, у новой системы имеется улучшенное по сравнению с исходным решение, соответствующее вершине в шестимерном пространстве:
В терминах исходной задачи это значит, что надо выпускать только кухни. Такое решение приемлемо, если допустимо выпускать только один вид продукции.
Повторим описанную выше операцию. В строке с F имеется еще один положительный коэффициент — при Х2 (если бы положительных коэффициентов было несколько — мы взяли бы максимальный из них). На основе коэффициентов при Х2 (а не при Х1, как в первый раз) образуем частные от деления соответствующих свободных членов на эти коэффициенты:
20000 / (2/3) = 30000, (100/3) / (7/900) = 30000/7, 100/0 = + ∞.
Таким образом, нужно выбрать вторую строку, для которой имеем наименьшее положительное отношение 30000/7. Вторую строку умножим на 900/7 (чтобы коэффициент при Х2 равнялся 1). Затем добавим обновленную строку ко всем строкам, содержащим Х2 , предварительно умножив их на подходящие числа, т.е. такие, чтобы все коэффициенты при Х2 стали бы после сложения равны 0, за исключением коэффициента второй строки, который уже стал равняться 1. Получим систему уравнений:
— 85/7 Х3 — 19800/7 Х4 — 1800/7 Х5 = F — 308571.
Поскольку все переменные неотрицательны, то из последнего уравнения следует, что прибыль F достигает своего максимального значения, равного 308571, при Х3 = Х4 = Х5 = 0. Из остальных уравнений следует, что при этом Х1 = 120000/7 = 17143, Х2 = 30000/7 = 4286, Х6 = 100. Поскольку в строке с F не осталось ни одного положительного коэффициента при переменных, то алгоритм симплекс-метода закончил свою работу, оптимальное решение найдено.
Практические рекомендации таковы: надо выпустить 17143 кухни, вчетверо меньше, т.е. 4286 кофемолок, самоваров не выпускать вообще. При этом прибыль будет максимальной и равной 308571. Все производственное оборудование будет полностью загружено, за исключением линии по сборке самоваров.
Транспортная задача.Различные технико-экономические и экономические задачи производственного менеджмента, от оптимальной загрузки станка и раскройки стального листа или полотна ткани до анализа межотраслевого баланса и оценки темпов роста экономики страны в целом, приводят к необходимости решения тех или иных задач линейного программирования. В книге [2] приведен обширный перечень публикаций, посвященный многочисленным применениям линейного программирования в металлургии, угольной, химической, нефтяной, бумажной и прочих отраслях промышленности, в проблемах транспорта и связи, планирования производства, конструирования и хранения продукции, сельском хозяйстве, в научных исследованиях, в том числе экономических, и даже при регулировании уличного движения.
В качестве очередного примера рассмотрим т.н. транспортную задачу. Имеются склады, запасы на которых известны. Известны потребители и объемы их потребностей. Необходимо доставить товар со складов потребителям. Можно по-разному организовать «прикрепление» потребителей к складам, т.е. установить, с какого склада какому потребителю и сколько вести. Кроме того, известна стоимость доставки единицы товара с определенного склада определенному потребителю. Требуется минимизировать издержки по перевозке.
Например, может идти речь о перевозке песка — сырья для производства кирпичей. В Москву песок обычно доставляется самым дешевым транспортом — водным. Поэтому в качестве складов можно рассматривать порты, а в качестве запасов — их суточную пропускную способность. Потребителями являются кирпичные заводы, а их потребности определяются суточным производством (в соответствии с имеющимися заказами). Для доставки необходимо загрузить автотранспорт, проехать по определенному маршруту и разгрузить его. Стоимость этих операций рассчитывается по известным правилам, на которых не имеет смысла останавливаться.
Рассмотрим пример транспортной задачи, исходные данные к которой представлены в табл. 5.
Табл. 5. Исходные данные к транспортной задаче.
Аналитический симплекс-метод
Аналитические методы решения задачи
Линейного программирования
Решение основной задачи линейного программирования графическим методом является наглядным в случае двух и даже трех переменных и для случаев, когда система ограничений задана в виде неравенств. Однако, такое графическое построение даже для случая трех переменных, как мы убедились, нелегко осуществимо и требует больших затрат времени, усилий воображения. Для случая же большего числа переменных графический метод становится невозможным. Для решения задач линейного программирования при большом количестве переменных удобнее пользоваться не графическими, а расчетными аналитическими методами, тем более, что для решения на вычислительных машинах эти методы более пригодны.
Для решения задач линейного программирования в общем случае разработано много методов, которые можно разделить:
1) по способу решения задачи на две группы:
Приближенные методы, которые гарантируют приближенное решение задачи. Они просты и хорошо приспособлены к обычным вычислениям (индексный метод, метод аппроксимации Фогеля и т.д.).
Конечные методы гарантируют нахождение точного решения за конечное число шагов; Конечные методы, в свою очередь, можно разделить на три группы: последовательного улучшения плана (симплекс- метод); последовательного уточнения оценок; последовательного сокращения невязок.
2) по виду решаемых задач на две группы:
универсальные, применяемые для решения широкого класса задач линейного программирования (последовательного улучшения плана; метод разрешающих множителей академика Л.В. Канторовича) и
специальные, применяемые для решения отдельных типов задач линейного программирования (распределительный закон и его модификации; метод дифференциальных рент, венгерский метод и т.д.). Они, как правило, проще универсальных, однако, приспособлены для решения узкого класса задач.
При использовании вычислительных машин универсальные методы дают возможность решать задачи линейного программирования общего вида с сотнями ограничений и практически любым числом переменных , а задачи специального вида – с тысячами ограничений (способы часто не хранятся в памяти, а воспроизводятся алгоритмически).
Среди универсальных методов нахождения оптимального решения наибольшее распространение приобрел метод последовательного улучшения допустимого решения (МПУ), имеющий много вычислительных реализаций: симплексный метод Данцига, метод обратной матрицы или модифицированный симплекс-метод, мультипликативный метод, метод разложения для задач блочной структуры, метод потенциалов для транспортной задачи и др.
Аналитический симплекс-метод.
В основе симплексного метода, наиболее разработанного и распространенного универсального методарешения основной задачи линейного программирования, лежит идея последовательного улучшения плана.
Пусть имеем систему линейных ограничений вида (3.2), заданных в виде равенств. Если ограничительные условия, либо часть ограничительных условий задана неравенствами, их необходимо привести к каноническому виду, то есть только к уравнениям путем введения, так называемых дополнительных (или балансовых, или выравнивающих) переменных.
Так как система (3.2) содержит m уравнений с n неизвестными величинами, то имеются r = n — m переменных (например, x1, x2, . xr), которые можно выбрать в качестве свободных, а оставшиеся m переменных (например, xr+1, xr+2, . xn) являются базисными переменными. Базисные переменные можно выразить через свободные переменные (по методу Джордана-Гаусса). Получим:
Система ограничений вида (3.12) называется системой, приведенной к единичному базису (так как матрица коэффициентов при базисных переменных является единичной матрицей).
Подставляя в линейную функцию Ф вида (3.1) вместо базисных переменных их выражения через свободные из системы (3.12), получим
Теперь, полагая все свободные переменные равными нулю, то есть,
Полученное таким путем решение системы (0, . 0, b’r+1, b’r+2, . . . , b’n) будет неотрицательным. Оно называется базисным решением (определение 3.2). Для полученного базисного решения значение целевой функции Фб = Гo. Возникает вопрос: является ли полученное опорное решение Фб = Гo минимальным?
На этот вопрос дает ответ анализ коэффициентов при свободных переменных в выражении (3.13) и в системе уравнений (3.12). При изменении значения какой-либо из свободных переменных относительно ее нулевого значения значение целевой функции Ф будет либо возрастать относительно Го (если коэффициент при свободной переменной положителен), либо убывать (если коэффициент отрицателен). При этом на величину изменения значения рассматриваемой переменной накладываются ограничения системой (3.12), исходя из условия неотрицательности переменных, входящих в систему, что определяется коэффициентами при этой переменной в данной системе.
В зависимости от значений коэффициентов при свободных переменных в системе (3.12) и в выражении целевой функции (3.13) возможны три случая:
I. Все коэффициенты при свободных переменных в выражении (3.13) неотрицательны. Тогда для любого неотрицательного решения системы (3.12) имеем значение линейной функции Ф ≥ Го. Следовательно, Го = min Ф и базисное решение системы является оптимальным, те есть задача решена.
II. Имеется свободная переменная, коэффициент при которой в выражении (3.13) отрицателен, а все коэффициенты при этой переменной в системе уравнений (3.12) — неотрицательны. То есть диапазон изменения этой переменной системой (3.12) не ограничен: она может увеличиваться до + ∞. С ростом значения этой переменной значение Ф будет неограниченно уменьшаться. В этом случае min Ф = — ∞, то есть, задача решения не имеет.
III. Имеется свободная переменная, коэффициент при которой в выражении (3.13) отрицателен, но и среди коэффициентов при этой переменной в системе уравнений (3.12) также есть отрицательные. То есть, рассматриваемая переменная может быть увеличена только до определенной величины: пока базисная переменная, в уравнение которой рассматриваемая свободная переменная входит с отрицательным коэффициентом, не станет равной нулю. (Дальнейшее увеличение свободной переменной приведет к тому, что соответствующая базисная переменная станет отрицательной, что недопустимо из условия (3.3)).
В этом случае осуществляется процедура поиска оптимального решения с применением симплексного метода. Решение задачи с помощью симплексного метода распадается на ряд шагов, заключающихся в том, что от данного базиса (б) переходим к другому базису (б’) с таким расчетом, чтобы значение Ф уменьшалось или, по крайней мере, не увеличивалось, то есть, Фб’ ≤ Фб. эту процедуру осуществляем до тех пор, пока не достигнем minФ.
Вычислительная процедура поиска minФ предусматривает направленный перебор угловых точек многогранника решений — области допустимых решений (ОДР) задачи линейного программирования и отыскание среди них оптимального решения за конечное число операций.
Таким образом, если задача подпадает под 3-й случай (среди коэффициентов при переменных в выражении ЦФ (3.13) есть отрицательные, но и среди коэффициентов при этой переменной в уравнениях (3.12) также есть отрицательные), выбирают другое базисное решение, то есть, в качестве свободных выбирают другой набор переменных, например, x2, x 3, . . . , x r, x r+1, а в качестве базисных– оставшиеся x1, x r+2, …, x n, которые выражают через новые свободные переменные. Получим новую систему уравнений вида (3.12).
Целевую функцию также выражают через новые свободные переменные
Далее, проводят анализ коэффициентов при свободных переменных в выражении (3.14).
Если все коэффициенты при переменных в этой линейной функции положительны (случай I), то новое решение Ф = Г’о является оптимальным. Если среди коэффициентов в (3.14) есть отрицательные, то либо задача не имеет решения (случай II), либо выбирается следующий набор свободных переменных (случай III) и повторяют цикл анализа. Процедура улучшения решения продолжается до тех пор, пока не будет найдено оптимальное решение, обращающее Ф в минимум, то есть, до тех пор, пока задача не подпадет под 1-ый случай, или пока не выяснится, что оптимального решения не существует, то есть задача не подпадет под 2-ой случаи.
Итак, базисное решение задачи линейного программирования является оптимальным, если в выражении целевой функции через свободные (неосновные) переменные отсутствуют отрицательные коэффициенты при этих переменных.
Если задача линейного программирования подпадает под 3-ий случай, то переход к новому базису осуществляется следующим образом. Свободная переменная, входящая в выражение целевой функции (3.13) или (3.14) с отрицательным коэффициентом, переводится в базисные. Вместо нее в свободные переводится та базисная переменная, в уравнение которой в системе вида (3.12) рассматриваемая свободная переменная входит с отрицательным коэффициентом.
Если свободная переменная, переводимая в базисные, входит с отрицательными коэффициентами в несколько уравнений системы ограничений вида (3.12), то уравнение, базисная переменная которого раньше обращается в нуль, выбирается в качестве разрешающего, что определяется по величине градиента изменения свободной переменной, то есть по величине отношения bi/aip. Уравнение, соответствующее наименьшему значению данного градиента, то есть min(bi/aip), является разрешающим и базисная переменная, соответствующая данному уравнению, переводится в свободные.
Напомним, что мы рассматривали задачу линейного программирования, связанную с нахождением минимального значения целевой функции. В задачах, в которых требуется определить максимальное значение целевой функции, анализ сводится к определению переменных, входящих в выражения целевой функций вида (3.13) или (3.14) с положительными коэффициентами, что приводит к увеличению значения линейной функции относительно Го и Г’о. В остальном подход к решению задачи сохраняется аналогичным рассмотренному.
Таким образом, условием оптимальности в задаче на maxФ является отсутствие положительных коэффициентов при свободных переменных в выражении целевой функции, в задаче на minФ – отсутствие отрицательных коэффициентов при этих переменных.
1. При решении задач линейного программирования симплексным методом возникает вопрос: какие переменные выбрать в качестве базисных, какие в качестве свободных?
Существует следующее правило: любые m переменных m линейных уравнений с n переменными (m 0. Отмечаем столбец, в котором она находится, вертикальной стрелкой. Этот столбец называется разрешающим столбцом.
Далее просматриваем другие элементы этого столбца. Если среди них нет положительных чисел, это означает, что все aip ≥ 0 (i = r+1,n) и задача подпадает под случай II, следовательно, min Ф = — ∞, задача решения не имеет.
И, наконец, пусть среди чисел отмеченного столбца, кроме последнего числа Гp, имеется хотя бы один положительный элемент, например, — aip > 0; Это означает, что aip
Решение задач линейного программирования графическим методом
Описание метода
Если в задаче линейного программирования имеется только две переменные, то ее можно решить графическим методом.
Рассмотрим задачу линейного программирования с двумя переменными и :
(1.1) ;
(1.2)
Здесь , есть произвольные числа. Задача может быть как на нахождение максимума (max), так и на нахождение минимума (min). В системе ограничений могут присутствовать как знаки , так и знаки .
Построение области допустимых решений
Графический метод решения задачи (1) следующий.
Вначале мы проводим оси координат и и выбираем масштаб. Каждое из неравенств системы ограничений (1.2) определяет полуплоскость, ограниченную соответствующей прямой.
Так, первое неравенство
(1.2.1)
определяет полуплоскость, ограниченную прямой . С одной стороны от этой прямой , а с другой стороны . На самой прямой . Чтобы узнать, с какой стороны выполняется неравенство (1.2.1), мы выбираем произвольную точку, не лежащую на прямой. Далее подставляем координаты этой точки в (1.2.1). Если неравенство выполняется, то полуплоскость содержит выбранную точку. Если неравенство не выполняется, то полуплоскость расположена с другой стороны (не содержит выбранную точку). Заштриховываем полуплоскость, для которой выполняется неравенство (1.2.1).
Тоже самое выполняем для остальных неравенств системы (1.2). Так мы получим заштрихованных полуплоскостей. Точки области допустимых решений удовлетворяют всем неравенствам (1.2). Поэтому, графически, область допустимых решений (ОДР) является пересечением всех построенных полуплоскостей. Заштриховываем ОДР. Она представляет собой выпуклый многоугольник, грани которого принадлежат построенным прямым. Также ОДР может быть неограниченной выпуклой фигурой, отрезком, лучом или прямой.
Может возникнуть и такой случай, что полуплоскости не содержат общих точек. Тогда областью допустимых решений является пустое множество. Такая задача решений не имеет.
Можно упростить метод. Можно не заштриховывать каждую полуплоскость, а вначале построить все прямые
(2)
Далее выбрать произвольную точку, не принадлежащую ни одной из этих прямых. Подставить координаты этой точки в систему неравенств (1.2). Если все неравенства выполняются, то область допустимых решений ограничена построенными прямыми и включает в себя выбранную точку. Заштриховываем область допустимых решений по границам прямых так, чтобы оно включало в себя выбранную точку.
Если хотя бы одно неравенство не выполняется, то выбираем другую точку. И так далее, пока не будет найдены одна точка, координаты которой удовлетворяют системе (1.2).
Нахождение экстремума целевой функции
Итак, мы имеем заштрихованную область допустимых решений (ОДР). Она ограничена ломаной, состоящей из отрезков и лучей, принадлежащих построенным прямым (2). ОДР всегда является выпуклым множеством. Оно может быть как ограниченным множеством, так и не ограниченным вдоль некоторых направлений.
Теперь мы можем искать экстремум целевой функции
(1.1) .
Для этого выбираем любое число и строим прямую
(3) .
Для удобства дальнейшего изложения считаем, что эта прямая проходит через ОДР. На этой прямой целевая функция постоянна и равна . такая прямая называется линией уровня функции . Эта прямая разбивает плоскость на две полуплоскости. На одной полуплоскости
.
На другой полуплоскости
.
То есть с одной стороны от прямой (3) целевая функция возрастает. И чем дальше мы отодвинем точку от прямой (3), тем больше будет значение . С другой стороны от прямой (3) целевая функция убывает. И чем дальше мы отодвинем точку от прямой (3) в другую сторону, тем меньше будет значение . Если мы проведем прямую, параллельную прямой (3), то новая прямая также будет линией уровня целевой функции, но с другим значением .
Таким образом, чтобы найти максимальное значение целевой функции, надо провести прямую, параллельную прямой (3), максимально удаленную от нее в сторону возрастания значений , и проходящую хотя бы через одну точку ОДР. Чтобы найти минимальное значение целевой функции, надо провести прямую, параллельную прямой (3) и максимально удаленную от нее в сторону убывания значений , и проходящую хотя бы через одну точку ОДР.
Если ОДР неограниченна, то может возникнуть случай, когда такую прямую провести нельзя. То есть как бы мы ни удаляли прямую от линии уровня (3) в сторону возрастания (убывания) , то прямая всегда будет проходить через ОДР. В этом случае может быть сколь угодно большим (малым). Поэтому максимального (минимального) значения нет. Задача решений не имеет.
Рассмотрим случай, когда крайняя прямая, параллельная произвольной прямой вида (3), проходит через одну вершину многоугольника ОДР. Из графика определяем координаты этой вершины. Тогда максимальное (минимальное) значение целевой функции определяется по формуле:
.
Решением задачи является
.
Также может встретиться случай, когда прямая параллельна одной из граней ОДР. Тогда прямая проходит через две вершины многоугольника ОДР. Определяем координаты и этих вершин. Для определения максимального (минимального) значения целевой функции, можно использовать координаты любой из этих вершин:
.
Задача имеет бесконечно много решений. Решением является любая точка, расположенная на отрезке между точками и , включая сами точки и .
Пример решения задачи линейного программирования графическим методом
Фирма выпускает платья двух моделей А и В. При этом используется ткань трех видов. На изготовление одного платья модели А требуется 2 м ткани первого вида, 1 м ткани второго вида, 2 м ткани третьего вида. На изготовление одного платья модели В требуется 3 м ткани первого вида, 1 м ткани второго вида, 2 м ткани третьего вида. Запасы ткани первого вида составляют 21 м, второго вида — 10 м, третьего вида — 16 м. Выпуск одного изделия типа А приносит доход 400 ден. ед., одного изделия типа В — 300 ден. ед.
Составить план производства, обеспечивающий фирме наибольший доход. Задачу решить графическим методом.
Пусть переменные и означают количество произведенных платьев моделей А и В, соответственно. Тогда количество израсходованной ткани первого вида составит:
(м)
Количество израсходованной ткани второго вида составит:
(м)
Количество израсходованной ткани третьего вида составит:
(м)
Поскольку произведенное количество платьев не может быть отрицательным, то
и .
Доход от произведенных платьев составит:
(ден. ед.)
Тогда экономико-математическая модель задачи имеет вид:
Решаем графическим методом.
Проводим оси координат и .
Строим прямую .
При .
При .
Проводим прямую через точки (0; 7) и (10,5; 0).
Строим прямую .
При .
При .
Проводим прямую через точки (0; 10) и (10; 0).
Строим прямую .
При .
При .
Проводим прямую через точки (0; 8) и (8; 0).
Прямые и являются осями координат.
Область допустимых решений (ОДР) ограничена построенными прямыми и осями координат. Чтобы узнать, с какой стороны, замечаем, что точка принадлежит ОДР, поскольку удовлетворяет системе неравенств:
Заштриховываем область, чтобы точка (2; 2) попала в заштрихованную часть. Получаем четырехугольник OABC.
Строим произвольную линию уровня целевой функции, например,
(П1.1) .
При .
При .
Проводим прямую через точки (0; 4) и (3; 0).
Далее замечаем, что поскольку коэффициенты при и целевой функции положительны (400 и 300), то она возрастает при увеличении и . Проводим прямую, параллельную прямой (П1.1), максимально удаленную от нее в сторону возрастания , и проходящую хотя бы через одну точку четырехугольника OABC. Такая прямая проходит через точку C. Из построения определяем ее координаты.
.
.
То есть, для получения наибольшего дохода, необходимо изготовить 8 платьев модели А. Доход при этом составит 3200 ден. ед.
Пример 2
Решить задачу линейного программирования графическим методом.
Решаем графическим методом.
Проводим оси координат и .
Строим прямую .
При .
При .
Проводим прямую через точки (0; 6) и (6; 0).
Строим прямую .
Отсюда .
При .
При .
Проводим прямую через точки (3; 0) и (7; 2).
Строим прямую .
Строим прямую (ось абсцисс).
Область допустимых решений (ОДР) ограничена построенными прямыми. Чтобы узнать, с какой стороны, замечаем, что точка принадлежит ОДР, поскольку удовлетворяет системе неравенств:
Заштриховываем область по границам построенных прямых, чтобы точка (4; 1) попала в заштрихованную часть. Получаем треугольник ABC.
Строим произвольную линию уровня целевой функции, например,
.
При .
При .
Проводим прямую линию уровня через точки (0; 6) и (4; 0).
Поскольку целевая функция увеличивается при увеличении и , то проводим прямую, параллельную линии уровня и максимально удаленную от нее в сторону возрастания , и проходящую хотя бы через одну точку треугольника АВC. Такая прямая проходит через точку C. Из построения определяем ее координаты.
.
Пример отсутствия решения
Решить графически задачу линейного программирования. Найти максимальное и минимальное значение целевой функции.
Решаем задачу графическим методом.
Проводим оси координат и .
Строим прямую .
При .
При .
Проводим прямую через точки (0; 8) и (2,667; 0).
Строим прямую .
При .
При .
Проводим прямую через точки (0; 3) и (6; 0).
Строим прямую .
При .
При .
Проводим прямую через точки (3; 0) и (6; 3).
Прямые и являются осями координат.
Область допустимых решений (ОДР) ограничена построенными прямыми и осями координат. Чтобы узнать, с какой стороны, замечаем, что точка принадлежит ОДР, поскольку удовлетворяет системе неравенств:
Заштриховываем область, чтобы точка (3; 3) попала в заштрихованную часть. Получаем неограниченную область, ограниченную ломаной ABCDE.
Строим произвольную линию уровня целевой функции, например,
(П3.1) .
При .
При .
Проводим прямую через точки (0; 7) и (7; 0).
Поскольку коэффициенты при и положительны, то возрастает при увеличении и .
Чтобы найти максимум, нужно провести параллельную прямую, максимально удаленную в сторону возрастания , и проходящую хотя бы через одну точку области ABCDE. Однако, поскольку область неограниченна со стороны больших значений и , то такую прямую провести нельзя. Какую бы прямую мы не провели, всегда найдутся точки области, более удаленные в сторону увеличения и . Поэтому максимума не существует. можно сделать сколь угодно большой.
Ищем минимум. Проводим прямую, параллельную прямой (П3.1) и максимально удаленную от нее в сторону убывания , и проходящую хотя бы через одну точку области ABCDE. Такая прямая проходит через точку C. Из построения определяем ее координаты.
.
Минимальное значение целевой функции:
Максимального значения не существует.
Минимальное значение
.
Автор: Олег Одинцов . Опубликовано: 08-08-2016
Калькулятор симплекс-метода
Выполнено действий: 146
Как пользоваться калькулятором
- Задайте количество переменных и ограничений
- Введите коэффициенты целевой функции
- Введите коэффициенты ограничений и выберите условия (≤, = или ≥)
- Выберите тип решения
- Нажмите кнопку «Решить»
Что умеет калькулятор симплекс-метода
- Решает основную задачу линейного программирования
- Позволяет получить решение с помощью основного симплекс-метода и метода искусственного базиса
- Работает с произвольным количеством переменных и ограничений
Что такое симплекс-метод
Задача линейного программирования — это задача поиска неотрицательных значений параметров, на которых заданная линейная функция достигает своего максимума или минимума при заданных линейных ограничениях.
Симплекс-метод — алгоритм решения оптимизационной задачи линейного программирования путём перебора вершин выпуклого многогранника в многомерном пространстве. Алгоритм является универсальным методом, которым можно решить любую задачу линейного программирования.
Если вам тоже ничего не понятно из этого определения, то вы на верном пути. Чаще всего статьи про симплекс-метод очень сильно углубляются в дебри теории задачи линейного программирования, из-за чего очень легко потерять суть и так ничего и не понять. Мы постараемся описать алгоритм симплекс-метода так, чтобы показать, что в нём нет ничего страшного и на самом деле он весьма простой. Но сначала нам всё-таки потребуется ввести несколько определений.
Целевая функция — функция, максимум (или минимум) которой нужно найти. Представляет собой сумму произведений коэффициентов на значения переменных: F = c1·x1 + c2·x2 + . + cn·xn
Ограничение — условие вида a1·x1 + a2·x2 + . + an·xn v b , где вместо v ставится один из знаков: ≤, = или ≥
План — произвольный набор значений переменных x1 . xn.
Алгоритм решения основной задачи ЛП симплекс-методом
Пусть в задаче есть m ограничений, а целевая функция заивисит от n основных переменных. Первым делом необходимо привести все ограничения к каноническому виду — виду, в котором все условия задаются равенствами. Для этого предварительно все неравенства с ≥ умножаются на -1, для получения неравенств с ≤.
Чтобы привести ограничения с неравенствами к каноническому виду, для каждого ограничения вводят переменную, называемую дополнительной с коэффициентом 1. В ответе эти переменные учитываться не будут, однако сильно упростят начальные вычисления. При этом дополнительные переменные являются базисными, а потому могут быть использованы для формирования начального опорного решения.
Формирование начального базиса
После того как задача приведена к каноническому виду, необходимо найти начальный базис для формирования первого опорного решения. Если в процессе приведения были добавлены дополнительные переменные, то они становятся базисными.
Иначе необходимо выделить среди коэффициентов ограничений столбец, который участвует в формировании единичной матрицы в заданной строке (например, если требуется определить вторую базисную переменную, то необходимо искать столбец, в котором второе число равно 1, а остальные равны нулю). Если такой столбец найден, то переменная, соответствующая этому столбцу, становится базисной.
В противном случае можно поискать столбец, в котором все значения кроме числа в заданной строке равны нулю, и, если он будет найден, то разделить все значения строки на число, стоящее на пересечении этих строки и столбца, тем самым образовав столбец, участвующий в формировании единичной матрицы.
Ищем начальное базисное решение:
Ограничение 1 содержит неравенство, базисной будет добавленная дополнительная переменная x6
Столбец 4 является частью единичной матрицы. Переменная x4 входит в начальный базис
В пятом столбце все значения кроме третьего равны нулю. Поэтому в качестве третьей базисной переменной берём x5 , предварительно разделив третью строку на 2.
Симплекс-таблица