Вы находитесь на странице: 1из 30

Курсовая работа

Задача о P-медиане
О. В. Позднякова
МГТУ им. Н.Э. Баумана
10 апреля 2021
Содержание

1. Постановка задачи
2. Алгоритмы решения задачи о
P-медиане
a. Алгоритм муравьиной
колонии
b. Метод ветвей и границ
c. Аддитивный алгоритм
3. Вычислительный
эксперимент
4. Заключение
5. Список литературы
Постановка задачи
Формулировка задачи

Дано: 𝐴 = {1,...,𝑛} и 𝐵 = {1,...,𝑚}, где 𝐴 – множество пунктов размещения коммутатора


телефонной сети, а 𝐵 – множество клиентов, использующих продукт. 𝐶𝑖𝑗 , 𝑖 ∈ 𝐴, 𝑗 ∈ 𝐵, где
𝐶𝑖𝑗 – затраты на кабель от 𝑖-го пункта до 𝑗-го клиента.

Задача: выбрать не более 𝑃 пунктов, в которых будет размещен коммутатор, чтобы


минимизировать затраты на кабель.

, (точка используется)
𝑧𝑖 =
, (точка не используется)

при
Пример задачи
пункты
Р=3
школы
Пример задачи
пункты
школы
Алгоритмы решения задачи
о Р-медиане

Алгоритм муравьиной колонии


Описание алгоритма

1. Первый муравей выходит из 𝑁 и


находит еду в 𝐹 любым из четырех
возможных способов и оставляет за
собой след из феромонов 𝑏

2. Каждый муравей также выбирает


любой из четырех путей 𝑎, отдавая
предпочтения тем, где сохранились
феромоны.

3. Практически все муравьи выбирают


наикратчайший маршрут, так как на
более длинных феромоны испаряются
быстрее.
Описание конкретного алгоритма для исследуемой задачи
МК:
Описание конкретного алгоритма для исследуемой задачи
ИМ:
● ∆𝑓𝑖 – изменение целевой функции при закрытии пункта 𝑖
● 𝐼′ – множество открытых пунктов

1. 𝐼′ = 𝐼.
2. Пока 𝐼′ != 𝑃, иначе конец.
3. Формируем 𝑊(𝜆).
4. С вероятностью 𝑝𝑖 выбираем пункт 𝑖0 ∈ 𝑊 (𝜆).
5. 𝐼’ = 𝐼\{𝑖0}.
Алгоритмы решения задачи
о Р-медиане

Метод ветвей и границ


Описание алгоритма

В основе метода ветвей и


границ заложена идея
последовательного разбиения
множества допустимых решений.

На каждом шаге мы
отбрасываем часть решений,
оставляя те, что содержат
наилучшее. Проверка
осуществляется вычислением зна-
чения целевой функции.
Графическое представление путей

Нам нужно построить дерево решений для задачи:


Графическое представление путей

Множество {𝑧1 = 0} делится на {𝑧2 = 0} и {𝑧2 = 1}.


Множество {𝑧1 = 0, 𝑧2 = 0} является одноэлементным в
силу ограничения задачи (𝑧1 +𝑧2 +𝑧3 +𝑧4 = 2)
Аналогичным путем получаем все возможные
множества:

{𝑧1 = 0, 𝑧2 = 0, 𝑧3 = 1, 𝑧4 = 1}, {𝑧1 = 0, 𝑧2 = 1, 𝑧3 = 0, 𝑧4 = 1},

{𝑧1 = 0, 𝑧2 = 1, 𝑧3 = 1, 𝑧4 = 0}, {𝑧1 = 1, 𝑧2 = 1, 𝑧3 = 0, 𝑧4 = 0},

{𝑧1 = 1, 𝑧2 = 0, 𝑧3 = 0, 𝑧4 = 1}, {𝑧1 = 1, 𝑧2 = 0, 𝑧3 = 1, 𝑧4 = 0}.


Описание конкретного алгоритма для исследуемой задачи
● 𝑑 = {𝑑1, 𝑑2, … , 𝑑𝑛} ⊆ 𝐷 – ветвление, подмножество 𝐷
● 𝑑𝑖 = {𝑧𝑖1, 𝑧𝑖2, ..., 𝑧𝑖𝑚}
● 𝐻(𝑑) – вещественная функция
● h𝑚𝑖𝑛 – минимум данной функции, возможно не достижимый
● 𝑚 – глубина дерева
● 𝑅𝑛𝑜𝑤 – текущее минимальное значение
● 𝑅 – рекорд
1. Рассчитываем h𝑚𝑖𝑛 = 𝐻(𝑑).
2. Задаем 𝑅 = ∞.
3. Строим дерево решений.
4. Поочередно рассматриваем все 𝑑𝑖 ∈ 𝑑.
5. Для каждого ответвления заводим переменную 𝑅𝑛𝑜𝑤 = 0 отвечающую за текущий рекорд ветви.
6. Для каждого 𝑑𝑖 = {𝑧𝑖1, 𝑧𝑖2, ..., 𝑧𝑖𝑚} поочередно прибавляем минимальное значение
соответствующего 𝑧𝑖𝑗 вектора и сравниваем 𝑅𝑛𝑜𝑤 с 𝑅 и h𝑚𝑖𝑛, при условии, что 𝑅 != ∞.
7. В случае 𝑅𝑛𝑜𝑤 = h𝑚𝑖𝑛 заканчиваем работу алгоритма и выводим ответ или запоминаем
решение.
В случае 𝑅𝑛𝑜𝑤 > 𝑅 переходим к следующему решению.
В случае 𝑅𝑛𝑜𝑤 = 𝑅 запоминаем или пропускаем решение.
Алгоритмы решения задачи
о Р-медиане

