2017-03-21 2 views
0

Ich verwende OpenMDAO 1.7.3 für ein Optimierungsproblem auf einer Karte.Wie kann ich OpenMDAO bei der Auswertung an einem bestimmten Standort früh stoppen

Meine Parameter sind die Koordinaten auf dieser Karte. Das erste, was ich mache, ist die Interpolation der Höhe an dieser Stelle von einer Karte in einer Komponente. Dann folgen einige komplexere Berechnungen in anderen Komponenten.

Wenn OpenMDAO einen Speicherort außerhalb der Grenzen der Karte auswählt, erhalte ich eine Höhe von NaN. Ich weiß bereits, dass der Rest keine weiteren Informationen zu diesem Optimierungsschritt enthält. Wie kann ich OpenMDAO zum nächsten Auswertungspunkt bewegen, bevor die komplexeren Berechnungen durchgeführt werden?

In meinem Fall werden die anderen Berechnungen (in einem externen Programm) sogar fehlschlagen, wenn sie auf ein NaN stoßen, also muss ich den Wert überprüfen, bevor sie in jeder der Komponenten aufgerufen werden und NaN-Ausgaben für jede von ihnen zuweisen. Gibt es einen besseren Weg, das zu tun?

+0

die Frage ist ein bisschen allgemein. Wenn Sie ein vereinfachtes Beispielskript erstellen könnten, wäre es hilfreich. –

+0

@JustinGray Sie haben die Frage richtig verstanden. Ich werde versuchen, ein minimales Beispiel zu finden, das nicht auf externe Datendateien angewiesen ist. – Tim

Antwort

0

Je nach Ihrer Konfiguration können Sie innerhalb der Komponente einen Fehler auslösen, der den Lauf abbricht. Sie ändern nur die Eingabe und starten den nächsten Lauf. Ändern Sie alternativ Ihren Wrapper für den nachfolgenden Code, sodass er bei Ausführung einer NAN-Funktion den Vorgang auslässt und nur eine Müllnummer meldet, die leicht zu identifizieren ist.

+0

Die Problemumgehung implementiere ich gerade. Es ist nicht sinnvoll, den Fehler zu werfen und "manuell" neu zu starten, da die Speicherorte vom Treiber stammen, der die Grenzen vorübergehend überschreitet (ich hatte das Problem mit SLSQP). Ich habe mich nur gefragt, ob es eine Möglichkeit gibt, den Optimierungsstopp vorzeitig zu beenden. Vielen Dank. – Tim

Verwandte Themen