www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал «Системный администратор»
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Авторам
Рекламодателям
О НАС
   

  Опросы
  Статьи

Мониторинг  

Какая задача мониторинга отнимает больше всего времени?

Многие системные администраторы тратят до 30% рабочего времени на рутину мониторинга. Но

 Читать далее...

Рынок труда  

Какие навыки вы хотите развивать в 2026 году?

Рынок труда меняется быстро. Еще вчера его называли рынком соискателей, а сегодня

 Читать далее...

Книжная полка  

От сисадмина до архитектора: книги, которые прокачают ваш стек в этом году

Новинки от издательства «БХВ» отличаются тем, что в них часто делается упор

 Читать далее...

Автоматизация  

Автоматизируем рутину: что реально работает?

Многие сисадмины автоматизировали что-то за последний год. Но далеко не все остались

 Читать далее...

Защита ИТ-системы  

Практическая защита: что вы внедрили и что мешает?

Какие меры безопасности реально внедрить в реальных условиях – и что не

 Читать далее...

Вопрос-ответ  

Обеспечиваем безопасную эксплуатацию базы данных

Что для вас чаще всего является причиной инцидентов с БД? Как вы

 Читать далее...

Книжная полка  

От «безопасного» Linux до Контролируемого взлома

Издательство «БХВ» продолжает радовать читателей интересными новинками и в наступившем году. Вы можете

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 14557
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 14684
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 12152
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 6386
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 7222
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 7129
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 9929
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 6567
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 6774
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 10955
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 14458
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 15871
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 18521
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 13371
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 11358
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 9587
Комментарии: 4
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 7815
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 6675
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 6235
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 6614
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

 Читать далее...

Друзья сайта  

 Исследование комбинированного решения трехиндексной задачи о назначениях

Архив номеров / 2019 / Выпуск №04 (197) / Исследование комбинированного решения трехиндексной задачи о назначениях

Рубрика: Наука и технологии

Без фото АФРАЙМОВИЧ Л.Г., ННГУ им. Н. И. Лобачевского, Институт Информационных Технологий, Математики и Механики, кафедра «Информатики и автоматизации научных исследований»

Без фото ТЮНТЯЕВ А.С., ННГУ им. Н. И. Лобачевского, Институт Информационных Технологий, Математики и Механики, кафедра «Информатики и автоматизации научных исследований»

Без фото ТЮНТЯЕВА Л.А., ННГУ им. Н. И. Лобачевского, Институт Информационных Технологий, Математики и Механики, кафедра «Информатики и автоматизации научных исследований»

Исследование комбинированного
решения трехиндексной задачи о назначениях

Трехиндексная аксиальная задача о назначениях, подробно рассматриваемая в данной статье, является частным случаем многоиндексных задач о назначениях и имеет широкий спектр приложений, что говорит об ее актуальности. В статье изложено исследование задачи, в ходе которого: реализован алгоритм метода ветвей и границ с разными стратегиями ветвления и возможностью выбора алгоритма подсчета нижних оценок; проведен вычислительный эксперимент с решением задач разных размерностей; проведен анализ полученных результатов. Цель исследования – поиск наилучшей (с точки зрения затраченного времени) комбинации параметров алгоритма (стратегий ветвления, выбора алгоритма подсчета нижних оценок) для решения поставленной задачи

Введение

Многоиндексные задачи о назначениях (подкласс широкого класса прикладных задач, формализуемых в виде многоиндексных задач (целочисленного) линейного программирования транспортного типа) возникают:

  • в теории расписаний:
    • при планировании изготовления скоропортящейся продукции,
    • при планировании прохождения практики студентами,
    • при планировании учебы клинических ординаторов по отделениям,
    • при составлении расписания занятий,
    • при планировании спортивных матчей [1, 4],
  • в области технического анализа данных:
    • при сопровождении объектов в многосенсорных системах [1, 6],
  • в военной области:
    • при назначении военной техники на цели [1, 7].

Класс многоиндексных задач о назначениях, начиная с трехиндексных, является NP (non-deterministic polynomial) – трудным, то есть на данный момент не известны эффективные алгоритмы для их решения.

Трехиндексная аксиальная задача о назначениях (далее просто задача), подробно рассматриваемая в данной статье, является частным случаем многоиндексных задач о назначениях и имеет широкий спектр приложений [1-4, 8, 9], что говорит об ее актуальности.

