Воротницкий Ю.И. Исследование операций 2. Сетевые и транспортные модели. Целочисленное программирование. 2. Сетевые модели. 2.1. Основные определения Сеть состоит из множества узлов (вершин), связанных дугами или ребрами. Сеть описывается парой множеств (N,A), где N – множество узлов, а А – множество ребер. 5 3 1 2 4 2. Сетевые модели. 2.1. Основные определения Показанная на рисунке сеть описывается следующим образом: N={1,2,3,4,5} A={(1,3), (1,2), (2,3), (2,4), (2,5), (3,4), (3,5), (4,5)} 5 3 1 2 4 2. Сетевые модели. 2.1. Основные определения С каждым типом сети связан определенный тип потоков. В общем случае потоки в сети ограничены пропускной способностью ее ребер Cij, которая в общем случае может быть как конечной, так и бесконечной (максимальный ток в цепи электропитания, пропускная способность телекоммуникационных каналов и т.д.). (C13,C31) 1 2 5 3 4 2. Сетевые модели. 2.1. Основные определения Ребро называется направленным (ориентированным), если в одном направлении возможен только положительный поток, а в противоположном – только нулевой В этом случае ребро называют дугой (C13,>0,C31=0) 1 2 5 3 4 2. Сетевые модели. 2.1. Основные определения В ориентированной сети все ребра ориентированы: N={1,2,3,4,5} A={(1,3), (2,1), (2,3), (2,4), (2,5), (4,3), (3,5), (4,5)} 5 3 1 2 4 2. Сетевые модели. 2.1. Основные определения Путем называется последовательность различных ребер, соединяющих два узла, независимо от направления потока в каждом ребре. Путь формирует цикл, если начальный и конечный узлы совпадают. Ориентированный цикл – цикл, в котором дуги ориентированы в определенном направлении. 5 3 1 2 4 2. Сетевые модели. 2.1. Основные определения Связная сеть – такая сеть, у которой любые два узла связаны по крайней мере одним путем. Это – связная сеть: N={1,2,3,4,5} A={(1,3), (1,2), (2,3), (2,4), (2,5), (3,4), (3,5), (4,5)} 5 3 1 2 4 2. Сетевые модели. 2.1. Основные определения Связная сеть – такая сеть, у которой любые два узла связаны по крайней мере одним путем. Это – тоже связная сеть: N={1,2,3,4,5} A={(1,2), (2,3), (2,5), (4,5)} 5 3 1 2 4 2. Сетевые модели. 2.1. Основные определения Связная сеть – такая сеть, у которой любые два узла связаны по крайней мере одним путем. А эта сеть связной не является: N={1,2,3,4,5} A={(1,2), (3,4), (3,5), (4,5)} 5 3 1 2 4 2. Сетевые модели. 2.1. Основные определения Деревом называется связная сеть, содержащая подмножество узлов исходной сети и не имеющая циклов. Пример дерева: N={1,2,4,5} A={(1,2), (2,5), (4,5)} 5 1 2 4 2. Сетевые модели. 2.1. Основные определения Остовное дерево – дерево, содержащее все узлы сети. Пример остовного дерева: N={1,2,3,4,5} A={(1,3), (1,2), (2,4), (2,5)} 5 3 1 2 4 2. Сетевые модели. 2.2. Представление сетей Сеть G=(N,A) может быть полностью определена простым перечислением множеств N и A. N={1,2,3,4,5} A={(1,3), (1,2), (2,4), (2,5)} Такой способ не позволяет легко анализировать свойства сетей 5 3 1 2 4 2. Сетевые модели. 2.2. Представление сетей Матрица смежности. Любая сеть G=(N,A) с m узлами (вершинами) может быть представлена матрицей A(G)=[aij] размера m x m. Для этого узлы должны быть перенумерованы (или помечены метками порядкового типа v1, v2, …, vm). aij=1, если vi смежен с vj, в противном случае aij=0. Для неориентированной сети G A(G) всегда будет симметричной матрицей (0,1) с нулями на диагонали. Для ориентированной матрицы G только один из элементов aij, aji может отличаться от нуля. При необходимости значения 0 и 1 в матрице можно заменить пропускными способностями или стоимостями путей. 2. Сетевые модели. 2.2. Представление сетей Матрица смежности 5 3 1 2 4 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 2. Сетевые модели. 2.2. Представление сетей Матрица смежности 5 3 1 2 4 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2. Сетевые модели. 2.2. Представление сетей Матрица инцидентности. Любая сеть G=(N,A) с m узлами и n ребрами может быть представлена матрицей I(G)=[bij] размера m x n. Для этого узлы должны быть перенумерованы (или помечены метками порядкового типа v1, v2, …, vm), а ребра также перенумерованы (или помечены метками порядкового типа e1, e2, …, en), . bij=1, если vi инцидентен ej, в противном случае bij=0. Каждый j-й столбец матрицы I(G), соответствующий j-му ребру, всегда содержит ровно две единицы. Никакие два столбца не могут быть идентичны. Матрица инцидентности полезна для решения сетевых задач, касающихся анализа циклов. 2. Сетевые модели. 2.2. Представление сетей Матрица инцидентности 2 1 5 3 4 1 2 3 4 1 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 1 2. Сетевые модели. 2.2. Представление сетей Векторы смежности. Любая сеть G=(N,A) с m узлами может быть представлена матрицей С(G)=[сij] размера m x m-1. Для этого узлы должны быть перенумерованы (или помечены метками порядкового типа v1, v2, …, vm). Каждая i-я строка матрицы соответствует i-му узлу. Значения элементов i-й строки cij – номера узлов, смежных с vi. Каждая i-я строка представляет собой вектор смежности для i-го узла сети. Порядок элементов в векторе смежности в общем случае произволен. Векторы смежности целесообразно использовать, когда задача решается за небольшое число просмотров каждого ребра в G. 2. Сетевые модели. 2.2. Представление сетей Вектор смежности 5 3 1 2 4 2 5 1 2 2 3 4 0 0 0 0 1 0 0 0 0 0 0 0 0 2. Сетевые модели. 2.2. Представление сетей Списки смежности. Списки смежности – один из наиболее эффективных способов представления сети G=(N,A), где N – m вершин, А – n ребер. В этом случае сеть представляется с помощью m списков, каждый из которых может иметь от 0 до m-1 элемента. Информационное поле каждого элемента i-го списка содержит номер вершины, смежной с i-й Удобно использовать одномерный массив из m элементов, причем каждый элемент массива представляет собой линейный список, представляющий ненулевые компоненты вектора смежности для соответствующей вершины 2. Сетевые модели. 2.2. Представление сетей Списки смежности 5 3 1 2 4 1 2 3 2 1 4 3 1 4 2 5 2 5 2. Сетевые модели. 2.3. Постановки задач и базовые алгоритмы Основные классы задач: Проектирование сети минимальной длины (минимальной стоимости), соединяющей заданное множество узлов некоторой сети. Алгоритм нахождения минимального остовного дерева 2. Сетевые модели. 2.3. Постановки задач и базовые алгоритмы Основные классы задач: Нахождение кратчайшего маршрута (маршрута наименьшей стоимости) между двумя узлами существующей сети Алгоритм нахождения кратчайшего пути. 2. Сетевые модели. 2.3. Постановки задач и базовые алгоритмы Основные классы задач: Определение максимальной пропускной способности сети между заданными узлами (задача о максимальном потоке) Алгоритм определения максимального потока 2. Сетевые модели. 2.3. Постановки задач и базовые алгоритмы Основные классы задач: Нахождение потока наименьшей стоимости между заданными узлами при заданной максимальной пропускной способности путей Алгоритм минимизации стоимости потока в сети с ограниченной пропускной способностью 2. Сетевые модели. 2.3. Постановки задач и базовые алгоритмы Основные классы задач: Задачи сетевого планирования Алгоритм нахождения критического пути 2. Сетевые модели. 2.3. Постановки задач и базовые алгоритмы Все перечисленные задачи можно сформулировать и решить как задачи линейного программирования. Этот подход неэффективен, так как специфическая структура этих задач позволяет построить для них специальные, более эффективные, вычислительные алгоритмы 2. Сетевые модели. 2.4. Алгоритм построения минимального остовного дерева Заданы N={1,2,…m} – множество узлов сети. Заданы длины (стоимости) возможных дуг sij, которые можно провести между узлами i и j. Необходимо соединить все узлы сети с помощью путей (дуг) наименьшей суммарной длины. Очевидно, что для этого необходимо построить дерево, связвающее все узлы с помощью дуг наименьшей общей длины (стоимости). Обозначим Ck – множество узлов, соединенных алгоритмом после выполнения k-й итерации, Dk – множество узлов сети, не соединенных с узлами множества Ck после выполнения kй итерации алгоритма. 2. Сетевые модели. 2.4. Алгоритм построения минимального остовного дерева Шаг 0. Положить С0 = (пустое множество), D0=N. Шаг 1. Выбрать любой узел i из множества D0 и определить С1 ={i}, D1=N-{i}. Положить k=2. Шаг 2. Пока множество D0 не является пустым, выполнить: Шаг 2.1. В множестве Dk-1 выбрать узел j, который соединен самой короткой дугой с каким-либо узлом из Сk-1. Шаг 2.2. Ck=Ck-1+{j}, Dk=Dk-1-{j}. Шаг 2.3. k=k+1. Шаг 3. Завершить работу. 2. Сетевые модели. 2.4. Алгоритм построения минимального остовного дерева. Задача построения опорной телекоммуникационной сети Банк имеет в городе 6 крупных отделений. С целью создания корпоративной информационной системы необходимо связать их с помощью опорной оптоволоконной сети минимальной стоимости, полагая, что она определяется общей длиной коммуникаций. Расстояния между офисами известны. Разумеется, такая постановка задачи в значительной степени идеализирована: не учитываются параметры и стоимость коммуникационного оборудования в узлах сети, а также пропускная способность каналов; не учитывается, что прокладка по существующим телефонным канализациям дешевле, однако при этом могут существенно увеличиваться длины кабелей; не рассматривается необходимость резервирования каналов связи. 2. Сетевые модели. 2.4. Алгоритм построения минимального остовного дерева. Задача построения опорной телекоммуникационной сети 3 2 5 9 1 5 1 8 6 3 10 7 4 5 4 3 6 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. Банк имеет в городе 6 крупных отделений, соединенных оптоволоконными линиями передачи. Необходимо организовать видеоконференцсвязь между центральным офисом (узел 1) и отделениями. Для этого необходимо предложить схему статической маршрутизации пакетов, минимизирующую времена задержек от узла 1 до каждого из остальных узлов. Средние времена задержек при передаче от узла к узлу в условиях нормальной загрузки сети известны. Разумеется, эта задача тоже идеализирована. В частности: не учитывается влияние изменения самого трафика видеоконференций на средние времена задержек; не учитываются другие параметры, влияющие на качество видеоконференцсвязи (вариации задержек, вероятность потери пакетов). 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 5 200 90 1 80 3 450 160 4 120 6 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. Алгоритм Дейкстры. При переходе от узла i к следующему узлу j используется специальная процедура пометки ребер. Обозначим через ui кратчайшее расстояние от исходного узла 1 до узла i, через dij – длину ребра (i,j). Тогда для узла j определим метку [uj,i] следующим образом: [uj,i] = [ui+ dij,i]. Метки могут быть двух типов: временные и постоянные. Временная метка может быть заменена на другую временную, если будет найден более короткий путь к данному узлу. Статус временной метки заменяется на постоянный, когда станет очевидным, что не существует более короткого пути от исходного узла к данному. 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. Алгоритм Дейкстры. Шаг 0. Исходному узлу (узел 1) присваивается метка [0,-]. Положить i=1. Шаг i. Вычислить временные метки [ui+ dij,i] для всех узлов j, которые можно достичь из узла i и которые не имеют постоянных меток. Если узел j уже имеет временную метку, полученную от другого узла k и если ui+ dij < uj, то заменить метку [uj,k] на [ui+ dij,i]. Если все узлы имеют постоянные метки, процесс вычислений заканчивается. В противном случае выбрать метку [ur,s] с наименьшим значением расстояния среди всех временных меток (если их несколько – выбор произволен). Изменить статус этой метки на постоянную. Положить i=r и повторить шаг i. 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 200 80 1 5 90 3 450 160 4 120 6 Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] временная 3 [0+80,1] = [80,1] временная 4 5 6 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 200 80 1 5 90 3 450 160 4 120 6 Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] временная 3 [0+80,1] = [80,1] постоянная 4 5 6 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 200 80 1 5 90 3 450 160 4 120 6 Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] временная 3 [0+80,1] = [80,1] постоянная [80+450] = [530,3] временная 4 5 6 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 200 80 1 5 90 3 450 160 4 120 6 Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] постоянная 3 [0+80,1] = [80,1] постоянная 4 [200+160,2] = [360,2] временная 5 [200+300,2]=[500,2] временная 6 [80+450] = [530,3] временная 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 200 80 1 5 90 3 450 160 4 120 6 Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] постоянная 3 [0+80,1] = [80,1] постоянная 4 [200+160,2] = [360,2] временная 5 [200+300,2]=[500,2] временная 6 [80+450] = [530,3] временная 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 200 80 1 5 90 3 450 160 4 120 6 Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] постоянная 3 [0+80,1] = [80,1] постоянная 4 [200+160,2] = [360,2] постоянная 5 360+90<500 => [500,2] <= [360+90,4] = [450,4] временная 6 360+120<530 =>[530,3]<=[360+120,4] =[480,4] временная 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 200 80 1 5 90 3 450 160 4 120 6 Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] постоянная 3 [0+80,1] = [80,1] постоянная 4 [200+160,2] = [360,2] постоянная 5 [360+90,4] = [450,4] временная 6 [360+120,4] =[480,4] временная 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 200 80 1 5 90 3 450 160 4 120 6 Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] постоянная 3 [0+80,1] = [80,1] постоянная 4 [200+160,2] = [360,2] постоянная 5 [360+90,4] = [450,4] постоянная 6 [360+120,4] =[480,4] постоянная 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 200 80 1 5 90 3 450 160 4 120 6 Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] постоянная 3 [0+80,1] = [80,1] постоянная 4 [200+160,2] = [360,2] постоянная 5 [360+90,4] = [450,4] постоянная 6 [360+120,4] =[480,4] постоянная 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. Кратчайший путь между узлом 1 и любым узлом определяется начиная с узла назначения путем прохождения в обратном направлении с помощью информации, представленной в постоянных метках. Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] постоянная 3 [0+80,1] = [80,1] постоянная 4 [200+160,2] = [360,2] постоянная 5 [360+90,4] = [450,4] постоянная 6 [360+120,4] =[480,4] постоянная 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. 300 2 200 80 1 5 90 3 450 160 4 120 6 Узел Метка Статус 1 [0,-] постоянная 2 [0+200,1] = [200,1] постоянная 3 [0+80,1] = [80,1] постоянная 4 [200+160,2] = [360,2] постоянная 5 [360+90,4] = [450,4] постоянная 6 [360+120,4] =[480,4] постоянная 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Принцип построения алгоритма Флойда. Алгоритм Флойда более общий: он приводит к нахождению кратчайших путей между любыми двумя узлами сети. Сеть с n узлами представляется в виде квадратной матрицы с n строками и n столбцами. Элемент (i,j) равен расстоянию dij от узла i до узла j, которое имеет конечное значение, если узлы связаны дугой и равно бесконечности в противном случае. Основная идея метода. Пусть есть три узла i,j,k и заданы расстояния между ними. Если dij + djk < dik , то целесообразно заменить путь i -> k путем i -> j -> k. Такая замена (ее еще называют треугольный оператор) выполняется систематически в процессе выполнения алгоритма. j i k 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации потерь пакетов в корпоративной сети. Банк имеет в городе 6 крупных отделений, соединенных оптоволоконными линиями передачи. Необходимо организовать видеоконференцсвязь между центральным офисом (узел 1) и отделениями. Для этого необходимо предложить схему статической маршрутизации пакетов, минимизирующую потери пакетов на маршрутах от узла 1 до каждого из остальных узлов. Усредненные значения вероятностей доставки пакетов UDP от узла к узлу в условиях нормальной загрузки сети известны. Разумеется, эта задача тоже идеализирована. В частности: не учитывается влияние изменения самого трафика видеоконференций на вероятности доставки пакетов; не учитываются другие параметры, влияющие на качество видеоконференцсвязи. 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации задержек пакетов в корпоративной сети. Алгоритм Дейкстры. p25 2 5 p12 1 p45 p13 3 p36 p24 4 p46 6 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача минимизации потерь пакетов в корпоративной сети. Мы имеем дело с задачей нахождения не кратчайшего, а наиболее длиного пути. Проблема: вероятности не складываются, а умножаются. Эта проблема преодолевается, если заменить вероятности их логарифмами: dij = log pij. Теперь можно воспользоваться алгоритмом Дейкстры или алгоритмом Флойда. 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача о замене оборудования (Х. Таха) Компания по прокату автомобилей разрабатывает план обновления парка своих машин на 5 лет (2000-2004 гг.). Каждый автомобиль должен прослужить не менее одного и не более трех лет. Стоимость замены автомобиля в зависимости от года покупки и срока эксплуатации приведена в таблице. Год покупки Стоимость замены в зависимости от срока эксплуатации 1 год 2 года 3 года 2000 4000 5400 9800 2001 4300 6200 8700 2002 4800 7100 - 2003 4900 - - 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача о замене оборудования (Х. Таха) 9800 7100 5400 1 4000 2 4300 3 4800 6200 8700 4 4900 5 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача о рюкзаке Путешественник, собираясь в путь, пытается поместить в свой рюкзак, объемом 5 кубических футов, наиболее необходимые в путешествии вещи. Имеются три вещи объемом соответственно 2, 3 и 4 кубических фута, необходимость которых оценивается (по 100-балльной шкале) в 30, 50 и 70 баллов. Сформулируем эту задачу как сетевую, где необходимо найти самый длинный путь. Узлу в этой сети можно сопоставить пару чисел (i,v), где i – номер выбираемой вещи, а v – свободный объем рюкзака, оставшийся после выбора i-й вещи 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача о рюкзаке (1,x) 30 30 (0,5) 50 70 (2,x) 70 (3,x) 70 2. Сетевые модели. 2.5. Нахождение кратчайшего пути. Задача о рюкзаке Конечно, задача о рюкзаке может быть сформулирована как классическая задача линейного программирования (причем – целочисленного). Если объем рюкзака равен V, объем i-й вещи – vi, ее полезность – сi, а варьируемые переменные xi могут принимать значение 1 (вещь положили) или 0 (не положили) то имеем задачу: n max xi ci ; i 1 n xv i 1 i i V. Впрочем, на самом деле, задача о рациональнной загрузке – классическая задача динамического программирования. Эта задача отнсится к классу задач, называемому задачи распредления ресурсов. 2. Сетевые модели. 2.6. Задача о максимальном потоке. Постановка задачи. Рассмотрим сеть трубопроводов для транспортировки сырой нефти от буровых скважин до нефтеперерабатывающих заводов. Каждый сегмент трубопровода имеет свою пропускную способность. Сегменты могут быть как однонаправленные, так и двунаправленные. Требуется определить максимальный поток между скважинами и заводами. Cji Cij i j 7 1 4 3 Источник 2 6 8 Сток 5 9 Скважины Насосные станции Заводы 2. Сетевые модели. 2.6. Задача о максимальном потоке. Перебор разрезов. Разрез определяет множество ребер, при удалении которых из сети полностью прекращается поток от источника к стоку. Пропускная способность разреза равна сумме пропускных способностей разрезанных ребер Разрез с минимальной пропускной способностью определяет максимальный поток в сети. Разрез 1 Разрез 2 0 10 1 Разрез 3 4 20 5 30 0 20 Это не все разрезы ! 0 30 0 0 2 40 5 0 0 10 3 20 2. Сетевые модели. 2.6. Задача о максимальном потоке. Перебор разрезов. Разрез Разрезанные ребра 1 (1,2), (1,3), (1,4) 2 (1,3), (1,4), (2,3), (2,5) 3 (2,5), (3,5), (4,5) Разрез 1 10+30+20 = 60 30+10+40+30 = 110 30+20+20 = 70 Разрез 2 0 10 1 Пропускная способность Разрез 3 4 20 5 30 0 20 0 30 0 0 2 40 5 0 0 10 3 20 2. Сетевые модели. 2.6. Задача о максимальном потоке. Идея алгоритма. Перебор всех разрезов – непростая задача. Идея алгоритма нахождения максимального потока состоит в нахождении сквозных путей с положительными потоками от источника к стоку. Нахождение очередного сквозного пути предполагает задействование части пропусной спосообности ребер. Поэтому следующий сквозной путь ищется на остаточной сети. Максимальный поток вычисляется как сумма потоков в сквозных путях. Более общей является задача с нижними положительными границами пропускных способностей. При этом сеть может вообще не иметь допустимого потока. В этом случае интерес представляет нахождение как максимального, так и минимального потоков в сети. 2. Сетевые модели. 2.6. Задача о максимальном потоке. Оптимизация производственного плана. Четыре фабрики имеют заказ на производство четырех видов игрушек. Возможности фабрик по производству игрушек показаны в таблице. Фабрика Типы игрушек Ежедневная производственная мощность (игрушек) 1 1,2,3 250 2 2,3 180 3 1,4 300 4 3,4 100 Ежедневный спрос на игрушки каждого из четырех типов составляет 200, 150, 350 и 100 штук. Необходимо разработать производственный план, максимально удовлетворяющий спрос на игрушки 2. Сетевые модели. 2.6. Задача о максимальном потоке. Оптимизация производственного плана. 1 2 250 0 200 0 5 150 180 0 6 7 100 4 Фабрики 0 10 13 14 350 0 300 0 3 9 11 15 100 0 8 12 Игрушки 0 16 Потребители 2. Сетевые модели. 2.6. Задача о максимальном потоке. Оптимизация производственного плана. Конечно, задача оптимизации производственного плана может быть сформулирована как классическая задача линейного программирования (причем – целочисленного). Если количество выпускаемых i-й фабрикой игрушек l-го о типа – xil max (x11+x12+x13+x22+x23+x31+x34+x43+x44); x11 + x31 ≤ 200; x13 + x43 ≤ 350; x12 + x22 ≤ 150; x34 + x44 ≤ 100; x11 + x12 + x13 ≤ 250; x31 + x34 ≤ 300; x22 + x23 ≤ 180; x43 + x44 ≤ 100; 2. Сетевые модели. 2.7. Нахождение потока наименьшей стоимости. Постановка задачи. Задачу нахождения потока наименьшей стоимости в сети с ограниченной пропускной сппособностью можно рассматривать как обобщение задачи определения максимального потока: Все ребра допускают только одностороннее направление потока, т.е. являются (ориентированными) дугами. Каждой дуге поставлена в соответствие (неотрицательная) стоимость прохождения единицы потока по данной дуге. Дуги могут иметь положительную нижнюю границу пропускной способности. Любой узел сети может выступать в качестве источника и стока. В рассматриваемой задаче необходимо найти потоки по дугам, минимизирующие стоимость прохождения потока по сети. При этом должны удовлетворяться ограничения на пропускные способности дуг и на величины предложений и спроса отдельных (или всех) узлов. Эта задача решается с помощью специального симплексного алгоритма. 2. Сетевые модели. 2.7. Нахождение потока наименьшей стоимости. Постановка задачи. Рассмотрим сеть G=(N,A) с ограниченной пропускной способностью, где N – множество узлов, A – множество дуг. Обозначим: xij – велиичина потока, протекающего от узла i к узлу j, uij – верхняя пропускная способность дуги (i,j), lij – нижняя пропускная способность дуги (i,j), сij – стоимость прохождения потока по дуге (i,j), fi – величина результирующего потока, протекающего через узел j. fi xji сij i fj j (lij ,uij) 2. Сетевые модели. 2.7. Нахождение потока наименьшей стоимости. Пример (Х.Таха). Компания “Зернышко” снабжает зерном из трех зернохранилищ три птицеводческие фермы. Предложение зернохранилищ составляет 100, 200 и 50 тонн зерна в месяц. Компания может транспортировать зерно по железной дороге, за исключением трех маршрутов, где используется автомобильный транспорт. -150 +100 $5 (20,80) 1 $20 $10 $5 +50 $15 4 (10,120) (20,120) 4 -120 3 +200 2 $20 $10 $25 $30 -80 5 Пропускная способность железных дорог не ограничена. Пропускная способность автотранспорта огранничена снизу и сверху. 2. Сетевые модели. 2.7. Нахождение потока наименьшей стоимости. Сетевая модель как задача линейного программирования Используя данные выше определения, можно записать задачу ЛП для сети с ограниченной пропускной способностью следующим образом: min c x ; ( i , j A ) k ( j , k A ) x jk ij ij x ij f j, j N; k ( i , jA ) lij xij uij . Условие сбалансированности сети: ∑fi=0. Сбалансированность сети не гарантирует существования допустимого решения: этому может помешать ограниченность пропускных способностей дуг. 2. Сетевые модели. 2.7. Нахождение потока наименьшей стоимости. Сетевая модель как задача линейного программирования Алгоритм решения базируется на стандартном симплексметоде и теории двойственности. Модификация алгоритма симплекс-метода заключается в особых правилах ввода и исключения переменных (дуг), то есть в особых условиях оптимальности и допустимости, облегчающих процесс вычислений. Базисному решению соответствует миинимальное остовное дерево, построенное на сети. 3. Транспортные модели. 3.1. Определение транспортной модели. Транспортные модели в классической постановке описывают перемещение (перевозку) какого-либо продукта из пунктов отправления в пункты назначения. Цель транспортной задачи – определение объемов перевозки из пунктов отправления в пункты назначения с минимальной суммарной стоимостью перевозок. При этом должны учитываться ограничения на объемы грузов в пунктах отправления (предложения) и в пунктах назначения (спрос). Предполагается, что стоимость перевозки по какому-либо маршруту прямо пропорциональна объему товара. Транспортная модель применяется для описания ситуаций, связанных с управлением запасами, составлением расписаний, управлением движением капиталов, назначением персонала и др. Транспортная модель может рассматриваться как упрощенная задача нахождения потока минмальной стоимости в сети. 3. Транспортные модели. 3.1. Определение транспортной модели. Представление транспортной задачи в виде сети. a1 a2 Объемы предложений am 1 c11x11 1 2 2 . . . . . . m cmnxmn n b1 b2 Спрос bn 3. Транспортные модели. 3.1. Определение транспортной модели. Пример постановки транспортной задачи. Минский тракторный завод построил три завода в ЛосАнджелесе, Детройте и Новом Орлеане и два дистрибьюторских центра в Денвере и Майами. Объемы производства заводов в следующем квартале соответственно составляют 1000, 1500 и 1200 тракторов. Ежеквартальнная потребность дистрибьюторских центров составляет 2300 и 1400 автомобилей Даны расстояния (в милях) между заводами и дистрибьюторскими центрами. Транспортная компания оценивает свои услуги в 8 центов за перевозку одного трактора на одну милю. Требуется минимизировать транспортные расходы. 3. Транспортные модели. 3.1. Определение транспортной модели. Пример постановки транспортной задачи. Таблица расстояний Денвер Майами Лос-Анджелес 1000 2690 Детройт 1250 1350 Новый Орлеан 1275 850 Таблица стоимостей (долларов США) Денвер Майами Лос-Анджелес 80 215 Детройт 100 108 Новый Орлеан 102 68 3. Транспортные модели. 3.1. Определение транспортной модели. Пример постановки транспортной задачи. Основываясь на таблице стоимости, сформулируем следующую задачу линейного программирования min F=80x11+215x12+100x21+108x22+102x31+68x32; x11 + x12 = 1000; (производство в Лос-Анджелесе) x21 + x22 = 1500; (производство в Детройте) x31 + x32 = 1200; (производство в Новом Орлеане) x11 + x21 + x31 = 2300; (спрос в Денвере) x12 + x22 + x32 = 1400; (спрос в Майами) xij ≥ 0, i=1,2,3, j=1,2. 3. Транспортные модели. 3.1. Определение транспортной модели. Пример постановки транспортной задачи. Данная задача решается с помощью транспортной таблицы Денвер Лос-Анджелес 80 x11 Детройт x12 x21 Спрос 215 100 Новый Орлеан Объем производства Майами 1000 108 x22 102 1500 68 x31 x32 2300 1400 1200 3. Транспортные модели. 3.1. Определение транспортной модели. Пример постановки транспортной задачи. 1000 1 1 1500 2300 2 2 1400 1200 3 Объемы предложений Спрос 3. Транспортные модели. 3.1. Определение транспортной модели. Пример постановки транспортной задачи (Решение). 1000 1 1000 1300 1500 2 1 2300 200 1200 2 1400 1200 3 Объемы предложений Спрос 3. Транспортные модели. 3.1. Определение транспортной модели. Пример постановки транспортной задачи. Когда суммарный объем предложений не равен общему объему спроса на товары, транспортная модель называется несбалансированной. Для того, чтобы применить для решения транспортной задачи специальный алгоритм, основанный на использовании транспортных таблиц, необходимо преобразовать несбалансрованную модель к сбалансированной. Для этого вводят фиктивные пункты назначения или отправления. 3. Транспортные модели. 3.1. Определение транспортной модели. Пример постановки транспортной задачи. Например, пусть завод в Детройте уменьшил выпуск продукции до 1300 тракторов вместо 1500. Денвер Лос-Анджелес 80 1000 Детройт 0 1300 108 102 Фиктивный завод 1300 68 1200 0 1200 0 200 2300 1000 0 0 Спрос 215 100 Новый Орлеан Объем производства Майами 1400 200 3. Транспортные модели. 3.1. Определение транспортной модели. Пример постановки транспортной задачи. Предположим теперь, что наоборот, при прежнем объеме производства спрос в Денвере уменьшился до 1900 тракторов. Денвер Лос-Анджелес Майами 80 1000 Детройт 0 900 1900 0 0 108 200 102 0 Спрос 215 100 Новый Орлеан Фиктивный Объем центр производства 0 400 68 1200 1400 1000 1500 0 0 400 1200 3. Транспортные модели. 3.2. Нетрадиционные транспортные модели. Управление запасами Фабрика производит купальные костюмы. В течение года спрос на эту продукцию есть только в мае-августе. Фабрика оценивает спрос в эти месяцы соответственно в 1000, 2000, 1800 и 3000 единиц изделия. В зависимости от числа задействованных рабочих и производственного оборудования в течение этих месяцев можно выпустить 500, 1800, 2800 и 2700 костюмов соответственно. Производство и спрос в различные месяцы не совпадают, спрос в текущем месяце можно удовлетворить следующими способами: производством изделий в текущем месяце (себестоимость - 40 долларов); избытком произведенных в прошлом месяце изделий (стоимость хранения – 0,5 доллара в месяц); избытком произведенных в следующм месяце изделий в счет невыполненных заказов (штраф - 2 доллара за месяц просрочки) 3. Транспортные модели. 3.2. Нетрадиционные транспортные модели. Управление запасами Транспортная модель Модель управления запасами Пункт отправления i Период производства i Пункт назначения j Период потребления j Предложение в пункте отправления i Объем производства за период i Спрос в пункте назначения j Объем реализации продукции за период j Стоимость перевозки из пункта i в пункт j Стоимость единицы продукции (производство+хранение+штрафы) за период от i до j 3. Транспортные модели. 3.2. Нетрадиционные транспортные модели. Управление запасами май май июнь 40 июль 40,5 август 41 Объем пр-ва 41,5 500 июнь 42 40 40,5 41 1800 июль 44 42 40 40,5 2800 август 46 44 42 40 2700 Спрос 1000 2000 1800 3000 3. Транспортные модели. 3.2. Нетрадиционные транспортные модели. Управление запасами май май июнь 40 500 июнь 0 500 август 1000 0 2000 41 0 40 1800 44 1800 1800 40,5 300 42 0 500 0 0 700 Объем пр-ва 41,5 40,5 42 46 0 41 40 44 август 0 1300 0 Спрос 40,5 42 июль июль 2800 40 2700 3000 2700 3. Транспортные модели. 3.2. Нетрадиционные транспортные модели. Управление запасами 500 500 1 Объемы производства 1800 1 1000 500 Спрос 1300 2 2 2000 700 2800 3 1800 3 1800 300 2700 4 2700 4 3000 3. Транспортные модели. 3.2. Нетрадиционные транспортные модели. Управление оборудованием Лесопильный завод обрабатывает различную древесину по утвержденному недельному производственному плану. Согласно этому плану в зависимости от типа древесины в разные дни недели требуется различное число полотен для пил: 1- Пн. 2-Вт. 24 12 4-Чт. 14 5-Пт. 20 6-Сб. 18 7-Вс. 14 Завод может удовлетворить потребность в полотнах следующим образом: 3-Ср. Купить новые по $12 за штуку Применить ночную заточку стоимостью $6 за полотно Сдать полотно на 2-дневную заточку за $3 за полотно. Требуется минимизировать затраты в течение недели на обеспечение производства полотнами для пил. 22 3. Транспортные модели. 3.2. Нетрадиционные транспортные модели. Управление оборудованием Новые Пн Вт $12 24 $12 2 $12 М $6 10 $6 Пн Вт М Ср Чт Пт $12 8 М М $12 Вс $12 Остаток $12 Кол-во использованных полотен $0 98 $3 $6 М $3 $3 $3 124 $0 6 24 $6 6 Ср Сб $3 $3 $3 $0 6 М $6 12 $6 $3 $3 $0 14 Чт М М М 14 М $6 $6 12 Пт М М М М $3 8 М $6 20 $6 14 Сб М М М М $0 М $0 4 М $6 18 $0 14 Вс М М М М М М 14 М $0 22 Необх.кол. полотен (спрос) 24 12 14 20 18 14 22 124 Здесь Остаток – к-во незаточенных полотен в конце каждого дня – фиктивный пункт назначения 22 3. Транспортные модели. 3.3. Принципы построения алгоритма решения Последовательность шагов алгоритма решения транспортной задачи: 1. Определить начальное базисное допустимое решение 2. На основании условия оптимальности симплекс-метода среди всех небазисных переменных определить вводимую в базис. Если все небазисные переменнные удовлетворяют условию оптимальности, завершить вычисления. 3. С помощью условия допустимости симплекс-метода среди текущх базисных переменных определить исключаемую. 4. Найти новое базисное решение и перейти к шагу 2. Данная последовательность шагов в точности повторяет аналогичную последовательность симплексного алгоритма. 3. Транспортные модели. 3.3. Принципы построения алгоритма решения Определение начального решения Общая траснспортная модель с m пунктами отправления и n пунктами назначения имеет m+n ограничений. В силу сбалансированности транспортной модели одно из этих равенств избыточно. Таким образом, транспортаня модель имеет m+n-1 независимых ограничений, откуда следует, что начальное базисное решение состоит также из m+n-1 переменных. Специальная структура транспортной задачи позволяет использовать для построения начального решения следующие методы: Метод северо-западного угла Метод наименьшей стоимости Метод Фогеля. 3. Транспортные модели. 3.3. Принципы построения алгоритма решения Итерационный алгоритм решения транспортной задачи Далее реализуются известнные шаги симплекс-метода: 1. 2. 3. На основании условия оптимальности симплекс-метода среди всех небазисных переменных определить вводимую в базис. Если все небазисные переменнные удовлетворяют условию оптимальности, завершить вычисления. С помощью условия допустимости симплекс-метода среди текущх базисных переменных определить исключаемую. Найти новое базисное решение и перейти к шагу 2. Однако, при изменении базиса в данном случае используется более простой способ, основанный на анализе транспортной таблицы (вычислении коэффициентов Fстроки, соответствующих небазисным переменным с помощью метода потенциалов). 3. Транспортные модели. 3.4. Задача о назначениях Постановка задачи Необходимо назначить работников на опредленные работы. Каждый работник может выполнять любую работу, хотя и с различной степенью мастерства. Если на некоторую рработу назначается работник именно той квалификации, которая необходима для ее выполнения, стоимость выполнения работы будет ниже, чем при назначении работника неподходящей квалификации. Цель – найти оптимальное (минимальной стоимости) распределение работников по всем заявленным работам. 3. Транспортные модели. 3.4. Задача о назначениях Постановка задачи Работы 1 Работники 1 2 … n 2 c11 c21 … cn1 c12 c22 … cn2 1 1 1 … n … … … … c1n c2n … cnn 1 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод В исходной матрице стоимостей определить в каждой строке минимальную стоимость и отнять ее от всех элементов строки. 2. В полученной матрице найти в каждом столбце минимальную стоимость и отнять ее от всех элементов столбца. 3. Если допустимое решение получено, то 1. 1. 4. Оптимальные назначения соответствуют нулевым элементам. Завершить работу. Иначе: 1. 2. 3. В последней матрице провести минимальное число горизонтальных и вертикальных прямых, чтобы вычеркнуть все нулевые элементы. Найти наименьший невычеркнутый элемент и вычесть его из всех невычеркнутых элементов и прибавить к элементам, стоящим на пересечении проведенных прямых. Если допустимое решение получено, то оптимальные назначения соответствуют нулевым элементам. Завершить работу. Иначе перейти к 2. 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $1 $9 $4 $8 $4 $7 $5 $7 $6 $10 $11 $8 $3 $9 $7 $5 1 1 1 1 Исходная задача о назначении работников на работы 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $1 $9 $4 $8 $4 $7 $5 $7 $6 $10 $11 $8 $3 $9 $7 $5 1 1 1 1 Находим в каждой строке минимальную стоимость 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $0 $2 $0 $3 $3 $0 $1 $2 $5 $3 $7 $3 $2 $2 $3 $0 1 1 1 1 Отняли ее от всех элементов строк 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $0 $2 $0 $3 $3 $0 $1 $2 $5 $3 $7 $3 $2 $2 $3 $0 1 1 1 1 Находим в каждом столбце минимальную стоимость 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $0 $2 $0 $3 $3 $0 $1 $2 $2 $0 $4 $0 $2 $2 $3 $0 1 1 1 1 Вычитаем из всех элементов соответствующих столбцов (реально – только из третьего). Допустимое решение не получено. Назначив 1-го работника на работу 1 мы лишаем возможности получить работу 3-го работника 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $0 $2 $0 $3 $3 $0 $1 $2 $2 $0 $4 $0 $2 $2 $3 $0 1 1 1 1 Вычеркиваем все нулевые элементы с помощью наименьшего числа горизонтальных и вертикальных линий 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $0 $2 $0 $3 $3 $0 $1 $2 $2 $0 $4 $0 $2 $2 $3 $0 1 1 1 1 Находим наименьший невычеркнутый элемент 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $0 $2 $0 $3 $2 $0 $0 $2 $1 $0 $3 $0 $1 $2 $2 $0 1 1 1 1 Вычитаем его из всех невычеркнутых элементов 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $0 $3 $0 $4 $2 $0 $0 $2 $1 $0 $3 $0 $1 $2 $2 $0 1 1 1 1 Прибавляем его ($1) к элементам на пересечении линий 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $0 $3 $0 $4 $2 $0 $0 $2 $1 $0 $3 $0 $1 $2 $2 $0 1 1 1 1 Получаем допустимое решение: сначала безальтернативные назначения 1 1 1 1 3. Транспортные модели. 3.4. Задача о назначениях Венгерский метод Работы 1 Работники 1 2 3 4 2 3 4 $0 $3 $0 $4 $2 $0 $0 $2 $1 $0 $3 $0 $1 $2 $2 $0 1 1 1 1 Полученное допустимое решение 1 1 1 1 4. Целочисленное линейное программирование. 4.1. Постановка задач. Целочисленное линейное программирование ориентировано на решение задач линейного программирования, в которых все или некоторые переменные должны принимать целочисленные (дискретные) значения. В настоящее время надежных вычислительных алгоритмов решения таких задач не существует. В качестве примеров вспомним две задачи, рассмотренные нами во введении. Первая задача – выбор оптимального способа подключения к сетям мобильной связи. 0. Введение. 0.2. Задача выбора операторов мобильной связи и тарифных планов. Предположим, что нам необходимо выбрать операторов мобильной связи и тарифные планы для организации персональной системы мобильной связи. Известны: среднемесячный объем разговоров с абонентами мобильных сетей Velcom, МТС, Belcel, республиканской телефонной сети, тарифные планы операторов, стоимость приемлемого мобильного телефона требуемый срок окупаемости его приобретения, максимальное количество телефонов, предельная сумма разовых вложений в приобретение телефонов. 0. Введение. 0.2. Задача выбора операторов мобильной связи и тарифных планов. Варьируемые параметры и целевая функция Варьируемые параметры: массив бинарных переменных xi , i=1,...,n. xi ={1,0}. Количество элементов массива n равно количеству существующих тарифных планов у всех операторов. Значение 1 означает приобретение телефона и подключение к соответствующему тарифному плану соответствующего оператора. Функция, описывающая критерий оптимальности (целевая функция) – суммарные затраты в месяц n F ( xi ) Ai xi i 1 здесь Ai – затраты в месяц на подключение по i-му тарифному плану 0. Введение. 0.2. Задача выбора операторов мобильной связи и тарифных планов. Структура месячных затрат (Velcom и МТС) Затраты в месяц по i-му тарифному плану для операторов Velcom и МТС определяются следующим образом: 4 Ai Tij Bi Pi ; j 1 здесь Tij =vjtij– стоимость j-го типа трафика объема vj, если он направлен на подключение по i-му тарифному плану (трафик направляется, если существует подключение по этому плану, т.е. xi=1, и тариф tij по этому плану наименьший из тарифов существующих подключений); Bi – ежемесячная абонентская плата по i-му плану; Pi = Si/d – ежемесячные отчисления за стоимость телефона Si для i-го подключения из расчета окупаемости за d месяцев. 0. Введение. 0.2. Задача выбора операторов мобильной связи и тарифных планов. Структура месячных затрат (Belcel) Затраты в месяц по i-му тарифному плану для оператора Belcel определяются следующим образом: Ai M i Pi , здесь Mi – ежемесячная оплата за разговоры определяется как 4 Mi T , j 1 ij 4 если Bi Tij , j 1 4 Bi , если Bi Tij . j 1 Tij - стоимость j-го трафика, если он направлен на подключение по iму тарифному плану; Bi – ежемесячная предоплата по i-му плану; Pi = Si/d – ежемесячные отчисления за стоимость телефона Si для i-го подключения из расчета окупаемости за d месяцев. 0. Введение. 0.2. Задача выбора операторов мобильной связи и тарифных планов. Ограничения Ограничения в нашем случае принимают следующий вид: n x i 1 i X где X – максимально приемлемое число телефонов n c x i i C i 1 здесь ci – стоимость приемлемого телефона для i-го подключения, C – предельная сумма разовых вложений в стоимость телефонов. 0. Введение. 0.2. Задача выбора операторов мобильной связи и тарифных планов. Математическая модель задачи Окончательно математическая модель задачи оптимального выбора операторов мобильной связи и тарифных планов выглядит следующим образом: n min F ( x1 , x2 ,..., xn ) Ai xi , xi 0,1; n x i 1 i X; c x i 1 i n x i 1 n i C. i 1 i 1; 0. Введение. 0.2. Задача выбора операторов мобильной связи и тарифных планов. Алгоритм и программная реализация Учитывая ограниченное число возможных вариантов оптимальное решение данной задачи может быть найдено путем полного перебора всех возможных вариантов Программная реализация метода была выполнена в среде пакета Microsoft Excel. Исходные данные заносятся в электронную таблицу, в ней же выполняется расчет целевой функции и функций, задающих ограничения. Перебор параметров выполняется с помощью небольшой программы, написанной на встроенном языке Microsoft Visual Basic. Ссылка на соответствующую книгу Excel размещена здесь. 1. Линейное программирование. 1.2. Графическое решение задачи ЛП Оптимизация структуры телекоммуникационных услуг Телекоммуникационная компания Spam Networks оказывает два основных вида услуг: подключение пользователей по коммутируемым каналам по безлимитному плану в Internet и хостинг веб-сайтов. Для организации доступа в Internet компания покупает асимметричный трафик: исходящий у оператора Fool Communications по цене 6 долларов за 1 Кбит/с, пропускная способность выделенной линии – до 2 Мбит/с входящий трафик через собственную приемную спутниковую тарелку по цене 0,8 доллара за 1 Кбит/с, максимальный объем – 2 Мбит/с Для предоставления услуги хостинга одного сайта необходимо зарезервировать 2 Кбит/с на передачу и 1 Кбит/с на прием. Месячный доход от услуги составляет 8 долларов. Для предоставления услуги доступа в Internet необходимо зарезервировать 4 Кбит/с на прием и 1 Кбит/с на передачу. Месячный доход от услуги составляет 6 долларов. 1. Линейное программирование. 1.2. Графическое решение задачи ЛП Оптимизация структуры телекоммуникационных услуг: формализация исходной проблемы Множество возможных альтернатив – различное число сопровождаемых веб-сайтов и количество подключаемых пользователей Internet Варьируемые параметры – число сопровождаемых сайтов x1 и число пользователей Internet x2. Хотя параметры являются целочисленными, эту задачу можно попытаться решить в вещественных числах и затем округлить решение до ближайших целых. Цель – получение максимального дохода: F(x1, x2)=8x1+6x2 Ограничения: общий объем входящего трафика меньше или равен предельно возможному, общий объем исходящего трафика меньше или равен пропускной способности канала, число подключаемых пользователей меньше или равно емкости портов х 12-15 – средний коэффициент использования. Число сопровождаемых сайтов и число пользователей неотрицательны. 1. Линейное программирование. 1.2. Графическое решение задачи ЛП Оптимизация структуры телекоммуникационных услуг: математическая модель max F(x1, x2); F(x1, x2) = 8x1+6x2; x1+4 x2 ≤ 2048; 2x1+ x2 ≤ 2048; x2 ≤ 480; x1 ≥ 0; x2 ≥ 0. Данная модель – классическая модель линейного программирования. Замечание: хотя мы и назвали задачу: «оптимизация структуры услуг…», это – типичная задача параметрической оптимизации. Рассмотрим графическое решение этой модели (модель решается в электронной таблице Excel: см. соответствующую книгу). 4. Целочисленное линейное программирование. 4.2. Классические методы решения. Классические методы решения задач линейного программирования основаны на использовании вычислительных возможностей методов решения непрерывных задач ЛП. Обычно алгоритмы целочисленного ЛП можно представить в виде трех основных шагов: «Ослабление» пространства допустимых значений путем отбрасывания требований целочисленности (для двоичных переменных – замена на непрерывные с ограничениями 0≤xi≤1); Решение задачи ЛП Имея полученное непрерывное оптимальное решение, добавляем специальные ограничения, которые итерационным путем изменяют пространство допустимых решений задачи ЛП таким образом, чтобы получилось оптимальное решение, удовлетворяющее условиям целочисленности. 4. Целочисленное линейное программирование. 4.2. Классические методы решения. Метод ветвей и границ. Рассмотрим следующую задачу ЛП: max F=5x1+4x2 при ограничениях 8 x1+x2≤5, 7 10x1+6x2 ≤45, x1 и x2 – целые. 6 Оптимальное решение: 5 3 x1=3,75 x2=1,25 2 F=23,75 4 1 1 2 3 4 5 6 4. Целочисленное линейное программирование. 4.2. Классические методы решения. Метод ветвей и границ. Рассмотрим две новые задачи: max F=5x1+4x2 1. при ограничениях 8 x1+x2≤5, 7 10x1+6x2 ≤45, 6 x1≤3, 2. при ограничениях 5 x1+x2≤5, 4 10x1+6x2 ≤45, 3 x1≥4, 2 x1 и x2 – целые. Оптимальное решение: x1=3 x2=2 F=23 1 1 2 3 4 5 6 4. Целочисленное линейное программирование. 4.2. Классические методы решения. Метод ветвей и границ. ЛП0: x1=3,75, x2=1,25, x1≤3 F=23,75 x1≥4 ЛП1: x1=3, x2=2, F=23 ЛП2: x1=4, x2=0,83 x2≥ 1 x2≤0 ЛП3: x1=4,5, x2=0 F=22,5 x1≤4 ЛП5: x1=4,5, x2=0 F=23,33 ЛП4: Нет решения x1≥5 F=22,5 ЛП6: Нет решения 4. Целочисленное линейное программирование. 4.2. Классические методы решения. Метод ветвей и границ. Алгоритм максимизации Положить нижнюю границу оптимального значения -∞. Положить i=1 Шаг 1. (Зондирование и определение границы). Выбираем i-ю подзадачу ЛПi для исследования. Решаем ЛПi и зондируем ее: Оптимальное значение целевой ф-ии задачи ЛПi не может улучшить текущей нижней границы. ЛПi приводит к лучшему допустимому целочисленному решению, чем текущая нижняя граница. ЛПi не имеет допустимых решений. Возможны два случая: Если задача ЛПi прозондирована: Если все подзадачи прозондированы, положить в качестве оптимального решение, соответствующее текущей нижней границе. Иначе, положить i=i+1 и повторить шаг 1 Если задача ЛПi не прозондирована, перейти к шагу 2. Шаг 2 (Ветвление) Выбираем одну из целочисленных переменных, оптимальное значение которой в решении задачи ЛПi не является целым. Исключаем из пространства допустимых решений область, лежащую между двумя ближайшими к оптимальному значению целыми числами путем формирования двух новых подзадач ЛП с дополнительными оограничениями на данную переменную. Положить i=i+1. Перейти к шагу 1. 4. Целочисленное линейное программирование. 4.3. Генетические алгоритмы. Представим себе искусственный мир, населенный множеством существ (особей), причем каждое существо — это некоторое решение нашей задачи. Будем считать особь тем более приспособленной, чем лучше соответствующее решение (чем большее значение целевой функции оно дает). Тогда задача максимизации целевой функции сводится к поиску наиболее приспособленного существа. Будем рассматривать много поколений, сменяющих друг друга. Если ввести в действие естественный отбор и генетическое наследование то полученный мир будет подчиняться законам эволюции. В соответствии с нашим определением приспособленности, целью этой искусственной эволюции будет как раз создание наилучших решений. Принудительно остановив этот процесс через достаточно долгое время после его начала и выбрав наиболее приспособленную особь в текущем поколении, мы получим не абсолютно точный, но близкий к оптимальному ответ. Для того чтобы говорить о генетическом наследовании, нужно снабдить наши существа хромосомами. В генетическом алгоритме хромосома — это некоторый числовой вектор, соответствующий изменяемым параметрам задачи, а набор хромосом данной особи определяет решение задачи. Какие именно векторы следует рассматривать в конкретной задаче, решает пользователь. Каждая из позиций вектора хромосомы называется геном. 4. Целочисленное линейное программирование. 4.3. Генетические алгоритмы. Определим теперь понятия, соответствующие мутации и кроссинговеру в генетическом алгоритме: Мутация — это преобразование хромосомы, случайно изменяющее одну или несколько ее позиций (генов). Наиболее распространенный вид мутаций — случайное изменение только одного из генов хромосомы. Кроссовер (cross-over, в литературе по генетическим алгоритмам также употребляется название кроссинговер или скрещивание) — это операция, при которой из двух хромосом порождается одна или несколько новых хромосом. В простейшем случае кроссовер в генетическом алгоритме реализуется так же, как и в биологии. При этом хромосомы разрезаются в случайной точке и обмениваются частями между собой. Например, если хромосомы (1, 2, 3, 4, 5) и (0, 0, 0, 0, 0) разрезать между третьим и четвертым генами и обменять их части, то получатся потомки (1, 2, 3, 0, 0) и (0, 0, 0, 4, 5). 4. Целочисленное линейное программирование. 4.3. Генетические алгоритмы. Общая схема 1. Генерируется начальная популяция особей (индивидуумов), т. е. некоторый набор решений задачи. Как правило, это делается случайным образом. 2. Моделируется размножение внутри этой популяции: рассчитываются вероятности участия индивидуумов в скрещивании: чем приспособленнее индивидуум, то есть чем больше (меньше) соответствующее ему значение целевой функции, тем с большей вероятностью он будет участвовать в скрещивании, с учетом рассчитанных вероятностей случайно составляется несколько пар индивидуумов, производится скрещивание между хромосомами в каждой паре, полученные новые хромосомы помещаются в популяцию нового поколения. 3. Моделируются мутации — в нескольких случайно выбранных особях нового поколения изменяются некоторые гены. 4. Старая популяция частично или полностью уничтожается и переходим к рассмотрению следующего поколения – к шагу 2. 4. Целочисленное линейное программирование. 4.3. Генетические алгоритмы. Общая схема 4. Целочисленное линейное программирование. 4.3. Генетические алгоритмы. Общая схема Популяция следующего поколения в большинстве реализаций генетических алгоритмов содержит столько же особей, сколько начальная, но в силу отбора приспособленность в ней в среднем выше. Описанные процессы отбора, скрещивания и мутации повторяются уже для этой популяции и т. д. В каждом следующем поколении мы будем наблюдать возникновение совершенно новых решений нашей задачи. Среди них будут как плохие, так и хорошие, но благодаря отбору число хороших решений будет возрастать. В природе не бывает абсолютных гарантий, и даже самый приспособленный тигр может погибнуть от ружейного выстрела, не оставив потомства. Имитируя эволюцию, мы можем избегать подобных нежелательных событий и всегда сохранять жизнь лучшему из индивидуумов текущего поколения — такая методика называется “стратегией элитизма”. 4. Целочисленное линейное программирование. 4.3. Генетические алгоритмы. Пример Рассмотрим диофантово (только целые решения) уравнение: a+2b+3c+4d=30, где a, b, c и d - некоторые положительные целые. Применение ГА за очень короткое время находит искомое решение (a, b, c, d). Сведем ее к задаче ИО (самостоятельно). Выберем 5 случайных решений: 1 =< a,b,c,d =< 30. Вообще говоря, мы можем использовать меньшее ограничение для b,c,d, но для упрощения пусть будет 30. Хромосома (a,b,c,d) 1 (1,28,15,3) 2 (14,9,2,4) 3 (13,5,7,3) 4 (23,8,16,19) 5 (9,13,5,2) 4. Целочисленное линейное программирование. 4.3. Генетические алгоритмы. Пример Чтобы вычислить коэффициенты выживаемости (fitness), подставим каждое решение в выражение a+2b+3c+4d. Расстояние от полученного значения до 30 и будет нужным значением. Хромосома Коэффициент выживаемости 1 |114-30|=84 2 |54-30|=24 3 |56-30|=26 4 |163-30|=133 5 |58-30|=28 Так как меньшие значения ближе к 30, то они более желательны. Чтобы создать систему, где хромосомы с более подходящими значениями имеют большие шансы оказаться родителями, мы должны вычислить, с какой вероятностью (в %) может быть выбрана каждая. Например, можно вычислить сумму обратных значений коэффициентов, и исходя из этого вычислять вероятности Хромосома Подходящесть 1 (1/84)/0.135266 = 8.80% 2 (1/24)/0.135266 = 30.8% 3 (1/26)/0.135266 = 28.4% 4 (1/133)/0.135266 = 5.56% 5 (1/28)/0.135266 = 26.4% 4. Целочисленное линейное программирование. 4.3. Генетические алгоритмы. Пример Далее симулируется выбор родителей. Хромосома отца Хромосома матери 3 1 5 2 3 5 2 5 5 3 Каждый потомок содержит информацию о генах и отца и от матери. Вообще говоря, это можно обеспечить различными способами, однако в нашем случае можно использовать одноточечный кроссовер. Пусть мать содержит следующий набор решений: a1,b1,c1,d1, а отец - a2,b2,c2,d2, тогда возможно 6 различных кроссоверов (| = разделительная линия): Хромосома-отец Хромосома-мать Хромосома-потомок a1 | b1,c1,d1 a2 | b2,c2,d2 a1,b2,c2,d2 or a2,b1,c1,d1 a1,b1 | c1,d1 a2,b2 | c2,d2 a1,b1,c2,d2 or a2,b2,c1,d1 a1,b1,c1 | d1 a2,b2,c2 | d2 a1,b1,c1,d2 or a2,b2,c2,d1 4. Целочисленное линейное программирование. 4.3. Генетические алгоритмы. Пример Попробуем проделать это с нашими потомками Хромосома-отец Хромосома-мать Хромосома-потомок (13 | 5,7,3) (1 | 28,15,3) (13,28,15,3) (9,13 | 5,2) (14,9 | 2,4) (9,13,2,4) (13,5,7 | 3) (9,13,5 | 2) (13,5,7,2) (14 | 9,2,4) (9 | 13,5,2) (14,13,5,2) (13,5 | 7, 3) (9,13 | 5, 2) (13,5,5,2) Теперь мы можем вычислить коэффициенты выживаемости (fitness) потомков. Хромосома-потомок Коэффициент выживаемости (13,28,15,3) |126-30|=96 (9,13,2,4) |57-30|=27 (13,5,7,2) |57-30|=22 (14,13,5,2) |63-30|=33 (13,5,5,2) |46-30|=16 Средняя приспособленность (fitness) потомков оказалась 38.8, в то время как у родителей этот коэффициент равнялся 59.4. Следующее поколение может мутировать. Например, мы можем заменить одно из значений какой-нибудь хромосомы на случайное целое от 1 до 30.