m0_61651991 2024-04-20 11:48 采纳率: 0%
浏览 17
已结题

交替优化波束形成和ris反射角使保密速率最大化

请教一下我在交替优化波束形成向量和ris反射角的时候,想使保密速率最大化,但得到的结果不收敛这是为啥?优化波束形成用的是数学表达式这里就不放了;优化反射角用的是半定松弛+高斯随机化,但我单独固定一个变量只优化另一个变量的时候结果却是收敛的,这个问题困扰我一个月了
function theta = oma1_opt_theta(h_B1,h_BE,h_R1,h_RE,G,w1_opt,P,M)

h1 = P*h_B1'*w1_opt*(h_B1'*w1_opt)';
he1 = P*h_BE'*w1_opt*(h_BE'*w1_opt)';
G1 = P*[diag(h_R1')*G*w1_opt*w1_opt'*G'*diag(h_R1) diag(h_R1')*G*w1_opt*w1_opt'*h_B1;
                 h_B1'*w1_opt*w1_opt'*G'*diag(h_R1) 0];
Ge1 = P*[diag(h_RE')*G*w1_opt*w1_opt'*G'*diag(h_RE) diag(h_RE')*G*w1_opt*w1_opt'*h_BE;
                 h_BE'*w1_opt*w1_opt'*G'*diag(h_RE) 0];

cvx_begin sdp quiet

    variable X1(M+1,M+1) hermitian
    variable mu1(1,1)
    maximize(real(trace(G1*X1) + mu1*(h1+1)))
    subject to
        real(trace(Ge1*X1)) + mu1*(he1 + 1) == 1;
        for i=1:M+1
            Em = zeros(M+1,M+1);
            Em(i,i) = 1;
            real(trace(Em*X1)) == mu1;
        end
        X1 == hermitian_semidefinite(M+1);
        mu1 >= 0;

cvx_end

S_opt = X1/mu1;

% 高斯随机化
% [U1,S1,V1] = svd(S_opt);
[U1,S1] = eig(S_opt); 
max_F = -1;
max_q = -1;
for i=1:1000
    r = sqrt(1/2)*(randn(M+1,1) + 1j*randn(M+1,1));
    theta_second_opt = U1*sqrt(S1)*r; 
    if theta_second_opt.'*G1*conj(theta_second_opt) > max_F 
        max_q = theta_second_opt;
        max_F = theta_second_opt.'*G1*conj(theta_second_opt);
    end
end
theta = exp(1j*angle(max_q/max_q(end)));
theta = theta(1:M);

end

img

img

  • 写回答

15条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-20 11:48
    关注

    引自免费微信小程序:皆我百晓生

    在您面临交替优化波束形成向量和RIS反射角时,以使保密速率最大化,但遇到结果不收敛的问题,我们可以从以下几个方面进行分析和解决:

    **1. ** 算法设置与收敛性检查

    交替优化方法通常要求两个子问题都具有良好的局部收敛性,并且在每次交替过程中,解的更新应朝着全局最优解方向推进。在您的描述中,单独优化波束形成向量或反射角时,结果是收敛的,这表明单个子问题的优化过程没有问题。然而,交替优化的整体不收敛可能源于以下原因:

    • 迭代次数限制:请确保您已经设置了足够的迭代次数,使得交替优化过程有足够的时间收敛。根据图1所示,迭代次数似乎只有几十次,对于某些复杂的优化问题,可能需要成百上千次迭代才能达到满意收敛。

    • 收敛阈值设定:设置合理的收敛阈值,当连续若干次迭代中保密速率变化小于该阈值时,认为已达到收敛。这有助于判断实际是否已接近收敛状态,而非仅依据固定的迭代次数。

    • 初始化策略:不同的初始值可能导致不同的收敛路径。尝试使用多种不同的初始值进行测试,观察是否有某些初始值能导致更好的收敛性能。

    **2. ** 优化问题性质

    交替优化方法的有效性取决于两个子问题之间的相互影响。在您的问题中,波束形成向量和RIS反射角可能存在较强的耦合关系,可能导致交替优化陷入局部最优。对此,可以尝试以下策略:

    • 调整子问题优化顺序:虽然您未提供具体的波束形成优化算法,但可以考虑交换两者优化的先后顺序,看看是否对收敛性有所改善。

    • 引入中间变量:如果直接交替优化困难,可以引入一个或多个中间变量,将原问题分解为更易于独立优化的子问题。例如,定义一个与波束形成和RIS反射角均相关的辅助变量,通过交替优化这些变量与原有变量,可能有助于打破原有的优化困境。

    **3. ** 优化算法改进

    针对您提供的RIS反射角优化代码(oma1_opt_theta 函数),有几点建议:

    • 高斯随机化次数:您当前使用了1000次高斯随机化。对于某些问题,可能需要增加此数值以提高找到全局最优解的概率。同时,也可以考虑采用更先进的随机化技术,如模拟退火、粒子群优化等。

    • 梯度信息利用:虽然您目前使用了半定松弛结合高斯随机化的方法,但在很多情况下,利用梯度信息进行优化(如梯度下降、牛顿法等)能更有效地逼近全局最优。您可以在高斯随机化之后,对得到的候选解施加梯度更新步骤,进一步提升优化效果。

    • 约束处理:在您的cvx_begin sdp部分,约束条件的实现方式可以优化。例如,可以将所有等式约束合并为一个矩阵表达式,简化代码并可能提高求解效率。此外,检查X1mu1的边界约束是否合理,确保它们不会阻碍收敛。

    **4. ** 数值稳定性与计算精度

    检查优化过程中涉及的数值计算是否稳定,包括矩阵运算、求逆、特征值分解等。确保计算过程中避免数值溢出、下溢或舍入误差过大等问题。如果有必要,可适当调整相关计算的精度或使用稳定的数值计算库。

    综上所述,为解决交替优化波束形成向量和RIS反射角以最大化保密速率过程中遇到的不收敛问题,您可以从上述几个方面进行排查和改进。针对具体代码,建议您尝试增加迭代次数、调整高斯随机化参数、利用梯度信息以及优化约束处理方式。同时,注意检查数值稳定性,确保计算过程无误。希望这些建议能对您有所帮助。如果您需要更具体的代码修改建议,欢迎您提供完整的波束形成优化部分的代码,以便进行更深入的分析和指导。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月21日
  • 创建了问题 4月20日

悬赏问题

  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)