Алгоритм планирования
Сердце DeepRuta — это мощный алгоритм, который решает задачу маршрутизации транспорта. Его цель — построить наиболее эффективные маршруты с учётом множества реальных ограничений и условий.
🚀 Принцип работы алгоритма
Алгоритм работает по итерационному подходу:
- Формируется начальное решение — маршрут, соответствующий заданным параметрам.
- Постепенно вносятся изменения — маршруты модифицируются: меняются точки, порядок, распределение задач.
- Оценка нового решения — сравнивается, стало ли оно лучше.
Принятие изменений:
- Если новое решение лучше — оно принимается.
- Если хуже — алгоритм может принять его с определённой вероятностью, чтобы избежать застревания в локальном минимуме.
- Процесс повторяется, пока не будет найден наилучший возможный маршрут.
🧠 Что учитывает алгоритм?
Алгоритм ищет оптимальное решение, минимизируя целевую функцию, которая отражает:
- 🚗 Затраты на ресурсы — например, количество задействованных машин
- ⚠️ Штрафы за нарушения ограничений — например, опоздание, превышение времени смены
Общая формула:
total_cost_with_penalty = ресурсы + штрафы Решение с наименьшей total_cost_with_penalty считается оптимальным.
⚙️ Ограничения: жёсткие и мягкие
🔒 Жёсткие ограничения (нарушать нельзя): - Количество доступной техники - Вместимость бака - Несовместимость задач и техники (например, КДМ не может загружать снег) - Очерёдность выполнения задач
🌿 Мягкие ограничения (нарушаются с назначением штрафа): - Временные окна - Максимальный пробег - Количествво остановок - Продолжительность смены
Некоторые параметры, такие как «временные окна» или «продолжительность смены», могут быть как мягкими, так и жёсткими — вы выбираете тип в настройках.
⚖️ Как сравниваются разные решения?
Чтобы сравнить разные маршруты, все критерии пересчитываются в единую внутреннюю валюту. Это позволяет алгоритму взвешивать: стоит ли экономия топлива увеличения пробега, или стоит ли сокращение машин более высоких рисков опозданий.
Пример: Сократив количество автомобилей, алгоритм может увеличить пробег и задержки — но если общая total_cost_with_penalty при этом уменьшилась, такое решение считается лучше.
📊 Настройки стоимости
Стоимость ресурсов настраивается через параметр cost Фактические затраты можно задать отдельно — они не участвуют в оптимизации, но используются в отчётах Штрафы за нарушения настраиваются в отдельном разделе Информация о штрафах
💡 В итоге
Алгоритм DeepRuta не просто "строит маршруты" — он ищет баланс между качеством обслуживания и эффективностью использования ресурсов, позволяя вам управлять приоритетами и гибко адаптировать правила под реальные условия.
📩 Нужна помощь с настройкой параметров? Напишите нам