Простой планировщик экспериментов
Автоматизация экспериментов
В проекте представлено Engee-приложение, которое позволяет конфигурировать вычислительный эксперимент, в ходе которого будет многократно запущена некоторая модель. Перестановка значений ее параметров позволяет сформировать сетку комбинаций и рассчитать работу модели в большом диапазоне условий и сформировать таблицу или матрицу для определения целевого функционала, чтобы, в конечном итоге, выбрать интересующий набор конфигураций для дальнейших исследований.
Запуск приложения
В папке с этим примеров вы найдете файл app.jl с кодом приложения, которое мы запустим следующей командой:
genie_app = engee.genie.start("$(@__DIR__)/app.jl", log_file="log.txt", open_url=true);
Для остановки приложения выполните следующую команду, раскомментировав ее:
# engee.genie.stop("$(@__DIR__)/app.jl");

Информация о подготовке окружения
Подготовка осуществляется в четыре простых шага:
- Открыть модель, пригодную для модификации и многократного запуска
- Задать перечень и диапазон изменения входных переменных
- Задать перечень выходных переменных и функцию агрегирования
- Запустить эксперимент (данные сохранятся в файл
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.
Заключение
Перед вами пример довольно простого планировщика экспериментов, который позволит без дополнительного программирования многократно запускать вашу модель и получать в рабочем пространстве объекты, на основе которых можно строить графики, находить наилучший набор параметров или просто использовать таблицу для дальнейшего анализа.