尝试将主体代码和函数做出相应修改,但是不能运行,显示“函数或变量 'best_individual'无法识别。”。
% 这是initpop_generate函数,主体也做出了相应修改
function initpop = initpop_generate(popsize,S1,S2,S4,S3,P,T)
% 编码长度(权值/阈值总个数)
S = S1*S2 + S2*S4 + S4*S3 + S2 + S4 + S3;
% 预分配初始种群数组
initpop = zeros(popsize,S+1);
for i = 1:popsize
% 随机产生一个个体[-1,1]
x = rand(1,S)*2 - 1;
% 输入层与隐含1层间权值
temp = x(1:S1*S2);
W1 = reshape(temp,S2,S1);
% 隐含1、2层间权值
temp = x(S1*S2+1:S1*S2+S2*S4)
W2 = reshape(temp,S4,S2);
% 隐含2层与输出层间权值
temp = x(S1*S2+S2*S4+1:S1*S2+S2*S4+S4*S3);
W3 = reshape(temp,S3,S4);
% 隐含1层神经元阈值
temp = x(S1*S2+S2*S4+S4*S3+1:S1*S2+S2*S4+S4*S3+S2);
B1 = reshape(temp,S2,1);
%隐含2层神经元阈值
temp = x(S1*S2+S2*S4+S4*S3+S2+1:S1*S2+S2*S4+S4*S3+S2+S4);
B2 = reshape(temp,S4,1);
%输出层神经元阈值
temp = x(S1*S2+S2*S4+S4*S3+S2+S4+1:end);
B3 = reshape(temp,S3,1);
% 计算隐含1层神经元的输出
A1 = tansig(W1*P,B1);
% 计算隐含2层神经元的输出
A2 = tansig(W2*A1,B2);
% 计算输出层神经元的输出
A3 = purelin(W3*A2,B3);
% 计算均方误差
SE = mse(T-A3);
% 思维进化算法的得分
val = 1 / SE;
% 个体与得分合并
initpop(i,:) = [x val];
end