Pages: 1
Проблема с if-then-else в модели системной динамики, Если динамическая переменная задается с if then else появляется синтаксическая ошибка
Добрый день!Имеется следующая задача: необходимо чтобы темп поставок потока срабатывал только один раз за месяц. И в это срабатывание был равен размеру поставки от дистрибьютора рознице. Соответственно, логично использовать для этих целей if. Я пытался использовать if как в самой переменной потока, так и в динамической переменной, значение которой принимал поток. В обоих случаях, модель при попытке промоделировать ее выдает следующую синтаксическую ошибку:

Quote
java.lang.RuntimeException: ERROR during variable generation:
Не удалось прочесть выражение для ТПР1 - Динамическая переменная: синтаксическая ошибка.
Пожалуйста, проверьте выражения для этой переменной.


Функцию для динамической переменной задавал следующим образом:

ТемпПродажР1=
Code
if ( time(month) == 1 ) { 
min(РЗДоР1,СкладД1); 
} else { 
0; 
}

где складД1 - накопитель,


РЗДоР1 - динамическая переменная

Подскажите, пожалуйста, как исправить эту ошибку.
Edited: Иван - 01.12.2015 10:15:27
Иван, здравствуйте!
Кодовое поле динамической переменной не разрешает использовать такие конструкции как if-else и т.д. Есть два решения:

1. Использовать тернарный оператор "?:". Он хорош для простых выражений, как ваше, например:
Code
time( month ) == 1 ? min(РЗДоР1,СкладД1) : 0 

2. Спрятать выражение в функцию, возвращающую численный тип (чаще всего double или int). Функция просто вызывается внутри переменной.
Code
// код функции
if ( time(month) == 1 ) 
   return min(РЗДоР1,СкладД1); 
 
return 0;

Этот способ хорош для сложных выражений, когда требуется включить сложный алгоритм в функцию.
Edited: Gregory Monakhov - 14.12.2015 13:08:31
Pages: 1
Users browsing this topic (1 guests, 0 registered, 0 hidden)