1

I have the following task and didn't find any working solution.

I need to find a optimal solution for network node placement. The objective is to minimize the digging cost for connecting cables. Some digging costs depending on each other. E.g. imagine you have 2 nodes in a row and dig one cable to the first then you don't have to include this digging costs to the fist node for the digging to the second node. But if you just select the second node you have to add the costs for digging to node 1 and from node 1 to node 2.

For each node there is a certain number of users which can be supplied by it. To reach a user coverage of at least e.g. 90 % of the users is the constraint.

I tried to use quadratic programming but cvx doesn't like it:

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

Is there anyone having a better idea... using e.g binary linear or quadratic programming?

Thanks and BR

  • ```Package X did not like it``` is not an error-description. No help possible here. And yeah, it looks like you need to incorporate binary/integer variables. Keyword: *indicator-variables*. But the question is too vague right now to do more (```2 nodes in a row```: in what? euclidean-space? grid?...). – sascha Nov 07 '16 at 11:16
  • 2 nodes in a row in terms of a network topology, like routers or aggregation points in a data network. CVX error message: Disciplined convex programming error: Invalid constraint: {convex} >= {real constant} – user7125961 Nov 07 '16 at 12:16
  • This just means, that your constraint ```x'*A*x >= 0.9``` is not according to the rules of DCP. You have to reformulate your problem to achieve this. But we don't know how Q looks like. (Just a remark: ```x'*A*x <= 0.9``` would be a valid constraint but not what you want). – sascha Nov 07 '16 at 12:23
  • Q is a matrix containing cable digging costs. E.g. for the example mentioned above if we have costs of 100 for digging a cable to node 1 and costs of 100 digging a cable from node 1 to node 2. The matrix Q would be the transpose of [100 0; -100 200] – user7125961 Nov 07 '16 at 13:20

1 Answers1

1

x'Ax is a summation of a(i,j)*x(i)*x(j). The products z(i,j)=x(i)*x(j) can be linearized by:

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

With this you have a linear MIP problem.

There are a few optimizations we can use in this formulation:

  • We can make A and Q triangular matrices by exploiting symmetry
  • The diagonals can be handled specially as x(i)^2=x(i)
  • The z(i,j)'s can be reduced to a strictly triangular structure
Erwin Kalvelagen
  • 15,677
  • 2
  • 14
  • 39