
Методы оптимальных решений.ppt
- Количество слайдов: 25
Методы оптимальных решений • 1. 2. 3. 4. Основные темы дисциплины Оптимизация – постановка задачи Линейное программирование и задача оптимизации. Методы решения Двойственные задачи. Применение в экономических приложениях Транспортная задача
Оптимизация. Постановка задачи • Линейное программирование как научно-практическая дисциплина. Из всех задач оптимизации задачи линейного программирования выделяются тем, что в них ограничения - системы линейных неравенств или равенств. Ограничения задают выпуклые линейные многогранники в конечном линейном пространстве. Целевые функции также линейны. • Впервые такие задачи решались советским математиком Л. В. Канторовичем (1912 -1986) в 1930 -х годах как задачи производственного менеджмента с целью оптимизации организации производства и производственных процессов, например, процессов загрузки станков и раскройки листов материалов. После второй мировой войны аналогичными задачами занялись в США. В 1975 г. Т. Купманс (1910 -1985, родился в Нидерландах, работал в основном в США) и академик АН СССР Л. В. Канторович были награждены Нобелевскими премиями по экономике.
Линейное программирование Наиболее часто используются оптимизационные модели принятия решений. Их общий вид таков: • F (X) → max • X Є A Здесь F – целевая функция; Х – управляющий параметр, который может иметь различную природу - число, вектор, множество и т. п. Цель менеджера - максимизировать целевую функцию F (X), выбрав соответствующий Х, соответствующий множеству определения А, X Є A. Линейное программирование является одним из наиболее широко применяемых методов оптимизации.
Линейное программирование – постановка задачи Пример 1. Производственная задача. Цех может производить стулья и столы. На производство стула идет 5 единиц материала, на производство стола - 20 единиц. Стул требует 10 человекочасов, стол - 15. Имеется 400 единиц материала и 450 человекочасов. Прибыль при производстве стула - 45 денежных единиц, при производстве стола - 80 ден. ед. Сколько надо сделать стульев и столов, чтобы получить максимальную прибыль? Обозначим: Х 1 - число изготовленных стульев, Х 2 - число сделанных столов. Задача оптимизации (целевая функция) имеет вид: F(x 1, x 2) = 45 Х 1 + 80 Х 2 → max , Ограничения задачи , т. е. допустимое множество Х 5 Х 1 + 20 Х 2 ≤ 400 10 Х 1 + 15 Х 2 ≤ 450 • Х 1 ≥ 0 • Х 2 ≥ 0
Графическое представление задачи линейного программирования Условия производственной задачи можно изобразить на координатной плоскости, откладывая по оси абсцисс значения Х 1 , а по вертикальной оси ординат - значения Х 2. Тогда ограничения по материалу и последние две строчки оптимизационной задачи выделяют возможные значения (Х 1 , Х 2) объемов выпуска в виде треугольника (рис. 1). Рис. 1. Ограничения по материалу
Графическое представление задачи линейного программирования. Пример ограничения по материалу изображаются в виде выпуклого Многоугольника ( треугольника). Этот треугольник получается путем отсечения от первого квадранта примыкающей к началу координат зоны. Отсечение проводится прямой, соответствующей ограничениям 5 Х 1 + 20 Х 2 ≤ 400 и Х 1 ≥ 0 , Х 2 ≥ 0. При построении эти неравенства заменяются на равенства. Прямая пересекает ось Х 1, соответствующую стульям, в точке (80, 0). Это означает, что если весь материал пустить на изготовление стульев, то будет изготовлено 80 стульев. Та же прямая пересекает ось Х 2, соответствующую столам, в точке (0, 20). Это означает, что если весь материал пустить на изготовление столов, то будет изготовлено 20 столов. Для всех точек внутри треугольника выполнено неравенство, а не равенство, а это означает, что материал останется.
Линейное программирование. Продолжение примера Ограничения по труду, как и ограничения по материалу, также изображаются в виде треугольника (рис. 2)
Линейное программирование. Продолжение примера Из анализа результатов рис. 1 и рис. 2 мы видим, что очевидного решения нет - для изготовления 80 стульев есть материал, но не хватает рабочих рук, а для производства 30 столов есть рабочая сила, но нет материала, Значит, надо изготавливать и то, и другое. Но в каком соотношении? Чтобы ответить на этот вопрос, надо "совместить" рис. 1 и рис. 2, получив область возможных решений, а затем проследить, какие значения принимает целевая функция на этом множестве (рис. 3).
Линейное программирование. Продолжение примера
Линейное программирование. Продолжение примера Объединение ограничений рис. 1 и рис. 2 приводит к образованию совместной системы ограничений и формированию области допустимых решений. Графически эта область представляет выпуклый многоугольник рис. 3. с соответствующими координатами вершин
Линейное программирование. Продолжение примера Максимальное (или минимальное ) значение целевой функции для данной простой задачи можно найти методом простого перебора, вычислив значение целевой функции F(x 1, x 2) = 45 Х 1 + 80 Х 2 в узлах выпуклого многоугольника. Решение задачи: максимум целевой функции достигается в точке (24, 14) и равен 2200 ден. ед.
Двойственная задача. Каждой задаче линейного программирования соответствует двойственная задача. В ней по сравнению с исходной задачей строки переходят в столбцы, неравенства меняют знак, Вместо максимума ищется минимум (или, наоборот, вместо минимума –максимум). Задача, двойственная к двойственной – это сама исходная задача. Сравним исходную задачу (слева) и двойственную к ней (справа): • Прямая задача Двойственная задача Целевая функция Целевая функция F = 45 Х 1 + 80 Х 2 → max , F= 400 W 1 + 450 W 2 → min , • 5 Х 1 + 20 Х 2 ≤ 400 , 5 W 1 + 10 W 2 ≥ 45, • 10 Х 1 + 15 Х 2 ≤ 450 , 20 W 1 + 15 W 2 ≥ 80, • Х 1 ≥ 0 , Х 2 ≥ 0. W 1 ≥ 0, W 2 ≥ 0. Доказано, что оптимальные значения целевых функций в исходной и двойственной задачах совпадают (т. е. максимум в исходной задаче совпадает с минимумом в двойственной). оптимальные значения W 1 W 2 показывают стоимость материала и труда соответственно, если Их оценивать по вкладу в целевую функцию их принято называть "объективно обусловленными оценками" сырья и рабочей силы.
• Методы решения задач линейного программирования относятся к вычислительной математике, а не к экономике и менеджменту. Уметь пользоваться этим инструментом должен любой менеджер или инженер. Существуют программы, позволяющие автоматизировать решение этой задачи. • Основными методами решения задачи линейного программирования являются: • 1. Простой перебор. . Является методом графического решения задачи. Строится многоугольник области допустимых решений, в узлах этого прямоугольника вычисляется значение целевой функции, находятся координаты оптимального решения. • 2. Направленный перебор. Строится линия целевой функции, которая переносится параллельно самой себе в направлении роста целевой функции. Находится вершина решения
Симплекс метод 1. Один из первых специализированных методов оптимизации, нацеленный на решение задач линейного программирования. 2. Был предложен американцем Г. Данцигом в 1951 г. 3. Основная его идея состоит в продвижении по выпуклому многограннику ограничений от вершины к вершине, при котором на каждом шаге значение целевой функции улучшается до тех пор, пока не будет достигнут оптимум. Метод позволяет переходить от одного допустимого базисного решения к другому, причем так, что значения целевой функции непрерывно возрастают. В результате оптимальное решение находят за конечное число шагов. Алгоритмы симплекса-метода позволяют также установить, является ли задача ЛП разрешимой.
Симплекс метод. Пример 2 Предприятие может выпускать автоматические кухни, кофеварки и самовары Данные о производственных мощностях (в штуках изделий) приведены в табл. 2. Штамповка и отделка проводятся на одном и том же оборудовании, а сборка проводится на отдельных участках Таблица 2 Кухни Кофеварки Самовары Штамповка 20000 30000 12000 Отделка 30000 10000 Сборка 20000 12000 8000 Объем выпуска x 1 x 2 x 3 Удельная прибыль (на 1 изделие) 15 12 14
Симплекс метод. Продолжение примера 2 Кухни Кофеварки Самовары Штамповка 20000 30000 12000 Отделка 30000 10000 Сборка 20000 12000 8000 Объем выпуска x 1 x 2 x 3 Удельная прибыль 15 12 14 Для удобства восприятия система ограничений дана в процентах и задача линейного программирования имеет вид • Х 1 ≥ 0 , Х 2 ≥ 0 , Х 3 ≥ 0 , (0) • Х 1 / 200 + Х 2 / 300 + Х 3 / 120 ≤ 100 , (1) • Х 1 / 300 + Х 2 / 100 + Х 3 / 100 ≤ 100 , (2) • Х 1 / 200 ≤ 100 , (3) (вытекает из 1, можно исключить) • Х 2 / 120 ≤ 100 , (4) (вытекает из 2, можно исключить) • Х 3 / 80 ≤ 100 , (5) • F = 15 Х 1 + 12 Х 2 + 14 Х 3 → max.
Симплекс метод. Продолжение примера 2 После исключения неравенств (3) и (4) задача линейного программирования в окончательном варианте примет вид • F = 15 Х 1 + 12 Х 2 + 14 Х 3 → max. • Х 1 / 200 + Х 2 / 300 + Х 3 / 120 ≤ 100 (1), • Х 1 / 300 + Х 2 / 100 + Х 3 / 100 ≤ 100 (2), • Х 3 / 80 ≤ 100 (5) В соответствии с симплекс методом, вводом новых переменных система неравенств приводится в систему равенств. В конкретной задаче вводятся 3 новых переменных. В полученной системе равенств 3 уравнения и 6 неизвестных. Система решается путем последовательного перебора базовых переменных которая приводит к росту целевой функции
Симплекс метод. Продолжение примера 2 После ввода новых переменных система примет вид Х 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 Симплекс метод – первая итерация В данную систему переменные Х 4 , Х 5 , Х 6 входят только в одно из уравнений с коэффициентом 1 и являются базисными. Свободные переменные Х 1 , Х 2 , , Х 3 можно приравнять любой константе, в том числе – нулю. Тогда первое допустимое решение (0, 0, 0, 100, 100) , значение целевой функции F =0. Дальнейшая система пересчетов сводится к переводу одной из свободных переменных в базис и с выводом одной из базисных переменных и переводом ее в свободные переменные.
Симплекс метод. Продолжение примера 2 Х 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. В качестве новой базисной переменной выбираем Х 1 – переменную с наибольшим положительным коэффициентом в F. 2. Сравниваем частные от деления свободных членов на коэффициенты при выбранной базисной переменной Х 1. Получаем 100 / (1/200) = 20000, 100 / (1/300) =30000, 100/0 = + ∞. Выбираем в системе строку, которая соответствует этому. Это – первая строка. После ряда преобразований над системой (**) получаем новую систему (***)
Симплекс метод. Продолжение примера 2 Х 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 , Х 5 , Х 6 , свободными Х 2, Х 3 , Х 4. Второе допустимое решение (20000, 0, 100/3, 100) Значение F = 300000. Симплекс метод – вторая итерация Так как наименьший положительный коэффициент в целевой функции – при Х 2, то выбираем Х 2 базисной переменной. Проводя аналогичные действия, образуем частные от деления свободных членов на коэффициенты при Х 2 , получаем 20000 / (2/3) = 30000, (100/3) / (7/900) = 30000/7, 100/0 = + ∞. В качестве разрешающей выбираем вторую строку и после ряда преобразований и пересчетов получаем систему (****) и целевую функцию
Симплекс метод. Продолжение примера 2 Х 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 Из (****) следует, что базисными переменными являются Х 1 =120000/7 , Х 2 = 30000/7 , Х 6 = 100 , F = 308571. Так как в строке - 85/7 Х 3 - 19800/7 Х 4 - 1800/7 Х 5 = F – 308571 не осталось ни одного положительного коэффициента, то оптимальный план найден и производственная программа такая: Кухни - 120000/7 = 17143 Кофемолки - 30000/7 = 4286 Самовары – 0 Максимальная прибыль – 308571 усл. ден. ед. Все производственное оборудование будет задействовано за исключением линии по сборке самоваров
Транспортная задача–одна из задач линейного программирования. Ее цель – разработка наиболее рациональных путей и способов транспортировки товаров, устранения чрезмерно дальних, встречных, повторных перевозок. Разработка рациональных способов транспортировки товаров позволяет сокращать время перевозок, расходы на транспортировки, приводит к своевременной реализации потребностей потребителя. В зависимости от соотношения между суммарными запасами и суммарными потребностями транспортные задачи могут быть закрытыми и открытыми. Если сумма запасов груза равна суммарной потребности в нем, то задача - закрытая , в противном случае – открытая. Математическая модель закрытой транспортной задачи – минимизация целевой функции при заданных тарифах на перевозки
Транспортная задача. Пример 3 • • Исходные данные к транспортной задаче. Таблица 3. Потребители П 1 П 2 П 3 П 4 Запасы(a) Склады с1 2 5 5 5 60 с2 1 4 80 с3 3 1 5 2 60 Потребности (b) 50 40 70 40 200
Транспортная задача. Пример 3 Надо спланировать перевозки, т. е. выбрать объемы Хij поставок товара со склада i потребителю j , где i = 1, 2, 3; j = 1, 2, 3, 4. Таким образом, всего в задаче имеется 12 переменных. Они удовлетворяют двум группам ограничений: • По запасам на складах: По ограничениям на потребление X 11 + Х 12 + Х 13 + Х 14 = 60 , X 11 + Х 21 + Х 31 = 50 X 21 + Х 22 + Х 23 + Х 24 = 80 , X 12 + Х 22 + Х 32 = 40 , X 31 + Х 32 + Х 33 + Х 34 = 60. X 13 + Х 23 + Х 33 = 70 , X 14 + Х 24 + Х 34 = 40 Всего 7 ограничений типа равенств. Кроме того, все переменные неотрицательны - еще 12 ограничений. Целевая функция - издержки по перевозке, которые необходимо минимизировать: F = 2 X 11 + 5 Х 12 + 4 Х 13 + 5 Х 14 + X 21 + 2 Х 22 + Х 23 + 4 Х 24 + 3 X 31 + Х 32 + 5 Х 33 + 2 Х 34 → min.
Транспортная задача Количество переменных и ограничений в транспортной задаче таково, что ее следует решать с применением современных программных продуктов. В учебных задачах небольшого размера можно использовать метод потенциалов