2016-11-18 5 views
0

Wie kann ich am effizientesten Gradienteninformationen vom Objekt openmdao.core.driverDriver abrufen, nachdem es ausgeführt wurde? Es hat Hilfsfunktionen wie get_desvars, get_constraints und get_objectives-gibt es eine ähnlich einfache Möglichkeit, auf Gradienten- und Hessian-Berechnungsergebnisse zuzugreifen? Kann ich diesen Funktionen ein Argument übergeben, das anzeigt, dass ich Gradienten und/oder Hessians möchte?Zugriff auf Gradienteninformationen über ein Treiberobjekt

Antwort

0

Sie können die Methode "calc-gradient" für die Problem-Instanz aufrufen. So erhält der Fahrer auch Gradienteninformationen. Schauen Sie sich this test an, um zu sehen, wie wir das nennen.

Dies ist in der Tat, wie die Standard-Gradienten-basierte Optimierung Treiber Gradienten berechnen. Die run method des Treibers übernimmt eine problematische Instanz als Argument und kann dann calc_gradient anrufen

+0

Kann ich diese Methode von einem Treiber aufrufen, der ein Kind eines Problems ist? Wenn der Treiber als 'prob.driver = pydakdriver()' initialisiert wurde, kann ich 'super' oder eine similar-Methode verwenden, um auf das mit dem Treiber verbundene Problem zuzugreifen? So etwas wie 'super (pydakdriver, self) .calc_gadient (kwargs ['av_labels'], self.get_objectives(). Keys())'? – kilojoules

+0

Ich habe meine Antwort etwas genauer bearbeitet und Ihnen gezeigt, wie Gradienten-Optimierungstreiber die Gradienten berechnen. –

+0

Danke Justin. Warum können wir direkte und objektive Informationen vom Fahrer erhalten, aber keine Gradienten? – kilojoules

Verwandte Themen