Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用SALIb中的saltelli.sample和具有整数值的变量_Python - Fatal编程技术网

Python 使用SALIb中的saltelli.sample和具有整数值的变量

Python 使用SALIb中的saltelli.sample和具有整数值的变量,python,Python,我想为Sobol分析创建一个Saltelli样本。为此,我使用了 要创建示例,需要执行以下操作: 来自SALib.sample导入saltelli 问题={ “num_vars”:3, “名称”:['x1','x2','x3'], ‘界限’:[-3,10], [-3.14159265359, 3.14159265359], [-3.14159265359, 3.14159265359]] } 其中,“num_vars”是在“bounds”中给出边界的变量数 我希望变量x1的值都是整数,但我一直

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

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

来自SALib.sample导入saltelli
问题={
“num_vars”:3,
“名称”:['x1','x2','x3'],
‘界限’:[-3,10],
[-3.14159265359, 3.14159265359],
[-3.14159265359, 3.14159265359]]
}
其中,“num_vars”是在“bounds”中给出边界的变量数

我希望变量x1的值都是整数,但我一直得到实数。运行saltelli.sample时是否有方法指定类型


谢谢

我认为没有简单的方法来指定整数而不是浮点数。采样方法使用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]]
}

@用户38738,我很乐意提供解决方案。请接受和/或投票我对上述问题有后续问题。你的回答很好地解决了这个问题,但是如果你想进行Sobol分析,就会出现另一个问题。简而言之,Sobol分析需要这样的东西:Si=Sobol.analyze(problem,Y)。这里的问题是“问题”将生成实数网格,而不是整数网格,因此Sobol分析可以将使用整数输入生成的输出链接到实数输入。我不知道如何解决这个问题,因为sobol.analyze需要使用“问题”字典。sobol.analyze(problem,Y)中的算法不会创建或使用另一个像saltelli.sample那样的真实样本。对于您的示例,“问题”仅适用于“num_vars”和“names”条目。“num_vars”指定如何生成采样矩阵(示例:)。“名称”标记计算的输出。不会对实际值进行第二次采样。