2015-11-20 4 views
1

Мы обнаружили, что несколько компонентов нашего кода не выполняют проверку градиента при использовании разнесения вперед или назад, но проходят при использовании более точного центрального различия. Чтобы исправить это, мы изменили значение по умолчанию в этих функциях в нашей версии кода, чтобы использовать центральное различие.Запрос функции OpenMDAO v1.x: метод разностного метода в методах проверки производных

Мы хотели бы попросить, чтобы метод конечных разностей, используемый методами проверки производных, был выбран таким образом, чтобы тесты могли проходить при запуске другими пользователями.

ответ

2

Вы уже должны иметь возможность сделать это на основе отдельной переменной, указав form в add_param для переменных, которые вы хотите иметь центральную разницу.

self.add_param('x2', 3.0, form = 'central') 

В качестве альтернативы, вы можете установить их для всех Params в одном компоненте по:

self.fd_options['form'] = 'central' 

check_partial_derivatives, безусловно, забрать это. В конечном итоге check_total_derivatives также должен забрать его, но по-прежнему существует замечательная ошибка о том, что происходит, когда вы указываете разные значения в нескольких целях, которые связаны с одним источником IndepVarComp, - который он использует, - он использует первый найденный прямо сейчас.

Вы также можете установить step_type и step_size таким образом.

+0

Если компоненты обеспечивают градиенты, и мы просто используем конечное различие, чтобы проверить их, будет ли настройка этих параметров позволять компоненту использовать предоставленные градиенты во время обычных прогонов? – jthomas

+0

Возможно, я не понимаю, как их использовать, но когда я пытаюсь вызвать 'self.fd_options ['form'] = 'central'' в' def __init __ (self): 'внутри компонента, я получаю ошибку атрибута : 'AttributeError: объект 'floris_wcent_wdiam' не имеет атрибута 'fd_options''. : – jthomas

+0

Должно быть хорошо хранить эти параметры в переменных метаданных даже при использовании аналитических производных. Конечная разница срабатывает только при установке параметра force_fd в значение True в компоненте или группе. –

2

Несмотря на то, что вы можете управлять поведением на отдельном уровне переменной с помощью метаданных или всего уровня компонента с помощью опций FD, также разумно установить определенные параметры через kwargs для check_partial_derivs. Это то, над чем мы можем работать, хотя в настоящий момент это не будет для нас сверхвысоким приоритетом.

 Смежные вопросы

  • Нет связанных вопросов^_^