2013-04-29 1 views
0

Мне было интересно, смог ли кто-нибудь, кто использовал библиотеку оптимизации в Dymola, использовать функцию RealtimeOptimization, не имея явных конститутивных уравнений для установки, чтобы ввести критерийFunction? В частности, я пытаюсь использовать некоторые из состояний моей модели в качестве функции критериев, но когда я ввожу y[1] := mymodel.state; с кавычками или без них вокруг состояния, Dymola отклоняет эту функцию. Любые мысли были бы очень полезными. Спасибо.Оптимизация в реальном времени в Dymola

ответ

0

Невозможно иметь доступ к переменным модели внутри функции. Вы должны указать значения переменных через входы в функцию. Задача RealtimeOptimization предназначена для вызова во время моделирования модели Modelica. Функция критериев имеет определенные входы nTuners, nCriteria, тюнеры [nTuners]. Вы можете добавить дополнительные входные переменные, см. Пример Optimization.Tasks.RealtimeOptimization.Examples.Example02.RunSampled и запись UserData в функции Optimization.Tasks.RealtimeOptimization.Examples.Example02.criteriaFunc02. Этими дополнительными переменными вы могли бы перенести некоторые переменные состояния в функцию critiera.

Возможно, мы сможем помочь вам, если вы предоставите дополнительную информацию о своей настройке. Я являюсь основным разработчиком библиотеки Optimization в Dymola.

+0

Спасибо, Андреас. Я пытаюсь сформировать замкнутый контур для моей моделируемой системы, используя оптимизационную функцию Realtime. У меня три состояния системы, которые я хочу контролировать в пределах Min/Max, и два входа, также с ограничениями. Критерии эффективности - это цель для одного из входов. Существует дополнительный вход в систему, которая является внешней ссылкой (не контролируемой). Ваши мысли были бы очень оценены. –

+0

После попытки ввода моей функции критериев в окне оптимизации (GUI), я получаю сообщение об ошибке, которое определенная мной функция является незаконной. Должна ли функция критериев определять критерии как явные функции тюнеров? Я не могу определить свои состояния модели как ясные функции тюнеров, которые я использую. Есть ли способ использовать C [1]: = myinput1; ? –

0

Вы можете попробовать добавить выходы (Modelica.Blocks.Interfaces.RealOutputs) на верхний уровень модели, а затем связать их с состояниями с помощью блоков Modelica.Blocks.Sources.RealExpression.

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

+0

Страница критериев создает критерии оптимизации для решателя, но не для функции критериев. Сама функция не имеет доступа к модели, за исключением случаев, отмеченных Андреасом. –