已亲测:最优化算法的核心思想与程序例子

已亲测:最优化算法的核心思想与程序例子,第1张

蒙特卡洛: 大量随机抽样下的比对,最后结果就是在当前抽样数量下筛选出的一定是最想要的那个结果。举例:假如篮子里有1000个苹果(你定的测试集),让你 每次闭着眼睛找一个最大的,可以不限制挑选次数;于是,你可以闭着眼随机拿了一个,然后再随机拿一个与第一个比,留下大的;再随机拿一个,与前次留下的比较,又 可以留下大的;循环往复这样:拿的次数越多,挑出最大苹果的可能性也就越大!但除非你把1000个苹果都挑一遍,否则你无法肯定最终挑出来的就是最大的一个。如果有 10000个苹果的话,继续如此说不定就能找到更大的!

模拟退火 :“渐渐”清楚自己的目标是什么!并不断朝“越发”明确的目标迈进,“越来越”不被诱惑干扰。举例:为了找出地球上最高的山,一只兔子在开始并没有 合适的策略,它随机地跳了很长时间!在这期间,它可能走向高处,也可能踏入平地或沟壑。但是,随着时间的流逝,它“渐渐清醒”! 并“直直地”朝着最高的方向跳去, 最后就到达了珠穆朗玛峰。

粒子群 :信息的社会共享,以一个团队的形式来搜索!团队里成员信息共享,共同进步;避免一个人工作时出现目光短浅,没有全局意识。举例:就像下围棋,只 专注于一个角落的战斗不一定能获取最终的胜利,只有放眼全局,把所有己方的棋子都盘活,相互间彼此帮助,才能获得最后胜利。

蚁群 :和粒子群算法有些相似,都是靠团队的力量共同去找目标!蚁群算法中特殊的是它的"信息素"挥发! 这个效果是其他算法中没有的!

以上所有的最优化算法都很难做到极高的精度,这是必然的: 一是 因为全局搜索已经耗费了大量的时间和资源,再过分强调精度有些不经济; 二是 因为全局搜索得到的最值可以理解为一精确最值的一个准确范围!即进入这个范围再进行精确的搜索一定可以找到精确最值;但是,全局最优的核心是随机/概率,当进入一个准确范围时,这个范围肯定是很小的,如果之后精确搜索还用全局搜索的概率参数(此时来说波动范围太大了),很可能又会跳出这个好不容易找到的精确区域!

因此: 全局最优算法与局部最优算法是要相结合的 !全局最优算法负责划定最值所在的一个精确的、较小的范围内,即告诉局部最优算法在这个范围内继续找一定可以找到精确解;局部最优算法按照较小的步长、较高的精度继续搜索精确最值。

常用全局最优算法:蒙特卡洛(MC)、模拟退火(SA)、粒子群(PSO)、蚁群(AG);

常用局部最优算法:梯度下降法、牛顿法、阻尼牛顿法、共轭梯度法;

推荐搭配1:蒙特卡洛

推荐搭配2:粒子群 + 梯度下降

推荐搭配3:蚁群 + 梯度下降 + 重检机制

以上提到算法的 “程序 + 详细使用说明” 参考以下地址:

优化算法

PSO的接口楼上已经说了,我跟你说下关于你的图像聚类的问题怎么选适应度函数,聚类的目的一般是选出C个质心,采用近邻原则通过C个质心对样本点进行聚类。

所以关于你的问题,首先要确定你想聚类成几类,假设为C类

初始化每个粒子的位置向量为C个质心的位置(假设你的样本维数D,初始化每一个粒子为一个CD的向量)

适应度函数:计算每个样本点到C个质心的位置,选择最短的距离,假设d,计算所有样本的距离d相加,这就是适应度函数

1、我在多个版本下进行过测试,情况不尽相同。其中在某个版本的确出现过一次这个问题,但后来一直未能复现那个现象,所以未能进一步分析。

2、大致看了一下程序的思想:这个程序通过粒子群方法对几个增益系数进行优化,目标函数通过对模型仿真足够长的时间求积分型性能指标ITAE,而模型本身则又通过模糊逻辑对PID控制系数进行调整。

程序的绝大多数运行时间都消耗在调用Simulink模型进行仿真上。从我电脑上的情况看,运行一次仿真有时需要十几分钟,有时甚至十几个小时都没结束(与待优化的几个增益系数取值有关),而根据主程序pso的参数设置,每一代迭代就需要调用粒子群规模的次数30,最多可能迭代50代,也就是最多可能仿真1500次。这样很自然会造成一直不停的运行,而如果强制停止运行,很自然就是位于调用Simulink进行仿真的那行代码上。

3、对于题主现在的程序,我有几点疑问:

(1)当前的模型使用了FLS,然后用pso方法进行优化,是否有比较可信的文献支撑?仅就对这个系统进行控制来说,总感觉有点把简单问题复杂化了,应该有更简单的做法。希望题主能提供更多的一些背景资料(例如主要参考文献)。

(2)模型中存在一些比较可疑甚至错误的地方。例如,使用Derivative模块提供微分信号是不可靠的做法,而FLC模块前应该用Mux而不是Add(这个错误是致命的,可能求解时间过长的原因主要就是它,我没进一步研究)。

(3)PID系数相当于都叠加了一个基准,这种做法的必要性及其来源?

聚类可以理解为根据你划定的半径取圈样本,圈出几类就是几类,半径大类就少,半径小类就多。中心选择可以随机选取,那就是无监督算法,现在有一种半监督算法,先用少量标记好的样本产生一些类别作为聚类中心,指导聚类的过程。可以使用kmeans和SVM结合

以上就是关于已亲测:最优化算法的核心思想与程序例子全部的内容,包括:已亲测:最优化算法的核心思想与程序例子、哪位大神指点一下粒子群优化算法(PSO)的输入和输入分别是什么、粒子群优化模糊PID控制的量化因子和比例因子出现问题请问能帮忙看看么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10170335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存