Nichtlineare Programmierbibliothek in C ++

8

Ich suche nach Empfehlungen für C ++ - Bibliotheken für nicht-lineare Programmierung ( nicht nur für ganze Zahlen! ).

Bevorzugt sind aktiv gepflegte F / OSS-Lösungen, aber aktiv gehaltene kommerzielle Lösungen, die kostenlose Testversionen anbieten, sind akzeptabel.

Vielen Dank im Voraus!

Bearbeiten: Wie gewünscht, hier sind weitere Details:

Die Anwendung, an der ich arbeite, ist einfach und es geht um die Minimierung von Polynomen Grad 4 und höher (bis zu 11) mit einer kleinen Menge (~ 20) von als Ungleichungen ausgedrückten Bedingungen (wiederum als Polynome, Grad & lt; = 4). Gelegentlich muss ich aber auch eine trigonometrische Funktion einbauen. Auf jeden Fall sind es immer fortlaufende, differenzierbare Funktionen, mit denen ich es zu tun habe. Die Anzahl der Variablen reicht vorerst von 1 bis 12 und wird nicht viel darüber hinaus gehen.

Schließlich brauche ich eine Lösung, die unter Windows funktioniert, aber plattformübergreifende wäre vorzuziehen.

    
em70 20.04.2012, 09:24
quelle

3 Antworten

2

NLopt hat einen soliden C-Code für ein gutes Dutzend Algorithmen, einschließlich COBYLA , Constrained Optimization BY Lineare Approximationen für die derivatfreie Optimierung mit nichtlinearen Ungleichheits- und Gleichheitsbedingungen, von M. J. D. Powell.
Hinzugefügt: hier sind Läufe mehrerer nicht-derivativer Optimierer in NLopt .
Für Rosenbrock- und Powell-Testfunktionen in 5d und 10d sind sie alle sehr empfindlich gegenüber zufälligen Startpunkten; Ymmv.

    
denis 12.05.2012, 17:19
quelle
6

Ich bin mir nicht sicher, aber vielleicht ist ROOT von CERN für Sie geeignet. Das ist wirklich eine riesige Bibliothek ( ROOT :: Math :: Polynomial Klasse zum Beispiel) von CERN selbst.

Ich muss sagen, es ist in der Tat keine "Eine-Minute-Lern-Bibliothek", aber beides: Konsole um mit allen mathematischen Dingen in Echtzeit zu arbeiten (sieht ähnlich wie MathCAD cmd line aus ) und libs und dlls , die Sie statisch mit Ihrem Code verknüpfen können. Und es ist eine plattformübergreifende Bibliothek. Mehr zu sagen, die mächtigste Eigenschaft der ROOT ist, dass Sie fast alle Arten von Charts und Plots erstellen können.

    
gahcep 20.04.2012 10:59
quelle
4

Die robusteste Bibliothek, die ich kenne, ist IPOPT .

Es ist erstaunlich robust, es gab mir Ergebnisse für chemisch-technische Probleme, die ich selbst mit kommerziellen Solvern nicht lösen konnte. Weitere Anwendungsbeispiele finden Sie in den Erfolgsgeschichten .

    
Ali 21.04.2012 07:58
quelle