zl程序教程

您现在的位置是:首页 >  后端

当前栏目

UQP 启发式方法研究(Matlab代码实现)

MATLAB方法代码 实现 研究 启发式
2023-09-14 09:14:28 时间

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

本文:包括几种解决UQP的启发式方法:

domeig.m 包含占主导地位的特征向量匹配启发式

greedy.m包含贪婪策略

rswapgreedy.m 包含行交换贪婪策略

sdprel.m 包含半定松弛法

pwr.m 包含幂法

Main 是主文件,它调用上述每个方法并比较性能。

📚2 运行结果

部分代码:

function [V_sdprel,elapstime] = sdprel(R)
    tic;
    N = length(R);
    cvx_begin quiet
    variable S(N,N) complex semidefinite
    minimize(trace(R*S))
    subject to
        for i=1:N
            S(i,i) == 1;
        end
    S == semidefinite(N);
    cvx_end
    
    %Solution: Rank-1 approximation
    [V,D] = eig(S);
    [max_eig,index] = max(diag(D));
    s_heur_phase = sqrt(max_eig)*V(:,index);
    s_heur = exp(1).^(j*s_heur_phase);
    V_sdprel = abs(s_heur'*R*s_heur);
    elapstime = toc;
end 

function [V,T] = pwr(R,pwr_iter)
    tic;
    [N,~] = size(R);
    rand_phase = (2*pi)*rand(N,1);
    s_heur = exp(1j*rand_phase); 

    for i=1:pwr_iter
        s_heur = exp(1j*angle(R*s_heur));
    end
    
    V = s_heur'*R*s_heur;
    T = toc;
end

🌈3 Matlab代码实现

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]Shankarachary Ragi (2017) UQP heuristic methods