Bei einem System, das eine Menge von Eingangsgrößen in Ausgangsgrößen umwandelt, beschrieben durch eine mathematische Funktion f , bezeichnet Optimierung die Generierung und Auswahl der besten Lösung aus einer Menge verfügbarer Alternativen [ 1 ] . Dies geschieht durch systematische Auswahl von Eingangsgrößen innerhalb eines zulässigen Bereichs, Berechnung des Funktionswertes und Speicherung des dabei gefundenen besten Wertes. Viele reale und theoretische Probleme lassen sich in diesem allgemeinen Rahmen modellieren. Beispielsweise können die Eingangsgrößen Designparameter eines Motors sein, während die Ausgangsgröße der Stromverbrauch ist. Andere Eingangsgrößen können unternehmerische Entscheidungen sein, deren Ausgangsgröße der erzielte Gewinn ist, oder die Konfiguration eines physikalischen Systems, dessen Ausgangsgröße dessen Energie ist.
Ein Optimierungsproblem kann folgendermaßen dargestellt werden:
- Gegeben: eine Funktion f : A R von einer Menge A in die reellen Zahlen
- Suche nach: einem Element x 0 in A, sodass f ( x 0 ) ≤ f ( x ) für alle x in A ("Minimierung").
Typischerweise ist A eine Teilmenge des euklidischen Raums ℝⁿ , die oft durch eine Menge von Nebenbedingungen , Gleichungen oder Ungleichungen definiert wird, die die Elemente von A erfüllen müssen. Die Maximierung lässt sich auf die Minimierung reduzieren, indem man die Funktion mit minus eins multipliziert.
Die Verwendung von Optimierungssoftware erfordert, dass die Funktion f in einer geeigneten Programmiersprache definiert und mit der Optimierungssoftware verknüpft wird. Die Optimierungssoftware liefert die Eingabewerte in A , das Softwaremodul, das f implementiert , liefert den berechneten Wert f ( x ). Dadurch wird eine klare Trennung der Zuständigkeiten erreicht: Verschiedene Optimierungssoftwaremodule können problemlos an derselben Funktion f getestet werden, oder eine gegebene Optimierungssoftware kann für verschiedene Funktionen f verwendet werden .
Die folgenden Tabellen bieten einen Vergleich bemerkenswerter Optimierungssoftwarebibliotheken, entweder spezialisierter oder allgemeiner Bibliotheken mit einer signifikanten Optimierungsabdeckung.
| Name | Programmiersprache | Neueste stabile Version | Die Nutzung für akademische/nichtkommerzielle Zwecke ist kostenlos. | Kann in proprietären Apps verwendet werden. | Lizenz | Anmerkungen |
|---|---|---|---|---|---|---|
| ALGLIB | C++, C#, Python, FreePascal | 3.19.0 / Juni 2022 | Ja | Ja | Dual (Kommerziell, GPL) | Universelle Bibliothek, beinhaltet ein Optimierungspaket: lineare, quadratische, nichtlineare Programmierung. |
| AMPL | C, C++, C#, Python, Java, Matlab, R | Oktober 2018 | Ja | Ja | Dual (kommerziell, akademisch) | Eine beliebte algebraische Modellierungssprache für lineare, gemischt-ganzzahlige und nichtlineare Optimierung. Die Versionen für Studierende und AMPL für Kurse sind kostenlos erhältlich. |
| APMonitor | Fortran, C++, Python, Matlab, Julia | 0.6.2 / März 2016 | Ja | Ja | Dual (kommerziell, akademisch) | Eine Differential- und algebraische Modellierungssprache für gemischt-ganzzahlige und nichtlineare Optimierung. Frei verfügbare Schnittstellen für Matlab, Python und Julia. |
| Artelys Knitro | C, C++, C#, Python, Java, Julia, Matlab, R | 11.1 / November 2018 | NEIN | Ja | Kommerziell, Akademisch, Test | Universelle Bibliothek, spezialisiert auf nichtlineare Optimierung. Behandelt gemischt-ganzzahlige Optimierungsprobleme (MINLP) und mathematische Programme mit Gleichgewichtsbedingungen ( MPEC ). Spezialisierte Algorithmen für nichtlineare Ausgleichsprobleme. |
| CPLEX | C, C++, Java, C#, Python, R | 20.1 / Dez. 2020 | Ja | Ja | Kommerziell, akademisch, Test | IBM CPLEX Optimization Studio ist eine Suite von Optimierungs-Engines (CPLEX für mathematische Programmierung und CP Optimizer für Constraint-Programmierung), einer Modellierungssprache (OPL) und einer integrierten Entwicklungsumgebung. |
| FICO Xpress | Mosel, BCL, C, C++, Java, R, Python, Matlab, .Net, VB6 | 8.13 / Nov 2021 | Ja | Ja | Kommerziell, akademisch, gemeinschaftlich, Test | Suite von Optimierungstechnologien und -lösungen. Beinhaltet: Solver-Technologien (u. a. LP (Simplex & Barrier), MIP, MIQP, MIQCQP, MISOCP, MINLP QP, QCQP, SOCP, NLP (SLP & Interior Point)); eine algebraische Modellierungs- und prozedurale Programmiersprache; eine integrierte Entwicklungsumgebung; Unterstützung für verschiedene Ausführungsdienste; Unterstützung für die Paketierung von Optimierungsmodellen und -diensten als Softwarelösungen. |
| GEKKO | Python | 0.2.8 / August 2020 | Ja | Ja | Dual (kommerziell, akademisch) | GEKKO ist ein Python-Paket für maschinelles Lernen und die Optimierung gemischt-ganzzahliger und differentialalgebraischer Gleichungen. Es ist mit leistungsstarken Lösern für lineare, quadratische, nichtlineare und gemischt-ganzzahlige Programmierung (LP, QP, NLP, MILP, MINLP) gekoppelt. Zu den Betriebsmodi gehören Parameterregression, Datenabgleich, Echtzeitoptimierung, dynamische Simulation und nichtlineare prädiktive Regelung. |
| GNU Linear Programming Kit | C | 4.52 / Juli 2013 | Ja | NEIN | GPL | Kostenlose Bibliothek für lineare Programmierung (LP) und gemischt-ganzzahlige Programmierung (MIP). |
| GNU Scientific Library | C | 1.16 / Juli 2013 | Ja | NEIN | GPL | Kostenlose Bibliothek, bereitgestellt vom GNU-Projekt. |
| IMSL Numerische Bibliotheken | C, Java, C#, Fortran, Python | viele Komponenten | NEIN | Ja | Eigentumsrechtlich geschützt | |
| LIONsolver | C++, Java | 2.0.198 / Oktober 2011 | Ja | Ja | Eigentumsrechtlich geschützt | Unterstützung für interaktive und Lernoptimierung, gemäß den RSO-Prinzipien. [ 2 ] |
| Math Kernel Library (MKL) | C++, Fortran | 11.1 / Oktober 2013 | NEIN | Ja | Eigentumsrechtlich geschützt | Numerische Bibliothek von Intel. MKL ist auf lineare Algebra spezialisiert, enthält aber auch einige Funktionen zur Optimierung. |
| Wolfram Mathematica | C++, Wolfram Language | 15.0.0 (16. Juni 2026 ) [±] [ 3 ] | NEIN | Ja | Eigentumsrechtlich geschützt | Nebenbedingungen für nichtlineare Optimierung, Innere-Punkt-Verfahren, konvexe Optimierung und ganzzahlige Programmierung – sowie originelle symbolische Methoden, integriert mit allgemeinen Rechenkapazitäten. |
| MIDACO | C++, C#, Python, Matlab, Octave, Fortran, R, Java, Excel, VBA, Julia | 6.0 / März 2018 | Ja | Ja | Dual (kommerziell, akademisch) | Leichtgewichtiges Softwaretool für die Einzel- und Mehrzieloptimierung. Unterstützt MINLP und Parallelisierung. |
| NAG Numerische Bibliotheken | C, Fortran | 26. Mark / Oktober 2017 | NEIN | Ja | Eigentumsrechtlich geschützt | |
| NMath | C# | 5.3 / Mai 2013 | NEIN | Ja | Eigentumsrechtlich geschützt | C#-Zahlenbibliothek, die auf MKL aufbaut. |
| Octeract-Engine | C++/Python | 0.11.29 / November 2019 | NEIN | Ja | Kommerziell | Octeract Engine ist ein deterministischer globaler Optimierungslöser für Supercomputer, der allgemeine MINLP-Probleme löst. Er nutzt MPI für verteilte Berechnungen. |
| OptaPlanner | Java | 8.0.0.Final / November 2020 | Ja | Ja | ASL (Open Source) | Leichtgewichtiger Optimierungssolver in Java mit optionalen Integrationsmodulen für JPA-Hibernate, Quarkus, Spring, Jackson, JAXB usw. Funktioniert auch mit Kotlin und Scala. |
| SciPy | Python | 0.13.1 / November 2013 | Ja | Ja | BSD | Universelle Bibliothek für numerische und wissenschaftliche Berechnungen für Python. |
Siehe auch
Referenzen
- ^ " Die Natur der mathematischen Programmierung ", Glossar der mathematischen Programmierung , INFORMS Computing Society.
- ^ Battiti, Roberto; Mauro Brunato; Franco Mascia (2008). Reaktive Suche und intelligente Optimierung . Springer Verlag . ISBN 978-0-387-09623-0Die
- ^ „Veröffentlichung von Version 15 von Wolfram Language & Mathematica: Integrierte (nützliche) KI und viele neue Kernfunktionen“ . Abgerufen am 16.06.2026 .
