2个回答
展开全部
对粒子群的约束问题涉及的比较少。这儿摘抄下百度百科的内容:
PSO算法推广到约束优化问题,分为两类:(http://baike.baidu.com/view/1531379.htm)
(1)罚函数法。罚函数的目的是将约束优化问题转化成无约束优化芦镇晌问题。
(2)将粒子群的搜索范围都限制在条件约束簇内,即在可行解范围内寻优。
第一种方法有相关论文,看了下,感觉比较适合等式约束情况,比较类似于在适应度函数中加入拉格朗日乘子的做法,如果论文下不到的话,请留言。
第二种做法倒是用过。大概讲下。
针对你的问题,初始化两维向量,但是由于存在不等式约束,所以考虑先初始化向量的第一维,然后动态算出第二维的范围,随机出第二维变量。然后就是计算适应度值,全局、局部最优。
更新过程一样,先更新第一维变量,然后动态计算第二维的旅凳范围,更新第二维,如果更新后超过了边界,则取边界值(陪锋或者也可以再次重新更新,直到满足条件,直觉上感觉第一种还好点,第二种可能会出现无法更新的情况),更新完毕后,计算适应度,更新全局、局部最优解。
补充两个链接吧
http://download.csdn.net/detail/yinjian_2004/1567342
论文:基于改进粒子群优化算法的约束多目标优化
PSO算法推广到约束优化问题,分为两类:(http://baike.baidu.com/view/1531379.htm)
(1)罚函数法。罚函数的目的是将约束优化问题转化成无约束优化芦镇晌问题。
(2)将粒子群的搜索范围都限制在条件约束簇内,即在可行解范围内寻优。
第一种方法有相关论文,看了下,感觉比较适合等式约束情况,比较类似于在适应度函数中加入拉格朗日乘子的做法,如果论文下不到的话,请留言。
第二种做法倒是用过。大概讲下。
针对你的问题,初始化两维向量,但是由于存在不等式约束,所以考虑先初始化向量的第一维,然后动态算出第二维的范围,随机出第二维变量。然后就是计算适应度值,全局、局部最优。
更新过程一样,先更新第一维变量,然后动态计算第二维的旅凳范围,更新第二维,如果更新后超过了边界,则取边界值(陪锋或者也可以再次重新更新,直到满足条件,直觉上感觉第一种还好点,第二种可能会出现无法更新的情况),更新完毕后,计算适应度,更新全局、局部最优解。
补充两个链接吧
http://download.csdn.net/detail/yinjian_2004/1567342
论文:基于改进粒子群优化算法的约束多目标优化
更多追问追答
追问
谢谢你耐心的回答,算法我是了解的。但是到具体的程序实现,我实在做不出结果。就是想求一个类似的程序研究,不知道你能帮我找到不,财富我可以再加。谢谢
追答
程序我没有啊,你可以看看csdn的链接,另外,关于第二个方法,你只需要编写一个关于x1 求解x2范围的函数就可以了,这个很简单吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询