Флаг выхода в pyOptSparseDriver

Мне нужна возможность указать флаг выхода, если что-то не получилось. В документации OpenMDAO для pyoptsparse_driver есть опция для флага выхода. Однако, когда я запускаю его с флагом выхода в качестве опции, он говорит, что Option 'exit_flag' has not been added, Кроме того, я также не уверен, как на самом деле указать, что-то не удалось или нет. Нужно ли передавать флаг из компонента, который потерпел неудачу в solve_nonlinear(), и каким-то образом использовать его для установки опции в pyoptsparse_driver? Я хочу сделать что-то вроде этого, но я не уверен в синтаксисе, и я не могу найти пример:

def solve_nonlinear(self, params, unknowns, resids):
    unknowns['y'], exit_flag = function(params['x'])
    self.exit_flag = exit_flag

1 ответ

Решение

Здесь есть ряд проблем:

1) "Как передать информацию об ошибках от компонента до оптимизатора?" В настоящее время у нас нет способа справиться с этим. Это то, над чем мы будем работать в ближайшем будущем

2) Если компонент выходит из строя, каков правильный ответ? Зависит от того, что ты делаешь. Для DOE вы, вероятно, должны просто зарегистрировать неудачный случай и продолжить. Для метода без градиента, вероятно, требуется какое-то объективное наказание. Для алгоритма, основанного на градиенте, вам, вероятно, потребуется вернуться назад к поиску строк (или использовать какой-то другой аналогичный механизм возврата назад).

3) В случае неудачи водитель может сообщить об общем состоянии выхода. Опять же, мы еще не реализовали это в общем виде. Опция, которую вы нашли в драйвере pyopt_sparse, является ошибкой в ​​строке документа. Однако есть атрибут exit_flag, который устанавливается на основе внутреннего состояния pyopt.

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