Оптимизация календарно-сетевого графика: не один вариант, а граница возможного
Планировщик строит график неделю и получает одну последовательность. Вопрос «что будет, если добавить бригаду» остаётся без ответа, потому что второй недели нет. Оптимизация отвечает на этот вопрос за минуты.
Чем оптимизация отличается от выравнивания ресурсов
Выравнивание в Primavera P6 и похожих системах двигает работы, когда последовательность уже зафиксирована и способ производства уже выбран. Оно снимает перегрузку, но не спрашивает, можно ли сделать иначе.
Оптимизация решает задачу шире. У каждой работы есть несколько режимов: разный состав бригады, разная длительность, разная стоимость. Решатель выбирает режим и время старта для всех работ одновременно. В научной литературе это называется MRCPSP — задача календарного планирования с ограниченными ресурсами и несколькими режимами. Задача трудная, и решают её специальными методами, а не перебором вручную.
Что именно считается
- Срок и стоимость. Результат — набор недоминируемых вариантов, фронт Парето: каждый нельзя улучшить по сроку, не ухудшив по стоимости. Мы не сворачиваем срок и деньги в одну «оценку»: сколько стоит день, решает планировщик.
- Риск. Для каждого варианта — вероятностный срок P50, P80, P90 по методу Монте-Карло. Плохая погода бьёт по всем наружным работам сразу, поэтому в расчёте есть общий погодный фактор. Если разыгрывать длительности независимо, риск получается заниженным.
- Причины. Какие связи, ресурсы и окна держат финиш. Цепочка считается решателем, а не придумывается задним числом.
Почему график на 8 000 строк нельзя подать в решатель напрямую
Точные решатели уверенно работают на сотнях элементов. Реальный график подрядчика — тысячи работ. Поэтому график сначала сворачивается в пакеты работ, обычно 150–400 на объект.
Ключ свёртки берётся из вашего же файла: уровень WBS, код работ, пользовательское поле. Программа показывает, сколько пакетов даст каждый вариант и где свернуть нельзя, например если внутри группы разные календари. Выбирает человек. После расчёта пакеты разворачиваются обратно в исходные работы, раскладка внутри пакета берётся из файла.
Гарантия «не хуже вашего графика»
Ручной график подаётся в решатель как стартовое решение. Поэтому выданный вариант заведомо не длиннее исходного. Если свёртка мешает найти улучшение, система возвращает ваш график и объясняет почему.
Выигрыш отчёт делит на две части. Первая — запасы, которые планировщик заложил вручную и которые не объясняются связями и ресурсами. Это не заслуга расчёта: у запасов бывают причины, которых нет в файле, и такие работы стоит закрепить. Вторая — что дали перестановка работ и выбор способа производства. Если ничего, отчёт так и пишет.
Закрепления и требования
Любую работу можно закрепить, и она встанет ровно туда: это жёсткое ограничение, а не пожелание. Ограничения из договора и ТЗ — «не раньше», «не позже», запретный интервал, минимальный перерыв — вносятся карточками со ссылкой на пункт документа и идут в расчёт только после подтверждения человеком.
Сколько это занимает
| Операция | Бюджет на объекте 300–400 пакетов |
|---|---|
| Одна точка фронта | до 2 минут |
| Полный фронт, 10 вариантов | до 20 минут |
| Пересчёт после изменения | менее минуты |
| Монте-Карло, 10 000 прогонов | 0,34 с на синтетическом объекте в 350 пакетов |
Про то, как отличить работающую оптимизацию от маркетинга, — в статье «ИИ в строительстве».
Вопросы и ответы
Что такое оптимизация календарно-сетевого графика?
Поиск последовательности работ и способов производства, при которых срок и стоимость лучше, чем в исходном графике, с соблюдением связей, ресурсов и календарей.
Чем оптимизация отличается от выравнивания ресурсов?
Выравнивание двигает работы при заданной последовательности и способе производства. Оптимизация выбирает и способ, и время старта для всех работ одновременно.
Что такое фронт Парето в графике?
Набор вариантов, в котором ни один нельзя улучшить по сроку, не ухудшив по стоимости. Из них человек выбирает тот, где цена дня его устраивает.
Можно ли оптимизировать график на тысячи работ?
Да, после свёртки в пакеты работ — обычно 150–400 на объект. Ключ свёртки берётся из вашего файла, а после расчёта пакеты разворачиваются обратно в исходные работы.