前言

最近实习,部长给了我一个灵敏度分析算法的工作。灵敏度分析分为局部灵敏度分析和全局灵敏度分析;局部灵敏度分析包括:直接求导法、有限差分法、格林函数法。全局灵敏度分析算法有筛选法、蒙特卡洛方法、基于方差的方法。筛选法主要有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=ax2+bx+cy=ax^2+bx+cy=ax2+bx+c这里对函数灵敏度有影响的参数为a,b,ca,b,ca,b,c事先定义他们的范围。

#定义一个字典
problem = {'num_vars':3,'names':['x1', 'x2', 'x3'],'bounds':[[1, 3],[2, 4],[3, 5]]
}

生成样本(samples)

我们要生成一样本(samples),由于我们要进行morris灵敏度分析我们需要用Saltelli samplers生成很多samples。

param_values = saltelli.sample(problem,1000)
np.savetxt("param_values.txt", param_values)#将参数变化保存,其实是个参数范围内的sobol抽样
print(param_values.shape)
(8000, 3)

param_values 是一个Numpy的矩阵,我们将打印出param_values的shape为(8000,3),Saltelli生成N∗(2D+2)N*(2D+2)N∗(2D+2)个samples,N是我们在函数中所给定的,D是模型的三输入个数。

我们需要经过循环求出每个samples的模型输出值

#1-自定义-2
Y = np.zeros([param_values.shape[0]])
for i,X in enumerate(param_values):tarr = np.arange(-5,6,1);yerror = 0.0;for t in tarr:ylab = 2*t**2+3*t+4;ytheory = X[0]*t**2+X[1]*t+X[2];yerror = yerror+(ylab-ytheory)**2;Y[i] = math.sqrt(yerror);

这里我们要计算敏感指数,在这个例子中我们采用的是morris.analyzemorris.analyzemorris.analyze将会计算出平均灵敏、平均灵敏度的绝对值和灵敏度的标准差。


Si = morris.analyze(problem,param_values,Y,print_to_console=True)
print("the mean elementary effect mu:")
print(Si['mu'])#the mean elementary effect
print("the absolute of the mean elementary effect mu_star:")
print(Si['mu_star'])#the absolute of the mean elementary effect
print("the standard deviation of the elementary effect sigma sigma:")
print(Si['sigma'])#the standard deviation of the elementary effect
          mu    mu_star      sigma  mu_star_conf
x1 -0.239573  31.922459  41.718545      1.009824
x2 -0.035074  35.178599  39.714890      0.781839
x3  0.051262  18.772476  27.984910      0.873359
the mean elementary effect mu:
[-0.23957343 -0.03507359  0.05126165]
the absolute of the mean elementary effect mu_star:
[31.922458653757158 35.17859916653295 18.772476282420456]
the standard deviation of the elementary effect sigma:
[41.71854476 39.71488989 27.98491008]

我们利用SALib提供的可视化将上述的灵敏度展示出来:

from SALib.plotting.bar import plot as barplot
import matplotlib.pyplot as plot
Si_df = Si.to_df()
print(Si_df)
barplot(Si_df)
          mu    mu_star      sigma  mu_star_conf
x1 -0.239573  31.922459  41.718545      1.310684
x2 -0.035074  35.178599  39.714890      0.812093
x3  0.051262  18.772476  27.984910      0.863634<AxesSubplot:>

