Перейти к содержимому

Теория оптимизации

Исходные данные у задачи одни и те же, независимо от программы:

  • Геометрия блочной модели — параметры прототипа, координаты центров и размеры блоков
  • Ценность блока — доход за вычетом затрат на добычу и переработку, одно число на блок. Считается заранее по цене товарной продукции, содержанию, извлечению и себестоимости
  • Углы откоса борта — предельная крутизна, при которой борт устойчив

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

Главное ограничение — устойчивость борта. Блок нельзя вынуть, не отработав вышележащие с учётом заданных углов откоса. Чтобы алгоритм мог это учитывать, по заданным углам откоса заранее строится граф зависимостей блоков друг от друга.

Задача решается по материнским блокам — ячейкам регулярной сетки прототипа. По ним же строится граф зависимостей, а ценность субблоков суммируется. Результат — контур карьера. Контуров может быть и несколько, вложенных друг в друга, если рассматривается влияние заданного фактора ценности блока.

Контур (pit shell) — конкретное множество блоков, подлежащих выемке. Граница этого множества и есть поверхность будущего карьера.

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

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

Фактор — множитель, который перед каждым расчётом применяется к выбранной величине. Обычно это константа цены металла, но целью может быть и числовая колонка модели. После домножения выражения пересчитываются, и ценность блоков меняется.

100% — величина, как она задана константой или колонкой, без изменений. Контур при 100% — максимальный экономический, за его границей прирезка следующего слоя горной массы уже не приносит прибыли. Факторы ниже 100% моделируют падение цены, выше 100% — её рост. Перебор фактора по диапазону даёт серию сценариев при изменении экономического показателя, чаще всего цены на металл.

В другом софте фактор называют revenue factor или RAF (Revenue Adjustment Factor), вложенные контуры — nested pit shells, конечный контур — ultimate pit.

Чтобы выполнялось правило «блок нельзя вынуть, не отработав вышележащие», для каждого блока заранее находят блоки, которые лежат в конусе откоса над ним и подлежат отработке раньше. Совокупность таких связей и есть граф зависимостей.

Примеры ниже даны на вертикальном разрезе с одинаковым размером грани блока. В объёме картина связей сложнее, потому что углы откоса меняются по азимутам и конус получается несимметричным.

На рисунках блок отнесён к конусу, если внутрь попал его центр; центры блоков у границы отмечены точками. Это упрощение для примера. Правило отбора бывает и другим, вплоть до включения блоков, задетых конусом частично.

Конус зависимостей блока при угле откоса 45°

Угол откоса 45°. На каждый уровень вверх граница конуса отступает на один блок в каждую сторону. Граничные центры лежат ровно на линии откоса — такой блок считается зависимым.

Конус зависимостей блока при угле откоса 30°

Угол откоса 30°. Борт положе, конус шире, и на тот же блок приходится вдвое больше зависимых блоков. Серые ступени — фактическая граница конуса. Она складывается из целых блоков и потому воспроизводит заданный угол приближённо.

Конус зависимостей блока при угле откоса 60°

Угол откоса 60°. Борт круче, конус у́же, так что на первом уровне вверх он не захватывает ни одного соседнего блока и граница отступает только через уровень. Чем крупнее блок относительно высоты уступа, тем грубее ступени передают заданный угол.

Для понимания расчёта важны свойства графа:

  • Конусы соседних блоков пересекаются. Один и тот же блок бывает зависимым сразу для нескольких блоков руды, и снять его нужно один раз
  • Граф не зависит от экономики. Цены, себестоимость и фактор в нём не участвуют

В другом софте то же самое называют precedence arcs (Datamine, Micromine) или block precedence (Deswik).

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

Окупают не обязательно поодиночке. У соседних блоков руды зависимые блоки частью общие, и снимают их один раз. Блок, который сам себя не окупает, вместе с соседом окупиться может. Поэтому блоки не перебираются по одному, выгода считается сразу по всей модели.

Пересечение конусов блоков руды

Угол откоса 45°, каждый зависимый блок −1. Блок +10 лежит выше и свои зависимые блоки окупает сам. Нижние +12 и +8 ни поодиночке, ни вдвоём не окупаются, но зависимые блоки у них во многом те же, что у +10, и втроём все выходят в плюс. Блок +3 тоже положительный, однако его конус с контуром почти не пересекается. Прирезка обошлась бы дороже самого блока, поэтому он остаётся снаружи контура.

Такой расчёт делает алгоритм псевдопотока (pseudoflow). Его свойства:

  • Это гарантированный оптимум. Лучшего контура при заданных ценностях и углах откоса не существует
  • Результат тот же, что у классического Lerchs — Grossmann (1965), однако считается быстрее
  • Расчёт воспроизводим, результат не зависит от порядка обработки блоков

Расчёт повторяется для каждого фактора из заданного диапазона, так получается серия вложенных контуров.

  • Оптимум недисконтированный, максимизируется сумма ценностей, а не NPV. Поэтому конечный контур при факторе 100% почти никогда не совпадает с контуром максимального NPV: зависимые блоки снимают раньше, чем получают доход от руды, и на дисконте выигрывают контуры поменьше
  • Ответ дискретен по блокам. Борт получается ступенчатым, а блок либо целиком в контуре, либо целиком вне