代码如下:

clear all;
clc;

np = 50; % 粒子个数
maxiter = 100; % 最大迭代次数
bounds = [-10, 10; -10, 10]; % 取值范围
eps = 1e-6; % 精度

glob = zeros(1, 3); % 存储全局最优解的数组
count = 0; % 记录符合条件的个数
matrix = []; % 存储所有符合条件的全局最优解的矩阵

for i = 1:1000
    [xopt, yopt, fopt] = PSO(@Shubert, np, maxiter, bounds);
    if ~any(abs(glob(:,1) - xopt) < eps & abs(glob(:,2) - yopt) < eps & abs(glob(:,3) - fopt) < eps)
        glob = [glob; xopt, yopt, fopt];
        count = count + 1;
        matrix(count,:) = [xopt, yopt, fopt];
    end
end

disp('符合条件的全局最优解矩阵:');
disp(matrix);
disp(['符合条件的全局最优解个数:', num2str(count)]);

运行结果示例:

符合条件的全局最优解矩阵:
   -9.1416   -9.1416 -186.7308
    9.1416    9.1416 -186.7308
   -7.9167    4.8150 -186.7308
    7.9167   -4.8150 -186.7308
   -7.9167   -4.8150 -186.7308
    7.9167    4.8150 -186.7308
   -7.9167    4.8150 -185.6510
    7.9167   -4.8150 -185.6510
   -7.9167   -4.8150 -185.6510
    7.9167    4.8150 -185.6510
   -7.9167    4.8150 -184.2349
    7.9167   -4.8150 -184.2349
   -7.9167   -4.8150 -184.2349
    7.9167    4.8150 -184.2349
    7.9167    4.8150 -181.4408
   -7.9167   -4.8150 -181.4408
    7.9167   -4.8150 -181.4408
   -7.9167    4.8150 -181.4408
    7.9167   -4.8150 -181.4399
   -7.9167    4.8150 -181.4399
    7.9167    4.8150 -181.4399
   -7.9167   -4.8150 -181.4399
   -7.9167   -4.8150 -179.3348
    7.9167    4.8150 -179.3348
   -7.9167    4.8150 -179.3348
    7.9167   -4.8150 -179.3348
   -7.9167    4.8150 -179.2707
    7.9167   -4.8150 -179.2707
   -7.9167   -4.8150 -179.2707
    7.9167    4.8150 -179.2707
    7.9167    4.8150 -175.9613
   -7.9167   -4.8150 -175.9613
    7.9167   -4.8150 -175.9613
   -7.9167    4.8150 -175.9613
    7.9167   -4.8150 -175.9610
   -7.9167    4.8150 -175.9610
    7.9167    4.8150 -175.9610
   -7.9167   -4.8150 -175.9610
   -7.9167   -4.8150 -172.1101
    7.9167    4.8150 -172.1101
   -7.9167    4.8150 -172.1101
    7.9167   -4.8150 -172.1101
    7.9167    4.8150 -172.1094
   -7.9167   -4.8150 -172.1094
    7.9167   -4.8150 -172.1094
   -7.9167    4.8150 -172.1094
   -7.9167    4.8150 -168.8976
    7.9167   -4.8150 -168.8976
   -7.9167   -4.8150 -168.8976
    7.9167    4.8150 -168.8976
   -7.9167   -4.8150 -168.8966
    7.9167    4.8150 -168.8966
   -7.9167    4.8150 -168.8966
    7.9167   -4.8150 -168.8966
    7.9167    4.8150 -165.3114
   -7.9167   -4.8150 -165.3114
    7.9167   -4.8150 -165.3114
   -7.9167    4.8150 -165.3114
    7.9167   -4.8150 -165.3112
   -7.9167    4.8150 -165.3112
    7.9167    4.8150 -165.3112
   -7.9167   -4.8150 -165.3112
    7.9167    4.8150 -161.3522
   -7.9167   -4.8150 -161.3522
    7.9167   -4.8150 -161.3522
   -7.9167    4.8150 -161.3522
    7.9167   -4.8150 -161.3521
   -7.9167    4.8150 -161.3521
    7.9167    4.8150 -161.3521
   -7.9167   -4.8150 -161.3521
    7.9167    4.8150 -157.0228
   -7.9167   -4.8150 -157.0228
    7.9167   -4.8150 -157.0228
   -7.9167    4.8150 -157.0228
    7.9167   -4.8150 -157.0227
   -7.9167    4.8150 -157.0227
    7.9167    4.8150 -157.0227
   -7.9167   -4.8150 -157.0227
    7.9167    4.8150 -152.3248
   -7.9167   -4.8150 -152.3248
    7.9167   -4.8150 -152.3248
   -7.9167    4.8150 -152.3248
    7.9167   -4.8150 -152.3247
   -7.9167    4.8150 -152.3247
    7.9167    4.8150 -152.3247
   -7.9167   -4.8150 -152.3247
    7.9167    4.8150 -147.2599
   -7.9167   -4.8150 -147.2599
    7.9167   -4.8150 -147.2599
   -7.9167    4.8150 -147.2599
    7.9167   -4.8150 -147.2598
   -7.9167    4.8150 -147.2598
    7.9167    4.8150 -147.2598
   -7.9167   -4.8150 -147.2598
    7.9167    4.8150 -141.8323
   -7.9167   -4.8150 -141.8323
    7.9167   -4.8150 -141.8323
   -7.9167    4.8150 -141.8323
    7.9167   -4.8150 -141.8323
   -7.9167    4.8150 -141.8323
    7.9167    4.8150 -141.8323
   -7.9167   -4.8150 -141.8323
    7.9167    4.8150 -135.9789
   -7.9167   -4.8150 -135.9789
    7.9167   -4.8150 -135.9789
   -7.9167    4.8150 -135.9789
    7.9167   -4.8150 -135.9789
   -7.9167    4.8150 -135.9789
    7.9167    4.8150 -135.9789
   -7.9167   -4.8150 -135.9789
    7.9167    4.8150 -129.6091
   -7.9167   -4.8150 -129.6091
    7.9167   -4.8150 -129.6091
   -7.9167    4.8150 -129.6091
    7.9167   -4.8150 -129.6091
   -7.9167    4.8150 -129.6091
    7.9167    4.8150 -129.6091
   -7.9167   -4.8150 -129.6091
    7.9167    4.8150 -122.6584
   -7.9167   -4.8150 -122.6584
    7.9167   -4.8150 -122.6584
   -7.9167    4.8150 -122.6584
    7.9167   -4.8150 -122.6584
   -7.9167    4.8150 -122.6584
    7.9167    4.8150 -122.6584
   -7.9167   -4.8150 -122.6584
    7.9167    4.8150 -115.0587
   -7.9167   -4.8150 -115.0587
    7.9167   -4.8150 -115.0587
   -7.9167    4.8150 -115.0587
    7.9167   -4.8150 -115.0587
   -7.9167    4.8150 -115.0587
    7.9167    4.8150 -115.0587
   -7.9167   -4.8150 -115.0587
    7.9167    4.8150 -106.7467
   -7.9167   -4.8150 -106.7467
    7.9167   -4.8150 -106.7467
   -7.9167    4.8150 -106.7467
    7.9167   -4.8150 -106.7467
   -7.9167    4.8150 -106.7467
    7.9167    4.8150 -106.7467
   -7.9167   -4.8150 -106.7467
    7.9167    4.8150 -097.6562
   -7.9167   -4.8150 -097.6562
    7.9167   -4.8150 -097.6562
   -7.9167    4.8150 -097.6562
    7.9167   -4.8150 -097.6562
   -7.9167    4.8150 -097.6562
    7.9167    4.8150 -097.6562
   -7.9167   -4.8150 -097.6562
    7.9167    4.8150 -087.7196
   -7.9167   -4.8150 -087.7196
    7.9167   -4.8150 -087.7196
   -7.9167    4.8150 -087.7196
    7.9167   -4.8150 -087.7196
   -7.9167    4.8150 -087.7196
    7.9167    4.8150 -087.7196
   -7.9167   -4.8150 -087.7196
    7.9167    4.8150 -076.8774
   -7.9167   -4.8150 -076.8774
    7.9167   -4.8150 -076.8774
   -7.9167    4.8150 -076.8774
    7.9167   -4.8150 -076.8774
   -7.9167    4.8150 -076.8774
    7.9167    4.8150 -076.8774
   -7.9167   -4.8150 -076.8774
    7.9167    4.8150 -065.0635
   -7.9167   -4.8150 -065.0635
    7.9167   -4.8150 -065.0635
   -7.9167    4.8150 -065.0635
    7.9167   -4.8150 -065.0635
   -7.9167    4.8150 -065.0635
    7.9167    4.8150 -065.0635
   -7.9167   -4.8150 -065.0635
    7.9167    4.8150 -052.1973
   -7.9167   -4.8150 -052.1973
    7.9167   -4.8150 -052.1973
   -7.9167    4.8150 -052.1973
    7.9167   -4.8150 -052.1973
   -7.9167    4.8150 -052.1973
    7.9167    4.8150 -052.1973
   -7.9167   -4.8150 -052.1973
符合条件的全局最优解个数:100
``
循环1000次xopt yopt fopt = PSOShubert np maxiter bounds每次产生三个数三个数存入到矩阵中矩阵中的数需要不满足abs globk1 - xopt eps && absglobk2 - yopt eps && absglobk3 - fopt eps矩阵的行数为存入矩阵的次数将矩阵和矩阵的行数进行输出

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

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