Алгоритм для календарного планирования

ВестникКрасГАУ. 2015. № 4

УДК 519.6 Л.А. Казаковцев, А.Н. Антамошкин

АЛГОРИТМ ДЛЯ КАЛЕНДАРНОГО ПЛАНИРОВАНИЯ

Задача расчета оптимальной загрузки производственных линий с непрерывным производственым циклом (например, литейно-прокатное производство), согласно заданному плану выпуска продукции, представлена в виде задачи размещения на сети. Для решения задачи применен генетический алгоритм с жадной эвристикой на основе аналогичного алгоритма для p-медианной задачи.

Ключевые слова: генетический алгоритм, дискретная задача размещения, оперативное календарное планирование, p-медианная задача.

L.A. Kazakovtsev, A.N. Antamoshkin ALGORITHM FOR CAPACITY SCHEDULING

A problem of optimal capacity planning of the production lines with a continuous manufacturing cycle (foundry for example) in accordance with a given product launch plan is considered as a discrete location problem on a network. For solving the problem, we use genetic algorithm with greedy heuristics based on an analogous algorithm for the p-median problem.

Key words: genetic algorithm, discrete location problem, operations scheduling, p-median problem.

Введение. Одной из основ эффективной работы предприятия является процедура календарного планирования производства, включая расчет производственного расписания [1]. Рассмотрим следующую задачу [2, 3]. Пусть имеется К производственных линий для выпуска I видов продукции. Производительность всех производственных линий одинакова, для 1-го вида продукции линия может произвести единиц продукции за смену при трех сменах в сутки. Требуется построить график с указанием вида продукции для производственной линии. Вводится матрица I булевых констант гк1,к = 1,К,1 = 1,1, равных 1, если к-я линия может производить 1-й вид продукции, и 0 - в противном случае. Для каждого вида продукции установлен производственный план в объеме Шг единиц (I = 1,1), который должен быть выполнен за Т суток. Кроме того, установлена минимальная суммарная загруженность производственного комплекса в сутки в объеме единиц продукции. При смене вида продукции могут требоваться некоторые технологические операции продолжительностью в одну смену, в ходе которых выпуск продукции линией невозможен. Возможность безостановочной смены продукции с вида I на вид г описывается симметричной матрицей булевых констант С1г размерности 1x1: значение С1г = 1 означает необходимость останова производственной линии при смене продукции с 1-го вида на г-й вид, С1/г = 0 - возможность безостановочного переключения производства. График на I суток требуется составить так, чтобы при условии выполнения плана выпуска по видам продукции и срокам, с учетом требования минимальной загруженности, требовалось минимальное число изменений видов продукции.

В р-медианной задаче на сети [4, 5] требуется найти p узлов сети, таких, чтобы сумма взвешенных расстояний от каждого из узлов сети до ближайшего из выбранных узлов была минимальной (каждому из ребер поставлено в соответствие число - его длина). В общем случае задача NP - трудная. Генетический алгоритм с жадной эвристикой [5, 6] - эффективное средство ее решения. В настоящей работе задача составления графика загрузки производственных мощностей формулируется как задача размещения на сети. Вычислительные эксперименты показывают высокую эффективность такого подхода по сравнению с существующими методами [2].

1. Математическая постановка задачи

Приведем постановку р-медианной задачи [4]. На некоторой сети (связном графе) д = (V, £), где V -множество узлов (вершин), а £ - множество попарно соединяющих их ребер Е^, Ь,] е V, каждому из которых поставлено в соответствие число - его длина , определена метрика расстояния й (Ь,]) между любой парой узлов Ь и ] как минимальная длина пути между этими узлами (длина пути - сумма длин входящих в него ребер). Цель состоит в выборе множества узлов сети (вершин графа) 5 заданной мощности р

arg min

