智能优化算法——下山单纯型算法

news/2024/11/8 23:30:55/

在这里插入图片描述

作者:非妃是公主
专栏:《智能优化算法》
博客地址:https://blog.csdn.net/myf_666
个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩
在这里插入图片描述

文章目录

专栏推荐

专栏名称专栏地址
软件工程专栏——软件工程
计算机图形学 专栏——计算机图形学
操作系统专栏——操作系统
软件测试专栏——软件测试
机器学习专栏——机器学习
数据库专栏——数据库
算法专栏——算法

下山单纯型法是一种智能优化算法,对于一个 n 维问题,主要通过先产生 n+1 个可行解,然后通过反射、收缩、膨胀、压缩 4 个操作,不断逼近最优解的过程。

给定 n+1 个顶点 x i , i = 1 , . . . , n + 1 x_i,i=1,...,n+1 xi,i=1,...,n+1,这些点对应的函数值为 f ( x i ) f(x_i) f(xi)

定义如下相关参数

参数名称参数值
反射(reflection) α = 1 \alpha = 1 α=1
膨胀(expansion) γ = 2 \gamma = 2 γ=2
收缩(contration) β = 0.5 \beta = 0.5 β=0.5
压缩(shrinkage) δ = 0.5 \delta = 0.5 δ=0.5

一、算法流程

1. 反射

  1. 按照目标函数对n+1个点进行从好到差排序,确定最坏点,第二坏点和最好点的下表 h , s , l h,s,l h,s,l

  2. 计算除去最差点外其它点的中心点: c = 1 n ∑ j = 1 n x j c=\frac{1}{n}\sum_{j=1}^n x_j c=n1j=1nxj;

  3. 反射操作: x r = c + α ( c − x h ) , f r = f ( x r ) x_r=c+\alpha(c-x_h),f_r=f(x_r) xr=c+α(cxh),fr=f(xr)。如果 f l < = f r < = f s f_l<=f_r<=f_s fl<=fr<=fs,则接受 x r x_r xr

这里要注意反射操作时,对 c − x h c-x_h cxh 的理解,可以理解其为一个向量,从 c c c 点加上一个由 x h x_h xh 指向 c c c 的向量。

如下图所示:

在这里插入图片描述


2. 膨胀

如果我们上面的反射取得了很好的效果,我们还要再膨胀一下,因为也许可能取得更好的效果,因此,在 f r < f l f_r<f_l fr<fl的条件下,即反射后比之前三角形的最优位置还小,那么我们就要进一步向这个方向移动,计算膨胀点为:

x e = c + γ ( x r − c ) x_e=c+\gamma (x_r-c) xe=c+γ(xrc)

从上面可以看出,之前的系数 α = 1 \alpha=1 α=1,现在的系数 γ = 2 \gamma=2 γ=2,是膨胀的。


3. 收缩

如果 f r > = f s f_r>=f_s fr>=fs,则利用 x h x_h xh(最坏点)和 x r x_r xr(反射点)中较好的一个点来计算收缩点 x c x_c xc

这里可能发生的情况就是,我们反射时候波动的范围较大,因此我们需要进一步缩小一定的范围。

如果 x h x_h xh好一些的话,我们就向 x h x_h xh方向走,但是,注意是收缩,少走一些。

如果 x r x_r xr好一些的话,同理,我们就像 x r x_r xr方向走,但是,同样注意要少走一些。


Ⅰ. x r x_r xr好一些的情况

f s < = f r < f h f_s<=f_r<f_h fs<=fr<fh,向外收缩,计算 x c = c + β ( x r − c ) , f c = f ( x c ) x_c=c+\beta(x_r-c),f_c=f(x_c) xc=c+β(xrc),fc=f(xc)。如果 f c < = f r f_c<=f_r fc<=fr(证明有效果),则接受 x c x_c xc

在这里插入图片描述


Ⅱ. x h x_h xh好一些的情况

f r > = f h f_r>=f_h fr>=fh,计算 x c = c + β ( x h − c ) , f c = f ( x c ) x_c=c+\beta(x_h-c),f_c=f(x_c) xc=c+β(xhc),fc=f(xc)。如果 f c < f h f_c<f_h fc<fh(证明有效果),接受 x c x_c xc

在这里插入图片描述

注意:这里的 β = 0.2 \beta=0.2 β=0.2,不是上面的 α = 1 \alpha=1 α=1操作,因此,叫做收缩。


4. 压缩

最后,如果 f r > f h f_r>f_h fr>fh,这个时候,证明结果已经很坏了。进行压缩操作,怎么压缩呢?整体向最好的点的方向压缩,如下:

