Нестандартный эксперимент

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

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

У этого типа эксперимента нет ни предопределенного поведения, ни встроенного графического интерфейса.

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

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

Примеры

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

В данной модели представлен простейший нестандартный эксперимент. Код эксперимента создает исполняющий модуль и модель, настраивает и запускает симуляцию и выводит результат выполнения в консоль: 

Простая демо модель: Simple Custom Experiment

В данной модели в коде нестандартного эксперимента реализовано взаимодействие с пользователем через консоль:

Простая демо модель: Custom Experiment Interacting with Console

В данной модели в коде нестандартного эксперимента устанавливаются параметры и запускается процесс оптимизации без отображения окна оптимизационного эксперимента:

Простая демо модель: Optimization Without UI

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

Простая демо модель: Calibration from Within Simulation

Свойства

Основные

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

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

Код

Код – Здесь вы пишете код эксперимента. По умолчанию Мастер создания эксперимента сгенерирует код, который:

Вам нужно будет добавить нужные вам строки кода, которые будут, например, собирать и анализировать результаты моделирования.

Свойства приложения

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

Аргументы Java машины – [Параметр приложения] Задайте здесь аргументы Java машины, которые будут применяться при запуске модели. Подробное описание возможных аргументов дано на сайте Java Documentation: http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html

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

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

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

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