Математические методы

Автор: Пользователь скрыл имя, 22 Декабря 2012 в 20:34, курсовая работа

Описание работы

В последние годы в прикладной математике большое внимание уделяется новому классу задач оптимизации, заключающихся в нахождении в заданной области точек наибольшего или наименьшего значения некоторой функции, зависящей от большого числа переменных. Это так называемые задачи математического программирования, возникающие в самых разнообразных областях человеческой деятельности и прежде всего в экономических исследованиях, в практике планирования и организации производства. Изучение этого круга задач и методов их решения привело к созданию новой научной дисциплины, получившей позднее название линейного программирования.

Содержание

Аннотация………………………………………………………………………………3
Введение………………………………………………………………………………..4
Глава 1. Теоретическая часть………………………………………………………….6
1.1 История возникновения линейного программирования………………………6-8
1.2 Основные теоремы линейного программирования………………………………9
1.3 Основные понятия линейного программирования………………………….10-11
1.4 Методы решения задач линейного программирования..................................12-16
1.5 Алгоритм симплексного метода……………………………………………...17-18
1.6 Реализация симплексного метода.........................................................................19
Глава 2. Практическая часть……………………………………………………...20-27
2.1 Решение задачи линейного программирования симплексным методом......20-24
2.2 Решение задачи линейного программирования с помощью электронных таблиц………………………………………………………………………………….25
2.3 Решение задачи линейного программирования с помощью программы......26-27
Заключение…………………………………………………………………………….28
Список литературы……………………………………………………………………29
Приложение. Код программы…………………………………………………….30-38

Работа содержит 1 файл

Курсовая по мат методам.docx

— 197.25 Кб (Скачать)

В общей постановке задача линейного программирования выглядит следующим образом:

Имеются какие-то переменные х = (х1 , х2 , … хn ) и функция этих переменных f(x) = f (х1 , х2 , … хn ), которая  носит название целевой функции. Ставится задача: найти экстремум (максимум или минимум) целевой функции f(x) при условии, что переменные x принадлежат  некоторой области G:

В зависимости от вида функции  f(x) и области G и различают разделы математического программирования: квадратичное программирование, выпуклое программирование, целочисленное программирование и т.д. Линейное программирование характеризуется тем, что

а) функция f(x) является линейной функцией переменных х1 , х2 , … хn

б) область G определяется системой линейных равенств или неравенств.

Математическая модель любой  задачи линейного программирования включает в себя:

  • максимум или минимум целевой функции (критерий оптимальности);
  • систему ограничений в форме линейных уравнений и неравенств;
  • требование неотрицательности переменных.

 

 

1.4 Методы решения задач линейного программирования

Методы решения задач  линейного программирования относятся  к вычислительной математике, а не к экономике. Однако экономисту полезно  знать о свойствах интеллектуального  инструмента, которым он пользуется.

С ростом мощности компьютеров  необходимость применения изощренных методов снижается, поскольку во многих случаях время счета перестает  быть лимитирующим фактором, поскольку  весьма мало (доли секунд). Поэтому мы разберем лишь три метода.

Простой перебор. Возьмем  некоторый многомерный параллелепипед, в котором лежит многогранник, задаваемый ограничениями. Как его  построить? Например, если имеется ограничение  типа  2Х1  + 5Х2   ≤ 10,       то, очевидно,  0 ≤ Х1  ≤ 10/2 = 5 и 0 ≤ Х2  ≤ 10/2 = 5. Аналогичным образом  от линейных ограничений общего вида можно перейти к ограничениям на отдельные переменные. Остается взять максимальные границы по каждой переменной. Если многогранник, задаваемый ограничениями, неограничен, как было в задаче о диете, можно похожим, но несколько более сложным образом  выделить его «обращенную» к началу координат часть, содержащую решение, и заключить ее в многомерный параллелепипед.

Проведем перебор точек  параллелепипеда с шагом 1/10n  последовательно  при  n=2,3,…, вычисляя значения целевой  функции и проверяя наличие ограничений. Из всех точек, удовлетворяющих ограничениям, возьмем ту, в которой целевая  функция максимальна. Решение найдено! (Более строго выражаясь, найдено  с точностью до 1/10n .)  

