> # ♻️ 资源
> **大小:** 3.72MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010267**](https://www.yuque.com/sxbn/ks/100010267)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87354481**](https://download.csdn.net/download/s1t16/87354481)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 智能优化算法 大作业
# 一、求解多极小函数
求解多极值函数问题中,我们需要求出函数的最值,我们以函数 f(x0,x1) = -x1_sin(x0)- x0 _ cos(x1) 为例,求它在 x0,x1 ∈ [10,10] 区间内的最小值。
使用 MATLAB 画出的函数图像如图 1 所示,其最小值可用 matlab 库函数求出,约为-17.394,同时该函数有多个局部极小值。
![efc4912422a226a8b4200a4b9a81a0bc.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708228632096-af68b050-0441-4e39-a7a9-db20b4b598b7.png#averageHue=%23dfdfde&clientId=u193506b0-0914-4&from=paste&height=330&id=u9e681b91&originHeight=412&originWidth=554&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=48070&status=done&style=none&taskId=u8a4a43d5-c3a0-42c6-a26c-b8ffb0d00cc&title=&width=443.2)
图 1: 函数 f(x) 图像
## 1.1 SA 算法
### 1.1.1 算法流程
如步骤图 2、参数设置图 3、流程图 4,步骤 1 中,初始温度可以有两种生成方式:按照经验设定固定初温或随机选择指定数量的状态计算目标值并把方差作为初温;初始解在连续函数中为函数值。
步骤 2 中,在外循环中,温度随着迭代而发生变化,收敛准则分为基于时间的收敛(指定迭代次数,需要指定迭代次数)和基于性能的收敛(连续若干步的目标值之差小于阈值,需要指定阈值和迭代步数)。
步骤 3 中,抽样稳定准则是在内循环中用来决定同一个温度下产生解的个数,温度不随着内循环迭代而发生改变。收敛准则分为基于时间的收敛(指定迭代次数,需要指定迭代次数)和基于性能的收敛(连续若干步的目标值之差小于阈值,需要指定阈值和迭代步数)。
步骤 4 为状态更新,在连续函数的优化问题中,需要指定自变量更新的步长和移动长度的分布类型(高斯分布或柯西分布其中退温为对外循环的温度进行降温,分为指数退温(需要指定温度衰减系数)和对数退温。
步骤 5 为状态判断,如果新解的目标值更优,则用它来替换当前解,否则保持当前状态不变,并继续循环。
![02fbd58d006614bb13dd9e51350f35fb.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708228658154-c35ec1d9-1eb1-46a9-95e3-0de12e60c3a9.png#averageHue=%23edece4&clientId=u193506b0-0914-4&from=paste&height=210&id=ufd220b9c&originHeight=262&originWidth=862&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=75012&status=done&style=none&taskId=u835b10c7-f82c-4088-9900-0815631f794&title=&width=689.6)
图 2: 模拟退火算法流程
![e35eceb1d033be588b94af3d7d2e2215.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708228673970-8d01b705-bb84-417f-919a-f0136fbde714.png#averageHue=%23f3f3f3&clientId=u193506b0-0914-4&from=paste&height=253&id=uac94260f&originHeight=316&originWidth=1101&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=53493&status=done&style=none&taskId=ua74db446-7fd3-4ed4-98d8-ae7b1b13722&title=&width=880.8)
图 3: 模拟退火算法参数设置
### 1.1.2 次随机实验的统计结果
由于可选择的参数较多,这里的演示为指定了部分模式和参数来进行比较。不建议使用基于优化的收敛准则,因为需要指定阈值和迭代步数,在未知目标值范围的情况下随意迭代难以找到理想的解,有可能无法跳出循环。(改进思路:或许可以采用自适应阈值的算法。)
如图 1.1.2, 修改外循环迭代次数,依次为 50、100、150。在状态转换步骤中,即使新状态并非最优,也有一定的概率可以跳转到新状态上。在这里,外循环迭代次数设置得不宜过高,因为最终温度会变得非常小,导致跳转概率的计算超过计算机所能存储的 64 位,故在退温步骤中设置温度不能小于 1e-4。
在迭代次数为 50 时,20 次循环也找不到最小值;迭代次数为 100 和 150 时能够找到最小值,说明适当增加迭代次数有助于进行更大范围的搜索;但 150 次的平均性能未必比 100 次好,找到的最差解和平均解都不如 100 次。这可能是因为在循环中设置了温度的下限,在 (130,150] 次中进行迭代时,温度一直被限制在 1e-4, 使得在出现了性能并非更优的解时的跳转概率很大,即无论解如何都要跳转,导致性能相对于 100 次时发生下降。
### 1.1.3 目标函数的变化曲线
如图 8,算法在 35 个回合之后趋向于收敛。
![04dd9bc9b8b6be932076167814281c38.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708228699349-7b435fab-fa9a-4a19-8664-9d18f8b4bea4.png#averageHue=%23f3f3f3&clientId=u193506b0-0914-4&from=paste&height=538&id=ua94b7ab7&originHeight=672&originWidth=587&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=64790&status=done&style=none&taskId=u3a9102b4-d4b5-4e17-89e2-05296b17fa1&title=&width=469.6)
图 4: 模拟退火算法流程图
![eb0666fc4f7ad29fa16689fd26b6d928.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708228714489-ee3ae3b0-f7cd-4f18-9ed1-716431f93151.png#averageHue=%23f4f4f4&clientId=u193506b0-0914-4&from=paste&height=426&id=u5bbe54b5&originHeight=532&originWidth=1322&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=113577&status=done&style=none&taskId=u11893197-cd9a-41eb-900b-6f5eb653aff&title=&width=1057.6)
图 5: 外循环迭代 50 次
![aca8f7546d26f6516e343a24e39f48fb.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708228729094-4cd8de00-b1bb-43a6-99d6-da19db2ac9ec.png#averageHue=%23f4f4f4&clientId=u193506b0-0914-4&from=paste&height=431&id=ua35bc35b&originHeight=539&originWidth=1311&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=120637&status=done&style=none&taskId=u975bf18b-6189-400c-a646-2c822b61eb8&title=&width=1048.8)
图 6: 外循环迭代 100 次
![a2cd8c579315c551e5b86e6ed3446b50.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708228743946-c12107ef-92f6-437a-acc6-40110e131490.png#averageHue=%23f4f4f4&clientId=u193506b0-0914-4&from=paste&height=432&id=ua6806b85&originHeight=540&originWidth=1325&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=122088&status=done&style=none&taskId=ued0ca031-6d2b-4539-8952-7fdc77d557f&title=&width=1060)
图 7: 外循环迭代 150 次
![603d8935771edf9fea9f0f2a2b43079d.png](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708228757007-cc5b8342-c33e-4df8-83fc-3cd7dbf0e18a.png#averageHue=%23fafafa&clientId=u193506b0-0914-4&from=paste&height=282&id=u9d2b5a57&originHeight=352&originWidth=1341&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=47453&status=done&style=none&taskId=u1c6b2d57-9571-4ba1-9fea-804fc53542a&title=&width=1072.8)图 8: 连续优化问题,SA, 目标函数的变化曲线
## 1.2 GA 算法
### 1.2.1 编码
遗传算法需要对问题的解进行编码,对此,我们使用 32 位二进制码表示问题的解,前 16 位表示 x0,后 16 位表示 x1。x0,x1 的取值范围都为 [10,10],使用 16 位二进制码表示可以使解精确到小数点后 3 位。二进制码 [S]2 与实数 x 的关系为�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010267 智能优化算法大作业,使用GA和SA求解函数优化问题和TSP问题 GA_algorithm:GA算法框架,被main_f_min.py和main_TSP.py调用 SA_algorithm:SA算法框架,被main_f_min.py调用 main_f_min.py:函数优化问题主文件,可使用GA或SA算法,同时可以指定两种算法所用参数 main_TSP.py:TSP问题主文件,同上
资源推荐
资源详情
资源评论
收起资源包目录
100010267-基于Python实现GA和SA求解函数优化问题及TSP问题.zip (32个子文件)
functionoptimization-tsp
简介.md 1KB
main_TSP.py 23KB
GA_algorithm.py 4KB
SA_algorithm.py 8KB
LICENSE 1KB
TSP_points
BEN50-XY.txt 296B
BEN30-XY.txt 178B
BEN75-XY.txt 443B
main_f_min.py 9KB
__pycache__
GA_algorithm.cpython-36.pyc 3KB
报告.pdf 3.81MB
ui
GA_algorithm.py 8KB
SA_algorithm.py 13KB
TSP_points
BEN50-XY.txt 296B
BEN30-XY.txt 178B
BEN75-XY.txt 443B
ui_TSP.py 24KB
.idea
ui.iml 284B
vcs.xml 183B
misc.xml 304B
inspectionProfiles
profiles_settings.xml 174B
modules.xml 256B
.gitignore 176B
ui.spec 938B
__pycache__
ui_userDefine.cpython-36.pyc 7KB
ui_TSP.cpython-36.pyc 16KB
SA_algorithm.cpython-36.pyc 6KB
GA_algorithm.cpython-36.pyc 5KB
ui.cpython-36.pyc 1KB
ui.py 921B
README.md 29KB
draw_f.m 76B
共 32 条
- 1
资源评论
- RisingGO2024-01-03资源内容详细全面,与描述一致,对我很有用,有一定的使用价值。
神仙别闹
- 粉丝: 2687
- 资源: 7642
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功