Anylogic: Как связать переключатель с переменной типа double? - PullRequest
0 голосов
/ 10 сентября 2018

Я хотел бы использовать переключатели в моей модели Anylogic, чтобы упростить изменение значений перед симуляцией. Я использую разные сценарии (сценарий A: цена на электроэнергию зима (Strompreis Winter); сценарий B: цена на электроэнергию лето (Strompreis Sommer), сценарий C: падение цены на электроэнергию (Strompreis Übergang), и я не хочу менять все формулы в моя модель при использовании другой цены на электроэнергию. Вместо этого я хотел бы просто использовать переменную «цена на электричество» в своих формулах, а затем изменить значение (я) этой переменной с помощью переключателя. Я попытался использовать переключатель, чтобы установить значение переменной «electricprice» (Strompreis) / связать его с переменной «electricprice» (Strompreis). Это потому, что у меня есть почасовые цены на электроэнергию в течение нескольких недель типа (например, цена на электричество зимой), которые показаны динамической переменной, которая читает их из файла Excel.

Anylogic скриншот

файл Excel

В поле Действие переключателя я набрал:

   if (value==0) {
    Strompreis = StrompreisWinter;
}
else if (value==1) {
    Strompreis = StrompreisSommer;
}
else if (value==2) {
    Strompreis = StrompreisÜbergang;
    }

Однако цены на электроэнергию относятся к типу double (например, 4,45 €). Можно только связать переключатели с переменной типа int. Есть идеи, как я могу решить эту проблему? Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Вот пример модели, которая делает то, что вы хотите, надеюсь, это поможет: -)

скачать

0 голосов
/ 10 сентября 2018

Несколько вещей здесь "выключены":

Когда AnyLogic сообщает, что вы можете использовать только значения Int для переключателей, они означают следующее: значение относится к выбору пользователя. Ваш переключатель имеет 3 варианта в вашем примере, поэтому значение может быть 0, 1 или 2. Ничего другого. Как вы соотносите их с любыми действиями, это ваше дело.

Далее: Ваш вопрос должен быть решен по-другому. Либо вы хотите динамически изменять значение переменной в течение года (случай 1). Или вы хотите, чтобы пользователь изменил значение переменной во время выполнения (случай 2).

Случай 1: динамическое изменение значения переменной

Несколько способов сделать это: если у вас есть только 4 сезона, вероятно, проще всего использовать простую функцию отображения "getCurrentElecPrice", которая возвращает другое значение базы данных в зависимости от текущего сезона: enter image description here

Случай 2: позволить пользователю изменить значение

Вы всегда можете изменить переменную непосредственно во время выполнения: щелкните по ней, а затем по значению, чтобы отредактировать ее, см. Ниже: enter image description here

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

надеюсь, что поможет

...