Morris全局敏感度分析程序(含python实现和matlab代码实现)

本文采用Morris方法对参数的全局灵敏度进行评价。通过计算各个影响因素对输出结果的影响进行灵敏度分析。

假设模型为,为模型中影响因素的个数,每个影响因素的变动范围为其拟合值的5%-20%。假设将其每个影响因素的变化范围映射到区间[0,1],然后分成N个均匀间隔,成为 {0,1/(N-1),...,1}。

为了计算个参数的基本效应,需要(+1)模拟值,其方法与对每个参数扰动的局部灵敏度方法相同,称为一个“路径”。通过随机生成参数集的多个路径,我们得到了每个参数的基本效果的集合。计算总数为,其中r为路径数。

一次路径的步骤如下:

(1)构建×m(m=+1)的矩阵B:

一开始每个参数必须随机从{0,1/(N-1),...,1}中取值作为样本。每个轨迹采样都有一个随机生成的不同起点。在矩阵B中,第1列表示每个参数的样本,相邻两列只有一个参数的取值不同。1表示变化的因素,0表示不变的因素。

Morris方法的全局敏感性分析

(2)一次依次改变一个参数,把矩阵B中相邻两列作为模型的输出参数,即

Morris方法的全局敏感性分析

式中,这里∆为预先设定的变化量,。由基本效应(EE)来评估,其定义为

Morris方法的全局敏感性分析

其中是输出比例因子,参数集可以通过蒙特卡罗随机采样随机选择。

一次路径结束,重复r次。

本实验的目的是估计初等效应分布的平均值和均方差,这些初等效应分布是用Morris方法的全局灵敏度分析中的r次独立随机路径估计的,

Morris方法的全局敏感性分析

平均值和均方差称为第参数的灵敏度因子,可对该参数的灵敏度进行判断:当平均值很小时,则说明该参数对模型的影响很小,该参数不重要;当平均值较大,则说明该参数与模型输出有线性关系;均方差比较小时,则说明该参数与其他参数的相关性弱;但当平均值和均方差都比较大时,则说明该参数与模型输出有非线性关系,并且该参数与其他参数的相关性、关联性强。

代码获取请阅读全文

未经允许不得转载!Morris全局敏感度分析程序(含python实现和matlab代码实现)