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.
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