|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Метод Гомори. (Идея, геометрическая интерпретация, алгоритм)Задача целочисленного линейного программирования ставится аналогично рассмотренной обычной задаче линейного программирования. Однако, кроме условия неотрицательности переменных, в данном случае налагается дополнительное условие целочисленности. Решение таких задач сводится к решению ряда специально построенных задач, каждая из которых получается из исходной путем добавления к ее условиям дополнительного линейного ограничения (сечения). При этом k - м сечением будет линейное ограничение, вводимое в задачу для образования расширенной задачи и удовлетворяющее условиям:
При решении задач целочисленного программирования по методу Гомори первый этап не отличается от обычного расчета по симплекс-методу, т.е. на первом этапе целочисленность игнорируется до получения оптимального плана. Пусть задача линейного программирования решена симплекс-методом и ее оптимальное решение не удовлетворяет условиям целочисленности. Тогда составляется дополнительное ограничение. Дополнительное ограничение записывается в виде где дробные части чисел (aij) и (bi). Решение задач целочисленного программирования выполняется в следующем порядке:
Рассмотрим пример: найти хотя бы одно оптимальное целочисленное решение задачи Для решения можно использовать двойственный симплекс-метод.Условия задачи представлены в виде таблицы модифицированных жордановых исключений (табл. 4.1).
Выбираем разрешающий. В столбце свободных членов выбираем максимальный по модулю отрицательный элемент (т.к. в F-стоке нет положительных элементов). Эта строка становится разрешающей. Составляем симплекс-отношение: т.е. элементы F-строки делим на элементы разрешающей строки, если они одного знака. Выбираем минимальное – этот столбец становится разрешающим.
Составляем новую симплекс-таблицу: На место разрешающего элемента ставим обратный элемент, повторяем все действия аналогично.
В f - строке условие критерия выполняется. Однако полученный план недопустимый. В столбце свободных членов все элементы отрицательны. Проделав две операции симплексных преобразований, получим оптимальное, по нецелочисленное решение/ Значение целевой функции для плана x*1 = (1/2; 0; 4/3; 1/6; 0; 0) равно f1min = 11/6. Строим дополнительное ограничение. Наибольшую дробную часть имеет базисная переменная Вводим дополнительное ограничение. Тогда таблица примет следующий вид.
Используя двойственный симплекс-метод, получим на следующем шаге оптимальное, но нецелочисленное решение. К базисной переменной x4, имеющей наибольшую дробную часть, составим дополнительное ограничение. С этой целью в табл. 4.4 предварительно оставляем место для новой базисной дополнительной переменной x8. Для этого необходимо от свободного члена и коэффициентов при свободных базисных переменных x7, х2 и х6 взять дробную часть и записать ее в соответствующем столбце с противоположным знаком. Проделав симплексные преобразования с разрешающим элементом —1/3, выделенным в табл, получим новый уже полностью целочисленный план. Для оптимального целочисленного плана х* = (1; 0; 2; 2; 1; 2; 0; 0) значение целевой функции f min=3.
Метод решения поставленной задачи – метод Гомори, который основан на симплексном методе. Симплексным методом находится оптимальный план задачи без учета целочисленности. Если оптимальный план целочисленный, то вычисления заканчивают. Если же оптимальный план содержит хотя бы одну дробную компоненту xi, то накладывают дополнительное ограничение, учитывающее целочисленность . Геометрический смысл дополнительного ограничения: пусть в точке А многогранника решений Q функция Z достигает максимального значения Z(A) = max, но координаты точки А – дробные. Тогда введеные ограничения по целочисленности 1 и 2 от области Q отсекают область Q/ с угловой точкой A/, координаты которой целочисленные и в которой линейная функция достигает максимального значения.
Транспортная задача является частным типом задачи линейного программирования и формулируется следующим образом. Имеется m пунктов отправления (или пунктов производства) А1,..., Аm, в которых сосредоточены запасы однородных продуктов в количестве ai,...,аm единиц. Имеется n пунктов назначения (или пунктов потребления) B1,...,Вm, потребность которых в указанных продуктах составляет b1,...,bn единиц. Известны также транспортные расходы Cij, связанные с перевозкой единицы продукта из пункта Ai в пункт Bj, i — 1,..., m; j = 1,...,n. Предположим, что , т. е. общий объем производства равен общему объему потребления. Требуется составить такой план перевозок (откуда, куда и сколько единиц продукта везти), чтобы удовлетворить спрос всех пунктов потребления за счет реализации всего продукта, произведенного всеми пунктами производства, при минимальной общей стоимости всех перевозок. Приведенная формулировка транспортной задачи называется замкнутой транспортной моделью. Формализуем эту задачу. Пусть хij - количество единиц продукта, поставляемого из пункта Ai в пункт Bj. Подлежащие минимизации суммарные затраты на перевозку продуктов из всех пунктов производства во все пункты потребления выражаются формулой: Суммарное количество продукта, направляемого из каждого пункта отправления во все пункты назначения, должно быть равно запасу продукта в данном пункте. Формально это означает, что i=1,…,m. Суммарное количество груза, доставляемого в каждый пункт назначения из всех пунктов отправления, должно быть равно потребности. Это условие полного удовлетворения спроса: j=1,…,n. Объемы перевозок - неотрицательные числа, так как перевозки из пунктов потребления в пункты производства исключены: xij≥0, i=1,…,m; j=1,…,n. Транспортная задача сводится, таким образом, к минимизации суммарных затрат при выполнении условий полного удовлетворения спроса и равенства вывозимого количества продукта запасам его в пунктах отправления. В ряде случаев не требуется, чтобы весь произведенный продукт в каждом пункте производства был реализован. В таких случаях баланс производства и потребления может быть нарушен: i=1,…,m. Введение этого условия приводит к открытой транспортной модели. Задачи транспортного типа широко распространены в практике. Кроме того, к ним сводятся многие другие задачи линейного программирования - задачи о назначениях, сетевые, календарного планирования. Как одна из задач линейного программирования транспортная задача принципиально может быть решена универсальным методом решения любой задачи линейного программирования, но этот метод не учитывает специфики условий транспортной задачи. Поэтому решение ее симплекс-методом оказывается слишком громоздким. Структура ограничений задачи учитывается в ряде специальных вычислительных методов ее решения. Рассмотрим некоторые из них. Предварительно сделаем следующее замечание. Открытая транспортная модель может быть приведена к замкнутой модели добавлением фиктивного пункта отправления (потребления), от которого поступает весь недостающий продукт или в который свозится весь избыточный запас. Стоимость перевозок между реальными пунктами и фиктивным принимается равной нулю. Вследствие простоты перехода от открытой модели к замкнутой в дальнейшем рассматриваются методы решения замкнутой модели транспортной задачи. Метод потенциалов является модификацией симплекс-метода решения задачи линейного программирования применительно к транспортной задаче. Он позволяет, отправляясь от некоторого допустимого решения, получить оптимальное решение за конечное число итераций. Общая схема отдельной итерации такова. По допустимому решению каждому пункту задачи сопоставляется число, называемое его предварительным потенциалом. Пунктам Аi соответствуют числа ui, пунктам Вj - числа Vj. Они выбираются таким образом, чтобы их разность на k-й итерации была равна Cij - стоимости перевозки единицы продукции между пунктами Аi и Bj: Vj[k] - ui[k] = Cij, i=1,...,m; j = 1,...,n. Если разность предварительных потенциалов для каждой пары пунктов Ai, Bj не превосходит Cij, то полученный план перевозок является решением задачи. В противном случае указывается способ получения нового допустимого плана, связанного с меньшими транспортными издержками. За конечное число итераций находится оптимальный план задачи.
При построении опорного плана соблюдаются следующие условия:
Рассмотрим следующий пример: - поставщики; - - потребители (+) - наличие груза; (-) - потребности
20 25 нарушение 22 5 30 нарушение 31 +35 25 20 -10 15 65 (-16)
30 35 100 70 105 (-34) (+42) (-23) 1) Первый потенциал берем произвольно (!!! В нашем примере берем 100!!!, он находиться у первой вершины). 2) Если двигаемся против направления перевозки, то от потенциала отнимаем стоимость перевозки (т.е. 100 – 30 = 70, (см. у вершины № 7)), а если двигаемся по направлению перевозки, то к значению добавляем стоимость перевозки (т.е 70 + + + 35 = 105, (см. у вершины № 6)). 3) Для незанятых веток вычисляем разность потенциалов (нарушение) по модулю и минус стоимость перевозок: (!100 – 40! – 25 = +35) и (!70 – 60! – 20 = -10)
4) Выбираем максимальное положительное нарушение и загружаем эту ветку (красная стрелка от меньшего потенциала к большему). 5) Получили замкнутый цикл, который обходим в направлении красной стрелки и выбираем минимальную встречную перевозку (15).
21 25 нарушение 22 5 30 нарушение 31 +35 25 20 -10 15 65 (-16)
30 35 минимальная 100 70 105 встречная перевозка (15) (-34) (+42) (-23) 6) К попутным перевозкам прибавляем найденное число (15), а от встречных отнимаем. При этом получаем улучшение плана: 35 · 15 = 525, где 35 – максимальное положительное нарушение, 15 – минимальная встречная перевозка, а 525 – на столько единиц улучшился план.
22 25 7 20 30 16 25 15 20 +5 100 (-16)
30 35 100 70 105 (-34) (+42) (-23) Полученный план не является оптимальным. 7) Повторяем все действия аналогично, как и в предыдущих пунктах. Получаем оптимальный план. нарушение
23 25 <0 20 30 16 25 22 20 7 95 (-16)
30 35 <0 100 70 105 (-34) (+42) (-23) нарушение Положительного нарушения нет => план оптимальный. f = 25·22 + 30·12 + 35·23 + 30·16 + 25·20 + 20·7 = 52835
Как известно, общая задача математического программирования формулируется следующим образом: найти вектор X = (x1,..., xn), удовлетворяющий системе ограничений gi (x1,..., xn) = bi i = 1... k gi (x1,..., xn) ≤ bi i = k + 1,..., m и доставляющий экстремум функции Z = f (x1,..., xn). При этом предполагается, что известны функции gi (x1,..., xn) и f (x1,..., xn). Обычно на некоторые переменные x1,..., xn накладывается условие неотрицательности. Кроме того, ограничением может служить условие целочисленности решения для ряда переменных. Если n (1) gi (x1,..., xn) = ∑ aijxj i=1..m, i=1 n (2) Z = f (x1,..., xn) = ∑ Cjxj, j=1 где aij и Cj - известные константы, то при условии неотрицательности решения получаем задачу ЛП. Любую другую задачу математического программирования, не удовлетворяющую условиям (1) и (2), условимся считать нелинейной. Класс задач нелинейного программирования шире класса задач ЛП. Подробное изучение практических задач, которые условились считать линейными, показывает, что они в действительности являются нелинейными. Возникает задача нахождения эффективных методов решения задач нелинейного программирования. Существующие методы позволяют решать узкий класс задач, ограничения которых имеют вид (1). Даже если область допустимых решений выпуклая, то в ряде задач целевая функция может иметь несколько локальных экстремумов. С помощью большинства же вычислительных методов можно найти точку локального оптимума, но нельзя установить, является она точкой глобального (абсолютного) оптимума или нет. Если в задачах ЛП точка экстремума является вершиной многогранника решений, то в задачах нелинейного программирования она может лежать в вершине многогранника, на ребре или внутренней области. Если задача содержит нелинейные ограничения, то область допустимых решений не является выпуклой и кроме глобального оптимума могут существовать точки локального оптимума. Также как и в ЛП задачи нелинейного программирования могут быть решены графически. Пример. Найти минимальное и максимальное значения сепарабельной функции Z = (x1 - 4)2 + (x2 - 6)2 при ограничениях: x1 + x2 ≥1 2x1 + 3x2≤ 12 x1≥0, x2≥0. Решение. Область допустимых решений представляет собой многоугольник ABCE. Если положить Z = Q (Q>0), то получим уравнение окружности (x1 –4) + (x2 - 6) = Q. С уменьшением (увеличением) Q (квадрата радиуса) значения функции Z соответственно уменьшаются (увеличиваются). Проводя из точки М, как из центра, окружности различных радиусов, получим: минимальное знач ение функция Z(D) = 196/13 принимает в точке D (24/13; 36/13), в которой окружность касается области решений. Точка D не является угловой, ее координаты находят в результате решения системы уравнений, соответствующих прямым MD и CE. Функция Z имеет два локальных максимума: в вершине А(1;0) функция Z(A) = 45, в вершине E(6;0) функция Z(E) = 5, в вершине C(0;4) функция Z(C) = 25, причем глобальный максимум достигается в вершине С.
Ограничение в виде уравнения =b , i= Z=f(X) и f С (G) Составляем функцию Лагранжа L(x ,.., x , ,..., =f(x ,..., x + Исследуем эту функцию на безусловный экстремум. Получаем систему из n+m уравнений. Находим частные производные.
Если целевая функция в точке X имеет экстремум, то существует такой вектор ), что (X является решением системы. Ограничение в виде неравенства f(X);
и среди них выбираем, которые попали в ОДЗ
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.027 сек.) |