目的:采用压缩因子粒子群算法实现双指数拟合。

function x_opt = PSO_ExpFit2(t, Et)
%{
函数功能:压缩因子粒子群算法实现指数拟合:y = a1*exp(-x/b1) + a2*exp(-x/b2) + c
输入:t:自变量;Et:因变量;
输出:x_opt:最优解;
调用格式:
clear;clc;
t = 0.2*(1:3000)';
data = 400*exp(-t/5) + 600*exp(-t/200) + 10*rand(size(t));
tic;
p = PSO_ExpFit2(t, data)
toc;
fit = p(1)*exp(-t/p(2)) + p(3)*exp(-t/p(4)) + p(5);
plot(t, data, t, fit, 'LineWidth', 2)
legend('model', 'PSO');
%}
% 初始值
D = 5;                      % 粒子维度,未知数个数;
IterMax = 500;      % 最大迭代次数;
Vmin = -1;               % 速度最小值;
Vmax = 1;               % 速度最大值;
c1 = 2.05;               % 学习因子1,认知部分;
c2 = 2.05;               % 学习因子2,社会部分;
N = 100;               % 种群个数;
Xmin = [0, -2, 0, -2, 0];    % 下限
max_sig = max(Et);
Xmax = [1.5*max_sig, 4, 1.5*max_sig, 4, 0.5*max_sig];  % 上限;
% 计算
phy = c1 + c2;
lamda = 2 / abs(2 - phy - sqrt(phy^2 - 4*phy));   % 压缩因子
% 初始化种群个体(限定位置和速度)
x = rand(N, D).*repmat(Xmax - Xmin, N, 1) + repmat(Xmin, N, 1);
v = rand(N, D)*(Vmax - Vmin) + Vmin;
% 初始化个体最优位置和最优值
p = x;
pbest = ones(1, N);
for i = 1 : Npbest(i) = Obj_Fit(x(i, :), t ,Et);
end
% 初始化全局最优位置和最优值
g = ones(1, D);
gbest = inf;
for i = 1 : Nif pbest(i) < gbestg = p(i, :);gbest = pbest(i);end
end
% 迭代直到满足精度或者迭代次数
fx = zeros(1, N);
for i = 1 : IterMaxfor j = 1 : N% 更新个体最优位置和最优值 fx(j) = Obj_Fit(x(j, :), t ,Et);if fx(j) < pbest(j)p(j, :) = x(j, :);pbest(j) = fx(j);end% 更新全局最优位置和最优值 if pbest(j) < gbestg = p(j, :);gbest = pbest(j);end% 更新位置和速度值  v(j, :) = lamda*v(j, :) + c1*rand*(p(j, :) - x(j, :)) + c2*rand*(g - x(j, :));x(j, :) = x(j, :) + v(j, :);% 边界条件处理 for ii = 1 : Dif (v(j, ii) > Vmax) || (v(j, ii) < Vmin)v(j, ii) = rand*(Vmax - Vmin) + Vmin;endif (x(j, ii) > Xmax(ii)) || (x(j, ii) < Xmin(ii))x(j, ii) = rand*(Xmax(ii) - Xmin(ii)) + Xmin(ii);endendend
end
x_opt = g;
x_opt(2) = 10^(x_opt(2));
x_opt(4) = 10^(x_opt(4));
end% 目标函数
function fitError = Obj_Fit(p0, t ,Et)
A1 = p0(1);
B1 = p0(2);
A2 = p0(3);
B2 = p0(4);
A0 = p0(5);
f = A1*exp(-t/10^B1) + A2*exp(-t/10^B2) + A0;
fitError = norm(Et - f);
end

