我有以下任务,但没有找到任何可行的解决方案。
我需要为网络节点放置找到最佳解决方案。目标是最小化连接电缆的挖掘成本。一些挖掘成本相互依赖。例如。想象你连续有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
答案 0 :(得分:1)
x'Ax
是a(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问题。
我们可以在这个公式中使用一些优化:
x(i)^2=x(i)
z(i,j)
可以简化为严格的三角形结构