使用 Python 进行多级蒙特卡罗
项目描述
MLMCPy -多级M onte Carlo与Py thon _
一般的
MLMCPy 是用于不确定性传播的多级蒙特卡罗 (MLMC) 方法的开源 Python 实现。一旦用户定义了他们的计算模型并指定了模型输入参数中的不确定性,MLMCPy 就可以用来估计感兴趣量的期望值,使其达到指定的精度。支持并行执行所需的模型评估(如果安装了 mpi4py),并且提供了 MLMC 方法的扩展来计算更高级的统计数据(例如,协方差、CDF)。
依赖项
MLMCPy 旨在与 Python 2.7 一起使用,并依赖于以下包:
- 麻木的
- scipy
- mpi4py(并行运行可选)
- pytest(运行单元测试时可选)
示例用法
'''
Simple example of propagating uncertainty through a spring-mass model using MLMC.
Estimates the expected value of the maximum displacement of the system when the spring
stiffness is a random variable. See the /examples/spring_mass/from_model/ for more details.
'''
import numpy as np
import sys
from MLMCPy.input import RandomInput
from MLMCPy.mlmc import MLMCSimulator
# Add path for example SpringMassModel to sys path.
sys.path.append('./examples/spring_mass/from_model/spring_mass')
import SpringMassModel
# Step 1 - Define random variable for spring stiffness:
# Need to provide a sampleable function to create RandomInput instance in MLMCPy
def beta_distribution(shift, scale, alpha, beta, size):
return shift + scale*np.random.beta(alpha, beta, size)
stiffness_distribution = RandomInput(distribution_function=beta_distribution,
shift=1.0, scale=2.5, alpha=3., beta=2.)
# Step 2 - Initialize spring-mass models. Here using three levels with MLMC.
# defined by different time steps
model_level1 = SpringMassModel(mass=1.5, time_step=1.0)
model_level2 = SpringMassModel(mass=1.5, time_step=0.1)
model_level3 = SpringMassModel(mass=1.5, time_step=0.01)
models = [model_level1, model_level2, model_level3]
# Step 3 - Initialize MLMC & predict max displacement to specified error (0.1).
mlmc_simulator = MLMCSimulator(stiffness_distribution, models)
[estimates, sample_sizes, variances] = mlmc_simulator.simulate(epsilon=1e-1)
入门
开始使用 MLMCPy 的最佳方法是查看示例/目录中的脚本。可以在examples/spring_mass/from_model
目录中找到通过弹簧质量系统传播不确定性的简单示例。第二个示例演示了用户可以从目录中的多个模型级别(而不是他们可以直接评估的模型)访问输入输出数据的情况examples/spring_mass/from_data/
。docs/MLMCPy_documentation.pdf
有关更多信息,请参阅(正在进行的工作)中的源代码文档。
测试
可以通过从 tests/ 目录运行“py.test”来执行测试,以确保正确安装。
开发者
UQ 卓越中心
美国宇航局兰利研究中心
弗吉尼亚州汉普顿
该软件由美国宇航局兰利研究中心的高性能计算孵化器 (HPCI) 资助和开发。
贡献者:James Warner ( james.e.warner@nasa.gov )、Luke Morrill、Juan Barrientos
执照
版权所有 2018 美国政府,由美国国家航空航天局局长代表。根据美国法典第 17 篇,在美国不主张版权。保留所有其他权利。
免责声明 无担保:主题软件按“原样”提供,不提供任何形式的明示、暗示或法定担保,包括但不限于主题软件将符合规范的任何担保、任何暗示担保适销性、特定用途的适用性或免于侵权、主题软件无错误的任何保证,或文档(如果提供)将符合主题软件的任何保证。本协议不以任何方式构成政府机构或任何先前接受者对因使用本主题软件而产生的任何结果、产生的设计、硬件、软件产品或任何其他应用程序的认可。此外,政府机构不承担与第三方软件有关的所有保证和责任,
弃权和赔偿:接收方同意放弃针对美国政府、其承包商和分包商以及任何先前的接收方的任何和所有索赔。如果接收方对主题软件的使用导致任何责任、要求、损害、费用或损失,包括基于接收方使用主题软件或由此产生的产品的任何损害,接收方应赔偿并承担伤害在法律允许的范围内,美国政府、其承包商和分包商以及任何先前的接收者。接受方对任何此类事项的唯一补救措施是立即单方面终止本协议。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。