Топливный космоконтур 2035
Пульт оператора орбитального топливного узла на 2035–2040 годы — закупки, резервы, стресс-тесты.
- Хакатон
- КосмоХакатон 2026
- Организатор
- КосмоХакатон
- Трек
- Кейс 2
- Даты
- 18–19 сен 2026
- Коммитов
- 113
- Выступали как
- «Умственно усталые»
На КосмоХакатоне нам не хватило тринадцатой страницы
Записка упёрлась в лимит 12 страниц: каждый новый абзац — минус старый.
Кто был в этот раз4 человека
Состав: IR6, m1x, Ivan Banan, Chichetin.
Кейс
Организаторы дали условный орбитальный топливный узел и горизонт 2035–2040 годов. Нужен был рабочий прототип: оператор планирует закупки, резервирует мощности каналов, держит запас, решает про инвестиции и видит, сколько это стоит и обслужен ли спрос. Плюс управленческая записка на 8–12 страниц, где числа совпадают с расчётом.
Сложность в том, что дешёвая тонна ничего не доказывает. Долгосрочный канал с Земли дешевле, но мощность надо резервировать за год. А по take-or-pay платишь за минимальный объём, даже если его не забрал. Спрос растёт почти вчетверо, со 100 до 390 т в год. А стресс начинается в 2038 году, когда часть решений уже оплачена.
Что сдали
Рабочее место оператора: веб-интерфейс и запасной вариант на Streamlit. Оператор меняет резерв или заказ, нажимает «Применить и пересчитать» и видит нарушения с годом, величиной и причиной.
- обзор KPI, поставок, запаса и расходов;
- сравнение трёх вариантов: базовый сценарий, стресс без изменений, стресс с адаптацией;
- стресс-тесты, чувствительность, Монте-Карло, реестр рисков, многокритериальная оценка;
- сохранение планов и выгрузка в XLSX, CSV и JSON по схеме организатора.
Все числа в интерфейсе, выгрузках и записке считает одно расчётное ядро.
Как устроено
- Данные организатора не правятся. Допущения команды вынесены в отдельный реестр с единицами и допустимым диапазоном.
- Ядро идёт по месяцам: резерв, заказ, оплачиваемый объём, фактическая поставка. Дальше материальный баланс: приход минус потери минус выдача, критический спрос обслуживается первым. В конце считаются расходы.
- Проверка ограничений: сервис, 45-дневный запас, ёмкость хранилища, лимиты капвложений, сроки поставки. У каждого нарушения есть год, лимит, величина и причина.
- Оптимизатор решает задачу смешанного целочисленного программирования (MILP) с помощью решателя HiGHS. Он подбирает резервы и заказы сразу под базовый сценарий и стресс. Решения до 2038 года общие, после можно менять только то, что позволяют сроки поставки. Оптимизатор лишь предлагает план, ядро его пересчитывает и проверяет.
- Риск-блок прогоняет тот же план через чувствительность, обратный стресс-тест (поиск порога, на котором план ломается) и Монте-Карло.
Цифры
- 11 056 млн условных единиц (у.е.) — расходы выбранного плана за шесть лет в базовом сценарии. В приведённой стоимости при ставке 7 % — 9 074 млн.
- 114,7 т — дефицит в обязательном стрессе, если ничего не менять. Сервис в худшем году падает до 83,2 %, критический спрос обслужен полностью.
- 1 188 млн у.е. в приведённой стоимости — цена адаптации, которая убирает этот дефицит.
- 540 млн у.е. капвложений при лимите 2 800 млн: модернизация хранилища, снижающая потери с 4,5 до 1,2 %, и новый поставщик.
- 273 автоматические проверки, включая контрольные векторы организатора и инварианты на 300 случайных планах.
- Около 30 мс на расчёт одного плана и 0,1–0,5 с на работу оптимизатора.
Что было трудно
Файл с исходными данными, на который ссылалась постановка, участникам так и не выдали. Пришлось взять контрольный набор из стартового репозитория организаторов и сверить его с PDF-постановкой. В том числе с таблицей стресса, которая там была картинкой. Сверку потом закрепили автоматическим тестом.
Дальше — честность стресса. Базовый план в стрессе даёт дефицит, и интерфейс это показывает, а не прячет. Рядом кнопка, которая открывает план, подготовленный под стресс. И записка: лимит 12 страниц, а посчитано намного больше — стратегии, риски, пороги, интересы сторон. Каждый новый абзац выталкивал старый, так что тринадцатая страница осталась мечтой.






