2016-06-01 1 views
1

私は仮想ネットワークの埋め込みで作業しています。ネットワークを埋め込むためにglpkでモデルを作成しています。 私はこの次の目的関数を持っている:GLPK - 変数の値を最小にする

minimize cost: sum{(i,j) in VEdges} sum{u in SNodes, v in SNodes} weight[u,v] * fw[i,j,u,v] * secSupEdge[u,v] + sum{u in SNodes, v in SNodes} r[u,v] * secSupEdge[u,v]; 

その後、私は(とりわけ)以下の2つの制限

s.t. relConst2{(i,j) in VEdges, u in AllNodes, v in AllNodes}: bwDem[i,j] * phiw[i,j,u,v] >= fw[i,j,u,v]; 

s.t. linkSecConst0{(i,j) in VEdges, u in SNodes, v in SNodes}: phiw[i,j,u,v] * secDemEdge[i,j] <= secSupEdge[u,v]; 

を持っている "phiwは" バイナリ変数

「FWです"と" r "は、> 0の値をとる変数です。

他のすべて( "重量"、 "bwDem"、 "secDemEdges"、 "secSupEdge")は、単に

をparamsはしている私はFW phiw を関連付けるしたいです。 FW == 0、 phiw は0

を値をとるべきとき phiw FW> 0、は値1をとるべきである場合には通常、それは私が欲しいものを行いますが、時には phiwがかかりますfwの値が0の場合の値1は、私が望むものではありません。制限が満たされているので、これは起こります:

例1:

S。T. relConst2:4 * 1> = 0

s.t. linkSecConst0:1 * 2 < = 2

の値を最小限に抑える方法はありますか?は可変ですが目的関数に入れませんか?あるいは、目的関数に入れても結果の値を変更しないことは、他のすべての変数の値ではありませんか?

答えて

0

質問はphiwを最小化についてです、しかし、問題の記述は何がやりたいことはリンクphiwfwの値であることを示唆し、具体的には、(そうでないphiw = 1fw > 0、およびphiw = 0を持っている、すなわち、 fw = 0)。

私はあなたのような、直接phiwの値にfwを条件にマップ制約を追加することを示唆している:

s.t. LinkConstraint { (i,j) in VEdges, u in AllNodes, v in AllNodes }: if fw[i,j,u,v] > 0 then 1 else 0 = phiw[i,j,u,v] ;

関連する問題