КАТЕГОРИИ: Архитектура-(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) |
Алгоритм поиска кратчайших путей
Запишем двойственную задачу по отношению к исходной (1)-(5). При этом в двойственной задаче столько же переменных, сколько ограничений в исходной, и столько же ограничений, сколько в исходной задаче переменных. Ограничения (2)-(4) записаны для каждого узла сети, поэтому в двойственной задаче будет содержаться n переменных, т.е. вектор двойственных переменных запишется:
Тогда двойственная ЗЛП будет иметь вид:
Здесь
Также как и в методе потенциалов, одну из двойственных переменных можно назначить произвольно. Пусть
Таким образом, вместо исходной задачи (1)-(5) необходимо решить двойственную задачу (8)-(10). Для этого исходные данные записываются в следующую таблицу:
Клетки строк Вначале в строке и столбце с номерами r записываются нулевые значения
Минимум берется среди всех клеток Рассматриваемый алгоритм позволяет найти кратчайшие пути из узла r до любого другого узла сети. Поэтому вычисление значений Если при просмотре столбцов
Пусть найдены все 1. Для любых дуг 2. Существует хотя бы одна дуга После этого условие оптимальности проверяется вновь, и процедура повторяется до тех пор, пока не будет иметь места первый случай. Когда задача решена, то величины Сам кратчайший путь, т.е. узлы, через которые он проходит, восстанавливается следующим образом: в столбце s находится клетка Таким образом, найден путь Для доказательства того, что найденный путь действительно является кратчайшим, рассматривается любой произвольный путь Так как предполагается, что для дуг пути
…
Если сложить левые и правые части этих неравенств, то можно записать Пример. Найти кратчайший путь на заданной транспортной сети из узла №3 в узлы №5 и №7.
r=3, s=5,7.
Полагаем сначала 1. j=1, v=3, 2. j=2, v=1, 3. j=4, v=1, 4. j=5, v=6, 5. j=6, v=4, 6. j=7, v1=5, v2=6, Þ
Проверка на оптимальность: 1. (1,2): 2. (1,3): 3. (1,4): 4. (2,5): 5. (3,1): 6. (4,3): Условие оптимальности выполняется для всех Длина пути Восстановление пути: 1. Путь 2. Путь
Задача о замене оборудования. Ценность рассмотренных ранее задач состоит не только в их важном прикладном значении, но и в том, что многие другие реальные задачи, содержательно совершенно не связанные с условиями перечисленных задач, имеют аналогичные ММ и могут быть решены наиболее эффективными методами. Пример такого типа задачи – Задача о замене оборудования. Пусть промышленное предприятие функционирует в течение некоторых промежутков времени с номерами Необходимо определить, в начале каких промежутков времени нужно заменять оборудование, чтобы суммарные затраты в течение рассматриваемых промежутков времени были бы минимальны.
Здесь узлы графа соответствуют номерам начала периодов. Если оборудование эксплуатируется в течение промежутка (i, j), то на графе ставится соответствующая дуга, взвешенная числом Допустим, в процессе эксплуатации оборудование заменяется при i=2 и i=7, т.е. оборудование заменяется в начале первого, второго и седьмого периодов:
и эксплуатируется до узла n. Тогда, очевидно, общая сумма затрат будет равна Одна задача календарного планирования трудовых ресурсов. Рассматривается функционирование предприятия в условиях сурового климата, его производственная программа может быть связана дополнительно с сезонностью. В таких условиях предприятию невыгодно создавать постоянные производственные коллективы и соответствующую социально-экономическую инфраструктуру. Пусть рассматривается функционирование предприятия в течение n-1 промежутка времени, причем известно потребное количество бригад рабочих Rk ( Необходимо найти план найма и увольнения бригад, при котором в каждом промежутке времени должен выполняться заданный объем работ, а суммарные затраты на содержание бригад минимальны. Всевозможные варианты найма и увольнения бригад можно изобразить в виде сети, в которой дуга (i,j) означает найм в начале i-того и увольнение в начале j-того периода.
Построение ММ. Пусть
В модели целевая функция (1) отражает суммарные затраты на содержание рабочих бригад. Ограничение (2) требует, чтобы в первом промежутке времени было ровно столько бригад, сколько требуется для выполнения работ на первом промежутке времени. Неравенство (3) допускает целесообразность содержания резервных бригад, т.к. они могут, в конечном счете, обойтись дешевле. Равенство (4) обеспечивает в последнем промежутке наличие ровно стольких бригад, сколько требуется. Условие (5) вытекает из физического смысла. Модель (1)-(5) относится к классу задач линейного целочисленного программирования. Однако она тождественными преобразованиями сводится к модели транспортной задачи в сетевой постановке. Неравенство (3) приводится к равенству введением доп. переменных:
Идея последующих тождественных преобразований заключается в следующем: из уравнений (7) и (4) соответственно вычитаем уравнения (2) и (7), записанные для участка с номером на единицу меньше. Запишем уравнение (7) для участка с номером к-1:
Далее, вычтем (8) из (7):
Заметим: Тогда:
Проведя сокращения, можно записать:
Если вычесть из уравнения (7) с номером к=2 уравнение (2), то получим:
Теперь из уравнения (4) вычтем уравнение (7) с номером
К полученной системе уравнений (9)-(11) присоединим уравнения (2) и (4), умножив (4) слева и с права на –1:
Полученные уравнения (9)-(13) эквивалентны уравнениям исходной задачи, которая теперь свелась к задаче (1), (9)-(13) с условиями
Далее можно условно интерпретировать:
R1 - запас продукции в первом узле, Rк- Rк-1 – запас продукции k -того узла Rn-1 - запас продукции n -ого узла. Тогда уравнение (12) интерпретируется как объем вывоза из первого узла, равный запасу продукции в этом узле, т.е. аналогично уравнению для истока транспортной сети. Уравнение (13) интерпретируется как объем продукции, привозимой в размере потребности в узел n, т.е. аналогичное уравнению для стока транспортной сети. Рассмотрим уравнение (10):
В сеть вводится дополнительная дуга (3,2), по которой перевозится продукция в объеме Аналогично в сеть добавляются дуги (k,k-1) для всех
Тогда уравнения (9) интерпретируются как уравнения баланса для промежуточных пунктов ТЗ в сетевой постановке: суммарный объем вывозимой продукции минус суммарный объем ввозимой продукции равняется запасу продукции в этих узлах. Таким образом, задача календарного планирования трудовых ресурсов (1)-(5) тождественными преобразованиями и добавлением новых дуг свелась к модели транспортной задачи в сетевой постановке (1), (9)-(13).
Распределительная задача. КТЗ обобщается в различных направлениях. Одним из наиболее часто встречающихся обобщений является так называемая распределительная задача. Далее будут рассмотрены некоторые практические задачи, приводящие к распределительной задаче или ее модификациям. 1. Распределение заказов по предприятиям. Пусть имеется m видов заказов, причем заказ i- того вида необходимо выполнить в количестве Необходимо распределить заказы по предприятиям так, чтобы выполнить все заказы имеющимися ресурсами предприятий и при этом суммарная стоимость выполнения заказов была бы минимальной. Построение ММ. Пусть
Здесь целевая функция (1) отображает суммарную стоимость выполнения заказов. Ограничения (2) требуют, чтобы расходуемые ресурсы на предприятиях не превышали заданной величины запасов. Ограничения (3) требуют выполнения всех заказов в необходимых объемах. Ограничения (4) очевидны. Задача (1) –(4) относится к классу ЗЛП. Она отличается от КТЗ (открытой) тем, что коэффициент К модели вида (1)-(4) сводится также известная задача о распределении самолетов по авиалиниям. 2. Распределение самолетов по авиалиниям. Пусть имеются n типов самолетов, которые должны быть использованы для перевозки пассажиров по m авиалиниям. Число самолетов j- того типа равно - месячные объемы - месячные затраты Предполагается также известным число пассажиров Необходимо распределить самолеты по авиалиниям для перевозки заданного количества пассажиров при минимальных затратах. Построение ММ. Обозначим через
По физическому смыслу параметры 3. Планирование парка вагонов. Одно из важнейших условий экономичной эксплуатации железных дорог заключается в рациональном планировании использования парка вагонов не только в пределах дороги, но и в пределах станции или узла. Под регулированием парка вагонов понимают распределение вагонов различных типов (крытых, полувагонов, платформ с разным числом осей и т.д.) под различные грузы. Пусть имеются n видов вагонов Построение ММ. Пусть
Целевая функция (1) отражает суммарную стоимость погрузки всех грузов, ограничение (2) требует, чтобы грузы каждого вида были погружены полностью, ограничение (3) требует, чтобы грузы были погружены в имеющееся количество вагонов. К задаче вида (1)-(4) сводятся также задачи планирования работы речного флота. Так при анализе практических проблем Волжского речного пароходства к распределительной задаче сведены задачи распределения однородного грузового флота по грузовым линиям, пассажирского флота по линиям, задачи распределения по объектам перегрузочных машин, дноуглубительных снарядов и т.д. Задачи дискретного программирования. Многие задачи ИСО, такие, как распределение ресурсов, сетевого планирования и управления, календарного планирования, описываются математическими моделями ДП. Рассмотрим задачу вида:
Здесь Если вводится ограничение Если условие целочисленности накладывается только на часть компонент вектора Х, то задача (1)-(3) будет задачей частично-целочисленного программирования. Если компоненты вектора Х могут принимать только 2 значения-0 или 1, то (1)-(3) – задача булевского программирования. В задачах ДП область допустимых решений является невыпуклой и несвязной. Поэтому отыскание решения таких задач сопряжено со многими трудностями. В частности, практически невозможно применение стандартных приемов, используемых при замене дискретной задачи ее непрерывным аналогом, состоящих в дальнейшем округлении найденного решения до ближайшего целочисленного. Например, рассматривается ЗЦЛП:
Решение соответствующей ЗЛП без требования целочисленности Х*=(0,5; 0; 4,5), а искомое целочисленное решение Х*=(2; 2; 5). Если множество G конечно, то наиболее простой метод решения задачи (1)-(3) состоит в прямом переборе. Суть метода: в любом порядке перебираются множества возможных значений Х и для каждого значения вычисляется значение целевой функции f(Х). Далее находится наибольшее (наименьшее) значение f(Х*), которое будет соответствовать оптимальному решению Х*ÎG. Однако в реальных задачах хотя G и конечно, но его размерность бывает очень большой, и такой перебор становится практически невозможным. Поэтому для решения ЗДП разрабатываются специальные методы, основанные на принципе целенаправленного перебора, которые позволяют сократить полный перебор. Методы решения ЗДП по принципу подхода к проблеме делятся на 3 группы: 1. Методы отсечения, или отсекающих плоскостей 2. Метод ветвей и границ 3. Методы случайного поиска и эвристические методы
Задача о максимальном потоке на сети. Пусть задана транспортная сеть, состоящая из множества узлов J с номерами Предполагается, что сеть является симметрическим графом, т.е. если дуга (i,j) входит в сеть, то в неё входит и симметрическая дуга (j,i), хотя реально такой дуги может и не быть. Каждой дуге Необходимо найти максимальное количество продукции, перевозимое из узла с номером Данная постановка справедлива для смешанных и неориентированных графов, т.е. множество D может содержать дуги и рёбра, только дуги или только рёбра. Для математической постановки задачи введём переменные xij - количество продукции, перевозимое по дуге (i,j). Эта величина называется потоком по дуге (i,j). Тогда математическая модель задачи будет иметь вид:
Целевая функция (1) отражает величину потока по сети, которая должна быть максимизирована. Очевидно, поток на сети равен количеству продукции, вывозимой из источника или ввозимой в сток. Равенство (2) для промежуточных узлов записано из условия баланса: количество продукции, привозимого в узел, должно равняться количеству продукции, вывозимого из узла. Ограничения (3) очевидны. Модель (1)- (3) относиться к классу ЗЛП. Однако существует более эффективный алгоритм решения этой модели. Это алгоритм Форда. Важную роль в обосновании алгоритма Форда решения задачи о максимальном потоке играет понятие разреза сети. Множество всех узлов сети разбивается на два непересекающихся подмножества R и Таким образом, разрезом сети называется совокупность всех дуг (i,j), которые исходят из узлов d (R, Очевидно, что любой путь из источника в сток содержит хотя бы одну дугу разреза (R, Следовательно, если удастся построить такой поток, что его величина V * окажется равной пропускной способности некоторого разреза (R *, Теорема Форда – Фалкерсона. Алгоритм решения задачи о максимальном потоке основан на теореме Форда – Фалкерсона о максимальном потоке и минимальном разрезе. Для рассмотрения этой теоремы вводятся понятия о прямой и обратной дуги цепи. Под цепью в данном случае понимается последовательность сцепленных дуг сети без учёта их ориентации. Дугу, принадлежащую некоторой цепи, называют прямой, если её направление совпадает с направлением обхода узлов этой цели, и обратной - в противном случае.
Например, цепь µ=(3,5,4,7,6,8) на рис.1, связывающая узел 3 с вершиной 8, содержит три прямые дуги (3,5), (4,7), (6,8) и две обратные (4,5), (6,7).
Теорема. В любой сети максимальная величина потока из источника в сток равна пропускной способности минимального разреза сети. Доказательство. Пусть имеем максимальный поток в сети. Если xij=dij, то говорят, что дуга (i,j) насыщена потоком. Предполагается, что V* величина максимального потока в сети. Необходимо доказать, что найдется такой разрез (R *, Такой разрез можно построить, если в подмножество R включить все узлы, которые достигаются по некоторой цепи из истока, а в подмножество Узлы, составляющие подмножество R, определяются последовательно, начиная с источника Ø, по следующему правилу: Ø = R; если то Применение правила (4) приводит к построению разреза. Очевидно, разрез будет построен в том случае, если сток Пусть сток Пусть δ1 наименьшая разность между пропускной способностью и величиной потока, взята по всем прямым дугам цепи µ, а δ2 - наименьшая величина потока, взятая по всем обратным дугам этой цепи. Далее определяется величина δ= min(δ1, δ2) > 0 и увеличивается поток по всем прямым дугам цепи на δ,а на ту же величину уменьшается поток по всем обратным дугам цепи. Таким образом, величина нового потока равна V + δ, что противоречит предположению о максимальности V. Следовательно, предположение Пропускная способность построенного разреза равна максимальному потоку на сети. Действительно, из правила (4) нахождения подмножества R следует, что если
Таким образом,
Теорема доказана.
Алгоритм Форда нахождения максимального потока на сети. Исходные данные заносятся в таблицу размерности (n+1) × (n+1). Если дуга Если обратная дуга Если дуги *
Каждый шаг алгоритма Форда состоит из трёх действий. 1.Находится путь по таблице из узла - истока Ø в узел-сток n с пропускной способностью больше 0. Для этого столбец, соответствующий узлу-истоку, отмечается знаком *. Далее отыскиваются в строке с номером 0 элементы dij > 0 и столбцы, в которых они находятся, отмечаются сверху номером просматриваемой строки (цифрой 0). В результате окажутся выделенными все дуги (0, j) c положительными пропускными способностями. Эти дуги могут служить первыми дугами пути из истока в сток. Далее просматриваются те строки, номера которых совпадают с номерами отмеченных столбцов. В каждой такой строке i отыскиваются элементы dij > 0, находящиеся в непомеченных столбцах, и эти столбцы отмечаются номером просматриваемой строки. Таким образом, окажутся выделенными дуги, которые могут служить вторыми дугами путей из истока в сток. Аналогичный просмотр строк продолжается до тех пор, пока: а) либо не будет помечен столбец с номером n (сток) что означает выделение пути с пропускной способностью больше нуля из истока в сток; б) либо нельзя помечать новые столбцы (в просматриваемых строках не окажется положительных элементов), при этом столбец с номером n также останется не отмеченным. В последнем случае отсутствует путь из источника в сток, проходящий по дугам с положительной пропускной способностью. В случае ” а ” искомый путь µ из источника в сток находится, используя пометки столбцов. Пусть последний столбец n помечен номером k, тогда дуга (k,n) последнее звено искомого пути. Далее просматривается столбец с номером k, пусть отметка этого столбца l. Тогда дуга (l,k) предпоследнее звено искомого пути и т.д. Этот процесс продолжается до тех пор, пока не найдётся отметка *, т.е. отметка истока Ø. Пусть эта отметка будет цифра m. Таким образом, путь от истока к стоку будет состоять из дуг µ =((Ø, m),…, (l,k), (k,n)). (5) 2.Клетки, соответствующие дугам этого пути, отмечаются знаком (–), а симметричные им клетки, т.е. соответствующие обратным дугам – знаком (+). По найденному пути (5) можно пропустить максимально возможный поток, величина которого равна Θ = min { dij- }.Эта величина Θ отнимается от всех пропускных способностей клеток, отмеченных знаком (–) и прибавляется к пропускным способностям клеток, отмеченных знаком (+). В результате получается новая таблица, в которой записаны неиспользованные пропускные способности дуг после пропускания максимального потока по пути (5). По новой таблице опять отыскивается, уже другой, путь от истока к стоку, состоящий из дуг с неиспользованными пропускными способностями. Если такой путь существует, то по этому пути пропускается максимально возможный поток из истока в сток. После этого корректируется таблица аналогично как на этапе 1. Это процесс продолжается до тех пор, пока не будет иметь место случай б). 3.Пусть имеется случай б), т.е. когда не существует пути из истока в сток, состоящий из дуг с неиспользованными пропускными способностями. Это означает, что найдены все возможные пути перевозки продукции и задача решена. Для определения максимального потока на сети V* в последней таблице выделяются отмеченные столбцы, номера которых образуют множество R*, причём исток
Для нахождения значений потоков по дугам xij*, образующих поток V* из элементов первой таблицы вычитаются соответствующие элементы последней таблицы. Если в клетке получается неотрицательная величина, то она оставляется; если – отрицательная, то в клетке записывается
Пример. На данной сети определить максимальный поток из узла
1. * 0 0 1 2
Θ1 = min (19,9)=9.
2. * 0 0 1 3
Θ2 = min (17,12,24)=12.
3. * 0 0 2 3
Θ3 = min (10,8,12)=8.
4. * 0 0 1 2
Пути из 0 в 4 нет! Определяются множества: R*={0,1,2}, (R *, d (R *, 5. В заключительной таблице положительные элементы определяют потоки по дугам xij*.
Дата добавления: 2014-01-11; Просмотров: 1233; Нарушение авторских прав?; Мы поможем в написании вашей работы! |