Integer linear programming in CVX


(Stone Feng) #1

I want to use CVX to solve antenna selection problem. An integer programming problem is formulated, and I defined an diagonal activity matrix S, whose diagonal elements is 0-1 integer.
The selected channle matrix Hs can be expressed as:Hs=H*S
Then ZF precoding W is applied: W=Hs'*inv(Hs*Hs')
My matlab code is as follows:

    variable s(Nt) 
    S=diag(s);
    W=(hmat*diag(s))'*inv((hmat*diag(s))*(hmat*diag(s))');  

But matlab reports an error:

    Disciplined convex programming error:
    Only scalar quadratic forms can be specified in CVX

So how can I modify the precoding matrix W after antenna selection in CVX?


(Michael C. Grant) #2

I marked this as non-convex; which of course it trivially is because of the integer constraints. Nevertheless, W does not satisfy the DCP ruleset even if the binary constraints on S are relaxed, so it does not satisfy the DCP rules. Please read the FAQ.

I admit that the error message here is less than helpful, but the inv is not legal either.

Bottom line, CVX will not be able to solve your problem.


(Stone Feng) #3

Thanks for your help!


(Mark L. Stone) #4

And of course, if there really were an integer linear programming problem (as stated in the title), it could be formulated in CVX. It is not linear.