【问题标题】:GLPK - Minimize a variable valueGLPK - 最小化变量值
【发布时间】:2016-10-01 04:14:15
【问题描述】:

我正在研究虚拟网络嵌入,我正在使用 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];

phiw”是二进制变量

"fw" 和 "r" 是取任何值 >= 0

的变量

所有其他(“weight”、“bwDem”、“secDemEdges”、“secSupEdge” ) 只是参数

我想将 phiwfw 联系起来。当 fw > 0 时,phiw 应取值 1。当 fw == 0 时,phiw 应取值值 0。

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

示例 1:

s.t. relConst2: 4 * 1 >= 0

s.t. linkSecConst0: 1 * 2

有没有办法最小化 phiw 变量的值但不将其放入目标函数中?还是把它放在目标函数中,但不改变结果的值,也不改变所有其他变量的值?

【问题讨论】:

    标签: variables minimize glpk


    【解决方案1】:

    问题是关于最小化phiw,但是,问题的描述表明你想要做的是链接phiwfw的值,特别是当fw &gt; 0 时为phiw = 1,否则为phiw = 0(即fw = 0)。

    我建议您添加将fw 上的条件直接映射到phiw 的值的约束,例如:

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

    【讨论】:

      猜你喜欢
      • 2018-08-08
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 2021-04-21
      • 2012-08-09
      相关资源
      最近更新 更多