OpenMDAO Извлечение и установка параметров из группы openmdao

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

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

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

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

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

person Mike McWilliam    schedule 17.02.2016    source источник
comment
ваш вопрос немного расплывчатый. Было бы очень полезно, если бы вы построили простой пример для решения проблемы.   -  person Justin Gray    schedule 17.02.2016
comment
В своей докторской диссертации я создал что-то похожее на openMDAO, но на C++... не такое сложное, и делалось это немного по-другому. У меня были методы get/set, которые собирали/устанавливали весь вектор проектирования, несмотря на то, что фактические значения хранились внутри объектов. Поэтому я надеялся, что смогу сделать что-то подобное с openMDAO.   -  person Mike McWilliam    schedule 17.02.2016
comment
Мне нужно бежать... но я уточню свою проблему чуть позже...   -  person Mike McWilliam    schedule 17.02.2016


Ответы (1)


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

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

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

person Justin Gray    schedule 17.02.2016