AnyLogic Cloud API: новые возможности

Вместе с релизом AnyLogic 8.5 мы представили новые возможности AnyLogic Cloud API 8.5.0. С помощью API можно настраивать и запускать имитационные модели в облаке удалённо, а также создавать для них пользовательские интерфейсы (пример такого интерфейса). Об этих и других возможностях API мы уже писали в блоге, а теперь разберём их на примерах.

Вы можете следовать за объяснением и самостоятельно воспроизвести примеры. Вот что вам понадобится, чтобы начать работу с облачным API на JavaScript:

  • Ключ для API. Мы укажем пробный ключ ниже. Полнофункциональный ключ доступен пользователям коммерческих версий AnyLogic Cloud.
  • HTML-страница, которую вы можете редактировать, или онлайн-сервис для редактирования и запуска HTML и JavaScript-кода. Чтобы подключиться к облачному клиенту, который находится на нашем сервере, вставьте этот скрипт внутри <head>: <script src="href="https://cloud.anylogic.com/assets/js-client-8.5.0/cloud-client.js"></script>.

В наших примерах мы будем использовать модель Service System Demo. Она описывает процесс обслуживания: позволяет задать вместимость (Server capacity) и проанализировать средний размер очереди на обслуживание (параметр Mean queue size) и загрузку ресурсов (параметр Server utilization). Модель находится на нашем тестовом аккаунте, именно к ней вы будете подключаться по API. Если готовы, давайте начнём.


Запуск модели без анимации

(ссылки в заголовках ведут на подробное описание на английском языке)

В этом примере мы програмно найдём нужную модель в “Клауде”, зададим входные данные и запустим простой эксперимент без анимации.

Для запуска эксперимента добавьте на страницу HTML и JavaScript код:

Как это работает?

Как только веб-страница и скрипты загружаются, мы создаём объект CloudClient с API-ключом – e05a6efa-ea5f-4adf-b090-ae0ca7d16c20. Он позволяет подключаться к хосту, с которого загружается API-клиент. Этот шаг повторяется в каждом примере.

После нажатия кнопки вызывается функция runSimulation(), которая деактивирует кнопку и запускает команды: выбрать последнюю версию модели Service System Demo, задать значение параметра Server capacity = 8 и создать объект simulation с этими входными данными. Далее команда getOutputsAndRunIfAbsent() проверяет, завершился ли эксперимент, и выводит данные на страницу.

Когда эксперимент завершился, используется API объектов Inputs и SingleRunOutputs, чтобы отобразить входные и выходные данные – значения параметров Server capacity, Mean queue size и Server utilization.

Если эксперимент прошёл без ошибок, вызывается блок finally и кнопка запуска эксперимента становится активной. При ошибках вызывается блок catch с сообщением об ошибке, он копирует сообщение в консоль.


Настройка параметров в интерфейсе и запрос результатов эксперимента

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

В окне HTML задаётся виджет – элемент ввода значения для параметра Server capacity.

В окне JavaScript задаются объекты inputs (передаёт параметр Server capacity) и simulation (запускает эксперимент). Затем команда simulation.getOutputs() запрашивает результат. Если результаты найдены, они отобразятся в виде значений Mean queue size и Server utilization (блок then в коде). Если результаты не найдены, или возникает другая ошибка, появляется окно об ошибке (блок catch в коде). Вы также можете настроить оповещение в консоли разработчика с помощью кода ниже.


Визуализация прогресса выполнения эксперимента

Чтобы увидеть прогресс простого эксперимента, можно задать индикатор, который меняет цвет по ходу выполнения эксперимента, с помощью функции ModelRun.getProgress(). В этом примере показываем, как это сделать, а также покажем ещё один способ запуска модели, с помощью функций run(), waitForCompletion() и getOutputs().

Когда мы задаём входные параметры в JavaScript, мы должны изменить системное значение {STOP_TIME} на большее (в примере – 10000000), чтобы эксперимент выполнялся дольше и индикатор менял цвет медленнее. Индикатор может изменить цвет мгновенно, если вы запускаете эксперимент с предыдущими входными данными (в этом случае результаты загружаются из базы данных). Поэтому для проверки работы индикатора рекомендуем запускать эксперимент с входными данными, которые вы ещё не использовали.

Функция startPolling() запускает вызов функции simulation.getProgress(), который повторяется с интервалом в 1 секунду. Функция stopPolling() вызывается, когда закончился эксперимент или возникла ошибка, и 2 секунды проверяет, что индикатор заполнен.

Вызов функции simulation.run() запускает эксперимент (если он уже не запускался с такими же входными данными) и возвращает объект simulation , не дожидаясь окончания эксперимента. Чтобы отследить завершение эксперимента, мы используем функцию simulation.waitForCompletion(), которая возвращает тот же объект. Далее мы запрашиваем результаты вызовом функции simulation.getOutputs(). Вместо этой последовательности можно использовать одну функцию simulation.getOutputsAndRunIfAbsent().


Мы разобрали только 3 примера использования API облачного сервиса. Остальные примеры доступны в документации по API (на англ.).

Чтобы протестировать возможности API на собственной модели, воспользуйтесь тестовой версией AnyLogic Private Cloud Lite. Обратите внимание: текущая версия API совместима только с AnyLogic 8.5 и последующими версиями программы.

Если у вас появились вопросы по примерам, работе API или установке AnyLogic Private Cloud Lite, задавайте их нашей команде техподдержки через форму обратной связи в AnyLogic.

Похожие материалы