24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1645  |  回复: 2

xdzhangchao

金虫 (小有名气)

[求助] matlab中ga函数的问题已有2人参与

本人在利用matlab自带ga函数进行某优化时,设计变量个数为3个,约束为不等式约束(无设计变量上下限),种群大小为6,交叉率取0.92,算了20代发现
没一代的最优值和平均值完全一样,且随着代数的推移没有发生改变。进而查找原因发现,在计算过程中,每一代中的6组设计变量取得完全一样!!!请问
这是怎么回事啊,不是随机搜索吗?为什么每一代的种群会取得完全一样呢?

不知道有没有虫友碰到过类似的情况,求指教!求支招!
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

https://www.mathworks.com/help/gads/ga.html

Examples:
A = [1 1; -1 2; 2 1];
b = [2; 2; 3];
lb = zeros( 2,1 );
[x,fval,exitflag] = ga( @lincontest6,...
    2,A,b,[],[],lb )
Optimization terminated: average change in the fitness value less than options.TolFun.

x =
    0.6670    1.3340

fval =
   -8.2258

exitflag =
     1
2楼2016-08-04 07:41:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guokeqin

金虫 (正式写手)

【答案】应助回帖

可能有几个方面原因:
1、你选的函数有问题,优化函数。
2、种群的大小太小,你可以把数值提升到100,这样就能够增加种群数量,扩大搜索范围;
3、交叉率选的较高,你修改为0.8试试,0.92太高,种群的多样性遭到破坏,降低该数值有利于降低得到局部最优解的可能。
4、可以通过选择精英后代的保留个数控制传递到下一代的数量。
3楼2016-09-09 08:45:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xdzhangchao 的主题更新
信息提示
请填处理意见