8.粒子群算法(示例与代码)

本文通过一个三维函数y = x1^2 + (1+x1).sin(x2) - 5x1+ 8*x2 + 373,介绍如何运用粒子群算法在x1和x2的定义域[-20,20]内找到该函数的最小值。示例代码展示了算法的实现,并给出了运行结果。" 107662701,9170203,深入理解JavaWeb:JSP技术详解,"['JavaWeb', 'JSP', 'Web开发', 'Servlet']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

存在一个三维面,其函数表达式为y = x1^2 + (1+x1).sin(x2) - 5x1+ 8*x2 + 373;
x1、x2的定义域均为[-20,20],
通过粒子群算法求出最小值
在这里插入图片描述

可以看出,最小值大体位于红圈的区域。

代码(主函数):

%% 自适应权重与压缩因子PSO
clear; clc
%% 绘制函数的图形
x1 = -20:1:20;
x2 = -20:1:20;
[x1,x2] = meshgrid(x1,x2);
y = x1.^2 + (1+x1).*sin(x2) - 5*x1 + 8*x2 + 373;
mesh(x1,x2,y)
xlabel('x1');  ylabel('x2');  zlabel('y');  % 加上坐标轴的标签
axis vis3d % 冻结屏幕高宽比,使得一个三维对象的旋转不会改变坐标轴的刻度显示
hold on  % 不关闭图形,继续在上面画图
%% 粒子群算法中的预设参数(参数的设置不是固定的,可以适当修改)
n = 44; % 粒子数量
narvs = 2; % 变量个数
c1 = 2.2;  % 每个粒子的个体学习因子,也称为个体加速常数
c2 = 2.2;  % 每个粒子的社会学习因子,也称为社会加速常数
C=c1+c2;
fi = 2/abs((2-C-sqrt(C^2-4*C))); % 收缩因子
w_1 = 0.9;  % 开始的惯性权重
w_2 = 0.4;  % 结束的惯性权重
K = 100;  % 迭代的次数
vmax = [6 6]; % 粒子的最大速度
x_lb = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值