Документация Engee
Notebook

Автоматизация экспериментов

В проекте представлено Engee-приложение, которое позволяет конфигурировать вычислительный эксперимент, в ходе которого будет многократно запущена некоторая модель. Перестановка значений ее параметров позволяет сформировать сетку комбинаций и рассчитать работу модели в большом диапазоне условий и сформировать таблицу или матрицу для определения целевого функционала, чтобы, в конечном итоге, выбрать интересующий набор конфигураций для дальнейших исследований.

Запуск приложения

В папке с этим примеров вы найдете файл app.jl с кодом приложения, которое мы запустим следующей командой:

In [ ]:
genie_app = engee.genie.start("$(@__DIR__)/app.jl", log_file="log.txt", open_url=true);

Для остановки приложения выполните следующую команду, раскомментировав ее:

In [ ]:
# engee.genie.stop("$(@__DIR__)/app.jl");
simple_experiment_planner.gif

Информация о подготовке окружения

Подготовка осуществляется в четыре простых шага:

  1. Открыть модель, пригодную для модификации и многократного запуска
  2. Задать перечень и диапазон изменения входных переменных
  3. Задать перечень выходных переменных и функцию агрегирования
  4. Запустить эксперимент (данные сохранятся в файл experiment_results.csv)

Входные переменные меняются в рабочем окружении

Планировщик экспериментов отправляет новые значения переменным в рабочем пространстве Engee. Чтобы влиять на работу модели эти переменные должны использоваться где-то в параметрах блоков или в коде инициализации модели.

Вы можете начать формулировать вычислительное задание, задав вектор входных переменных. Этот вектор можно задать либо перечислив нужные значения (например [1,2,3]), либо указав диапазон (1:10 или 1:0.1:10). Подойдет также любое вычислимое в Julia выражение. Каждая входная переменная декларируется на отдельной строке согласно следующему синтаксису: var1: 1:10 где var1 - название переменной, а после первого двоеточия идет вычисляемое значение.

Выходные переменные задаются схожим образом, но вторым аргументом идет идентификатор операции, которая позволит выходной вектор значений модели преобразовать в скаляр. В простейшем случае это будет взятие последнего элемента (x: end), но вы можете использовать первый элемент, среднее, максимум и т.д.

Не забудьте отметить выходную переменную "на запись" в модели

Чтобы переменную x можно было использовать в качестве выходной переменной модели, она должна быть представлена в виде именованного сигнала, а сигнальная линия должна быть отмечена как предназначенная для записи (логирования).

После конфигурации вы можете сохранить настройки для будущего использования (они сохраняются в рабочее пространство переменных) либо загрузить их из переменных, если таковые существуют. Нажимая на кнопку Запустить вы фактически запускаете многократное выполнение модели с подстановкой всех пермутаций входных параметров.

У вас должна быть открыта модель на холсте

Планировщик экспериментов запускает текущую, открытую в данный момент на холсте модель (выполняя engee.run()). Если модель не открыта, в статусной строке приложения вы увидите сообщение об ошибке.

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

Сохранение и загрузка настроек эксперимента

Чтобы загрузить план эксперимента из переменных, сперва их нужно создать в рабочем пространстве. Например, загрузив (кнопкой Открыть) из файла saved_config.jld.

Заключение

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