0

CPLEXを使用した非有向グラフのsteinerツリーの1つの変種を扱っています。私の溶液で有向グラフのサイクルを扱うための多次元決定変数

は、グラフは有向グラフとして表され、そして私のdesicion変数(Yuijvと呼ばれる)の一方がそう、パスの方向を制御:

Yuijv = 1エッジ場合(i、j)は、u→v→U→j→V方向の1つの経路で使用されます。
Yuijv = 0 else。ここで

Yuijvが宣言されている方法である(および一部のAUXコード):私は

Yuijv[u,<j,v>,v] = 0; 

//structure 
tuple edge { 
    int i; //node 
    int j; //node 
} 

tuple path { 
    int u; 
    edge e; 
    int v; 
} 

setof(path) paths= {<i,<k,l>,j> | i,j in nodes : i!=j, <k,l> in edges: k!=l}; 

//decicion variable 
dvar boolean Yuijv[paths]; 

しかし、私は値にアクセスするには、このsintaxでそれを使用するときこのエラーが表示される:

Can't use type int for <u:int,a:<i:int,j:int>,v:int>. 

このサイトでは、この問題のための助けを見つけることができません。私は本当にいくつか、またはおそらくこの変数の実装を再定義するための提案をお勧めします。

アドバイスありがとうございます。

答えて

0

boolean型の決定変数にint値0を代入しようとしているようです。値を修正するための制約を追加してみてください。

+0

sum(in aristas)yuijv [u、、v]> = xi [u] + xi [v] -1; –

+0

最後のコメントを忘れて、私はそれを消去することはできません。 私が上で示した例は実際に発明されたので、ここではすべてを説明せずに読むことができます。エラーが発生している私の本当の制限、の 一つ、それは次のようになります。 _sum(エッジで)Yuijv [U、、V]> = XI [U] + XI [V] -1; _xi_は別です_ 可変的な欲望。 CPLEX最適化stuio(ide)は、_Yuijv [u、、v] ._ の最初の_u_をハイライト表示し、次のように示唆しています: "、v:int>。 " 答えをありがとう! –

関連する問題