КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Алгоритм Симплекс-методаИсходные данные: задача в канонической форме; целевая функция минимизируется; найдено начальное базисное допустимое решение (опорный план), то есть система уравнений (2) имеет базис и все правые части уравнений bi ³ 0 - неотрицательны; целевая функция выражена через свободные переменные. При выполнении этих условий каждая итерация метода состоит из трех шагов: Шаг 1. Имеющийся план проверяется на оптимальность. Если в Z – строке нет отрицательных элементов, то имеющийся план оптимален и задача решена. Если отрицательные элементы есть, то план не оптимален. Выбираем любой отрицательный элемент Z – строки (как правило, максимальный по модулю) и считаем столбец, в котором он находится в качестве разрешающего. Пусть для определенности это столбец переменной хs. Шаг 2. Выбор разрешающей строки. Пусть разрешающий столбец, выбранный на предыдущем шаге, это столбец переменной хs. Для каждой i -ой строки (i = 1,...,m) делим элементы столбца свободных членов “Значение” (напомним, что все они неотрицательные) на положительные элементы разрешающего столбца, стоящие в этой строке, и находим минимальное из полученных частных, т.е. находим Пусть этот минимум достигается в строке r. Тогда r -ая строка является разрешающей, элемент ars - разрешающий элемент таблицы. Шаг 3. Пересчет таблицы. Преобразованиями Жордана-Гаусса пересчитываем таблицу относительно разрешающего элемента ars, найденного на предыдущем шаге, для чего: 3.1. Делим разрешающую строку на разрешающий элемент. В результате, на месте элемента ars будет стоять а¢rs = 1. 3.2. Ко всем остальным строкам таблицы (включая Z - строку) прибавляем полученную разрешающую, умноженную на элемент (-ais), где i – номер изменяемой строки i =1,2,...,r-1,r+1,...,m. К Z – строке прибавляем разрешающую строку, умноженную на (- cs). Иначе говоря, элементы новой таблицы (со штрихом) вычисляются по формулам: а¢rj = arj / ars; - новые элементы разрешающей строки (j = 1, 2,..., n); b¢r = br / ars а¢ij = aij - a¢rj× ais; - новые элементы i-й строки (i =1, 2,...,m; j = 1, 2,..., n); b¢i = bi - b¢r × ais c¢j = cj - a¢rj× cs; - новые элементы Z - строки (j = 1, 2,..., n); Z¢ = Z - b¢r × cs В результате этих преобразований в столбце хs везде будут стоять нули кроме r -строки, где будет 1, т.е. хs будет новой базисной переменной, целевая функция будет выражена через новые свободные переменные, новый план Х¢ находится в столбце “Значение” и лучше предыдущего, так как значение целевой функции для нового плана равно -Z¢ < Z. Переходим к шагу 1 и повторяем всю процедуру для нового плана Х¢. Поскольку базисных решений системы (2) конечное число, а каждое новое базисное решение лучше предыдущего, то этот процесс завершится за конечное число шагов.
Решение задачи линейного программирования в общем случае. Рассмотрим следующую задачу ЛП: Z = - 3x1 + х2 ® min 2x1 – х2 ³ 2, -x1 + 2х2 ³ 5, x1 + х2 £ 10, x1, х2 ³ 0. Приведем ее к каноническому виду введением трех неотрицательных переменных х3, х4, х5. Получим задачу:
Z = - 3x1 + х2 ® min 2x1 – х2 - х3 = 2, -x1 + 2х2 - х4 = 5, (7) x1 + х2 + х5 = 10, x1, х2, х3, х4, х5 ³ 0. При попытке решить эту задачу симплекс-методом возникает определенная трудность, связанная с тем, что нет очевидного начального базисного допустимого решения (опорного плана), так как переменные х3 и х4 не являются базисными. Умножение первых двух уравнений на -1 также ничего не дает, поскольку соответствующее базисное решение (0, 0, -2, -5, 10) не будет допустимым. Пытаться просто перебирать базисные решения в попытке отыскать допустимое, нецелесообразно, так как неясно, имеет ли эта задача вообще допустимые решения. Для решения проблемы применим метод искусственного базиса. Введем в первые два уравнения (третье не создает проблем) искусственные переменные х6 ³ 0 и х7 ³ 0. В результате получим базис из переменных х6, х7, х5. 2x1 – х2 - х3 + х6 = 2, -x1 + 2х2 - х4 + х7 = 5, (8) x1 + х2 + х5 = 10,
Соответствующее базисное решение Х0 = (0, 0, 0, 0, 10, 2, 5) является допустимым для ограничений (8). Однако ограничения (7) и (8) не являются эквивалентными в том смысле, что любому допустимому решению системы ограничений (8), в котором хотя бы одна искусственная переменная отлична от нуля, нельзя поставить в соответствие допустимое решение системы ограничений (7). С целью исключения искусственных переменных из базисного решения системы ограничений (8), т.е. для получения допустимого базисного решения системы ограничений (7), используем алгоритм симплекс-метода. Для того, чтобы искусственные переменные стали свободными, необходимо, чтобы они были равны нулю (сейчас х6 = 2, х7 = 5). Поэтому введем искусственную целевую функцию W = х6 + х7. и будем ее минимизировать при ограничениях (8). Если удастся найти базисное допустимое решение при котором W = 0 (сейчас W = 7), то тогда х6 и х7 будут равны нулю, поскольку они неотрицательны, и мы получим базис из основных и дополнительных переменных. Таким образом, задача разбивается на два этапа. На первом этапе минимизируется искусственная целевая функция W. Этот этап закончится либо нахождением опорного плана исходной задачи (7), либо тем, что минимизировать функцию W до нуля не удастся, т.е. допустимых планов нет, а значит (ввиду теоремы 1) и нет вообще допустимых решений задачи. Если опорный план найдется, то на втором этапе решаем задачу симплекс-методом. Проиллюстрируем описанный выше метод искусственного базиса, применив его к решению задачи (7). Этап 1. Составим исходную симплекс-таблицу для задачи (8). Все вычисления будем проводить также и для целевой функции Z. Тогда после завершения первого этапа получим целевую функцию Z, выраженную через свободные переменные.
Для того, чтобы начать минимизацию функции W, ее надо выразить через свободные переменные. Для этого, из W - строки вычтем первую и вторую строки. Получим Таблица 1.
Так как в W – строке есть отрицательные элементы, то выбираем в качестве разрешающего любой из первых двух столбцов, например первый. Поскольку min{2/2, 10/1} = 1 достигается в первой строке, то разрешающая строка – первая и разрешающий элемент а11 = 2. Пересчитывая таблицу относительно этого элемента, получим новую таблицу: Таблица 2.
Так как переменная х6 вышла из базиса, то в дальнейшем ее не используем (вычеркиваем столбец х6). Теперь разрешающим столбцом будет второй, разрешающей строкой – вторая и после пересчета получим (поскольку искусственная переменная х7 выйдет из базиса, столбец х7 также вычеркиваем): Таблица 3.
Этап 1 успешно завершен, так как искусственные переменные выведены из базиса и мы получили опорный план Х0 = (3, 4, 0, 0, 3) исходной задачи (7), к которому можно применить алгоритм симплекс-метода. На втором этапе W - строка уже не нужна и мы ее вычеркиваем.
Этап 2. Таблица 3.
Целевую функцию Z можно уменьшить (сейчас Z = -5) если ввести в базис х3 или х4. Выбираем третий столбец в качестве разрешающего, т.к. –5/3 < -1/3. Разрешающей строкой будет третья, т.к. только в ней есть положительный элемент разрешающего столбца. Разрешающий элемент а33 = 1. Пересчитывая таблицу, получим: Таблица 4.
Поскольку в Z – строке таблицы 4 нет отрицательных элементов, то новый план Х1 = (5, 5, 3, 0, 0) является оптимальным и Zmin = Z(5,5) = -10. Задача решена полностью.
КОНТРОЛЬНЫЕ ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ Задание 3. Решить задачу линейного программирования симплекс-методом (x, y ³ 0).
Варианты:
1. Z = x - 2y ® min 2. Z = -x + y ® min 3x + y ³ 8 3x - 2y ³ 7 4x + 5y £ 29 x + 2y £ 13 x + 4y ³ 10 x - 2y £ 1
3. Z = 2x + y ® max 4. Z = x - y ® max -x + 2y ³ 3 -2x + 3y £ 5 -x + y £ 1 x + 2y ³ 8 3x - 2y £ 3 3x - y £ 10
5. Z = 2x + y ® max 6. Z = x + y ® max x - y £ 0 x - y ³ 0 3x - 2y £ 3 -x + 2y £ 4 5x - 4y ³ 1 -3x + 4y ³ 2
7. Z = 5x + 2y ® max 8. Z = 2x + 4y ® max 3x + y ³ 9 3x + y ³ 8 2x + y ³ 7 -x + 3y ³ 4 5x + 2y £ 17 x + 2y £ 11
9. Z = 2x + y ® max 10. Z = x - y ® min -x + 5y £ 4 x + 3y £ 7 x - y £ 4 2x - y £ 7 x + y ³ 2 5x + y ³ 7
V. ТРАНСПОРТНАЯ ЗАДАЧА
Общая постановка транспортной задачи состоит в определении оптимального плана перевозок некоторого однородного груза из m пунктов отправления А 1, А 2,..., А m в n пунктов назначения B1, B 2,..., B n. При этом в качестве критерия оптимальности берется либо минимальная стоимость перевозок всего груза, либо минимальное время его доставки. Математическая модель транспортной задачи имеет вид: , (14) (15) (16) (17)
Здесь c ij - тарифы перевозки единицы груза из i – го пункта отправления А i в j – ый пункт назначения B j, bj - потребность в грузе в j – ом пункте назначения, ai – запасы груза в i – ом пункте отправления. Наличие линейных уравнений (15) и (16) обеспечивает доставку необходимого количества груза в каждый из пунктов назначения и вывоз всего имеющегося груза из всех пунктов отправления. При этом, ввиду (17), исключаются обратные перевозки. Задача (14) – (17) является частным случаем задачи линейного программирования, однако, в силу своей специфики решается специальным методом. Если выполняется так называемое условие баланса , (18) то такая транспортная задача называется закрытой. Если условие баланса (18) не выполняется, то задача называется открытой. Теорема 1. Для разрешимости транспортной задачи необходимо и достаточно, чтобы выполнялось условие баланса (5). Если то вводится фиктивный (n + 1) - ый пункт назначения с потребностью и соответствующие тарифы полагают равными нулю, т.е. c i n+1 = 0 (i = 1,2,..., m). Аналогично, при вводится фиктивный, (m+1) – ый пункт отправления с запасами груза , при этом тарифы на перевозку из этого пункта также полагают равными нулю, c m+1 j = 0. Для решения задачи (14) – (17) применяется метод потенциалов, который по существу, является другой формой симплекс-метода. Опишем алгоритм метода. Исходные данные транспортной задачи запишем в таблице
1. Построение начального опорного плана. Система ограничений (16)-(17) содержит m×n неизвестных и m+ n уравнений, связанных отношением (18). Невырожденный опорный план задачи содержит m + n – 1 положительных перевозок или компонент. Таким образом, если каким-либо способом получен невырожденный опорный план задачи, то в матрице (xij) значений его компонент положительными являются только m + n – 1, а остальные равны нулю. Клетки, в которых находятся отличные от нуля перевозки, называются занятыми, остальные – незанятыми. Занятые клетки соответствуют базисным неизвестным, и для невырожденного опорного плана их количество равно m + n. Для построения начального опорного плана применим метод минимальной стоимости. Выбираем клетку с минимальной стоимостью (если их несколько, возьмем любую из них). Пусть, например, . Тогда в клетку (i, j) записывают число . При этом, если , то значение bk уменьшают на al и «закрывают» строку с номером l, так как ресурсы l -го поставщика исчерпаны. Если , то значение al уменьшают на bk и «закрывают» столбец с номером k, что означает удовлетворение спроса k- го потребителя. Если же al = bk, то «закрывают» строку или столбец по выбору. Вышеописанную процедуру повторяют для оставшейся транспортной таблицы до тех пор, пока не будут закрыты все строки и столбцы. 2. Построение системы потенциалов. Система потенциалов строится для невырожденного опорного плана и имеет вид: где - стоимость перевозки единицы груза занятой (базисной) клетки в i – ой строке и j -ом столбце. Вычисление потенциалов удобно проводить по таблице, положив равным нулю один из потенциалов и затем последовательно находя все остальные потенциалы вычитанием из стоимостей базисных клеток уже известных потенциалов. Потенциалы поставщиков записывают справа, а потенциалы потребителей - внизу транспортной таблицы. 3. Проверка опорного плана на оптимальность. Для каждой свободной клетки вычисляют оценки Если , то опорный план оптимален и задача решена. В противном случае план не является оптимальным, следовательно, его нужно улучшить. 4. Построение цикла и нахождение нового опорного плана. Среди отрицательных оценок выбираем наименьшую. Пусть В клетке (l, k) нарушено условие оптимальности. Для улучшения опорного плана необходимо в клетку (l, k) отправить некоторое количество груза, превратив ее тем самым в базисную. Эта операция эквивалентна действию по замене базиса в симплекс-методе. Клетку (l, k) отмечают знаком «+» и затем строят цикл, расставляя поочередно знаки «-» и «+» в базисных клетках так, чтобы в строках и столбцах стояло по одному знаку «+» иди «-». Цикл строится единственным образом. Обозначим , где - перевозки, стоящие в вершинах цикла, отмеченных знаком «-». Величина l определяет количество груза, которое можно перераспределить по найденному циклу. Значение l записывают в незанятую клетку (l, k). Двигаясь по циклу, вычитают или прибавляют l к объемам перевозок, расположенных в клетках, помеченными знаками «-» или «+» соответственно. Перевозки в остальных базисных клетках остаются без изменения. Переходим к построению системы потенциалов. Замечание. Если условие баланса нарушено, т.е. , то вводят фиктивного поставщика или потребителя с поставкой или потребностями соответственно. Стоимости соответствующих перевозок полагаются равными нулю. При построении начального опорного плана в этом случае фиктивные клетки заполняются в последнюю очередь. Пример. Компания контролирует 3 фабрики, производительность которых в неделю (в тыс. изделий) задается вектором . Компания заключила договоры с четырьмя заказчиками, еженедельные потребности которых (в тыс.изделий) задаются вектором Стоимость транспортировки 1 тыс. изделий с i -ой фабрики j- му заказчику задается матрицей тарифов . Требуется определить оптимальный план перевозок с целью минимизации суммарных затрат на транспортировку. Так как , то введем в рассмотрение фиктивного 5-го заказчика с потребностью в b 5 = 100 – 90 = 10 (тыс. ед.) груза. При этом положим c i5 = 0, i = 1, 2, 3. Исходные данные запишем в виде таблицы.
Таблица 1.
Построим начальный опорный план методом минимального элемента. Первой заполним клетку (1, 3) т. к. тариф этой клетки с 13 = 2 меньше других тарифов (фиктивный столбец заполняется в последнюю очередь). Поставка для клетки (1, 3) будет равна х 13 = min( 30, 25) = 25. Записываем это число в верхний левый угол клетки. Это означает, что с первой фабрики третьему заказчику планируется поставить 25 тыс. ед. груза. При этом требования 3-го заказчика будут полностью удовлетворены и мы закрываем 3-й столбец. Затем в оставшейся части таблицы (без 3-го столбца) ищем клетку с минимальным тарифом. Таких клеток две (1, 1) и (2, 4). Заполняем любую из них, например, клетку (1, 1). Остаток продукции 1-ой фабрики равен 30 – 25 = 5. Поэтому записать в клетку (1, 1) можно x 11 = min(5, 20) = 5. Поскольку с первой фабрики вывезен весь груз (30 тыс. ед.), то закрываем первую строку. Далее поступаем аналогично, заполняя свободные клетки в порядке возрастания тарифов, закрывая каждый раз нужные строку или столбец. В результате начальный план имеет вид (см. табл.1): Проверим этот план на оптимальность. Для этого найдем потенциалы u i и v j поставщиков и потребителей. Для этого по занятым клеткам составим систему уравнений вида u i + v j = c ij:
Поскольку уравнений в системе столько же, сколько занятых клеток, то есть 7, а неизвестных - 8, то система имеет бесконечное множество решений. Положим, например, u 3 = 0. Тогда остальные потенциалы находятся однозначно: v 5 = 0; v 4 = 9; v 2 = 6; v 1 = 8; u 2 = -6; u 1 = -5; v 3 = 7. Теперь вычисляем оценки s ij свободных клеток по формуле s ij = c ij – (u i + v j):
Среди оценок есть отрицательная (s 33 = -3 < 0), следовательно план не является оптимальным. Необходимо улучшить план, загружая клетку с отрицательной оценкой. Для этого построим для клетки (3, 3) цикл с вершинами в загруженных клетках (см. табл. 1), расставляя поочередно в вершинах, начиная с клетки (3, 3), знаки «+» и «-». Из поставок в клетках, помеченных знаком «минус», выбираем наименьшую: l = min(15, 25) = 15. Для получения нового опорного плана изменим поставки в вершинах цикла: к поставкам в клетках, помеченных знаком «+», прибавляем величину l=15, в клетках, помеченных знаком «-», вычитаем эту величину 15. Новый опорный план поместим в таблицу 2. Таблица 2.
5 6 4 9 0
Исследование этого плана на оптимальность аналогично предыдущему. Вычисленные значения потенциалов записаны справа и снизу таблицы, а оценки s ij свободных клеток поместим в левых нижних углах этих клеток. Поскольку среди оценок нет отрицательных, то найденный план является оптимальным. Выписываем матрицу Х* (без последнего столбца): Минимальные суммарные затраты по оптимальному плану составляют: Zmin = 20×3+10×2+25×3+15×6+15×4+15×9 = 430 ден. ед. Из таблицы 2 видно, что избыточная продукция в количестве 10 тыс. изд. остается на третьей фабрике.
КОНТРОЛЬНЫЕ ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ Задание 5. Определить оптимальный план перевозок с целью минимизации общих затрат на транспортировку с заданными векторами и и матрицей стоимостей С.
VI. Задача о максимальном потоке в сети
Рассмотрим сеть G(V, U), где V множество вершин, а U множество дуг их соединяющих, (i, j) Î U поставлено в соответствие неотрицательное число dij (dij ³ 0), называемое пропускной способностью этой дуги (если дуга (i, j) – неориентированная, то полагаем dij = dji). Выделим в сети две вершины. Одну из них назовем источником и обозначим s, а другую – стоком и обозначим t. Каждой дуге (i, j) сети поставим в соответствие неотрицательное число xij, которое назовем потоком на дуге (i, j). Потоком из источника s в сток t в сети G (V,U) называется множество неотрицательных чисел , удовлетворяющих ограничениям: , (19) , (20) (21) (22) Неотрицательная величина v называется величиной потока в сети. Ограничения (1), (2) означают, что суммарная величина v потока, выходящего из источника s, равна суммарной величине v потока, входящего в сток t. Ограничения (3) выражают тот факт, что в каждую вершину (кроме источника и стока) приходит столько потока, сколько из нее уходит. Если для дуги (i, j) имеем xij = dij, то дуга (i, j) называется насыщенной потоком. Итак, задача нахождения максимального потока является задачей линейного программирования с целевой функцией и ограничениями (19) – (22). В силу своей специфики для ее решения существует более эффективный алгоритм, чем симплекс-метод. Разобьем множество вершин v сети G(V,U) на два непересекающихся подмножества R и Разрезом сети G(V,U) называется множество всех дуг (i, j), таких, что-либо i Î R, jÎ , либо jÎ R, iÎ . Т.е. разрез - это множество всех дуг, концевые вершины которых принадлежат разным множествам: R и . При этом положим sÎ R, tÎ . Тогда мы получим разрез, отделяющий источник s от стока t. Если удалить все дуги некоторого разреза, отделяющего источник s от стока t, то на сети не останется пути ведущего из s в t. Пропускной способностью разреза (R, ) называется величина , Разрез, отделяющий источник от стока и обладающий минимальной пропускной способностью, называется минимальным разрезом. Теорема (о максимальном потоке и минимальном разрезе). В любой сети величина максимального потока из источника s в сток t равна пропускной способности минимального разреза. Пусть на сети имеется некоторый поток, который не является максимальным. Покажем, как найти путь, увеличивающий этот поток.
Алгоритм расстановки пометок нахождения увеличивающего пути
Шаг 1. Источник s получает метку (s+). Шаг 2. Для всех дуг (s,j) выходящих из вершины s, соответствующие вершины j получают метку s+, если xsj < dsj. Для дуг (i,s), входящих в вершину s, соответствующие вершины i получают метку (s-), если xis> 0. Шаг k. Просматриваем все вершины, помеченные на (k- 1)- ом шаге. Для каждой такой вершины k, соответствующие им вершины j, для которых xki< dkj, получают метку (k+), для всех дуг (i,k), входящих в вершину k, соответствующих им вершины i, для которых xik > 0, получают метку (k -). Алгоритм заканчивает работу одним из двух состояний: а) после некоторого шага мы не можем пометить ни одной вершины, и сток t остался непомеченным. Это означает, что имеющийся поток является максимальным, а (R, ), где R – множество помеченных, - множество непомеченных вершин, образует минимальный разрез; б) сток t оказался помеченным. Двигаясь от стока t к вершине, номер которой указан в ее метке и т.д., мы придем к источнику.
Дата добавления: 2017-02-01; Просмотров: 90; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |