用粒子群算法 求解带约束的问题。适应度函数怎么来写? 引入罚函数的目标函数,罚因子怎么来选取变化?

matlab编程。多个约束条件怎么处理?引入罚函数的适应度函数怎么编程实现?回答满意有加分求高手指点!谢谢... matlab 编程。多个约束条件怎么处理?引入罚函数的 适应度函数 怎么编程实现?
回答满意 有加分 求高手指点!谢谢
展开
 我来答
小七的风
2012-12-25 · TA获得超过877个赞
知道小有建树答主
回答量:672
采纳率:50%
帮助的人:536万
展开全部
等了这么长时间也没看见有人回答,建议楼主还是多去看看论文,有一些论文里讲了用粒子群求解多约束的问题
追问
呵呵,谢谢。遇到一些问题,论文里不透露。再看看吧
追答
我也在用粒子群,不过还不是多约束的,帮不了你了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
babysupermen
2018-03-13
知道答主
回答量:1
采纳率:0%
帮助的人:889
展开全部
我用的外罚函数法,修改fitness函数,在可行域之外的施以惩罚,望采纳加分,我也研究好久的,成果不易
function F= fitness(x)
if -2*x(1)-x(2)+10>=0 && x(1)-5*x(2)+6>=0&&3-3*x(1)+2*x(2)>=0
F=-12*x(1)-9*x(2);
else if -2*x(1)-x(2)+10<0 && x(1)-5*x(2)+6>=0&&3-3*x(1)+2*x(2)>=0
deta=100;
F=-12*x(1)-9*x(2)+deta*(-2*x(1)-x(2)+10)^2;
else if -2*x(1)-x(2)+10>=0 && x(1)-5*x(2)+6<0&&3-3*x(1)+2*x(2)>=0
deta=100;
F=-12*x(1)-9*x(2)+deta*(x(1)-5*x(2)+6)^2;
else if -2*x(1)-x(2)+10>=0 && x(1)-5*x(2)+6>=0&&3-3*x(1)+2*x(2)<0
deta=100;
F=-12*x(1)-9*x(2)+deta*(3-3*x(1)+2*x(2))^2;
else if -2*x(1)-x(2)+10<0 && x(1)-5*x(2)+6<0&&3-3*x(1)+2*x(2)>=0
deta=100;
F=-12*x(1)-9*x(2)+deta*((-2*x(1)-x(2)+10)^2+(x(1)-5*x(2)+6)^2);
else if -2*x(1)-x(2)+10<0 && x(1)-5*x(2)+6>=0&&3-3*x(1)+2*x(2)<0
deta=100;
F=-12*x(1)-9*x(2)+deta*((-2*x(1)-x(2)+10)^2+(3-3*x(1)+2*x(2))^2);
else if -2*x(1)-x(2)+10>=0 && x(1)-5*x(2)+6<0&&3-3*x(1)+2*x(2)<0
deta=100;
F=-12*x(1)-9*x(2)+deta*((x(1)-5*x(2)+6)^2+(3-3*x(1)+2*x(2))^2);
else if -2*x(1)-x(2)+10<0 && x(1)-5*x(2)+6<0&&3-3*x(1)+2*x(2)<0
deta=100;
F=-12*x(1)-9*x(2)+deta*((-2*x(1)-x(2)+10)^2+(x(1)-5*x(2)+6)^2+(3-3*x(1)+2*x(2))^2);
end
end
end
end
end
end
end
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式