x j = x l + δ ( x j − x i ) , f j = f ( x j ) , j = 1 , . . . , n + 1 且 j ≠ l x_j=x_l+\delta(x_j-x_i),f_j=f(x_j),j=1,...,n+1且j\neq l xj=xl+δ(xjxi),fj=f(xj),j=1,...,n+1j=l

在这里插入图片描述


二、一个求解的实例

在这里插入图片描述

公式太多了,打不出来,附上手稿,如有纰漏,欢迎指正!手动推演了 3 代,具体如下图:

在这里插入图片描述

the end……

下山单纯型算法到这里就要结束啦~~到此既是缘分,欢迎您的点赞评论收藏关注我,不迷路,我们下期再见!!

😘😘😘 我是Cherries,一位计算机科班在校大学生,写博客用来记录自己平时的所思所想!
💞💞💞 内容繁杂,又才疏学浅,难免存在错误,欢迎各位大佬的批评指正!
👋👋👋 我们相互交流,共同进步!

:本文由非妃是公主发布于https://blog.csdn.net/myf_666,转载请务必标明原文链接:https://blog.csdn.net/myf_666/article/details/129072785


http://www.ppmy.cn/news/67899.html

相关文章

10-HTML-表单标签

标签描述<form>定义供用户输入的 HTML 表单。<input>定义输入控件。<textarea>定义多行的文本输入控件。<button>定义按钮。<select>定义选择列表&#xff08;下拉列表&#xff09;。<optgroup>定义选择列表中相关选项的组合。<option&…

rtl仿真器-iverilog icarus安装和测试

Icarus Verilog是一个轻量、免费、开源的Verilog编译器&#xff0c;基于C实现&#xff0c;开发者是 Stephen Williams &#xff0c;遵循 GNU GPL license 许可证&#xff0c;安装文件中已经包含 GTKWave支持Verilog/VHDL文件的编译和仿真&#xff0c;命令行操作方式&#xff0c…

太阳诱电|什么是低频振荡?低频振荡名词解释

低频振荡是指在振荡系统中发生的频率较低的振动。在物理学中&#xff0c;振动是指物体在某一位置附近的周期性运动。当物体发生振动时&#xff0c;它会沿着某个方向来回振动&#xff0c;而振荡的频率就是物体在单位时间内来回振动的次数。 低频振荡的频率通常指的是从几赫兹到…

opencv实践项目-多张图片拼接之stitcher

目录 1.简介2. 拼接算法流程3. 代码演示 1.简介 OpenCV从2.4.x版本之后多出来一个新的模型 图像拼接&#xff0c;该模块通过简单的高级API设置&#xff0c;可以获得比较好的图像拼接效果&#xff0c;OpenCV官方提供了一个高度集成的API函数 Stitcher&#xff0c;只要两行代码就…

Chromium源码视频播放分析

​ 下载代码&#xff0c;调试方法等见Chromium视频播放相关调试记录_bberdong的博客-CSDN博客 硬解流程 GPU进程 MediaService::CreateInterfaceFactory&#xff0c;然后创建了InterfaceFactoryImpl。 创建解码器 gpu进程收到了一个message创建了一个MojoVideoDecoderServ…

携手共建数字钢铁,Hightopo亮相第三届钢铁展洽会

4 月 26 日备受期待的第三届钢铁展洽会在日照盛大召开。图扑软件作为智慧钢铁行业领先的 2D 和 3D 图形界面可视化解决方案提供商&#xff0c;受邀参与此次展会。 图扑软件携智慧钢铁三维可视化监控体系亮相“钢铁展洽会”&#xff0c;向众多钢铁企业展示了一系列图扑 HT 数字…

Flink Kafka-Source

文章目录 Kafka Source1. 使用方法2. Topic / Partition 订阅3. 消息解析4. 起始消费位点5. 有界 / 无界模式6. 其他属性7. 动态分区检查8. 事件时间和水印9. 空闲10. 消费位点提交11. 监控12. 安全 Apache Kafka 连接器 Flink 提供了 Apache Kafka 连接器使用精确一次&#xf…

安卓源码下apk进行platform签名的方法

目录 一 任意目录下创建一个文件夹 二 该目录下需要准备的5个文件 三 执行命令 四 生成结果 一 任意目录下创建一个文件夹 二 该目录下需要准备的5个文件 上述五个文件&#xff0c; 前四个可以从编译好的安卓源码工程目录下复制&#xff0c; 第五个是自己需要签名的apk文件 …