В статье изложено исследование задачи, в ходе которого:

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

Цель исследования – поиск наилучшей (с точки зрения затраченного времени) комбинации параметров алгоритма (стратегий ветвления, выбора алгоритма подсчета нижних оценок) для решения поставленной задачи.

В первом разделе представлены формальное описание и математическая модель задачи.

Второй раздел посвящен описанию алгоритмов, реализованных для решения задачи.

В третьем разделе представлены результаты вычислительного эксперимента и сделаны выводы относительно работы реализованного алгоритма.

Формальная постановка задачи

Есть исполнители, работы и орудия труда, которыми исполнители могут пользоваться при исполнении работ. Заданы зарплаты от назначения исполнителей на работы при использовании того или иного орудия труда. Надо так назначить исполнителей на работы, чтобы:

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

Критерии и ограничения математической модели задачи представлены ниже:

(1)

(1’)

(2)

(3)

(4)

(5)

где I=J=K={1,2,…n} – множества работников, работ и орудий труда соответственно.

Критерий задачи (1’) записан с декомпозиционной матрицей стоимостей, где:

  • cijk=m1ij+m2jk+m3ik;
  • C=||cijk||(n×n×n) – трехиндексная матрица зарплат порядка n;
  • M1=||m1ij||(n×n×n) – матрица стоимости выполнения i-м работником j-й работы, ∀iI, ∀jJ;
  • M2=||m2jk||(n×n×n) – матрица стоимости выполнения j-й работы k-м орудием труда ∀jJ, ∀kK;
  • M3=||m3ik||(n×n×n) – матрица стоимости пользования i-го исполнителя k-м орудием труда, ∀iI, ∀kK.

Далее будет рассматриваться задача с математической моделью (1’) – (5), так как архитектура построенного алгоритма работает только для задач такого вида, задача также является NP – трудной [5].

Алгоритм решения задачи

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

Элемент разбиения представляет собой последовательное назначение ik→jk, ∀k∈K на k-м шаге ветвления. Для каждого элемента разбиения вычисляется верхняя и нижняя оценки. Также на каждом шаге элементы разбиения подвергаются процедуре отсева. Процедура отсева происходит следующим образом:

Если нижняя оценка p-го элемента разбиения (Hp,p∈{1,…n}), найденная на k-м шаге ветвления (k=(1,n)) не меньше, чем верхняя оценка s-го элемента разбиения на том же шаге ветвления (Bs,p∈{1,…n}), то ветка (подмножество решений исходной задачи), содержащая s-й элемент разбиения, отсекается (исключается из дальнейшего рассмотрения для поиска решения).

Формальное описание условия процедуры отсева:

Hp≥Bs, p,s=(1,n)

Глобальный оптимум задачи ищется на листьях, у которых известны все назначения i→j симплекс-методом. Каждый такой лист содержит n! допустимых решений, оптимум среди которых можно найти за полиномиальное время за счет сведения задачи к двухиндексной задаче о назначениях.

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

