2017-02-08 3 views
0

Ich bin auf der Suche nach einem MINLP-Optimierer zu Portfolio-Optimierung Problem zu lösen, die x'.S.x minimiert, wobei x ein Vektor ist S ist eine gegebene Matrix. Es gibt ganzzahlige Beschränkungen, die x Elemente von ex abhängen; x [i] = g [i] .K [i] wobei g [i] eine ganze Zahl ist und K [i] ein gegebener Vektor ist. Daher müssen wir g [i] s finden, während wir das Ziel minimieren.ampl vs gams MINLP Portfolio Optimierung Syntax

Ich erwäge die Verwendung AMPL oder gams. Hauptprogramm ist in Python. Ich bin mir nicht sicher, ob das der beste MINLP da draußen ist, aber trotzdem scheint es auf beiden Seiten einige Beispiele zu geben. Was die Matrixmultiplikation für das Minimierungsziel anbelangt, ist mir nicht klar, ob es eine einfache Möglichkeit gibt, dies in AMPL zu schreiben, muss ich es als eine algebraische Erweiterung schreiben? Können Sie ein Beispiel für den x'.S.x-Betrieb in der AMPL-Sprache geben?

In Bezug auf gams, sehe ich das Paket ist frei nur für die begrenzte Verwendung einer Reihe von Variablen. Daher erwäge ich AMPL, aber vielleicht für kleinere Probleme Gams könnte die Lösung sein, wenn ich nicht

Antwort

0

Die AMPL Syntax ist sehr einfach Notation AMPL für Matrix-Vektor-Multiplikationen ausrechnen kann:

sum{i in I, j in I} x[i]*S[i,j]*x[j] 

Beachten Sie, dass viele Portfoliomodelle Sie benötigen keinen vollwertigen MINLP-Löser, können aber mit den quadratischen (und SOCP) Fähigkeiten, die in Systemen wie Cplex und Gurobi vorhanden sind, gelöst werden. Ihre Frage ist etwas schwierig zu analysieren (zumindest für mich), aber ich glaube, dass Ihr Modell in diese Kategorie fällt.