无线通信中的分式规划(Fractional Programming)与Matlab实现

引言

本文主要介绍Shen Kaiming老师的论文《Fractional programming for communication systems—Part I: Power control and beamforming》所介绍的无线通信中遇到的多项分式规划求解方法。

在多用户(multi user)无线通信的系统优化设计中,经过遇到以下两类优化问题:

1. 最大化系统和速率(Sum Rate)问题

\max { }\sum_{i=1}^{n}{\log\left( 1+\gamma_i \right)}

\gamma_ii用户的SINR。目标函数对多个对数函数求和,优化变量是SINR的自变量。

2. 最大化系统能量效率(Energy Efficiency)问题

\max \frac{\sum_{i=1}^{N}{R_i\left( p \right)}}{\sum_{i=1}^{N}{p}+P_{\text{on}}} \\ s.t. \sum_{i=1}^{N}{p}\leq P_{\max}

问题1可以通过[1]中所提出的拉格朗日对偶变换(Lagrangian dual transform)转化为一个多项分式规划问题;问题2是一个分式规划问题。类似于以上多项对数和或者目标函数含有多项分式和的问题,都可以可以通过[2]中所提出的二次变换(Quadratic transform)来解决。该方法是无线通信优化论文中较常见的将非凸优化问题转化为凸优化问题的方法,在RIS的优化中也有见到,因此在本文中介绍该转化方法的核心思想和功率控制部分的matlab代码(波束成形和能效能量效率问题的部分后续补上),供大家参考,如果有不清楚或者文中理解不准确的地方,希望大家留言或私信交流。

传统分式规划方法

传统的分式规划问题多集中于单项分式规划问题,即目标函数中只含有一个分式,而多项分式规划问题是多个分式求和的形式,下面简要介绍传统的分式规划问题求解方法。单项分式规划问题可表示为以下的通用形式

\max \frac{A\left( \mathbf{x} \right)}{B\left( \mathbf{x} \right)}\\ \text{s.t. }\mathbf{x}\in\mathcal{X}. \\

其中A\left( \mathbf{x} \right):\mathbb{R}^d\rightarrow\mathbb{R}_+是值域为非负的函数,B\left( \mathbf{x} \right):\mathbb{R}^d\rightarrow\mathbb{R}_{++}是值域为正的函数。

Charnes-Cooper变换

引入两个辅助变量:

z=\frac{1}{B\left( \mathbf{x} \right)},\mathbf{q}=\frac{\mathbf{x}}{B(\mathbf{x})}\\

因此通用形式的单项分式规划问题可以写成以下形式

\max_{z,\mathbf{q}} zA\left( \frac{\mathbf{q} }{z} \right)\\ \text{s.t. } zB\left( \frac{\mathbf{q} }{z} \right) \leq 1 \\ z\in\mathcal{Z} \\ \mathbf{q}\in\mathcal{Q} \\

很明显带入辅助变量,目标函数不变, z\mathbf{q}的定义域根据\mathbf{x}的定义域计算,因此该方法较为麻烦, z\mathbf{q}二者相互迭代优化,且很难推广到求解多项分式规划问题。

Dinkelbach's变换

该方法思路简单,主要是将分式规划问题变换为差的形式,如下所示:

\max_\mathbf{x} A\left( \mathbf{x} \right) - y{B\left( \mathbf{x} \right)}\\ \text{s.t. }\mathbf{x}\in\mathcal{X}. \\

其中y\left[ t+1 \right]=\frac{A\left( \mathbf{x}\left[ t \right] \right)}{B\left( \mathbf{x}\left[ t \right] \right)},两个变量相互迭代更新,而且不用重新计算辅助变量的定义域,但是目标函数的值和原目标函数的值不同,因此无法应用到多项分式规划中。

二次变换

以上单项分式规划都难以推广到多项分式规划中,主要是变化后的目标函数值和原目标函数值发生了变化,当多项分式规划时,对单项分式的值影响不同,导致最优解与原问题不同。因此转化后的目标函数需要满足以下四点条件:

  1. 解耦性:新的目标函数的形式需要满足g\left( \mathbf{x},y \right)=f\left( A\left( \mathbf{x} \right) \right)q_1\left( y \right)- h\left( B\left( \mathbf{x} \right) \right)q_2\left( y \right),比较容易理解,需要将分子和分母解耦为差的形式 ;
  2. 解的等价性A\left( \mathbf{x} \right)/B\left( \mathbf{x} \right)和所设计的函数g\left( \mathbf{x},y \right)的最优解\mathbf{x}^\stary等于某一个值时相等;
  3. 目标值的的等价性:A\left( \mathbf{x} \right)/B\left( \mathbf{x} \right)和所设计的函数 g\left( \mathbf{x},y \right)的目标值在y等于某一个值时,相等;
  4. 凹性:所设计的函数g\left( \mathbf{x},y \right)\mathbf{x}固定时,关于y是凹函数,即\partial^2g/\partial y^2\leq0

