Исследование операций Воротницкий Ю.И.

advertisement
Воротницкий Ю.И.
Исследование операций
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 , jA )
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.
Download