用粒子群算法求解线性约束整数规划的Matlab程序

不会写,想找一个来参考下。不知道有人会不?比如像这样的规划问题。

对粒子群的约束问题涉及的比较少。这儿摘抄下百度百科的内容:

PSO算法推广到约束优化问题,分为两类:(http://baike.baidu.com/view/1531379.htm
(1)罚函数法。罚函数的目的是将约束优化问题转化成无约束优化问题。
(2)将粒子群的搜索范围都限制在条件约束簇内,即在可行解范围内寻优。

第一种方法有相关论文,看了下,感觉比较适合等式约束情况,比较类似于在适应度函数中加入拉格朗日乘子的做法,如果论文下不到的话,请留言。

第二种做法倒是用过。大概讲下。
针对你的问题,初始化两维向量,但是由于存在不等式约束,所以考虑先初始化向量的第一维,然后动态算出第二维的范围,随机出第二维变量。然后就是计算适应度值,全局、局部最优。
更新过程一样,先更新第一维变量,然后动态计算第二维的范围,更新第二维,如果更新后超过了边界,则取边界值(或者也可以再次重新更新,直到满足条件,直觉上感觉第一种还好点,第二种可能会出现无法更新的情况),更新完毕后,计算适应度,更新全局、局部最优解。

补充两个链接吧
http://download.csdn.net/detail/yinjian_2004/1567342
论文:基于改进粒子群优化算法的约束多目标优化追问

谢谢你耐心的回答,算法我是了解的。但是到具体的程序实现,我实在做不出结果。就是想求一个类似的程序研究,不知道你能帮我找到不,财富我可以再加。谢谢

追答

程序我没有啊,你可以看看csdn的链接,另外,关于第二个方法,你只需要编写一个关于x1 求解x2范围的函数就可以了,这个很简单吧

追问

唉,程序难了,怎么写都不对。我会认真考虑你的想法,等有结果了,再来答复。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-30
不知道这样可以不,虽然你说这个什么法那个什么法的我不懂唉
2×(2x1+3x2≤2000)- (4x1+x2≤3000)
然后弄出来的是:5x2≤1000
所以x2≤200
然后x1可以为700
正好啊
哈O(∩_∩)O哈!追问

谢谢你的回答。这只是个例子,主要需要程序方面的参考。答案不重要。。。。