智能优化算法:供需优化算法

文章目录

  • 智能优化算法:供需优化算法
    • 1.算法原理
    • 2.实验结果
    • 3.参考文献
    • 4.Matlab

摘要:供需优化(supply-demand-based optimization,SDO)算法是 Zhao 等于 2019 年受经济学供需机制的启发而提出的一种新型元启发式优化算法。该算法在数学上模拟了消费者的需求关系和生产者的供给关系,通过将供求机制之稳定模式和非稳定模式引入到 SDO 算法中,利用两种模式在给定空间中进行局部搜索和全局搜索求解待优化问题。与传统群智能算法相比,SDO 算法收敛速度快、寻优精度高、调节参数少,具有较好的探索和开发能力。

1.算法原理

SDO 数学描述简述如下:

(1) SDO 算法初始化。假设有 nnn 个市场,每个市场有ddd 种不同的商品,每种商品都有一定的数量和价格。市场中ddd 种商品价格表示优化问题 ddd 维变量的一组候选解,同时将市场中 ddd 种商品数量作为一组可行解进行评估,如果可行解优于候选解,则可行解替换候选解。nnn 个市场商品价格和商品数量分别用 XXX、YYY 两个矩阵表示:
X=[x1x2...xn]=[x11x12...x1dx21x22...x2d...xn1xn2...xnd](1)X = \left[\begin{matrix}x_1\\x_2\\...\\x_n\end{matrix}\right]=\left[\begin{matrix}x_{11}&x_{12}&...&x_{1d}\\x_{21}&x_{22}&...&x_{2d}\\...\\x_{n1}&x_{n2}&...&x_{nd}\end{matrix}\right]\tag{1} X=⎣⎢⎢⎡​x1​x2​...xn​​⎦⎥⎥⎤​=⎣⎢⎢⎡​x11​x21​...xn1​​x12​x22​xn2​​.........​x1d​x2d​xnd​​⎦⎥⎥⎤​(1)

Y=[y1y2...yn]=[y11y12...y1dx21y22...y2d...yn1yn2...ynd](2)Y = \left[\begin{matrix}y_1\\y_2\\...\\y_n\end{matrix}\right]=\left[\begin{matrix}y_{11}&y_{12}&...&y_{1d}\\x_{21}&y_{22}&...&y_{2d}\\...\\y_{n1}&y_{n2}&...&y_{nd}\end{matrix}\right]\tag{2} Y=⎣⎢⎢⎡​y1​y2​...yn​​⎦⎥⎥⎤​=⎣⎢⎢⎡​y11​x21​...yn1​​y12​y22​yn2​​.........​y1d​y2d​ynd​​⎦⎥⎥⎤​(2)

式中: xix_ixi​ 和 yiy_iyi​分别为第iii个商品价格和数量;xijx_{ij}xij​ 和 yijy_{ij}yij​分别为第jjj个商品在第iii 个市场中的价格和数量。

