Ich bin wirklich verwirrt über die Verwendung von Solver bei der Computeroptimierung. Ich habe mich einen Monat lang umgesehen, um zu sehen, ob ich ein gutes Gefühl dafür bekommen kann, was dieser Begriff bedeutet, aber ich habe immer noch kein gutes Verständnis dafür.
Es scheint, dass ich, wenn ich ein Optimierungsproblem beim maschinellen Lernen oder anderswo lösen möchte, das genaue Berechnungsverfahren als Algorithmus anstatt als Löser bezeichnen würde. Wenn ich beispielsweise ein quadratisches Programm hätte, würde ich die Quadprog-Funktion von MATLAB verwenden, um den QP zu lösen.
Ich persönlich würde die Quadprog-Funktion nicht als QP-Solver bezeichnen, da es sich nur um eine MATLAB-Funktion oder ein Skript handelt. Ich würde den genauen Algorithmus hinter Quadprog nicht als QP-Löser bezeichnen. Es ist mir egal, ob es sich um Gradientenabstieg, Innenpunktmethode, Newton Raphson handelt. Für mich sind das alles Algorithmen. Schließlich würde ich MATLAB nicht als QP-Löser bezeichnen, da dies nicht der einzige Zweck von MATLAB ist. Es scheint also, dass das Wort "Löser" in meinem alltäglichen Wortschatz fehlt, obwohl ich routinemäßig mit Optimierung arbeiten muss. Das verwirrt mich ziemlich, es fühlt sich einfach so an, als wäre ich mit dem Jargon nicht auf dem neuesten Stand.
Nach meiner Überlegung sind Algorithmen und MATLAB also keine Löser. Angenommen, ich habe einige Software wie Gurobi oder YALMIP heruntergeladen, um Optimierungsprobleme zu lösen. Werden diese Software als Löser bezeichnet? Ich habe oft gehört, dass Leute darauf verweisen, welchen "Löser" Sie verwenden, und zwar in demselben Ton wie welche "Software" Sie verwenden. Was unterscheidet Optimierungssoftware und -löser?
Ich weiß, das klingt nach einer wirklich rudimentären Frage, aber ich habe nur in MATLAB optimiert.
quelle
Antworten:
Ich schlage vor, ein Löser ist:
Die Problemklassen sind Teil davon. Es ist ein X-Löser.
Damit
Ich denke, diese Verwendung entspricht (zum Beispiel) der JuMP-Dokumentation
Hier ist eine Liste von Dingen, die JuMP als Löser bezeichnet . Keiner von ihnen ist ein Algorithmus, alle sind spezifische Programme
quelle
Ein Löser ist eine Routine zum Finden genauer numerischer Antworten für bestimmte Systeme. Zum Beispiel, wenn Sie Newton-Raphson verwenden , um Wurzeln zu finden. Wenn ein System überbestimmt ist, verwendet man im Allgemeinen Näherungslösungen, zum Beispiel Regression. Man würde Regression im Allgemeinen nicht als Löser bezeichnen, obwohl vorhersehbar Sprache missbraucht werden kann und viele Routinen, die ungefähr sind, lose als Löser bezeichnet werden . Zum Beispiel enthält das CUTEr- Optimierungssoftwarepaket Algorithmen, von denen mindestens einige für überbestimmte Systeme und einige Löser sind, so dass es leicht zu sagen ist, dass ich einen "Löser" herunterlade. Sowohl Löser als auch Regressionsmethoden sind Beispiele für Optimierungsmethoden.
quelle
lstsq
Normalerweise höre ich "Solver", der zur Beschreibung von Software verwendet wird, was bedeutet, dass er für eine bestimmte Implementierung eines Algorithmus gilt. Dies scheint beispielsweise für die meisten mit SciComp.SE gekennzeichneten Fragen zu gelten .
Im Allgemeinen scheint der Begriff mathematischen Problemen mit einer "genau definierten Lösung" vorbehalten zu sein. Eine einzigartige Lösung würde als "gut definiert" ausreichend gelten, wie von Sycorax in den Kommentaren angegeben. (Die Gurobi- Löser scheinen für Probleme in dieser Klasse zu sein; für was es wert ist, sieht Gurobi für mich wie eine Suite oder Bibliothek von Lösern aus).
Aber ich denke nicht, dass einzigartig notwendig ist . Beispielsweise können sowohl lokale als auch globale Optimierungsprobleme genau definierte, aber nicht eindeutige Lösungen haben (z. B. hat die Funktion ein globales Minimum für ).f[x]=sin[πx]2 f[k]=0 k∈Z
Ich bin mit dieser Antwort nicht einverstanden , bei der es anscheinend eher um "Gleichungssystemlöser" als um "Optimierungslöser" geht. Beispielsweise ist in linearen kleinsten Quadraten das lineare Algebra- Problem überbestimmt, aber das Optimierungsproblem ist konvex mit einer eindeutigen Lösung (in nicht entarteten Fällen). Beachten Sie auch, dass die in dieser Antwort verlinkte Wikipedia-Seite "Löser " unter ihren Beispielen "Probleme mit linearer und nichtlinearer Optimierung, Probleme mit kürzesten Pfaden, Probleme mit minimalen Spannbäumen" auflistet.
Als Antwort auf den Kommentar werde ich klarstellen, was ich im Fall "Regression" meine.
Bei gegebener Funktion ist eine Lösung des durch angegebenen Gleichungssystems ein Vektor so dass alle Komponenten von Null sind. In Abhängigkeit von der Funktion kann es keine Lösung sein, eine einzelne einzigartige Lösung, oder viele Lösungen ( in der Regel unendlich viele), abhängig von der Dimension des Nullraumes von . In dem Fall, in dem linear ist, dh für einige , dann nein Eine Lösung kann existieren, es sei denn,F:Rn→Rm
Andererseits für eine gegebene Zielfunktion und mögliche Menge , die von abhängt , eine Lösung für die Optimierung Problem angegeben durch ist ein Vektor so dass für alle .EF:Rn→R ΩF⊂Rn F
Bei der Optimierung der "kleinsten Quadrate" ist die Funktion eine Summe von Quadraten. Die zwei häufigsten Probleme der kleinsten Quadrate sind 1) wobei einem überbestimmten Gleichungssystem entspricht, und 2) wobei entspricht ein unterbestimmtes Gleichungssystem.EF
Gängige lineare Algebra-Plattformen wie Matlab können diese drei unterschiedlichen mathematischen Probleme "unter der Haube" in Convenience-Funktionen wie linsolve () kombinieren . Low-Level-Bibliotheken ("Solver") wie LAPACK werden dies jedoch nicht tun .
Zwei abschließende Klarstellungspunkte:
Ein "Löser" entspricht normalerweise einem genau definierten, aber abstrahierten mathematischen Problem. Zum Beispiel sind "statistische Inferenz" oder "erfolgreiche Vorhersage" keine solchen Probleme. In der Sprache der Computational Science verifizieren Sie einen Löser und validieren ein Modell.
quelle
Ich denke, dass das Wort Solver von der ähnlichen Funktionalität zum Lösen einer möglichen Lösung stammt, wie es im Solver-Add-On von Excel die Option "value of" gibt, die versucht, so zu finden , dass und einige mehr Gleichheit und Ungleichheit Einschränkungen. In der Mathematik macht die Funktion lösen dasselbe.X f(X)=Y
Englisch (besonders dank der Medien der USA) neigt dazu, sich durch Fehler zu entwickeln, die wie "Cracker" ~ "Hacker" kopiert werden. Solver könnte ähnlich sein. Es ist schön abstrakt genug, um die Namen der tatsächlichen Optimierungsalgorithmen zu verbergen. Oft sind die tatsächlichen Implementierungen nicht nur ein einziger Algorithmus.
quelle