Optimization Toolbox
Lineare, quadratische, konische, ganzzahlige und nicht lineare Optimierungsprobleme lösen
Optimization Toolbox™ bietet Funktionen zum Bestimmen von Parametern, die eine Zielfunktion minimieren bzw. maximieren und gleichzeitig die Nebenbedingungen erfüllen. Die Toolbox enthält Solver für lineare Programmierung (LP), gemischt-ganzzahlige lineare Programmierung (MILP), quadratische Programmierung (QP), Programmierung eines Kegels der zweiten Ordnung (SOCP), nichtlineare Programmierung (NLP), lineare kleinste Quadrate mit Nebenbedingungen, nicht lineare kleinste Quadrate und nicht lineare Gleichungen.
Sie können Ihr Optimierungsproblem mit Funktionen und Matrizen definieren oder Variablenausdrücke angeben, die die zugrundeliegende Mathematik wiedergeben. Mithilfe der automatischen Differenziation von Ziel- und Nebenbedingungsfunktionen erhalten Sie schnellere und genauere Lösungen.
Mit den Toolbox-Solvern können Sie optimale Lösungen für kontinuierliche und diskrete Probleme finden, Trade-Off-Analysen ausführen und Optimierungsmethoden in Algorithmen und Anwendungen integrieren. Mit der Toolbox können Sie Entwurfsoptimierungsaufgaben ausführen, wie z. B. Parameterschätzung, Komponentenauswahl und Parameteroptimierung. Sie können damit auch optimale Lösungen in Anwendungen wie Portfolio-Optimierung, Energieverwaltung und -handel sowie Produktionsplanung finden.
Jetzt beginnen:
KOSTENLOSE CHEATSHEETS
9 MATLAB Cheat Sheets für Data Science und Machine Learning
Finden Sie den optimalen Befehl für die am häufigsten vorwendeten Aufgaben in Ihrem Workflow.
Cheatsheets hinzuziehenDefinieren von Optimierungsproblemen
Modellieren Sie ein Entwurfs- oder Entscheidungsproblem als Optimierungsproblem. Legen Sie die Entwurfsparameter und Entscheidungen als Optimierungsvariablen fest. Nutzen Sie sie dann zum Definieren einer zu optimierenden Zielfunktion und begrenzen Sie mögliche Variablenwerte mithilfe von Nebenbedingungen.
Modellierung
Überführen Sie eine Problembeschreibung in eine mathematische Form, indem Sie Variablen, eine Zielfunktion und Nebenbedingungen definieren, sodass das Problem mithilfe von Optimierungsverfahren gelöst werden kann.
Problembasierte Optimierung
Schreiben Sie Zielfunktionen und Nebenbedingungen mithilfe von entsprechenden Ausdrücken aus Optimierungsvariablen. Lösen Sie Probleme schneller und robuster durch die automatische Differenziation der nicht linearen Ausdrücke. Wenden Sie einen automatisch ausgewählten Solver an.
Solver-basierte Optimierung
Schreiben Sie nicht lineare Zielfunktionen und Nebenbedingungen mithilfe von Funktionen; nutzen Sie Koeffizientenmatrizen für lineare Zielfunktionen und Nebenbedingungen. Erstellen und lösen Sie das Problem interaktiv mit dem Optimize Live Editor Task und erzeugen Sie dann Code, um ihn freizugeben oder in Ihrer Anwendung einzusetzen.
Auswählen eines Solvers
Nutzen Sie beim Solver-basierten Ansatz den Optimize Live Editor Task, um einen für Ihr Problem geeigneten Solver zu finden. Beim problembasierten Ansatz wird der Solver automatisch ausgewählt.
Setzen von Optionen
Geben Sie Optionen zur Feinjustierung des Optimierungsprozesses an, beispielsweise, um den vom Solver genutzten Optimierungsalgorithmus zu wählen oder um Abbruchbedingungen festzulegen. Setzen Sie Optionen, um den Fortschritt des Optimierungssolvers zu überwachen und grafisch darzustellen.
Überprüfen und Verbessern von Ergebnissen
Überprüfen Sie die Meldung am Ende des Solverdurchlaufs, Optimalitätskriterien und die iterative Darstellung zur Beurteilung der Qualität der Lösung. Steigern Sie die Geschwindigkeit bei nicht linearen Problemen durch automatische Differenziation, Angabe von Gradienten oder durch Gradientenschätzung mittels paralleler Verarbeitung.
Solver
Wenden Sie Quasi-Newton-, Trust-Region- oder Nelder-Mead-Simplex-Algorithmen an, um Probleme ohne Nebenbedingungen zu lösen. Für Probleme mit Nebenbedingungen stehen hingegen Innere-Punkte-, SQP- (sequentiell quadratische Programmierung) oder Trust-Region-Reflective-Algorithmen zur Verfügung.
Anwendungen
Mithilfe der nicht linearen Optimierung können Sie Parameter schätzen und anpassen, optimale Entwürfe finden, optimale Trajektorien berechnen, robuste Portfolios zusammenstellen und weitere Problemstellungen lösen, bei denen eine nicht lineare Beziehung zwischen Variablen besteht.
Solver zur linearen Programmierung
Wenden Sie Duale-Simplex- oder Innere-Punkte-Algorithmen an, um lineare Programme zu lösen.
Solver zur quadratischen Programmierung und der von Kegeln zweiter Ordnung
Wenden Sie Innere-Punkte-, Active-Set- oder Trust-Region-Reflective-Algorithmen an, um quadratische Programme zu lösen. Nutzen Sie Innere-Punkte-Methoden zur Lösungen von Programmen mit Kegeln zweiter Ordnung.
Anwendungen
Mithilfe der linearen Programmierung lassen sich Probleme im Bereich Ressourcenzuteilung, Produktionsplanung, Blending und Investmentplanung lösen. Die quadratische Programmierung bzw. die mit Kegeln zweiter Ordnung hingegen findet Anwendung in der Entwurfs- und Portfolio-Optimierung oder in der Steuerung von Wasserkraftwerken.
Solver
Lösen Sie gemischt-ganzzahlige lineare Programmierungsprobleme mit einem Branch-and-Bound-Algorithmus, der eine Vorverarbeitung, Heuristiken zum Generieren zulässiger Punkte sowie Schnittebenen umfasst.
Algorithmen basierend auf der gemischt-ganzzahligen linearen Programmierung
Mit dem Solver für die gemischt-ganzzahlige lineare Programmierung können Sie Algorithmen für spezielle Anwendungsfälle entwickeln.
Anwendungen
Modellieren Sie mit ganzzahligen Variablen, wenn Ein/Aus-Entscheidungen getroffen werden sollen oder logische Nebenbedingungen vorliegen und wenn Variablen nur ganzzahlige Werte annehmen dürfen. Zu den typischen Anwendungsfällen zählen Routing, Scheduling, Planung, Zuordnung und die Investitionsplanung.
Solver
Formulieren Sie Probleme entweder als Zielerreichungs- oder als Minimax-Aufgabe. Nutzen Sie das Zielerreichungsverfahren, wenn es optional gewichtete Zielwerte für jede der Zielfunktionen gibt. Nutzen Sie hingegen das Minimax-Verfahren, um den ungünstigsten Wert einer Reihe von Zielfunktionen zu minimieren.
Anwendungen
Die Mehrziel-Optimierung bietet sich an, wenn zwei oder mehr gegensätzliche Ziele gewisse Kompromisse erfordern. Beispiele sind das Gewicht und die Festigkeit bei der Statikplanung oder das Risiko und die Rendite bei der Portfolio-Optimierung.
Solver
Wenden Sie Levenberg-Marquardt-, Trust-Region-, Active-Set- oder Innere-Punkte-Algorithmen an.
Lineare Kleinste-Quadrate-Anwendungen
Nutzen Sie lineare Kleinste-Quadrate-Solver, um ein lineares Modell an erfasste Daten anzupassen oder um ein lineares Gleichungssystem zu lösen, auch wenn die Parameter obere und untere Schranken besitzen und linearen Nebenbedingungen unterliegen.
Nicht lineare Kleinste-Quadrate-Anwendungen
Nutzen Sie nicht lineare Kleinste-Quadrate-Solver, um ein nicht lineares Modell an erfasste Daten anzupassen oder um ein nicht lineares Gleichungssystem zu lösen, auch wenn die Parameter obere und untere Schranken besitzen.
Unterstützung für MATLAB Compiler
Mit MATLAB Compiler™ und MATLAB Compiler SDK™ können Sie MATLAB®-Optimierungsmodelle als eigenständig ausführbare Dateien, Web-Apps, C/C++ Shared Libraries, Microsoft®.NET Assemblies, Java®-Klassen und Python®-Pakete bereitstellen.
Codegenerierung
Generieren Sie portablen und lesbaren C oder C++ Code zur Lösung von Optimierungsproblemen mit MATLAB Coder™. Kompilieren Sie den generierten Code für jede Hardware, einschließlich eingebetteter Systeme.
Optimize
Live Editor Task
Optimierungsprobleme interaktiv erstellen und lösen
Automatische Differenziation
Lösen Sie Probleme schneller und genauer mit automatisch berechneten Gradienten von Ziel- und Einschränkungsfunktionen
Programmierung mit Kegeln zweiter Ordnung
Lösen konvexer Optimierungsprobleme mit Nebenbedingungen als Kegel zweiter Ordnung, linearen Nebenbedingungen und einer linearen Zielfunktion
Codegenerierung
Generieren von C/C++ Code zur Lösung nicht linearer Gleichungen mit fsolve
(erfordert MATLAB Coder)
Codegenerierung
Generieren von C/C++ Code zur Lösung nicht linearer Kleinste-Quadrate-Probleme mit lsqcurvefit
oder lsqnonlin
(erfordert MATLAB Coder)
In den Versionshinweisen finden Sie Einzelheiten zu jedem dieser Merkmale und den entsprechenden Funktionen.