Was wären gute Methoden (und / oder Softwarepakete), um ein Problem zu lösen, das eine quadratische Funktion minimiert? , st 0 ≤ x i ≤ 1 und Es gibt mehr Einschränkungen, von denen einige nicht linear (und nicht differenzierbar) sind, z. B. ∑ i x i 1 x i > a < b ?
Ich denke an . FWIW, Matlab verwendet offenbar eine "Active-Set-Methode, ähnlich der von Gill et al.", Die eine etwas ungleichmäßige Leistung aufweist.
Antworten:
Wenn Sie nicht glatte Einschränkungen haben, ist es keine Hilfe, dass Sie ein konvexes quadratisches Ziel haben. Sie benötigen einen eingeschränkten nicht glatten Löser.
Auf meiner Webseite
http://www.mat.univie.ac.at/~neum/glopt/software_l.html#nonsm finden Sie
geeignete Software.
quelle
Sie sagen im Kommentar, dass Sie es nicht zum Laufen bringen können, da es nicht quadratisch genug ist. Ich sehe keinen Grund dafür. Das Problem kann leicht als quadratisches Programm mit gemischten ganzen Zahlen codiert werden.
Wenn ich Ihre Problemdefinition verstehe, möchten Sie die Summe der Variablen einschränken, die größer als ein Schwellenwert sind. Führen Sie eine binäre Variable ein, die angibt, ob x größer als a ist, und führen Sie eine weitere Variable z ein, die gleich x sein sollte, wenn dies gilt, und ansonsten null, und verwenden Sie die Summe der neuen Variablen.
Mit der MATLAB-Toolbox YALMIP zur Schnittstelle von CPLEX (oder Gurobi oder einem anderen MIQP-Solver) wird das Problem in Bruchteilen von Sekunden trivial gelöst. Hier ein zufälliges Beispiel, das sowohl mit einem manuell abgeleiteten Modell als auch mit einem Modell implementiert wurde, das die allgemeinen Modellierungsfunktionen in YALMIP nutzt
quelle