因此可设计如下的变换函数,即二次变换(Quadratic transform): 

g\left( \mathbf{x},y \right)=2y\sqrt{A\left( \mathbf{x} \right)}-y^2B\left( \mathbf{x} \right)

利用二次变换可以解决(但不限于)以下三类分项分式规划问题:

1) 对于以下的多项分式规划问题

\max_\mathbf{x} \sum_{m=1}^{M}\frac{A_m\left( \mathbf{x} \right)}{B_m\left( \mathbf{x} \right)}\\ \text{s.t. }\mathbf{x}\in\mathcal{X}. \\

通过二次变换,可以等价地变换为如下形式

\max_\mathbf{x,y} \sum_{m=1}^{M}\left( 2y_m\sqrt{A_m\left( \mathbf{x} \right)}-y_m^2 B_m\left( \mathbf{x} \right)\right)\\ \text{s.t. }\mathbf{x}\in\mathcal{X}, y_m\in\mathbb{R} \\

2) 给定一系列的非减函数f_m\left( \cdot \right)和比值A_m\left( \mathbf{x} \right)/B_m\left( \mathbf{x} \right), m=1,\dots,M,那么多项比例函数的和(sum-of-functions-ratio)问题

\max_\mathbf{x} \sum_{m=1}^{M}f_m\left(\frac{A_m\left( \mathbf{x} \right)}{B_m\left( \mathbf{x} \right)}\right)\\ \text{s.t. }\mathbf{x}\in\mathcal{X}. \\

通过二次变换,可以等价地变换为如下形式

\max_\mathbf{x,y} \sum_{m=1}^{M}f_m\left( 2y_m\sqrt{A_m\left( \mathbf{x} \right)}-y_m^2 B_m\left( \mathbf{x} \right)\right)\\ \text{s.t. }\mathbf{x}\in\mathcal{X}, y_m\in\mathbb{R} \\

3) 对于最大最小分式(max-min-ratio)问题

\max_\mathbf{x} \min_{m} \left\{ \frac{A_m\left( \mathbf{x} \right)}{B_m\left( \mathbf{x} \right)} \right\}\\ \text{s.t. } \mathbf{x}\in\mathcal{X} \\

等价于

\max_{\mathbf{x},\mathbf{y},z} ~~z\\ \text{s.t.} ~~\mathbf{x}\in \mathcal{X}, y_m\in\mathbb{R}, z\in\mathbb{R}\\ 2y_m\sqrt{A_m\left( \mathbf{x} \right)}-y_m^2B_m\left( \mathbf{x} \right)\geq z, \forall m. \\

以上的变换都比较容易理解,具体证明可以仔细阅读文献[2]的相关内容。为解决无线通信中的相关问题,二次变换也可以拓展到向量复数域

 Concave-Convex分式规划

以上的变换对于分式的分子只有非负而分母为正的限制条件,但如果需要进一步使得经过二次变换后的问题容易求解,或者说当y固定时候是凸的,则需要满足

  • 分式的分子是凹函数
  • 分母是凸函数
  • 约束集合\mathcal{X}是凸集

以上条件较为容易理解,当y固定时,二次变换后的函数g\left( \mathbf{x},y \right)A_m\left( \mathbf{x} \right)前是正号,对于最大化问题,A_m\left( \mathbf{x} \right)需要满足是凹函数的条件,而B_m\left( \mathbf{x} \right)前是负号,因此需要B_m\left( \mathbf{x} \right)满足是凸函数的条件,此时g\left( \mathbf{x},y \right)整体是凹函数,可以利用CVX直接求解。 

因此这种比较容易求解的分式规划问题称为Concave-Convex分式规划问题,在无线通信中也比较容易满足以上三个条件。

Concave-Convex分式规划的迭代式求解方法

1)当\mathbf{x}固定时,g\left( \mathbf{x},y \right)y求偏导,并令偏导数等于0:\partial g\left( \mathbf{x},y \right)/\partial y =0,可以得到最优y_m的闭式解为:

y_m^\star = \frac{\sqrt{A\left( \mathbf{x} \right)}}{B\left( \mathbf{x} \right)}, \forall m=1,\dots,M. \\

2) 当y固定时,g\left( \mathbf{x},y \right)关于\mathbf{x}是凹函数,可以通过凸优化工具箱求解。

步骤1)2)相互迭代,直至收敛。

实例:无线通信中的功率控制问题

功率控制问题

