Эксперимент Монте-Карло позволяет выполнить несколько повторных запусков модели стохастической модели или модели со стохастически меняющимися параметрами и отобразить полученный набор результатов моделирования с помощью гистограмм (возможно использование не тольок обычных, но и двумерных гистограмм).
Если модель стохастична по своей природе, то каждый "прогон" модели будет выдавать уникальный результат моделирования, даже если Вы не будете менять значения входных параметров. Но Вы можете и сами генерировать случайное значение параметра модели для каждого "прогона" модели.
Если процессор Вашего компьютера имеет несколько ядер, то при запуске эксперимента AnyLogic автоматически определит, сколько ядер доступно, и будет параллельно выполнять сразу несколько итераций эксперимента на различных ядрах процессора. Таким образом может быть достигнуто многократное увеличение производительности, и выполнение эксперимента на многоядерном процессоре может быть завершено в несколько раз быстрее, чем на процессоре с одним ядром.
Чтобы создать
эксперимент Монте-КарлоИмя
– Имя эксперимента.
Поскольку
AnyLogic генерирует
для каждого эксперимента соответствующий Java класс, при
задании
имени эксперимента нужно руководствоваться правилами названия классов в
Java. Пожалуйста, начинайте имя эксперимента с заглавной буквы.
Корневой класс модели – Здесь задается корневой (главный) класс активного объекта этого эксперимента. Объект этого класса будет играть роль корня иерархического дерева объектов модели, запускаемой этим экспериментом.
Исключить – Если опция выбрана, то эксперимент будет исключен из модели.
Создать интерфейс
– Кнопка удаляет содержимое презентации эксперимента
и
создает интерфейс эксперимента заново согласно его текущим установкам
(набору оптимизационных параметров и их свойствам и
т.д.).
Пожалуйста,
создавайте
новый интерфейс только после
того, как Вы
закончите задание параметров
эксперимента.
Генератор случайных чисел – В стохастических моделях важную роль играет заданное Вами начальное число генератора случайных чисел - от этого будет зависеть, будут ли "прогоны" стохастической модели уникальными или воспроизводимыми. Здесь Вы можете выбрать, хотите ли Вы задать случайное число, чтобы "прогоны" были уникальными, фиксированное число, чтобы они были воспроизводимыми, или вообще задать свой собственный генератор случайных чисел вместо используемого AnyLogic по умолчанию.
Случайное начальное число (уникальные "прогоны") – Если опция выбрана, то "прогоны" модели будут уникальными и не смогут быть воспроизведены в силу того, что при каждом новом запуске модели генератор случайных чисел будет инициализироваться другим числом.
Фиксированное начальное число (воспроизводимые "прогоны") – Если опция выбрана, то генератор случайных чисел модели будет всегда инициализироваться одним и тем же начальным числом (оно задается в поле Начальное число), поэтому все запуски модели будут идентичными и воспроизводимыми.
Нестандартный генератор (подкласс класса Random) – Если по каким-либо причинам Вас не устраивает качество стандартного генератора Random, то Вы можете использовать вместо него Ваш собственный ГСЧ. Для этого cоздайте его (это должен быть подкласс Java класса Random, например, MyRandom), выберите данную опцию и введите выражение, возвращающее экземпляр класса Вашего ГСЧ, в расположенном справа поле, например: new MyRandom() или new MyRandom( 1234 ). Подробнее см. здесь.
Параметры –
Здесь пользователь задает набор параметров, которые будут
варьироваться . В
таблице перечислены
все
параметры корневого объекта. Чтобы разрешить
варьирование параметра, перейдите на соответствующую
строку таблицы Параметры,
щелкните мышью в ячейке Тип
и выберите тип параметра, отличный от значения фиксированный.
Список возможных значений будет меняться в зависимости от типа
параметра: набор,
int, дискретный
для
целочисленных параметров типа int; непрерывный
и дискретный
для вещественных параметров типа double
и т.д. Задайте диапазон допустимых значений параметра. Введите нижнюю
границу диапазона в ячейке Мин
и верхнюю - в ячейке Макс.
Для параметров набор
и дискретный
нужно также указать в ячейке Шаг
величину шага (инкремента), с помощью которого будут определяться
допустимые значения данного параметра
(первое допустимое значение равно заданной нижней границе интервала,
следующее равно сумме первого значения и заданного шага и т.д.).
Подробнее о типах варьируемых параметров Вы можете прочитать здесь.
Варьировать в диапазоне – Если опция выбрана, то Вы сможете явно задать диапазон возможных значений для каждого варьируемого параметра. Если быть точнее, то для каждого варьируемого параметра Вам нужно будет задать в таблице Параметры минимум и максимум диапазона значений, а также величину шага (инкремента), с помощью которого будут определяться допустимые значения данного параметра внутри диапазона.
Произвольно – Если опция выбрана, то модель будет запускаться заданное Вами количество раз (оно задается в расположенном справа поле Кол-во "прогонов"). Значения параметров в этом случае будут вычисляться в соответствии с выражжениями, которые Вы зададите в таблице Параметры. Номер текущего "прогона" модели доступен в коде выражения как index.
Максимальный размер памяти – [Параметр приложения, не применяется при запуске модели в виде апплета] Максимальный размер памяти Java, выделенный для данной модели.
Аргументы Java машины – [Параметр приложения, не применяется при запуске модели в виде апплета] Задайте здесь аргументы Java машины, которые будут применяться при запуске модели. Подробное описание возможных аргументов дано на сайте Java Sun Microsystems: http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/java.html
Аргументы командной строки – [Параметр приложения, не применяется при запуске модели в виде апплета] Здесь Вы можете задать аргументы командной строки, с помощью которых Вы хотите передать модели определенные данные. Значения переданных аргументов доступны в Дополнительном коде класса эксперимента с помощью метода String[] getCommandLineArguments()
Загрузить корневой объект из файла сохраненного состояния – Если опция выбрана, то корневой объект эксперимента будет загружаться из файла сохраненного состояния модели, указанного в расположенном справа поле. Эксперимент будет запущен с того момента модельного времени, когда было сохранено состояние модели.
Импорт – Выражения импорта import, необходимые для успешной компиляции кода класса эксперимента. Во время генерации Java кода эти выражения вставляются перед строкой объявления Java класса эксперимента.
Дополнительный код класса – Здесь Вы можете объявить какие-то служебные переменные кода, вложенные классы, константы и методы. Этот код будет вставлен в объявление класса эксперимента. Все объявленные здесь члены класса будут доступны из кода эксперимента.
Код инициализации эксперимента – Код инициализации эксперимента, который выполняется, когда эксперимент и его интерфейс уже созданы.Действие перед запуском каждого эксперимента – Код, который выполняется перед запуском каждого эксперимента. Этот код запускается при инициализации модели. К этому моменту корневой объект модели уже создан, но модель еще не запущена. Здесь Вы можете выполнять действия с элементами корневого активного объекта, например, присвоить другие значения его параметрам.
Действие перед "прогоном" модели – Код, выполняемый перед каждым "прогоном" модели. Этот код выполняется, когда исполняющий модуль завершает выполнение модели (вызывается метод Engine.finished()). Этот код не выполняется, если Вы останавливаете модель с помощью кнопки Прекратить выполнение.
Действие после "прогона" модели – Код, выполняемый после каждого "прогона" модели.
Действие после итерации – Код, выполняемый после каждой итерации.
Случайное упорядочение одновременных событий – Если опция выбрана, то если на каком-нибудь шаге будет иметься сразу несколько событий, которые могут произойти в данный момент времени, то AnyLogic будет случайно выбирать одно из этих событий. В противном случае события будут выбираться в определенном порядке.
Дифференциальные уравнения – Метод, используемый для решения дифференциальных уравнений первого порядка.
Алгебраические уравнения – Метод, используемый для решения алгебраических уравнений.
Смешанные уравнения – Метод, используемый для решения смешанных дифференциально-алгебраических уравнений.
Абсолютная точность – Требуемое значение абсолютной точности вычисления уравнений. Абсолютная точность используется тогда, когда невозможно использовать относительную точность – например, если значение близко к нулю.
Временная точность – Требуемая временная точность обнаружения временных событий (точек переключения) при решении уравнений.
Относительная точность – Требуемое значение относительной точности вычисления уравнений для методов с меняющимся шагом интегрирования (например, для метода Ньютона). Используется по умолчанию.
Фиксированный шаг по времени – Шаг по времени для методов с постоянным шагом (например, Рунге-Кутта).
Разрешить параллельное выполнение итераций – Если опция выбрана, то при наличии у процессора пользовательского компьютера нескольких ядер, сразу несколько итераций эксперимента будет параллельно выполняться на разных ядрах процессора. Это приведет к многократному увеличению производительности и завершению эксперимента за значительно меньшее время. Возможность отключения параллельного выполнения предоставляется потому, что иногда нужно, чтобы итерации производились в строго заданном порядке (например, если в полях Действие перед "прогоном" модели, Действие после "прогона" модели и т.д. задан код, для которого принципиален порядок выполнения итераций).
Использовать календарь – Если опция выбрана, то начальное и конечное время моделирования задаются в виде календарных дат.
Остановить – Здесь Вам нужно задать, когда Вы хотите, чтобы моделирование было остановлено. Если Вы хотите, чтобы моделирование продолжалось бесконечно, до тех пор, пока Вы сами его не остановите, выберите из выпадающего списка Нет. Если же Вы хотите, чтобы моделирование длилось до заданного времени или заданной даты, выберите здесь соответственно В заданное время или В заданную дату. В этом случае время остановки будет задаваться элементом управления Начальное время/Начальная дата.
Начальное время – [Доступно, если не выбрана опция Использовать календарь] Начальное время моделируемого интервала времени.
Начальная дата – [Доступно, если выбрана опция Использовать календарь] Начальная календарная дата моделируемого интервала времени.
Конечное время – [Доступно, если не выбрана опция Использовать календарь] Конечное время моделируемого интервала времени (количество единиц модельного времени, по прошествии которого модель будет остановлена).
Конечная дата – [Доступно, если выбрана опция Использовать календарь] Конечная календарная дата моделируемого интервала времени.
Дополнительные условия остановки эксперимента – Здесь Вы можете задать любое количество дополнительных условий остановки варьирования параметров. Когда выполнится любое из этих условий, варьирование будет остановлено. Условие может включать в себя проверку значений переменных, средних значений наборов данных и т.д. Корневой активный объект эксперимента доступен здесь как root, поэтому если Вы хотите, например, остановить варьирование параметров, когда значение переменной plainVar корневого объекта эксперимента превзойдет некоторое пороговое значение (скажем, 11), напишите здесь root.plainVar>11. Чтобы сделать это условие активным, Вам нужно будет установить флажок в соответствующей строке таблицы.
Включить сглаживание – Если опция выбрана, то при отрисовке презентации будет использоваться механизм сглаживания, позволяющий сделать фигуры более гладкими и визуально приятными. Сглаживание позволяет сглаживать линии, которые иначе выглядели бы на анимации ступенчатыми. Однако учтите, что на отрисовку презентации со сглаживанием требуется больше времени.
Адаптивная
частота
обновления
– AnyLogic позволяет изменять частоту отрисовки
презентации. Чем
больше частоту Вы зададите, тем плавнее будет отрисовываться
презентация.
Выберите здесь, хотите ли Вы задать фиксированную частоту
отрисовки в
кадрах в секунду, либо адаптивную частоту отрисовки, которая будет
пересчитываться во время работы модели, чтобы обеспечить указанное
отношение между скоростью выполнения и плавностью отрисовки
презентации. Чтобы выбрать адаптивную частоту отрисовки, установите
этот флажок.
Выбор приоритета
(Презентация:Моделирование)
– [Доступно, если выбрана опция Адаптивная частота
обновления]
Если выбран режим
обновления с адаптивной частотой, то здесь нужно указать
коэффициент отношения скорости выполнения модели к плавности отрисовки
презентации
Однако учтите, что отрисовка презентации требует определенного времени,
и частая перерисовка замедлит выполнение модели. Поэтому задавайте
такую частоту, которая отвечала бы Вашим требованиям к модели,
обеспечивая либо более плавную отрисовку презентации, либо более
быстрое выполнение модели.
Кадров в секунду – [Доступно, если не выбрана опция Адаптивная частота обновления] Если режим обновления с адаптивной частотой отключен, то здесь Вы сможете задать частоту отрисовки презентации (в кадрах в секунду). Чем большее значение Вы укажете, тем лучше будет выглядеть анимация Вашей модели. Однако учтите, что отрисовка презентации требует определенного времени, и частая перерисовка замедлит выполнение модели.
Свойства, расположенные на странице Окно, отвечают за внешний вид и настройки окна презентации, которое отображается при запуске эксперимента.
Заголовок – Заголовок, который будет показан в окне презентации.
Разрешить перетаскивание – Если опция выбрана, то пользователь сможет перемещать во время моделирования холст окна презентации с помощью мыши (перемещая мышь с нажатой правой кнопкой).
Разрешить изменение масштаба – Если опция выбрана, то пользователь сможет изменять масштаб содержимого окна презентации во время моделирования.
Ширина – [Доступно, если не выбрана опция Во весь экран] Ширина окна презентации.
Высота – [Доступно, если не выбрана опция Во весь экран] Высота окна презентации.
Во весь экран – Если опция выбрана, то при запуске модели окно презентации будет развернуто во весь экран.
Отображать следующие панели инструментов - Эта секция свойств определяет, какие разделы панели управления будут видны в окне презентации. Чтобы добавить раздел в список видимых разделов, установите соответствующий флажок.
Отображать следующие разделы строки состояния - Эта секция свойств определяет, какие разделы строки состояния будут видны в окне презентации. Чтобы добавить раздел в список видимых разделов, установите соответствующий флажок.
Использовать репликации – Если опция выбрана, то исполняющий модуль будет выполнять несколько репликаций за один "прогон". Это нужно тогда, когда в Вашей модели есть стохастика. В этом случае результаты "прогонов" будут уникальными, и значения интересующего Вас выражения, полученные для "прогонов", произведенных при одних и тех же значениях параметров, скорее всего, будут отличаться. В этом случае мы не можем производить всего лишь один "прогон", принимать его результат в качестве результата для данной итерации и продолжать выполнение эксперимента дальше с другими значениями параметров. Чтобы получить репрезентативные данные, нам нужно провести несколько "прогонов" (называемых в даном контексте репликациями) для одного набора значений параметров и принять в качестве значения выражения среднее значение результатов всех репликаций.
Фиксированное количество репликаций – Если опция выбрана, то в рамках одной итерации будет производиться фиксированное количество репликаций.
Кол-во репликаций за итерацию – [Доступно, если выбрана опция Фиксированное количество репликаций] Количество репликаций, которое будет производиться в рамках одной итерации.
Переменное
кол-во репликаций (останов после выполнения минимального кол-ва
репликаций, при достижении доверительного интервала) –
Если
опция выбрана, то в рамках одной итерации будет производиться
переменное количество репликаций.
Для эксперимента с переменным количеством репликаций в одной итерации
задаются минимальное и максимальное количество репликаций. За одну
итерацию всегда будет выполнено заданное минимальное
количество репликаций. Необходимость выполнения дополнительных
репликаций определяется исполняющим модулем. Прекращение выполнения
дополнительных репликаций произойдет в одном из следующих случаев:
Минимальное кол-во репликаций – [Доступно, если выбрана опция Переменное кол-во репликаций (останов после выполнения минимального кол-ва репликаций, при достижении доверительного интервала)] – Минимальное количество репликаций, которые будет производить исполняющий модуль за одну итерацию.
Максимальное кол-во репликаций – [Доступно, если выбрана опция Переменное кол-во репликаций (останов после выполнения минимального кол-ва репликаций, при достижении доверительного интервала)] – Максимальное количество репликаций, которые будет производить исполняющий модуль за одну итерацию.
Доверительная вероятность – [Доступно, если выбрана опция Переменное кол-во репликаций (останов после выполнения минимального кол-ва репликаций, при достижении доверительного интервала)] – Значение доверительной вероятности для вычисляемых результатов заданного выражения. Доверительная вероятность показывает, с какой вероятностью случайный ответ попадет в доверительный интервал. Для простоты можно понимать её как точность выборки. Как правило, используется 95%, но в тех случаях, когда высокая точность не нужна, вероятностью можно пожертвовать и понизить её уровень до 90% и даже до 85%. И наоборот, чем большую выборку может себе позволить исследователь, тем выше можно установить точность полученных данных. Доверительный интервал можно понимать как погрешность, задает размах части кривой распределения по обе стороны от выбранной точки, куда могут попадать ответы.
Относительный уровень ошибки – [Доступно, если выбрана опция Переменное кол-во репликаций (останов после выполнения минимального кол-ва репликаций, при достижении доверительного интервала)] – Значение от 0 до 1, определяющее размер доверительного интервала, который нас будет устраивать в качестве условия прекращения выполнения дополнительных репликаций для текущей итерации. Интервал считается как ("текущее среднее значение" - "текущее среднее значение" * относительный уровень ошибки, "текущее среднее значение" + "текущее среднее значение" * относительный уровень ошибки).