2016-11-18 54 views
0

運行後,如何最有效地從openmdao.core.driverDriver對象獲取漸變信息?它有幫助函數,如get_desvars,get_constraintsget_objectives - 是否有一種類似的簡單方法來訪問梯度和hessian計算結果?我可以通過這些函數的參數表明我想要漸變和/或hessians嗎?通過驅動程序對象訪問漸變信息

回答

0

您可以在Problem實例上調用calc-gradient方法。這也是司機如何獲得漸變信息。看看this test看看我們怎麼稱呼它。

這其實是標準的基於梯度的優化驅動程序如何計算梯度。驅動程序run method將問題實例作爲參數 ,然後它可以調用calc_gradient

+0

我可以從作爲問題的孩子的驅動程序調用此方法嗎?如果驅動程序已初始化爲'prob.driver = pydakdriver()',我可以使用'super'或simillar方法來訪問與驅動程序相關的問題?像'超(pydakdriver,個體經營).calc_gadient(kwargs [ 'av_labels'],self.get_objectives()。鍵())'? – kilojoules

+0

我修改了我的答案,使其更加完整,並向您展示了基於漸變的優化驅動程序如何計算漸變。 –

+0

謝謝賈斯汀。爲什麼我們可以直接從駕駛員那裏獲得約束和客觀信息,但我們不是漸變? – kilojoules