多用户多小区蜂窝无线通信系统中,功率控制问题是最为常见的一类问题,一般是在最大功率的约束下,通过控制不同基站的发射功率而达到系统的和速率最大化,尽量减小小区间干扰的影响,各用户的速率可以表示为:

R_i=\log\left( 1+\frac{\left| h_{i,i} \right|^2p_i}{\sum_{j\ne i}{h_{i,j}p_j}+\sigma^2} \right) \\

其中h_{i,j}表示基站j到用户i的信道,p_i表示第i各基站的发射功率,假设每个小区中只存在一个单天线的用户。加权速率和最大化函数为:

f\left( \mathbf{p} \right)=\sum_{i\in\mathcal{B}}{w_iR_i}\\

功率控制问题:

\max_{\mathbf{p}}~~ f\left( \mathbf{p} \right) \\ \text{s.t. } ~~0\le p_i \le P_{\max}, \forall i\in\mathcal{B} \\

由于R_i中的SINR是分式形式,所以功率控制问题是一个典型的多项比例函数的和问题,\log\left( \cdot \right)是一个非减函数,SINR的分子和分母都既是凸函数又是凹函数,可以利用Concave-Convex分式规划的方法求解。

1)直接式求解方法

f\left( \mathbf{p} \right)进行二次变换,可以得到:

f^{\mathsf{DIR}}\left( \mathbf{p},\mathbf{y} \right)=\sum_{i\in\mathcal{B}}{w_i\log\left( 1+2y_i\sqrt{\left| h_{i,i} \right|^2p_i}-y_i^2\left( \sum_{j\ne i}{\left| h_{i,j} \right|^2p_j}+\sigma^2 \right) \right)} \\

优化问题可以变换为

\max_{\mathbf{p},\mathbf{y}}~~ f^{\mathsf{DIR}}\left( \mathbf{p},\mathbf{y} \right) \\ \text{s.t.}~~~~~~~ 0\le p_i \le P_{\max}, \forall i \in \mathcal{B} \\ ~~~~~~~~~~~~y_i\in\mathbb{R}, \forall i \in \mathcal{B} \\

固定\mathbf{p}时,最优y_i的闭式解为

y_i^\star = \frac{\sqrt{\left| h_{i,i} \right|^2p_i}}{\sum_{j\ne i}{h_{i,j}p_j}+\sigma^2} \\

固定\mathbf{y}时,变换后的问题是一个凸优化问题,可以根据以下的伪代码迭代求解

直接式求解方法的伪代码

 2)闭式解方法

该方法利用[1]中给出的拉格朗日对偶变换(Lagrangian dual transform)(这个变换在以后有时间再详细介绍,在此不再赘述,不清楚的可以阅读文献[1]),通过引入辅助变量的方法解决掉分式外层的对数函数,拉格朗日对偶变换后会出现新的不含有对数函数的分式,可以通过上文提到的二次变换处理。首先对f\left( \mathbf{p} \right)进行拉格朗日对偶变换:

f_1^{\mathsf{CF}}(\mathbf{p}, \gamma)=\sum_{i \in \mathcal{B}} w_i \log ( \left.1+\gamma_i\right)-\sum_{i \in \mathcal{B}} w_i \gamma_i +\sum_{i \in \mathcal{B}} \frac{w_i\left(1+\gamma_i\right)\left|h_{i, i}\right|^2 p_i}{\sum_{j \in \mathcal{B}}\left|h_{i, j}\right|^2 p_j+\sigma^2} \\

论文[2]中对f_1^{\mathsf{CF}}(\mathbf{p}, \gamma)关于\gamma求偏导,\partial f_1^{\mathsf{CF}}(\mathbf{p}, \gamma)/\partial \gamma_i=0,得到最优解

\gamma_i = \frac{\left| h_{i,i} \right|^2p_i}{\sum_{j\ne i}{h_{i,j}p_j}+\sigma^2} \\

但是根据这里对\gamma_i求导的得到的最优解进行迭代,我自己根据论文所给的伪代码仿真始终无法收敛,会产生振荡,甚至系统和速率会逐渐减小,所以在拉格朗日对偶变换就直接对\gamma_i求偏导表示存疑,而且这样迭代更新的\gamma_i和后面进行二次变换后的辅助变量y_i无法产生关系,我自己理解应该是在拉格朗日对偶变换和二次变换后再对\gamma_i求偏导。

f_1^{\mathsf{CF}}(\mathbf{p}, \gamma)的分式部分进行二次变换可以得到

