物流工程与管理|机器学习|库存预测|RBF神经网络|BF神经网络|麻雀算法
频道介绍
- 博主简介:科研dog
- 编程语言:MATLAB为主、Python为辅
- 研究领域:启发式算法设计与应用
- 专业细分领域:物流工程系统优化、工业工程、供应链网络等
- 频道主要功能:科研领域知识分享、交流,算法、代码分享。
1. 文献来源
作者: 吴学梅, 牟莉
标题: 基于改进RBF-BP神经网络的预测方法研究
单位: 西安工程大学计算机科学学院,西安 710600
2. 摘要
针对钢铁企业在库存管理方面存在着不能合理控制库存量,从而不能及时正常供应企业生产需求,容易造成企业生产不能正常进行。提出了一种基于改进的麻雀算法优化 RBF-BP 神经网络 (LISSA-RBF-BP) 的模型,以定制覆盖厂物料金钩粉为研究对象,采用此模型对其库存量进行预测,以降低库存成本,减少企业损失。此模型采用马群算法优化传统麻雀搜索算法 (SSA),提高算法的全局搜索能力,解决了麻雀算法易得到局部最优解问题。采用 Logistic 混沌映射优化 SSA 初始种群,保持种群多样性并能提高算法搜索通用的均匀性。通过仿真实验结果分析,LISSA-RBF-BP 模型比 RBF-BP 模型和 SSA-RBF-BP 模型更加准确的对金钩粉库存量进行预测。
3. 研究内容
RBF-BP 网络由 RBF 网络和 BP 网络串联构成,输入为特征值
x
i
x_i
xi ,输出为库存量
Y
i
Y_i
Yi。算法步骤如下:
1.初始化:权值
β
\beta
β和阈值
θ
\theta
θ初始化为(0,1)区间随机值,设置最大训练次数、目标误差、学习率
a
a
a等参
数。
2.RBF 隐藏层:使用高斯核函数:
u ( j ) = exp [ ∑ i = 1 N 1 ∣ x i − β i , j ( j ) ∣ 2 R j 2 ] u(j)=\exp\left[\frac{\sum_{i=1}^{N_1}|x_i-\beta_{i,j}(j)|}{2R_j^2}\right] u(j)=exp[2Rj2∑i=1N1∣xi−βi,j(j)∣]
其中
N
1
N_1
N1为 RBF 隐藏层节点数。
3.BP 隐藏层:使用 Sigmoid 函数:
F ( y ) = 1 1 + e − y F(y)=\frac1{1+e^{-y}} F(y)=1+e−y1
输出为:
v ( t ) = F [ ∑ N 2 β i , j ( j ) u ( j ) ] v(t)=F\left[\sum^{N_2}\beta_{i,j}(j)u(j)\right] v(t)=F[∑N2βi,j(j)u(j)]
其中
N
2
N_2
N2为 BP 隐藏层节点数。
4.输出层:
Y ( o ) = F [ ∑ t = 1 N 2 β i , j ( t ) v ( t ) ] Y(o)=F\left[\sum_{t=1}^{N_2}\beta_{i,j}(t)v(t)\right] Y(o)=F[t=1∑N2βi,j(t)v(t)]
误差平方和:
S S E = ∑ o = 1 N 3 [ T o − Y ( o ) ] 2 SSE=\sum_{o=1}^{N_3}[T_o-Y(o)]^2 SSE=o=1∑N3[To−Y(o)]2
其中
N
3
N_{3}
N3为输出节点数。
5.权值更新:
β
i
,
j
=
β
i
,
j
+
a
⋅
Y
(
o
)
[
1
−
Y
(
o
)
]
[
T
o
−
Y
(
o
)
]
⋅
Y
(
o
)
\beta_{i,j}=\beta_{i,j}+a\cdot Y(o)[1-Y(o)][T_o-Y(o)]\cdot Y(o)
βi,j=βi,j+a⋅Y(o)[1−Y(o)][To−Y(o)]⋅Y(o)
θ
o
=
θ
o
+
a
⋅
Y
(
o
)
[
1
−
Y
(
o
)
]
[
T
o
−
Y
(
o
)
]
\theta_o=\theta_o+a\cdot Y(o)[1-Y(o)][T_o-Y(o)]
θo=θo+a⋅Y(o)[1−Y(o)][To−Y(o)]
3.2 麻雀搜索算法 (SSA)
SSA 模拟麻雀觅食行为,包括发现者、加入者和侦察者:
·发现者位置更新(公式有误,原文不完整,参考标准 SSA):
x
i
,
d
t
+
1
=
{
x
i
,
d
t
⋅
exp
(
−
i
α
⋅
t
max
)
,
if
R
2
<
S
T
x
i
,
d
t
+
Q
⋅
L
,
otherwise
x_{i,d}^{t+1}=\begin{cases}x_{i,d}^t\cdot\exp\left(-\frac{i}{\alpha\cdot t_{\max}}\right),&\text{if}R_2<ST\\x_{i,d}^t+Q\cdot L,&\text{otherwise}\end{cases}
xi,dt+1={xi,dt⋅exp(−α⋅tmaxi),xi,dt+Q⋅L,ifR2<STotherwise
加入者位置更新:
x i , d t + 1 = { Q ⋅ exp ( x w o r s t t − x i , d t i 2 ) , if i > n / 2 x b e s t t + ∣ x i , d t − x b e s t t ∣ ⋅ A + ⋅ L , otherwise x_{i,d}^{t+1}=\begin{cases}Q\cdot\exp\left(\frac{x_{\mathrm{worst}}^t-x_{i,d}^t}{i^2}\right),&\text{if}\:i>n/2\\x_{\mathrm{best}}^t+|x_{i,d}^t-x_{\mathrm{best}}^t|\cdot A^+\cdot L,&\text{otherwise}\end{cases} xi,dt+1={Q⋅exp(i2xworstt−xi,dt),xbestt+∣xi,dt−xbestt∣⋅A+⋅L,ifi>n/2otherwise
侦察者位置更新:
x i , d t + 1 = { x b e s t t + β ⋅ ∣ x i , d t − x b e s t t ∣ , i f f i > f g x i , d t + K ⋅ ( ∣ x i , d t − x w o r s t t ∣ ( f i − f g ) + ϵ ) , i f f i = f g x_{i,d}^{t+1}=\begin{cases}x_{\mathrm{best}}^t+\beta\cdot|x_{i,d}^t-x_{\mathrm{best}}^t|,&\mathrm{if}\:f_i>f_g\\x_{i,d}^t+K\cdot\left(\frac{|x_{i,d}^t-x_{\mathrm{worst}}^t|}{(f_i-f_g)+\epsilon}\right),&\mathrm{if}\:f_i=f_g\end{cases} xi,dt+1={xbestt+β⋅∣xi,dt−xbestt∣,xi,dt+K⋅((fi−fg)+ϵ∣xi,dt−xworstt∣),iffi>fgiffi=fg
改进型麻雀搜索算法 (LISSA)
· Logistic 混沌映射初始化:
Z t + 1 = θ Z t ( 1 − Z t ) , θ = 4 , Z t ∈ [ 0 , 1 ] Z_{t+1}=\theta Z_t(1-Z_t),\quad\theta=4,Z_t\in[0,1] Zt+1=θZt(1−Zt),θ=4,Zt∈[0,1]
。 鸟群算法优化发现者和加入者:
x
i
,
d
t
+
1
=
x
i
,
d
t
+
x
best
,
d
t
⋅
randn
(
0
,
1
)
x_{i,d}^{t+1}=x_{i,d}^t+x_{\text{best},d}^t\cdot\text{randn}(0,1)
xi,dt+1=xi,dt+xbest,dt⋅randn(0,1)
x
i
,
d
t
+
1
=
x
best
,
d
t
+
(
x
i
,
d
t
−
x
best
,
d
t
)
⋅
G
Y
⋅
randn
(
0
,
1
)
x_{i,d}^{t+1}=x_{\text{best},d}^t+(x_{i,d}^t-x_{\text{best},d}^t)\cdot GY\cdot\text{randn}(0,1)
xi,dt+1=xbest,dt+(xi,dt−xbest,dt)⋅GY⋅randn(0,1)
LISSA-RBF-BP 模型构建步骤
确定网络结构(输入5节点,隐藏8节点,输出1节点)。
数据标准化。
使用 Logistic 混沌映射初始化麻雀种群。
计算适应度(均方误差)。
更新麻雀位置(结合鸟群算法)。
优化 RBF-BP 权值和阈值。
训练网络并预测。
内容复现

4.代码
% 假设有训练数据 X_train, Y_train
input_nodes = 5;
hidden_nodes = 8;
output_nodes = 1;
% 初始化 RBF-BP 参数
beta = rand(input_nodes, hidden_nodes);
R = rand(1, hidden_nodes);
theta = rand(hidden_nodes, output_nodes);
% 定义适应度函数(均方误差)
fitness_fun = @(params) mean((Y_train - RBF_BP_forward(X_train, params.beta, params.R, params.theta)).^2);
% 使用 LISSA 优化参数
pop_size = 30;
dim = numel(beta) + numel(R) + numel(theta);
lb = 0; ub = 1;
[best_params, best_fitness] = LISSA(pop_size, dim, 100, lb, ub, fitness_fun);
% 解析最优参数并训练网络
% ...(具体解析和训练步骤略)
更多推荐



所有评论(0)