Представим производственный график в виде трехмерной решетки в дискетной системе координат с осями i,/c,Z (время, производственные линиии, виды продукции). Каждый узел такой сети-решетки будем описывать тройкой его координат ( ¿, //1). Решению нашей задачи поставим в соответствие некоторое подмножество х узлов нашей сети-решетки, задающих моменты переключения видов продукции на нашем графике. Задача состоит в выборе минимального по мощности множества х узлов сети, удовлетворяющего заданным ограничениям.

Введем целочисленные переменные y'ifc. Значение y'jfc = i будет означать выпуск I-го вида продукции на //-й линии в ¿-е сутки (значение y'ik = 0 - отсутствие выпуска). Пусть у' ofc, / = 1 ,К -целочисленные константы, имеющие значения от до , показывающие, на какой вид продукции настроена каждая из К линий в начальный момент времени. Для удобства описания введем дополнительные зависимые переменные

, (У i,k' У У (i-l),k' Т~-7 1 У i,k У i-l,k'

Значения могут быть получены из

УиЧ^' TU « = =

I xi,k' xi,k ^ и

и вспомогательные булевы переменные

а, у\k = i, _ _ _

У,к, i = 1n V1' =t/ Vi = 1 ,/,к = = 1

lu' У i,k ^

Множества % выбранных определяют значения переменных

[I, (i, k, I) б х.

_а, (i,к, х и ' к {о , ( i ,к ,

Операция включения узла ( ¿, //, Z ) в множество j, таким образом, сводится с присвоению переменной х' j, к значения Z, исключения - к присвоению значения 0.

Ограничения задачи сформулируем следующим образом:

/г

/з

Здесь C' г,г - матрица Cir, дополненная нулевыми строкой и столбцом

(Cl r, I > 0, г > О, C ' г , r = j0 ,' г = 0 ,

11, i = 0, г > 0;

У' - вектор норм производства У, дополненный нулевым элементом Vo=0. Определим также целевую функцию / (j) = |j|.

Вестник^КрасТЯУ. 2015. № 4

Экономический смысл функции f2(j) - общее количество продукции, выпускаемой с отставанием от плана, функции f3(j) - суммарное недовыполнение суточного минимума выпускаемой продукции. Определим также единую штрафную функцию: f4 (j) = f2 (j) + f3 (j).

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

Идея генетического алгоритма с жадной эвристикой для р-медианной задачи на сети [5] состоит в следующем. Имеется некоторый массив ("популяция") решений задачи, каждое из которых представляет собой множество из р выбранных узлов сети. Случайным образом выбираются два решения (родительские "особи"). В качестве промежуточного решения принимается множество узлов, являющееся объединением выбранных "родительских" множеств, из которого по одному исключаются те узлы, удаление которых дает наименьший прирост целевой функции (1), пока не останется р узлов.

Наша задача, в отличие от р-медианной, - задача условной оптимизации. Задачу поиска решений, удовлетворяющих условиям (2) и (3), можно рассматривать как задачу минимизации функции fA(j). Характер генетического алгоритма не требует наличия единственного критерия оценки решений. Мы применим скоринг по трем критериям: значение целевой функции и значения штрафных функций f2 (j), f з (j) . Кроме того, в р-медианной задаче число вершин р известно, в нашей задаче целью является его минимизация.

Общую схему алгоритма можно описать следующим образом.

Алгоритм 1. Генетический алгоритм с жадной эвристикой.

Шаг 1. Сгенерировать начальный массив множеств узлов сети, представленных тройками индексов (i,k,l): А = {jj} = {(i 1 ,ki,li) ,...,(ipj,kPj)}, j = 1 ,N. Здесь N - число "особей" популяции генетического алгоритма.

Шаг 2. Выбрать случайным образом два индекса родительских "особей" j1 ,j2 е { 1 ,N} , j1 Ф j2 и индекс . Здесь - множество индексов "особей" (элементов массива ), оцениваемых как "плохие" (см. ниже).

Шаг 3. Присвоить j j3 = j j1 и jb.

Шаг 4. Выполнить процедуру мутации множества j j (опционально).

Шаг 5. Для каждого узла V = (i 1 ,k1 ,l^ е j j выполнять: если 3 V2 = (i2,k2,l2)ejj -.l2Ф h>i2 = h,k2 = къ то выбрать случайным образом индекс l е { ^ ,l2}, присвоить jj3 = jj3\{(i-t,k1 ,l)} ; следующая итерация цикла 5.

Шаг 6. Вычислить соответствующие множеству jj3 матрицы переменных [ytiк,t], [х'к], [y'ik]. Присвоить .

Шаг 7. Разместив узлы множества j j в случайном порядке, для каждого узла V = (i', k, l') е j j выполнять:

Шаг 7.1. Присвоить % = jj3\{V}. Вычислить соответствующие множеству % матрицы булевых и целочисленных переменных [yfkl], [XIк] и [y' fk]. Если f4(%) < f4(jj ), то присвоить jj =%, перерассчитать соответствущие матрицы переменных , и . Перейти к 7.3. ,

Шаг 7.2. Выполнить процедуры локального поиска в окрестности узла .

Шаг 7.3. Следующая итерация цикла 7.

Шаг 8. Если FО UND = 1 , то присвоить FOUND=0 и начать цикл 7 заново.

Шаг 9. Проверить условия останова и перейти к шагу 2.

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

Алгоритм 2. Создание одной особи начальной популяции. Дано: число узлов сети р.

Шаг 1. Присвоить х' i,к = ОVi = 1J, k = 1 ,К.

Шаг 2. Для j = 1 ,р выполнять:

Шаг 2.1. Выбрать случайное k е { 1 ,К} . Рассчитать Z к = Y,i=1 zkiг - число видов продукции, которую можно производить на k-й линии. Выбрать случайное т е { 1 ,Zk}. Найти индекс m-го по счету ненулевого элемента -го столбца матрицы , сохранить этот индекс в переменную . Выбрать

случайное i е { 1, Tt}. Если х' ikк = О , то присвоить х' ikк = l. Иначе начать шаг 2.1 сначала.

Шаг 2.2. Следующая итерация цикла 2.

Практика показывает, что наилучшие результаты достигаются, если р в различных экземплярах исходной популяции варьируется в широких пределах - в диапазоне {L,K • I/ 2 }. Мы определяем его как р = [L + j(К •I/ 2 - L) /N] , здесь j - номер генерируемого экземпляра; N - число экземпляров в популяции; [ • ] - целая часть числа. Эмпирическим путем установлено, что значение N = I + К + L является достаточным, дальнейшее увеличение не приводит к улучшению результатов, лишь увеличивая время их достижения.

В качестве вспомогательных используются процедуры локального поиска в окрестности узла "У. Окрестностью в данном контексте будем называть множество узлов, отличающихся от "У значением координаты г (соответствует замене вида продукции) либо координаты i .

Процедура 1. Выполняется для вершины "У = ( i, /с, г) при условии 1 У*,fc, г( 3-

v' ) > Составить множество индексов видов продукции SL, удовлетворяющих

Efc=1 У* fc г( 3 - С.; ' ) < Выбрать случайным образом индекс г 2 из этого множества.

Вычислить f = (ху3\{"}) и { ( i , // , г2) } . Если /4 (f) < /4 (хь) , то присвоить х7з = f, FО//ND = 1 .

Процедура 2. Выполняется для вершины "У = ( i,/с, г) при условии i > 1 и ( i - 1 ,/с, г ) g хУз. Вычислить . Если , то присвоить , .

Процедура 3. Выполняется для вершины "У = ( i ,/с , г ) при условии i < Гг(i + 1 ,/с , г)€ху3. Вычислить f = (хь\ {"У}) и { ( i + 1 , /с, г ) } . Если /4 (О < /4(х7з), то присвоить х ]з = f, FО //ND = 1 .

Процедура 4. Мутация множества хУз. Выполняется с некоторой заданной вероятностью рт. Сгенерировать множество f c помощью алгоритма 2 с параметром р = |хУз|. Присвоить хУз = Xy3 и f. Экспериментально установлены оптимальные значения рт е [0, 0 0 5; 0, 0 3 ] при наличии процедур 2 и 3 и рт е [ 0 , 0 1 ; 0, 0 5 ] при наличии всех процедур локального поиска 1-3. Процедура 5. Определение множества w методом скоринга.

Шаг 1. Присвоить Sn = 0 , Fn = |хп| Vn = 1 ,N. Отсортировать массив F по возрастанию. Найти медианное значение .

Шаг 2. Присвоить Fn = /4(хп) Vn = 1 ,N. Для n е { 1 ,N}:|хп|</' присвоить Sn = Sn + 1 . Отсортировать массив в порядке возрастания. Найти медианное значение .

Шаг 3. Для n е {17N} :/4 (хп) < /'4 присвоить Sn = Sn + 2 . Шаг 4. Для n е { 1 ,N}: /2 (хп) = 0 присвоить Sn = Sn + 1 . Шаг 5. Для n е { 1 ,N}: /3 (хп) = 0 присвоить Sn = Sn + 1 .

Шаг 6. Найти наименьший индекс n е { 1 ,N}: /4 (хп) = 0 и |хп| = min |х0|. Если такой индекс

<?e{i,JV}

существует, то присвоить .

Шаг 7. Отсортировать массив S в порядке возрастания. Найти медианное значение s ' = S' [W/ 2] .

Возвратить результат - множество w = { n е { 1 , N}|Sn > s ' }.

Данная процедура требует достаточно больших вычислительных затрат, Поэтому процедура выполняется на шаге 2 после генерации начальной популяции, а также через каждые итераций. 3. Результаты

Алгоритм 2 реализован на языке Fortran 90 (компилятор ifort с опцией оптимизации кода и распаралеливания вычислений -O3). Для экспериментов использовалась вычислительная система Depo X8Sti (6-ядерное ЦПУ Xeon X5650 2.67 ГГц,12 Гб ОЗУ), технология hyperthreading отключена.

Получены результаты для задачи с параметрами, приведенными в работе [2] (L = 3 4, К = 2 8 , I = 3 1 ), но с более жесткими ограничениями (2) и (3): Гг е { 1 0, 3 1 }, VKm*n = 1 9 2 5 , Уг е [40, 5 0] , УКг е [2 0,2 5 0 0 0] . Всего использовано 10 наборов исходных данных, для каждого из них производилось по 10 запусков алгоритма в различных модификациях. На рисунке приведена зависимость наилучшего допустимого (т.е. ) решения от затраченного времени. Экспериментально выведено оптимальное

для большинства случаев значение размера популяции N=I+K+L. Также даны результаты алгоритма локального поиска, составленного только из процедур 1, 2, 3. Параметры алгоритма: вероятность мутации рт = 0,01.

Вестни^КрасТЯУ. 2015. № 4

Й н

Л

ч 63

(D

а

«

s В

f

£

300

Время 1 с

Результаты и влияние размера популяции на результат: 1 - алгоритм 2 без процедур 1 - 3, N = 8 9 ;

2 - с процедурами 1-3, N= 8 9; 3 - без процедур 1-3, N = 5 0 0; 4 - с процедурами 1 - 3, N = 5 О 0 ;

5 - алгоритм локального поиска процедурами 1-3 с мультистартом

С учетом того, что время работы алгоритма, предложенного в работе [2], составляет 8-1 0 5 секунд, результаты, достигнутые в настоящей работе, можно считать убедительными.

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

Литература

1. Фролов Е. Оперативное планирование производства // Директор информационной службы. - 2013. -Вып. 5. - URL: http://www.osp.ru/cio/2013/05/13035711/ (дата обращения: 01.10.2013).

2. Antamoshkin A., Masich I. Pseudo-Boolean Optimization in Case of an Unconnected Feasible Set, in: "Models and Algorithms for Global Optimization" // Optimization and Its Applications. - 2007. - V. 4. - P.111-122.

3. Kazakovtsev L.A., Gudyma M.N., Antamoshkin A.N. Genetic Algorithm with Greedy Heuristic for Capacity Planning // 6th International Congress on Ultra Modern Telecommunications and Control Systems and Workshops (ICUMT). - S.-Petersburg, 2014. - 6-8 October. - Р. 607-613.

4. Avella P., Sassano A., Vasil'ev I. Computational Study of Large-Scale p-Median Problems // Mathematical Programming. - 2007. - Issue 109(1). - P. 89-114.

5. Antamoshkin A.N., Kazakovtsev L.A. Random Search Algorithm for the p-Median Problem // Informatica. -2013. - V. 37(3). - P. 267-278.

6. Alp O., Erkut E, Drezner Z. An Efficient Genetic Algorithm for the p-Median Problem // Annals of Operations Research. - 2003. - V.122(1-4). - P. 21-42.