精华内容
下载资源
问答
  • 行业资料-电子功用-一种电控柴油机参数敏感性分析方法
  • 传统敏感性分析方法被广泛用于识别重要参数,然而它并没有考虑参数交互作用的动态变化对筛选过程的影响。对此,利用一个典型非线性数学函数分析该变化导致的筛选结果偏差,进而提出了动态敏感性分析方法(Dynamic ...
  • 为了有效识别作物模型关键参数,减少模型模拟的不适用性,选取河北省藁城市2009—2010年冬小麦作为研究对象,应用扩展傅立叶振幅灵敏度检验法(EFAST),对WOFOST模型26个作物参数进行敏感性分析。结果表明,生育期为0.5和...
  • 基于LH-OAT方法的SWAP-EPIC模型参数敏感性分析,能锋田,姜瑶,综述文章:以背景、研究现状、研究用途的结构书写,篇幅以150~300字左右为宜,不用第一人称做主语,不与正文语句重复。一般研究性
  • 深度学习以其效能广为称道。然而深度学习的一大问题是稳健性。本文提供一个新角度以分析其对参数敏感性
  • GLUE方法对新安江模型参数的敏感性分析,刘娜,,简要介绍普适似然不确定估计GLUE方法的原理,应用该方法研究新安江水文模型的参数敏感性问题,以资水流域资料为例,分析日径流参�
  • 为了提高彬长矿区大佛寺井田地面直井开发煤层气的产能和经济效益,利用煤储层数值模拟方法对孔隙度、煤层厚度、渗透率以及气含量等煤储层参数进行产能敏感性分析。研究表明:对于大佛寺井田煤层特征来讲,直井累计产气...
  • 敏感性分析—Sobol

    万次阅读 多人点赞 2015-06-16 13:56:55
    最近在搞敏感性分析方法中的Sobol方法,看了一些国内的论文,发现一个通病,就是公式一挂就可以得出结果了,对于我这种数学渣渣真的很不适合。直到我在维基百科上面找到了这种方法的详细解释...

    最近在搞敏感性分析方法中的Sobol方法,看了一些国内的论文,发现一个通病,就是公式一挂就可以得出结果了,对于我这种数学渣渣真的很不适合。直到我在维基百科上面找到了这种方法的详细解释https://en.wikipedia.org/wiki/Variance-based_sensitivity_analysis,包括分析的步骤都写的很清楚,当然还有蛮多东西自己还不是太了解(越来越发觉,数学真的太重要了,师弟师妹们大学别光玩了,至少工科数学还是要学好的。)。本篇博客就不对概念性的东西再做阐述,主要自己目前也是半吊子,就不在这误导大家了。
    分析的步骤刚才的网页已经有详细的描述,今天我们就根据网页上的步骤用一个例子来走一遍。
    假设现在有一个函数 这里写图片描述,从公式中可以看到有x1、x2、x3三个自变量对应变量Y有影响。然后一般会给这三个参数一个取值范围,这里假设三个自变量的取值范围都设为[0,1]。敏感性分析的目的就是求取这三个参数对于Y值得贡献。当然我们这边可能有人一下子就可以分析出那个参数对于Y值影响最大,但是在解决实际问题时,这个函数一般都是未知,我们只能将其视作一个黑盒子,只有输入和输出,这时我们对其进行敏感性分析就很有必要了。经过敏感性分析我们就能找出对结果影响较大的参数。这样对于调整结果是很有帮助的。
    接着上面的例子,首先我们得根据三个自变量的范围进行采样,这边采样的方法一般都是蒙特卡洛采样以及一系列基于蒙特卡洛采样的变种,这个例子中我们采用了 Sobol sequence,具体的采样原理在这就不说了,大家可以自行谷歌。为了方便讲解例子我们设置采样的样本数为4(N = 4),自变量数目为3(D = 3)。我们按照上述网页的步骤。
    1、 生成N * 2D(即4行6列)的样本矩阵。这个就是我们Sobol sequence做的事情。这边我们生成的矩阵为:

    这里写图片描述
    2、 将矩阵的前D列设置为矩阵A,后D列设置为B列,在我们的例子中就是矩阵m的前3列设置为矩阵A,后3列设置为矩阵B。
    这里写图片描述
    构造N*D的矩阵ABi(i = 1,2,…,D),即用矩阵B中的第i列替换矩阵A的第i列,以本体为例:
    这里写图片描述
    经过这三步我们构造了A、B、AB1、AB2、AB3这五个矩阵,这样我们就有(D + 2) * N (即20)组x1、x2、x3输入数据,因此我们将有20组Y值。将上述的数据带入函数 这里写图片描述,这里详细的计算过程就不描述了。根据输入我们得出对应的Y值矩阵。
    这里写图片描述这里写图片描述
    4、 根据一介影响指数公式:
    这里写图片描述
    总效应指数:这里写图片描述
    其中这里写图片描述
    这里写图片描述
    这里写图片描述
    这里的“加”不是普通意义上的相加而是构造了一个新的矩阵包括YA 和 YB这里写图片描述
    这样我们就可以通过上述的公式求解x_1的一介影响指数。下面是求解过程。
    Y 的均值等于
    mean(Y)=(2.09136387768+1.11036605855+3.50765176932+
    1.31095036329+2.09136387768+3.50765176932+
    1.11036605855+1.70665120003)/8 = 2.0545456218
    Var(Y) = 0.835332581542
    这里写图片描述
    本例中VarX1就等于(2.09136387768 * (2.09136387768 - 2.09136387768) + 3.50765176932* (0.67596163481 - 1.11036605855) + 1.11036605855 * (3.95562603058 - 3.50765176932) + 1.70665120003 * (1.71834424557 - 1.31095036329) )/4 = -0.0827611931562
    那么
    这里写图片描述
    这里写图片描述
    本例中EX~1 就等于((2.09136387768 - 2.09136387768)^2 + (1.11036605855 - 0.67596163481)^2 + (3.50765176932 - 3.95562603058)^2 + (1.31095036329 - 1.71834424557)^2 )/(2 * 4)= 0.06941973968,那么这里写图片描述
    至此x1的一介影响指数和全局影响指数都可以求出来了,然后x2、x3的一介影响指数与全局影响指数的求解过程和上面一样。
    当然在实际的求解过程中肯定不会用这么少的样本量的,但是求解过程是一样的。希望这篇文章会对做敏感性分析的小伙伴们有些帮助。

    展开全文
  • Sobol敏感性分析-Sobol.rar 采用网上的一篇博客编写了Sobol敏感性分析程序,博客地址为 blog.csdn.net/xiaosebi1111/article/details/46517409
  • 对于敏感性分析,我们使用拉丁超立方体采样(LHS)方法生成采样点,并使用部分秩相关系数(PRCC)方法,使用这些采样点来找出哪些参数对于模型很重要。 根据我们的发现,我们建议一些治疗策略。 我们研究了肿瘤体积...
  • 以四川盆地中部遂宁紫色土区为研究区,采用单参数敏感性分析方法,分析了坡度和土壤参数对径流小区产流量与产沙量的敏感性。结果表明:(1)坡度对产流量呈正相关,且对产流量敏感度值表现为15°林地小区(3.993) >10°农...
  • Sobol全局敏感性分析Matlab代码,输出一阶敏感度Sol_1及总敏感度Sol_t。 对简单函数来说,自己仿照构造一个目标函数Sobol_obj即可; 如果分析对象是Matlab外部的模型,其实就不需要Sobol_obj了,代码中的kp就是...
  • PCSE.WOFOST敏感性分析程序

    千次阅读 2020-03-09 16:10:29
    利用simlab软件进行敏感性分析,对simlab生成的取样文件进行运行,之后生成simlab的模型输入文件。 # 敏感性分析 注意路径和文件名字 from pcse.fileinput import CABOFileReader from pcse.fileinput import ...

    利用simlab软件进行敏感性分析,对simlab生成的取样文件进行运行,之后生成simlab的模型输入文件。

    # 敏感性分析 注意路径和文件名字
    from pcse.fileinput import CABOFileReader
    from pcse.fileinput import YAMLAgroManagementReader
    from pcse.models import Wofost71_WLP_FD
    from pcse.base import ParameterProvider
    from pcse.fileinput import ExcelWeatherDataProvider
    import datetime
    import os
    star=datetime.datetime.now()
    # simlab输出的参数读取
    para_dir = r'C:\Users\Administrator\Desktop\模型数据\SIMLAB_file'  #simlab输出文件的位置
    data_dir = r'C:\Users\Administrator\Desktop\模型数据'  # 作物模型数据路径
    weather_dir = r'C:\Users\Administrator\Desktop\气象数据'  # 气象数据路径
    # 模拟的位置
    lat = 34   #维度
    lon = 111.5 #经度
    # 更改参数列表
    # 创建播种日期的字典
    sow_date = dict(zip([i+1 for i in range(30)],[datetime.date(2018,10,i+1) for i in range(30)] ))
    # 要改变的数据
    change_data = {'TBASEM':0,'TEFFMX':1,'TDWI':2,'LAIEM':3,'RGRLAI':4,'SPAN':8,'TBASE':9,'CVL':15,'CVO':16,'CVR':17,
                   'CVS':18,'Q10':19,'RML':20,'RMO':21,'RMR':22,'RMS':23,'PERDL':24,'CFET':27,'DEPNR':28,'RDI':29,
                  'RRI':30,'RDMCR':31,'IFUNRN':32,'NOTINF':33,'SSI':34,'WAV':35,'SMLIM':36,'RDMSOL':37}
    #  读取模型参数
    weatherdataprovider = ExcelWeatherDataProvider(os.path.join(weather_dir, "NASA天气文件lat={0:.1f},lon={1:.1f}.xlsx".format(lat, lon)))
    cropdata = CABOFileReader(os.path.join(data_dir,'WWH102.CAB'))
    soildata = CABOFileReader(os.path.join(data_dir,'EC3.NEW'))
    sitedata = {'SSMAX'  : 0.,
        'IFUNRN' : 0,
        'NOTINF' : 0,
        'SSI'    : 0,
        'WAV'    : 100,
        'SMLIM'  : 0.03,
        'CO2'    : 360,
       'RDMSOL'  : 120}
    parameters = ParameterProvider(cropdata=cropdata, soildata=soildata, sitedata=sitedata)
    #创建文档储存模型输出结果
    with open(os.path.join(para_dir,'豫西模型输出结果加上管理.txt'),'a') as fp2:
        fp2.writelines(['1','\n','TSWO','\n','time = no','\n'])
        #打开simlab输出的文档
        with open(os.path.join(para_dir,'EFASTDOC3250_50.SAM'),'r') as fp:
            fp.readline() # 第一行
            number = fp.readline() #第二行为生成参数个数
            fp.readline() #变量个数
            fp.readline() #0  此后开始读参数
            fp2.write(str(number))
            for i in range(int(number)):
                sim_paraments = list(map(float,fp.readline().split('\t')[:-1]))
                # 更改参数
                for iterm,value in change_data.items():
                    parameters[iterm] = sim_paraments[value]
                parameters['SLATB'][1]=sim_paraments[5]
                parameters['SLATB'][3]=sim_paraments[6]
                parameters['SLATB'][5]=sim_paraments[7]
                parameters['KDIFTB'][1]=sim_paraments[10]
                parameters['KDIFTB'][3]=sim_paraments[10]
                parameters['EFFTB'][1]=sim_paraments[40]
                parameters['EFFTB'][3]=sim_paraments[40]
                parameters['AMAXTB'][1]=sim_paraments[11]
                parameters['AMAXTB'][3]=sim_paraments[12]
                parameters['AMAXTB'][5]=sim_paraments[13]
                parameters['AMAXTB'][7]=sim_paraments[14]
                parameters['AMAXTB'][1]=sim_paraments[11]
                parameters['RDRRTB'][5]=sim_paraments[25]
                parameters['RDRRTB'][7]=sim_paraments[25]
                parameters['RDRSTB'][5]=sim_paraments[26]
                agromanagement = YAMLAgroManagementReader(os.path.join(data_dir,'wheat{}.agro'.format(int(sim_paraments[39]))))                                                    
                agromanagement[0][datetime.date(2018, 10, 1)]['CropCalendar']['crop_start_date']=sow_date[round(sim_paraments[38])]
                wf = Wofost71_WLP_FD(parameters, weatherdataprovider, agromanagement)
                wf.run_till_terminate()
                output = wf.get_summary_output()
                fp2.write(str(output[0]['TWSO']))
                fp2.write('\n')
                if i%100==0:
                    print(i)
    end=datetime.datetime.now()
    print('运行完成,共用时{}'.format(end-star))
    
    

    主要的部分是改变的参数以及参数的特点使用不同的替换方式。

    敏感性分析2.0

    可以同时分析以最终目标为变量和中间过程变量的敏感性

    from pcse.fileinput import CABOFileReader
    from pcse.fileinput import YAMLAgroManagementReader
    from pcse.models import Wofost71_WLP_FD
    from pcse.base import ParameterProvider
    from pcse.fileinput import ExcelWeatherDataProvider
    import datetime
    import os
    import progressbar
    import pandas as pd
    
    
    # simlab输出的参数读取
    para_dir = r'C:\Users\Administrator\Desktop'  #simlab输出文件的位置
    # 模拟的位置
    lat = 34.5   #维度
    lon = 112 #经度
    # 更改参数列表
    # sow_date = dict(zip([i+1 for i in range(30)],[datetime.date(2019,10,i+1) for i in range(30)] ))
    change_data = {'TDWI':0,'LAIEM':1,'RGRLAI':2,'SPAN':6,'TBASE':7,'CVL':18,'CVO':19,'CVR':20,
                   'CVS':21,'Q10':22,'RML':23,'RMO':24,'RMR':25,'RMS':26,'PERDL':35,'RDI':40,
                  'RRI':41,'RDMCR':42}
    #  读取模型参数
    weatherdataprovider = ExcelWeatherDataProvider(os.path.join(para_dir, "NASA天气文件lat={0:.1f},lon={1:.1f}.xlsx".format(lat,lon)))
    cropdata = CABOFileReader(os.path.join(para_dir,'BN207_1.CAB'))
    soildata = CABOFileReader(os.path.join(para_dir,'EC3.NEW'))
    sitedata = {'SSMAX'  : 0.,
        'IFUNRN' : 0,
        'NOTINF' : 0,
        'SSI'    : 0,
        'WAV'    : 20,
        'SMLIM'  : 0.03,
        'CO2'    : 360,
       'RDMSOL'  : 120}
    parameters = ParameterProvider(cropdata=cropdata, soildata=soildata, sitedata=sitedata)
    agromanagement = YAMLAgroManagementReader(os.path.join(para_dir,'wheatSA018.agro'))
    #  创建文档储存模型数值结果
    with open(os.path.join(para_dir,'1输出结果22218.txt'),'a') as fp3:
        fp3.writelines(['2', '\n', 'TSOW', '\n', 'TAGP','\n', 'time = no', '\n'])
        with open(os.path.join(para_dir,'输出结果生育期内22218.txt'), 'a') as fp2:
            fp2.writelines(['1', '\n', 'LAI', '\n', 'time = yes', '\n'])
            #  打开simlab输出的文档
            with open(os.path.join(para_dir, 'EFAST22218.sam'), 'r') as fp:
                fp.readline()  # 第一行
                number = fp.readline()  # 第二行为生成参数个数
                fp.readline()  # 变量个数
                fp.readline()  # 0  此后开始读参数
                fp2.write(str(number))
                fp3.write(str(number))
                for i in progressbar.ProgressBar()(range(int(number))):
                    sim_paraments = list(map(float,fp.readline().split('\t')[:-1]))
                    # 更改参数
                    for items, value in change_data.items():
                        parameters[items] = sim_paraments[value]
                    parameters['SLATB'][1]=sim_paraments[3]
                    parameters['SLATB'][3]=sim_paraments[4]
                    parameters['SLATB'][5]=sim_paraments[5]
                    parameters['KDIFTB'][1]=sim_paraments[8]
                    parameters['KDIFTB'][3]=sim_paraments[9]
                    parameters['EFFTB'][1]=sim_paraments[10]
                    parameters['EFFTB'][3]=sim_paraments[11]
                    parameters['AMAXTB'][1]=sim_paraments[12]
                    parameters['AMAXTB'][3]=sim_paraments[13]
                    parameters['AMAXTB'][5]=sim_paraments[14]
                    parameters['AMAXTB'][7]=sim_paraments[15]
                    parameters['TMPFTB'][1]=sim_paraments[16]
                    parameters['TMPFTB'][3]=sim_paraments[17]
                    parameters['FRTB'][1]=sim_paraments[27]
                    parameters['FRTB'][9]=sim_paraments[28]
                    parameters['FRTB'][13]=sim_paraments[29]
                    parameters['FRTB'][15]=sim_paraments[30]
                    parameters['FLTB'][1]=sim_paraments[31]
                    parameters['FLTB'][5]=sim_paraments[32]
                    parameters['FLTB'][7]=sim_paraments[33]
                    parameters['FLTB'][9]=sim_paraments[34]
                    parameters['FSTB'][1]=1 - sim_paraments[31]
                    parameters['FSTB'][5]=1 - sim_paraments[32]
                    parameters['FSTB'][7]=1 - sim_paraments[33]
                    parameters['FSTB'][9]=1 - sim_paraments[34]
                    parameters['RDRRTB'][5]=sim_paraments[36]
                    parameters['RDRRTB'][7]=sim_paraments[37]
                    parameters['RDRSTB'][5]=sim_paraments[38]
                    parameters['RDRSTB'][7]=sim_paraments[39]
    
                    # agromanagement[0][datetime.date(2019, 10, 1)]['CropCalendar']['crop_start_date']=sow_date[round(sim_paraments[50])]
                    wf = Wofost71_WLP_FD(parameters, weatherdataprovider, agromanagement)
                    wf.run_till_terminate()
                    summary_output = wf.get_summary_output()
                    output = wf.get_output()
                    date=pd.date_range(start=summary_output[0]['DOE'], end=summary_output[0]['DOM'], freq='D')
                    df = pd.DataFrame(output).set_index("day")
                    df.index = pd.to_datetime(df.index, format='%Y/%m/%d')
                    fp2.writelines(['RUN', ' ', str(i), '\n'])
                    fp2.write(str(len(date)))
                    fp2.write('\n')
                    fp3.writelines([str(summary_output[0]['TWSO']), '\t', str(summary_output[0]['TAGP'])])
                    fp3.write('\n')
                    number = 0
                    for j in date:
                        number += 1
                        fp2.writelines([str(number), ' ', str(df.loc[df.index == j, 'LAI'].iloc[0]), '\n'])
    
    展开全文
  • 由于影响岩溶区桩基稳定性的因素很多,不同的参数分布等条件都会对岩溶区的稳定性产生...运用灰关联分析方法对影响岩溶区稳定性的各因素进行敏感性分析,得到各影响因素的关联次序,从而确定各影响因素的主次关系,为岩
  • 以临界平面法疲劳裂纹萌生寿命预测方法为系统数学模型,采用单参数敏感性分析方法,分析了钢轨材质参数(弹性模量、泊松比、屈服强度和抗拉强度)对疲劳裂纹萌生寿命的影响,计算了各参数的敏感度因子。计算结果表明...
  • 参数不确定】敏感性分析(sensitivity analysis)

    万次阅读 多人点赞 2020-04-22 20:17:41
    【运筹学】灵敏性分析

    敏感性分析简介

    敏感性分析是研究一个数学模型或系统(数值的或其他的)输出中的不确定性如何被划分和分配到输入中的不确定性的不同来源。一个相关的实践是不确定性分析,它更注重不确定性的量化和传播;理想情况下,不确定性和敏感性分析应该同时进行。

    根据维基百科,敏感性分析是“研究数学模型或系统(数值或其他)输出的不确定性如何分配到输入的不确定性的不同来源。”“每个输入的灵敏度通常由一个数值表示,称为灵敏度指数。敏感性指数有几种形式:

    1. 一阶指标:仅通过单个输入来测量对输出方差的贡献。
    2. 二阶指标:测量两个输入相互作用对输出方差的贡献
    3. 总阶指数:测量模型输入对输出方差的贡献,包括它的一阶效应(输入单独变化)和所有高阶交互作用。

    敏感性分析方法选择

    影响敏感性分析方法的选择的因素通常有:

    1. 计算开销:敏感性分析几乎是基于抽样的方法,当模型的一次运行需要大量的时间时,这可能是一个严重的问题。当模型具有大量的不确定输入时,敏感性分析本质上是对多维输入空间的探索,其大小随输入的数量呈指数增长。
    2. 相关输入:大多数常见的敏感性分析方法假设模型输入之间是独立的,但有时输入可能是强相关的。这仍然是一个不成熟的研究领域,权威的方法尚未建立。
    3. 非线性:一些敏感性分析方法,如基于线性回归的方法,在模型响应相对于其输入是非线性的情况下,不能准确地测量敏感性。在这种情况下,基于方差的度量更合适。
    4. 模型交互作用:当两个或多个输入的扰动同时导致输出的变化大于单独改变每个输入时,交互作用就会发生。这种相互作用存在于任何 non-additive的模型中,会被诸如scatterplots 和one-at-a-time perturbations等方法所忽略。交互作用的影响可以用 total-order sensitivity index来测量。

    敏感性分析过程

    1. 量化输入的不确定性(例如范围、概率分布)
    2. 确定要分析的模型输出(理想情况下,目标应该与模型处理的问题直接相关)
    3. 用一些设计好的实验对模型进行多次运行,“设计好的实验”由选择的方法和输入的不确定性决定。
    4. 利用模型输出,计算敏感性度量

    在某些情况下,这个过程会重复,例如在高维问题中,用户必须在执行完整的敏感性分析之前筛选出不重要的变量。

    敏感性分析的方法

    One-at-a-time (OAT)

    最简单和最常见的方法之一是每次更改一个因素(OAT),以查看这会对输出产生什么影响。OAT通常包括:

    移动一个输入变量,保持其他变量的基线值(nominal value),然后将变量返回到其标称值,然后以相同的方式对每个其他输入进行重复

    之后,敏感性可以通过监测输出的变化来测量,例如通过偏导数线性回归方法。在输出中观察到的任何更改都将明确地由单个变量的更改引起。此外,通过每次更改一个变量,可以将所有其他变量固定在它们的基线值,增加了结果的可比较性(与基线情况相比较),并将计算机程序崩溃(同时改变几个因素的情况)的几率降至最低,所以是一种不错的方法。由于实际原因,OAT经常受到建模者的青睐。当OAT分析下的模型发生故障时,建模者立即知道哪个输入因素导致了故障。

    不过因为一次只改变一个输入参数,所以不能检测到多个输入耦合的情况。

    Derivative-based local methods

    基于局部导数的方法包括求输出 Y Y Y对输入因子 X i X_{i} Xi的偏导数。Adjoint modelling和Automated Differentiation属于这类方法。与OAT类似,局部方法不尝试完全探索输入空间,因为它们只检查小的扰动,通常一次检查一个变量。

    Regression analysis

    在敏感性分析中,回归分析包括对模型响应进行线性回归并使用标准化回归系数作为敏感性的直接度量。回归要求数据是线性的,因为否则很难解释标准化系数。因此,当模型响应实际上是线性时,这种方法是最合适的。例如,如果决定系数很大,就可以确定线性关系。回归分析的优点是简单,计算量小。

    Variance-based methods

    基于方差的方法是一种概率方法,它将输入和输出的不确定性以概率分布的形式进行量化,并将输出方差分解为可归属于输入变量和变量组合的部分。因此,输出对输入变量的敏感性是由该输入在输出中引起的方差量来度量的,这些可以表示为条件期望。

    基于变量的方法允许充分探索输入空间,考虑交互作用非线性响应。由于这些原因,当计算它们是可行的时候,它们被广泛使用。通常,这种计算涉及到蒙特卡罗方法的使用,但由于这可能涉及数千次模型运行,因此可以在必要时使用其他方法(如仿真器)来减少计算开销。注意,只有当输入因子彼此独立时,完全方差分解才有意义。

    Screening

    筛选是基于采样的方法的一个特殊实例。这里的目标是确定哪些输入变量对高维模型的输出不确定性有重要影响,而不是精确地量化敏感性(即方差)。与其他方法相比,筛选的计算成本相对较低,可以用于初步分析,在对剩下的集进行更详细的分析之前,先剔除不具影响力的变量。最常用的筛选方法之一是elementary effect method。

    Scatter plots

    一个简单但有用的工具是在对模型的输入分布进行随机抽样后,绘制输出变量相对于单个输入变量的散点图。这种方法的优点是它还可以处理“给定的数据”,并给出灵敏度的直观指示。定量度量也可以被绘制出来,例如通过测量 Y Y Y X i X_{i} Xi之间的相关性,或者甚至通过非线性回归估计基于方差的度量。

    Fourier amplitude sensitivity test (FAST)

    该方法使用傅里叶级数表示频域内的多元函数(模型),使用单个频率变量。因此,计算灵敏度指数所需的积分变成了单变量,从而节省了计算时间。

    python实现(SALib)

    SALib简介

    SALib是一个用Python编写的用于执行敏感性分析的开源库。它不直接与数学或计算模型交互。相反,SALib负责使用sample函数来生成模型输入,并使用一个analyze函数从模型输出计算灵敏度指数。使用SALib敏感性分析如下四个步骤:

    1. 确定模型输入(参数)及其样本范围,
    2. 运行sample函数来生成模型输入,
    3. 使用生成的输入analyze模型,保存模型输出,
    4. 对输出运行analyze函数来计算灵敏度指数。

    SALib提供了几种敏感性分析方法,如Sobol、Morris和FAST。无论选择哪种方法,都只需要使用两个函数:sample和analyze。

    具体如何使用SALib模块,见下方第二个链接

    建筑能源分析中的敏感性分析

    敏感性分析在建筑能源分析中占有重要地位,它可以确定影响建筑热性能的关键变量。下面将介绍敏感性分析在建筑分析中的典型实现步骤,综述了敏感性分析方法在建筑性能分析中的应用。这些方法可分为局部敏感性分析全局敏感性分析。全局方法可以进一步分为四种方法:回归基于筛选基于方差元模型敏感性分析。全局方法与局部方法相比,计算量虽然增加,但是可以探索整个输入空间,并且大多数方法允许自我验证。

    典型步骤

    1.确定输入变量范围

    灵敏度分析的第一步是确定输入的范围。如何定义输入范围也取决于灵敏度分析方法的选择。对于局部灵敏度分析,它不需要抽样方法来生成输入的组合。而大多数的全局灵敏度分析都需要采样,生成样本的策略。在回归元模型方法中,拉丁超立方体抽样(LHS)因其高效的分层特性而倍受青睐。对于筛选基于方差的方法,它们通常需要使用特殊的抽样方法。

    2.构建建筑能源模型

    大多数灵敏度分析方法都涉及大量的仿真运行。许多建筑仿真软件已被用于敏感性分析,如EnergyPlus, ESP-r,TRNSYS,DOE2。这些软件非常灵活,适合敏感性分析。例如,EnergyPlus和DOE2的模型输入文件都是文本文件,可以使用Excel VBA、Matlab等方便地处理。或者利用基于简化的能源模型,这是快速计算和容易改变输入的方法。

    3.运行建筑能源模型

    这一步是运行一些由建筑能源模拟程序创建的模拟模型。这一步通常是计算时间敏感性分析中最耗时的步骤。并行计算对于加快计算速度是很有帮助的。并行计算有两种方法:1.多核或多处理器单机,例如,EnergyPlus程序可以通过指定同时模拟进程的数量来更好地利用计算机能力;2.使用多台计算机。Tian等人使用校园秃鹰网格(PlymGrid,约200台计算机)运行2400 EnergyPlus模型,以调查气候变化对校园建筑能源性能的影响。使用Plymgrid完成所有这些模拟运行只需一天,而使用一台普通的规范办公室计算机则需要大约一个月的时间。

    4.获取仿真结果

    这一步就很直接,保存下来就行了。

    5.进行敏感性分析

    此步骤是基于从前面步骤获得的输入和输出数据进行灵敏度分析。敏感性分析本身通常不耗费太多时间。但是,如果使用具有大量输入因子的元模型方法,则此步骤可能需要几分钟甚至更长的时间。这是因为某些类型的元模型构建速度较慢,在建立元模型后,可以快速地对其进行敏感性分析。

    6.敏感性分析的呈现

    灵敏度分析结果的表示方法有很多,如散点图龙卷风图箱形图蜘蛛图等。Burhenne等人用散点图研究了典型德国建筑中建筑参数对能源性能的影响。龙卷风图对于比较不同输入因素的相对重要性非常有用。最大的条出现在图的顶部,第二大的出现在之后,以此类推。Morris提出了一种基于Morris方法的图形表示方法来表示每个输入的重要性,将不同输入的基本影响的均值和标准差作成二维图。因此,均值和标准差的低值(在图的左下角)表示不具影响力的输入,而右上角的输入是关键变量。莫里斯图已在许多建筑分析研究中得到应用。在建筑性能分析领域中,蜘蛛网图和箱形图在敏感性分析中应用并不广泛。

    常用灵敏性分析方法

    局部灵敏性分析

    局部灵敏度分析(也称为微分灵敏度分析)属于单因素分析方法的一类。灵敏度通常是在一个因素改变而所有其他因素不变的情况下计算出来的。与全局敏感性分析相比,它非常简单,容易应用和解释,通常只需要较少的仿真运行。然而,该方法只探索围绕基本情况输入因子的一个简化空间。其次,不考虑交互。第三,这种方法没有自我验证,而大多数的全局敏感性分析可以用来解释输出的多少变化是由输入因素造成的。

    全局灵敏性分析

    回归方法

    回归法是建筑能耗分析中应用最广泛的敏感性分析方法。因为这种方法计算速度快,容易理解。在进行蒙特卡罗后,可以使用许多指标来参考,如SRC(标准化回归系数)、PCC(偏相关系数)以及它们的秩变换(SRRC标准化秩回归系数、PRCC偏相关系数)。SRC和PCC只适用于线性模型,秩变换(SRRC和PCC)可用于输入和输出之间的非线性单调函数。如果输入之间没有相关性,SRC和PRC对输入的重要性进行排序时给出了相同的结果。SRC与PRC的不同之处在于PRC适用于相关输入,因为它排除了输入因素之间相关性的影响,但SRC仅在不相关输入的情况下有效。然而,有许多新的敏感性分析方法来处理相关的输入。

    另一种常用的回归方法是逐步回归法。前向逐步法是灵敏度分析中应用最广泛的方法。最重要的因素首先进入模型,然后下一个重要的因素也进入模型,重复这个过程,直到统计检验中没有显著的变量。选择准则包括SRC、t值、调整r平方、Akaike信息准则。

    基于筛选的方法

    筛选方法的目的往往是在不降低输出方差的情况下,从大量的因素中筛选出一些输入因素。Morris方法是建筑性能分析领域中最常用的筛选方法,属于全局敏感性分析,因为每一步的基线变化和最终的敏感性度量是通过对输入空间的不同点进行平均计算得到的。输入因子被视为离散的数值(也称为水平),与其他直接从分布中获取输入值的全局方法不同。利用Morris方法可以得到两个灵敏度指标:一个是输入因素对输出的主要影响,另一个是评估与其他因素的相互作用或非线性影响。当项目中影响因素较少,非影响因素较多时,该方法更适用。与其它全局灵敏度分析方法相比,该方法的主要优点是计算量小。缺点是,种方法倾向于通过对输入因素进行排序来提供定性的度量,无法量化不同因素对产出的影响。因此,这种方法不允许自我验证,这意味着分析人员不知道在分析中考虑了多少输出的总方差。其他类型的全局敏感性分析(例如基于回归或方差的方法)通常可以提供此信息。Morris方法的另一个缺点是,由于该方法使用的抽样方法不能收敛到模型输出的总体均值,因此不能对建筑节能性能进行不确定性分析

    基于方差的方法

    基于方差的方法是对对应输入的输出的不确定性进行分解。该方法中使用的两种主要的敏感性度量是一阶总阶效应。一阶效应和总效应之间的差异可以反映变量之间相互作用的影响。如果研究目的是确定在能量模型中不重要的因素,那么应该使用总阶效应。相反,如果目的是优先考虑节能措施,则应优先考虑一阶效应。

    该方法是一种无模型方法,适用于复杂的非线性非加性模型。该方法可以量化各输入变量的方差,并考虑各变量之间的相互作用。该方法的缺点是计算量大。两种常用的方法是FASTSobol。经典的FAST方法只考虑非线性效应,而不考虑相互作用效应。Sobol方法可以分解所有的输出方差,这意味着分析中不会留下输出的方差。但是,与其他全局敏感性分析方法相比,Sobol方法的计算开销要大得多。

    基于元模型的方法(Meta-model based method)

    元模型敏感性分析是一个两阶段的方法。首先,使用非参数回归方法创建元模型,这些方法没有预先确定的形式(如线性或非线性回归),因此它可以适用于复杂的模型。其次,使用基于方差的元模型计算灵敏度。元模型是使用统计(或机器学习)模型来近似目标函数。使用元模型的主要观点是,运行元模型比运行详细的建筑能源模拟模型所需的时间要少得多。因此,与基于方差的方法相比,该元模型方法可以提供更有效的敏感性指数。该方法还可以量化不同输入因素下输出的方差,因为它使用了前面介绍的基于方差的方法。

    灵敏度分析中常用的元模型有MARS(多元自适应回归样条)、ACOSSO(自适应分量选择与平滑算子)、支持向量机、GP(高斯过程)、TGP (treed高斯过程)。MARS结合了样条回归、逐步模型拟合和递归分区。ACOSSO可以被看作是一个加权的或自适应的COsSO(元件选择收缩算子),它使用一个重新标度的范数来允许对功能元件进行更灵活的估计。GP模型是在有限维向量到无限维向量上的广义多元高斯分布,在机器学习领域非常流行。支持向量机(Support vector machine, SVM)是监督学习中非常流行的一种选择,它通过在特征空间的一个大的变换版本中构造线性边界来产生非线性边界。TGP提供完全贝叶斯非平稳和非线性回归模型,以提高预测能力。

    参考

    https://wikimili.com/en/Sensitivity_analysis
    https://salib.readthedocs.io/en/latest/basics.html
    tian wei “A review of sensitivity analysis methods in building energy analysis”(2013)

    展开全文
  • 采用顺序优化的方法,首先对轧机机架的体积进行最小优化,然后在对优化参数进行敏感性分析的基础上,针对优化结果存在的潜在问题,进一步以横向位移最小作为目标函数优化。这种敏感度分析和顺序优化相结合的策略克服...
  • 敏感性分析

    千次阅读 2020-11-05 10:24:07
    敏感性分析是投资项目的经济评价中常用的一种研究不确定性的方法。它在确定性分析的基础上,进一步分析不确定性因素对投资项目的最终经济效果指标的影响及影响程度。 类型 敏感性因素一般可选择主要参数(如销售...

    敏感性分析是投资项目的经济评价中常用的一种研究不确定性的方法。它在确定性分析的基础上,进一步分析不确定性因素对投资项目的最终经济效果指标的影响及影响程度。


    类型

    敏感性因素一般可选择主要参数(如销售收入、经营成本、生产能力、初始投资、寿命期、建设期、达产期等)进行分析。若某参数的小幅度变化能导致经济效果指标的较大变化,则称此参数为敏感性因素,反之则称其为非敏感性因素。
    敏感性分析


    敏感性分析是指从定量分析的角度研究有关因素发生某种变化对某一个或一组关键指标影响程度的一种不确定分析技术。其实质是通过逐一改变相关变量数值的方法来解释关键指标受这些因素变动影响大小的规律。
    利润的敏感性分析


    利润的敏感性分析是指专门研究制约利润的有关因素在特定条件下发生变化时对利润所产生影响的一种敏感性的分析方法。进行利润敏感性分析的主要目的是计算有关因素的利润灵敏度指标,揭示利润与有关因素之间的相对关系,并利用灵敏度指标进行利润预测。

    步骤

    1、确定敏感性分析指标
    敏感性分析的对象是具体的技术方案及其反映的经济效益。因此,技术方案的某些经济效益评价指标,例如息税前利润、投资回收期、投资收益率、净现值、内部收益率等,都可以作为敏感性分析指标。
    2、计算该技术方案的目标值
    一般将在正常状态下的经济效益评价指标数值,作为目标值。
    3、选取不确定因素
    在进行敏感性分析时,并不需要对所有的不确定因素都考虑和计算,而应视方案的具体情况选取几个变化可能性较大,并对经效益目标值影响作用较大的因素。例如:产品售价变动、产量规模变动、投资额变化等;或是建设期缩短,达产期延长等,这些都会对方案的经济效益大小产生影响。
    4、计算不确定因素变动时对分析指标的影响程度
    若进行单因素敏感性分析时,则要在固定其它因素的条件下,变动其中一个不确定因素;然后,再变动另一个因素(仍然保持其它因素不变),以此求出某个不确定因素本身对方案效益指标目标值的影响程度。
    5、找出敏感因素,进行分析和采取措施,以提高技术方案的抗风险的能力。

    资源

    全局敏感性分析工具箱

    临床测试性能的Matlab项目

    展开全文
  • 针对体积模型中泥质、烃俘获截面参数变化范围较大,不利于在解释中确定准确参数和在解释过程中对实际资料微调参数的问题,采用参数敏感性方法,进行对各参数的偏导数分析和在实际井当中的应用,取得了不同深度下各参数...
  • 引入全局敏感性分析方法,研究典型传输场景下113个输入参数的不确定性对热畸变参数(ND)数值模型的影响。通过主效应检测将输入参数分为对ND影响重要的参数和不重要的参数;把主效应检测筛选出的不重要参数固定后,...
  • clear all  clc hold off %sample of size N N=100; %sample generation x1=rand(N,1)-0.5; x2=rand(N,1)-0.5; x3=rand(N,1)-0.5; ...%set n....说明参数敏感性为:X2>X1>X3
  • prosail模型敏感性分析

    千次阅读 热门讨论 2020-04-06 22:07:55
    敏感性分析一般借助simlab软件,具体敏感性分析方法可以参考https://www.jianshu.com/p/2656af9f8d81 首先通过simlab软件进行样本采样,生成.SAM文件(我定义了7个参数), 然后读取文件中的参数值,代入PROSAIL...
  • http://blog.csdn.net/pipisorry/article/details/51482120文本分析的三类参数估计方法-最大似然估计MLE、最大后验概率估计MAP及贝叶斯估计。参数估计参数估计中,我们会遇到两个主要问题:(1)如何去估计参数的...
  • 时空图像测速法的敏感性分析及不确定度评估.pdf,时空图像测速方法(STIV)是一种以测速线为分析区域、通过检测合成时空图像的纹理主方向估计一维时均流速测量方法。由于具有空间分辨率高、实时性强的优点,在河流...
  • PageRank模型中的参数与其敏感性分析

    千次阅读 2015-05-11 15:10:39
    PageRank模型中的参数与其敏感性分析
  • Python中的模型敏感分析(使用Salib)

    千次阅读 2020-12-21 02:59:40
    https://en.wikipedia.org/wiki/Sensitivity_analysis​en.wikipedia.org敏感分析是指对一个模型输出中的不确定进行研究,并进一步判断不确定的来源,也就是研究哪个输入参数的改变造成的输出变化的程度大小....
  • 模型灵敏性分析总结

    千次阅读 2020-10-27 11:55:12
    建模过程会对问题做一些假设,需要考虑所得结果对每一条假设的敏感程度以及各个参数敏感程度。 灵敏性分析常常是根据对数据提出的假设做分析,将灵敏性数据表示成相对改变量或者百分比改变的形式,要比表示成绝对...
  • sobol全局灵敏性分析

    千次阅读 2020-12-22 14:25:32
    0.750.750.250.250.250.750.3750.3750.6250.8750.3750.1250.250.750.250.3750.3750.6250.750.250.750.8750.3750.125Sobol全局灵敏性分析最近在研究全局敏感性分析方法中的Sobol方法,...
  • 采用正交设计的方法参数因子进行敏感性分析,得到下沉系数和拐点偏移距属敏感因子,主要影响角正切和开采影响传播角为不敏感因子;采用仿真计算的方法分析了测量误差对参数精度的影响.研究结果表明:以测量中误差与...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,975
精华内容 34,390
关键字:

参数敏感性分析方法