基于SDR和ADMM算法的恒模约束问题求解 - 知乎 (zhihu.com)
一种比较常见的非凸约束,对于这种约束的优化问题, 有很多种近似求解算法,比如SDR(半定松弛算法),ADMM(交替方向乘子法)等。
SDR算法
ADMM算法
算法
%ADMM算法
%constant module constraint
%验证收敛曲线!!!
clc,clear;
close all;
% s = rng(0);
N = 10;
A = rand(N) +1i*rand(N);
A=A*A';
A = (A +A')/2;
R = rand(N) +1i*rand(N);
R=R*R';
R = (R +R')/2;
iter_num = 100;
w0 =exp(1i*2*pi*rand(N,1));
phi = rand(N,1)*2*pi;
u = rand(N,1);
rho = 5;
val = zeros(iter_num,1);
val_pri = zeros(iter_num,1);
epsilon = 1e-4;
for iter = 1:iter_num
%update w
cvx_begin quiet
variable w(N,1) complex
minimize (real(w'*A*w)+rho/2* square_pos(norm(w-exp(1i*phi)+u,2)))
subject to
% real(w0'*R*w0+w0'*R*(w-w0))>=1
% norm(w,2)<=1
cvx_end
%update v
phi = angle(w+u);
u = u + w - exp(1i*phi);
val(iter) = real(w'*A*w)+rho/2*norm(w- exp(1i*phi)+u,2)^2-rho/2*norm(u,2)^2;
val_pri(iter) = real(w'*A*w);
w0 = w;
if norm(w - exp(1i*phi),2)<=epsilon
break
end
iter
end
figure
plot(val(1:iter),'b-','linewidth',1.5);
hold on
plot(val_pri(1:iter),'-','linewidth',1.5);
grid on
legend('lagrangian function','objective function');
xlabel('iteration number');
ylabel('value')
set(gca,'fontsize',12);
ax=gca;
ax.FontName = 'Times New Roman';
abs(w)
基于半定规划(SDP)的无线传感器定位技术及算法实现MATLAB代码 - 知乎 (zhihu.com)
将问题通过数学建模表示成半定规划问题之后可以采用半定规划求解器进行求解,现常用的求解器有SeDumi,SDPT3,YALMIP,CVX等。其中YALMIP工具包非常贴近现实数学语言,编程十分方便,而且它不仅适用于半定规划,还适用于混合整数规划等常见优化问题,只要调用其它求解器即可。
YALMIP下载安装教程
YALMIP安装、教程与示例_yalmip安装教程-CSDN博客
SeDumi安装
SeDuMi教程(1)_matlab中sedumi安装-CSDN博客
CVX安装
CVX 工具箱(安装及用户指南)_cvx工具箱-CSDN博客
cvx下载地址
Download CVX | CVX Research, Inc.
cvx使用
P163 最优化:建模算法与理论
m = 20; n = 10; p = 4;
A = randn(m,n); b = randn(m,1);
C = randn(p,n); d = randn(p,1); e = rand;
cvx_begin
variable x(n)
minimize( norm( A * x - b, 2 ) )
subject to
C * x == d
norm( x, Inf ) <= e
cvx_end
ADMM求解各种优化函数及Matalb例子_matlab scripts for alternating direction method of-CSDN博客