【MATLAB第108期】基于MATLAB的fast、vbsa、dynia、eet、glue、pawn、rsa敏感性分析模型合集(无目标函数)【更新中】
一、FAST(Fourier Amplitude Sensitivity Test)
FAST(Fourier Amplitude Sensitivity Test)傅里叶振幅灵敏度测试是一种用于敏感性分析的方法,它可以评估模型输入参数对输出结果的影响。FAST方法通过将输入参数的变化转换为傅里叶级数,并分析不同频率下的响应来确定参数对输出的敏感程度。
本文供了FAST的应用示例。FAST使用模型输出的傅里叶分解来近似基于方差的一阶灵敏度指数。
分为以下步骤:
Step 1: 建立模型,定义输入范围
%参数数量:
M = 7 ;
% 参数范围:
xmin=[137 0 0 160 4.4 708 650];%各个参数下限
xmax=[374 193 260 240 19 1049.90 902];%各个参数上限
% 参数分布:
for i=1:M; DistrPar{i} = [ xmin(i) xmax(i) ] ; end
% 参数名称:
X_labels = {'X1','X2','X3','X4','X5','X6','X7'} ;
% 定义函数:
%函数采用@bpfun ;
Step 2: FAST近似一阶灵敏度指数
% FAST采样
[X,s] = FAST_fun(DistrFun,DistrPar,M);
% 运行模型并计算采样参数集的模型输出:
Y = myfun(X) ;
% 评估指标:
Si_fast = FAST_indices(Y,M) ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
上面使用的“FAST_fun”函数会自动将样本量设置为给定输入数量M的最小值
N_fast = length(Y) ;
%% 绘图
figure()
bar(Si_fast);
xlabel('输入变量')
ylabel('评价指标')
legend('S')
title('FAST敏感性分析(无目标函数)')
Step 3:收敛性分析
评估使用更多的样本,FAST估计值是否会改变:
即由原来的的样本数npop变成NNfast
npop:npop+500:npop+1000
%% 绘图
figure()
bar([Si_fast_conv']);
xlabel('输入变量')
ylabel('评价指标')
legend('S1-1th','S2-1th','S3-1th')
title('FAST敏感性分析(无目标函数)')
二、VBSA(Variance-Based Sensitivity Analysis)
VBSA(Variance-Based Sensitivity Analysis)是一种基于方差的敏感性分析方法,用于评估模型输入参数对输出结果的影响。它通过计算输入参数的方差来确定其对模型输出的敏感程度。VBSA通常包括第一阶敏感性指数和总效应敏感性指数,可以了解每个参数对输出变量变化的贡献度以及参数间的相互作用 。
Step 1: 建立模型,定义输入范围
%参数数量:
M = 7 ;
% 参数范围:
xmin=[137 0 0 160 4.4 708 650];%各个参数下限
xmax=[374 193 260 240 19 1049.90 902];%各个参数上限
% 参数分布:
for i=1:M; DistrPar{i} = [ xmin(i) xmax(i) ] ; end
% 参数名称:
X_labels = {'X1','X2','X3','X4','X5','X6','X7'} ;
% 定义函数:
%函数采用@bpfun ;
Step 2: VBSA一阶与总效应灵敏度指数
% LHS采样
X = VBSA_fun(DistrFun,DistrPar,M);
% VBSA重采样
[ XA,XB ,XC] = vbsa_resampling(X) ;
% 运行模型并计算采样参数集的模型输出:
[YA,YB ,YC ]= myfun([ XA,XB ,XC]) ;
% 评估指标:
[Si_VBSA,ST_VBSA] = VBSA_indices([YA,YB,YC],M) ;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
上面使用的“VBSA_fun”函数会自动将样本量设置为给定输入数量M的最小值
N_VBSA = length(Y) ;
%% 绘图
figure()
bar([ Si' STi' ]);
xlabel('输入变量')
ylabel('评价指标')
legend('S','ST')
title('VBSA全局敏感性分析(无目标函数)')
Step 3:收敛性分析
评估使用更多的样本,FAST估计值是否会改变:
即由原来的的样本数npop变成NNfast
npop:npop+500:npop+1000
%% 绘图
figure()
bar([Si_NBSA_conv' ]);
xlabel('输入变量')
ylabel('评价指标')
legend('S1-1th','S2-1th','S3-1th')
title('NBSA敏感性分析(无目标函数)')
figure()
bar([ST_NBSA_conv' ]);
xlabel('输入变量')
ylabel('评价指标')
legend('ST1-1th','ST2-1th','ST3-1th')
title('NBSA敏感性分析(无目标函数)')