分式规划是凸优化中常见的问题,例如最大化能效等。这篇博客介绍了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('最优值');

参考文献 

cc​​​通信中的分式规划规划(part I)

无线通信中的分式规划(Fractional Programming

Fractional programming for communication systems—Part I: Power control and beamforming


希望多多点赞收藏关注,如果有问题的地方,欢迎在评论区讨论!  

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