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