ПРИМЕНЕНИЕ ЗАДАЧИ О РЮКЗАКЕ ДЛЯ ВЫБОРА МЕСТОПОЛОЖЕНИЯ ТОРГОВОЙ ТОЧКИ
KNAPSACK PROBLEM FOR CHOOSING FACILITY LOCATION
УДК-51
Коваль Юлия Вадимовна
Студент магистратуры, Санкт-Петербургский государственный экономический университет, программа «Математическое и компьютерное моделирование в экономике и управлении», РФ, г. Санкт-Петербург Koval Yuliya Vadimovna
koval-j [email protected]
Аннотация
В данной статье представлена задача определения оптимального местоположения торговой точки с учётом стоимости аренды помещения и среднедневной посещаемости области вокруг точки. Задача целочисленного программирования преобразуется к задаче о рюкзаке 0-1 путем объединения двух ограничений - по затратам и числу открываемых объектов. На основе метода динамического программирования получены варианты мест для открытия в них магазина с максимальным охватом потенциальных потребителей.
Abstract
This article presents the problem of determining the optimal location of store using the rent cost of premises and the average daily attendance of the area around the point. The integer-programming problem transform to the knapsack problem 01 by merging two constraints - costs and the number of objects to be opened. Using the dynamic programming method, place variants for opening a store with the maximum coverage of potential consumers were obtain.
Ключевые слова: Размещение торговых точек, задача о рюкзаке 0-1, пространственный анализ, оптимизация, объединение ограничений, динамическое программирование.
Key words: Facility location, knapsack problem 0-1, spatial analysis, optimization, merging constraints, dynamic programming.
Исходные данные
Данная задача подходит для определения размещения таких торговых точек, эффективность работы которых зависит в первую очередь от близости к пешеходным потокам. Основными пешеходными потоками считаются путь
от дома до станции метро или остановки наземного транспорта, до работы и в обратном направлении. На прибыльность торговой точки влияет также то, насколько далеко от дома или места работы потенциального покупателя она находится. Это может быть, например, продовольственный магазин, товары первой необходимости, кафе, пекарни и прочее.
Набор точек для открытия в них торговой точки был извлечён с сайта ЦИАН [3]. Были получены данные о сдаваемых в аренду помещениях в Санкт-Петербурге, которые включали в себя адрес, площадь, арендную стоимость в месяц.
Центром Пространственных Исследований [2] были предоставлены оценки пешеходного потока по Санкт-Петербургу. Это база включала в себя название, адрес точки, её координаты и экспертный вес (среднедневная посещаемость объекта). Чтобы получить приблизительное число людей, посещающих область вокруг точки каждый день, будем суммировать веса в буфере 300 метров от анализируемой точки.
Пространственный анализ будет проводиться в приложении ArcMap. Точки строятся по географическим координатам, следовательно, появляется необходимость найти координаты объектов, сдаваемых в аренду. Сбор географических данных и расчёт весов
Для определения геолокации точек был использован Яндекс API, а именно HTTP Геокодер [4]. Геокодер - это один из HTTP-сервисов Яндекс.Карт, получающий в запросе текстовое представление адреса и возвращающий в ответе найденные на его основании объекты. Либо наоборот: получающий координаты и отвечающий адресом. С помощью Геокодера были получены широты и долготы каждых помещений, сдаваемых в аренду на основе их адреса.
С помощью Мастера Буферных Зон в ArcMap были созданы буферы вокруг точек. Далее, было выполнено соединение данных, в результате которого каждому объекту, сдаваемого в аренду, присвоилось суммарное значение числового атрибута (веса) точек, которые пересекают буферную зону.
Постановка задачи
Пусть n - количество помещений, сдаваемых в аренду, ai - среднедневная посещаемость пункта i, bi - размер арендной платы пункта i. Переменная добудет принимать два значения: 1 - объект размещается в пункте i, 0 - не размещается. Пусть B - максимальные затраты, которые мы готовы потратить
на открытие торговой (-ых) точки (-ек), р - число торговых точек, которые хотим открыть.
Математическая модель оптимизационной задачи выглядит следующим образом [1]:
А(х) = щх^ ^ тах (1)
при ограничениях
Й=1 < В, (2)
(3)
Мы ищем такие точки для открытия магазина, чтобы среднедневная посещаемость области вокруг точки была максимальна (1), при этом стоимость аренды помещений в этих точках не превышала нашего лимита (2) и число этих точек не превышало максимального числа магазинов, которые мы планируем открыть (3).
Перед нами задача дискретной оптимизации, а именно задача о рюкзаке 0-1, где точки можно выбрать максимум единожды. Задача о рюкзаке относится к классу №-полных задач, т.е. к таким, у которых нет быстрого алгоритмического решения. Для решения таких задач используют приближённые алгоритмы. Данную задачу мы решим с помощью метода динамического программирования. Используя этот метод, решение задачи о рюкзаке с несколькими ограничениями будет довольно трудоёмким, поэтому нужно объединить два ограничения в одно. Объединение ограничений
Каждая система линейных уравнений с целочисленными коэффициентами может быть преобразована в одно линейное уравнение с таким же набором неотрицательных целочисленных решений, что и система, которой он соответствует.
Рассмотрим нашу задачу целочисленного программирования с двумя ограничениями [5]:
^ шах
Н=1 Ьл = В (4)
£7=1 X; =р
0 < XI < 1, XI целое, I = 1, 2,..., п, где в ограничениях стоят равенства, поскольку слабые ограничения можно изменить, добавив слабые переменные. Пусть ^(х)^-^!^, (5)
п
к(х) = р-^х0
р- 1*1 ¿=1
будут разницами между правой и левой частью ограничений. Используя границы хь получаем следующие границы для g(x):
В - £?=1 Ь+ < д(х) < В - Т1= 1ЬГ, (6)
где Ь+ = шах(Ь^, 0} и Ь- = шт(Ь^ 0}. Если мы выберем положительное целое число, удовлетворяющее
А > шах(Я - Е?=1 ЬГ, -В + £?= 1Ь+}, (7)
тогда 1д(х)1 < А. Умножив второе ограничение на X и добавив его к первому, получаем следующую задачу:
п
I
^ тах
¿=1
т
а=1(Ь1 + А)х^ = В+Ар (8)
0 < XI < 1, XI целое, I = 1, 2,..., п. Построение моделей
В качестве примера, параметр В был взят как средняя величина арендной стоимости всех анализируемых точек. Задача разбилась на четыре подзадачи: [-,-, —,5]. Методом динамического программирования были найдены
4 2 4
оптимальные точки для каждого из этих четырёх «размера рюкзака». Посмотрим на некоторые результаты в Таблице 1.
Таблица 1.
Результаты модели при разных параметрах
Параметры Адрес Аренда, руб./мес. Посещаемость, чел.
B = 159661 p = 1 улица Ефимова, 1/4 46278.0 434157
B = 159661 p = 2 Загородный проспект, 2 72000.0 296530
улица Ефимова, 1/4 46278.0 434157
B =319321 p = 2 Пушкинская улица, 10к2 127000.0 372723
улица Ефимова, 1/4 46278.0 434157
B =319321 p = 3 Сенная площадь, 2 190000.0 429653
улица Ефимова, 1/4 46278.0 434157
В четвёртой строке при параметре р = 3 модель выдала два результата потому, что при общих затратах в 236278 руб. при открытии двух объектов у нас была бы посещаемость области вокруг точек больше, чем при открытии трёх точек.
Стоит отметить, что прежде, чем делать расчёты с помощью модели, следует обратить внимание на то, какой тип магазина по площади вы собираетесь открывать. Необходимо строить модель для каждого типа отдельно.
Если мы хотим посмотреть р = 5 лучших пунктов для открытия торговой точки, можно задать параметр В, например, как среднюю стоимость аренды коммерческих помещений по городу, умноженную на р или меньшее число. Как видим на Рисунке 1, при заданных затратах модель выделяет две области города для размещения магазина. Нижние правые точки находятся настолько близко друг к другу, что при заданном масштабе карты они практически сливаются.
Рисунок 2. 5 оптимальных точек для открытия торгового объекта на карте
Санкт-Петербурга
Плюсами данной модели является то, что она проста - это модификация классической задачи о рюкзаке и модель даёт наглядное представление о том в каких областях города можно открыть торговую точку в зависимости от вашего бюджета. К недостаткам можно отнести ограниченность факторов. Для более специализированных объектов, не обязательно торговых, стоит включать в рассмотрение больше факторов для принятия решения о их размещении.
Литература
1. Кондратьев В. Д. Методы решения задачи размещения объектов обслуживания. Вып. 20. Управление большими системами. - 2008. С. 4656.
2. Центр Пространственных Исследований // Официальный сайт компании [Электронный ресурс] / Режим доступа: https://geointellect.ru/
3. ЦИАН // Официальный сайт базы российской недвижимости [Электронный ресурс] / Режим доступа: https://spb.cian.ru/
4. API Геокодер // Официальный сайт API - Яндекс [Электронный ресурс] / Режим доступа: https://tech.yandex.ru/maps/geocoder/doc/desc/concepts/about-docpage/
5. David Pisinger Algorithms for Knapsack Problems. Ph.D. thesis. - February 1995. P. 14-16.
6. Kanungo, T. An efficient K-means clustering algorithm: analysis and implementation / T. Kanungo, D. Mount, N.S. Netanyahu, C. Piatko, R. Silverman, A. Wu // IEEE Trans. Pattern Anal. Mach. Intell.- 2002.- Vol.24, issue 7.- P. 881-892.
Literature
1. Kondratev V. D. Methods for solving the problem of placing service objects. Issue 20. Management of large systems. - 2008. Pp. 46-56.
2. Center for Spatial Research / / Official website of the company [Electronic resource] / access Mode: https://geointellect.ru/
3. CIAN / / Official site of the Russian real estate database [Electronic resource] / access Mode: https://spb.cian.ru/
4. API Geocoder / / Official site API-Yandex [Electronic resource] / access Mode: https://tech.yandex.ru/maps/geocoder/doc/desc/concepts/about-docpage/
5. David Pisinger Algorithms for Knapsack Problems. Ph.D. thesis. - February 1995. P. 14-16.
6. Kanungo, T. An efficient K-means clustering algorithm: analysis and implementation / T. Kanungo, D. Mount, N.S. Netanyahu, C. Piatko, R. Silverman, A. Wu // IEEE Trans. Pattern Anal. Mach. Intel.- 2002.- Vol.24, issue 7.- P. 881-892.