下面是一个使用粒子群优化算法(Particle Swarm Optimization, PSO)求解一个简单的极值问题的 MATLAB 示例:
% 定义目标函数(Rosenbrock函数)
fitnessFunction = @(x) sum(100*(x(2:end) - x(1:end-1).^2).^2 + (1 - x(1:end-1)).^2);
% 设置 PSO 参数
options = optimoptions(@particleswarm, ...
'SwarmSize', 100, ... % 粒子数量
'MaxIterations', 100, ... % 最大迭代次数
'Display', 'iter'); % 显示迭代信息
% 运行 PSO
[x, fval] = particleswarm(fitnessFunction, 2, [], [], options);
% 显示结果
fprintf('找到的最小值 x = [%f, %f]\n', x(1), x(2));
fprintf('最小值 f(x) = %f\n', fval);
在这个示例中,我们定义了目标函数为 Rosenbrock 函数,它是一个经典的多维优化测试函数。然后,我们使用 optimoptions
设置了粒子群优化算法的参数,包括粒子数量和最大迭代次数。接着,我们调用 particleswarm
函数来运行粒子群优化算法,求解目标函数的极小值点。
可以根据需要调整目标函数和 PSO 参数,以解决不同的优化问题。