lyapunov优化

 Lyapunov optimization是Michael J. Neely发展起来的网络优化理论,可以参考[1,2]。因为网络研究中缺乏理论,简单好使的算法,没有高大上的公式吓人,好像就不能发到高级别的期刊上。Lyapunov optimization有几个公式,就成为一个发论文的模板。只要找到一个问题背景,把公式套进去,就是一篇。关于这理论[3]的引用量已经达到1500多次了,但是很难找到相关的代码!
 我很早就知道这个理论。于是花了几天,研究了一下,没办法,眼红呀!看了几篇文章[4,5,6],这几篇文章不仅名字类似,内容也感觉是一个模子制造的。
 知乎上有答主对这个方向有几句评价[7]。我就不过多评价了,毕竟我没有相关的测试。
 [4]中的公式推导,还是挺容易理解的。我就按照这个模板,换个场景,稍微地推导一下。
在这里插入图片描述
 如上图所示的排队系统,数据包的入队速度是 a ( t ) a(t) a(t),出队速度是 b ( t ) b(t) b(t),目标是是怎么样调整 a ( t ) a(t) a(t),使得队列mean rate stable,同时达到最大的用户满意度。用户的满意度,采用效用函数衡量, U = β × l o g ( a ) U=\beta\times log(a) U=β×log(a)。请求的数据流速率 a ( t ) a(t) a(t)越大,用户的满意度越高,但是会造成很长的队列占用。
 队列占用,用 Q Q Q表示。Q的变化方程:
Q ( t + 1 ) = max ⁡ [ Q ( t ) − b ( t ) , 0 ] + a ( t ) Q(t+1)=\max[Q(t)-b(t),0]+a(t) Q(t+1)=max[Q(t)b(t),0]+a(t)
 队列mean rate stable的含义是:
lim ⁡ T → ∞ E ( Q ( t ) ) T = 0 \lim_{T\to\infty}\frac{\mathbb{E}(Q(t))}{T}=0 TlimTE(Q(t))=0
 优化方程:
max ⁡ U s u b j e c t lim ⁡ T → ∞ E ( Q ( t ) ) T = 0 \max U \\ subject \lim_{T\to\infty}\frac{\mathbb{E}(Q(t))}{T}=0 maxUsubjectTlimTE(Q(t))=0
 定义 L ( t ) = Q ( t ) 2 2 L(t)=\frac{Q(t)^2}{2} L(t)=2Q(t)2 Δ L ( t ) = L ( t + 1 ) − L ( t ) \Delta L(t)=L(t+1)-L(t) ΔL(t)=L(t+1)L(t) Δ L ( t ) \Delta L(t) ΔL(t)被称为lyapunov drift。
Q ( t + 1 ) 2 = { max ⁡ [ Q ( t ) − b ( t ) , 0 ] + a ( t ) } 2 ≤ Q ( t ) 2 + b ( t ) 2 + a ( t ) 2 − 2 b ( t ) Q ( t ) + 2 ∗ Q ( t ) ( a ( t ) − b ( t ) ) − 2 ∗ a ( t ) b ( t ) ≤ Q ( t ) 2 + b ( t ) 2 + a ( t ) 2 + 2 ∗ Q ( t ) a ( t ) Q(t+1)^2=\{\max[Q(t)-b(t),0]+a(t)\}^2\\ \leq Q(t)^2+b(t)^2+a(t)^2-2b(t)Q(t)+2*Q(t)(a(t)-b(t))-2*a(t)b(t)\\ \leq Q(t)^2+b(t)^2+a(t)^2+2*Q(t)a(t) Q(t+1)2={max[Q(t)b(t),0]+a(t)}2Q(t)2+b(t)2+a(t)22b(t)Q(t)+2Q(t)(a(t)b(t))2a(t)b(t)Q(t)2+b(t)2+a(t)2+2Q(t)a(t)
Q ( t + 1 ) 2 − Q ( t ) 2 ≤ b ( t ) 2 + a ( t ) 2 + 2 ∗ Q ( t ) a ( t ) Q(t+1)^2-Q(t)^2\leq b(t)^2+a(t)^2+2*Q(t)a(t) Q(t+1)2Q(t)2b(t)2+a(t)2+2Q(t)a(t)
Δ L ( t ) ≤ B + Q ( t ) a ( t ) \Delta L(t)\leq B+Q(t)a(t) ΔL(t)B+Q(t)a(t)
 假设存在 B ≥ b ( t ) 2 + a ( t ) 2 2 B\geq \frac{ b(t)^2+a(t)^2}{2} B2b(t)2+a(t)2。不必较真,全是为了凑出来!
 定义lyapunov drift reward, Δ L ( t ) − V U \Delta L(t)-VU ΔL(t)VU,V是一个常数。想要获取一个大的满意度,却会导致 Δ L ( t ) \Delta L(t) ΔL(t)增加,所以定义lyapunov drift reward,权衡两项,使得aggregate plus最优。这个问题就转化为根据队列占用长度,调节速率的问题。
