Научная статья на тему 'Задача размещения заказов для сети аптек региона и ее приближенное решение'

Задача размещения заказов для сети аптек региона и ее приближенное решение Текст научной статьи по специальности «Математика»

CC BY
79
13
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
ДИСКРЕТНАЯ ОПТИМИЗАЦИЯ / ЦЕЛОЧИСЛЕННОЕ ПРОГРАММИРОВАНИЕ / ГЕНЕТИЧЕСКИЙ АЛГОРИТМ

Аннотация научной статьи по математике, автор научной работы — Сигаев Вячеслав Сергеевич

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Задача размещения заказов для сети аптек региона и ее приближенное решение»

ЗАДАЧА РАЗМЕЩЕНИЯ ЗАКАЗОВ ДЛЯ СЕТИ АПТЕК РЕГИОНА И ЕЕ ПРИБЛИЖЕННОЕ РЕШЕНИЕ

В. С. Сигаев

Информационно-технологическая сервисная компания, 644110, Омск, Россия

УДК 519.87

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

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

In this paper we consider an orders allocation problem for regional pharmacy net. Integer linear programming model for the problem is constructed and analyzed, heuristic algorithm is suggested. The NP-hardness for this problem is proved. The results of computational experiment for the problem instances with random data are presented.

Key words: discrete optimization, integer programming, genetic algorithm.

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

Такая схема взаимодействия поставщиков с аптеками требовала модификации, а именно решения следующих задач: 1) упрощение работы аптек при размещении заказов; 2) нахождение оптимального заказа для всей сети аптек; 3) понижение цены продукции. Для решения поставленных задач была предложена концепция электронных торгов специального вида, в основе которой лежит организация регулируемого взаимодействия поставщиков с аптеками. При данном взаимодействии аптеки формируют заявки на основании суммарного прайс-листа поставщиков.

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

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

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

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

1. Математическая модель. Прежде чем представить описание математической модели, приведем список входных данных: Т = {Ь1,...,Ьт} — множество типов продукции; Р = {р1,...,рп} — множество поставщиков; А = {а1,...,аи} — множество аптек; Я = |г1,...,г|д|}, Тг С А, г = 1,..., \Я\ — множество маршрутов; Qat — потребности аптеки а в продукции типа Ь; срг — стоимость единицы продукции типа Ь у поставщика р; Ърг — запас продукции типа Ь у поставщика р; Яр — множество маршрутов поставщика р (Яр С Я); Угра — минимальная суммарная стоимость заказа аптек в маршруте т, достаточная для поездки поставщика р в аптеку а. Данная величина определена с учетом рентабельности открытия маршрута Т для поставщика р.

Для решения задачи размещения заказов необходимо определить значения следующих переменных (маршруты одного поставщика не имеют общих аптек, т. е. т П Т = 0. т Е Яр, Т Е Яр, Т = т): храг — целочисленная переменная, определяющая количество единиц продукции типа Ь, доставляемое от поставщика р аптеке а; 1раг — бинарная переменная (1раг = 1 в случае, если поставщик р доставляет потребителю а продукцию типа Ь, 1раг = 0 в случае, если поставщик р не доставляет продукцию потребителю а; вра — бинарная переменная (вра = 1 в случае, если поставщик р доставляет продукцию потребителю а, вра = 0 в случае, если поставщик р не доставляет продукцию потребителю а).

В силу описанной выше специфики взаимодействия поставщиков и потребителей любое решение задачи размещения заказов должно принадлежать множеству допустимых решений П = {(храг), (1раг), (вра)}, определяемому следующими ограничениями:

р Е Р, т Е Яр, а Е т;

а'ет гет

(1)

(2)

аеЛ

храг — Qatlpat, Ь Е T, р Е Рч Т Е Ярч а Е Т;

а Е А, Ь Е Т;

(3)

(4)

реР

1раг — вра, а Е A, Ь Е T, р Е Р;

Храг = 0, Ь Е Т, р Е Р, т Е Яр, а Е т; храг ^ 0, вра Е {0, 1}, а Е А, р Е Р, Ь Е Т.

(5)

(6) (7)

Неравенство (1) определяет условие, согласно которому по каждому поставщику и по каждому маршруту суммарная стоимость заказа аптек должна быть не ниже минимального порогового значения, установленного поставщиком. При этом данное пороговое значение

зависит от расстояния до последней аптеки маршрута, в которую необходимо доставить товар данному поставщику. Неравенство (2) определяет максимально допустимые общие объемы поставок каждого поставщика по каждому виду продукции. Количество привезенного продукта от любого поставщика не должно превышать потребности аптеки в этом продукте, что учтено в неравенстве (3). Каждый вид продукции должен поставляться в аптеку только одним поставщиком (см. (4)). При описанных выше условиях требуется найти лексикографический оптимум в трехкритериальной задаче оптимизации при указанных ниже критериях.

Первым по значимости критерием является минимизация деффектуры, т. е. количества заказанного, но неполученного товара:

V* = тт р((хРаг)), (8)

((храь),(1раь),№ра))еП

