Frage an Programmierer bzw. Kenner von CPlex oder Java

Fachdiskussionen rund um Themen und Veranstaltungen ohne Zuordnung zu einem bestimmten Semester (Allgemeine organisatorische und verwaltungstechnische Themen, die NICHT in unmittelbarem und direktem Zusammenhang mit einer Veranstaltung zu sehen sind, bitte in "Studienverwaltung allgemein" einsortieren!)

Moderator: (M) Mod.-Team Allgemein

Antworten
Moit87
TalkING. Freak
TalkING. Freak
Beiträge: 94
Registriert: Fr, 20. Feb. 09, 12:54

Frage an Programmierer bzw. Kenner von CPlex oder Java

Beitrag von Moit87 » Fr, 26. Feb. 16, 14:34

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...

Benutzeravatar
Dennis Worry
Moderator
Moderator
Beiträge: 765
Registriert: So, 14. Okt. 07, 15:42

Beitrag von Dennis Worry » Fr, 26. Feb. 16, 18:39

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.
Zur Vereinfachung ist das Skalarprodukt des zu untersuchenden Vektorraumes als Flächenintegral zweier unbekannter Funktionen definiert.
Hellgate Harburg (tm)
http://rs85.rapidshare.com/files/917478 ... LA1_Dl.pdf

Antworten