分式规划是凸优化中常见的问题,例如最大化能效等。这篇博客介绍了single-ratio 分式规划的二种常见方法。
1、Quadratic transform
2、 Dinkelbach's Transform
优化问题
一个简单的优化问题
如何使用上述二种方法来计算呢?
Quadratic transform
代码复现
%% 方法2:Quadratic Transform 求解max (x/(x^2+1)) s.t x >=0
iter_max = 20;
x = zeros(1,iter_max+1);
eta = zeros(1,iter_max+1);
opt_val = zeros(1,iter_max+1);
eta(1) = 0.1;
for iter=1:iter_max
% update x
x(iter) = (2*eta(iter))^(-2/3);
% update eta
eta(iter+1) = sqrt(x(iter))/(x(iter)^2+1);
opt_val(iter) = x(iter)/(x(iter)^2+1);
if (norm(opt_val(iter+1)-opt_val(iter),2)) <= 1e-4
break;
end
iter
end
plot(opt_val(1:iter),'r--','linewidth',1.5);
结果展示
Dinkelbach's Transform
代码实现
clc;
clear all;
close all;
iter_max = 20;
x = zeros(1,iter_max+1);
eta = zeros(1,iter_max+1);
x(1) = 0.1;
eta(1) = 0.1;
for iter=1:iter_max
% update x
cvx_begin quiet
variable x1
maximize (x1-eta(iter)*(sum_square_abs(x1)+1))
subject to
x1>=0;
cvx_end
x(iter+1)=x1;
iter
% update eta
eta(iter+1) = x(iter+1)/(x(iter+1)^2+1);
if (norm(eta(iter+1)-eta(iter),2)) <= 1e-5
break;
end
end
figure
plot(eta(1:iter+1),'b-o','linewidth',1.5);
hold on
xlabel('迭代次数')
grid on
box on
ylabel('最优值');
参考文献
无线通信中的分式规划(Fractional Programming
Fractional programming for communication systems—Part I: Power control and beamforming
希望多多点赞收藏关注,如果有问题的地方,欢迎在评论区讨论!