2016-02-17 3 views
0

У меня есть несколько проблем в openMDAO, я хочу извлечь вектор «params» для одного и использовать его для установки ввода для другого. В основном первый оптимизирует некоторые вещи, затем я хочу использовать это решение в другой проблеме, чтобы сделать что-то еще (см. Implementing AMMF within OpenMDAO).OpenMDAO Извлечение и настройка параметров из группы openmdao

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

Теперь, когда я запускаю проблему, я могу получить доступ к элементу params из группы, но эти параметры инициализируются значениями по умолчанию. Не значения последнего прогона. Итак, как мне получить этот вектор?

Я предполагаю, что вторая часть этих вопросов заключается в том, как вы можете «установить» все параметры за одну операцию.

  • Глупое ограничение переполнения стека заключается в том, что я не могу использовать проблему слова в названии. Я понял, но что, если я хочу обратиться к объекту openMDAO, называемому проблемой?
+0

ваш вопрос немного. Это очень помогло бы, если бы вы построили простой пример для решения этой проблемы. –

+0

В моем PhD я создал нечто похожее на openMDAO, но на C++ ... не так сложно, и он делал что-то совсем другое. У меня были методы get/set, которые собирали/устанавливали весь вектор дизайна, несмотря на то, что фактические значения были сохранены в объектах. Поэтому я надеялся, что смогу сделать что-то подобное с openMDAO –

+0

Мне нужно запустить ... но я немного уточню свою проблему немного позже ... –

ответ

0

Обычно вам не нужно обращаться к вектору params проблемы практически в любой ситуации. Вам нужно будет только взаимодействовать с вектором unknowns, который вы можете сделать с помощью самой проблемы (например, prob ['some_var']).

В вашем случае, чтобы сделать что-то полностью автоматическое, основанное только на наименовании, вам действительно нужно будет получить вектор неизвестных, из корневой группы (root.unknowns). Вы можете перебрать это как словарь и получить (var_name, meta_data). Вы можете использовать это, чтобы получить значение переменной, а затем использовать его для установки одного и того же имени переменной в любой последующей проблеме, которую вы хотите использовать.

Если вы считаете, что две проблемы полностью идентичны, вы можете просто слепо перебрать все значения в словаре неизвестных. Но если они не то же самое, но просто имеют НЕКОТОРЫЕ из тех же имен переменных, вы должны быть немного более осторожными и проверить, существует ли переменная из первой проблемы во второй.