Was sind empfohlene Methoden, um nichtlineare kleinste Quadrate, min , mit Box-Einschränkungen ? Es scheint mir (Dummköpfe eilen ), dass man die Box-Einschränkungen quadratisch machen und wobei ist die "Wannenfunktion" in Form von \ _ _ _ /, . Funktioniert das theoretisch, in der Praxis? (Es scheint viele theoretische Arbeiten zu NLS + zu geben, aber mein Interesse ist praktisch - echte oder realistische Testfälle würden mir helfen, zwischen Methoden zu wählen.)
(Experten, bitte Tags hinzufügen: "kleinste Quadrate"?)
optimization
constraints
denis
quelle
quelle
Antworten:
Das Hinzufügen von quadratischen Strafbegriffen, um Einschränkungen zu beseitigen, ist ein einfacher Ansatz, der nur eine Genauigkeit von Ordnung 1 / Straffaktor ergibt. Daher wird es für eine hohe Genauigkeit nicht empfohlen, es sei denn, Sie lassen die Strafe während der Berechnung auf unendlich gehen. Ein hoher Straffaktor macht den Hessischen jedoch sehr schlecht konditioniert, was die erreichbare Gesamtgenauigkeit einschränkt, ohne die Einschränkungen explizit zu berücksichtigen.
Beachten Sie, dass gebundene Einschränkungen viel einfacher zu handhaben sind als allgemeine Einschränkungen, weshalb sie praktisch nie in Strafen umgewandelt werden.
Der Löser L-BFGS-B (verwendet mit einer ungefähr 5-dimensionalen Historie) löst gebundene eingeschränkte Probleme normalerweise sehr zuverlässig und schnell in beiden niedrigen hohen Dimensionen. Ausnahmen sind Missverständnisse bei Problemen, die weit entfernt von den Lösungen sehr flach werden können, wo es leicht ist, bei einer Abstiegsmethode hängen zu bleiben.
Wir haben viele Experimente mit sehr unterschiedlichen Funktionen in vielen verschiedenen Dimensionen durchgeführt, wobei viele verschiedene Löser zur Verfügung standen, da wir als Teil unserer globalen Optimierungssoftware einen sehr robusten Löser mit gebundenen Einschränkungen benötigten. L-BFGS-B ist eindeutig eine Allzweckmethode, obwohl andere Löser bei einigen Problemen natürlich eine deutlich bessere Leistung erbringen. Daher würde ich L-BFGS-B als erste Wahl empfehlen und alternative Techniken ausprobieren, nur für den Fall, dass L-BFGS-B Ihre spezielle Klasse von Problemen schlecht behandelt.
quelle
Ich würde einfach den universellen NLP-Löser IPOPT verwenden . Es ist der robusteste Löser unter denen, die ich versucht habe.
Sofern Sie keine besonderen Anforderungen haben, gibt es keinen Grund, warum Sie auf einem problemspezifischen Löser bestehen sollten, der nur für NLS mit Box-Einschränkungen funktioniert.
Eine Änderung der Anforderungen (z. B. das Hinzufügen nichtlinearer Einschränkungen) würde bei einem problemspezifischen Löser zu starken Kopfschmerzen führen. Sie werden keine derartigen Probleme haben, wenn Sie das Allzweck-IPOPT verwenden.
UPDATE: Sie können L-BFGS mit IPOPT ausprobieren , siehe unter Quasi-Newton in der Dokumentation.
Das Lösungsverfahren kann schneller werden, wenn die bemerkenswerte Robustheit von IPOPT beeinträchtigt wird. Verwenden Sie meiner Meinung nach die genauen Derivate, wenn sie verfügbar sind. Ich würde nur dann mit Annäherungen (wie L-BFGS) herumspielen, wenn ich nachgewiesene Leistungsprobleme hätte.
quelle
Das CRAN-Paket R minpack.lm bietet eine Levenberg-Marquardt-Implementierung mit Box-Einschränkungen.
Im Allgemeinen ist Levenberg-Marquardt für Probleme mit kleinsten Quadraten viel besser geeignet als L-BFGS-B. Es wird (viel) besser bei herausfordernden Problemen konvergieren. Es wird auch viel schneller sein als das Allzweck-IPOPT, da es auf nichtlineare Probleme der kleinsten Quadrate zugeschnitten ist.
Das R-Paket wählt einen sehr einfachen Projektionsansatz, um die Einschränkungen durchzusetzen (siehe Quellcode ). Abhängig von der von Ihnen verwendeten LM-Implementierung kann die Einbindung einfach sein.
Der Vorschlag in den Kommentaren zur Verwendung einer Transformation (z. B. eine Sinustransformation wie in scipy) ist nun auch eine gute, einfache Alternative, um Ihren nicht eingeschränkten LM-Algorithmus in einen eingeschränkten zu transformieren. Sie müssen die Transformation auch in den Jacobian aufnehmen, wenn der Jacobian analytisch ist.
quelle
(Jahre später) zwei Löser, die Box-Einschränkungen behandeln:
Scipy least_squares verfügt über 3 Methoden mit umfangreichem Dokument:
quelle