Считывание параметров строка за строкой из excel для эксперимента Anylogic

#excel #parameters #simulation #anylogic #variations

Вопрос:

Я хочу запустить эксперимент с параметрами Anylogic, и я хочу, чтобы параметры непрерывно считывались из файла excel таким образом, чтобы каждая строка данных excel соответствовала параметрам одного запуска. Точно так же я хочу, чтобы он запускался столько раз, сколько строк параметров в excel. Я могу прочитать данные одной строки, используя ExcelControlName.getCellNumericValue(«Имя таблицы», номер строки, номер столбца), но как настроить его таким образом, чтобы он автоматически выполнялся несколько раз, выполняя параметры из всех строк.

Ответ №1:

в вашей имитационной модели создайте вызываемый параметр row , и это будет ЕДИНСТВЕННЫЙ параметр , который изменяется в вашем эксперименте по изменению параметров… затем вы преобразуете свои параметры в своей симуляции в переменные, и каждая переменная будет считывать файл excel следующим образом>

 ExcelControlName.getCellNumericValue("ExcelSheetName", row, ColNumber)
 

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

Комментарии:

1. Гораздо более простое решение, чем мое! Но я сохраню свой для дополнительной гибкости, которую он обеспечивает с примерами кода до и после запуска моделирования.

Ответ №2:

Очень полезный вопрос.

Один из вариантов состоит в том, чтобы использовать объект моделирования и не позволять модели пропустить эксперимент и запустить модель.

введите описание изображения здесь

Это просто даст вам немного больше контроля над выполнением модели, и вы сможете использовать некоторые из кода запуска до и после моделирования.

Представьте следующую супер-простую модель

введите описание изображения здесь

У меня есть один параметр и событие, которое отслеживает параметр, а затем останавливает моделирование.

Затем в эксперименте у меня есть объект Excel, переменная, связанная с параметрами в main, и кнопка, которая просто вызывает run()

введите описание изображения здесь

Файл Excel содержит некоторые простые данные в

введите описание изображения здесь

Теперь в разделе Java эксперимента вам нужно только добавить следующий код.

введите описание изображения здесь

Это гарантирует, что переменная будет обновлена правильными данными на основе количества запусков, и что при остановке модели она снова вызовет функцию запуска, если на листе Excel для загрузки будет больше значений.

Обратите внимание, что индекс строки в Excel начинается с 1 и что у нас есть заголовок для наших данных, поэтому мы хотим начать со строки 2, поэтому я добавил 2 getExperiment().getRunCount()

Если вы запустите эту простую модель, вы увидите в консоли распечатанные значения из файла Excel.

 10.0
20.0
30.0