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