Эксперименты по оптимизации и варьированию параметров в AnyLogic ограничены 255 параметрами?

В AnyLogic

Вы можете изменять только параметры агента верхнего уровня. (https://anylogic.help/anylogic/experiments/optimization.html#:~:text=Optimization%20experiment&text=If%20you%20need%20to%20run,%20optimization%20capability%20of%20AnyLogic.)
(https://anylogic.help/anylogic/experiments/parameter-variation.html)

Агент верхнего уровня не может иметь более 255 параметров.

Количество параметров метода ограничено 255 (https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.11)

Вопрос здесь не в том, почему для задачи оптимизации требуется 255 параметров, и не в том, является ли оптимизация на основе моделирования лучшим способом решения задачи с более чем 255 параметрами (переменными решения). Вопрос в способах преодоления этого ограничения.

я думал

Лучшим вариантом было бы следовать лучшим практикам Java и иметь Java class (у которого почти нет ограничений) (Максимальное количество параметров в Agent-Type)

Однако,

AnyLogic предоставляет Агенты, которые в основном являются предопределенными классами. с несколькими встроенными функциями (https://noorjax.com/2018/11/12/an-example-on-the-use-of-classes-in-anylogic/)

Поэтому кажется, что использование Java Class не поможет. Мне здесь не хватает трюка с Java? можно ли как-нибудь провести оптимизационный эксперимент в AnyLogic с более чем 255 параметрами?

Извините, если этот вопрос не входит в сферу компетенции SOF. Я все еще пытаюсь различать, что можно спрашивать, а что нет.

как сказал Стюарт, наличие 255 параметров может привести к результату, он не будет отличным ... лучше оценить, как уменьшить параметры, связанные с вашей проблемой, и для этого вам нужно создать .. один пример вы можете найти здесь: noorjax.com/2019/04/08/…

Felipe 01.10.2022 11:00
Загадки Python - Генерация простых чисел!
Загадки Python - Генерация простых чисел!
Обычно существует несколько способов решения задач даже пограничной сложности. Как же определить оптимальное и эффективное решение?
0
1
165
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть несколько способов обойти лимит:

  • Структурируйте свои параметры в «сырых» классах Java, поэтому, например, ваш главный агент может иметь 3 параметра типа CoreParameters, ClimateVariables и EconomicVariables. (Просто посмотрите любое руководство по Java, чтобы узнать, как определять простые классы, которые фактически являются просто структурами данных.) Но теперь ваши эксперименты должны создавать соответствующие экземпляры этих классов в качестве значений параметров (и это усложняет определение таких вещей, как эксперимент с изменением параметров; вместо этого вы обычно используете пользовательский эксперимент, поскольку тогда у вас есть полный контроль над тем, как вы настраиваете параметры для каждого запуска). Для оптимизации вам также придется использовать пользовательский эксперимент для определения оптимизации, где, например, у вас может быть 500 переменных оптимизации, но ваш код для настройки модели из них устанавливает ваши 3 экземпляра класса параметров модели с этими 500 значениями. На странице справки Custom Experiment есть примеры этого.

  • Используйте внешние данные (например, Excel, загруженный в БД AnyLogic), чтобы предоставить некоторые/все «параметры» для вашей модели. Проблема здесь в том, что многократные эксперименты AnyLogic (в том числе основанные на оптимизации) предполагают различные параметры агента верхнего уровня. Но часто

    • Загрузка «параметров» останется фиксированной, поэтому их можно будет получить из этих внешних данных.

    • «Параметры» могут варьироваться в связанных наборах, поэтому это может сводиться к одному параметру, который предоставляет, скажем, имя файла для загрузки соответствующих внешних данных (и вы можете варьировать его в заранее подготовленном наборе). Но для этого требуется написать какую-то конкретную Java, чтобы вы могли импортировать внешние данные из динамически определяемого имени файла в базу данных AnyLogic или эквивалентно, но читать непосредственно из файла Excel. (Но это простой шаблонный код, который вы можете скопировать и использовать повторно, как только вы его «выучили».)

P.S. Я хотел бы повторить, однако, что любая оптимизация, включающая 255+ параметров, вероятно, бессмысленна, с небольшой вероятностью найти почти оптимальную (и если у вас есть модель с таким количеством параметров, учитывая, что вы действительно можете изменить все из них). независимо --- у вас есть проблема с дизайном модели).

П.П.С. Два ваших цитируемых фрагмента текста не противоречат друг другу. Вы можете написать необработанные классы Java в AnyLogic или использовать, скажем, Агент, который просто содержит набор параметров в качестве «класса структуры данных». Агенты (вместе со всем остальным) - это классы Java, но это не относится к вашему вопросу.

Другие вопросы по теме