#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