Max*_*603 2 python numpy scipy python-3.x
我正在尝试执行敏感性分析,并且我开始学习 python,所以我想在 python 中完成它。我找到了一个名为的包,SALib但我真的不知道如何实现我自己的等式。例如,这是我的等式:
ET = 0,0031*C*(R+209)*(t*(t+15)**-1)
Run Code Online (Sandbox Code Playgroud)
首先,我必须定义我的问题:
problem = {'num_vars': 3,
'names': ['C', 'R', 't'],
'bounds': [[10, 100],
[3, 7],
[-10, 30]]
}
Run Code Online (Sandbox Code Playgroud)
在此之后,我必须生成输入样本,但我如何使用自己的方程生成这些样本?也许有人对 SALib 有经验并且可以帮助我。我不觉得包文档真的很有帮助。
该函数saltelli.sample()将生成一个矩阵,其中每一列代表在 中定义的变量problem并在 中定义的相应边界中采样problem。之后,您可以将模型定义为一个函数,如下所示,并计算ET()这些输入的函数值。结果是一个函数值向量,可以将其发送SALib到文档中给出的其他函数(https://github.com/SALib/SALib)。
from SALib.sample import saltelli
from SALib.analyze import sobol
def ET(X):
# column 0 = C, column 1 = R, column 2 = t
return(0.0031*X[:,0]*(X[:,1]+209)*(X[:,2]*(X[:,2]+15))**-1)
problem = {'num_vars': 3,
'names': ['C', 'R', 't'],
'bounds': [[10, 100],
[3, 7],
[-10, 30]]
}
# Generate samples
param_values = saltelli.sample(problem, 10000000, calc_second_order=False)
# Run model (example)
Y = ET(param_values)
# Perform analysis
Si = sobol.analyze(problem, Y, print_to_console=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8852 次 |
| 最近记录: |