где

V((храь)) = храЬ I

аеЛ геТ \ рЕР /

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

ф* = . ,7т\п АФ((храг)) \ V((xpat)) = V*} , (9)

{{храЬ), (1раЬ ) , {Зра)) е^

где

Ф((храг)) = ЕЕЕ сргхраг.

аеЛ геТ реР

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

т * = тт| тах ( ^ ^ ) \ V((xpat)) = V*, ф((храг)) = ф*\ . (Ю)

{{храЬ),{1раЬ),{Зра))е^ ^ аеЛ у ер J J

2. Сложность задачи. В данном пункте проводится анализ вычислительной сложности задачи размещения заказов.

Утверждение. Задача (1)—(10) является ИР-трудной.

Доказательство. Рассмотрим частный случай задачи (1)—(10), когда имеются только один поставщик и только две аптеки, находящиеся на двух его маршрутах. Запасы поставщика состоят из одного продукта каждого типа: \Т\ > 3. Потребности первой аптеки состоят из одного продукта каждого типа, кроме второго, а потребности второй аптеки состоят из одного продукта каждого типа, кроме первого. Стоимости продукции первого и второго типа равны нулю, а стоимости продукции остальных видов являются целыми положительными числами. Минимальная суммарная стоимость заказа по маршруту равна половине стоимости всей продукции поставщика (для упрощения в доказательстве индекс р опускается):

\Т\> 3, \Р\ = 1, А = {а,1,а2}, Я = {г\,г2}, п = {а:}, т2 = {а2}; (11)

(12)

(13)

(14)

(15)

гет

При таких исходных данных оптимальное решение со значением р*, равным \Т\ — 2, можно получить при условии, что поставщик полностью использовал возможности своего склада, частично удовлетворив потребности каждой из аптек. Если не существует решения, при котором поставщик полностью использует возможности своего склада, то оптимальным решением со значением р*, равным \Т\ — 1, является следующее:

ха\г 1а1г 1; ^ Е Тха2г 1а2г 0, t Е Тха^2 1а^2 х«241 1«241 °) (16)

т. е. поставщик полностью удовлетворил потребности только одной из аптек, в данном случае а1. Таким образом, для решения задачи (1)—(10) при предположениях (11)—(15) необходимо определить, существует ли такое решение ((х*аг), (1*аг ), (^а)) Е ^ что Р((храг)) = \Т\ — 2 а в случае его отсутствия выдать решение (16). Ниже показано, что поиск допустимых решений ((храг), (1раг), (Лра)) Е П, для которых р((храг)) = \Т\ — 2, эквивалентен ответу “да” в задаче “РАЗБИЕНИЕ” [2], которая является ИР-трудной.

Если р((храг)) = \Т\ — 2, то поставщику необходимо развезти весь товар, имеющийся у него в наличии, т. е.

