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

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

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

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

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

  • • В панели Проект щелкнуть правой кнопкой мыши по элементу модели и выбрать СоздатьЭксперимент из контекстного меню. Появится диалоговое окно Новый эксперимент.
  • • Выбрать Нестандартный из списка Тип эксперимента.
  • • Ввести имя эксперимента в поле Имя.
  • • Выбрать корневой объект эксперимента из выпадающего списка Корневой класс модели.
  • • Щелкнуть мышью по кнопке Далее, чтобы перейти к следующей странице Мастера. Здесь можно указать, следует ли загружать корневой объект этого эксперимента из файла сохраненного состояния модели. Если да, то установите флажок на этой странице и выберите файл состояния модели с помощью кнопки Выбрать.
  • • Щелкнуть мышью по кнопке Готово.

Ниже представлен фрагмент кода нестандартного эксперимента, обеспечивающего поиск решения для ранее рассмотренной задачи максимизации функции у методом полного перебора:

// Создание исполняющего модуля Engine:

Engine engine = createEngine();

// Задание конечного времени: engine.setStopTime( 8 );

// Создание нового корневого объекта:

Main root = new Main( engine, null, null );

// Инициализация переменных double x,y;

double x_optimum=0; double max_y = 0; for(x=0; x<=6; x = x+0.01)

{

root.x = x;

// Подготовка исполняющего модуля Engine: engine.start( root);

// Запуск модели в быстром режиме: cnginc.runFastO;

//Обработка результатов у = root.y;

if(v > max_y)

{

x_optimum = x; max_y - y;

}

// останов модели: engine.stop();

}

//Вывод результата

System, out. println(“x=” + Double.toString(xoptimum) + “y=” + Double. toStri ng( max_y));

В результате выполнения данного нестандартного эксперимента можно получить следующие результаты: х = 1,42, у = 12,88, что соответствует корректному решению задачи (9.1).

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >