當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy qmc.Halton用法及代碼示例


本文簡要介紹 python 語言中 scipy.stats.qmc.Halton 的用法。

用法:

class  scipy.stats.qmc.Halton(d, *, scramble=True, optimization=None, seed=None)#

霍爾頓序列。

將範德科普特序列推廣到多維的偽隨機數生成器。 Halton 序列使用base-two Van der Corput 序列作為第一個維度,base-three 作為第二個維度, 作為其n-dimension。

參數

d int

參數空間的維度。

scramble 布爾型,可選

如果為真,請使用歐文加擾。否則不進行加擾。默認為真。

optimization {無,“random-cd”,“lloyd”},可選

是否使用優化方案來提高采樣後的質量。請注意,這是一個後處理步驟,不能保證樣品的所有屬性都得到保留。默認為“無”。

  • random-cd:坐標的隨機排列以降低中心差異。基於中心差異的最佳樣本不斷更新。與使用其他差異度量相比,基於中心差異的采樣對 2D 和 3D 子投影顯示出更好的 space-filling 魯棒性。

  • lloyd:使用修改後的Lloyd-Max 算法擾動樣本。該過程收斂到等間隔的樣本。

seed {無,整數, numpy.random.Generator },可選

如果種子是 int 或 None,一個新的numpy.random.Generator是使用創建的np.random.default_rng(seed).如果種子已經是一個Generator實例,然後使用提供的實例。

注意

Halton 序列對於即使是適度大的維度也有嚴重的條帶偽影。這些可以通過加擾來改善。加擾還支持基於複製的錯誤估計並將適用性擴展到無界被積函數。

參考

[1]

Halton,“關於某些 quasi-random 點序列在評估多維積分中的效率”,Numerische Mathematik,1960 年。

[2]

A. B.歐文。 “R 中的隨機 Halton 算法”,arXiv:1706.02808,2017 年。

例子

從 Halton 的低差異序列中生成樣本。

>>> from scipy.stats import qmc
>>> sampler = qmc.Halton(d=2, scramble=False)
>>> sample = sampler.random(n=5)
>>> sample
array([[0.        , 0.        ],
       [0.5       , 0.33333333],
       [0.25      , 0.66666667],
       [0.75      , 0.11111111],
       [0.125     , 0.44444444]])

使用差異標準計算樣本的質量。

>>> qmc.discrepancy(sample)
0.088893711419753

如果有人想繼續現有的設計,可以通過再次調用 random 來獲得加分。或者,您可以跳過一些要點,例如:

>>> _ = sampler.fast_forward(5)
>>> sample_continued = sampler.random(n=5)
>>> sample_continued
array([[0.3125    , 0.37037037],
       [0.8125    , 0.7037037 ],
       [0.1875    , 0.14814815],
       [0.6875    , 0.48148148],
       [0.4375    , 0.81481481]])

最後,樣本可以縮放到邊界。

>>> l_bounds = [0, 2]
>>> u_bounds = [10, 5]
>>> qmc.scale(sample_continued, l_bounds, u_bounds)
array([[3.125     , 3.11111111],
       [8.125     , 4.11111111],
       [1.875     , 2.44444444],
       [6.875     , 3.44444444],
       [4.375     , 4.44444444]])

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.qmc.Halton。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。