+4

Использование выражений в Оптимизаторе карьера

anonymous 6 years ago in Micromine / Mining updated by Denis Malofeev 8 months ago 13


Всем привет!


Хочу поделиться информацией об использовании выражений в Оптимизаторе карьера. Наверняка многие обращали внимание на символ 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)

Эффект на логические выражения

+

Сложение

Конкатенация

Логическое ИЛИ

-

Вычитание

Неверная операция

Логическое ИЛИ наоборот

*

Умножение

Неверная операция

Логическое И

/

Деление

Неверная операция

Логическое И наоборот

Ниже также описаны операторы логики и сравнения

Символ

Оператор

>

Больше чем

<

Меньше чем

>=

Больше или равно

<=

Меньше или равно

=

Равно

!=

Неравно

Знак

Оператор

&

Логическое И

|

Логическое ИЛИ

!

Логическое НЕ

Ниже представлены основные примеры использования выражений Оптимизатора:

- Параметр производительности фабрики, изменяющийся в зависимости от Периода:

Image 1395


- Параметр Затраты на добычу руды, ссылающийся на поле в блочной модели. Условие ALWAYS означает что условие всегда истинное (TRUE), а значит данные по затратам будут браться из поля БМ, в данном случае Ore mining cost.

Image 1396

Кстати, если какие-то значения в этом поле будут отсутствовать, тогда будет использоваться значение, указанное в обычном поле затрат на добычу руды.


- Параметр Цена элемента может изменятся в зависимости от типа породы, из которого этот элемент был извлечен.

Image 1397


- Пример использования переменной Z координаты для изменения значения ПКЗД.

Image 1400


Параметр Затраты на добычу пустой породы с использованием переменной поля и значения из блочной модели.

Image 1399

По всем вопросам к данной статье, обращайтесь: dmikulich@micromine.com

Чтобы не плодить темы, спрошу здесь - 

Во вкладке Вложенные карьеры есть возможность "корректировки дохода" в долях единицы, вопрос - какой доход имеется в виду? Это 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, если не в ту темку обращаюсь)

+1

Добрый день!


Отфильтровать записи с четным значением 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%.

+1

Добрый день!

В примере выше как раз описан подобный пример. В зависимости от значения координаты высоты блока меняется значение стоимости. Аналогичным образом можно прописать и для "удельника"

О - нашел - 0,03 канадского доллара на тонну на 10 метров, то есть 1 цент США на тонну на 10 м

Может у кого то есть методичка по параметрам оптимизатора? Хотелось бы понимать где и какие параметры техники и не только закладывать

Добрый день, Виктор!

Во вложении ниже, мануал по оптимизации, из нашего по специализированного горного курса.                                         Оптимизация карьера