2016-05-18 10 views
0

Ich benutze den Scip Solver von der Java API, über die Jni-Schnittstelle.Übergeben Sie einen Dateiverweis an die Jni-Schnittstelle von Scip

Ich möchte mein LP-Modell in eine Datei ausgeben.

Dazu gibt es folgende c-Methode in der nativen API

extern SCIP_RETCODE SCIPprintOrigProblem(
SCIP* scip, /**< SCIP data structure */ 
FILE* file, /**< output file (or NULL for standard output) */ 
const char* extension, /**< file format (or NULL for default CIP format)*/ 
SCIP_Bool genericnames /**< using generic variable and constraint names? */ 
); 

Diese Methode der folgenden Java-Methode in der Öffentlichkeit abstrakte Schnittstelle de.zib.jscip.nativ.NativeScip entspricht

public abstract void printOrigProblem(long arg0, long arg1, java.lang.String arg2, boolean arg3) throws de.zib.jscip.nativ.NativeScipException; 

Methode funktioniert gut, wenn ich für das zweite Argument einen Nullwert angeben: die lineare Formulierung wird wie erwartet in der Standardausgabe zurückgegeben.

Jetzt möchte ich die Datei angeben, in der die lineare Formulierung ausgegeben wird.

Also ich möchte eine Referenz im zweiten Parameter der Methode übergeben.

Die native Methode erwartet FILE *, während die Java-Methode eine Long erwartet.

Frage ist was muss ich als Wert für diesen zweiten Parameter übergeben?

Antwort

1

Ich denke, Sie sollten die Funktion writeOrigProblem verwenden, die SCIPwriteOrigProblem entspricht.

+0

Mit writeOrigProblem funktioniert in der Tat um das Problem. So ist mein Problem gelöst. Dennoch frage ich mich, ob es möglich ist, eine FILE über die jni-Schnittstelle zu übergeben. –

+0

Es sollte möglich sein, aber Sie müssen möglicherweise die Schnittstelle erweitern, da es keine SCIP-Funktion gibt, die eine Zeichenfolge empfängt und eine FILE * zurückgibt. – mueldgog