Экономика блока
Ценность блока — главный вход оптимизации: алгоритм ищет набор блоков с максимальной суммой ценностей при заданных откосах.
Из чего складывается ценность
Заголовок раздела «Из чего складывается ценность»ценность = выручка - затраты на переработку - затраты на добычуВыручка появляется только у блоков, которые идут на переработку. Затраты на добычу есть у любого блока, вскрышные породы тоже вынимаются и вывозятся в отвал, так что у пустого блока ценность отрицательна.
Типовая цепочка
Заголовок раздела «Типовая цепочка»Вычисляемые колонки считаются сверху вниз, и каждая строка может ссылаться на колонки, посчитанные выше. Поэтому порядок строк важен. Ниже он взят из встроенного шаблона Mono metal:
| Колонка | Выражение | Смысл |
|---|---|---|
volume |
xinc * yinc * zinc |
Объём блока, м³ |
tonnage |
volume * density |
Масса блока, т |
is_ore |
case when sort = 0 then false else true end |
Признак руды |
mining_cost |
tonnage * ставка добычи |
Затраты на добычу, ден.ед |
processing_cost |
case when is_ore then $processing_ore * tonnage else 0 end |
Затраты на переработку |
metal_mass |
case when is_ore then grade * tonnage else 0 end |
Масса металла до извлечения |
recovered_metal |
recovery * metal_mass |
Извлекаемый металл |
revenue |
recovered_metal * $metal_price |
Выручка, ден.ед |
block_value |
revenue - processing_cost - mining_cost |
Чистая ценность блока |
block_value и выбирается при запуске как колонка ценности блока. Остальные строки цепочки — заготовка отчёта, где tonnage даст запасы и коэффициент вскрыши, metal_mass с recovered_metal — металл и среднее содержание, а mining_cost с processing_cost — затраты (Цикл работы).
Шаги можно проверить и до итогового отчёта. Каждая колонка видна в таблице сразу после Применить, так что ошибку в размерности или в коде типа руды видно на своём шаге, а не на итоговой ценности.
Таблица показывает порядок, а не готовый рецепт. Какие колонки нужны от модели и как записывается каждый шаг, включая доплату за глубину и разбор по типам руды, — Рецепты выражений.
Константы
Заголовок раздела «Константы»Константами задают всё, что меняется от сценария к сценарию, и тогда «что если» сводится к правке одного значения с повторным запуском. Ниже те, что встречаются в расчёте чаще всего.
Цена металла — обычно долгосрочная, а не спотовая. Фактор при запуске всё равно перебирает доли от неё.
Себестоимость добычи — выемка и транспортировка одной тонны горной массы, от буровзрывных работ до вывоза. У руды и вскрышных пород ставки чаще всего разные, отсюда две константы.
Себестоимость переработки — дробление, измельчение, обогащение (за тонну руды).
Извлечение — полнота использования добытого сырья при обогащении, долей единицы. Живёт колонкой recovery либо константой.
Доплата за глубину — с понижением горных работ растёт дальность и высота транспортирования, себестоимость добычи увеличивается. Задаётся отметкой начала доплаты, высотой ступени и надбавкой за ступень.
Бортовое содержание — наименьшее содержание полезного компонента в пробе, при котором она включается в контур подсчитываемых блоков запасов. Задаётся кондициями на минеральное сырьё. В шаблоне признак руды берётся из кода типа, потому что геологическая модель руду и породу уже разделила. Когда разделение идёт по содержанию, вместо кода пишется порог — Рецепты выражений.
Прочие статьи — роялти, затраты на реализацию, рекультивацию — добавляются такими же константами и слагаемыми в затраты.
Проверка перед запуском
Заголовок раздела «Проверка перед запуском»Программа проверяет синтаксис выражений, но не их смысл. От пустых, NaN и бесконечных значений в колонке ценности она защищает сама — с такими запустить расчёт не получится, программа откажет и укажет, сколько строк не в порядке. А вот единицы измерений и порядок величин остаются на пользователе. Такая ошибка не ломает синтаксис и не даёт пустых значений, контур посчитается, просто неверный.
Размерности. Самая частая ошибка — несогласованные единицы. Проверяются по слагаемым:
выручка: [единиц металла] * [ден.ед за единицу] = ден.едзатраты: [т] * [ден.ед за тонну] = ден.едЕсли grade в г/т, то масса металла получается в граммах, и цена должна быть задана за грамм. Унции переводят заранее (1 тройская унция — 31.1035 г), держать всё в одних единицах проще, чем помнить о переводе в каждой формуле.
Пропуски. Лучше закрывать их заранее, на своём шаге цепочки. Например volume * coalesce(density, $density_default) — Работа с NULL.
Колонка ценности. Её стоит пролистать в таблице:
- Значения в разумных пределах, без порядков «мимо»
- У рудных блоков плюс, у вскрышных минус