中易网

MATLAB遗传算法,明明之前是可以运行求出结果的,今天运行却不行了

答案:2  悬赏:20  
解决时间 2021-11-21 15:50
function main
clc;clear;
objectivefunction=@fitness;
nvars=64;
%cf=@c;
[x,f]=ga(objectivefunction,nvars,[],[],[],[],[],[],[]);
end
function z=fitness(x)
degree=[4 6 8 5];
n=2;
NV=3;
for s=1:2
for i=1:1:n
for j=1:1:NV+1
for k=1:1:NV+1
a(k,j,i,s)=x((NV+1)^2*n*(s-1)+(NV+1)^2*(i-1)+(NV+1)*(j-1)+k)/degree(k);
end
end
end
end
z=-sum(sum(sum(sum(a(:,:,:,1).*a(:,:,:,2)/3))));
end
这个前两天倒还是可以运行的,能得到结果,今天刚开始也能运行,后来再运行时就出现了下面的提示
Optimization terminated: maximum number of generations exceeded.
不知道是什么问题,愁死了,大神指点下啊
最佳答案
迭代次数超过的最大的迭代次数。遗传算法本身就是不稳定的,所以有时可以有时不行。建议1)结合实际问题,把无约束的ga改成带有约束的,然后再去迭代。或者调整遗传代数。2)修改适应度函数fitness四层循环,matlab本身就不善于干这个的,尽量把元素运算改成矩阵运算3)变量64个有点多,可以考虑减少一些变量,否则运行太慢了。
全部回答
超过了最大迭代次数 options = gaoptimset('generations',10000); [x,f]=ga(objectivefunction,nvars,[],[],[],[],[],[],[],options); matlab 7.8.0 再看看别人怎么说的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
敢死的意思是什么啊?请解释下!
金庸小说最厉害的十大人物是哪些?求按武功高
适合幼儿朗诵的诗歌
飒漫的妃夕妍雪是根据小说改编的吗?
全国有多少人叫罗仁旺
怎样保养皮肤,春天里吃什么蔬菜或水果适意?
车子原地停着开空调不熄火对车有什么影响
宁南的意思是什么啊?请解释下!
5个月宝宝拉豆拉肚一直不好怎么办?
难道重庆的青少年儿童心理专家除了陈志林,就
我工作2年多,没什么钱,花6千考个ITIL或COBI
推荐最最有效的减肥茶
集资建房办房产证如何办理?
哪个网址可以查出海渔船信息
为什么魅族mx4pro手机铃声自动更换
推荐资讯
马鞍山有哪些地方可以玩的?
ucc洗衣会所地址好找么,我有些事要过去
远方的朋友尊贵的客人献上洁白的哈达是什么歌
黄河是中华人民的摇篮是什么句?
2x分之一是增函数还是减函数
Amerian是元音开头么
冠珠瓷砖是一线品牌吗
复方木鸡颗粒价格大概多少?在广州哪里可以买
沈阳群升防盗门售价高不高?
八仙花什么时候开花
客厅装修图片 颜色搭配技巧
处男第一次女人会怀孕吗
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?