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 || (mat(k,3) ~= fopt) flag = true; break; end end % 如果不相同,则将结果存入矩阵中 if ~flag mat = [mat; xopt, yopt, fopt]; end end % 如果矩阵已经有18行,则退出循环 if size(mat, 1) == 18 break; end end % 输出矩阵 disp(mat);


原文地址: https://www.cveoy.top/t/topic/nrSg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录