Эксперимент Сравнение "прогонов"

Обучающее видео: Compare Runs experiment

Этот тип эксперимента позволяет интерактивно задавать различные значения параметров и запускать модель с этими значениями.

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

Простая демо модель: Compare Runs Experiment

Создание эксперимента Сравнение "прогонов"

Чтобы создать эксперимент сравнения "прогонов"
  1. В панели Проекты, щелкните правой кнопкой мыши по модели, для которой вы хотите создать новый эксперимент, и выберите Создать > Эксперимент из контекстного меню.
    Появится диалоговое окно Новый эксперимент.
  2. Выберите Сравнение "прогонов" из списка Тип эксперимента.
  3. Введите имя эксперимента в поле Имя.
  4. Выберите тип агента для этого эксперимента из выпадающего списка Агент верхнего уровня.
  5. Если вы хотите применить к создаваемому эксперименту временные установки другого эксперимента, оставьте установленным флажок Копировать установки модельного времени из и выберите эксперимент из расположенного справа выпадаюшего списка.

  6. Щелкните мышью по кнопке Далее. Откроется страница Мастера Параметры. Здесь вам нужно будет выбрать, какие параметры корневого объекта вы хотите варьировать между "прогонами" этого эксперимента. 
  7. Добавьте нужные вам параметры из списка Доступны в список Выбраны. Чтобы добавить параметр, выберите его в списке Доступны и щелкните по кнопке . Чтобы добавить все доступные параметры, щелкните по кнопке . При необходимости вы можете удалить ранее выбранный параметр из списка выбранных параметров. Чтобы удалить параметр, выберите его в списке Выбраны и щелкните по кнопке . Чтобы удалить все параметры, щелкните мышью по кнопке .

  8. Щелкните мышью по кнопке Далее. Откроется следующая страница Мастера - Диаграммы. Здесь вы можете задать свойства диаграмм, которые будут отображать сравниваемые результаты моделирования. Каждая диаграмма задается в отдельной строке таблицы: Тип, Заголовок диаграммы и Выражение. Заголовок диаграммы будет отображаться в окне презентации над диаграммой. Тип определяет тип отображаемого на диаграмме результата моделирования: Набор данных или скаляр. В поле Выражение вам нужно написать выражение, результат вычисления которого и будет отображаться на диаграмме. Агент верхнего уровня эксперимента доступен в этом поле как root, поэтому вы можете написать здесь, например, root.myDataset.
    Например, пусть вы хотите запустить несколько раз модель диффузии продукта Bass Diffusion с разными значениями параметров и сравнить динамику приобретения продукта в зависимости от значений варьируемых параметров. Предположим, что вы храните историю по численности населения потребителей продукта в наборе данных, хранящемся в корневом объекте, скажем, adoptersDS. Чтобы добавить график, отображающий кривые динамики изменения численности потребителей для нескольких "прогонов" с разными значениями параметров, нужно выбрать Набор данных в ячейке Тип, ввести Заголовок диаграммы, скажем, Кол-во потребителей, и ввести имя набора данных, хранящего историю иземнения этой численности, в ячейке Выражение: в нашем случае это будет root.adoptersDS

  9. Завершите создание эксперимента, щелкнув мышью по кнопке Готово.

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

Запустите эксперимент, чтобы проверить, как он работает. Появится окно презентации. С помощью расположенной в нем кнопки Запустить модель вы можете запускать модель любое количество раз. Между запусками модели вы можете изменять значения параметров с помощью расположенных на презентации элементов управления. Тип отображаемого для параметра элемента управления задается в настройках этого параметра (в секции Редактор значения свойств этого параметра). Расположенные на презентации графики будут отображать результаты заданных вами при создании эксперимента выражений. Вы можете выделить на графике ту или иную кривую, щелкнув мышью по соответствующему ей элементу легенды. При этом во всех элементах управления будут показаны те значения параметров, при которых была получена эта кривая.

Свойства

Основные

Имя – Имя эксперимента.
Поскольку AnyLogic генерирует для каждого эксперимента соответствующий Java класс, при задании имени эксперимента нужно руководствоваться правилами названия классов в Java. Пожалуйста, начинайте имя эксперимента с заглавной буквы.

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

Агент верхнего уровня – Здесь задается агент верхнего уровня этого эксперимента. Агент этого типа будет играть роль корня иерархического дерева агентов модели, запускаемой этим экспериментом.

Максимальный размер памяти – Максимальный размер памяти Java, выделенный для данной модели.

Параметры

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

Модельное время

Остановить – Здесь вам нужно задать, когда вы хотите, чтобы моделирование было остановлено. Если вы хотите, чтобы моделирование продолжалось бесконечно, до тех пор, пока вы сами его не остановите, выберите из выпадающего списка Нет. Если же вы хотите, чтобы моделирование длилось до заданного времени или заданной даты, выберите здесь соответственно В заданное время или В заданную дату. В этом случае время остановки будет задаваться элементом управления Начальное время/Начальная дата.

