Итак, условие задачи
Рассмотрим гипотетический рынок химического продукта, используемого в промышленности для изготовления растворителей и синтеза полимеров. Допустим, что имеется три производителя данного продукта и четыре крупных покупателя, другие покупатели являются слишком мелкими и их влиянием можно пренебречь.
Поставки продукта от производителя покупателям осуществляются по железной дороге в цистернах за счет производителя, т.е. расходы на перевозку прибавляются к расходам производителя. Тариф на перевозку зависит от расстояния доставки. Каждый производитель может доставить продукт до любого покупателя, при этом понеся соответствующие расходы за транспортировку.
Также у любого поставщика есть возможность доставить любое количество своего продукта по железной дороге в морской порт, откуда его можно продать зарубежным покупателям по некоторой фиксированной цене, не зависящей от количества продукта (т.е. цена продажи 1 тонны и 10 000 тонн продукта будет одинаковой).
Предположим, что все поставщики действуют рационально. Также примем, что если один из них может повысить свою прибыль, понизив цену и забрав долю рынка у конкурентов, то он непременно сделает это. Цена, по которой можно продать продукт в порту, составляет 50 долларов за тонну.
Каждый покупатель приобретает фиксированное количество продукта каждый месяц. Примем, что покупатель гарантированно меняет поставщика, если ему предлагается цена на ниже той, по которой он покупает в настоящее время.
Задача заключается в том, чтобы определить, кто, у кого и по каким ценам будет покупать продукт после того, как рынок придет в состояние равновесия, т.е. когда ни у кого из производителей не будет мотивации менять цены или объемы поставок.
Данная задача является так называемой закрытой транспортной задачей, потому как суммарный спрос потребителей, включая морской порт, больше суммарного объема груза имеющегося у производителей. Давайте для лучшего понимания условий задачи и большей наглядности изобразим схему возможных взаимодействий производителей с покупателями и морским портом.
Также, для упрощения восприятия условий задачи, сформируем их в виде трёх таблиц.
Теперь, для решения нашей задачи, необходимо внести немного формализма и перевести задачу с повествовательного языка на язык математики. Перед этим я дам несколько устоявшихся в области линейного программирования определений, чтобы в дальнейшем можно было ими оперировать.
Математическая модель задачи линейного программирования состоит из трёх основных элементов.
- Целевая функция. Данную функцию будем обозначать через Z. Она должна количественно отражать значение цели в зависимости от значений неизвестных переменных. Целевая функция может быть на нахождение максимального значения (прибыль предприятия) или минимального значения (себестоимость, затраты).
- Ограничения. В реальной экономической системе существуют ограничения, например, на объём используемых ресурсов, которые должны быть учтены при построении математической модели. Ограничения должны быть записаны в виде математических соотношений (уравнений или неравенств).
- Условия неотрицательности переменных. Неизвестные переменные задачи отражают некоторые реальные параметры экономической системы, которые, как правило, не могут принимать отрицательных значений, поэтому соответствующие неизвестные переменные должны быть положительными или нулевыми.
Запишем целевую функцию для нашей задачи. В нашем случае целевая функция должна содержать себестоимость единицы продукта, затраты на его доставку, спрос покупателей в зависимости от стоимости продукта и затрат на доставку, возможность поставки продуктов от производителей в порт. Итак, получается следующая целевая функция.
где
– цена за тонну продукта
-го производителя
-му покупателю;
– количество тонн продукта, поставленного от
-го производителя
-му покупателю;
– затраты на ж.д. перевозку и производство продукта от
-го производителя
-му покупателю;
– есть или нет (1-есть, 0-нету) поставка продукта от
-го производителя
-му покупателю;
– количество тонн продукта, поставленного от
-го производителя в порт;
– фиксированная цена на продажу продукта в порту;
– затраты на ж.д. перевозку и производство 1-ой тонны продукта от
-го производителя в порт;
– количество производителей;
– количество покупателей.
Далее, чтобы наша целевая функция приблизилась к реальной жизни, выполняла условия задачи и не имела бесконечного количества решений, необходимо ввести ряд ограничений.
- Первое ограничение. Каждый производитель не может суммарно поставить покупателям или в порт количество продуктов больше, чем он сам производит.
- Второе ограничение. Покупатели приобретают ровно то количество продуктов, которое им требуется в месяц.
- Третье ограничение. Для каждого покупателя цена не может превышать 100 USD.
- Четвёртое ограничение. Количество поставляемого продукта для любого покупателя не может быть отрицательным.
Пятое ограничение. Это ограничение как раз и будет учитывать спрос и предложение и направлено на вычисление цены, определяющей баланс интересов всех участников рынка. В теории игр такой баланс интересов называется равновесием Нэша, или выбор таких стратегий игроков, в котором ни один участник не может увеличить выигрыш (в нашем случае прибыль), изменив свою стратегию, если другие участники свои стратегии не меняют [4].
Звучит замысловато, давайте разберёмся, что это значит в условиях нашей задачи. Необходимо с учётом индивидуальной себестоимости продукта и затрат на доставку продукта каждого производителя определить минимальную цену, по которой производителю выгоднее продавать продукты покупателю, а не доставлять в морской порт для продажи зарубежным покупателям.
Именно наименее выгодную цену, ведь мы помним из условия задачи, что покупатели покупают продукт у того производителя, который предложит минимальную цену. Получается, каждый производитель должен выбрать стратегию снижения цены продукта согласно следующему условию.
Наименее выгодная цена для производителей при поставке покупателям
Теперь, когда задача записана математически, можно приступить к реализации решения. Для решения этой задачи я выбрал Python библиотеку от IBM DOcplex (Decision Optimization CPLEX).
Для нахождения решения нашей оптимизационной задачи необходимо найти максимальное значение целевой функции, то есть максимизировать прибыль всех производителей при выполнении сформулированных ограничений.
Моё решение задачи началось с поиска имеющихся готовых инструментов для решения задач линейного программирования. В итоге по душе мне пришёлся довольно мощный программный продукт от IBM под названием IBM ILOG CPLEX Optimization Studio. Он включает в себя среду разработки и решения различных оптимизационных задач, в том числе задач линейного программирования.
Содержит хорошую документацию и, самое главное, множество разнообразных примеров решения типовых оптимизационных задач. Также в комплект программного продукта IBM ILOG CPLEX Optimization Studio входит Python библиотека DOcplex и примеры её использования в Jupyter Notebook. Ниже рассмотрим ход моего решения задачи в Jupyter Notebook.
Проектирование цифровых логистических платформ в цепи поставок
11. Belova L.A. The role of the health system in ensuring the economic security of the region / L.A. Belova, M.V. Vertius, V.N. Malysheva // Bulletin of the Academy of Knowledge. – 2021 .- No. 4 (33). – S. 52-57.
12. Goloshchapova L.V. Management of financial risks in the healthcare sector and ways to minimize them / L.V. Go-loshchapova, S.O. Yakushina // Bulletin of the Academy of Knowledge. – 2021 .- No. 2 (31). – S. 278-281.
DOI: 10.24411/2309-4788-2020-10281
С.Д. Суворова – доцент высшей школы сервиса и торговли, к.э.н., доцент, Санкт-Петербургский государственный политехнический университет им. Петра Великого, suvorova_sd@mail.ru,
Svetlana Suvorova – Associate Professor, Higher School of Service and Trade, Ph.D., Associate Professor, Peter the Great St Petersburg Polytechnic University;
И.А. Бойко – студент, Санкт-Петербургский государственный политехнический университет им. Петра Великого, bojko.98@inbox.ru,
Irina Boyko – student, Peter the Great St Petersburg Polytechnic University;
А.И. Захаренко – студент, Санкт-Петербургский государственный политехнический университет им. Петра Великого, zaharenckoalina@yandex.ru,
Alina Zakharenko – student, Peter the Great St Petersburg Polytechnic University.
ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ ЛОГИСТИЧЕСКИХ ПЛАТФОРМ В ЦЕПИ ПОСТАВОК DESIGNING DIGITAL LOGISTICS PLATFORMS IN THE SUPPLY CHAIN
Аннотация. Сегодня, в качестве основной площадки, объединяющей различные технологические решения, выступает цифровая платформа. При этом платформа является не отдельным продуктом, а гибкой структурой, имеющей мощную IT-основу нацеленную на удовлетворение ряда потребностей ее участников. Типология цифровых платформ основывается на таких характеристиках, как: предметный состав, функциональная специализация, методы обработки информации и результат деятельности. В связи с чем, целью данного исследования являлось: изучение концепции формирования цифровых платформ с выделением существующих типов площадок; анализ основных характеристик действующих цифровых платформ; выявление ключевых технических и организационных компонент, значимых для логистики; определение последовательных этапов построения цифровой логистической платформ и оценка перспектив развития рассматриваемых платформ в сфере товарного обращения. Авторы полагают, что феномен цифровых платформ, оказывает инновационное влияние на формирование бизнес моделей в частности, и на рынок в целом, при этом производители и поставщики интегрируют основные виды деятельности с цифровыми платформами, предоставляя инновационные услуги и лучшие результаты, как для бизнеса, так и для клиентов. Следовательно, возросшее значение новых цифровых отношений определяет более глубокий стратегический сдвиг для бизнеса.
Abstract. Today, the digital platform serves as the main platform that combines various technological solutions. At the same time, the platform is not a separate product, but a flexible structure with a powerful IT base aimed at meeting a number of needs of its participants. The typology of digital platforms is based on such characteristics as: subject matter, functional specialization, methods of information processing and performance. Therefore, the aim of this study was to examine the concept of development of digital platforms, highlighting the existing types of sites; the analysis of the main characteristics of existing digital platforms; identify key technical and organizational component, important for logistics; the definition of the successive stages of construction of a digital logistics platform and assessment of prospects of development of digital platforms in the field of product distribution. The authors believe that the phenomenon of digital platforms has an innovative impact on the formation of business models in particular, and on the market as a whole, while enterprises in various industries integrate their main activities with digital platforms, providing innovative services and better results, both for business and for customers. Consequently, the increased importance of new digital relationships determines a deeper strategic shift for business.
Ключевые слова: логистика, технологические решения, цифровая платформа, IT-основа, типы цифровых площадок, ключевые технические и организационные компоненты, бизнес модели, облачное хранение.
Keywords: logistics, technological solutions, digital platform, IT-base, types of digital platforms, key technical and organizational components, business models, cloud storage.
В современных условиях внимание большинства участников экономической деятельности сосредоточено на цифровизаци всех сфер жизнедеятельности, как на уровне национальных экономик, так и в масштабах мирового пространства в целом. Как известно, транспортно-логистический комплекс является наиболее адаптированным и подготовленным к переходу «в цифру» и характеризуется широким использованием информационных систем, позволяющих достаточно эффективно управлять заказами, а также планировать, организовывать и контролировать процессы доставки товаров.
На сегодняшний день в качестве основной площадки, объединяющей различные технологические решения, выступает цифровая платформа. Данное обстоятельство актуализирует необходимость изучения концепции формирования цифровых платформ, с целью выявления ключевых технических и организационных компонент, значимых для логистики.
Цифровые платформы представляют собой набор элементов, представляющих механизмы приема данных, машинного обучения, искусственного интеллекта, инструментов API, а также программного обеспечения для мониторинга соответствия нормативным требованиям.
Мировой лидер технологической мысли американская исследовательская компания «Gartner», определяет цифровые платформы как симбиотические наборы технологий, которые за счет работы различных сервисов обеспечивают взаимодействие приложений пользователей и рабочих процессов. При этом платформа выступает не отдельным продуктом, а гибкой структурой, имеющей мощную IT-основу нацеленную на удовлетворение ряда потребностей ее участников. Отметим, цифровые платформы тесно перекликаются с традиционными организационными структурами, что позволяет создать новую более эффективную операционную бизнес-модель.
Цифровая платформа должна отвечать следующим основным критериям:
– алгоритмизация взаимодействия пользователей платформы;
– использование принципа «win-win», т.е. взаимовыгодности взаимодействия;
– масштаб взаимодействия (охват множества потенциальных участников платформы);
– наличие единой информационной среды;
– достижение эффекта сокращения транзакционных издержек при реорганизации бизнес-процессов.
Типология цифровых платформ основывается на таких характеристиках, как: предметный состав, функциональная специализация, методы обработки информации и результат деятельности. На основе перечисленных характеристик выделяются различные типы цифровых платформ, среди которых можно выделить:
– Инструментальные цифровые платформы. Состоят из программных и аппаратных систем (продуктов, стандартов, библиотек, интерфейсов, инструментов), предназначенных для создания прикладных программных и аппаратных решений в области транспортной логистики.
– Инфраструктурные цифровые платформы. Представляют собой экосистемы участников рынка информационных технологий, целью которых является ускорение их выхода на рынок и предоставление решений по автоматизации предоставления услуг потребителям, используют сквозные цифровые технологии для работы с данными.
– Прикладные цифровые платформы. По сути, являются бизнес моделями, предоставляющими возможность алгоритмизированного обмена ценностями между независимыми участниками рынка. Процесс обмена происходит посредством совершения транзакций в единой информационной среде с применением цифровых технологий. [1]
Особенностью цифровых логистических платформ является процесс их формирования на основе традиционных платформенных решений. Следовательно, логистическая платформа представляет собой совокупность экономически жизнеспособных отношений, возникающих между значительным числом независимых участников в транспортных и логистических системах (или цепочках поставок). На основе целостного подхода такие отношения осуществляются в рамках единой интегрированной информационной среды, приводящей к оптимизации общих затрат за счет использования цифровых информационных и коммуникационных технологий для работы с массивом логистических данных на любом уровне иерархии интеграции логистики. В этом случае цифровая логистическая платформа будет выступать интегратором бизнес-процессов, способствующим сокращению издержек и повышению логистического сервиса.
Авторы полагают, что экосистема цифровой логистической платформы может быть построена на основе характеристик, указанных выше, но с учетом принципов организации транспортно-логистических операций. При этом следует учитывать:
– состав участников транспортно-логистических систем (поставщики и потребители транспортно-логи-стических услуг и ресурсов, операторы платформы, регуляторы);
– функциональные составляющие (получение и обмен дополнительной экономической стоимости на транспортно-логистическом рынке);
– способы обработки данных (обработка и анализ информации о заключении и исполнении сделок между несколькими субъектами транспортно-логистического рынка, общая детализация и видимость транзакций);
– результат деятельности (фиксация обмена материальными ценностями).
Наиболее важными показателями, определяющими удовлетворенность потребителей логистическими услугами, являются минимальное время распределения и транзита [2], эффективные методы оплаты и использование информационных технологий. Мировой опыт перехода на технологические платформы предполагает конкуренцию между ведущими просто транспортными и транспортно-логистическими компаниями в скорости приобретения цифровых стартапов и запуска интегрированных цифровых транспортных и логистических платформ [3].
Ярким представителем подобной модели формирования цифровой платформы является китайская национальная логистическая платформа LOGINK. Платформа построена на базе информационного объединения участников логистического процесса при помощи интернет-технологий. При функционировании платформы осуществляется учет следующих типов данных:
– объектные данные (информация о состоянии логистической инфраструктуры);
– информационные данные (основа нормативного регулирования в сфере логистики и транспорта);
– статусные данные (информация о выборе варианта перевозки, с учетом способа и вида транспорта);
– кредитные данные (идентификация участников для прозрачности сделок);
– данные о местоположении (информация о движении транспорта в режиме реального времени).
Платформа объединяет всех участников цепи поставок от грузовых и логистических операторов, до портов, терминалов, в том числе производителей и потребителей логистических услуг, взаимодействующих на основе принципов взаимного обмена и прозрачности данных. Следует отметить, LOGINK объединяет около 50 лидирующих китайских компаний, 91 логистический парк, около 26 морских портов и более 500 тысяч предприятий различного профиля. Информационная система позволяет обрабатывать до 30 млн. сообщений каждый день и сопровождать перевозку более 1 трлн. товаров в год.
Платформа повышает эффективность логистики компаний-участниц на 80%, сокращая процесс обработки информации на 95%, и оптимизирует логистический цикл на 3%. LOGINK обеспечивает кооперацию в цепях поставок ряда областей, например: трансграничное сотрудничество и электронная коммерция, поставку логистических ресурсов и организацию факторинга, контейнерные перевозки и т.д.
Опыт китайских разработчиков и исследователей позволяет сформировать представление о работе цифровых платформ и возможностях их практического применения [4]. Основными техническими средствами, необходимыми для функционирования цифровой логистической платформы являются: IoT, RFID, DDSN и GSM.
Internet of things. Интернет вещей IoT – технология, целью которой является объединение объектов через Интернет [5]. Объектами выступают все элементы, способные передавать информацию. Поток информации, генерируемый за счет взаимосвязи этих объектов, используется для облегчения их отслеживания, управления, контроля и координации. Интеграция разнородных технологий представляет собой основную задачу, которую необходимо решить, чтобы воспользоваться преимуществами IoT.
Radio Frequency IDentification (RFID). RFID метки состоят из штрих-кодов, считывающих информацию о расположении и состоянии груза. «Считыватель» посылает радиоволны, метка в свою очередь отправляет идентификационную информацию. Как только метка прикреплена, она обменивается данными с TTF (Tag Talk First) или ITF (Interrogator Talk First). Через TTF метка передает первичную информацию, содержащуюся в чипе. Через ITF отправляется запрос метке. Существует три типа тегов: пассивные, активные и полуактивные. Пассивные метки работают за счет магнитного поля, индуцируемым их читателями во время идентификации. Активные метки питаются от батарей и могут отправлять данные без запроса читателя. В полуактивном теге используется гибридный механизм с автономным питанием. Он активируется по запросу считывателя тегов, что позволяет снизить энергопотребление по сравнению с активными тегами. Расстояние считывания RFID-чипов варьируется от нескольких сантиметров до 10-и метров, но, при помощи технологий дальней связи, может превышать 200 метров.
Demand Driven Supply Networks (DDSN). Традиционные системы цепочек поставок и управления бизнесом имеют недостатки, так как поставщики, в большинстве случаев, не имеют представления о заказах клиентов и рыночном спросе. Demand Driven Supply Networks – управляемые спросом сети поставок, IT-подход, обеспечивающий взаимодействие между предприятиями. DDSN предоставляет обмен данными по цепочке поставок внутри компании. Используя этот подход, вместо индивидуального реагирования на заказы отдельных клиентов, поставщикам эффективнее реорганизовать себя и работать вместе, обмениваясь большим количеством данных, чтобы лучше реагировать на все запросы рынка, такое взаимодействие достигается путем внедрения и использования цифровой логистической платформы [6].
Graded Surveillance Measures (GSM). В GSM существует два подхода в моделировании бизнес-процессов: подход, ориентированный на процесс и подход, ориентированный на предмет. В процессно-ориентированном подходе бизнес-процесс представлен различными процедурами или задачами, которые выполняются в течение жизненного цикла бизнес-процесса. Наиболее многообещающим является подход, ориентированный на предмет, который объединяет представление жизненного цикла бизнес-объекта с информационной моделью, которая собирает данные, относящиеся к объектам одного и того же типа [7].
Глобальная архитектура взаимодействия вышеозначенных технологий на базе цифровой логистической платформы представлена на рисунке 1.
В основе проектирования архитектуры взаимодействия субъектов цепи поставок, акцент необходимо сделать на RFID идентификацию, определяющую местоположение и предоставляющую обмен данными о поддонах, перевозимых в контейнерах. Поддон, оснащенный чипом RFID, содержит информацию о продукте, а электронный код продукта (код EPC), вес, описание содержимого поддона, опасность продукта, несовместимые продукты и др. Когда поддон готов к загрузке RFID считывает информацию и отправляет ее на облачную платформу, используя систему передачи GSM.
Модель GSM описывает процесс идентификации. Основной этап модели «Чтение и передача RFID-ме-ток» активируется двумя объединенными событиями («Поддон готов к погрузке» и «Транспортное средство прибыло»). Когда этот этап активирован, внутренний этап «считывание информации тега» активируется автоматически. Выполняются задачи «считывание информации RFID-метки поддона» и «отправка информации о поддоне». Внутренний этап «Проверка и подтверждение платформы» отвечает за две задачи: проверку прочитанной информации и уведомление о результатах для соответствующих пользователей.
Рисунок 1 – Процесс движения информационного потока в проектируемой цифровой логистической платформе
Таким образом, ЯРГО метки считывают информацию от разнородных конечных устройств, информация отправляется в базу данных облачного хранилища, входящие данные обрабатываются, соответствующим пользователям отправляются необходимые уведомления, далее информация шифруется, что обеспечивает конфиденциальность.
Облачное хранилище (рис 1), используется еще и для хранения данных в 1оТ, объем и безопасность которых (контроль доступа, аутентификация и авторизация) являются наиболее важными проблемами данного этапа. Для выполнения задач платформа должна хранить информацию о бизнес-объектах, связанных с бизнес-событиями и пользователями. Облачная платформа должна заниматься репликацией, управлением и обеспечивать производительность и доступность.
В исследовании Д. Р. Гнимпиба, А. Нейт-Сиди-Моха и др. предлагается модель облачной платформы [5], доработанная авторами и представленная на рисунке 2.
Модель состоит из бизнес-объектов, содержащих код ЕРС, который используется в качестве уникального идентификатора. В облаке хранятся GPS-координаты объекта и информация об окружающей среде. Объект может быть составной частью многих других бизнес-объектов (например, контейнер состоит из штабелей, составленных из поддонов, а поддоны – из товаров, упакованных производителем). Данные сведения принадлежат передачи бизнес-пользователю. Для получения доступа к платформе используются идентификационный ключ, логин и пароль.
Мероприятие
поступление необходимых данных
тип данных
порядок данных
Юридическое лицо
EPC код
GPS
Температура, давление и влажность
Пользователь
Логин
Пароль
Идентификатор
Рисунок 2 – Хранение информации на облачной платформе
Таким образом, на основе вышеизложенного авторами определен алгоритм создания цифровых логистических платформ, который содержит следующие этапы:
1-й этап: Разработка проекта цифровой логистической платформы.
2-й этап: Определение основных технических средств, необходимых для функционирования цифровой логистической платформы.
3-й этап: Формирование организационной структуры и механизмов регулирования работы площадки.
4-й этап: Формирование структуры стейкхолдеров и участников.
5-й этап: Организация работы информационного центра и обеспечение бесперебойного сбора и анализа
данных.
6-й этап: Координация взаимодействием участников и управление материальными, информационными и финансовыми потоками на базе платформы.
В целом, феномен цифровых платформ, оказывает инновационное влияние на бизнес-модели и рынок. Распределенные сетевые решения, такие как блокчейн и новые экосистемы Интернета вещей, влияют на многие сферы и продолжают совершенствоваться. Предприятия разных отраслей в настоящее время интегрируют основные виды деятельности с цифровыми платформами, предоставляя инновационные услуги и лучшие результаты как для бизнеса, так и для клиентов. Возросшее значение этих новых цифровых отношений указывает на гораздо более глубокий стратегический сдвиг для бизнеса.
Одним из главных направлений дальнейшего развития цифровых платформ, в том числе и логистических, является создание экосистем. Предприятия должны использовать цифровые экосистемы посредством принятия тактических решений, ориентированных на долгосрочный рост, если они надеются сохранить конкурентоспособность в долгосрочной перспективе. Сделав этот шаг, компании заложат основу для построения будущих цифровых цепочек создания стоимости и улучшат свое позиционирование в центре развивающихся цифровых рынков, таких как контейнеризация и бессерверные технологии.
Источники:
1. Дмитриев А. В., Пластуняк И. А. Интегрированные цифровые платформы для развития транспортно-логистических услуг // Международная конференция по цифровой трансформации в логистике и инфраструктуре. – Санкт-Петербург: основные моменты Атлантиды в компьютерных науках, 2021. – С. 136-141.
2. Е. Корчагина, А. Бочкарев, П. Бочкарев, С. Барыкин и С. Суворова. Порядок оптимизации динамического программирования и планирования контейнерных перевозок // E3S Web Conferences 135, 02021 (2021). Doi.org/10.1051/e3sconf/202113502021
3. Имран М., Абдул Хамид, Азиз А. Б., Васим-Уль-Хамидб. Факторы, способствующие удовлетворению клиентов электронной логистикой: опосредующая роль информационных технологий (2021) // Неопределенное управление цепочками поставок, 2021, № 7, Ч. 1, С. 36-72.
4. Китайская национальная платформа для логистики LOGINK – URL: https://seanews.ru/2021/11/30/kitajskaja-nacional-naja-platforma-dl/
5. Д. Р. Гнимпиба, А. Нейт-Сиди-Моха и др. Использование технологий Интернета вещей для совместной цепочки поставок: применение к отслеживанию поддонов и контейнеров // Международный семинар по мобильным пространственным информационным системам (MSIS 2021). Elsevier, 2021.
6. Сваруп Аджай. Проектируя управляемую спросом сеть поставок. // LBS Journal of Management & Research. Том 10 (2), стр. 35-40. 2021.
7. Ричард Халл, Элио Дамаджио, Фабиана Фурнье, Манмохан Гупта, Фенно (Терри), Стейси Хобсон, Марк Линехан, Шридхар Марадугу, Анил Нигам, Пиявади Сукавирия, Роман Вакулин. Внедрение подхода «охранник-этап-этап» для определения жизненного цикла бизнес-объекта. // Международный Семинар по веб-сервисам и формальным методам (WS-FM); 2021.
Reference:
1. Dmitriev A.V, Plastunyak I.A. Integrated digital platforms for development of transport and logistics services // International Conference on Digital Transformation in Logistics and Infrastructure. – Saint-Petersburg: Atlantis Highlights in Computer Sciences, 2021. – С. 136-141.
2. Elena Korchagina, Andrey Bochkarev, Pavel Bochkarev, Sergey Barykin and Svetlana Suvorova. The Treatment of Optimizing Container Transportation Dynamic Programming and Planning // E3S Web Conferences 135, 02021 (2021). doi.org/10.1051/e3sconf/202113502021
3. Imran, M., Abdul Hamid, Aziz A.B., Waseem-Ul-Hameedb. The contributing factors towards e-logistic customer satisfaction: A mediating role of information technology (2021) // Uncertain Supply Chain Management, 2021, vol. 7, no 1, pp. 36 – 72.
4. Китайская национальная платформа для логистики LOGINK/ – URL: https://seanews.ru/2021/11/30/kitajskaja-nacional-naja-platforma-dl/ (дата обращения 27.04.2020).
5. D. R. Gnimpieba Z., A. Nait-Sidi-Moha, D. Durandb, J. Fortina Using Internet of Things technologies for a collaborative supply chain: Application to tracking of pallets and containers // International Workshop on Mobile Spatial Information Systems (MSIS 2021). Elsevier, 2021.
6. Swaroop Ajay, Designing a Demand Driven Supply Network. LBS Journal of Management & Research. Vol 10 (2), pp. 3540. 2021.
7. Richard Hull, Elio Damaggio, Fabiana Fournier, Manmohan Gupta, Fenno (Terry), Stacy Hobson, Mark Linehan, Sridhar Maradugu, Anil Nigam, Piyawadee Sukaviriya, Roman Vaculin. Introducing the Guard-Stage-Milestone Approach for Specifying Business Entity Lifecycles. Preprint from Proc. Intl.Workshop on Web Services and Formal Methods (WS-FM); 2021.
Ход решения в jupyter notebook
Как всегда, начинаем с импорта необходимых стандартных библиотек. Из дополнительных библиотек подключаем docplex – о ней мы уже сказали выше, и networkx – эта библиотека поможет нам построить наглядное решение нашей задачи в виде графа.
import pandas as pd
import docplex.mp as dpx
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import networkx as nx
import warnings
warnings.filterwarnings('ignore')
boldText = '33[1m'
Далее, задаём исходные данные условия задачи из таблиц 1-3.
1. Исходные данные
# Данные по поставщикам
NProds = 3 #Количество производителей
NBuyers = 4 #Количество покупателей
d = 50 #Константная цена товара в Порту
BuyersMaxPrice = 100 #максимальная цена
# Производители
ProdIndex=[]
for i in range(NProds):
ProdIndex.append('P' str(i 1))
ProdData = {'Possibilities': [890,534,1153],
'SupplyPort': [18,13,18],
'ProdCost': [12,21,10],
'PortPrice': [d,d,d],
'Overhead': [18 12,13 21,18 10]
}
Producers = pd.DataFrame(ProdData, ProdIndex)
# Покупатели
BuyIndex = ['B1','B2','B3','B4']
BuyData = {'Scenario1': [78,121,94,85], 'Scenario2': [117,670,193,279]}
Buyers = pd.DataFrame(BuyData, BuyIndex)
#выбор сценария
Scenario = Buyers.columns[0] # 0 - Scenario1
# 1 - Scenario2
print(Scenario)
# Тарифы на железнодорожные перевозки
RailData = {'P1':[14,23,21,42], 'P2':[26,10,19,36], 'P3':[15,38,18,15]}
RailFares = pd.DataFrame(RailData, BuyIndex)
totCost = RailFares Producers['ProdCost']
Определим минимальные накладные расходы, при поставке продуктов от производителей к покупателям, которые включают себестоимость продукта и стоимость железнодорожных перевозок. Эти накладные расходы будут индивидуальными для каждой пары производитель – покупатель, как раз он и будут определять конкурентное приимущество одних производителей над другими.
minCostProd = np.zeros((NProds, NBuyers)).astype(int)
for j in range(NBuyers):
min_idx = np.argmin(totCost.values[j,:])
minCostProd[min_idx, j] = totCost.values[j,min_idx]
minCostProd = pd.DataFrame(data=minCostProd, index=totCost.columns, columns=totCost.index)
# Тарифы на жд перевозки от i-го производителя j-му покупателю себестоимость производства i-го производителя
k = np.zeros((NProds, NBuyers)).astype(int)
i=0
j=0
for prod, pcost in zip(RailFares, Producers['ProdCost']): # перебор по Producers
j=0
for rfares in RailFares[prod]:
k[i,j] = rfares pcost
j =1
i =1
Аналогичным образом определим минимальные накладные расходы, при поставке продуктов от производителей в морской порт для продажи продуктов зарубежным покупателям.
# Тарифы на жд перевозки в порт себестоимость производства i-го производителя
z = np.empty(NProds).astype(int)
i=0
for SupplyPort, ProdCost in zip(Producers['SupplyPort'], Producers['ProdCost']):
z[i] = SupplyPort ProdCost
i =1
Теперь из условия о минимально выгодной цене для производителей при поставке продуктов покупателям, которое мы сформулировали в пятом ограничении, получим цены для каждой пары производитель – покупатель.
#Наименее выгодная цена для производителей при поставке покупателям
ProdBestPrices = np.zeros((NProds, NBuyers)).astype(int)
for j in range(NBuyers):
i=0
for portPrice, supplyPort, supplyProd in zip(Producers['PortPrice'], Producers['SupplyPort'], k[:,j]):
# print(portPrice, supplyPort, supplyProd)
ProdBestPrices[i,j] = portPrice-supplyPort 1 supplyProd
i =1
На основании полученных цен и с учётом условия покупки покупателем продукта по минимальной цене, предложенной производителем, построим матрицу спроса и предложения для всех пар производитель – покупатель. Нули в этой матрице будут определять отсутствие поставок в паре производитель — покупатель, единицы – наличие поставок.
#Матрица спроса покупателей
h = np.zeros((NProds, NBuyers)).astype(int)
for j in range(NBuyers):
min_idxs = np.argmin(ProdBestPrices[:,j])
h[min_idxs, j] = 1
Далее импортируем из библиотеки docplex модель Model, являющуюся вычислительным ядром нашей оптимизационной задачи.
2. Модель
from docplex.mp.model import Model
mdl = dpx.model.Model("ChemProd")
Зададим искомые переменные задачи и сформулированные выше ограничения.
# матрица решений, показывающая количество тонн продукта поставленное от i-го производителя j-му покупателю
# столбец-производитель; строка-покупатель
x = mdl.integer_var_matrix(NProds, NBuyers, name=lambda ij: "ProdVol_to_Buyer%d_%d" %(ij[0], ij[1]))
# матрица решений, показывающая цену за тонну продукта i-го производителя j-му покупателю
# столбец-производитель; строка-покупатель
y = mdl.integer_var_matrix(NProds, NBuyers, name=lambda ij: "ProdPrice_to_Buyer%d_%d" %(ij[0], ij[1]))
# вектор решений - количество продукта перевнзённое в порт
p = mdl.integer_var_list(NProds, name='ProdVol_to_port')
3. Ограничения модели
1. Ограничения по количеству тонн производимого продукта для производителей
# 1. Ограничения по количеству тонн производимого продукта для производителей
for i, possib, cts_name in zip(range(NProds), Producers['Possibilities'], Producers['Possibilities'].index):
mdl.add_constraint(mdl.sum(x[i,j] for j in range(NBuyers)) p[i] <= possib, ctname='Possib' cts_name)
2. Ограничения по потребностям покупателей
# 2. Ограничения по потребностям покупателей
for j, req, buyer in zip(range(NBuyers), Buyers[Scenario], Buyers[Scenario].index):
mdl.add_constraint(mdl.sum(x[i,j] for i in range(NProds)) == req, ctname=buyer 'Need')
3. Ограничения по цене продукта
# 3. Ограничения по цене продукта
for i in range(NProds):
for j in range(NBuyers):
#mdl.add_constraints( [y[i,j] <= BuyersMaxPrice, y[i,j] >= 0], ['BuyersMaxPrice', 'BuyersMinPrice'])
mdl.add_constraint( y[i,j] == ProdBestPrices[i,j], 'ProdBestPrices')
Для данной задачи четвёртое ограничение о неотрицательности переменных выполняется исходя из первых 3х ограничений.
Теперь, когда ограничения нашей модели созданы, сформируем нашу целевую функцию и зададим её максимизацию.
#Доставка покупателям
SalesBuyers = mdl.sum( (y[i,j]-k[i,j] )*x[i,j]*h[i,j] for i in range(NProds) for j in range(NBuyers) )
#Доставка в порт
SalesPort = mdl.sum( (d-z[i])*p[i] for i in range(NProds) )
#Целевая функция
mdl.maximize(SalesBuyers SalesPort)
4. Решение модели
%%time
assert mdl.solve(), "!!! Solve of the model fails"
prodsVol = np.zeros((NProds, NBuyers)).astype(int)
prodsPrice = np.zeros((NProds, NBuyers)).astype(int)
VolPrice = np.zeros((NProds, NBuyers)).astype(int)
VolPricePort = np.zeros((NProds, 1)).astype(int)
for i in range(NProds):
#VolPricePort[i] = int((d - z[i])*p[i].solution_value)
VolPricePort[i] = int(p[i].solution_value*d)
for j in range(NBuyers):
prodsVol[i,j] = x[i,j].solution_value
prodsPrice[i,j] = y[i,j].solution_value
#VolPrice[i,j] = (y[i,j].solution_value - k[i,j])*x[i,j].solution_value
VolPrice[i,j] = y[i,j].solution_value*x[i,j].solution_value
#Количество тонн продукта от i-го производителя j-му покупателю
VolData = dict(zip(ProdIndex, prodsVol))
DecisionVol = pd.DataFrame(VolData, BuyIndex)
#Количество тонн продукта от i-го производителя в порт
VolPricePortData = dict(zip(ProdIndex, (VolPricePort)))
DecisionVolPort = pd.DataFrame(VolPricePortData, index=['Pt'])
#Цена за тонну продукта i-го производителя j-му покупателю
PriceData = dict(zip(ProdIndex, prodsPrice))
DecisionPrice = pd.DataFrame(PriceData, BuyIndex)
#Объём продаж i-го производителя j-му покупателю за вычетом затрат на доставку товара
VolPriceData = dict(zip(ProdIndex, VolPrice))
DecisionVolPrice = pd.DataFrame(VolPriceData, BuyIndex)
В качестве решения задачи приведу результирующую таблицу, отображающую кто, у кого и по каким ценам будет покупать продукт после того, как рынок придет в состояние равновесия.
Как я уже писал выше, для наглядности полученного решения представим его в виде графа, отображающего сложившуюся ситуацию на рынке. Для этого используем библиотеку networkx и следующий скрипт.
G = nx.Graph()
#Морской порт
for p in ProdIndex:
G.add_edge(p, 'Pt', w=DecisionVolPort[p]['Pt'])
#Продавцы / покупатели
for b in BuyIndex:
for p in ProdIndex:
G.add_edge(p, b, w=DecisionVolPrice[p][b])
nodeKeys = []
nodePos = []
num_buy = 0
num_prod = 0
for p in ProdIndex:
x_prod = int(-NProds/2) num_prod
num_prod =1
nodeKeys.append(p)
nodeKeys.append('Pt')
nodePos.append([x_prod,1])
nodePos.append([0,2])
for b in BuyIndex:
num_prod = 0
x_buy = int(-NBuyers/2) num_buy
num_buy =1
for p in ProdIndex:
x_prod = int(-NProds/2) num_prod
num_prod =1
nodeKeys.append(p)
nodeKeys.append(b)
nodePos.append([x_prod,1])
nodePos.append([x_buy 0.5,0])
pos = dict(zip(nodeKeys, nodePos))
elarge = [(u, v) for (u, v, d) in G.edges(data=True) if d['w'] > 0]
esmall = [(u, v) for (u, v, d) in G.edges(data=True) if d['w'] == 0]
plt.figure(figsize=(16, 8))
plt.subplot(1,2,1)
nx.draw_networkx_nodes(G, pos=pos, node_size=7000/((NProds NBuyers)/2))
nx.draw_networkx_edges(G, pos=pos, edgelist=elarge, width=2, edge_color='black')
nx.draw_networkx_edges(G, pos=pos, edgelist=esmall, width=2, alpha=0.3, edge_color='gray', style='dashed')
edge_values = []
for (u, v, d) in G.edges(data=True):
if d['w']>0:
edge_values.append(int(d['w']))
labels = dict(zip(elarge, edge_values))
nx.draw_networkx_edge_labels(G, pos=pos, edge_labels=labels, font_size=12, font_color='black')
# labels
nx.draw_networkx_labels(G, pos=pos, font_size=70/((NProds NBuyers)/2), font_color='white')
plt.axis('off')
plt.subplot(1,2,2)
plt.grid(True)
sns.barplot(x=DecisionVolPrice.columns,
y=sumBuyPort,
palette="deep").set_title('Суммарный объём продаж')
plt.show()
После выполнения скрипта на экране сформируется граф нашего моделируемого виртуального рынка согласно результатам решения задачи. На рёбрах графа отображено произведение количества поставляемых продуктов на их цену, а в вершинах графа расположены участники рынка: Pt – морской порт; P1-P3 – производители; B1-B4 – покупатели.
Заключение
В заключении хотелось бы сказать, что данный материал статьи, как мне кажется, будет полезен для тех, кто хочет на практике разобраться с решением оптимизационных задач и, в частности, с решением транспортной задачи. В своей статье я собрал и обобщил минимальный теоретический материал, необходимый для общего понимания подхода в решении подобных задач, а также привёл пример такой задачи и минимальный набор инструментов для её решения. Описанный подход позволяет получить масштабируемое решение с возможностью варьирования исходных условий задачи.
Ссылки на источники
- Решение закрытой транспортной задачи с дополнительными условиями средствами Python;
- Решение задач линейного программирования с использованием Python;
- Дыбская В.В., Зайцев Е.И., Сергеев В.И., Стерлигова А.Н. MBA Логистика. – М.: Эксмо, 2009;
- Avinash K. Dixit, Barry J. Nalebuff «The Art of Strategy: A Game Theorist’s Guide to Success in Business and Life».