2017-02-28 5 views
0

CPLEX Python APIを初めて使用しています。 .modと.datファイルを入力としてCPLEX OPL IDEで既に行ったPythonの線形プログラミングの問題を解決したいと思います。私は入力を連続的に変更したいので、Pythonでそれを使いたいと思います。問題の私のmodファイルは以下の通りです。誰かがPython APIのためにこれを使用する方法について私を助けることができますか?CPLEX Python APIを連続入力の線形プログラミングに使用する

int n = ...; 
int m = ...; 

int c = ...; 
int s = ...; 

range v = 1..n; 
range p = 1..m; 

int c_req[v] = ...; 
int s_req[v] = ...; 

int trust[v][v] = ...; 


// decision variables 

dvar boolean assign[p][v]; 

// expressions 

dexpr int used[pi in p] = max(vi in v) assign[pi][v]; // used[i] = 1  iff pi is used 
dexpr int totalUsed = sum(pi in p) used[pi]; 

execute { 
    cplex.tilim = 60; // Time limit 60 seconds 
} 

// model 

minimize totalUsed; 

subject to { 
    forall(pi in p) 
    c_cap: 
    sum(vi in v) c_req[vi] * assign[pi][vi] <= c; 

    forall(pi in p) 
    s_cap: 
    sum(vi in v) s_req[vi] * assign[pi][vi] <= s; 

    forall(vi in v) 
    v_all: 
    sum(pi in p) assign[pi][vi] == 1; 

    forall(pi in p, v1 in v, v2 in v) if (v1 < v2) if (trust[v1][v2] == 0) 
    trust_constraint: 
    assign[p][v1] + assign[p][v2] <= 1; 
} 

答えて

0

あなたは、PythonからOPLを呼び出すために

subprocess.check_call(["C:/CPLEXStudio127/opl/bin/x64_win64/oplrun", "diet.mod", "diet.dat"]) 

を書くことができます。そして、事前にdiet.datを生成します。

https://www.ibm.com/developerworks/community/forums/html/threadTopic?id=0b6cacbe-4dda-4da9-9282-f527c3464f47

で全例次に、OPLからのPythonにモデルを移行する必要はありません。

あなたはまた、あなたのモデルは、Pythonに変換され、その後、私はDOCPLEXをお勧めします。あなたはdiet.datを生成する場合https://developer.ibm.com/docloud/documentation/optimization-modeling/modeling-for-python/

よろしく

+0

、ファイルハンドルがフラッシュされ、閉じていることを確認してください。 – PerlDev

関連する問題