首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用带有布尔或离散输入参数的python SALib saltelli.sample方法

使用带有布尔或离散输入参数的python SALib saltelli.sample方法
EN

Stack Overflow用户
提问于 2016-04-14 01:59:42
回答 1查看 987关注 0票数 4

我想使用Sobol方法对python中的一个复杂模型进行敏感性分析。该模型包括连续的、离散的以及布尔输入参数。

是否可以使用SALib python包来执行此分析?具体地说,当一些输入参数实际上没有上界或下界,而只有几个离散选项(例如,0或1 )时,是否可以使用saltelli.sample方法生成输入参数的准随机集

以下是SALib文档中的saltelli.sample方法(生成低差异序列)的示例:

代码语言:javascript
运行
复制
from SALib.sample import saltelli
import numpy as np

problem = {
  'num_vars': 3, 
  'names': ['x1', 'x2', 'x3'], 
  'bounds': [[-np.pi, np.pi]]*3
}

# Generate samples
param_values = saltelli.sample(problem, 1000, calc_second_order=True)

我的问题是,如果我的输入参数更像这样,我如何(如果有的话)使用这个方法:

代码语言:javascript
运行
复制
x1: continuous (so possible values could be 0, 0.01, 1.2...0.987)
x2: boolean (so possible values are 0 or 1)
x3: discrete (so possible values are 0, 0.25, 0.5, 0.75, or 1)
EN

回答 1

Stack Overflow用户

发布于 2016-04-15 03:31:19

在Github上发布了解决方案,并想在这里与其他人分享:

现在还没有办法(正确地)对离散值或布尔值进行采样。所以我建议一个技巧:采样一个连续的范围,四舍五入到你想要的最接近的值。

如果它是一个布尔变量,在0,1上采样,然后向上或向下舍入。如果它是离散的,有N个结果,在0,N上采样,并四舍五入到最接近的整数。

前段时间有一篇关于这方面的博文:https://waterprogramming.wordpress.com/2014/02/11/extensions-of-salib-for-more-complex-sensitivity-analyses/ (列表中的第二项)

这有点老生常谈,但我认为这是或多或少被接受的做事方式,特别是当你混合连续和离散变量的时候。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36606101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档