shagirl 发表于 2007-1-5 11:51

急问:怎么设置遗传算法处理隐含约束条件

如果目标函数里有开根号或反余弦的,怎么做啊;即使用惩罚函数做不了,他无法改变你的目标函数,只能处理显性条件。
如:f(x1,x2)=4*x2*acos(x1)+5**x1*acos(x2)怎么求极小值啊

因为在matlab里面负数开方是虚数,当A>1或A<-1时,acos(A)也是虚数,唉真不知道怎么办?

在线等啊,请高人发表建议。

谢谢

[ 本帖最后由 xinyuxf 于 2007-7-25 15:16 编辑 ]

风花雪月 发表于 2007-1-5 15:56

增加约束

shagirl 发表于 2007-1-7 10:26

回复 #2 风花雪月 的帖子

增加约束,怎么处理呢!可以设置-1<A<1,可是怎么处理?如果用惩罚函数法, 即使不满足条件遗传算法也要算它的适应度,这样适应度就出现虚数了!
F(X)=f(X)+g1X)+g2(X)....

即使多增加几个g(x)约束条件,f(X)还是要计算g(X)不满足条件的值

怎么办

还是我理解错了?

心灯 发表于 2007-1-7 12:39

原帖由 shagirl 于 2007-1-7 10:26 发表
增加约束,怎么处理呢!可以设置-1<A<1,可是怎么处理?如果用惩罚函数法, 即使不满足条件遗传算法也要算它的适应度,这样适应度就出现虚数了!
F(X)=f(X)+g1X)+g2(X)....

即使多增加几个g(x)约束条件 ...

不满足条件的时候强制适应度函数改变,因为不满足条件的情况不满足优化的要求,所以可以给它一个很低的适应度进行惩罚,从而在下一代优化过程中被选择的概率减小,避免对满足要求的解造成大的干扰。

shagirl 发表于 2007-1-15 16:31

非常感谢,问题解决
页: [1]
查看完整版本: 急问:怎么设置遗传算法处理隐含约束条件