18 декабря 2024 г.

Михаил Красильников

Михаил Красильников, директор департамента разработки и внедрения систем искусственного интеллекта BIA Technologies, рассказывает о применении методов математической оптимизации в бизнесе, принципах работы и почему их стоит внедрять в деятельность компаний.

Определения и принципы

Ключевые понятия в математической оптимизации — это, во-первых, целевой показатель — та величина, которая служит маркером качества работы бизнеса: ее нужно максимизировать, если это, к примеру, выручка или минимизировать, если это затраты. И, во-вторых, это набор ограничений, в которых приходится действовать. Например, сотрудник может вырабатывать максимум 10 единиц продукта типа А, либо максимум 20 единиц продукта типа B. Нужно подобрать такую комбинацию ежедневной выработки продуктов А и B, чтобы суммарная стоимость была максимальной, при этом есть границы, за которые мы не можем выйти. Мы не можем ожидать, что сотрудник будет вырабатывать 30 единиц продукта, потому что существуют физические ограничения.

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

Для решения оптимизационных задач задействуется специальный математический аппарат, поскольку на практике приходится перебирать огромное количество вариантов, сравнивать их между собой и делать для него оценку целевого показателя. К примеру, перед логистической фирмой стоит задача оптимизировать доставку, чтобы минимальное количество машин доставляло за единицу времени необходимое число посылок, при этом попадая в клиентские окна и учитывая ряд правил. Допустим, если получатель юридическое лицо, то у водителя должен быть оформлен пропуск на объект. Или, например, желательно отправлять водителя, который уже ездил к этому клиенту: у него скорость работы на этом адресе будет выше, поскольку он там уже был. Или еще пример правила: алгоритм строит последовательность посещения клиентов А -> В -> С -> D -> E. При этом для каждого клиента A, B, С, D и E есть свое временное окно. Если, допустим, клиент C попросил приехать на час позже, нужно заранее спланировать, как успеть сначала заехать к клиенту D, чтобы потом не слишком долго возвращаться к C и потом ехать дальше к E.

В парке компании тысячи машин, у нее могут быть десятки тысяч заказов каждый день — и количество перебора всех возможных вариантов погрузок растет экспоненциально. Возвращаясь к предыдущему примеру, АBCED, DEBCA, CEADB и так далее — это разные перестановки последовательностей объезда, хотя клиенты те же самые. Действовать путем простого перебора слишком долго и затратно. Поэтому существуют математические методы, позволяющие рассматривать не все варианты, а отсекать заведомо неподходящие, то есть задачу можно решить неполным перебором и построить маршруты с меньшим числом вариантов, т.е. найти лучшее решение при всех возможных ограничениях.

Сферы применения

Сфер применения математической оптимизации достаточно много, из них можно выделить несколько классов. Первый класс — это задачи планирования, в том числе построения расписаний. Сюда относятся задачи по составлению графиков работы сотрудников. Например, у некого коллектива есть цель построить расписание так, чтобы в моменты пикового спроса присутствовало максимальное число сотрудников. При этом есть определенные ограничения: каждый сотрудник работает в неделю не более 40 часов и у него минимум два выходных и так далее. Соответственно, перебираются все варианты расписания, и выходные большей части сотрудников назначаются на дни с минимальным спросом, чтобы в дни с пиковыми нагрузками они присутствовали на работе. Это один из основных функционалов WFM-систем, который прогнозирует будущую нагрузку и потом под нее создает оптимальный график выхода сотрудников, учитывая условия трудового контракта с работником (сменность, минимальная и максимальная выработка и т.д.).

Это лишь один из возможных вариантов — под планированием может пониматься что угодно, например, планирование производства. Математическая оптимизация помогает подобрать, когда, на каких станках и что именно будет выпускаться и обрабатываться, чтобы выход продукции был максимально выгодным, с точки зрения прибыли или процесса, предположим, сократить количество переналадок оборудования при смене технологических карт производства. Или, допустим, она позволяет составить график техосмотра так, чтобы простой оборудования во время ТО не приходился на периоды с большой нагрузкой.

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

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

Еще один интересный пример — компенсация движения на видеосервисах. Когда видео снимается без штатива, кадр слегка дрожит, что вызывает неудобство при просмотре. Благодаря математической оптимизации можно нивелировать эти колебания — сделать видео достаточно стабильным.

Математическая оптимизация широко используется в курьерской доставке. При этом для непищевых товаров уже вполне привычная практика, когда несколько десятков заказов компонуются так, чтобы машина ехала оптимальным маршрутом и объехала максимум точек за минимум времени — как в примере с клиентами A, B, C, D и E. Однако недавно такая же практика начала внедряться и в доставке еды из ресторанов. Если раньше стандартным был подход «один курьер — один заказ», то сегодня и здесь с помощью математической оптимизации стараются отдавать сразу 2-3 заказа одному курьеру, чтобы усовершенствовать процесс и минимизировать затраты.

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

Этапы внедрения

Внедрение любого ИТ-инструмента в работу — непростая история, а внедрение сложного инструмента — это еще более трудоемкая задача. Начинается оно со сбора бизнес-правил в форме ограничений и одного или нескольких целевых показателей, которых необходимо достичь с помощью новой системы планирования, составления расписания и так далее.

  • Иначе говоря, первый этап — это сбор требований и ограничений. Также необходимо понимать, каким образом эта метрика будет измеряться после внедрения. Причем требуется устранить влияние смежных процессов. Зачастую указанный целевой показатель не равен KPI, установленному у подразделения, обеспечивающего этот процесс. Кроме того, этот показатель должен быть максимально оцифрован и рассчитываться по данным, которые есть в информационных системах предприятия.
  • Второй этап включает сбор данных — справочных, вводных и так далее. К примеру, для составления расписания собираются сведения о сотрудниках: кто по какому графику работает и так далее. Данные берутся из информационных систем и других источников.
  • На следующем этапе пишется прототип алгоритма, который забирает описанные входные данные, результаты, выгруженные из информационных баз данных, и — если продолжать предыдущий пример — составляет расписание под каждого сотрудника. Выводятся статистические показатели, которые позволяют верхнеуровнево оценить качество расписания.
  • Далее следует вдумчивый анализ этих решений, досогласование и корректировка требований. Как правило, на входе нет полного видения, как будет выглядеть система, и поэтому требования могут быть немного неточными. После построения прототипа у бизнес-пользователя появляется представление, как пользоваться системой, и он сможет дообогатить ее необходимыми требованиями и данными.
  • На следующем этапе, после требуемого количества итераций по изменению и адаптации прототипа, когда результат близок к корректному, происходит реализация интеграции для работы с задачей в непрерывном контуре. То есть реализуется внедрение по обмену данными не на периодических выгрузках, а именно в режиме реального времени и регулярного запуска систем.
  • Наконец, на последних этапах идет отладка: тестовая и опытная эксплуатации, опытная промышленная эксплуатация и, наконец, передача в промышленную эксплуатацию.

Ошибки и сложности при внедрении математической оптимизации

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

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

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

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

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

Источник: Михаил Красильников, директор департамента разработки и внедрения систем искусственного интеллекта BIA Technologies