GLPK - 最小化变量值

时间:2016-06-01 16:57:19

标签: variables minimize 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];

然后我有以下两个限制(其中包括)

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];

&#34;的 phiw &#34;是一个二进制变量

&#34;的 FW &#34;和&#34; r &#34;是采用任何值&gt; = 0

的变量

所有其他人(&#34; 体重&#34;,&#34; bwDem &#34;,&#34; secDemEdges < / strong>&#34;,&#34; secSupEdge &#34;)只是参数

我想将 phiw fw 联系起来。当 fw &gt; 0, phiw 应该取值1.当 fw == 0时, phiw 应该取值0.

通常情况下我会做我想要的,但有时 phiw fw 的值为0时取值1,这不是我想要的。发生这种情况是因为符合限制:

示例1:

s.t。 relConst2:4 * 1&gt; = 0

s.t。 linkSecConst0:1 * 2&lt; = 2

有没有办法最小化 phiw 变量的值但不将它放在目标函数中?或者将它放在目标函数中但不改变结果的值既不是所有其他变量的值?

1 个答案:

答案 0 :(得分:0)

问题是关于最小化phiw,但是,问题的描述表明您要做的是链接 phiw和{{1}的值},特别是在fw时有phiw = 1,在fw > 0phiw = 0。(<{p}}。

我建议你添加一个约束,直接将fw = 0上的条件映射到fw的值,例如:

phiw