Направленный перебор. Начнем с точки, удовлетворяющей ограничениям (ее можно найти простым перебором). Будем последовательно (или случайно – т.н. метод случайного поиска) менять ее координаты на определенную величину ∆, каждый раз в точку с более высоким значением целевой функции. Если выйдем на плоскость ограничения, будем двигаться по ней (находя одну из координат по уравнению ограничения). Затем движение по ребру (когда два ограничения-неравенства переходят в равенства)… Остановка – в вершине линейного многогранника. Решение найдено! (Более строго выражаясь, найдено с точностью до ∆ ; если необходимо, в окрестности найденного решения проводим направленный перебор с шагом ∆/2 , ∆/4 и т.д.)

Симплекс-метод. Этот один из первых специализированных методов  оптимизации, нацеленный на решение  задач линейного программирования, в то время как методы простого и направленного перебора могут  быть применены для  решения практически  любой задачи оптимизации. Он был  предложен американцем Г. Данцигом в1951 г. Симплекс-метод состоит в  продвижении по выпуклому многограннику  ограничений от вершины к вершине, при котором на каждом шаге значение целевой функции улучшается до тех  пор, пока не будет достигнут оптимум. Разберем пример со стр.208 книги [3].

Рассмотрим задачу линейного  программирования, сформулированную выше при рассмотрении оптимизации номенклатуры и объемов выпуска:

F = 15 Х1 + 12 Х2  + 14 Х3 →  max .

Х1   / 200  + Х2  / 300 + Х3  / 120 ≤ 100 ,      

Х1   / 300  + Х2  / 100 + Х3  / 100 ≤ 100 ,      

Х3 / 80 ≤ 100 .                                          

Неотрицательность переменных не будем специально указывать, поскольку  в задачах линейного программирования это предположение всегда принимается.

В соответствии с симплекс-методом  введем т.н. «свободные переменные» Х4 , Х5 , Х6 , соответствующие недоиспользованным мощностям, т.е. перейдем к системе уравнений:

Х1   / 200  + Х2  / 300 + Х3  / 120  + Х4  = 100 ,      

Х1   / 300  + Х2  / 100 + Х3  / 100  + Х5  = 100 ,     

Х3 / 80  +  Х6  = 100 ,

15 Х1 + 12 Х2  + 14 Х3  =  F .

У этой системы имеется  очевидное решение, соответствующее  вершине многогранника допустимых значений переменных:

Х1  = Х2  = Х3  = 0,  Х4  = Х5    = Х6  =  100,  F = 0.

В терминах исходной задачи это значит, что ничего не надо выпускать. Такое решение приемлемо только на период летних отпусков.

Выбираем переменную, которая  входит в целевую функцию F с самым  большим положительным коэффициентом. Это Х1 .

Сравниваем частные от деления свободных членов в первых трех уравнениях на коэффициенты при  только что выбранной переменной Х1:

100 / (1/200) = 20000, 100 / (1/300) =30000, 100/0 = + ∞ .

Выбираем строку, которой  соответствует минимальное из всех положительных отношений. В рассматриваемом  примере – это первая строка, которой соответствует отношение 20000.

Умножим первую строку на 200, чтобы получить Х1  с единичным  коэффициентом:

Х1     + 2/3 Х2   + 2/1,2 Х3   + 200 Х4  = 20000 .

Затем умножим вновь полученную строку на (-1/300) и сложим со второй строкой, получим   

7/900 Х2   + 4/900 Х3  - 2/3  Х4 + Х5  = 100/3.

Ту же преобразованную  первую строку умножим на (-15) и сложим со строкой, в правой части которой  стоит      F, получим:

2 Х2  - 11 Х3  - 3000 Х4  =  F – 300000.

В результате система уравнений  преобразуется к виду, в котором  переменная Х1   входит только в  первое уравнение:

Х1     + 2/3 Х2   + 2/1,2 Х3   + 200 Х4  = 20000 ,

7/900 Х2   + 4/900 Х3  - 2/3  Х4 + Х5  = 100/3,

Х3 / 80  +  Х6  = 100 ,

2 Х2  - 11 Х3  - 3000 Х4  =  F – 300000.

Очевидно, у новой системы  имеется улучшенное по сравнению  с исходным решение, соответствующее  вершине в шестимерном пространстве:

Х1  =  20000, Х2  = Х3  = Х4  =  0,  Х5    = 100/3, Х6  =  100,  F = 300000.

В терминах исходной задачи это значит, что надо выпускать  только кухни. Такое решение приемлемо, если допустимо выпускать только один вид продукции.

Повторим описанную выше операцию. В строке с 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. Получим систему уравнений:

Х1 + 9/7 Х3 + 1800/7 Х4 – 600/7 Х5 =  120000/7 ,

Х2 + 4/7 Х3 – 600/7 Х4 + 900/7Х5  = 30000/7,

