首页 > 解决方案 > 使用来自 SALIb 的 saltelli.sample 和具有整数值的变量

问题描述

我想为 Sobol 分析创建一个 Saltelli 样本。为此,我使用SALib 包

为了创建示例,需要执行以下操作:

from SALib.sample import saltelli
problem = {
    'num_vars': 3,
    'names': ['x1', 'x2', 'x3'],
    'bounds': [[-3, 10],
               [-3.14159265359, 3.14159265359],
               [-3.14159265359, 3.14159265359]]
}

其中“num_vars”是在“bounds”中给出的变量的数量。

我希望变量 x1 的值都是整数,但我不断得到实数。有没有办法在运行 saltelli.sample 时指定类型。

谢谢

标签: python

解决方案


我认为没有一种简单的方法可以指定整数而不是浮点数。采样方法使用 Sobol' 序列在 (0,1) 上生成浮点数,然后将它们乘以边界。

另一种方法是修改生成的样本。例如,您可以修改第一个边界[-3.5,10.5],然后对列进行四舍五入,以使整数值均匀分布在 -3 到 10 之间的整数上。然后,您可以在以后的计算中使用舍入值而不会出现问题,因为整列使用相同的方法进行转换。

problem = {
    'num_vars': 3,
    'names': ['x1', 'x2', 'x3'],
    'bounds': [[-3.5, 10.5],
               [-3.14159265359, 3.14159265359],
               [-3.14159265359, 3.14159265359]]
}

推荐阅读