Run_driver() / run_problem() «сведенная» обратная связь

Я иногда не получаю сходимости по моей проблеме. Моя проблема настроена как проблема Dymos. Я использую IPOPT в качестве оптимизатора. Если я запускаю проблему только один раз, я могу проверить IPOPT.out на наличие конвергентной строки, и это нормально.

Я часто хочу запустить анализ параметров, где я варьирую граничные условия и варианты задач. Для этого я использую Ray https://www.ray.io/, библиотеку Python для запуска параллельных процессов. Я отключаю все файловые операции ввода-вывода, которые могу для этого, так как в противном случае несколько процессов мешают друг другу записывать в файл.

Однако тогда трудно узнать, не сошелся ли конкретный процесс/случай. По этой причине было бы полезно, если бы функция run_problem() возвращала информацию о сходимости. Кажется, это не так, поэтому есть ли способ получить информацию о конвергенции каким-либо другим способом, который не требует чтения файла?

Я понимаю, что существует целая система драйверов DOE, настроенная для OpenMDAO. Однако кривая обучения выглядела довольно крутой. Я получил параллельную обработку, работающую с Рэем, за считанные часы, и она работает довольно хорошо, за исключением одной проблемы.

Я размещу задачу на github Dymos, чтобы вернуть информацию об оптимизаторе из run_problem. Вероятно, нам следует более подробно остановиться на том, что мы возвращаем из prob.run_driver на стороне OpenMDAO.

Rob Falck 22.03.2022 19:01
Стоит ли изучать 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
1
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

prob.driver.fail должно быть False, если оптимизация прошла успешно, и его не нужно читать из файла. Однако, учитывая различные уровни успеха оптимизаторов, это может быть не совсем точным. Например, solved to acceptable tolerance против optimal solution found немного сложно отразить в простом логическом выводе, и нам, вероятно, следует найти лучший способ сообщить об успехе оптимизатора.

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

Mark Garnett 22.03.2022 22:57

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