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.
不知道是什么问题,愁死了,大神指点下啊
MATLAB遗传算法,明明之前是可以运行求出结果的,今天运行却不行了
答案:2 悬赏:20
解决时间 2021-11-21 15:50
- 提问者网友:故事与他
- 2021-11-20 17:25
最佳答案
- 二级知识专家网友:桑稚给你看
- 2021-11-20 19:00
迭代次数超过的最大的迭代次数。遗传算法本身就是不稳定的,所以有时可以有时不行。建议1)结合实际问题,把无约束的ga改成带有约束的,然后再去迭代。或者调整遗传代数。2)修改适应度函数fitness四层循环,matlab本身就不善于干这个的,尽量把元素运算改成矩阵运算3)变量64个有点多,可以考虑减少一些变量,否则运行太慢了。
全部回答
- 1楼网友:迷人小乖乖
- 2021-11-20 20:25
超过了最大迭代次数
options = gaoptimset('generations',10000);
[x,f]=ga(objectivefunction,nvars,[],[],[],[],[],[],[],options);
matlab 7.8.0
再看看别人怎么说的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