Описание стратегий ветвления, использованных в алгоритме метода ветвей и границ:

  • Ветвление в глубину (Length) – при использовании данной стратегии на k-м шаге ветвления выбирается такой элемент разбиения, количество назначений ik→jk которого наибольшее (k=(1,n));
  • Ветвление в ширину (Width) – при использовании данной стратегии на k-м шаге ветвления выбирается такой элемент разбиения, количество назначений ik→jk которого наименьшее (k=(1,n));
  • Ветвление по минимальной верхней оценке (EffectiveHB) – при использовании данной стратегии на k-м шаге ветвления выбирается такой элемент разбиения s, верхняя оценка которого наименьшая по сравнению с верхними оценками элементов разбиения, полученных до k-го шага включительно (Вs=minВk, где Вk – множество верхних оценок элементов разбиения, известных на k-м шаге алгоритма (k=(1,n));
  • Ветвление по минимальной нижней оценке (LowMax-Branch) – при использовании данной стратегии на k-м шаге ветвления выбирается такой элемент разбиения s, нижняя оценка которого наименьшая по сравнению с нижними оценками элементов разбиения, полученных до k-го шага включительно (Hs=minHk, где Hk – множество нижних оценок элементов разбиения, известных на k-м шаге алгоритма (k=(1,n));
  • Ветвление по гибридной оценке (Gybrid) – при использовании данной стратегии на k-м шаге ветвления выбирается такой элемент разбиения s, отношение нижней оценки которого к верхней не менее 0,9 (Hs/Bs≥0,9). При этом на нижнюю оценку выбранного s-го элемента разбиения накладывается дополнительное условие: она должна отличаться от минимальной нижней оценки из множества, (Hk – множество нижних оценок элементов разбиения, известных на k-м шаге алгоритма (k=(1,n)) не более, чем на 10%. (Нижние оценки, удовлетворяющие данному условию, будем называть «хорошими»). Если нет элемента разбиения, удовлетворяющего данным условиям, то берется элемент с наименьшим количеством назначений ik→jk (k=(1,n));
  • Ветвление по разностной оценке (Substraction) – при использовании данной стратегии на k-м шаге ветвления выбирается такой элемент разбиения s, разность между верхней и нижней оценкой которого минимальна (Bs–Hs→min);
  • Ветвление по соотношению оценок (Ratio) – при использовании данной стратегии на k-м шаге ветвления выбирается такой элемент разбиения s, отношение нижней оценки которого к верхней максимально. (Hs/Bs→max). При этом на нижнюю и верхнюю оценки выбранного s-го элемента разбиения накладываются следующие дополнительные условия: они должны соответственно отличаться от минимальной нижней и верхней оценки из множеств HkBk (где HkBk – множество нижних и верхних оценок элементов разбиения, известных на k-м шаге алгоритма (k=(1,n)) не более, чем на 30%. Если нет элемента разбиения, удовлетворяющего всем данным условиям, то берется элемент с наименьшим количеством назначений ik→jk (k=(1,n)).

При подсчете верхней оценки листа используется жадный алгоритм (для каждого элемента ∀i∈I выбираются допустимые элементы ∀j∈J и ∀k∈K, при которых стоимость назначения минимальна).

Подсчитать нижнюю оценку листа, при реализации используемого алгоритма, можно двумя способами:

  • Симплекс метод. Идея метода – избавиться от целочисленности и изменить (5) ограничение задачи на ограничение вида:

(6)

  • Потоковый алгоритм (алгоритм поиска потока минимальной стоимости с двусторонними пропускными способностями). Данный алгоритм находит оптимальное решение трех двухиндексных задач о назначениях, которые получаются при декомпозиции исходной трехиндексной матрицы с учетом уже известных (полученных ранее) назначений i→j элемента разбиения. Оптимально назначаются исполнители на работы, оптимально выбираются орудия труда для работ и оптимально выбираются орудия труда для исполнителей. Далее, подсчитывается общая суммарная стоимость от решения всех трех двухиндексных задач, которая и представляет собой нижнюю оценку для вершины.

Вычислительный эксперимент

Для решения задач данного класса описанным алгоритмом было написано программное приложение в интегрированной среде разработки Visual Studio Professional 2017 (Windows Forms, язык программирования C#).

Вычисления проводились на вычислительной технике фирмы ASUS. Процессор: Intel® Core ™ i5 – 3230M CPU @ 2.60GHz. Тип системы: 64 – разрядная операционная система, процессор х64, операционная система: Windows 8.

На рис. 1 представлено диалоговое окно приложения, в котором выбираются параметры для решения задач. В реализации алгоритма предусмотрены выбор параллельного или последовательного подсчета верхних и нижних оценок для «потомков» вершины, а также последовательный или же параллельный запуск стратегий ветвления. Приложение позволяет генерировать задачи случайным образом или решать предложенные задачи.

Рисунок 1. Диалоговое окно приложения, в котором выбираются параметры для решения задач

Рисунок 1. Диалоговое окно приложения, в котором выбираются параметры для решения задач

В ходе вычислительного эксперимента тестировались задачи размерностей (n) равных:

  • 6 (2 задачи),
  • 10 (2 задачи),
  • 15 (2 задачи),
  • 33 (задача с известным оптимумом и решением [10]).

Цели вычислительного эксперимента:

  • путем вычисления задач с известными оптимальными решениями убедиться, что реализованный алгоритм работает верно;
  • найти наилучшую, с точки зрения затраченного времени, комбинацию параметров алгоритма (стратегии ветвления, выбор алгоритма подсчета нижних оценок) для решения этого класса задач.

Стратегия подсчета нижней оценки для каждого листа выбиралась таким образом:

если у вершины «родителя» соотношение