Начальное время – Начальное время моделируемого интервала времени.

Начальная дата – Начальная календарная дата моделируемого интервала времени.

Конечное время – Конечное время моделируемого интервала времени (количество единиц модельного времени, по прошествии которого модель будет остановлена).

Конечная дата  – Конечная календарная дата моделируемого интервала времени.

Случайность

Генератор случайных чисел – В стохастических моделях важную роль играет заданное вами начальное число генератора случайных чисел - от этого будет зависеть, будут ли "прогоны" стохастической модели уникальными или воспроизводимыми. Здесь вы можете выбрать, хотите ли вы задать случайное число, чтобы "прогоны" были уникальными, фиксированное число, чтобы они были воспроизводимыми, или вообще задать свой собственный генератор случайных чисел вместо используемого AnyLogic по умолчанию.

Случайное начальное число (уникальные "прогоны") – Если опция выбрана, то "прогоны" модели будут уникальными и не смогут быть воспроизведены в силу того, что при каждом новом запуске модели генератор случайных чисел будет инициализироваться другим числом.

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

Нестандартный генератор (подкласс класса Random) – Если по каким-либо причинам вас не устраивает качество стандартного генератора Random, то вы можете использовать вместо него ваш собственный ГСЧ. Для этого cоздайте его (это должен быть подкласс Java класса Random, например, MyRandom), выберите данную опцию и введите выражение, возвращающее экземпляр класса вашего ГСЧ, в расположенном справа поле, например: new MyRandom() или new MyRandom( 1234 ). Подробнее см. здесь.

Упорядочение одновременных событий – Здесь вы можете выбрать порядок выполнения для одновременных событий (событий, которые происходят в один и тот же момент исполнения модели). Выберите один из следующих режимов: FIFO (в порядке поступления), LIFO (в обратном порядке) или Случайно.

Окно

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

Заголовок – Заголовок, который будет показан в окне презентации.

Разрешить изменение масштаба и перетаскивание – Если опция выбрана, то пользователь сможет изменять масштаб содержимого окна презентации во время моделирования и перемещать холст окна презентации с помощью мыши (перемещая мышь с нажатой правой кнопкой).

Панель разработчика – Если опция выбрана, панель разработчика будет доступна в окне модели.

Показать панель разработчика при старте модели – [Параметр доступен, если выбрана опция Панель разработчика] Если опция выбрана, панель разработчика будет по умолчанию отображаться в окне модели при каждом запуске эксперимента.

Действия Java

Код инициализации эксперимента – Код инициализации эксперимента, который выполняется, когда эксперимент и его интерфейс уже созданы.

Действие перед запуском каждого эксперимента – Код, который выполняется перед запуском каждого эксперимента. 

Действие перед "прогоном" модели – Код, выполняемый перед каждым "прогоном" модели. Этот код запускается при инициализации модели. К этому моменту корневой объект модели уже создан, но модель еще не запущена. Здесь вы можете выполнять действия с элементами агента верхнего уровня, например, присвоить другие значения его параметрам.

Действие после "прогона" модели – Код, выполняемый после каждого "прогона" модели. Этот код выполняется, когда исполняющий модуль завершает выполнение модели (вызывается метод Engine.finished()). Этот код не выполняется, если вы останавливаете модель с помощью кнопки Прекратить выполнение.

Java для экспертов

Импорт – Выражения импорта import, необходимые для успешной компиляции кода класса эксперимента. Во время генерации Java кода эти выражения вставляются перед строкой объявления Java класса эксперимента.

Дополнительный код класса – Здесь вы можете объявить какие-то служебные переменные кода, вложенные классы, константы и методы. Этот код будет вставлен в объявление класса эксперимента. Все объявленные здесь члены класса будут доступны из кода эксперимента. 

Аргументы Java машины – [Параметр приложения] Задайте здесь аргументы Java машины, которые будут применяться при запуске модели. Подробное описание возможных аргументов дано на сайте Java Sun Microsystems: http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html

Аргументы командной строки – [Параметр приложения] Здесь вы можете задать аргументы командной строки, с помощью которых вы хотите передать модели определенные данные. Значения переданных аргументов доступны в Дополнительном коде класса эксперимента с помощью метода String[] getCommandLineArguments()

Специфические

Загрузить агента верхнего уровня из файла сохраненного состояния – Если опция выбрана, то агент верхнего уровня эксперимента будет  загружаться из файла сохраненного состояния модели, указанного в расположенном справа поле. Эксперимент будет запущен с того момента модельного времени, когда было сохранено состояние модели.