что не нарушает ограничение (4). Отметим, что с учетом 1ра1г1 = 1ра2г2 = 1 из ограничения (5) следует в,ра =1, а Е А. Совокупность ограничений (7), (14), (13) и 1раг = храг, а Е А, t Е Т, р Е Р обеспечивает выполнение ограничения (3). Из условий (2) и р((храг)) = \Т\ — 2 следует, что ха11 + ха2г = 1, t Е Т, т. е. любой товар t Е Т будет поставляться либо аптеке а1, либо аптеке а2. В результате ограничения (2)-(5) выполняются при предположениях (11)—(15), а

ограничение (1) имеет следующий вид: ^ сгха1г > - ^ сг, ^ сгха2г > - ^ сг. Выполнение

гет 2 гет гет 2 гет

данных неравенств возможно только в случае, если

Существование допустимых решений при таком ограничении соответствует тому случаю, когда задача “РАЗБИЕНИЕ” [2] имеет ответ “да”.

3. Генетический алгоритм. В данной работе рассматривается генетический алгоритм (ГА), принадлежащий семейству эвристических случайных методов [3]. В генетическом алгоритме — упрощенной модели эволюции в природе — используется как аналог механизма генетического наследования, так и аналог естественного отбора. При этом сохраняется биологическая терминология в упрощенном виде.

аеА

1раг храг ■ а Е А , t Е Т1 р Е Р:

Процесс работы ГА представляет собой последовательную смену популяций, состоящих из фиксированного числа особей — пробных точек пространства решений, причем каждая особь представлена строкой символов некоторого алфавита, называемой генотипом. В рассматриваемом случае множеством генотипов является Г = {((wat), (при))}, где wat Е P — поставщик, удовлетворяющий потребности аптеки a в продукции типа t. В каждой строке матрицы (при) для соответствующего поставщика p фиксируется порядок перебора маршрутов данного поставщика при использовании в функции декодирования. Данный порядок определяется перестановкой, которая записана в строке p матрицы (при). Функция декодирования решения Q' = Z(Г), где Q' С П, вычисляется по следующей схеме:

1) для каждогоpЕ Pи для каждого r Е Rp в порядкепр1,. . . nP\R \ выполнять шаги 2-13;

2) определить наибольшее по мощности множество A, такое что A С r и max Vrpa <

aeA

^2 cpt min( ^2 Qat, bpt) (в множество A входят те аптеки маршрута r, в которые поставщику ttT atA

p выгодно везти продукцию);

3) для каждого a Е A в порядке возрастания величины Vrpa выполнять шаги 4-8;

4) положить dpa := 0;

5) для каждого t Е T выполнять шаги 6-8;

6) положить Xpat := min(Qat, bpt);

7) обновить остатки поставщика bpt := bpt — xpat;

8) если xpat > 0, то положить lpat := 1, dpa := 1, иначе lpat := 0;

9) для каждого a Е r \ A выполнять шаги 10-13;

10) положить dpa := 0;

11) для каждого t Е T выполнять шаги 12-13;

12) положить xpat := 0;

13) положить lpat := 0;

14) результатом работы функции является ((xpat), (lpat), (dpa)).

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

Обозначим через Ф(7) = (р(((y)),^(Z(l)),r(Z(j))) функцию приспособленности генотипа

Y Е Г.

Генетический алгоритм, разработанный в данной работе, включает следующие этапы (операторы Init, Selection, Crossover, Mutation, LCS описаны далее):

1. Построить популяцию П = Init(N), где N — размер популяции (N < |Г|, П С Г).

о и it := Selections(n) и

2. До тех пор пока не выполнен критерий остановки, выполнять шаги 2.1,... , 2.3:

2.1. Выбрать родительские особи Y2 := Selections(n).

2.2. Создать особи 71 и 72: (71,72) := Crossover(Y1,72).

2.3. Для y Е {71,72}:

2.3.1. Вычислить y' := LCS(Mutation(Y)).

2.3.2. Выбрать Yw Е П, такое что Ф(Yw) = lexm,ax^(n)).

