MATLAB 中的退化模型

计算科学 matlab
2021-12-19 13:38:41

我正在尝试(使用 MATLAB)生成Wu Tian Chen 研究文章“使用基于神经网络的健康状况预测的基于条件的维护优化”的以下图像(来自第4.1 节数值示例) :

在此处输入图像描述

该模型由以下等式推导出: 其中是正态随机变量,均值为,方差也是和方差的随机变量是一个居中的布朗运动,使得的均值为零,的方差为 。参数根据文章设置。

L(t)=θ+βt+ε(t)
θ512β51.52ε(t)=σW(t)ε(t)ε(t)σ2t

我编写的 MATLAB 代码如下:

% Initialization:
Ts          = 0;
Te          = 150;
Tn          = 101;
mu0         = 5;
sigma0      = 1;
mu1         = 5;
sigma1      = 1.5;
sigma       = .5;
D           = 500; % failure threshold
paths = 50; % Number of paths in accordance with the article and graph

figure, hold on, box on, grid off

t = linspace(Ts, Te, Tn)';

for i = 1:paths 
   % Generate θ':
    teta1 = randn() * sigma0 + mu0;
   % Generate β':
    beta1 = (randn() * sigma1 + mu1) .* t;

   % Generate Brownian path
    dW = sqrt(Te / Tn) * randn(Tn, 1);
    W = cumsum(dW, 1); % cumulative sum
    e_t = sigma * W;

   L = teta1 + beta1 + e_t;   
   plot(t, L);
   xlim([Ts, Te])
   ylim([0, 600])

end

% Draws threshold
plot([Ts, Te], [D, D], 'k', 'LineWidth', 2.5)

title('Degradation Signal', 'FontWeight', 'bold', 'FontSize', 14);
xlabel('Time (day)', 'FontSize', 12);
ylabel('Amplitude', 'FontSize', 12);

这段代码的输出与原来的不同,但我不明白为什么。在已经应用了 A. Donda 的更改,但由于没有波动,情节仍然不同。

谢谢

1个回答

首先,您的线性部分代码是错误的。据我了解,在实例化过程中随机变化,但随着时间的推移保持不变。要实现这一点,您必须编写θβ

% Generate θ':
theta1 = randn() * sigma0 + mu0;
% Generate β':
beta1 = (randn() * sigma1 + mu1) .* t;

其次,在你的代码中有几个奇怪的东西来生成布朗路径:有一个,你使用常量而不是定义的参数,并且你的代码中有一个额外的因子 0.5 恕我直言,该部分应如下所示:exp()0.5sigmadW

dW = sqrt(Te / Tn) * randn(Tn, 1);
W = cumsum(dW);
e_t = sigma * W;

如果不为零,这里也会有问题Ts,所以我建议只删除该参数并将其替换为 0。

使用此修改后的代码,结果如下所示:

在此处输入图像描述

这仍然不是你的目标。但是,我认为您使用的参数无论如何都与您的情节不一致。一方面,如果的方差应该是 1.5,那么你必须写β

sigma1 = sqrt(1.5);

因为是标准偏差。此外,如果对于布朗运动,的方差为 37.5,标准差为 6.12。但是,您的情节波动要大得多。σ1σ=0.5ϵ(150)

希望这可以帮助。