OpenMDAO Dymos дефект_рефы - как мне их установить?

Я надеялся получить информацию о том, как разумно настроить ссылки на дефекты в Dymos. Я нашел следующие заметки о масштабировании здесь https://github.com/hweyandtnasa/scaling-tutorial, но там масштабирование дефектов в Dymos указано как TODO. Должен ли я просто установить их равными значению ref для состояния, к которому они относятся?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
126
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Масштабирование псевдоспектральных задач оптимального управления сложно. Если вы можете получить копию Практических методов оптимального управления и оценки с использованием нелинейного программирования Джона Беттса, я настоятельно рекомендую ее. Беттс предлагает использовать одно и то же масштабирование как для значений проектных переменных состояния, так и для дефектов. Часто это хорошее эмпирическое правило, но, как и в случае с большинством других подходов к масштабированию, оно не является универсальным. «Дефекты» словосочетаний, которые определяют, является ли динамика физически правильной, представляют собой просто разницу между наклоном аппроксимирующего многочлена и вычисленными уравнениями движения.

В ситуациях, когда значения состояния велики, но крошечные скорости изменения имеют значение, по моему опыту оправдано другое масштабирование. Примерами состояний, в которых это может быть правдой, являются элементы орбиты летательного аппарата или космического корабля. Совсем недавно у нас была ситуация, когда перевод космического корабля на орбиту малой тяги не соответствовал физике. Полуширокая прямая кишка, например, обычно измеряется в км, то есть в масштабе тысяч на околоземной орбите). В используемых единицах «достоверная» разница в дефекте была менее 1Е-6 (используемый порог выполнимости). В этом случае проблема была решена путем увеличения дефекта_масштабирования на несколько порядков (эквивалентно уменьшению дефекта_ref на несколько порядков).

Я также рекомендую эту статью от Росса, Гонга, Карпенко и Пру. В нем изложены некоторые хорошие эмпирические правила и есть доступный пример в брахистохроне. Это ссылается на costates много. Dymos еще не обеспечивает автоматическую оценку стоимости, но они тесно связаны с множителями Ларанжа задачи, которые печатаются в выводе pyoptsparse, если вы используете SNOPT.

Репозиторий github, на который вы указали, был работой стажера и основан на этом методе масштабирования , разработанном Сальяно . Мы обнаружили, что это хорошо работает во многих ситуациях, но это также не панацея.

В конечном счете, нам нужны некоторые параметры автоматического масштабирования в Dymos и/или OpenMDAO, но мы не уверены, когда они смогут найти свое применение во фреймворке. Наши прошлые работы, как правило, более тесно связывали подходы к масштабированию с уравнениями движения, и Dymos разработан, чтобы быть более общим в том смысле, что пользователь может указать любой EOM, который он выберет.

спасибо за весь справочный материал Роб, это будет очень полезно. Таким образом, меньший дефект_ref вынуждает оптимизатор попытаться приблизить состояние, вычисленное из интерполяционного полинома, к состоянию, вычисленному из EOM, что имеет смысл. Похоже, это одна из тех вещей, где опыт и интуиция играют роль.

Mark Garnett 11.12.2020 21:46

В Dymos, если вы оставите значение defect_ref неустановленным при вызове set_state_options, то поведение по умолчанию состоит в том, чтобы сделать defect_ref равным значению ref. Вот почему это делается:

Дефекты — это различия между вычисленной частотой состояний из функции полиномиальной интерполяции и фактической частотой состояний, вычисленной ODE.

Как вы можете видеть здесь: defect = (f_approx-f_computed) * dt_dstau

dt_dstau просто преобразует вещи в нормализованное временное пространство, называемое tau, но оно также умножается на единицу времени (tau безразмерно). Это означает, что дефекты вычисляются в тех же единицах, что и сами состояния. Таким образом, разумным предположением для масштабирования является согласование масштабирования между состояниями и дефектами. Как указывает ответ Роба Фалька, это не всегда правильное решение, но это хорошая отправная точка.

Спасибо, Джастин, это имеет смысл. Я оставляю их по умолчанию для начала.

Mark Garnett 11.12.2020 20:59

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