Х3 / 80 + Х6  = 100 ,

- 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] приведен обширный перечень публикаций, посвященный многочисленным применениям линейного программирования в металлургии, угольной, химической, нефтяной, бумажной и прочих отраслях промышленности, в проблемах транспорта и связи, планирования производства, конструирования и хранения продукции, сельском хозяйстве, в научных исследованиях, в том числе экономических,  и даже при регулировании уличного движения.

В качестве очередного примера  рассмотрим т.н. транспортную задачу. Имеются  склады, запасы на которых известны. Известны потребители и объемы их потребностей. Необходимо доставить  товар со складов потребителям. Можно  по-разному организовать «прикрепление» потребителей к складам, т.е. установить, с какого склада какому потребителю и сколько вести. Кроме того, известна стоимость доставки единицы товара с определенного склада определенному потребителю. Требуется минимизировать издержки по перевозке.

Например, может идти речь о перевозке песка – сырья для производства кирпичей. В Москву песок обычно доставляется самым дешевым транспортом – водным. Поэтому в качестве складов можно рассматривать порты, а в качестве запасов – их суточную пропускную способность. Потребителями являются кирпичные заводы, а их потребности определяются суточным производством (в соответствии с имеющимися заказами). Для доставки необходимо загрузить автотранспорт, проехать по определенному маршруту и разгрузить его. Стоимость этих операций рассчитывается по известным правилам, на которых не имеет смысла останавливаться.

 

 

 

1.5 Алгоритм симплексного метода

Алгоритм симплекс-метода находит оптимальное решение, рассматривая ограниченное количество допустимых базисных решений. Алгоритм симплекс-метода всегда начинается с некоторого допустимого  базисного решения и затем  пытается найти другое допустимое базисное решение, «улучшающее» значение целевой функции. Это возможно только в том случае, если возрастание какой-либо нулевой (небазисной) переменной ведет к улучшению значения целевой функции. Но для того, чтобы небазисная переменная стала положительной, надо одну из текущих базисных переменных сделать нулевой, т.е. перевести в небазисные. Это необходимо, чтобы новое решение содержало в точности m базисных переменных. В соответствии с терминологией симплекс-метода выбранная нулевая переменная называется вводимой (в базис), а удаляемая базисная переменная — исключаемой (из базиса).

    Два правила  выбора вводимых и исключающих  переменных в симплекс-методе  назовем условием оптимальности  и условием допустимости. Сформулируем  эти правила, а также рассмотрим  последовательность действий, выполняемых  при реализации симплекс-метода.

    Условие оптимальности.  Вводимой переменной в задаче  максимизации (минимизации) является  небазисная переменная, имеющая  наибольший отрицательный (положительный)  коэффициент в z-строке. Если в  z-строке есть несколько таких  коэффициентов, то выбор вводимой  переменной делается произвольно.  Оптимальное решение достигнуто  тогда, когда в z-строке все  коэффициенты при небазисных  переменных будут неотрицательными (неположительными).

    Условие допустимости. Как в задаче максимизации, так  и в задаче минимизации в  качестве исключаемой выбирается  базисная переменная, для которой  отношение значения правой части  ограничения к положительному  коэффициенту ведущего столбца  минимально. Если базисных переменных  с таким свойством несколько,  то выбор исключаемой переменной выполняется произвольно.

   Последовательность действий, выполняемых в симплекс-методе.

   Шаг 1. Находится  начальное допустимое базисное решение.

   Шаг 2. На основе  условия оптимальности определяется  вводимая переменная. Если вводимых  переменных нет, вычисления заканчиваются.

    Шаг 3. На основе  условия допустимости выбирается исключаемая переменная.

    Шаг 4. Методом  Гаусса-Жордана вычисляется новое  базисное решение. Переход к шагу 2.

    Вычисления в  симплекс-методе выполняются итерационно  в том смысле, что условия оптимальности  и допустимости, а также вычисления  применяются к текущей симплекс-таблице,  в результате чего получается  следующая таблица.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.6 Реализация симплексного метода

С точки зрения обеспечения  рациональности и наглядности вычислительного  процесса выполнение алгоритма симплекс-метода удобно оформлять в виде последовательности таблиц. В различных источниках приводятся разные модификации симплекс-таблиц, отличающиеся друг от друга расположением  отдельных элементов. Однако это  не должно вызывать смущения у читателя, так как все они базируются на одних и тех же принципах. Остановимся  на структуре таблицы.

Настоящая структура симплекс-таблиц строится на идеях и принципах  их организации.

Информация о работе Математические методы