1

Ich arbeite an einem Projekt, wo ich Funktionen durch mehrere Variablen wie func(input_parameters, variable_parameters) -> min(variable_parameters) minimieren muss.Wie schreibt man Tests für mathematische Optimierungsverfahren?

ich Optimierungsfunktionen von SciPy, so Minimierungsprozess ist ein graues Feld: ich den Code auf GitHub sehe und über die verwendeten Algorithmen lesen, aber ich würde gerne glauben, dass es okay ist, und dem Testen von meinem eigenen Projekt zielt . Allerdings sollten bestimmte Bibliotheken in dieser Frage keine Rolle spielen.

Im Moment benutze ich einige Ansätze:

  • einfache Beispiele Erstellen und Steigungen global/lokale Minima von Hand und schaffen Test, die Optimierung durchführt und vergleicht seine Lösung mit dem rechten
  • Wenn Verfahren benötigt finden , zu vergleichen, analytisch mit ihrer numerischen Approximation berechnet Gradienten in Tests
  • Für iterative Algorithmen auf denjenigen von SciPy Überprüfen, dass Sequenz von Funktionswerten vorgesehen eingebaut ist in nichtwachsende monoton Tests

Gibt es ein Buch oder einen Artikel über das Testen mathematischer Optimierungsverfahren?

P.S. Ich spreche nicht über Test functions for optimization , ich frage über Ansätze verwendet, um Optimierungsverfahren zu testen, um Fehler schneller zu finden.

+0

Eine sehr gute Frage. Ich kämpfe seit Jahren damit; Was Sie beschreiben, ist ziemlich genau das, was ich in der Vergangenheit getan habe, und ich würde gerne andere Vorschläge hören. – TimChippingtonDerrick

Antwort

0

Ich finde die Bibliothek wirklich nützlich zum Testen von Optimierungsalgorithmen in der Entwicklung.

Sie können es einrichten, um zufällige Testfälle (Funktionen, lineare Programme, usw.) nach bestimmten Spezifikationen zu generieren. Die Idee ist, dass Sie diese an Ihren Algorithmus übergeben und nach bekannten Invarianten suchen. Zum Beispiel könnten Sie haben es zufällige Probleme oder Teilprobleme in Ihrem Algorithmus werfen und prüfen, ob (zum Beispiel):

  • Gradient Abstiegs produzieren eine Reihe von nichtwachsende Ziele
  • Lokale Suche eine Lösung ohne bessere Nachbarn findet
  • Heuristiken pflegen Machbarkeit

ein nützliches PyCon here reden Es gibt die Idee des Eigentums basierten Tests zu erklären. Es konzentriert sich mehr auf das Testen von APIs als auf Algorithmen, aber ich denke, dass die Ideen übertragen werden. Ich habe festgestellt, dass dieser Ansatz ziemlich gut darin ist, Fälle von unerwartetem Verhalten zu finden, während ich einen neuen Algorithmus schreibe.

Verwandte Themen