我正在尝试构建Hammersley和Halton准随机序列。例如,我有三个变量x1、x2和x3。它们都是整数值。x1的取值范围是2-4,x2的取值范围是2 -4,x3的取值范围是1-7。有没有任何python包可以创建这些序列?我看到有一些project,如sobol或SALib,但它们没有实现Halton和Hammersley。顺祝商祺
zbdgwd5y1#
大多数为任意维提供低差异方法的库方法不包括允许您为每个单独维/组件定义任意间隔的参数。然而,实际上在所有这些情况下,您都可以通过添加一行代码来修改现有方法以满足您的要求。了解这一点将显著增加您可以选择使用的库的数量!对于几乎所有的低差异(准随机)序列,每一项都等分布在半开域[0,1)中,同样,对于d维序列,每一项的每个分量都福尔斯在[0,1)中.这包括哈尔顿序列(这是货车德科普特序列的推广)、哈默斯利序列、外尔/克罗内克序列、索Perl序列和尼德赖特序列。通过线性变换x = a +(b-a)z,可以实现将值从[0,1)转换为[a,B)。因此,如果规范低差异序列的第n项是(z_1,z_2,z,z_3),则您期望的序列是(2+2z1,2+2z2,1+6*z3)。
5hcedyr02#
从SciPy 1.7开始,SciPy中有一个Sobol'和Halton低差异序列。还有一个方便的函数scale,可用于将值缩放到给定的界限。https://scipy.github.io/devdocs/reference/stats.qmc.html
scale
2条答案
按热度按时间zbdgwd5y1#
大多数为任意维提供低差异方法的库方法不包括允许您为每个单独维/组件定义任意间隔的参数。然而,实际上在所有这些情况下,您都可以通过添加一行代码来修改现有方法以满足您的要求。了解这一点将显著增加您可以选择使用的库的数量!
对于几乎所有的低差异(准随机)序列,每一项都等分布在半开域[0,1)中,同样,对于d维序列,每一项的每个分量都福尔斯在[0,1)中.
这包括哈尔顿序列(这是货车德科普特序列的推广)、哈默斯利序列、外尔/克罗内克序列、索Perl序列和尼德赖特序列。
通过线性变换x = a +(b-a)z,可以实现将值从[0,1)转换为[a,B)。因此,如果规范低差异序列的第n项是(z_1,z_2,z,z_3),则您期望的序列是(2+2z1,2+2z2,1+6*z3)。
5hcedyr02#
从SciPy 1.7开始,SciPy中有一个Sobol'和Halton低差异序列。还有一个方便的函数
scale
,可用于将值缩放到给定的界限。https://scipy.github.io/devdocs/reference/stats.qmc.html