Anylogic - Пользовательское распределение с суммированными значениями? - PullRequest
0 голосов
/ 03 июля 2018

Мне нужна помощь в определении пользовательского дистрибутива с Anylogic. У меня есть сетка из 400 полей, каждое из которых представляет географическую область. Я измерил количество Клиентов в день в каждом поле эмпирически (поэтому у меня есть сумма для каждого поля).

Теперь я хочу сделать стохастическое моделирование. Количество сгенерированных агентов (клиентов) генерируется в виде ставки в день (эмпирически измеряется как общее для всех полей) Номер поля должен быть назначен случайным образом как распределение, где «вероятность того, что клиент сгенерирован в поле x», равна «количеству клиентов в измеренном поле x, деленному на общее число». У меня есть эти цифры в виде таблицы (базы данных). Проблема в том, что пользовательский блок распространения хочет прочитать таблицу со всеми значениями (поэтому, если в поле x есть 5 клиентов в день, мне нужно будет ввести 5 раз число x).

У кого-нибудь есть идеи, как решить эту проблему? Спасибо!

Или вы знаете, как генерировать агентов по базе данных, с некоторыми вероятностями атрибутов?

PS: я хочу сгенерировать идентификатор поля, потому что к каждому полю прикреплено больше информации.

Редактировать: если я создаю таблицу со всеми значениями, перечисленными x раз, я не могу выбрать столбец значений: CustomDistribution для стартовых полей

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

Установите свой пользовательский дистрибутив на «Непрерывный» с интерполяцией «Нет». Для каждого значения в столбце веса можно указать все, что вы хотите - это может быть предварительно рассчитанная сумма. Отсутствие интерполяции даст вам точно одно из введенных значений, которое может быть действительным числом, но в этом примере это просто дискретное (1,2,3).

enter image description here

0 голосов
/ 05 июля 2018

Хорошо, я нашел решение обеих проблем:

1) Кажется, что Anylogic не может построить пользовательский дистрибутив из суммированных значений, так как он сам выполняет суммирование внутри.

2) После создания большой таблицы с более чем 20 000 значений вместо 400 сумм я не смог выбрать столбец значений (см. Рисунок). Я воссоздал большую таблицу и изменил значения с «f1» на «1» (строка на int). И теперь это работает. Так что, похоже, Anylogic может обрабатывать только целые числа, но не строки в своей пользовательской функции базы данных распространения.

Не стесняйтесь поправлять меня, если это не так.

...