循环1000次xopt yopt fopt = PSOShubert np maxiter bounds每次产生三个数三个数存入到矩阵中矩阵中的数需要不满足abs globk1 - xopt eps && absglobk2 - yopt eps && absglobk3 - fopt eps矩阵的行数为存入矩阵的次数将矩阵进行输出
mat = []; % 初始化矩阵 eps = 1e-6; % 设置eps值 for i = 1:1000 [xopt, yopt, fopt] = PSO(@Shubert, np, maxiter, bounds); % 调用PSO函数 if isempty(mat) % 如果矩阵为空,直接将结果存入矩阵中 mat = [xopt, yopt, fopt]; else % 判断当前结果是否和矩阵中已有的结果相同 flag = false; for k = 1:size(mat, 1) if abs(mat(k,1) - xopt) < eps && abs(mat(k,2) - yopt) < eps && abs(mat(k,3) - fopt) < eps flag = true; break; end end % 如果不相同,则将结果存入矩阵中 if ~flag mat = [mat; xopt, yopt, fopt]; end end end % 输出矩阵 disp(mat)
原文地址: https://www.cveoy.top/t/topic/cfxN 著作权归作者所有。请勿转载和采集!