Функция шага для массива в Anylogic - PullRequest
0 голосов
/ 17 мая 2018

Как использовать пошаговую функцию для массива в Anylogic? Функция шага применяется к двойным значениям, но я хочу применить к элементам массива в определенное время.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Не уверен, что подход Фелипе - лучший, но, возможно, я неправильно понял вопрос.

Вы пытались использовать объект "табличная функция"?Определите его, как показано ниже, где горизонтальная ось представляет единицу времени, а вертикальные данные вашей шаговой функции: enter image description here

Затем используйте циклическое событие, которое в каждой соответствующей единице времени (зависит от вашегомодель) извлекает текущее требуемое значение из табличной функции: enter image description here

0 голосов
/ 17 мая 2018

Вы не можете ... так что это решение:

Вместо массива вы должны использовать connectedHashMap, где вашим ключом является конкретное время, а элементом является значение шага, которое вы хотите в это время,Итак, вы определили его следующим образом:

linkedHashMap

И вы поместите значения следующим образом:

stepsArray.put(3.0,2.3); 

, где 3.0 - времяв котором шаг будет происходить, а 2.3 - это значение, которое примет шаг.Вы должны поместить туда все нужные вам значения.Вы - тот, кто должен заполнить эти значения в соответствии с вашими потребностями.

Затем вы создаете циклическое событие, которое оценит, настало ли время применить шаг, и создадите переменную типа double, которая будетсохраняя значение шага.

Итак, событие:

double theTime=round(100*time())/100.0;//it's better to round up the time just in case
if(stepsArray.containsKey(theTime)){
    variable=stepsArray.get(theTime);
}

обратите внимание, что я использую переменную, а не динамическую переменную ... они могут подключаться к переменной везде, гдеваш шаг необходим в модели sd.

Этот метод немного сложен, но он является наиболее общим для вашего совершенно неоднозначного вопроса.

...