min ⁡ Q ( t ) a ( t ) − V U \min Q(t)a(t)-VU minQ(t)a(t)VU
 上式可以求导,可得 Q − β × V a × l n 2 Q-\frac{\beta\times V}{a\times ln2} Qa×ln2β×V。使其为0,求得速率控制公式:
a ( t ) = β × V Q ( t ) × l n 2 a(t)=\frac{\beta\times V}{Q(t)\times ln2} a(t)=Q(t)×ln2β×V
 最终效果如何呢,不知道。参数 V , β V, \beta V,β可以慢慢选,直到出现需要的数据。
 [8]中有给出了相应的代码实现。
[1]Lyapunov optimization-wiki
[2] home page
[3] Stochastic Network Optimization with Application to Communication and Queueing Systems
[4] Quality-oriented Rate Control and Resource Allocation in Time-Varying OFDMA Networks
[5] Joint Rate Control and Power Allocation for Non-Orthogonal Multiple Access Systems
[6] Joint rate control and power allocation for low-latency reliable D2D-based relay network
[7] 李雅普诺夫优化问题?
[8] https://github.com/CrQiu/Lyapunov-optimization

  • 57
    点赞
  • 206
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
李雅普诺夫优化算法是一种基于概率的全局优化算法,可以用于求解非凸、非线性、高维度的优化问题。在Matlab中,可以使用以下步骤对李雅普诺夫优化算法进行仿真: 1. 安装并加载优化工具箱。在Matlab命令窗口中输入“ver”,查看是否已经安装了优化工具箱。如果没有安装,可以通过Matlab软件自带的“Add-Ons”功能进行安装。安装完成后,在Matlab命令窗口中输入“optimset”或“optimoptions”即可加载优化工具箱。 2. 编写目标函数。首先需要编写一个需要优化的目标函数,并将其保存在一个.m文件中。例如,可以编写一个目标函数f(x),其中x为需要优化的变量。 3. 设置优化参数。可以使用Matlab中的“optimset”或“optimoptions”函数来设置李雅普诺夫优化算法的参数,例如最大迭代次数、容许误差等。 4. 运行优化算法。使用Matlab中的“lyapunov”函数来运行李雅普诺夫优化算法,并将目标函数和设置好的优化参数作为输入参数传入。例如,可以使用以下命令运行李雅普诺夫优化算法: ```matlab options = optimoptions('lyapunov', 'MaxIterations', 1000, 'TolFun', 1e-6); [x, fval] = lyapunov(@f, x0, [], [], [], options); ``` 其中,“@f”表示目标函数的函数句柄,“x0”表示初始值,“[]”表示约束条件,而“options”则表示李雅普诺夫优化算法的设置参数。运行完成后,可以得到优化结果“x”和目标函数的最小值“fval”。 5. 分析优化结果。可以通过Matlab中的图像化工具箱或自定义函数来对优化结果进行分析和可视化展示。例如,可以使用“plot”函数来绘制优化结果的收敛曲线。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值