2.3.3. Если Ф(Yw) = lexmax(^({Y',Yw})) и y' Е П, то заменить Yw на y'.

3. Результатом работы алгоритма является Y* Е П, такое что Ф(Y*) = lexmin^^)).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

В рассматриваемом случае для создания популяции П используется процедура Init (N), которая последовательно заполняет популяцию П новыми генотипами. Для генерации нового генотипа выбирается множество поставщиков P' С P. Сначала в качестве P' последовательно берутся различные одноэлементные множества из P, затем различные двухэлементные множества из P и т. д. В случае если необходимо выбрать множество P', которое по количеству элементов больше или равно множеству P, берется все множество P. После выбора нового множества P' создается генотип Y': для каждого a Е A и t Е T выбирается элемент w'at с равномерным распределением на множестве P'; перестановка (п'ри) для каждого p Е P генерируется случайным образом. Если Y' Е П, то генотип Y' добавляется в популяцию П, иначе выполняется переход на этап генерации нового генотипа. Процесс заполнения популяции прекращается, когда | П| = N.

Для выбора номера очередного “родительского” генотипа используется так называемый оператор s-турнирной селекции, в котором из текущей популяции независимо извлекаются s особей с равномерным распределением и из них выбирается особь, имеющая лексикографически минимальное значение функции приспособленности Ф.

К генотипам выбранных особей применяется оператор Crossover, заменяющий часть генов одного генотипа на гены другого. В рассматриваемом случае после применения оператора кроссинговера (y',y'') := Crossover(Y,Y) с вероятностью 1 — Pcross получаем Y = Y,

Y' = Y, а с вероятностью Pcross имеем Y = (Wt), (При)) и Y' = (Wt), (При)), где

позиция уа для каждого а £ А выбрана с равномерным распределением на {1,... , т}.