Morrios灵敏度分析法相关推荐

  1. 运筹优化(四)--线性规划之对偶问题和灵敏度分析

    线性规划的灵敏度分析,是指模型参数的变化,对优化结果的影响分析,分定性和定量两种. 定性分析 这里的定性分析,指参数变化,对结果的影响,比如不变,变坏或者变差. 松约束和紧约束 放宽优化模型中的约束条 ...

  2. 数学建模之灵敏度分析

    在数学建模的评价类问题中,灵敏度分析是一个重量级的评价方法,尤其是针对规划问题,是一定要在建模后对模型进行灵敏度分析的,用来检验模型的稳定性. 通过阅读历年美赛的O奖论文可以发现,大部分文章最后都会进 ...

  3. 汽车振动实模态分析-模态分析法(附程序)

    文章目录 汽车的振动模型 模态分析法 MATLAB程序 汽车的振动模型 m:车身的等效质量: m_1:前轴的等效质量(包含电机的质量在内): m_2:后轴的等效质量: m_3:人体和座椅的等效质量: ...

  4. 对偶理论和灵敏度分析(单纯形法矩阵形式、对偶理论及转化、影子价格、机会成本、差额成本、对偶单纯形法、灵敏度分析)

    对偶理论和灵敏度分析 文章目录 对偶理论和灵敏度分析 修正单纯形法-矩阵描述和计算 对偶问题的提出 原问题与对偶问题转化 对偶问题最优解的经济意义--影子价格 对偶问题约束项的经济意义--生产产品的机 ...

  5. AHP层次分析法在水利中的实践技术应用

    原文:AHP层次分析法在水利中的实践技术应用 内容简述: 1.认识 AHP,掌握 AHP 的基本原理,优缺点及建模的步骤.以手算案例的方式,熟 悉层次分析法的计算过程,为后期学习软件夯实理论基础. 2 ...

  6. 黑盒测试方法之边界值分析法

    边界值分析法 概念 需求示例1 测试用例分析设计1 需求示例2 测试用例分析设计2 总结 概念 很多错误发生在输入或输出范围的边界上,因此针对各种边界情况设置测试用例,可以更有效地发现缺陷. 边界值分 ...

  7. LR分析法从理解到运用

    1. LR分析器 解释: 分析栈包括符号栈和相应状态栈 分析表包括ACTION表和GOTO表 Ⅰ动作表元素action[Si,aj] 表示当前栈顶状态为S,输入符号为a时所执行的动作.有四种情况:S( ...

  8. 编译原理(六)自底向上分析之LR分析法

    自底向上分析之LR分析法 说明:以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记. 基本概念 1. LR分析:从左到右扫描(L)自底向上进行规约(R),是规范规约,也即最右推导(规范推导) ...

  9. 时间序列分析及应用r语言pdf_R语言:时间序列经典分析法(二)

    题记:本文是个人的读书笔记,仅用于学习交流使用.本文将深入研究时间序列技术. 01 解决什么问题? 前面一章,介绍了时间序列中涉及到的基本概念,本章将在此基础上介绍如何对时间序列的资料进行分析,怎么选 ...

  10. ahp层次分析法matlab代码_Matlab数据分析实战,基于AHP高校食堂满意度调查分析

    层次分析法(Analytical Hierachy Process,AHP)是匹兹堡大学T.L.Saaty教授在20世纪70年代初期提出对定性问题进行定量分析的一种渐变灵活的多准则决策方案. 其特点是 ...

最新文章

  1. JAVA springcloud ssm b2b2c多用户商城系统-docker-hystrix-dashboard-turbine(九)
  2. php上传文件后无法移动到指定目录的解决
  3. 使用工具快速找出custom work center使用的ui component
  4. 0623TP框架联系
  5. 用Flask开发Web版日历应用
  6. diskgenius创建efi分区_DISKGEN 专业版修改硬盘为GPT分区 ESP分区图文教程
  7. hive 中String对长度没有限制
  8. 活动目录的介绍:深入浅出Active Directory系列(一)
  9. 普适计算-2014/03/28
  10. RAC环境备份归档日志和RMAN恢复启动数据库
  11. 启用系统保护是灰色的#win10系统
  12. 如何做出好看的三维平面地图?
  13. 解决mmdetection训练过程loss为nan的问题
  14. idea和eclipse哪个更好用?为什么呢?
  15. 【CSS】单行图片与文字垂直居中
  16. SpringBoot集成elasticsearch使用
  17. 使用mybatis的interceptor修改执行sql以及传入参数
  18. ESP8266-Arduino编程实例-TMP102数字温度传感器驱动
  19. 中科院大牛博士是如何进行文献检索和阅读
  20. Allegro关闭线段显示不连续效果操作指导

热门文章

  1. 阿里联手数据港合建数据中心 服务金额至少40亿
  2. 如何搭建用户画像系统?以保险行业为例
  3. Linux系统中的用户管理
  4. 企业微信h5开发(即JS-SDK),一不小心,就会掉进坑,进入死胡同
  5. 火狐浏览器Firefox Firefox中的xpi文件是什么
  6. KCF跟踪算法/目标跟踪算法KCF案例程序源码
  7. [Halcon识别] 二维码识别
  8. 扫雷(简易版) 10*10
  9. 5s管理中清扫的内容及实施步骤
  10. android 界面 edittext详解,Android 开发之EditText属性详解