Оптимизация расписания ремонтных бригад

pic.jpg

Кейс написан по материалам блога Компании AnyLogic – вендора программной платформы для имитационного моделирования, использованной в проекте.

Современные реалии на нефтяном рынке требуют от нефтедобывающих компаний уметь гибко реагировать на изменяющиеся условия: быстро сокращать или наращивать объёмы добычи. Посмотрев на заголовки новостных YouTube каналов весной 2020 года, очевидно, какую роль играет возможность оперативного просчёта экономики скважин. В другом нашем кейсе мы писали о создании цифрового двойника нефтяного поля для одной из ведущих нефтедобывающих компаний России. Данный проект – продолжение работы с этой компанией.

Задача и анализ данных

Бизнес-заказчик пришёл к нам с вопросом: каким образом возможно сокращение простоев скважин, которые в прошлом году достигали до 10% от добычи?

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

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

Базовая модель

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

Мы проанализировали модель и выяснили, как оптимизировать процесс составления расписания ремонтных бригад: передвинуть часть плановых ремонтов, чтобы минимизировать простои и снизить пиковую нагрузку. Результаты моделирования использовались при создании системы оптимизации.

Моделирование базового плана ремонтов Моделирование оптимизированного плана ремонтов

Статистика модели: базовый и оптимизационный сценарии

Оптимизация модели

Для оптимизации движения мы применили метод ветвей и границ (branch & bound), который хорошо зарекомендовал себя для решения транспортных задач. Список задач разделялся на блоки по 10 дней, задачи из блока распределялись по свободным бригадам. В свою очередь, за каждой бригадой закреплялись скважины, которые нужно было проверить за 10 дней. С помощью метода ветвей и границ для каждой бригады решалась задача коммивояжера – вычислялся минимальный по расстоянию план посещения скважин.

Мы реализовали этот алгоритм планирования и получили новую модель, созданную для тех же условий: период, планы, используемые дороги, паузы в добыче, поломки и длительности ремонтов. В результате новая модель не показала потенциального выигрыша: результаты отличались от базовой модели на 1-2%, что сравнимо с погрешностью при моделировании.

Мы были удивлены такими результатами работы алгоритма, проверили правильность реализации алгоритма, провели повторные расчеты и обсудили результаты внутри команды. В итоге мы разработали собственный эвристический алгоритм, который позволил достичь сокращения объема недополученной нефти на 32%.

Как оптимизация и имитация дополняют друг друга?

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

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

AnyLogic очень хорошо себя показывает при таком использовании, так как имеет открытый интерфейс. Модель может быть легко параметризирована Excel-файлом, полученным как результат оптимизации, может читать данные из любой внешней базы. Модель может быть экспортирована как Java-приложение, запускаться из сторонней программы и параметризироваться из базы данных. И наоборот, из модели можно вызывать сторонние алгоритмы, написанные на Java, C++ и Python. Модель в AnyLogic можно интегрировать практически с любым оптимизатором.

Расчет оптимального плана назначений бригад в Python

Собственный алгоритм был написан на Python, для обработки данных использовался пакет Pandas. Ключевые этапы алгоритма:

  • Список задач на ремонт скважин делится на блоки по 10 дней.
  • Задачи из каждого блока распределяются по бригадам. Из бригад отфильтровываются те бригады, которые свободны и успевают доехать до скважины к дате ремонта, не создав дополнительного простоя скважины.
  • Каждой скважине из списка назначается ближайшая из свободных бригад.
  • После назначения у бригады изменяется локация и время, когда она освободится. Время освобождения бригады вычисляется исходя из плановой длительности ремонта.
  • Если после выполнения ремонта бригада простаивает более 5 дней, то она направляется на базу.
  • Расчет повторяется.

Таким образом распределяются все задачи из блока на 10 дней, каждой бригаде назначается список скважин и план их обхода.

Результат

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

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

Результат работы Python-скрипта – план назначений бригад на скважины в формате Excel. После этого стандартный и оптимальный планы загружаются в имитационную модель, где сравниваются результаты. Простая эвристика в результате позволяет сократить средний простой скважины с 28,5 дней до 9,6 дней, а объём недополученной нефти – на 32%.

Посмотреть на модель в облаке AnyLogic