分配优化/设置覆盖

时间:2016-11-07 11:10:47

标签: variable-assignment linear-programming integer-programming quadratic-programming

我有以下任务,但没有找到任何可行的解决方案。

我需要为网络节点放置找到最佳解决方案。目标是最小化连接电缆的挖掘成本。一些挖掘成本相互依赖。例如。想象你连续有2个节点并且将一根电缆挖到第一节,然后你不必将这种挖掘成本包括在第一节点中以便挖掘到第二节点。但是,如果您只选择第二个节点,则必须添加挖掘到节点1以及从节点1到节点2的成本。

对于每个节点,可以提供一定数量的用户。达到至少例如用户的覆盖范围90%的用户是约束。

我尝试使用二次规划,但cvx并不喜欢它:

cvx_begin
variable x(n,1) binary;
minimize( x'*Q*x )
subject to
   x'*A*x >= 0.9;
cvx_end

有没有人有更好的想法...使用二进制线性或二次规划?

谢谢,BR

1 个答案:

答案 0 :(得分:1)

x'Axa(i,j)*x(i)*x(j)的总和。产品z(i,j)=x(i)*x(j)可以通过以下方式线性化:

z(i,j) <= x(i)
z(i,j) <= x(j)
z(i,j) >= x(i)+x(j)-1
z(i,j) in {0,1}

这样你就会遇到线性MIP问题。

我们可以在这个公式中使用一些优化:

  • 我们可以通过利用对称性来制作A和Q三角矩阵
  • 对角线可以专门用作x(i)^2=x(i)
  • z(i,j)可以简化为严格的三角形结构
相关问题