Bis jetzt verstehe ich die Minimieren-Funktion mit der Methode Trust-NCG, der "methodenspezifische" Parameter "max_trust_radius" ist der maximale Wert für eine neue Schrittoptimierung. Allerdings erlebe ich ein seltsames Verhalten. Ich arbeite in meinem Doktor Daten, und ich habe einen Code, die Funktion aufruft minimieren (mit Vertrauen NCG-Methode) Gabe von ParameternMinimize-Funktion mit Trust-NCG-Methode schlägt einen Wert größer als Max_trust_radius
{
'initial_trust_radius':0.1,
'max_trust_radius':1,
'eta':0.15,
'gtol':1e-5,
'disp': True
}
I minimieren aufrufe Funktion als:
res = minimize(bbox, x0, method='trust-ncg',jac=bbox_der, hess=bbox_hess,options=opt_par)
wo
bbox
ist eine Funktion zur Auswertung der Zielfunktionx0
ist die anfängliche Vermutungbbox_der
die Gradientenfunktionbbox_hess
Hessian Funktionopt_par
ist das Wörterbuch mit den obigen Parametern ist.
Bbox ruft Simulationscode auf und ruft die Daten ab. Es funktioniert: minimiere hin und her, schlägt neue Werte vor, bbox ruft Simulation auf.
Alles funktioniert gut, bis ich ein seltsames Problem bekam. Der Vektor "x" enthält 8 Werte. Ich merke, dass eine der Iterationen, der letzte Wert größer als 1 ist. Per Max_trust_radius, ich denke, dass es weniger als 1 sein sollte, aber es ist 1.0621612802208713e + 00 Das Problem verursacht Probleme, weil Bbox den Wert nicht empfangen kann größer als 1, da es ein Simulationsprogramm aufruft und es eine Einschränkung gibt, dass es 1 oder mehr als 1 nicht empfangen kann.
Ich habe den scipy-Code gefunden und versucht zu sehen, ob ich einen Fehler oder etwas finden kann falsch, aber ich bin es nicht.
Meine Hauptanliegen sind:
Mein Verständnis ist, dass es ein Fehler in der scipy ist Code zu minimieren, da der neue Wert größer ist als max_trust_radius ist.
Wie kann ich die Werte manipulieren oder steuern, um zu vermeiden, dass Werte größer als 1 werden?
Schlägst du etwas vor, um das Problem zu untersuchen?