Федеральное агентство по образованию РФ ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Факультет информатики Кафедра прикладной информатики УДК 681.03 ДОПУСТИТЬ К ЗАЩИТЕ В ГАК Зав. кафедрой, проф., д.т.н. ______________ С.П. Сущенко « » 2008 г. Масунов Владимир Игоревич ОПТИМИЗАЦИЯ ПЛАНА РЕГЛАМЕНТНЫХ РАБОТ ПО КРИТЕРИЮ МАКСИМУМА СРЕДНЕГО ПОТОКА В СЕТИ ПРИМЕНИТЕЛЬНО К ЗАДАЧЕ ТРАНСПОРТИРОВКИ НЕФТИ ПО МАГИСТРАЛЬНОМУ НЕФТЕПРОВОДУ Дипломная работа Научный руководитель, профессор, д.т.н. В.В. Поддубный Исполнитель, студ. гр. 1432 В.И. Масунов Электронная версия дипломной работы помещена в электронную библиотеку. Файл Администратор Томск 2008 Реферат Дипломная работа 35 с., 10 рис., 6 источников, 2 приложения. МАГИСТРАЛЬНЫЙ НЕФТЕПРОВОД, МАТЕМАТИЧЕМКАЯ МОДЕЛЬ, ОПТИМИЗАЦИЯ, ПЛАН РАБОТ, МАКСИМАЛЬНЫЙ ПОТОК, АЛГОРИТМ ФОРДА – ФАЛКЕРСОНА, СЛУЧАЙНЫЙ ПОИСК. Объект исследования: сетевая математическая модель магистрального нефтепровода. Цель работы: оптимизация плана регламентных работ на участках нефтепровода по критерию максимума потока в сети. Метод исследования: математическое моделирование, компьютерный эксперимент. Результат работы: проведена программная реализация алгоритма Форда – Фалкерсона нахождения максимального потока в сети, построен и программно реализован алгоритм субоптимального планирования регламентных работ на участках нефтепровода по критерию максимума потока в сети. Тем самым разработан и реализован метод решения задачи максимизации потока в нестационарной сети на основе алгоритма Форда – Фалкерсона. 2 Оглавление Введение ...............................................................................................................4 1. Постановка задачи .........................................................................................6 2. Формализация поставленной задачи .........................................................9 2.1. Задача о максимальном потоке...........................................................9 2.2. Оптимизация плана регламентных работ ......................................11 3. Метод решения .............................................................................................13 3.1. Алгоритм Форда – Фалкерсона.........................................................13 3.2. Вычисление среднего потока от источника к стоку за определенный период времени ...........................................................16 3.3. Оптимизация плана проведения работ ...........................................17 3.4. Программная реализация ..................................................................18 4. Результаты работы программы ................................................................22 Заключение ........................................................................................................31 Список использованной литературы ...........................................................32 Приложение А. Руководство пользователя ................................................33 Приложение Б. Руководство программиста ...............................................34 3 Введение Россия по праву считается одной из немногих стран, в которых добыча нефти имеет долгую и славную историю. Российские геологи и нефтяники ведут поиски, разведку и разработку нефтяных месторождений свыше 140 лет. А первый нефтяной фонтан был получен в России в 1864 году из скважины, пробуренной у реки Кудако на Кубани. На данный момент Россия занимает первое место в мире по запасам нефти, опережая такие страны Персидского залива, как Саудовская Аравия и Ирак. Перспективные и прогнозные запасы нефти в России оцениваются в 62.7 млрд. тонн. Нефтяные месторождения открыты на территориях 36 субъектов Российской Федерации, в 30 из них ведется добыча углеводородного сырья. [1] Однако, в отличие от стран Персидского залива, перед нефтяной отраслью нашей страны стоит сложная задача транспортировки нефти. Сложность данной задачи связана с тем, что поднятая на поверхность нефть должна преодолеть огромные расстояния, прежде чем она попадет на нефтеперерабатывающие заводы или уйдет на экспорт. В связи с этим, возникает необходимость оптимизации процесса транспортировки нефти. Прежде всего, речь идет о необходимости максимизации потока нефти по нефтепроводу. В теории задача о максимальном потоке в сети решена, и для отыскания этого потока существует алгоритм Форда – Фалкерсона, который может быть применен и в данном случае. Но на практике, в процессе эксплуатации нефтепровода, постоянно возникает необходимость проводить различные мероприятия по поддержанию работоспособного состояния системы (плановые ремонтные и профилактические работы, связанные с необходимостью отключения отдельных участков нефтепровода или ограничения их пропускной способности). Таким образом, возникает задача оптимизации потока с 4 учетом проведения регламентных работ, т.е. в условиях нестационарности конфигурации нефтепроводной сети. В литературе решение данной задачи найти не удалось. Вследствие чего постановка и решение этой задачи представляются актуальными. 5 1. Постановка задачи Основной задачей, которая ставилась в данной работе, является максимизация потока нефти при транспортировке ее по магистральному нефтепроводу с учетом необходимости проведения регламентных работ. Нефтепровод представляет собой множество резервуарных парков, которые соединяются трубами (участками нефтепровода) с некоторой пропускной способностью. Парк, в свою очередь, состоит из множества резервуаров для временного хранения нефти, также соединенных между собой. Очевидно, что такую систему удобно представить в виде ориентированного графа без циклов, вершинами которого являются резервуары, а дугами – соединяющие их трубы. При таком варианте представления данных для решения задачи можно использовать аппарат теории графов. Как уже говорилось ранее, при эксплуатации нефтепровода возникает необходимость проводить множество плановых ремонтнопрофилактических (регламентных) работ, таких как очистка труб от парафинов и других примесей, ремонт и замена насосных установок или отдельных их частей, а также замена участков труб. Все эти работы имеют свои технологические особенности и условия их проведения. Например, работы по очистке требуют переключения насосов в определенный режим для обеспечения необходимого давления на скребок (устройство, которое двигается по трубе и осуществляет очистку), в то время как работы по замене некоторого оборудования (насосов, труб) могут проводиться только при полной остановке функционирования некоторого участка. Очевидно, что максимальный поток может изменяться с изменением конфигурации сети. Изменение конфигурации происходит при проведении работ, которые привязываются ко времени. Значит, максимальный поток можно считать функцией времени, а точнее функцией времени начала (или окончания) работ. 6 Возникает задача планирования временного графика проведения этих работ с целью максимизации суммарного объема перекачиваемой нефти (или, что то же, максимизации среднего потока в сети). Подобного сорта задачи относятся к классу задач оперативного, или сетевого, планирования [2]. Несмотря на то, что с точки зрения сетевого планирования все эти работы обладают одним и тем же набором характеристик (время начала, продолжительность, период и т.д.), имеются технологические особенности функционирования нефтепроводов, не позволяющие унифицировать все виды работ. Например, не всегда возможно проводить работы по очистке труб от парафинов, требующие обеспечения заданного режима работы, одновременно на нескольких участках нефтепровода. Кроме того, работа участков в заданных режимах может нарушить условие сохранения потока, необходимого для использования алгоритма Форда–Фалкерсона. Поскольку алгоритм максимизации потока в сети при нарушении условия сохранения потока неизвестен, в рамках настоящей работы ограничимся учетом лишь тех плановых мероприятий, которые требуют полного отключения трубы. Всякое отключение труб в тот или иной момент времени на тот или иной период приводит к изменению конфигурации нефтепроводной сети и к изменению максимального потока в сети в этот период. Следовательно, целесообразно так планировать работы, требующие отключения труб, чтобы обеспечивался максимально возможный объем перекачки нефти за планируемый период (максимальный средний поток). Таким образом, возникает следующая оптимизационная задача: выбрать вектор моментов отключения труб, обеспечивающий максимум среднего потока в сети, при ограничениях на сроки проведения регламентных работ. Каждая работа должна быть выполнена один раз за плановый период, но не раньше определенного срока после ее предыдущего проведения и не позже определенного допустимого момента для ее окончания. 7 Введем следующие соглашения: вершинами графа будем представлять не резервуары, а резервуарные парки, т.е. движение нефти внутри парка в данной работе из рассмотрения резервуарного исключается парка можно (задачу решить планирования отдельно работ аналогичным способом) – это существенно снижает размерность задачи резервуарные парки – это узлы транспортной сети, т.е. для них выполняется условие сохранения потока: количество нефти на входе равно количеству нефти на выходе – условие применимости алгоритма максимизации стационарного потока Форда – Фалкерсона дуги графа будем характеризовать только пропускной способностью, т.е. различия в длине, стоимости эксплуатации и т.п. не учитываются Таким образом, с учетом вышеизложенного можно выделить две подзадачи, которые необходимо решать одновременно: классическая задача о стационарном максимальном потоке в сети [3, 4] для некоторой ее конфигурации оптимизация плана регламентных работ по критерию максимума среднего потока в сети 8 2. Формализация поставленной задачи Как было только что установлено, для решения поставленной задачи необходимо решить две взаимосвязанные подзадачи, при этом, очевидно, что решение второй невозможно без решения первой, так как последняя является критерием для задачи оптимизации плана. 2.1. Задача о максимальном потоке Итак, как было оговорено ранее, нефтепровод будем представлять как ориентированный граф, а точнее как транспортную сеть без циклов, узлы которой будем обозначать xi , а дуги – парами смежных узлов ( xi , x j ) . Транспортной сетью [4] называется связный ориентированный граф без петель, удовлетворяющий следующим условиям: 1. Существует только одна вершина с нулевой степенью захода. Эта вершина называется источником и обозначается s. 2. Существует только одна вершина с нулевой степенью исхода. Эта вершина называется стоком и обозначается t. 3. Каждой дуге ( xi , x j ) сопоставляется некоторое неотрицательное число – пропускная способность дуги. Это число обозначается c( xi , x j ) , или просто ci , j . Если не существует ребра, ориентированного из xi в x j , то ci , j 0 . Реальные нефтепроводы не всегда соответствуют условиям 1 и 2 транспортной сети. Для устранения этого несоответствия, вводятся искусственные вершины и дуги. Искусственных вершин будет две: 9 источник s, который соединяется искусственными дугами со всеми реальными источниками сток t, который соединяется искусственными дугами со всеми реальными стоками Для того чтобы искусственные дуги не накладывали ограничений на исходную систему, они будут обладать бесконечной пропускной способностью. Определим понятие потока [4], величину которого нужно максимизировать. Потоком f в сети называется функция, сопоставляющая каждой дуге ( xi , x j ) неотрицательное число f i , j f xi x j f ( xi , x j ) так, что 1. f i , j ci , j , 2. i f x j xi i, j f xk 1xi k ,i v, xi s v, xi t , 0, x s, t i где x j – вершины, в которые ведут дуги из xi , x k – вершины, дуги из которых ведут в xi , v f xs sx f y1t yt – величина общего потока Условие 1 – это ограничение по пропускной способности; оно требует, чтобы величина потока по дуге не превышала ее пропускной способности. Условие 2 – это условие сохранения потока. Из вершины s вытекает поток величины v, а в вершину t втекает поток величины v. Для вершин, отличных от s и t, поток, втекающий в вершину, равен потоку, вытекающему из вершины. 10 Таким образом, задача максимизации потока в сети заключается в нахождении такого множества потоков по дугам, чтобы при заданных пропускных способностях величина потока v была максимальной. 2.2. Оптимизация плана регламентных работ Теперь необходимо формализовать задачу оптимизации плана проведения работ по критерию максимума среднего потока в сети. А для этого нужно обратиться к взаимосвязи максимального потока, конфигурации сети, регламентных работ и времени их проведения. Величина максимального потока зависит от конфигурации сети и матрицы пропускных способностей ее дуг { ci , j }. Конфигурация сети определяется ненулевыми элементами этой матрицы. Таким образом, для решения задачи о максимальном потоке с помощью алгоритма Форда – Фалкерсона требуется только матрица пропускных способностей. Так как пропускная способность дуги может принимать всего два значения: ci , j = 0 – при проведении работ на данной дуге, ci , j > 0 – при отсутствии работ на данной дуге, зависимость максимального потока от пропускных способностей дуг при решении задачи оптимизации можно не рассматривать. Действительно, само значение ci , j не меняется, оно может лишь временно обратиться в ноль при проведении работ на соответствующей трубе, т.е. при изменении конфигурации. Следовательно, необходимо рассматривать только зависимость от конфигурации сети. Теперь рассмотрим причины изменения конфигурации. Так как различные экстренные (аварийные) ситуации в рамках настоящей работы 11 не рассматриваются, единственной причиной изменения конфигурации является необходимость проведения работ, требующих отключения труб. При проведении каждой работы происходит два изменения конфигурации: выключение трубы – при старте работы, включение трубы – при окончании работы. Это означает, что при каждом таком событии требуется изменять матрицу пропускных способностей и решать задачу о стационарном максимальном потоке. До этого момента возможности оказывать влияние на ситуацию не было, так как проводить работы необходимо, изменение конфигурации при этом неизбежно, а при изменении конфигурации изменится и сам поток. Но работы проводятся в определенное время, у них есть момент начала и продолжительность. Возможность оптимизации заключается в том, что изначально момент начала некоторой конкретной работы не определен. Для каждой работы определяется только интервал времени, в течение которого эта работа должна быть проведена. Здесь и появляется задача планирования проведения множества работ. 12 3. Метод решения Для каждой конфигурации сети трубопроводов, реализовавшейся в процессе проведения регламентных работ, необходимо решить задачу максимизации потока в сети, используя для этой цели алгоритм Форда – Фалкерсона [3, 4]. Задача оптимизации плана регламентных работ сводится к задаче такого распределения времен их начала, которое обеспечивает максимум среднего потока в сети в условиях нестационарности ее конфигурации. 3.1. Алгоритм Форда – Фалкерсона Рассмотрим алгоритм Форда-Фалкерсона для фиксированной конфигурации сети. Идея алгоритма Алгоритм начинает работу с начального допустимого потока (возможно, нулевого). Затем осуществляются попытки увеличить величину потока с помощью систематического поиска всех возможных цепей из s в t, на которых можно увеличить величину потока (дополняющие цепи). Поиск дополняющих цепей производится путем расстановки меток, которые указывают, на каких дугах и на сколько можно увеличить поток. Когда найдена одна из таких цепей, поток вдоль нее увеличивается. После чего все метки стираются, и вновь полученный поток используется в качестве исходного при новой расстановке меток. Алгоритм заканчивает работу, когда нельзя найти ни одну дополняющую цепь. Последний найденный поток является максимальным. Важной частью алгоритма является этап расстановки меток. Каждая вершина может находиться в одном из трех состояний: 13 вершина помечена и просмотрена (т.е. вершина имеет метку и все смежные с ней вершины «обработаны»); вершина помечена, но не просмотрена (т.е. вершина имеет метку, но смежные с ней вершины не «обработаны»); вершина не помечена; Метка некоторой вершины x имеет вид L( x) y, ( x) . Часть метки y означает, что поток может быть увеличен вдоль дуги ( x, y ) . Часть метки y означает, что поток может быть уменьшен вдоль дуги ( y, x ) . В обоих случаях (x) показывает максимальную величину, на которую можно увеличить поток от s к x вдоль дополняющей цепи. Сначала все вершины не имеют меток. Описание алгоритма Входными данными алгоритма являются: матрица пропускных способностей дуг начальный поток, задаваемый матрицей потоков дуг При завершении работы алгоритм выдает найденный максимальный поток, который определяется матрицей потоков дуг. Шаг 0. Инициализация. Положим все дуговые потоки равными нулю: f i , j : 0 . Шаг 1. Назначить вершине s метку L(s) s, (s) . Теперь вершина s помечена, но не просмотрена. Все остальные вершины не помечены. Шаг 2. Просмотр помеченных вершин. Выбрать некоторую помеченную, но не просмотренную вершину xi ; пусть ее метка будет xk , ( xi ) . 14 1. Каждой непомеченной вершине x j xi , для которой f i , j ci , j , назначить метку xi , ( x j ) , где ( x j ) min ( xi ), ci , j f i , j . 2. x j 1 xi , для которой Каждой непомеченной вершине f j ,i 0 назначить метку xi , ( x j ) , где ( x j ) min ( xi ), f j ,i . Теперь вершина xi помечена и просмотрена, а вершина x j , метка которой назначена в пунктах 1 или 2, помечена, но не просмотрена. Каким-либо образом отмечается, что вершина xi просмотрена. Шаг 3. Проверка. Если на Шаге 2 какая-либо вершина помечена, то: если помечена вершина t , то на Шаг 4; если помечена любая другая вершина, то на Шаг 2. Если на Шаге 2 нельзя назначить никаких меток, то алгоритм заканчивает работу с некоторым максимальным потоком. Шаг 4. Выбрать вершину x t ; на Шаг 5. Шаг 5. Увеличение потока. 1. Если метка вершины x имеет вид z, ( x) , то изменить поток вдоль дуги ( z, x) с f ( z, x) на f ( z , x) (t ) . 2. Если метка вершины x имеет вид z, ( x) , то изменить поток вдоль дуги ( x, z ) с f ( x, z ) на f ( x, z ) (t ) . Шаг 6. Если z s , то стереть все метки и вернуться к Шагу 1. При этом используется уже увеличенный поток, найденный на Шаге 5. Если z s , то положить x z ; на Шаг 5. 15 3.2. Вычисление среднего потока от источника к стоку за определенный период времени Алгоритм Форда – Фалкерсона находит максимальный поток от источника к стоку при неизменной конфигурации системы. При этом в случае с непостоянной конфигурацией при каждом ее изменении получается новый поток. Это означает, что в системе при проведении всех регламентных работ реализуется каждый раз определенный поток, соответствующий текущей конфигурации сети, из множества возможных потоков от источника к стоку. При различных вариантах проведения одних и тех же работ множества таких потоков могут различаться не только значениями своих элементов, но и их количеством. При этом суммарный объем перекачиваемой нефти за плановый период будет различным. Для нахождения оптимального плана проведения работ естественно воспользоваться критерием максимума этого суммарного объема или, что то же, максимума среднего потока. Очевидно, что каждая конфигурация сети между ее изменениями успевает проработать некоторое время, в течение которого максимальный поток через систему, определяемый алгоритмом Форда–Фалкерсона для текущей конфигурации просуммировать все сети, эти не потоки, меняется. Следовательно, полученные при если различных конфигурациях сети, умножив каждый из них на время, в течение которого данный поток существовал, то получится суммарный объем перекаченной нефти за определенный период времени. Разделив этот объем на длительность периода, получим средний поток, по величине которого можно сравнивать разные варианты этого плана и выбрать оптимальный. Таким образом, максимальный средний поток является функцией плана регламентных работ, а точнее, функцией многих переменных – моментов начал этих работ. К сожалению, эта функция задается не аналитически, а алгоритмически. 16 3.3. Оптимизация плана проведения работ Итак, критерий для задачи оптимизации получен, им является средний поток через систему за некоторый фиксированный период времени. Для решения этой задачи можно использовать любой метод оптимизации, условия применимости которого выполняются в данной ситуации. Однако, как будет выяснено в результате исследования, ввиду многоэкстремальности целевой функции – максимального среднего потока в сети как функции моментов времени начал регламентных работ, применение градиентных методов оптимизации не гарантирует нахождение глобального максимума. Поэтому, было принято решение в рамках настоящей работы использовать трехэтапный алгоритм поиска глобального (или близкого к нему) максимума. На первом этапе для выхода в область, возможно более близкую к глобальному максимуму, используем метод случайного поиска [5]. На втором этапе производится поиск ближайшего локального экстремума (максимума или точки перегиба) с использованием любого градиентного метода поиска с ограничениями (типа неравенств). На последнем этапе осуществляется табулирование функции среднего потока по каждой из ее переменных при фиксированных значениях остальных переменных в точке экстремума (покоординатная табуляция, перебор) и проверяется оптимальность решения в данной области и интерактивное уточнение положения максимума. Описанный подход, конечно, тоже не гарантирует отыскание глобального максимума, но с увеличением объема статистических испытаний вероятность выхода в область глобального экстремума монотонно возрастает. 17 3.4. Программная реализация Для программной реализации описанного выше алгоритма построения оптимального (или возможно более близкого к нему) плана проведения регламентных работ в сети магистрального нефтепровода была выбрана платформа MatLab R2006a. Данная среда удобна для исследования алгоритмов, поскольку содержит большое количество функций и процедур для математических вычислений, анализа данных, графики и т.д., в том числе для решения задач линейной алгебры и оптимизации [6]. Описание программы Входными данными программы являются: матрица пропускных способностей дуг – C, массив дескрипторов планируемых работ – R. Каждый дескриптор (строка матрицы R) содержит: номер работы (1-й столбец), значения границ интервала проведения работы (2-й и 3-й столбцы), продолжительность работы (4-й столбец), идентификатор трубы, на которой должна проводиться работа (номера узла-источника и узла-стока, столбцы 6 и 7), пустое поле планируемого момента начала работы, которое заполнится по окончании работы программы (5-й столбец). Выходными данными программы являются: полностью определенный массив дескрипторов планируемых работ – R, последовательность событий (начало/окончание работ) с привязкой ко времени – TT, динамика (за планируемый период) потока от источника к стоку при оптимальном проведении работ – FLHist, 18 управление (режимы обеспечивающее функционирования максимальный каждой суммарный трубы), поток, при оптимальном проведении работ – FHist, Выходные данные хранятся в соответствующих структурах, имена которых указаны выше. Кроме того, после завершения работы основной части программы, полученные результаты демонстрируются в виде графиков. Программа начинает работу из основного модуля, в котором она получает входные данные из специальных файлов matrix_c и matrix_r. Получив входные данные, программа начинает их первоначальную обработку. Прежде всего, эти данные делаются доступными из других модулей программы. Массив дескрипторов обрабатывается в функции Group(R), которая осуществляет сортировку его элементов и разбиение их на группы, в дальнейшем работа осуществляется с группами по отдельности. После проведения обработки данных запускаются функции оптимизации Optimization и Perebor(R). Стоит сразу отметить, что запуск функции полного перебора Perebor(R) опционален и осуществляется при необходимости проверки результатов работы функции Optimization. При завершении работы функций оптимизации полученные результаты выводятся с помощью функции ShowResults, после чего программа завершает свою работу. Теперь рассмотрим, что происходит в функциях оптимизации Optimization и Perebor(R). Сначала внутри функции Optimization на основе дескриптора работ R формируются ограничения на значения аргумента функции потока (этим аргументом является вектор начал всех работ). Затем случайным образом генерируются значения аргумента и вычисляются значения функции среднего потока при данных значениях аргумента. Среди полученных 19 значений функции среднего потока отыскивается максимальное и соответствующее ему значение аргумента. Далее найденное значение аргумента используется в качестве начального для дальнейшей оптимизации. После этого происходит обращение к встроенной функции выпуклой оптимизации fmincon. Эта функция имеет следующие параметры: имя функции, экстремум которой требуется найти, начальное значение аргумента, ограничения на аргумент. В качестве первого аргумента, функции fmincon передается имя функции FlowReal среднего потока через систему за определенный период времени, которая реализована в одноименном модуле. После завершения своей работы fmincon возвращает точку экстремума и экстремум. После этого производится табулирование функции среднего потока по каждой из ее переменных, т.е. каждая переменная поочередно табулируется при фиксированных значениях остальных (эти значения берутся из решения найденного с помощью функции fmincon). Таким образом проверяется оптимальность решения в данной области. По тем переменным, по которым можно провести улучшение решения, такое улучшение производится в интерактивном режиме. Работа функции Perebor(R) отличается тем, что сначала на основе дескриптора работ R генерируются все возможные варианты аргумента, а затем, вместо использования fmincon, вычисляются значения функции FlowReal для каждого значения аргумента. При этом дальнейшее табулирование не требуется. Учитывая высокую трудоемкость функции Perebor(R), рекомендуется использовать ее на задачах малой размерности и только для проверки правильности работы функции Optimization(R). Далее рассмотрим функцию FlowReal среднего потока через систему за определенный период времени, с которой работают уже описанные функции оптимизации Optimization и Perebor(R). 20 Входным параметром этой функции является вектор моментов стартов проведения работ. Кроме того, FlowReal имеет доступ к матрице пропускных способностей и массиву дескрипторов работ. Сначала по входным данным строится последовательность событий (начало/окончание работ) с привязкой ко времени (массив TT). События упорядочиваются по времени наступления. Суммарный объем (переменная FL) полагается равным потоку до начала проведения работ, умноженному на длительность отрезка времени от начала планового периода до начала первой работы. Затем перестроение на основе матрицы последовательности пропускных событий способностей происходит (создание новой конфигурации сети). Для каждой новой конфигурации системы с помощью алгоритма Форда – Фалкерсона вычисляется максимальный поток (SF – матрица дуговых потоков, а S – величина общего потока). Величина этого потока умножается на время его существования (разница между моментами наступления соответствующих событий), и результат прибавляется к текущему значению суммарного объема. После обработки последнего события в переменной FL накапливается величина суммарного объема перекачанной нефти через систему за определенный период времени, которая и возвращается функцией FlowReal. Кроме того, во время работы данной функции происходит заполнение структур FLHist и FHist на основе значений переменных S и SF соответственно. Алгоритм Форда – Фалкерсона подробно рассматривался выше, и так как его программная реализация точно соответствует алгоритмическому описанию, повторно разбирать ее не имеет смысла. 21 4. Результаты работы программы Проиллюстрируем работу алгоритма на следующем примере. На рисунке 1 приведен пример сети; числа на дугах обозначают их пропускные способности и начальные потоки. Рис. 1. Сеть с искусственным источником s и стоком t Матрица пропускных способностей для данной транспортной сети имеет следующий вид (пустые ячейки на самом деле являются нулями и означают отсутствие дуги между вершинами и, соответственно, нулевую пропускную способность): 22 На рисунке 2 отражено множество потоков по дугам, это множество и есть результат работы алгоритма Форда – Фалкерсона для исходной сети. Рис. 2. Исходная сеть с распределенными по дугам потоками Массив дескрипторов планируемых работ для данной транспортной сети имеет следующий вид: 23 , где Tmin и Tmax – границы интервала возможного проведения работы, θ – это продолжительность работы, i и j – идентификаторы трубы, на которой проводится данная работа, T – это время начала. В результате работы алгоритма получаем: временной график работ, динамику потока через сеть при оптимальном проведении работ, управление, обеспечивающее максимальный суммарный поток, при оптимальном проведении работ. Все полученные результаты визуализируются и представляются в виде графиков (Рис. 3 – 5). 24 Рис. 3. Временной график работ Рис. 4. Динамика потока через сеть при оптимальном проведении работ 25 Рис. 5. Динамика дуговых потоков На рисунке 5 видно, что поток по некоторым трубам равен 0 и остается неизменным на протяжении всего периода. Это свидетельствует о неэффективном использовании ресурса нефтепровода. Таким образом, с помощью полученной программы можно не только находить величину стационарного максимального потока, планировать проведение регламентных работ, но и осуществлять анализ существующих или проектируемых транспортных сетей с целью оценки эффективности их загрузки. 26 Далее приведены результаты работы программы при обработке реальных данных. На рисунке 6 изображена схема нефтепроводной сети России и стран ближнего зарубежья. Рис. 6. Схема нефтепроводной сети Данной сети соответствует граф, представленный на рисунке 7. Треугольниками обозначены источники (месторождения), квадратами – стоки (потребители), а кружками – транзитные пункты. Числа внутри графических примитивов показывают номера узлов сети. Числа на дугах обозначают пропускные способности соответствующих участков нефтепровода. 27 Рис. 7. Нефтепроводная сеть Матрица пропускных способностей для данной транспортной сети и массив дескрипторов работ имеют большую размерность. Так как их структуры рассматривались в начале данного раздела, приводить их здесь не имеет смысла. Все полученные результаты представленны на рисунках 8 – 10. 28 Рис. 8. Временной график работ Рис. 9. Динамика потока через сеть при оптимальном проведении работ 29 Рис. 10. Динамика некоторых дуговых потоков На данном рисунке видно, что поток по некоторым трубам изначально равный 0 с течением времени изменяется. Это свидетельствует о том, что в реальных системах используются все ресурсы нефтепровода, т.е. каждый участок обязательно работает тот или иной период времени. 30 Заключение В результате выполнения данной работы были: 1. разработан и реализован алгоритм оптимизации плана регламентных работ, требующих отключения труб, на магистральном нефтепроводе по критерию максимума среднего потока в нефтепроводной сети; 2. осуществлена программная реализация алгоритма Форда – Фалкерсона вычисления максимального потока в сети; 3. разработан и реализован трехэтапный алгоритм случайного поиска максимума алгоритмически заданной невыпуклой целевой функции многих переменных, описывающей средний поток в сети; 4. проведено компьютерное моделирование нефтепроводной сети и исследовано качество работы алгоритмов оптимизации на примере задачи транспортировки нефти по магистральному нефтепроводу. 31 Список использованной литературы 1. Социально-экономическая география зарубежного мира. – М.: Кронпресс, 1998. 2. Зуховицкий С.И., Радчик И.А. Математические методы сетевого планирования. – М., 1965. 3. Форд Л., Фалкерсон Д. Потоки в сетях. – М.: Мир, 1966. – 276 с. 4. Матушевский В.В. Теория графов / Конспект лекций. – Томск: ТГУ, Факультет информатики, 2002. 5. Растригин Л.А. Статистические методы поиска. – М.: Наука, 1968. – 376 с. 6. Дьяконов В.П. MATLAB 6. Учебный курс. – СПб.: Питер, 2001. – 592 с. 32 Приложение А Руководство пользователя Для использования данной программы необходимо подготовить входные данные: матрицу пропускных способностей дуг (она должна находиться в файле matrix_c.m рабочей директории программы), массив дескрипторов планируемых работ (должен находиться в файле matrix_r.m рабочей директории программы). Программа запускается основным модулем FlowMain.m. После завершения работы основной части программы по поиску решения все результаты автоматически представляются в виде графиков. Кроме того, у пользователя есть возможность сохранить результаты в численном их представлении из переменных программы в отдельные файлы с помощью команды save. Подробную информацию об использовании этой команды можно получить, набрав в MatLab команду help save. Для более полного ознакомления с программой полезно также прочитать разделы 3.4. Программная реализация и 4. Результаты работы программы. 33 Приложение Б Руководство программиста Программа состоит из нескольких модулей и файлов данных. – 1. FlowMain.m основной модуль программы, в котором осуществляется инициализация, обработка входных данных, вызов процедур Optimization и Perebor, находящихся в одноименных модулях, и производится вывод результатов. 2. Group.m – модуль первоначальной обработки входных данных, в котором производится сортировка работ и разбиение их на группы по определенному признаку. 3. Optimization.m ограничения – на модуль программы, параметры в оптимизации котором и задаются осуществляется трехэтапный поиск экстремума. 4. Perebor.m – модуль программы (используется опционально при необходимости проверки результатов, полученных в Optimization), в котором реализовано решение задачи оптимизации плана работ путем полного перебора вариантов. 5. FlowReal.m – модуль программы, который реализует функцию вычисления среднего потока от источника к стоку за определенный период времени; здесь формируется массив событий, на основе этих событий изменяется конфигурация, а для полученной конфигурации вычисляется максимальный поток через систему путем вызова функции FlowMax. 6. FlowMax.m – модуль программы, в котором осуществляется инициализация, обработка входных данных для алгоритма Форда – Фалкерсона, вызывается процедура FlowCalc, находящаяся в одноименном модуле. 7. FlowCalc.m – данный модуль содержит процедуру FlowCalc, в которой выполняется поиск дополняющих цепей, вычисляется поток, 34 на величину которого может быть увеличен поток вдоль найденной дополняющей цепи, и вызывается процедура увеличения потока FlowChange. 8. FlowChange.m – модуль содержит процедуру FlowChange, в которой происходит увеличение потока, проверка его на максимальность (вдоль найденной цепи) и по результатам этой проверки либо продолжается увеличение потока, либо запускается новый поиск дополняющих цепей (с использованием нового потока). 9. ShowResults.m – вывод результатов вынесен в отдельную процедуру и может легко изменяться в зависимости от текущих потребностей. 10. matrix_c.m – файл программы, в котором находится матрица пропускных способностей дуг сети. 11.matrix_r.m – файл программы, в котором находится матрица планируемых работ. Для более полного ознакомления с программой полезно также прочитать раздел 3.4. Программная реализация. 35