Пользователи AnyLogic могут не только использовать любое из поддерживаемых распределений вероятности, но и задать эмпирические (нестандартные) распределения вероятности, основываясь на имеющейся у вас выборке (выборочной совокупности).
Получать случайные значения согласно заданному в модели эмпирическому распределению можно, вызвав функцию с тем же именем, что и это распределение, например: myDistribution().
Обучающее видео: Custom probability distibutions
Чтобы задать эмпирическое распределение
Данные для различных типов эмпирического распределения задаются различными способами. Мы описали эти способы в следующих разделах:
- Чтобы загрузить данные из существующей базы данных Anylogic, выберите опцию Загружается из базы данных и выберите таблицу БД из раскрывающегося списка Таблица. Если необходимо, укажите в пункте свойств Условия выборки условия, определяющие значения, которые будут выбраны из указанного столбца таблицы.
В расположенных ниже свойствах задайте столбцы таблицы БД, содержащие требуемые данные (в соответствии с типом распределения, см. ниже).- Если данные уже заданы в другом файле или приложении, то вы можете скопировать их в буфер обмена, после чего вставить их в таблицу секции Данные, нажав на кнопку
Вставить из буфера. Предварительно необходимо снять флажок с опции Загружается из базы данных.
- Табличные данные можно также ввести вручную в таблицу (которая доступна в секции свойств Данные, если не установлен флажок напротив опции Загружается из базы данных). Чтобы удалить запись, выберите соответствующий ряд таблицы и нажмите на кнопку
Удалить. Используйте кнопки
и
, чтобы изменить порядок данных в таблице (эти кнопки доступны, если в опции Режим задания выбран вариант Частотная таблица или Набор наблюдений)
Имя – Имя эмпирического распределения. Имя используется для идентификации распределения. Вы можете вызывать распределение как функцию, например: myDistribution().
Отображать имя – Если опция выбрана, то имя распределения будет отображаться в графическом редакторе.
Исключить – Если опция выбрана, то распределение будет исключено из модели.
Видимость – Здесь вы можете указать, будет ли распределение видно на анимации во время выполнения модели. Используя элемент управления, выберите да или нет.
Тип – Тип значений, возвращаемых распределением:Здесь отображается предварительная версия вашего эмпирического распределения.
Статический
– [Параметр доступен только в
Режиме разработчика библиотек] Если эта опция выбрана, эмпирическое распределение становится
статическим. Статическое распределение инициализируется один раз и содержит одни и те же данные для всех экземпляров данного типа агента. Это очень удобно при работе с агентными моделями, если для ваших
агентов заданы какие-то распределения. Объявив эмпирическое распределение статическим, мы избегаем потерь времени, которое тратилось бы исполняющим модулем AnyLogic на многократную инициализацию распределения для многих агентов.
Существует два способа задания данных для дискретного типа распределения. Выбрать способ можно в параметре
Режим задания
в панели
Свойства
эмпирического распределения.
Интервалы. Вы задаете интервалы и вероятности (вес) для этих интервалов.
Дискретный тип распределения, заданный с помощью Интервалов
Набор наблюдений. Этот способ позволяет загрузить данные наблюдений, как они есть. Частотность каждого конкретного значения зависит от того, сколько раз данное значение встречается в таблице (т.е. сколько раз данное значение наблюдалось). Используйте этот способ, если у вас есть таблица с данными наблюдений. Проще всего загрузить данные в модель следующим образом: скопируйте их в буфер обмена из исходного файла или программы с данными, а затем вставьте в AnyLogic, нажав на кнопку Вставить из буфера обмена, расположенную под таблицей в секции свойств Данные.
Откройте секцию свойств
Предв. просмотр, чтобы увидеть предварительную версию распределения, построенного на основе данных, которые вы загрузили.
Дискретный тип распределения, где данные заданы с помощью Набора наблюдений. Секции Данные и Предв. просмотр.
Интервалы. Вы задаете интервалы и вероятности (веса) для этих интервалов. Интервалы должны следовать друг за другом.
Частотная таблица. Здесь вы задаете значения в первом столбце таблицы и соответствующие веса во втором столбце.
Есть три типа Интерполяции: Нет, Линейный, Шаг.
Если выбрана опция Нет, вы задаете отдельные взвешенные значения.
Если выбрана опция Шаг, вы задаете данные по тому же принципу, что и в режиме Интервалы.
Если выбрана опция Линейный, вы задаете интервалы со спадом.
Непрерывный тип распределения, где данные заданы с помощью Частотной таблицы с Линейным типом Интерполяции. В секции Предв. просмотр вы можете увидеть интервалы со спадом.
Набор наблюдений. Этот способ позволяет загрузить данные наблюдений как они есть. Частотность каждого конкретного значения зависит от того, сколько раз данное значение встречается в таблице (т.е. сколько раз данное значение наблюдалось). Используйте этот способ, если у вас есть таблица с данными наблюдений. Проще всего загрузить данные в модель следующим образом: скопируйте их в буфер обмена из исходного файла или программы с данными, а затем вставьте в AnyLogic, нажав на кнопку Вставить из буфера обмена, расположенную под таблицей в секции свойств Данные.
Используйте опцию Значения, чтобы задать вероятности для альтернативных вариантов из выбранного Списка вариантов:
На рисунке ниже представлен пример распределения, задающего вероятности для вариантов Мужской
и Женский
из списка вариантов Пол.
AnyLogic предлагает три конструктора для создания эмпирических распределений (класс
CustomDistribution):