利用适应度函数分别对每个市场中的商品价格和数量进行评估,对于nnn个市场,商品价格和商品数量的适应度分别为:
{Fx=(Fx1,Fx2,...,Fx3)Fy=(Fy1,Fy2,...,Fyn)(3)\begin{cases}F_x = (F_{x1},F_{x_2},...,F_{x3})\\ F_y = (F_{y1},F_{y2},...,F_{yn}) \end{cases}\tag{3} {Fx​=(Fx1​,Fx2​​,...,Fx3​)Fy​=(Fy1​,Fy2​,...,Fyn​)​(3)
(2)商品均衡数量与均衡价格。假设每种商品的均衡价格x0x_0x0​和均衡数量y0y_0y0​在每次迭代过程中都是可变的,从每个市场商品数量集合中选择一种商品数量作为其数量均衡向量,其市场适应度值越大,表示每个市场所选商品数量的概率就越大。同时,每个市场也可以根据其概率从商品价格集合中选择一种商品价格或以所有市场商品价格的平均值作为均衡价格。商品均衡数量 y0y_0y0​表示如下:
y0=yk,k=R(Q)(4)y_0=y_k,k=R(Q)\tag{4} y0​=yk​,k=R(Q)(4)
其中:
Q=Fy∑i=1n∣Fyi−∑i=1nFyi/n∣Q=\frac{F_y}{\sum_{i=1}^n|F_{yi}-\sum_{i=1}^nF_{yi}/n|} Q=∑i=1n​∣Fyi​−∑i=1n​Fyi​/n∣Fy​​

Fyi={11+f(yi),f(yi)>011−f(yi),elseFy_i=\begin{cases}\frac{1}{1+f(y_i)},f(y_i)>0\\ \frac{1}{1-f(y_i)},else\end{cases} Fyi​={1+f(yi​)1​,f(yi​)>01−f(yi​)1​,else​

式中:f(yi)f(y_i )f(yi​)为商品数量 yiy_iyi​ 的适应度值;R(.)R(.)R(.)为比选算子(roulette wheel selection)。

商品均衡价格x0x_0x0​表示如下:
x0={r∑i=1nxi/n,r<0.5xk,k=R(P),r1≥0.5(5)x_0 = \begin{cases}r\sum_{i=1}^nx_i/n ,r<0.5\\ x_k,k=R(P),r_1\geq0.5\end{cases}\tag{5} x0​={r∑i=1n​xi​/n,r<0.5xk​,k=R(P),r1​≥0.5​(5)
其中:
P=Fx/∑i=1n∣Fxi−∑i=1nFxi∣P=F_x/\sum_{i=1}^n|F_{xi}-\sum_{i=1}^nF_{x_i}| P=Fx​/i=1∑n​∣Fxi​−i=1∑n​Fxi​​∣

Fyi={11+f(xi),f(xi)>011−f(xi),elseFy_i=\begin{cases}\frac{1}{1+f(x_i)},f(x_i)>0\\ \frac{1}{1-f(x_i)},else\end{cases} Fyi​={1+f(xi​)1​,f(xi​)>01−f(xi​)1​,else​

式中:f(xi)f(x_i)f(xi​)为商品价格xix_ixi​的适应度值;r、r1r、r_1r、r1​ 为[0,1]中的随机数。

供给函数和需求函数。依据均衡数量 y0y_0y0​、均衡价格x0x_0x0​分别给出供给函数和需求函数:
yi,t+1=y0−α(xi,t−x0)(6)y_{i,t+1}=y_0-\alpha(x_{i,t}-x_0)\tag{6} yi,t+1​=y0​−α(xi,t​−x0​)(6)

xi,t+1=x0+β(yi,t−y0)(7)x_{i,t+1}=x_0+\beta(y_{i,t}-y_0)\tag{7} xi,t+1​=x0​+β(yi,t​−y0​)(7)

式中:xi,tx_{i,t}xi,t​ 和yi,ty_{i,t}yi,t​分别为第 ttt 次迭代第iii个商品价格和数量;ααα 和 βββ 分别为需求权重和供给权重,通过调整α、βα、βα、β 对均衡价格和均衡数量进行更新。

将式(6)插入式(7)中,可以将需求算式重写为:
xi,t+1=x0−αβ(xi,t−x0)(8)x_{i,t+1}=x_0-\alpha\beta(x_{i,t}-x_0)\tag{8} xi,t+1​=x0​−αβ(xi,t​−x0​)(8)
供应权重 ααα 和需求权重 βββ 分别为:
α=2(T−t+1)Tsin(2πr)(9)\alpha = \frac{2(T-t+1)}{T}sin(2\pi r)\tag{9} α=T2(T−t+1)​sin(2πr)(9)

β=2cos(2πr)(10)\beta = 2cos(2\pi r) \tag{10} β=2cos(2πr)(10)

式中:TTT为最大迭代次数。用变量LLL表示供应权重 ααα和需求权重 βββ的乘积,可以得到:
L=αβ=4(T−t+1)Tsin(2πr)cos(2πr)(11)L = \alpha \beta=\frac{4(T-t+1)}{T}sin(2\pi r)cos(2\pi r) \tag{11} L=αβ=T4(T−t+1)​sin(2πr)cos(2πr)(11)
变量LLL有助于 SDO 算法在勘探和开发之间平稳过渡。 L<1L<1L<1 属稳定模式,通过调整供应权重 ααα 和需求权重 βββ 得到均衡价格 x0x_0x0​ 周围不同的商品价格,这些商品价格可以通过随机数 rrr 在当前价格和均衡价格之间随机变化,稳定模式机制强调“开发”以改善SDO 算法的局部勘探能力。L>1L>1L>1 属非稳定模式,它允许任何市场中的商品价格远离均衡价格,非稳定模式机制迫使每个市场在搜索空间中加强“勘探”未知区域以提高 SDO 算法的全局搜索能力。

算法步骤:

step1:设置 SDO 算法市场群体数NNN,最大迭代次数TTT,问题维度,搜索空间。随机初始化商品价格xix_ixi​ 和商品数量 yiy_iyi​ ,令当前迭代次数 t=0。

step2:计算商品价格xix_ixi​和商品数量yiy_iyi​的适应度值 FxiF_{xi}Fxi​和 FyiF_{yi}Fyi​ ,如果 FyiF_{yi}Fyi​ 优于 FxiF_{xi}Fxi​,则用yiy_iyi​ 代替 xix_ixi​ ,保存xbestx_{best}xbest​ 为当前最优解。

step3确定供应权重ααα和需求权重βββ

step4:对于每个市场,利用式(4)确定均衡数量y0y_0y0​ ;利用式(5)确定均衡价格x0x _0x0​。

step5:利用式(6) 更新商品数量yiy_iyi​;利用式(7)更新商品价格 xix_ixi​ 。基于式(14)计算商品价格xix_ixi​ 和商品数量 yiy_iyi​ 的适应度值FxiF_{xi}Fxi​ 和FyiF_{yi}Fyi​,如果FyiF_{yi}Fyi​ 优于FxiF_{xi}Fxi​ ,则用yiy_iyi​ 代替xix_ixi​ ,保存xbestx_{best}xbest​ 为当前最优解。

step6:令 t=t+1。判断算法是否达到终止条件,若是,输出最优解 x best ,算法结束;否则重复step2~step6。

2.实验结果

3.参考文献

[1] Engineering; Hebei University of Engineering Details Findings in Engineering (Supply-demand-based Optimization: a Novel Economics-inspired Algorithm for Global Optimization)[J]. Journal of Engineering,2019,{4}{5}:

[1]崔东文,李代华.基坑变形预测的改进供需优化算法-指数幂乘积模型[J].水利水电科技进展,2020,40(04):43-50.

4.Matlab

个人资料介绍

智能优化算法:供需优化算法-附代码相关推荐

  1. 智能优化算法:闪电搜索算法-附代码

    智能优化算法:闪电搜索算法-附代码 文章目录 智能优化算法:闪电搜索算法-附代码 1.算法原理 1.1 过渡放电体 1.2 空间放电体 1.3 引导放电体 2.算法结果 3.参考文献 4.Matlab ...

  2. 智能优化算法:布谷鸟搜索算法-附代码

    智能优化算法:布谷鸟搜索算法-附代码 文章目录 智能优化算法:布谷鸟搜索算法-附代码 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 摘要:谷鸟搜索算法(cuckoo search , ...

  3. 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码

    基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 文章目录 基于蝙蝠算法优化BP神经网络的数据分类算法及其MATLAB实现-附代码 1 蝙蝠算法与BP神经网络分类模型 1.1 蝙 ...

  4. 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码

    基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 文章目录 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 1 GWO-SVM 模型 1.1 灰狼优化器GWO ...

  5. 相位 unwrap 与 wrap 算法详解(附代码)

    相位 unwrap 与 wrap 算法详解(附代码) 最近接手了一个项目,光通信方面的,我负责编写初测结果的数据处理算法,其中有一个算法叫做 unwrap 与 wrap,之前没有听说过.通过询问同事与 ...

  6. 数据挖掘领域十大经典算法之—SVM算法(超详细附代码)

    相关文章: 数据挖掘领域十大经典算法之-C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之-K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之-Apriori算法 数据挖掘领域十大经 ...

  7. 二分查找算法详解(附代码)

    二分查找算法详解(附代码) 注: 现有一个升序 不重复的数组 查询target是否在此数组中并返回序号 使用条件 使用二分算法的两个条件: 有序 不重复 混淆处 二分算法两种方式容易弄混淆的地方:就是 ...

  8. 数据挖掘领域十大经典算法之—AdaBoost算法(超详细附代码)

    相关文章: 数据挖掘领域十大经典算法之-C4.5算法(超详细附代码) 数据挖掘领域十大经典算法之-K-Means算法(超详细附代码) 数据挖掘领域十大经典算法之-SVM算法(超详细附代码) 数据挖掘领 ...

  9. 麻雀优化算法_多种智能优化算法应用案例分享-附代码

    1.智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割 智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码_Jack旭的博客-CSDN博客​blog.csdn.net 2.智能优化算法 ...

  10. 智能优化算法:麻雀搜索算法-附代码

    2020智能优化算法:麻雀搜索算法 文章目录 2020智能优化算法:麻雀搜索算法 1.算法原理 2.算法结果 3.参考文献 4.Matlab代码 5.Python代码 摘要:麻雀搜索算法(Sparro ...

最新文章

  1. VTK:颜色顶点查找表用法实战
  2. jQuery的DOM操作之选择元素
  3. java 判断客户端_javaweb服务端判断客户端使用的是手机还是电脑访问
  4. java方法的重载与覆盖的返回值类型
  5. 宿舍晚上温度高,那是你没听“鬼故事”
  6. 【MOOC-生物信息学-蛋白质结构预测与分析】(占坑)
  7. mysql通过函数完成10的阶乘_我来做数据--如何对数据进行处理
  8. 数码管显示倒计时c语言程序,第32节:数码管中的倒计时程序
  9. 使用gulp构建一个项目
  10. 【tensorflow 训练验证数据处理】制制作trian和val TXT的文件
  11. What is event bubbling and capturing?
  12. 贝努利概率 matlab
  13. wps如何在目录里面打省略号_在wps中怎么让文档目录的省略号对齐 - 卡饭网
  14. GPGPU渲染GPU的工作原理和认知总结
  15. 18.3.7给小可爱们的(NBUOJ)
  16. 动力节点『lol版』Java学习路线图(七)架构师提升必备技术点
  17. 信息系统集成-模拟二错题
  18. 用c语言写生成 mif文件的软件,MIF文件生成(.MIF File Generator Utility)
  19. Vue全家桶+Socket.io+Koa2打造一个智能聊天室 接口已开放
  20. 一款精美图片在图片压缩网站HTML源码

热门文章

  1. 给定一个介于0到1之间的实数(如0.625),打印他的二进制表示
  2. 计算机应用基础doc,计算机应用基础.doc
  3. winform 图片压缩大小为原图的一半_图片压缩指定大小?!这款神奇的工具有必要了解一下...
  4. matlab repmat_三行MATLAB实现动漫风格照片
  5. html取json列表长度,js获取json元素数量的方法
  6. 正则表达式:模式修饰符(自用)
  7. 为了躲开违规电动车,我一下子撞电线杆上了
  8. 论文笔记_S2D.70_2021_IEEE-RAL_CodeMapping:使用紧凑场景表示的稀疏SLAM的实时稠密建图
  9. GIS_GeoTools栅格数据分析之图像变化检测
  10. SINet: 使用空间压缩模块和信息遮挡编码器的极轻量人像分割模型