Seite 1 von 1

Frage an Programmierer bzw. Kenner von CPlex oder Java

Verfasst: Fr, 26. Feb. 16, 14:34
von Moit87
Ich habe eine Frage an die Programmierer unter euch, die bestenfalls Ahnung von Cplex und der Verbindung von Cplex mit Excel haben, wobei man, soweit ich das Überblicken kann, Programmierkenntnisse in Java braucht.

Ich habe mir mit CPlex ein OR-Modell lösen lassen, welches eine Entscheidungsvariable x vorsieht, die von zwei Indizes (r und j) abhängt, also gilt x[r][j].
Ich möchte mir das Ergebnis der Lösung nun gerne in Excel ausgeben lassen und konnte das auch bereits über den Befehl x to SheetWrite(sheet,"'ERGEBNIS'!B2:DE71");, der in die *.dat-Datei des Cplex-Projektes eingegeben wurde, lösen.
Hiermit bekomme ich in Excel quasi die Matrix, die die Lösung aufspannt in den Zellen B2 bis DE71 des Ergebnis-Blattes in Excel, also etwa der Form (ohne die Einträge r1 bis rn und j1 bis jn):

..... j1 j2 ... jn
-------------------
r1 | 1 0 ... 0
r2 | 0 1 ... 0
... | ...
rn | 0 0 ... 0

Was ich aber viel lieber als Ergebnis hätte, wäre, dass mir CPlex in den Spalten A und B die Kombinationen aus den Indizes r und j einträgt, bei denen die Matrix eine 1 zeigt, also wo gilt x[r][j] = 1.
Ich hatte mir das so gedacht, dass in der Spalte A dann die Einträge zu r und in der Spalte B die korrespondierenden Einträge zu j stehen.
Ich bekomme es aber mit dem notwendigen Code einfach nicht hin, dass mir so ausgegeben wird.
Ich hatte schon versucht in der *.dat-Datei einen if-Block nach dem Motto if (x != 0) oder sowas zu bauen, aber CPlex lässt in der *.dat-Datei offensichtlich soetwas gar nicht zu.
Wahrscheinlich muss man am Ende der Modell-Datei in einem execute-Block irgendetwas eintragen, was man in der *.dat-Datei dann an Excel übergeben lassen kann.
Aber da habe ich leider keine Ahnung wie das funktionieren soll.

Hat jemand von euch Ahnung in diesem Bereich?
Wäre echt klassen, wenn mir jemand helfen könnte, da ich dies als Vorbereitung auf meine Masterarbeit mache, wo ich auch CPlex benutzen muss und eine solche Ausgabe die Interpretation der Ergebnisse deutlich vereinfachen würde...

Verfasst: Fr, 26. Feb. 16, 18:39
von Dennis Worry
Kannst du das, sobald die Ergebnisse in excel drin sind nicht mit VBA machen, also durch die MAtrix einen lookup() machen bzw. deine eigene doppelte for Schlecihfe bauen ? Minimaler Aufwand.

Evtl. nicht performant wenn du eine riesige Ergebnismatrix hast.