Funny results out of a code snippet..any way to look inside CVX?


(Tom) #1

I’m getting funny results out of the following code snippet… wondering if there’s a good way to look inside CVX software to see how it’s processing things?

I’m trying to optimize bulkSubset, which is a vector between zero and one. It should come out as fractional numbers, but almost always comes out as exactly 0,1. The data is not ill-conditioned.

Please advise?
Thanks!

lb = zeros(nTxRf,1);
ub = ones(nTxRf,1);

cvx_begin
         variable bulkSubset(nTxRf)
         objective = 0;
         for ff = 1:obj.nFreq
                sinrFactPerUser = sinrFactor/length(freqAlloc(ff).schedule); % Power per antenna element per user.
                for user = freqAlloc(ff).schedule
                    Htemp = freqAlloc(ff).FPrime(user,:);
                    precoder = Htemp/norm(Htemp);
                    objective = objective + log(1 + sinrFactPerUser*(abs(Htemp .* precoder).^2)*bulkSubset); % Good for no CVXQUAD. Verified 12 2018

             end
    end
    maximize( objective )
    subject to
    lb <= bulkSubset <= ub
    sum(bulkSubset) == numActTx
cvx_end

(Mark L. Stone) #2

You haven’t provided a reproducible problem. You haven’t shown solver or CVX output or results.

And your statement “should come out as fractional numbers, but almost always comes out as exactly 0,1.” is vague. What do mean by “almost always”? Have you solved more than one instance of this problem?

You are free to look through the CVX source code which comes with your installation.