Аддитивный алгоритм
Описание алгоритма

Аддитивный алгоритм является методом неявного перебора. Основная идея


данного алгоритма состоит в построении последовательности частичных планов и в
исключении некоторых подмножеств их дополнений.

В основе алгоритма заложена идея последовательного разбиения множества


допустимых решений и отбрасывании части решений без вычислений.

Такое исключение проводится в тех случаях, когда любая из этих частей дает
значение не лучшее, чем ранее достигнутое.
Пример

Задача: выбрать 𝑃 = 2 пункта, в которых будут размещены точки приема


макулатуры, чтобы школьникам пришлось меньше ходить.
Пример
Описание конкретного алгоритма для исследуемой задачи

● 𝑑 = {𝑑1, 𝑑2, … , 𝑑𝑛} ⊆ 𝐷 – ветвление, подмножество 𝐷


● h𝑚𝑖𝑛 – минимум данной функции, возможно не достижимый
● 𝑚 – глубина дерева
● 𝑅𝑛𝑜𝑤 – текущее минимальное значение
● 𝑅 – рекорд

1. Задаем 𝑅 = ∞.
2. Строим дерево решений.
3. Поочередно рассматриваем все 𝑑𝑖 ∈ 𝑑.
4. Для каждого ответвления заводим переменную 𝑅𝑛𝑜𝑤 = 0
5. Для каждого 𝑑𝑖 = {𝑧𝑖1, 𝑧𝑖2, ..., 𝑧𝑖𝑚} поочередно прибавляем минимальное значение
соответствующего 𝑧𝑖𝑗 вектора и сравниваем 𝑅𝑛𝑜𝑤 с 𝑅.
6. В случае 𝑅𝑛𝑜𝑤 > 𝑅 переходим к следующему решению.
В случае 𝑅𝑛𝑜𝑤 < 𝑅 запоминаем решение и присваиваем 𝑅 = 𝑅𝑛𝑜𝑤.
В случае 𝑅𝑛𝑜𝑤 = 𝑅 запоминаем или пропускаем решение (в зависимости от поставленной
задачи).
Вычислительный эксперимент
Описание эксперимента

❏ Было сгенерировано по 5 матриц размерности от 10 × 10 до 100 × 100 с


шагом 10, заполненных с помощью равномерного распределения от 1 до
1000.
❏ Для каждого алгоритма получено решение, точность и замерено время его
вычислений.
❏ Точные методы имели ограничение по времени в 1500 секунд. Если
алгоритм не находил решение за это время, то возвращал найденное
минимальное значение.
❏ Все алгоритмы были реализованы на языке Python 3.7.9
❏ Использовался компьютер с процессором 1,6 ГГц Dual-Core Intel Core i5 и
оперативной памятью 8 ГБ 2133 МГц LPDDR3
Результаты эксперимента
Результаты эксперимента
Результаты эксперимента
Результаты эксперимента

Алгоритм муравьиной колонии

1 2 3 4 5 6 7 8 9 10

ошибка 0,000 0,000 0,000 0,000 0,003 0,004 0,004 0,005 0,012 0,027

время 0,17 0,31 1,7 11,4 23,8 52,9 71,8 100,9 123,2 167,5
Результаты эксперимента

Метод ветвей и границ

1 2 3 4 5 6 7 8 9 10

время 0,47 12,20 30,43 120,73 395,28 823,73 1172,05 1413,02 - -

Аддитивный алгоритм

1 2 3 4 5 6 7 8 9 10

время 0,50 14,71 62,83 375,28 706,67 1202,42 1496,44 - - -


Заключение
❏ В ходе курсовой работы были реализованы алгоритм муравьиной колонии,
метод ветвей и границ и аддитивный алгоритм. Все методы были
проанализированы, для каждого из них были настроены параметры.

❏ Алгоритм муравьиной колонии имеет скорость исполнения на порядок


выше, чем другие рассмотренные алгоритмы, и позволяет получить точное
решение для матриц с размерностями меньше 50 × 50. На матрицах,
размерность которых не превышает 100 × 100, алгоритм обладает высокой
точностью и позволяет получить решение с небольшим значением
относительной ошибки.

❏ При решении матриц размерностями больше чем 100 × 100


целесообразно использовать распараллеливание некоторых циклов
внутри аддитивного алгоритма или метода ветвей и границ с целью
ускорить вычисления, не пренебрегая точностью.
Список литературы

Вам также может понравиться