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
ALGLIBC++, C#, Python, FreePascal 3.19.0 / Juni 2022 Ja Ja Dual (Kommerziell, GPL) Universelle Bibliothek, beinhaltet ein Optimierungspaket: lineare, quadratische, nichtlineare Programmierung.
AMPLC, 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.
APMonitorFortran, 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 KnitroC, 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.
CPLEXC, 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 XpressMosel, 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.
GEKKOPython 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 KitC 4.52 / Juli 2013 Ja NEIN GPL Kostenlose Bibliothek für lineare Programmierung (LP) und gemischt-ganzzahlige Programmierung (MIP).
GNU Scientific LibraryC 1.16 / Juli 2013 Ja NEIN GPL Kostenlose Bibliothek, bereitgestellt vom GNU-Projekt.
IMSL Numerische BibliothekenC, Java, C#, Fortran, Python viele Komponenten NEIN Ja Eigentumsrechtlich geschützt
LIONsolverC++, 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 MathematicaC++, Wolfram Language 15.0.0 (16. Juni 2026 ) [±] [ 3 ] ( 16.06.2026 )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.
MIDACOC++, 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 BibliothekenC, Fortran 26. Mark / Oktober 2017 NEIN Ja Eigentumsrechtlich geschützt
NMathC# 5.3 / Mai 2013 NEIN Ja Eigentumsrechtlich geschützt C#-Zahlenbibliothek, die auf MKL aufbaut.
Octeract-EngineC++/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.
SciPyPython 0.13.1 / November 2013 Ja Ja BSD Universelle Bibliothek für numerische und wissenschaftliche Berechnungen für Python.

Siehe auch

Referenzen

  1. ^ " Die Natur der mathematischen Programmierung ", Glossar der mathematischen Programmierung , INFORMS Computing Society.
  2. ^ Battiti, Roberto; Mauro Brunato; Franco Mascia (2008). Reaktive Suche und intelligente Optimierung . Springer Verlag . ISBN 978-0-387-09623-0Die
  3. ^ „Veröffentlichung von Version 15 von Wolfram Language & Mathematica: Integrierte (nützliche) KI und viele neue Kernfunktionen“ . Abgerufen am 16.06.2026 .