凸优化—常见分式规划解决方法及代码实现

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


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

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兜兜转转m

一毛钱助力博主实现愿望

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值