Matlab学习手记——非线性拟合方法:压缩因子粒子群算法相关推荐

  1. jeremy的路径规划学习-1.三维地图定义,散点拟合插值与粒子群算法(matlab实现)

    jeremy的路径规划学习-1.三维地图定义,散点拟合插值与粒子群算法(matlab实现) 本文基于小黎的ally学习资料实现,感谢该博主的无私奉献 三维地图与二维地图的差别 1.二维无高度信息,多用 ...

  2. 【图像分割】基于matlab Kmean聚类分水岭、oust、粒子群算法优化脂肪肝图像分割【含Matlab源码 2277期】

    ⛄一.粒子群算法自适应多阈值图像分割简介 FCM聚类算法是一种局部搜索算法,对初始值较为敏感,容易陷入局部极小值而不能得到全局最优解.PSO算法是一种基于群体的具有全局寻优能力的优化方法.本文将FCM ...

  3. Matlab学习手记——非线性方程组求解:牛顿下山法

    功能:牛顿下山法求解非线性方程组. 牛顿下山法 function [x, n] = NonLinearEquations_NewtonDown(x0, err) %{ 函数功能:牛顿下山法求解非线性方 ...

  4. matlab 牛顿法 非线性方程,Matlab学习手记——非线性方程组求解:牛顿法

    功能:牛顿法求解非线性方程组. 调用示例 命令行输入: [r, n]=mul_Newton([0 0 0], 1e-5) 得到结果: r = 0.4996 -0.0900 -0.5259 n = 5 ...

  5. 【优化预测】粒子群算法优化BP神经网络预测温度matlab源码

    一.粒子群算法及RBF简介 1 粒子群算法简介 1.1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模 ...

  6. 【TWVRP】基于matlab粒子群算法求解带时间窗的车辆路径规划问题(总成本最低)【含Matlab源码 2590期】

    ⛄一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简 ...

  7. 【PSO三维路径规划】基于matlab粒子群算法无人机山地三维路径规划【含Matlab源码 1405期】

    ⛄一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水 ...

  8. 【优化布局】基于matlab粒子群算法求解充电站布局优化问题【含Matlab源码 012期】

    ⛄一.粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都 ...

  9. 【SVM回归预测】基于matlab粒子群算法优化SVM回归预测【含Matlab源码 1424期】

    ⛄一.粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都 ...

最新文章

  1. linux 安装rpm no key,yum 安装报 关于Public key for *.rpm is not installed 的解决方法
  2. 史上最容易懂的云计算的前世今生
  3. notepad++中的unexpected indent
  4. 1.4编程基础之逻辑表达式与条件分支 06 判断是否为两位数
  5. centos安装mysql初始化没有密码_centos 6 初次安装mysql 的密码初始化登陆问题
  6. 【转】EntityFramework之领域驱动设计实践(三)
  7. 软件工程:方法与实践 第四次读书笔记
  8. 王道训练营3月13日
  9. Altuim Designer 21学习笔记
  10. 【华谋咨询】企业5s管理做大做强的四大措施
  11. 安卓连接mysql数据库_Android客户端怎么与服务器数据库连接?
  12. Android 中指纹识别的使用
  13. 排列组合 C语言函数,排列组合(C递归版)
  14. python 平方公里和英亩单位转换
  15. 2022-2027年中国吉他行业市场调研及未来发展趋势预测报告
  16. Unity Text字体花屏
  17. 问:python-dev是什么?为什么安装了python后有时还要安装python-dev?
  18. Markdown插入网易云音乐播放模块
  19. 【小米集团】2019校招在线考试-算法试卷编程题
  20. Sql server没有服务器名称怎么办

热门文章

  1. html ace编辑器,Springboot 集成 Ace editor前端编辑器
  2. java swing表格翻页_让Swing表格支持远程后台数据翻页
  3. 资源整理 IC/FPGA
  4. obj文件转gltf文件
  5. 区块链未来前景及运用领域
  6. 201819102036张祺
  7. 不写一段代码来获取扇贝单词的接口数据
  8. Unity3D iPhone开发入门 (转)iPhoneSettings.
  9. 券商也“网红”,证券行业IT服务运维发展按下“快进键”
  10. 弘辽科技:淘宝直播时没人气?如何快速提高淘宝直播人气?