Основные задачи линейного программирования
История зарождения и создания линейного программирования. Разработка симплекс-метода и рассмотрение задач отыскания условного экстремума функции. Графический способ решения различных задач линейного программирования, изображение геометрических условий.
Рубрика | Математика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 04.04.2011 |
Размер файла | 319,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Линейное программирование
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1.ИСТОРИЯ ЗАРОЖДЕНИЯ И СОЗДАНИЯ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
2.ПОСТАНОВКА ЗАДАЧИ ЛИНЕЙНОГОПРОГРАММИРОВАНИЯ
2.1 Стандартная задача линейного программирования
2.2 Каноническая задача линейного программирования
2.3 Общая задача линейного программирования
2.4 Двойственная задача линейного программирования
2.5 Геометрическая интерпретация задачи линейного программирования
3.РЕШЕНИЕ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
3.1 Графический способ решения задачи линейного программирования
3.2 Метод исключения Жордана-Гаусса для системы линейных уравнений
4.ПРИМЕРЫ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
4.1 Задача о рациональном питании (задача о пищевом рационе
4.2 Задача о планировании производства
4.3 Задача о загрузки оборудования
4.4 Задача о снабжении сырьём
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
Введение
Линейное программирование
Временем рождения линейного программирования принято считать 1939г., когда была напечатана брошюра Леонида Витальевича Канторовича “Математические методы организации и планирования производства”. Поскольку методы, изложенные Л.В.Канторовичем, были мало пригодны для ручного счета, а быстродействующих вычислительных машин в то время не существовало, работа Л.В.Канторовича осталась почти не замеченной.
Свое второе рождение линейное программирование получило в начале пятидесятых годов с появлением ЭВМ. Тогда началось всеобщее увлечение линейным программированием, вызвавшее в свою очередь развитие других разделов математического программирования. В 1975 году академик Л.В.Канторович и американец профессор Т. Купманс получили Нобелевскую премию по экономическим наукам за “вклад в разработку теории и оптимального использования ресурсов в экономике”.
В автобиографии, представленной в Нобелевский комитет, Леонид Витальевич Канторович рассказывает о событиях, случившихся в 1939 году. К нему, 26-летнему профессору-математику, обратились за консультацией сотрудники лаборатории планерного треста, которым нужно было решить задачу о наиболее выгодном распределении материала между станками. Эта задача сводилась к нахождению максимума линейной функции, заданной на многограннике. Максимум такой функции достигался в вершине, однако число вершин в этой задаче достигало миллиарда. Поэтому простой перебор вершин не годился. Леонид Витальевич писал: “оказалось, что эта задача не является случайной. Я обнаружил большое число разнообразных по содержанию задач, имеющих аналогичный математический характер: наилучшее использование посевных площадей, выбор загрузки оборудования, рациональный раскрой материала, распределение транспортных грузопотоков. Это настойчиво побудило меня к поиску эффективного метода их решения”. И уже летом 1939 года была сдана в набор книга Л.В.Канторовича “Математические методы организации и планирования производства”, в которой закладывались основания того, что ныне называется математической экономикой.
1.История зарождения и создания линейного программирования
Концепции Леонида Витальевича вскоре после войны были переоткрыты на западе. Американский экономист Т.Купманс в течение многих лет привлекал внимание математиков к ряду задач, связанных с военной тематикой. Он активно способствовал тому, чтобы был организован математический коллектив для разработки этих проблем. В итоге было осознано, что надо научиться решать задачи о нахождении экстремумов линейных функций на многогранниках, задаваемых линейными неравенствами. По предложению Купманса этот раздел математики получил название линейного программирования.
Американский математик А. Данциг в 1947 году разработал весьма эффективный конкретный метод численного решения задач линейного программирования (он получил название симплекс метода). Идеи линейного программирования в течение пяти шести лет получили грандиозное распространение в мире, и имена Купманса и Данцига стали повсюду широко известны.
Примерно в это время Купманс узнал, что еще до войны в далекой России уже было сделано нечто похожее на разработку начал линейного программирования. Купманс настаивает на переводе и издании на западе книги Канторовича. Его имя и идеи становятся известны всем.
Л.В.Канторович продолжает писать математические работы, навеянные экономическими идеями, участвует и в конкретных разработках на производстве. При этом (одновременно с Данцигом, но, не зная его работ) он разрабатывает метод, позже названный симплекс-методом. Как только в 50-е годы образуется маленький просвет, и кое-что из запретного становится возможным, он организует группу студентов на экономическом факультете ЛГУ для обучения методам оптимального планирования. А, начиная с 1960 года, Леонид Витальевич занимается только экономической и связанной с нею математической проблемами. Его вклад в этой области был отмечен Ленинской премией в 1965 году (присуждена ему совместно с В.С.Немчиновым и В.В.Новожиловым) и, как уже говорилось, Нобелевской премией в 1975 году.
2.Постановка задачи линейного программирования
В классическом математическом анализе рассматривается задача отыскания условного экстремума функции. Тем не менее, время показало, что для многих задач, возникающих под влиянием запросов практики, классические методы недостаточны. В связи с развитием техники, ростом промышленного производства и с появлением ЭВМ все большую роль начали играть задачи отыскания оптимальных решений в различных сферах человеческой деятельности. Основным инструментом при решении этих задач стало математическое моделирование -- формальное описание изучаемого явления и исследование с помощью математического аппарата.
Искусство математического моделирования состоит в том, чтобы учесть как можно больше факторов по возможности простыми средствами. Именно в силу этого процесс моделирования часто носит итеративный характер. На первой стадии строится относительно простая модель и проводится ее исследование, позволяющее понять, какие из существенных свойств изучаемого объекта не улавливаются данной формальной схемой. Затем происходит уточнение, усложнение модели.
В большинстве случаев первой степенью приближения к реальности является модель, в которой все зависимости между переменными, характеризующими состояние объекта, предполагаются линейными. Здесь имеется полная аналогия с тем, как весьма важна и зачастую исчерпывающая информация о поведении произвольной функции получается на основе изучения ее производной -- происходит замена этой функции в окрестности каждой точки линейной зависимостью. Значительное количество экономических, технических и других процессов достаточно хорошо и полно описывается линейными моделями.
Линейное программирование - это наука о методах исследования и отыскания наибольших и наименьших значений линейной функции, на неизвестные
которой наложены линейные ограничения. Таким образом, задачи линейного программирования относятся к задачам на условный экстремум функции. Казалось бы, что для исследования линейной функции многих переменных на условный экстремум достаточно применить хорошо разработанные методы математического анализа, однако невозможность их использования можно довольно просто проиллюстрировать.
Действительно, путь необходимо исследовать на экстремум линейную функцию
при линейных ограничениях
Так как Z - линейная функция, то n= Сj (j = 1, 2, ..., n), то все коэффициенты линейной функции не могут быть равны нулю, следовательно, внутри области, образованной системой ограничений, экстремальные точки не существуют. Они могут быть на границе области, но исследовать точки границы невозможно, поскольку частные производные являются константами.
При изучении задач линейного программирования сложилась определенная терминология:
Линейная форма , подлежащая максимизации (или минимизации), называется целевой функцией.
Вектор , удовлетворяющий всем ограничениям задачи линейного программирования, называется допустимым вектором, или планом.
Задача ЛП, для которой существуют допустимые векторы, называется допустимой задачей. Допустимый вектор , доставляющий наибольшее значение целевой функции по сравнению с любым другим допустимым вектором , т.е. , называется решением задачи, или оптимальным планом. Максимальное значение целевой функции называется значением задачи. Различают три основные формы задач линейного программирования в зависимости от наличия ограничений разного типа.
2.1 Стандартная задача линейного программирования
или, в матричной записи,
где -- матрица коэффициентов. Вектор называется вектором коэффициентов линейной формы, -- вектором ограничений.
Стандартная задача важна ввиду наличия большого числа прикладных моделей, сводящихся наиболее естественным образом к этому классу задач линейного программирования.
2.2 Каноническая задача линейного программирования
или, в матричной записи,
Основные вычислительные схемы решения задач линейного программирования разработаны именно для канонической задачи.
Пример. Приведем стандартную задачу линейного программирования к каноническому виду:
и обращающее в максимум линейную функцию от этих переменных:
Начнём с того, что приведём условия (1) к стандартной форме, так, чтобы знак неравенства был , а справа стоял нуль. Получим:
А теперь обозначим левые части неравенств (3) соответственно через y1 и y2:
Из условий (3) и (4) видно, что новые переменные y1, y2 также должны быть неотрицательными.
Какая же теперь перед нами стоит задача? Найти неотрицательные значения переменных x1,x2,x3,y1,y2 такие, чтобы они удовлетворяли условиям - равенствам (4) и обращали в максимум линейную функцию этих переменных (то, что в L не входит дополнительные переменные y1, y2, неважно: можно считать, что они входят, но с нулевыми коэффициентами). Перед нами - каноническая задача линейного программирования. Переход к ней от первоначальной задачи с ограничениями - неравенствами (2) «куплен» ценой увеличения числа переменных на два (число неравенств).
2.3 Общая задача линейного программирования
В этой задачи часть ограничений носит характер неравенств, а часть является уравнениями. Кроме того, не на все переменные наложено условие неотрицательности:
Здесь . Ясно, что стандартная задача получается как частный случай общей при ; каноническая -- при .
Все три перечисленные задачи эквивалентны в том смысле, что каждую из них можно простыми преобразованиями привести к любой из двух остальных.
2.4 Двойственная задача линейного программирования
Рассмотрим задачу линейного программирования
или, в матричной записи
Задачей, двойственной к (5) (двойственной задачей), называется задача ЛП от переменных вида
или, в матричной записи,
где .
Правила построения задачи (7) по форме записи задачи (5) таковы: в задаче (7) переменных столько же, сколько строк в матрице задачи (5). Матрица ограничений в (7) - транспортированная матрица . Вектор правой части ограничений в (7) служит вектором коэффициентов максимизируемой линейной форме в (5), при этом знаки неравенств меняются на равенство. Наоборот, в качестве целевой функции в (7) выступает линейная форма, коэффициентами которой задаются вектором правой части ограничений задачи (5), при этом максимизация меняется на минимизацию. На двойственные переменные накладывается условие неотрицательности. Задача (5), в отличии от двойственной задачи (7) называется прямой.
Для прямой и двойственной задачи выполняется следующая теорема:
Теорема двойственности. Если взаимодвойственные задачи (6) и (8) допустимы, то они обе имеют решение и одинаковое значение.
2.5 Геометрическая интерпретация задачи линейного программирования
Рассмотрим задачу линейного программирования, система ограничений которой задана в виде неравенств.
Найти минимальное значение линейной функции
При ограничениях
Совокупность чисел х1, х2, ..., хn, удовлетворяющих ограничениям (10) и (11), называется решением. Если система неравенств (10) при условии (11) имеет хотя бы одно решение, она называется совместной, в противном случае - несовместной.
Рассмотрим на плоскости х1,х2 совместную систему линейных неравенств
Это все равно, что в системе (10) - (11) положить n=2. Каждое неравенство этой системы геометрически определяет полуплоскость с граничной прямой Условия неотрицательности определяют полуплоскости соответственно с граничными прямыми Система совместна, поэтому полуплоскости, как выпуклые множества, пересекаясь, образуют общую часть, которая является выпуклым множеством и представляет собой совокупность точек, координаты каждой из которых являются решением данной системы.
Совокупность этих точек (решений) назовем многоугольником решений. Он может быть точкой, отрезком, лучом, многоугольником, неограниченной многоугольной областью.
Если в системе ограничений (10) - (1) n= 3, то каждое неравенство геометрически представляет полупространство трехмерного пространства, граничная плоскость которого , а условия неотрицательности - полупространства с граничными плоскостями соответственно . Если система ограничений совместна, то эти полупространства, как выпуклые множества, пересекаясь, образуют в трехмерном пространстве общую часть, которая называется многогранником решений. Многогранник решений может быть точкой, отрезком, лучом, многоугольником, многогранником, многогранной неограниченной областью.
Пусть в системе ограничений (10) - (11) n=?; тогда каждое неравенство определяет полупространство n-мерного пространства с граничной гиперплоскостью , а условия неотрицательности - полупространства с граничными гиперплоскостями .
Если система ограничений совместна, то по аналогии с трехмерным пространством она образует общую часть n-мерного пространства, называемую многогранником решений, так как координаты каждой его точки являются решением.
Таким образом, геометрически задача линейного программирования представляет собой отыскание такой точки многогранника решений, координаты которой доставляют линейной функции минимальное значение, причем допустимыми решениями служат все точки многогранника решений.
линейное программирование симплекс экстремум
3.Решение задачи линейного программирования
Рассмотрим основную задачу линейного программирования: найти неотрицательные значения переменных x1, x2, …, xn, удовлетворяющие m условиям - равенствам:
и обращающие в максимум линейную функцию этих переменных:
Для простоты предположим, что все условия (12) линейно независимы (r=m), и будем вести рассуждения в этом предположении.
Назовём ДОПУСТИМЫМ решением задачи линейного программирования всякую совокупность неотрицательных значений x1, x2, …, xn, удовлетворяющую условиям (12).
ОПТИМАЛЬНЫМ назовём то из допустимых решений, которое обращает в максимум функцию (13).
Требуется найти оптимальное решение. Всегда ли эта задача имеет решение? Нет, не всегда.
1. Может оказаться, что уравнения (12) вообще несовместимы (противоречат друг другу).
2. Может оказаться и так, что они совместимы, но не в области неотрицательных решений, т.е. не существует ни одной совокупности чисел x10, x20, …, xn0, удовлетворяющей условиям (12).
3. Наконец, может быть и так, что допустимые решения задачи линейного программирования существуют, но среди них нет оптимального: функция L в области допустимых решений не ограничена сверху.
Попробуем разрешить уравнения (12) относительно каких-нибудь m базисных переменных и выразим их через остальные k свободных. Попробуем положить эти свободные переменные равными нулю - авось повезёт, наткнёмся на опорную точку. Вычислим базисные переменные при нулевых значениях свободных. Если все они оказались неотрицательными, значит, нам повезло, мы сразу же получим допустимое (опорное) решение, и его остаётся только оптимизировать. А если нет? Значит, данный выбор свободных и базисных переменных допустимого решения не даёт; точка лежит не на границе, а вне области допустимых решений. Что делать? Надо «пере разрешить» уравнения относительно каких-то других базисных переменных, но не как попало, а так, чтобы это приближало нас к области допустимых решений. Пусть, наконец, несколько раз повторив такую процедуру, мы нашли опорное решение задачи линейного программирования. Но это ещё не всё. Тут надо поставить вопрос: а является ли это решение оптимальным? Выразим функцию L через последние получившиеся свободные переменные и попробуем увеличить их сверх нуля. Если от этого значения L только уменьшается, значит, нам повезло, и мы нашли оптимальное решение, задачи линейного программирования решена. А если нет? Снова «пере разрешаем» систему уравнений относительно других базисных переменных, и снова не как попало, а так чтобы, не выходя за пределы допустимых решений, приблизиться к оптимальному. Для этого в линейном программировании существуют специальные приёмы, гарантирующие, что при каждом новом «пере разрешении» мы будем приближаться к оптимальному решению, а не удаляться от него. После конечного числа таких шагов цель будет достигнута - оптимальное решение найдено. А если его не существует? Алгоритм решения задачи линейного программирования сам покажет вам, что решения нет.
Для простых задач, где число переменных невелико, такой «слепой перебор» может привести к решению, и довольно быстро. Но на практике часто встречаются задачи, в которых число переменных (и наложенных условий) очень велико, порядка сотен и даже тысяч. Для таких задач простой перебор становится практически невозможным: слишком велико число комбинаций свободных и базисных переменных. Пример: только при n=30 и m=10 число возможных комбинаций свободных переменных с базисными равно, т.е. свыше 30 миллионов! А эта задача - далеко не из сложных. Разработанные в теории линейного программирования вычислительные методы («симплекс-метод», «Метод исключения Жордана-Гауса» и другие) позволяют находить оптимальное решение не «слепым» перебором, а «целенаправленным», с постоянным приближением к решению. Добавим, что совместимые ЭВМ, как правило, снабжены подпрограммами для решения задач линейного программирования, так что лицу, желающему их решить, нет даже особой надобности обучаться решению таких задач «вручную» - труд крайне неприятный и изнурительный. Рассмотрим некоторые методы последовательного поиска решения задач линейного программирования.
3.1 Графический способ решения задачи линейного программирования
Чтобы представить себе принципиальную сторону задачи линейного программирования, обратимся к геометрической интерпретации. Пусть число уравнений m на два меньше числа переменных n (n-m=k=2). Такой частный случай даёт возможность геометрической интерпретации задачи линейного программирования на плоскости.
Мы знаем, что n линейно независимых уравнений (3.1.1) всегда можно разрешить относительно каких-то m базисных переменных, выразив их через остальные, свободные, число которых равно n-m=k (в нашем случае k=2). Предположим, что свободные переменные - это x1 и x2 (если это не так, то всегда можно заново перенумеровать переменные), а остальные: x3, x4, …, xn - базисные. Тогда вместо m уравнений (3.1.1) мы получим тоже m уравнений, но записанных в другой форме, разрешённых относительно x3, x4,
Будем изображать пару значений свободных переменных точкой с координатами x1, x2, изображённых на рис.1. Так как переменные x1, x2 должны быть неотрицательными, то допустимые значения свободных переменных лежат только выше оси Ox1 (на которой x2=0) и правее оси Ox2 (на которой x1=0). Это мы отметим штриховкой, обозначающей «допустимую» сторону каждой оси. Теперь построим на плоскости x1Ox2 область допустимых решений или же убедимся, что её не существует. Базисные переменные x3, x4, …, xn тоже должны быть неотрицательными и удовлетворять уравнениям (14). Каждое такое уравнение ограничивает область допустимых решений.
Рис. 1
Действительно, положим в первом уравнении (14) x3=0; получим уравнение прямой линии:
На этой прямой x3=0; по одну сторону от неё x3>0, по другую - x3<0. Отметим штриховкой ту сторону (полуплоскость), где x3>0 (рис. 2). Пусть эта сторона оказалась правее и выше прямой x3=0. Значит, вся область допустимых решений лежит в первом координатном угле, правее и выше прямой x3=0. Аналогично поступим и со всеми остальными условиями (14). Каждое из них изобразится прямой со штриховкой, указывающей «допустимую» полуплоскость, где только и может лежать решение (рис. 3).
Рис. 2
Рис. 3
Таким образом, мы построили n прямых: две оси координат (Ox1 и Ox2) и n-2 прямых x3=0, x4=0, …, xn=0. Каждая из них определяет «допустимую» полуплоскость, где может лежать решение. Часть первого координатного угла, принадлежащая одновременно всем этим полуплоскостям, и есть область допустимых решений. На рис. 3 показан случай, когда области допустимых решений существует, т.е. система уравнений (14) имеет неотрицательные решения. Заметим, что этих решений - бесконечное множество, так как любая пара значений свободных переменных, взятая из область допустимых решений, «годится», а из x1 и x2 могут быть определены и базисные переменные.
Может оказаться, что область допустимых решений не существует, и значит, уравнения (14) несовместимы в области неотрицательных значений. Такой случай показан на рис. 4, где нет области, лежащей одновременно по «нужную» сторону от всех прямых. Значит, задача линейного программирования не имеет решения.
Рис. 4
Предположим, что область допустимых решений существует, и мы её построили. Как же теперь найти среди них оптимальное?
Для этого дадим геометрическую интерпретацию условию (13) Lmax. Подставив выражения (13) в формулу (14), выразим L через свободные переменные x1, x2. после приведения подобных членов получим:
где 1, 2 - какие-то коэффициенты, 0 - свободный член, которого в первоначальном виде у функции L не было; теперь, при переходе к переменным x1, x2, он мог и появится. Однако мы его тут же и отбросим: ведь максимум линейной функции L достигается при тех же значениях x1, x2, что и максимум однородной линейной функции (без свободного члена):
Посмотрим, как изобразить геометрически условие L'max. Положим сначала L'=0, т.е. и построим на плоскости x1Ox2 прямую с таким уравнением; очевидно, она проходит через начало координат (рис. 5)
Рис. 5
Назовём её «опорной прямой». Если мы будем придавать L' какие-то значения C1, C2, C3, …, прямая будет перемещаться параллельно самой себе; при перемещении в одну сторону L' будет возрастать, в другую - убывать. Отметим на рис. 5. стрелками, поставленными у опорной рамой, то направление, в котором L' возрастает. На рис. 5. это оказалось направление «направо - вверх», но могло быть и наоборот: всё зависит от коэффициентов 1, 2. теперь изобразим опорную прямую и область допустимых решений на одном чертеже (Рис. 6). Давайте будем мысленно двигать опорную прямую параллельно самой себе в направлении стрелок (возрастания L'). Когда L' достигнет максимума? Очевидно, в точке A (крайней точке области допустимых решений в направлении стрелок). В этой точке свободные переменные принимают оптимальные значения x1*,x2*, а из них можно по формулам (14) найти и оптимальные значения всех остальных (базисных) переменных x3*, x4*, …, xn*. Заметим, что максимум L' достигается в одной из вершин области допустимых решений, где, по крайней мере, две из базисных переменных (в нашем случае это x3 и x5) обращаются в нуль. Могло бы обращаться в нуль и больше базисных переменных, если бы через точку А проходило более двух прямых xi=0.
А может ли оказаться, что оптимального решения не существует? Да, может, если в области допустимых решений функция L' (а значит и L) не ограничена сверху. Пример такого ненормального случая показан на рис. 7(в разумно поставленных задачах обычно такого недоразумения не возникает).
Рис. 6
Рис. 7
На рис. 6. оптимальное решение существовало и было единственным. А сейчас рассмотрим, когда оптимальное решение существует, но не единственно (их бесконечное множество). Это случай, когда максимум L' достигается не в одной точке А, а на целом отрезке АВ, параллельном опорной прямой (рис. 8). Итак, мы рассмотрели в геометрической интерпретации случай n-m=k=2 и убедились в следующем: оптимальное решение (если оно существует) всегда достигается в одной из переменных x1, x2, …, xn равны нулю. Оказывается, аналогичное правило справедливо и в случае n-m=k>2 (только геометрическая интерпретация теряет в этом случае свою наглядность). Обойдёмся без доказательства, просто сформулируем это правило.
Рис. 8
Оптимальное решение задачи линейного программирования (если оно существует) достигается при такой совокупности значений переменных x1, x2, …, xn, где, по крайней мере, k из них обращаются в нуль, а остальные неотрицательны.
При k=2 такая совокупность значений изображается точкой на плоскости, лежащей в одной из вершин многоугольника допустимых решений. При k=3 многоугольник допустимых решений представляет собой уже не многоугольник, а многогранник, и оптимальное решение достигается в одной из его вершин. При k>3 геометрическая интерпретация теряет наглядность, но всё же геометрическая терминология остаётся удобной. Мы будем продолжать говорить о «многограннике допустимых решений» в k-мерном пространстве, а оптимальное решение (если оно существует) будет достигаться водной из вершин этого многогранника, где, по крайней мере, k переменных равны нулю, а остальные - неотрицательны. Будем для краткости называть такую вершину «опорной точкой», а вытекающее из неё решение «опорным решением».
3.2 Метод исключения Жордана-Гаусса для системы линейных уравнений
Большинство из существующих численных методов решения задач линейного программирования использует идею приведения системы линейных уравнений:
которая в матричной форме записывается в виде , к более удобному виду с помощью так называемого метода Жордада-Гаусса.
В первом уравнении системы отыскивается коэффициент , отличный от нуля. С помощью этого коэффициента обращаются в нуль коэффициенты при переменной в остальных уравнениях системы. Для этого первое уравнение умножается на число и прибавляется к уравнению с номером , . Затем первое уравнение делится на число . Это преобразование называется элементарным преобразованием. Полученная эквивалентная система обладает тем свойством, что переменная присутствует только в первом уравнении, и притом с коэффициентом 1. Переменная называется базисной переменной. Аналогичная операция совершается поочередно с каждым уравнением системы; при этом всякий раз преобразуются все уравнения и выполняется список базисных переменных.
Результатом применения метода Жордада-Гаусса является следующее: либо устанавливается, что система несовместна, либо выявляются и отбрасываются все «лишние» уравнения; при этом итоговая система уравнений имеет вид
, ,
где -- список номеров базисных переменных, -- множество номеров небазисных переменных. Здесь -- ранг матрицы коэффициентов исходной системы уравнений.
Полученную системы уравнений называют приведенной системой, соответствующей множеству номеров базисных переменных.
4.Примеры задач линейного программирования
Любая математическая модель имеет под собой реальную проблему для решения которой и была составлена эта математическая модель. Ниже приведены жизненные примеры для решения которых применяется метод линейного программирования.
4.1 Задача о рациональном питании (задача о пищевом рационе
Постановка задачи. Ферма производит откорм скота с коммерческой целью. Для простоты допустим, что имеется всего четыре вида продуктов: П1, П2, П3, П4; стоимость единицы каждого продукта равна соответственно С1, С2, С3, С4. Из этих продуктов требуется составить пищевой рацион, который должен содержать: белков - не менее bi единиц; углеводов - не менее b2 единиц; жиров - не менее b3 единиц. Для продуктов П1, П2, П3, П4 содержание белков, углеводов и жиров (в единицах на единицу продукта) известно и задано в таблице 1, где aij (i=1,2,3,4; j=1,2,3) - какие - то определённые числа; первый индекс указывает номер продукта, второй - номер элемента (белки, углеводы, жиры).
Таблица 1
Таблица значений модели
Продукт |
Элементы |
|||
белки |
углеводы |
жиры |
||
П1 П2 П3 П4 |
A11 A21 A31 A41 |
A12 A22 A32 A42 |
A13 A23 A33 A43 |
Требуется составить такой пищевой рацион (т.е. назначить количества продуктов П1, П2, П3, П4, входящих в него), чтобы условия по белкам, углеводам и жирам были выполнены и при этом стоимость рациона была минимальна.
Математическую модель. Обозначим x1, x2, x3, x4 количества продуктов П1, П2, П3, П4, входящих в рацион. Показатель эффективности, который требуется минимизировать, - стоимость рациона (обозначим её L): она линейно зависит от элементов решения x1, x2, x3, x4.
Целевая функция:
Система ограничений:
a11x1+a21x2+a31x3+a41x4?b1
a12x1+a22x2+a32x3+a42x4?b2
a13x1+a23x2+a32x3+a43x4?b3
Эти линейные неравенства представляют собой ограничения, накладываемые на элементы решения x1, x2, x3, x4.
Таким образом, поставленная задача сводится к следующей: найти такие неотрицательные значения переменных x1, x2, x3, x4, чтобы они удовлетворяли ограничениям - неравенствам и одновременно обращали в минимум линейную функцию этих переменных:
4.2 Задача о планировании производства
Постановка задачи. Предприятие производит изделия трёх видов: U1, U2, U3. По каждому виду изделия предприятию спущен план, по которому оно обязано выпустить не мене b1 единиц изделия U1, не мене b2 единиц изделия U2 и не мене b3 единиц изделия U3. План может быть перевыполнен, но в определённых границах; условия спроса ограничивают количества произведённых единиц каждого типа: не более соответственно 1, 2, 3 единиц. На изготовление изделий идёт какое-то сырьё; всего имеется четыре вида сырья: s1, s2, s3, s4, причём запасы ограничены числами 1, 2, 3, 4 единиц каждого вида сырья. Теперь надо узнать какое количество сырья каждого вида идёт на изготовление каждого вида изделий. Обозначим aij количество единиц сырья вида si (I= 1, 2, 3, 4), потребное на изготовление одной единицы изделия Uj (j= 1, 2, 3). Первый индекс у числа aij - вид изделия, второй - вид сырья. Значения aij сведены в таблицу2 (матрицу). При реализации одно изделие U1 приносит предприятию прибыль c1, U2 - прибыль c2, U3 - прибыль c3. Требуется так спланировать производство (сколько каких изделий производить), чтобы план был выполнен или перевыполнен (но при отсутствии «затоваривания»), а суммарная прибыль обращалась в максимум.
Таблица 2 Таблица значений модели
Сырьё |
Изделия |
|||
U1 |
U2 |
U3 |
||
S1 S2 S3 S4 |
a11 a12 a13 a14 |
a21 a22 a23 a24 |
a31 a32 a33 a34 |
Математическая модель. Элементами решения будут x1, x2, x3 - количества единиц изделий U1, U2, U3, которые мы произведём. Обязательность выполнения планового задания запишется в виде трёх ограничений - неравенств: x1b1, x2b2, x3b3.
Отсутствие изделий продукции (затоваривания) даёт нам ещё три ограничения - неравенства: x11, x22, x33.
Целевая функция: L=c1x1+c2x2+c3x3> max.
Система ограничений:
a11x1+a21x2+a31x31.
a12x1+a22x2+a32x32.
a13x1+a23x2+a33x33.
a14x1+a24x2+a34x34.
4.3 Задача о загрузки оборудования
Постановка задачи. Ткацкая фабрика располагает двумя видами станков, из них N1 станков типа 1 и N2 станков типа 2. Станки могут производить три вида тканей: T1, T2, T3, но с разной производительностью. Данные aij производительности станков в таблице 3 (первый индекс - тип станка, второй - вид ткани).
Каждый метр ткани вида T1 приносит фабрике доход c1, вида Т2 - доход с2, Т3 - доход с3.
Таблица 3 Таблица значений модели
Тип станка |
Вид ткани |
|||
T1 |
T2 |
T3 |
||
1 2 |
а11 а21 |
а12 а22 |
а13 а23 |
Фабрике предписан план согласно которому она должна производить в месяц не менее b1 метров ткани Т1, b2 метров ткани Т2, b3 метров ткани Т3; количество метров каждого вида ткани не должно превышать соответственно 1, 2, 3 метров. Кроме того, все без исключения станки должны быть загружены. Требуется так распределить загрузку станков производством тканей Т1, Т2, Т3, чтобы суммарный месячный доход был максимален.
Математическая модель. Введём букву x с двумя индексами (первый - тип станка, второй - вид ткани). Всего будет шесть элементов решения: x11 x12 x13 x21 x22 x23 .
Здесь x11 - количество станков типа 1, занятых изготовлением ткани Т1, x12 - количество станков типа 1, занятых изготовлением ткани Т2 и т.д.
Запишем суммарный доход от производства всех видов тканей. Суммарное количество метров ткани Т1, произведённое всеми станками, будет равно a11x11+a21x21 и принесёт доход c1(a11x11+a21x21).
Целевая функция:
L=c1 (a11x11+a21x21)+c2 (a12x12+a22x22)+c3 (a13x13+a23x23) > max.
Система ограничений:
Обеспечим выполнения плана ограничениями по минимальным параметрам:
a11x11+a21x21b1,
a12x12+a22x22b2,
a13x13+a23x23b3,
После этого ограничим выполнение плана по максимальным параметрам:
a11x11+a21x211,
a12x12+a22x222,
a13x13+a23x233,
Теперь запишем ограничения, связанные с наличием оборудования и его полной загрузкой.
Суммарное количество станков типа 1, занятых изготовлением всех тканей, должно быть равно N1; типа 2 - N2.
x11+x12+x13=N1,
x21+x22+x23=N2.
4.4 Задача о снабжении сырьём
Постановка задачи. Имеется три промышленных предприятия: П1, П2, П3, требующих снабжения определённым видом сырья. Потребности в сырье каждого предприятия равны соответственно a1, a2, a3 единиц. Имеются пять сырьевых баз, расположенных от предприятий на каких - то расстояниях и связанных с ними путями сообщения с разными тарифами. Единица сырья, получаемая предприятием Пi c базы Бj , обходится предприятию в сij рублей (первый индекс - номер предприятия, второй - номер базы) записаны в таблице 4.Возможности снабжения сырьём с каждой базы ограничены её производственной мощностью: базы Б1, Б2, Б3, Б4, Б5 могут дать не более b1, b2, b3, b4, b5 единиц сырья. Требуется составить такой план снабжения предприятий сырьём (с какой базы, куда и какое количество сырья везти), чтобы потребности предприятий были обеспечены при минимальных расходах на сырьё.
Таблица 4 Таблица значений модели
Предприятия |
Базы |
|||||
Б1 |
Б2 |
Б3 |
Б4 |
Б5 |
||
П1 П2 П3 |
С11 С21 С31 |
С12 С22 С32 |
С13 С23 С33 |
С14 С24 С34 |
С15 С25 С35 |
Математическая модель. Обозначим xij количества сырья с j - ой базы.
Всего план будет состоять из 15 элементов решения: x11 x12 x13 x14 x15 x21 x22 x23 x24 x25 x31 x32 x33 x34 x35.
Целевая функция:
Система ограничений:
x11+x12+x13+x14+x15=a1,
x21+x22+x23+x24+x25=a2,
x31+x32+x33+x34+x35=a3,
x11+x21+x31b1,
x12+x22+x32b2,
x13+x23+x33b3,
x14+x24+x34b4,
x15+x25+x35b5,
ЗАКЛЮЧЕНИЕ
Каждый человек ежедневно, не всегда осознавая это, решает проблему: как получить наибольший эффект, обладая ограниченными средствами. Наши средства и ресурсы всегда ограничены. Чтобы достичь наибольшего эффекта, имея ограниченные средства, надо составить план, или программу действий. Раньше план в таких случаях составлялся “на глазок” (теперь, впрочем, зачастую тоже). В середине XX века был создан специальный математический аппарат, помогающий это делать “по науке”. Соответствующий раздел математики называется математическим программированием. Слово “программирование” здесь обязано отчасти историческому недоразумению, отчасти неточному переводу с английского. По-русски лучше было бы употребить слово “планирование”. С программированием для ЭВМ математическое программирование имеет лишь то общее, что большинство возникающих на практике задач математического программирования слишком громоздки для ручного счета, решить их можно только с помощью ЭВМ, предварительно составив программу.
В этом курсовой работе были рассмотрены некоторые способы решения раздела математического программирования линейного программирования в математических формулах, из которых любой программист может составить работающую программу для решения задач линейного программирования. Так же к курсовой работе была создана программа реализующая симплекс метод решения задач линейного программирования. Код программы представлен в приложении 1, а сама программа в электронном виде приложена к курсовой работе.
СПИСОК ЛИТЕРАТУРЫ
1. Абрамов Л.М., Капустин В.Ф. Математическое программирование. Л., Изд-Ленингр. ун-та, 2000.
2. Ашманов С.А. Линейное программирование. - М.: Наука, 1981.
3. Банди Б. Основы линейного программирования: Пер. с англ. - М.: Радио и связь, 1989
4. Габасов Р., Кириллова Ф.М. Методы линейного программирования. Ч.1. Общие задачи, Минск, Изд-во БГУ им. В.И. Ленина, 1977.
5. Гасс С.Линейное программирование. - М.: Физматгиз, 1961.
6. Ляшенко И.Н, Карагодова Е.А, Черникова Н.В., Шор Н.З. Линейное и нелинейное программирование. Издательское объединение “Вища школа”, 1975.
7. Солодовников А.С. Введение в линейную алгебру и линейное программирование. М., Изд. “Просвещение”, 1966.
8. Схрейвер А. Теория линейного и целочисленного программирования: В 2-х т. Т.1: Пер с англ. - М.: Мир, 1991.
Размещено на Allbest.ru
Подобные документы
Обыкновенные и модифицированные жордановы исключения. Последовательность решения задач линейного программирования симплекс-методом применительно к задаче максимизации: составлении опорного плана решения, различные преобразования в симплекс-таблице.
курсовая работа [37,2 K], добавлен 01.05.2011Общее понятие вектора и векторного пространства, их свойства и дополнительные структуры. Графический метод в решении задачи линейного программирования, его особенности и область применения. Примеры решения экономических задач графическим способом.
курсовая работа [1,2 M], добавлен 14.11.2010Понятие линейного программирования и его основные методы. Формулировка задачи линейного программирования в матричной форме и ее решение различными методами: графическим, табличным, искусственного базиса. Особенности решения данной задачи симплекс-методом.
курсовая работа [65,3 K], добавлен 30.11.2010Развитие численных линейных методов решения задач линейного программирования. Знакомство с методами поиска целевой функции: равномерный симплекс, методы Коши, Ньютона, сопряжённого градиенты, квазиньютоновский метод. Алгоритмы нахождения экстремума.
курсовая работа [716,1 K], добавлен 12.07.2012Знакомство с особенностями построения математических моделей задач линейного программирования. Характеристика проблем составления математической модели двойственной задачи, обзор дополнительных переменных. Рассмотрение основанных функций новых переменных.
задача [656,1 K], добавлен 01.06.2016Линейное программирование как наиболее разработанный и широко применяемый раздел математического программирования. Понятие и содержание симплекс-метода, особенности и сферы его применения, порядок и анализ решения линейных уравнений данным методом.
курсовая работа [197,1 K], добавлен 09.04.2013Статистический подход к измерению правовой информации. Графический метод решения задач линейного программирования. Методика решения задач линейного программирования графическим методом. Количество информации как мера неопределенности состояния системы.
контрольная работа [79,4 K], добавлен 04.06.2010Сущность линейного программирования. Изучение математических методов решения экстремальных задач, которые характеризуются линейной зависимостью между переменными и линейной целевой функцией. Нахождение точек наибольшего или наименьшего значения функции.
реферат [162,8 K], добавлен 20.05.2019История зарождения и создания линейного программирования. Транспортная задача. Общая постановка, цели, задачи. Основные типы, виды моделей. Методы составления начального опорного плана. Понятие потенциала и цикла. Задача, двойственная к транспортной.
курсовая работа [166,7 K], добавлен 17.07.2002Задача целочисленного линейного программирования, приведение к канонической форме. Общие идеи методов отсечения. Алгоритм Гомори для решения целочисленных задач линейного программирования. Понятие правильного отсечения и простейший способ его построения.
курсовая работа [67,5 K], добавлен 25.11.2011