Формирование набора (при) потомка происходит следующим образом: для каждого поставщика р £ Р набор (п'ри) заполняется элементами первого родителя до позиции ^р, после чего дополняется отсутствующими элементами в порядке их следования во втором родителе:

Значение /лр для каждого р £ Р выбрано с равномерным распределением на {1,... , \Яр|}. Таким образом, набор (и>'аі) потомка, полученного после операции скрещивания, для каждой аптеки а £ А содержит элементы как одного родителя, так и второго [4].

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

Затем полученные генотипы подаются на вход оператора локальной корректировки решения ЬЄБ. Оператор локальной корректировки успешно применяется в качестве одного из этапов генетического алгоритма [5]. На данном этапе в генотипах р = ((и'аг), (п'ри)) и Р" = («г), ( при)) определяются элементы иаг, для которых при декодировании генотипа = 0. Для таких элементов проводится повторная процедура мутации при условии, что

wat, если t Є {tl, . . . ,tva-l},

watt, если t Є {tl,...,tva-l},

w_at , если t Є {tva i ... i tm} , wat , если t Є {tva і ... і tm} ,

npl = Пру,, y' = min(i Є {1, . . . , ^р^Крі Є {п'р і ,. . . ,n'pl-l}),

npl = Пру'{, yl = min(i Є |Rp|}|пpiЄ ^р^..^ п^і-і}).

Размер популяции

Рис. 1. Погрешность, определенная для различных размеров популяции

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

4. Вычислительный эксперимент. Оптимизационный модуль был запрограммирован на языке С+—+. Поиск решения в данном модуле основан на генетическом алгоритме, описанном выше. Все задачи, на которых проводились эксперименты, генерировались таким образом, чтобы они максимально соответствовали реальной обстановке: 100 < \Т\ < 300, \Р\ = 10, |А| = 50, остальные параметры выбирались случайным образом. На первом этапе вычислительных экспериментов необходимо определить основные настройки генетического алгоритма, к числу которых в данном случае относятся следующие: размер популяции, размер турнира селекции, вероятность кроссинговера и вероятность мутации. По каждому из предложенных параметров генерировались три задачи со значениями \Т\ Є {100, 200, 300}. Для сбора статистических данных на каждой из задач было проведено 30 запусков генетического алгоритма. Показателем качества полученных решений на каждой из задач являлась

средняя погрешность значения функции р(х) относительно оптимального значения р*, т. е.

30

р^/(30 * р*), где рі — значение, полученное на г-м запуске генетического алгоритма.

і=1

В качестве оптимального решения использовалось решение, полученное с помощью коммерческого пакета СРЬЕХ 22.9.2 для решения задач частично целочисленного линейного программирования.

Размер популяции, при котором получаются решения с лучшим значением целевой функции р, определялся на построенных случайным образом задачах Р 100.1 (\Т\ = 100), Р200.1 (\Т\ = 200), Р300.1 (\Т\ = 300). На каждой из этих задач проведены запуски генетического алгоритма с размерами популяций 10, 20, ..., 100. На рис. 1 приведена средняя относительная погрешность по критерию р(х). Видно, что алгоритм позволяет получить приемлемые результаты в широком диапазоне значений N. Далее было выбрано значение N = 50.

На задачах Р 100.2 (\Т\ = 100), Р200.2 (\Т\ = 200), Р300.2 (\Т\ = 300) определялся размер турнира в. На каждой из задач проводились запуски генетического алгоритма с размерами турнира 1, 2,... , 7. На основе анализа полученных результатов, приведенных на рис. 2, для дальнейших экспериментов было выбрано значение в = 4.

Размер турнира

Рис. 2. Погрешность, определенная для различных размеров турнира

Вероятность кроссинговера

Рис. 3. Погрешность, определенная для различных вероятностей кроссинговера

Вероятность мутации

Рис. 4. Погрешность, определенная для различных вероятностей мутации

При выборе значений вероятности использования оператора скрещивания Рсгозз и оператора мутации Ртиі на каждом из запусков соответствующие параметры устанавливались равными 0,1; 0,2; ...; 1,0. Результатом вычислительных экспериментов является выбор Рстов8 1,0 и Ртиі 0,2 (рис. 3, 4).

Для определения степени влияния процедуры локальной корректировки решения LCS на значение целевой функции каждого генотипа проведены дополнительные эксперименты с использованием LCS и без использования. Для этого для каждой из задач P 100.5 (\Т\ = 100), P200.5 (\Т\ = 200), P300.5 (\Т\ = 300) было проведено 25 запусков генетического алгоритма с использованием LCS и без использования. На основе полученных результатов с помощью статистического критерия Манна — Уитни [6] показано, что использование процедуры LCS в ГА статистически значимо (с уровнем значимости 0,01) улучшает значение целевой функции генотипа, полученного в результате работы ГА.

Следует отметить, что время поиска оптимального решения задач с использованием программного модуля CPLEX 22.9.2 составило: для задач с \Т\ = 100 — порядка 5 мин, для задач с \Т\ = 200 — порядка 10 мин, для задач с \Т\ = 300 — более 25 мин.

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

Список литературы

1. СигАЕв В. С. Задача размещения заказов для сети аптек региона // Тез. докл. 4-й Всерос. конф. “Проблемы оптимизации и экономические приложения”, Омск, 29 июня - 4 июля 2009 г. Омск: Полиграф. центр КАН, 2009. С.244.

2. Гэри М. Вычислительные машины и труднорешаемые задачи / М. Гэри, Д. Джонсон. М.: Мир, 1982. 416с.

3. Holland J. Adaptation in natural and artificial systems. S. l.: Univ. of Michigan Press, 1975.

4. Reeves C. R. Genetic algorithms for the operations researcher // INFORMS J. Comput. 1997. V. 9, N 3. P. 231-250.

5. Еремеев А. В. Генетический алгоритм для задачи о покрытии // Дискретный анализ и исследование операций. Сер. 2. 2000. Т. 7, №1. С.47-60.

6. Mann Н. B., Whitney D. R. On a test of whether one of two random variables is stochastically larger than the other // Ann. Math. Statistics. 1947. N 18. P. 50-60.

Сигаев Вячеслав Сергеевич — ведущ. инженер-программист ООО “Информационно-технологическая сервисная компания,”;

e-mail: [email protected]

Дата поступления — 8.11.2010

i Надоели баннеры? Вы всегда можете отключить рекламу.