С момента последнего релиза мы сосредоточились на одной задаче: помочь вам быстрее переходить от разработки модели к принятию решений.
AnyLogic Cloud 2.6.0–2.7.0 упрощает запуск экспериментов и работу с ними. Теперь вы можете быстрее понимать ход выполнения и результаты. Массовые эксперименты выполняются эффективнее, администрирование Private Cloud становится проще, а поддерживать систему в порядке требует меньше усилий.
Ниже мы рассмотрим ключевые изменения на примере модели Activity Based Costing Analysis. Так вы сможете попробовать всё на реальной модели и сразу применить обновления в работе.
Содержание:- Улучшенный вид экспериментов и Completed runs
- Выполнение экспериментов варьирования параметров и Монте-Карло
- Улучшения установки и администрирования Private Cloud
- Итоги
Улучшения в экспериментах и Completed runs
Мы добавили несколько улучшений в дашборды экспериментов и вид Completed runs:
- В Completed runs теперь отображается общее количество завершённых экспериментов.
- Завершённые эксперименты, независимо от того, завершились они с ошибкой или без неё, показывают свой статус на боковой панели.
- Эксперименты Optimization и Optimization with replication поддерживают установку ограничений.
- Все эксперименты поддерживают условия скрытия для виджетов ввода.
- Эксперименты варьирования параметров и Монте-Карло выполняются быстрее.
Рассмотрим эти улучшения на примере модели Activity Based Costing Analysis. Опытные пользователи могут сразу открыть копию модели и изучить новые возможности в ней или протестировать изменения в своих моделях. Если вы только начинаете работать с AnyLogic Cloud, воспользуйтесь пошаговой инструкцией.
Откройте примеры моделей AnyLogic. Для этого выберите Help → Example Models и откройте модель Activity Based Costing Analysis. Затем перейдите к элементу Run Configuration. Перетащите параметры Resource A capacity и Resource B capacity в колонку Inputs и загрузите модель в AnyLogic Cloud.
Счётчик завершённых запусков и статус эксперимента
Откройте свою модель в AnyLogic Cloud. Вы увидите вкладку Completed runs с 0 запусков.
Запустите эксперимент и снова проверьте счётчик. Как и ожидалось, в боковой панели появится «1 run».
Счётчик завершённых запусков отображается для каждой версии. Так вы можете легко понять, сколько запусков было в каждой версии. Аналогично для каждого эксперимента отображается статус запуска:
- зелёная галочка, если он завершился успешно,
- красный восклицательный знак, если он завершился с ошибкой.
Ограничения
Создайте новый эксперимент по оптимизации и оцените улучшения: работа с ограничениями и условия скрытия. Нажмите New experiment, выберите тип Optimization experiment и, при необходимости, укажите имя эксперимента.
После создания эксперимента откройте редактор дашборда. Включите Discrete range для параметров Resource A capacity и Resource B capacity, а также Continuous range для Mean processing time. В разделе Outputs нажмите кнопку Add output, выберите Single value в новом виджете вывода и выберите Resource A capacity в выпадающем списке Select input. Затем добавьте виджеты вывода для Resource B capacity и Mean processing time. При желании можно перетащить эти виджеты в начало раздела Outputs.
Теперь сохраните дашборд и задайте следующие значения:
- для обоих входных параметров Resource capacity: Min: 1; Max: 20; Step: 1;
- для входного параметра Mean processing time: Min: 1; Max: 15.
В конце задайте целевую функцию Output total cost per product, $ как Minimize и установите количество итераций равным 500. Теперь запустите эксперимент.
Результаты должны быть следующими:
- Resource A capacity: 3
- Resource B capacity: 4
- Mean processing time: 2.778
- Output total cost per product: $: 55.
Теперь оба эксперимента на боковой панели имеют статус завершённых.
Сумма Resource A capacity и Resource B capacity равна 7. Допустим, у нас есть ограничение по мощности: сумма мощностей не должна превышать 5. Такое ограничение можно рассчитать до запуска модели, потому что мощность является входным параметром модели, а не результатом. Это значит, что эксперимент можно настроить так, чтобы он пропускал запуски, нарушающие ограничение.
Чтобы настроить ограничения, откройте редактор дашборда optimization experiment и нажмите Add constraint.
В новом элементе можно указать имя ограничения и выражение, которое используется для расчёта его значения. В выражении можно ссылаться на числовые входные параметры эксперимента. Чтобы открыть выпадающий список доступных входных параметров, введите символ “.
После ввода кавычки можно начать печатать, чтобы увидеть входные параметры, которые соответствуют введённому тексту. Помимо названий входных параметров, можно использовать различные константы и функции, перечисленные в документации. Имена входных параметров должны быть заключены в кавычки. Функции и константы нужно вводить без кавычек. Доступны следующие операции:
- сложение (+)
- вычитание (-)
- умножение (*)
- деление (/)
- остаток от деления (%)
- возведение в степень (^)
Вы можете использовать скобки (), чтобы задать порядок операций. Выражение проверяется после выхода из поля редактирования. Если проверка не пройдена, вы увидите сообщение об ошибке.
Вернёмся к мощностям ресурсов. Введите простую сумму Resource A capacity и Resource B capacity, назовите ограничение Total capacity и сохраните дашборд. В дашборде эксперимента вы увидите новое ограничение с его условием. По желанию вы можете задать пределы для ограничений. Например, установите для Total capacity значение less than or equal to 5.
Теперь можно запустить эксперимент. Результаты эксперимента должны быть следующими:
- Resource A capacity: 2
- Resource B capacity: 3
- Output total cost per product, $: 57
Ограничения были соблюдены. Если все запуски эксперимента нарушают ограничения, вы увидите сообщение об ошибке: No solution satisfies the constraints.
Примечание. Поскольку AnyLogic Cloud хранит результаты завершённых запусков, вам не нужно запускать эксперимент снова, если вы отключите ограничение, выбрав Not restricted. Результаты будут взяты из базы данных AnyLogic Cloud.
Условия скрытия
Как вы, возможно, знаете, в AnyLogic 8 у объекта parameter есть свойство hide conditions. Оно скрывает parameter A на панели свойств, если другой параметр имеет (или не имеет) конкретное значение. Например, если перетащить блок Source на холст и изменить значение свойства Arrivals defined by с Rate на Interarrival time, свойство Rate исчезнет, а свойство Interarrival time появится.
Начиная с AnyLogic 2.7.0, вы можете задавать условия скрытия для виджетов ввода. Создадим условие скрытия в модели Activity based cost analysis. Мы покажем виджеты для настройки stop time или stop date. Видимость stop time или stop date определяется значением виджета Stop at. Выполните следующие шаги:
- Создайте новый эксперимент.
- Откройте редактор дашборда и перейдите в Experiment settings.
- Найдите виджет Stop time и выберите опцию Hide if.
- Нажмите Add hide condition и задайте Stop at – Does not equal to – Time.
- Найдите виджет Stop date и выберите опцию Hide if.
- Нажмите Add hide condition и задайте условие Stop at – Does not equal to – Date.
Теперь сохраните дашборд и измените значение Stop at с Time на Date. Вы увидите, что поле Time исчезнет, а поле Date появится.
Как и в AnyLogic 8, вы можете добавить несколько условий. Любое выполненное условие скрывает входной параметр. Также можно изменить порядок условий скрытия. Это не влияет на результат, но может сделать условия более читаемыми.
Мы надеемся, что это улучшение поможет вам создавать более удобные дашборды для ваших имитационных моделей.
Более быстрое выполнение экспериментов варьирования параметров и Монте-Карло
Поскольку в AnyLogic Cloud несколько пользователей могут одновременно запускать разные эксперименты, в системе используется алгоритм балансировки нагрузки. Он не позволяет одному пользователю занять все доступные узлы выполнения.
В предыдущих версиях алгоритм не учитывал фактическую длительность отдельного запуска. Он формировал группы фиксированного размера, до 20 запусков в каждой.
Группа — это набор отдельных запусков, которые выполняются на одном узле.
Это хорошо работало, когда один запуск занимал больше нескольких секунд. Но производительность была низкой, если отдельные запуски были очень короткими, например 0,1 секунды.
Так, если запустить Монте-Карло эксперимент с 500 итерациями, то есть отдельными запусками, однопроцессорный компьютер завершит эксперимент за 500 * 0,1 = 50 секунд. На 10-ядерном настольном компьютере это займёт 5 секунд. Старый алгоритм AnyLogic Cloud выполнял тот же эксперимент примерно за 2 минуты. Причина в том, что старый алгоритм создавал 8 начальных групп параллельно, а затем создавал новые группы каждые 5 секунд. В этом случае общее время составляло 0,1 * 20 + 340 / 5 = 70 секунд.
В AnyLogic Cloud 2.7.0 мы заменили старый алгоритм. Теперь при расчёте размера группы он учитывает длительность одного запуска. Вот как это работает:
- Если у версии модели меньше 10 завершённых запусков, AnyLogic Cloud выполняет начальную группу размером 10 отдельных запусков.
- На основе данных о завершённых запусках AnyLogic Cloud рассчитывает медианную длительность одного запуска. Затем система рассчитывает максимальный размер группы, равный максимальному количеству отдельных запусков, которые можно выполнить за 30 минут.
- После этого AnyLogic Cloud создаёт несколько групп в зависимости от внутренней конфигурации и доступных свободных узлов. Обычно параллельно выполняются 6 групп.
Вернёмся к нашему примеру. Начальная группа из 10 запусков была завершена за 1 секунду. Медианная реальная длительность одного запуска составляет 0,1 секунды. Оставшиеся 490 запусков должны занять 490 * 0,1 = 49 секунд. Эти 490 запусков распределяются между 6 группами. Получается примерно 82 запуска на группу. Одна группа завершается за 82 * 0,1 = 8,2 секунды. Поэтому выполнение занимает 1 + 8,2 = 9,2 секунды.
В этих расчётах мы не учитываем другие потери времени, например подготовку групп и сопутствующие задержки. Поэтому общее время для этого эксперимента должно составить около 25 секунд. Иными словами, мы примерно в 3 раза сократили общее время, необходимое для выполнения эксперимента. Это отличный результат.
В следующих релизах мы планируем оптимизировать процедуры подготовки групп. Подробнее об этом алгоритме и других деталях балансировки выполнения экспериментов можно узнать в руководстве по архитектуре AnyLogic Cloud.
Установка и администрирование Private Cloud
Для пользователей Private Cloud есть два крупных обновления:
- Начиная с Private Cloud 2.6.0, мы предоставляем единый установщик для всех версий продукта: Private Cloud Lite, Private Cloud Pro и Private Cloud Enterprise. Тип продукта определяется при активации.
- Данные удалённых моделей теперь полностью удаляются из хранилища после заранее настроенного льготного периода.
Рассмотрим подробнее эти изменения.
Единый установщик для Private Cloud
До AnyLogic Private Cloud 2.6.0 нужно было скачивать установщик для конкретной версии лицензии Private Cloud. Чтобы перейти с одной версии лицензии на другую, например с Lite на Pro, нужно было скачать другой установщик и выполнить обновление.
Теперь для перехода с Lite на Pro достаточно отказаться от лицензии Private Cloud Lite и активировать лицензию Private Cloud Pro в вашем AnyLogic Team License Server.
Версию лицензии и сведения о лицензии можно проверить в панели администратора Private Cloud.
Сам функционал Lite, Pro и Enterprise не изменился.
Удаление неиспользуемых данных
Ещё одна важная новая возможность — полное удаление ресурсов, связанных с удалёнными моделями. Мы уверены, что большинство клиентов Private Cloud регулярно создают резервные копии. Однако здесь возникает проблема: резервные копии хранят все данные и ресурсы, в том числе удалённые модели.
С одной стороны, это хорошая практика, потому что случайно удалённые модели всегда можно восстановить. С другой стороны, если ресурсы никогда не очищаются, размер резервной копии может расти практически бесконечно.
В AnyLogic Private Cloud 2.7.0 мы добавили механизм, похожий на сборку мусора. Удалённые модели и связанные с ними ресурсы автоматически удаляются навсегда после заданного периода хранения. По умолчанию он составляет 1 неделю. При необходимости его можно изменить в файле applications.json.
Мы ожидаем, что после обновления до Private Cloud 2.7.0 размер резервных копий заметно сократится.
Что это значит для вас
В AnyLogic Cloud 2.6.0–2.7.0 рабочий процесс становится проще и интуитивнее. Вы можете сосредоточиться на решениях, а не на технических действиях: быстрее проверять идеи, сразу видеть, что работает, и запускать больше сценарных проверок.
В результате техническим специалистам стало проще проводить эксперименты, менеджеры получают понятные результаты, а команды, которые управляют платформой, тратят меньше усилий на её поддержку.
Готовы попробовать новые возможности в работе? Откройте AnyLogic Cloud, загрузите модель, запустите несколько сценариев и поделитесь результатами с командой.