f_2^{\mathsf{CF}}(\mathbf{p}, \gamma,\mathbf{y})=\sum_{i \in \mathcal{B}} w_i \log ( \left.1+\gamma_i\right)-\sum_{i \in \mathcal{B}} w_i \gamma_i +\sum_{i \in \mathcal{B}}{2y_i\sqrt{w_i\left(1+\gamma_i\right)\left|h_{i, i}\right|^2 p_i}}-\sum_{i \in \mathcal{B}}{y_i^2\left(\sum_{j \in \mathcal{B}}\left|h_{i, j}\right|^2 p_j+\sigma^2 \right)} \\

f_2^{\mathsf{CF}}(\mathbf{p}, \gamma,\mathbf{y})关于\gamma求偏导,\partial f_2^{\mathsf{CF}}(\mathbf{p}, \gamma,\mathbf{y})/\partial \gamma_i=0,得到最优解

\gamma_i^\star = \frac{y_i^2\left| h_{i,i} \right|^2p_i+\sqrt{\left( y_i^2\left| h_{i,i} \right|^2p_i \right)^2+4y_i^2\left| h_{i,i} \right|^2p_i}}{2}\\

同理,可以得到最优解p_i^\stary_i^\star

p_i^{\star}=\min \left\{P_{\max }, \frac{y_i^2 w_i\left(1+\gamma_i\right)\left|h_{i, i}\right|^2}{\left(\sum_{j \in \mathcal{B}} y_j^2\left|h_{j, i}\right|^2\right)^2}\right\}, y_i^{\star}=\frac{\sqrt{w_i\left(1+\gamma_i\right)\left|h_{i, i}\right|^2 p_i}}{\sum_{j \in \mathcal{B}}\left|h_{i, j}\right|^2 p_j+\sigma^2}, \forall i \in \mathcal{B} \\

论文中给出的闭式方法求解的伪代码如下:

闭式解求解方法的伪代码
闭式解求解方法的伪代码

 但是根据该伪代码和公式(42)的迭代方法,大多数情况下收敛曲线振荡无法收敛,对照公式调试很久也无法得到论文中呈现的效果,不清楚我自己理解是否有问题,如果理解有错误,欢迎评论和私信交流。因此我在二次变换后,再对\gamma_i求偏导,然后根据以下的方式进行迭代更新,才得到较好的效果:

\mathbf{y}\rightarrow\mathbf{p}\rightarrow\gamma\rightarrow\mathbf{p} \\

仿真

仿真环境

论文中设置的是7个相邻的正六边形蜂窝小区,每个蜂窝小区中有且仅有一个用户,在7个小区中随机撒点得到以下用户位置

仿真环境有7个相邻的正六边形蜂窝小区构成,随机产生用户位置

 仿真结果

复现得到的结果:

复现仿真结果

论文仿真结果原图

复现代码在文章标题下方下载!! 

参考文献

[1] Shen K, Yu W. Fractional programming for communication systems—Part II: Uplink scheduling via matching[J]. IEEE Transactions on Signal Processing, 2018, 66(10): 2631-2644.

[2] Shen K, Yu W. Fractional programming for communication systems—Part I: Power control and beamforming[J]. IEEE Transactions on Signal Processing, 2018, 66(10): 2616-2630.

总结

二次变换和拉格朗日对偶变换在处理多项分式规划问题,高效且容易理解,但是仿真复现时,感觉收敛速度没有论文给出的快,特别是闭式解方法,若复现代码有问题,欢迎大家指出。

  • 10
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
无线通信分式规划是一种优化技术,旨在通过在无线通信系统分配资源来最大化系统性能。它可以应用于各种无线通信问题,例如功率分配、频谱分配和用户调度等。 分式规划的目标是最小化或最大化目标函数,同时满足一组约束条件。在无线通信系统,目标函数可能是最大化系统容量、最小化发射功率或最小化用户间的干扰等。 Matlab是一种强大的数学计算软件,可以用于实现分式规划算法。在Matlab,可以使用现有的优化工具箱来实现分式规划。这些工具箱提供了各种优化算法和函数,可以帮助解决和优化无线通信系统的问题。 首先,需要定义目标函数和约束条件。然后,在Matlab使用分式规划的相应函数来求解问题。这些函数可以根据指定的问题类型和约束条件,自动搜索最优解。 在实现分式规划算法时,需要注意以下几点: 1. 确定问题类型:根据实际问题定义目标函数和约束条件,确定需要使用的分式规划算法。 2. 数据准备:收集所需数据,例如信道信息、用户需求和系统参数等。 3. 编写Matlab代码:根据选择的分式规划算法和问题类型,在Matlab编写相应的代码。 4. 约束条件的处理:确保所有约束条件在代码得到正确处理。 5. 解决和优化:运行代码,并根据结果进行调整和优化,直到获得满意的解决方案。 总之,分式规划无线通信的应用是一种优化技术,可以帮助最大化系统性能。使用Matlab可以实现分式规划算法,并解决各种无线通信问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

伽蓝雨不停

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值