Anylogic: как связать радиокнопку с переменной типа double?

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

Anylogic скриншот

файл Excel

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

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

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

возможно, чтобы прояснить мои предыдущие ответы: ваш код здесь на 100% в порядке. Но я не уверен, что вы понимаете, что он делает: если пользователь выберет вариант 1 с переключателем (значение == 0), тогда для переменной «electricprice» будет установлено любое значение «electricpriceWinter». Оба "электричествозима" А ТАКЖЕ "электричество цена" может быть в два раза больше, не проблема.

Benjamin 10.09.2018 16:31

это именно то, что я хочу. К сожалению, anylogic жалуется на ошибки. В свойстве радиокнопки есть поле «ссылка на». Я могу связать переключатель с переменной только тогда, когда я выбираю тип int в свойстве переменных. Если выбрано двойное, я не могу связать его. Ошибка "неправильный тип параметра".

Josie 10.09.2018 16:53

Если я выберу int в качестве типа переменной, появится ошибка «Несоответствие типа: невозможно преобразовать из double в int» для поля «Действие» в свойстве переключателя. Что мне не хватает?

Josie 10.09.2018 17:00

Кажется, я могу просто проигнорировать ошибку «неправильный тип параметра». Симуляция работает. И переменная принимает значение динамической переменной. Однако он принимает текущее значение только тогда, когда я нажимаю кнопку, а затем остается таким. Как я могу обновлять его регулярно / ежечасно?

Josie 10.09.2018 17:18

вам не следует использовать функцию «Ссылка» в вашем случае. Он может ссылаться только на переменную типа int, которая может использоваться либо для сохранения выбора пользователя, сделанного при последнем щелчке, либо для программного изменения выбора переключателя. Он имеет отношение к вашему коду ничего такого, и это нормально.

Benjamin 10.09.2018 17:43

если вы хотите использовать регулярное обновление, воспользуйтесь моими предложениями ниже (функция "getCurrentElecPrice", но с поправками на несколько часов). Как вариант, сделайте снимок экрана с данными (правильные числа не нужны, только правильный формат), и я могу создать для вас фиктивную модель, без проблем.

Benjamin 10.09.2018 17:45

это было бы прекрасно. Я обновил некоторые данные в своем исходном сообщении, но вы также можете представить некоторые из них.

Josie 10.09.2018 18:23
0
7
388
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Здесь "отключено" несколько вещей:

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

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

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

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

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

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

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

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

Спасибо за ответ. Случай 1. У меня есть только версия для личного обучения, поэтому я не могу работать с базами данных, верно? Случай 2 у меня тоже не работает. Модель «работает неделю», а цена на электроэнергию меняется каждый час. Не могли бы вы объяснить, почему я не использую радиокнопку?

Josie 10.09.2018 13:42

Я имел в виду, что могу связать переключатель только с переменными типа int. Я пробовал это с переменной типа double, и это не сработало

Josie 10.09.2018 13:56

re радиокнопки: точно. это может быть только целое число, потому что опции радио - это отдельные опции, это либо 0, 1 или 2. вы не можете выбрать 1.5!

Benjamin 10.09.2018 16:07

Что касается вашего случая: вы можете еще раз объяснить, для чего вам нужно радио? будьте конкретны, отправьте скрины и т. д., и я могу создать для вас образец модели. (отредактируйте исходный вопрос, указав более подробную информацию)

Benjamin 10.09.2018 16:08

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

Josie 10.09.2018 16:38
Ответ принят как подходящий

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

скачать

Другие вопросы по теме