2016-05-26 15 views
1

Ich versuche, ein lineares Optimierungsproblem in GLPK zu lösen. Ich habe eine Menge von n Scheitelpunkten in einem Graphen, n * n Kanten und ein spezifisches Gewicht für jede Kante. Ich muss es mit ein paar verschiedenen Datensätzen von n Ecken und Gewichten versuchen. Ich habe jedoch viel Mühe mit der GLPK-Syntax, wenn ich versuche, die Modelldaten in mein Programm einzugeben. Ich versuche, etwas zu tun:Datenmodellierung in GLPK - einfache Datensyntax?

param n := [number]; 

param weight := [matrix in plain text...]; 

(Die Gewichtsmatrix nur eine Ecke * Vertex-Matrix ist, wo das Gewicht [i] [j] das Gewicht der Kante von Knoten i j nach Knoten)

Es funktioniert offensichtlich nicht, da GLPK standardmäßig nach einer Beschriftung für jede Zeile und Spalte in der Matrix fragt. Das GLPK-Handbuch listet einen "Plain-Data" -Spezifikator auf, aber kein Anwendungsbeispiel. Ist es möglich, die Matrix einfach aufzulisten und jeden Wert dem richtigen Gewicht [i] [j] -Feld zuzuordnen? Wenn ja, wie lautet die Syntax dafür?

Antwort

0

Sie können ein Tabelle Datenformat verwenden, um ein Datum für einen zweidimensionalen Parameter, zum Beispiel zur Verfügung zu stellen:

param n; 
param weight{1..n, 1..n}; 

data; 

param n := 2; 

param weight: 
    1 2 := 
    1 11 12 
    2 21 22; 

display weight; 
+0

Ja, das funktioniert für eine kleinere Anzahl von Knoten in Ordnung, aber die Datensätze Ich habe Die Zeilen- und Spaltennummern wurden nicht angegeben, und es wäre wirklich schwierig, sie für 400 Knoten jedes Mal hinzuzufügen. (In Ihrem Beispiel, was ich habe, ist nur die [11 12 21 22] zum Beispiel) – Muibadorei

+0

Sie können den AMPL read-Befehl verwenden, um Daten im benutzerdefinierten Format einzugeben, aber ich bin mir nicht sicher, ob es mit glpk/mathprog funktioniert. – vitaut

+0

Großartige Idee. Ich ging voran und probierte das aus, aber leider sieht es so aus, als ob GLPK diese Funktion nicht von AMPL enthält ... – Muibadorei