前言
最近实习,部长给了我一个灵敏度分析算法的工作。灵敏度分析分为局部灵敏度分析和全局灵敏度分析;局部灵敏度分析包括:直接求导法、有限差分法、格林函数法。全局灵敏度分析算法有筛选法、蒙特卡洛方法、基于方差的方法。筛选法主要有IFFD、MOAT、COTTER法等,一般用于分析包含大量输入变量的系统模型、计算量相对较小。蒙塔卡罗方法是一种主要基于统计学理论的方法,包括散点图法、相关系数法、回归分析法等,对于线性单调模型分析具有较强的适用性。基于方差的方法是近年来研究较多且应用最广的一类方法,主要有重要性估计法、傅里叶幅值灵敏度测试法(FAST)、以及拓展傅里叶幅值灵敏度检验方法(EFAST)等。SOBOL全局灵敏度分析法同时具备了蒙塔卡罗法和方差法的特点。
这里我查阅资料,有一些博主所写的只是在sobol上进行修改来实现morri,这里我试了反正效果不尽如人意,这里我最后还是上到SALib官网上取查对应的模块进行修正,得到我想要的预期结果。这里SALib的官网为:SALib网址,感谢博主忘荃小学和博主猪冰龙
MOAT筛选法(morris筛选法)
通过对可行域内随机取值,大大降低了对初始值的依赖程度,但在随机采样过程中容易出现误差,因而需要多次取平均结果来体现全局性。MOAT方法把灵敏度结果表示为EE(elementary effect),这里在下面的python代码中可以有着很清楚的体现。
#先引入我们需要的包
from SALib.sample import saltelli
from SALib.analyze import sobol
from SALib.analyze import morris
from SALib.test_functions import Ishigami
import numpy as np
import math
from SALib.plotting.bar import plot as barplot
import matplotlib.pyplot as plt
import pandas as pd
定义模型的输入
我们这里验证的函数是: y = a x 2 + b x + c y=ax^2+bx+c y=ax2</

本文介绍了如何使用SALib库进行Morris筛选法的全局灵敏度分析。通过设置输入参数范围,生成样本并计算模型输出,然后运用SALib的morris.analyze方法计算灵敏度指数,包括平均灵敏度、绝对平均灵敏度和标准差。最终,通过可视化展示敏感度结果,帮助理解模型中各输入参数的重要性。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



