cvx问题,大神帮帮忙。解决了有偿感谢

m0_38125979 2018-04-23 07:28:39
我下面这段优化向量P想让获得最大目标函数的代码为什么永远只优化其中一列向量,其他几列刚开始是几还是几
function [eta P] = subfun_cvx(K,M,N,X,G,P_max,P_old,phi,c)
D=zeros(K,M);
R_ub=zeros(K,M);
cvx_begin quiet
variables P(M) eta
expression R_ub(K,M)
expression D(K,M)
expression Objection
maximize eta;
subject to

for k=1:K
for m=1:M
s1=0;s2=0;
for j=1:M
if j==m
continue;
end
s3=0;
for l=1:M
if l==m
continue;
end
s3=s3+P_old(j)*G(k,l);
end
D(k,j)=G(k,j)*log(exp(1))/(log(2)*(s3+phi^2));
s1=s1+D(k,j)*(P(j)-P_old(j));

s2=s2+P_old(j)*G(k,j);

end
R_ub(k,m)=s1+log(s2+phi^2)/log(2);
end
end
Objection = 0;
for m=1:M
ss1=0;
for k=1:K
ss=0;
for j=1:M
ss=ss+P(j)*G(k,j);
end
ss=ss+phi^2;
% if sum(X(:,m))==0
% ss1=ss1;
% else
% ss1=ss1+X(k,m)/sum(X(:,m))*(log(ss)/log(2)-R_ub(k,m));
% end
ss1=ss1+X(k,m)*(log(ss)/log(2)-R_ub(k,m));
end
Objection = Objection + ss1;
end
c*Objection>=eta;
for mm=1:M
0<=P(mm)<=P_max(mm);
end
cvx_end
eta;
P;
% fprintf('CVX原问题结果:%f\n',objcvx);
end
...全文
1809 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

487

社区成员

发帖
与我相关
我的任务
社区描述
硬件使用 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