
Использование выражений в Оптимизаторе карьера
Всем привет!
Хочу поделиться информацией об использовании выражений в Оптимизаторе карьера. Наверняка многие обращали внимание на символ fx в полях при настройке параметров оптимизации или самой оптимизации, а кто-то пробовал ее пользоваться. Возможно, кто-то уже использовал эту функцию, но не знает полный список ее возможностей.
Для начала я опишу принцип и структуру выражений, после чего перейду к описанию функций и переменных, которые можно использовать, и закончу примерами применения выражений с переменными.
Принцип выражений заключается в следующем:
1.Процесс оценивает выражение в столбце ‘Условие’, начиная сверху и доходя до первого значения TRUE.
2.Если условии TRUE (истина), тогда соответствующее выражение будет рассчитано и присвоено вычисляемому параметру.
3.Если все условия FALSE (ложь), тогда будет использовано значение из обычного поля ввода.
Анализатор выражений имеет оператор условия ‘if’. Он имеет следующий синтаксис:
If<выражение условия> then<выражение_true> else<выражение_false> fi
В отличие от большинства языков программирования, анализатор выражений относится к оператору ‘if’, как к оператору, который должен иметь результат, поэтому все части оператора обязательны.
<выражение условия> оценивается в первую очередь. Эта оценка использует стандартные правила ввода, после чего результат конвертируется в логический.
Если выражение, получило значение TRUE, тогда далее будет рассчитано <выражение_true>, в ином случае будет рассчитано <выражение_false>.
Значение и тип результата оператора ‘if’ принимает тип либо <выражение_true> либо <выражение_false>.
Обратите внимание, что ‘fi’, использованное в конце, обозначает конец оператора ‘if’.
Можно использовать оператор ‘if’ следующим образом:
ПКЗД + if ИЗВЛЕЧЕНИЕ > 0.5 then ПКЗД*2 else 0 fi
Иными словами, если ИЗВЛЕЧЕНИЕ больше чем 0.5, тогда к ПКЗД прибавить ПКЗД*2, в ином случае прибавить 0 (ничего).
Важно понимать, что все части оператора 'if' являются обязательными. В том числе и знак 'fi', необходимый для обозначения конца вашего условного оператора.
В случае оптимизации карьера, можно задать следующие переменные:
Переменная | Значение |
ALWAYS | Логическое TRUE |
COORD_X | X координата текущего обрабатываемого блока |
COORD_Y | Y координата текущего обрабатываемого блока |
COORD_Z | Z координата текущего обрабатываемого блока |
“ИМЯ ПОЛЯ” | Значение, основанное на записи в БМ |
[Поле Модели] | Значение, являющиеся полем БМ |
PERIOD=n | Период (n) отработки карьера |
А также можно использовать следующие функции:
Функция | Описание |
DEFINED(x) | X– переменная. Проверка на определение (было ли присвоено ей значение) |
SIN(x) | Синус. Х указывается в градусах |
COS(x) | Косинус. Х указывается в градусах |
TAN(x) | Тангенс. Х указывается в градусах |
ASIN(x) | Арксинус. Возвращает значение в градусах |
ACOS(x) | Арккосинус. Возвращает значение в градусах |
ATAN(x) | Арктангенс. Возвращает значение в градусах |
LN(x) | Натуральный логарифм |
LG(x) | Десятичный логарифм |
Важно понимать тип получаемого результата, рассчитываемого из операндов разных типов. За исключением обратного условия, тип правого выражения, примет тип левого выражения перед выполнением операции.
Например, в выражении "5.0"+5 результатом будет "5.05" (это называется конкатенацией). А выражении 5.0+"5" результат будет 10.
Как мы уже поняли, в выражениях можно использовать 3 типа данных: числа, строки и логические выражения. Ниже представлена таблица, описывающая эффект на каждый из типов от логических операторов.
Оператор | Эффект на числа | Эффект на строку(str) | Эффект на логические выражения |
+ | Сложение | Конкатенация | Логическое ИЛИ |
- | Вычитание | Неверная операция | Логическое ИЛИ наоборот |
* | Умножение | Неверная операция | Логическое И |
/ | Деление | Неверная операция | Логическое И наоборот |
Ниже также описаны операторы логики и сравнения
Символ | Оператор |
> | Больше чем |
< | Меньше чем |
>= | Больше или равно |
<= | Меньше или равно |
= | Равно |
!= | Неравно |
Знак | Оператор |
& | Логическое И |
| | Логическое ИЛИ |
! | Логическое НЕ |
Ниже представлены основные примеры использования выражений Оптимизатора:
- Параметр производительности фабрики, изменяющийся в зависимости от Периода:
- Параметр Затраты на добычу руды, ссылающийся на поле в блочной модели. Условие ALWAYS означает что условие всегда истинное (TRUE), а значит данные по затратам будут браться из поля БМ, в данном случае Ore mining cost.
Кстати, если какие-то значения в этом поле будут отсутствовать, тогда будет использоваться значение, указанное в обычном поле затрат на добычу руды.
- Параметр Цена элемента может изменятся в зависимости от типа породы, из которого этот элемент был извлечен.
- Пример использования переменной Z координаты для изменения значения ПКЗД.
Параметр Затраты на добычу пустой породы с использованием переменной поля и значения из блочной модели.
По всем вопросам к данной статье, обращайтесь: dmikulich@micromine.com
Customer support service by UserEcho
Чтобы не плодить темы, спрошу здесь -
Во вкладке Вложенные карьеры есть возможность "корректировки дохода" в долях единицы, вопрос - какой доход имеется в виду? Это NPV или что то другое?
Добрый день, Владимир.
Это коэффициент, которым будет корректироваться цена полезного компонента (задается на вкладке Переработка окна Параметры оптимизации). Например, если у вас месторождение золота, а стоимость унции золота составляет 1400$, то при данном заполнении окна вы получите 3 контура карьера:
1) 1400*0,8
2) 1400*1
3) 1400*1,2
Доход за единицу элемента, который указывается на вкладке Переработка в окне Параметры оптимизации карьера.
При цене 2500 ФКД = 1, если ФКД=0,5 соответственно цена 1250
Денис
Выражения вида 0<PERIOD<7 будут интерпретированы как ((0<PERIOD)<7), что, вообще говоря, всегда TRUE (истина).
В результате пример работать будет совсем не так, как ожидалось.
Поддержка трансформации выражений вида 0<PERIOD<7 ===> (0 < PERIOD) & (PERIOD < 7) ожидается в (недалеком) будущем. Пока ее нет.
Такие дела.
Примите и проч,
Денис
Всем доброго дня!
Подскажите, каким выражением возможно отфильтровать (пометить) записи с четным значением в поле JOIN?
Заранее спасибо, sorry, если не в ту темку обращаюсь)
Добрый день!
Отфильтровать записи с четным значением JOIN можно следующим образом. Заходим в Фильтр. Кликаем правой кнопкой мышки по полю "Имя поля", выбираем "Редактировать выражение".
Пишем следующее выражение "[JOIN] % 2". В "Операторе" выбираем "Равно". В "Значении" ставим 0. Получится следующее:
Таким образом будут выбраны только те записи, у которых JOIN является четным числом. Если нужно выбрать нечетные числа, то вместо 0 в поле "Значение" ставим 1.
Как это работает? Пользуемся фактом, что остаток от деления четного числа на 2 будет равен 0, а нечетного числа - равен 1. Выражение [JOIN] % 2 вычисляет остаток от деления текущего значения поля JOIN на 2. Если нужно оставить только четные значения, то остаток будет равен 0 (поле "Значение" равно 0). Если нечетные - 1 (поле "Значение" равно 1).
В результате получаем следующее (оставляем четные числа):
Надеюсь, это именно то, что вам требовалось. Если возникнут вопросы, пишите, буду рад помочь!
Спасибо! Я в общем то так и пыталась сделать только через выражение if ([JOIN] % 2)>0 then 1 else 0 endif. Поняла, что не работал оператор из-за отсутствия пробелов между "2" и "%".
Не за что) Но странно, у меня ваше выражение работает без пробелов.
А как задать увеличение удельника по добыче с учетом понижения карьера (за счет удлинения плеча транспортировки)? И, как совсем чайнику - какие есть примерные коэффициенты/подходы, из разряда - на каждые 10 м удельник увеличивается на 0,5%.
Добрый день!
В примере выше как раз описан подобный пример. В зависимости от значения координаты высоты блока меняется значение стоимости. Аналогичным образом можно прописать и для "удельника"
О - нашел - 0,03 канадского доллара на тонну на 10 метров, то есть 1 цент США на тонну на 10 м
Может у кого то есть методичка по параметрам оптимизатора? Хотелось бы понимать где и какие параметры техники и не только закладывать
Добрый день, Виктор!
Во вложении ниже, мануал по оптимизации, из нашего по специализированного горного курса. Оптимизация карьера