请问如何将思维进化—BP算法改为多隐含层

搜到的思维进化算法都是以单隐含层为例,想修改为多隐含层。

尝试将主体代码和函数做出相应修改,但是不能运行,显示“函数或变量 '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);
    
    % 隐含12层间权值
    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

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果