蒙特卡洛方法在不确定性问题中的应用

发布于:2024-08-01 ⋅ 阅读:(127) ⋅ 点赞:(0)

一、蒙特卡洛方法

蒙特卡洛方法(Monte Carlo Method)是一大类随机算法的总称,是一种数值计算技术,其思想是其思想是通过随机样本来估计真实值:从问题的概率分布中生成大量随机样本,对每个样本进行模拟和计算,然后对所有样本的结果进行统计分析,以估计复杂系统的行为或特性。它广泛应用于积分计算、随机过程模拟、金融风险分析、物理系统模拟和优化问题等领域,依赖于大数定律和中心极限定理来确保结果的准确性和可靠性。

1.1 蒙特卡洛方法近似计算 π \pi π


正方形面积:4
圆面积:pi
在正方形内随机投点n次,点落在圆内的概率: p = π 4 p=\frac{\pi}{4} p=4π,设落在圆内的点的样本数为m,则
p = m n = π 4 p=\frac{m}{n}=\frac{\pi}{4} p=nm=4π π = 4 m n \pi=\frac{ 4m }{n} π=n4m

import numpy as np

n = 100000  # 样本数量
m = 0  # 落在圆中的样本数量
x = np.random.uniform(low=-1, high=1, size=n)
y = np.random.uniform(low=-1, high=1, size=n)

for i in (x ** 2 + y ** 2 <= 1):
    if i == True:
        m += 1

print("pi=", 4 * m / n)

pi= 3.13912

1.2 蒙特卡洛方法近似定积分

一元函数定积分是指对一个变量的函数在某个区间上的积分。具体来说,给定一个函数 f ( x ) f(x) f(x) 和一个区间 [ a , b ] [a, b] [a,b],其定积分表示为: ∫ a b f ( x ) d x \int_a^bf(x)dx abf(x)dx。其几何意义是:函数 f ( x ) f(x) f(x)在区间 [ a , b ] [a, b] [a,b]上与x轴之间的面积。

1.2.1 蒙特卡洛方法近似定积分步骤

蒙特卡洛方法通过随机采样来近似计算一元函数定积分 I = ∫ a b f ( x ) d x I=\int_a^bf(x)dx I=abf(x)dx。其基本步骤如下:

  1. 在区间 [ a , b ] [a,b] [a,b]做随机采样,得到n个样本点: { x i } i = 1 n \{x_i\}_{i=1}^n {xi}i=1n
  2. 对每个样本点 x i x_i xi,计算函数值 f ( x i ) f(x_i) f(xi)
  3. 计算这些函数值得平均值 f ‾ = 1 N ∑ i = 1 N f ( x i ) \overline{f} = \frac{1}{N} \sum_{i=1}^N f(x_i) f=N1i=1Nf(xi)
  4. 估计积分值: ∫ a b f ( x ) d x ≈ ( b − a ) ⋅ f ‾ \int_a^b f(x) dx \approx (b - a) \cdot \overline{f} abf(x)dx(ba)f

1.2.2 示例

f ( x ) = 1 1 + sin ⁡ x ⋅ ( ln ⁡ x ) 2 f(x)=\frac{1}{1+\sin x \cdot (\ln x)^2} f(x)=1+sinx(lnx)21,计算 f f f在区间 [ 0.8 , 3 ] [0.8,3] [0.8,3]的定积分: I = ∫ 0.8 3 f ( x ) d x I=\int_{0.8}^3f(x) dx I=0.83f(x)dx

import numpy as np
from scipy import integrate

f = lambda x: 1 / (1 + np.sin(x) * (np.math.log(x, np.e) ** 2))

n = 100000
sum = 0
x = np.random.uniform(low=0.8, high=3, size=n)
I = (3 - 0.8) * 1 / n * np.sum([f(i) for i in x])
print(I)

(v, err) = integrate.quad(f, 0.8, 3)  # integrate.quad()求一重积分,err是误差
print(v)

1.3 蒙特卡洛方法近似计算期望值

期望定义:
离散随机变量:如果 X X X 是一个离散随机变量,且其取值为 x 1 , x 2 , … , x n x_1, x_2, \ldots, x_n x1,x2,,xn,对应的概率为 P ( X = x i ) = p i P(X = x_i) = p_i P(X=xi)=pi,则期望值 E ( X ) E(X) E(X) 定义为: E ( X ) = ∑ i = 1 n x i ⋅ p i E(X) = \sum_{i=1}^n x_i \cdot p_i E(X)=i=1nxipi
连续随机变量:如果 X X X 是一个连续随机变量,且其概率密度函数为 f ( x ) f(x) f(x),则期望值 E ( X ) E(X) E(X)定义为: E ( X ) = ∫ − ∞ ∞ x ⋅ f ( x ) d x E(X) = \int_{-\infty}^{\infty} x \cdot f(x)dx E(X)=xf(x)dx

1.3.1 蒙特卡洛方法近似计算期望值步骤

蒙特卡洛方法通过随机采样来近似计算期望值。其基本步骤如下:

  1. 确定随机变量 X X X及其分布
  2. 根据随机变量X的分布随机采样,生成N个样本 x 1 , x 2 , … , x N x_1, x_2, \ldots, x_N x1,x2,,xN
  3. 计算样本的平均值 X ‾ = 1 N ∑ i = 1 N x i \overline{X} = \frac{1}{N} \sum_{i=1}^N x_i X=N1i=1Nxi
  4. 估计期望,样本均值 X ‾ \overline{X} X即为期望值的近似估计

1.3.3 示例

f ( x ) = 1 2 π e − x 2 2 f(x) = \frac{1}{\sqrt{2\pi}} e^{-\frac{x^2}{2}} f(x)=2π 1e2x2

1.4 蒙特卡洛方法的优缺点

优点:

  • 简单易行:实现简单,适用于高维积分和复杂区域,是一种强大的数值积分工具,尤其在高维和复杂区域的积分计算中具有独特优势。
  • 适用广泛:不受函数形式和维数的限制。

缺点:

  • 收敛速度慢:收敛速度较慢,通常需要大量样本点才能得到较高精度。
  • 随机性:结果具有随机性,每次计算可能略有不同。

二、样本均值近似算法在随机规划问题中的应用

2.1 样本均值近似算法解决随机规划的思想

样本均值近似方法简称(Sample Average Approximation,SAA),是蒙特卡洛方法的一种具体应用,对一类具有随机分布特性的最优解进行了研究。其原理是先产生一个随机样点,再用样点的均值来逼近期望值函数。对所得到的样本均值逼近问题展开求解,这个过程被反复多次,直到估计的目标值与下界的差值低于某一阈值时,才会停止迭代,从而获得满意的解。

假设不确定需求值服从正态分布,有确定的分布函数,可以采用样本均值近似算法,对随机变量x进行n次随机抽取样本,生成独立同分布的样本,称为不同情景s。此时不确定性问题即转化为若干个确定性优化问题,不同情景下的样本均值即为所求解。

不同情景的作用在于将不确定性问题转化为若干个确定性优化问题。每个情景代表一种可能的需求情况,通过生成多个可能的情景(scenarios),在每个情景下进行确定性优化,从而在不确定性环境中找到一个稳健的解决方案。

2.2 理论基础

采用样本均值近似算法的核心思想是利用大数定律和中心极限定理,这些定理为我们提供了理论基础,使得在有确定分布的情况下,样本均值可以很好地近似总体的期望值。以下是详细解释:
大数定律
大数定律(Law of Large Numbers)是概率论中的一个基本定理,它表明,当样本数量 n n n 足够大时,样本均值会收敛到总体的期望值。具体来说,如果 X 1 , X 2 , … , X n X_1, X_2, \ldots, X_n X1,X2,,Xn 是从总体中抽取的独立同分布的随机变量,且每个随机变量的期望值为 μ \mu μ,则样本均值 X ‾ \overline{X} X 会收敛到 μ \mu μ
X ‾ = 1 n ∑ i = 1 n X i → μ 当 n → ∞ \overline{X} = \frac{1}{n} \sum_{i=1}^n X_i \rightarrow \mu \quad \text{当} \quad n \rightarrow \infty X=n1i=1nXiμn

这意味着,通过增加样本数量,我们可以使样本均值越来越接近总体的期望值。

中心极限定理
中心极限定理(Central Limit Theorem)进一步支持了样本均值近似算法的有效性。该定理表明,对于一组独立同分布的随机变量 X 1 , X 2 , … , X n X_1, X_2, \ldots, X_n X1,X2,,Xn,无论这些随机变量的原始分布是什么,当样本数量 n n n 足够大时,样本均值的分布将近似于正态分布,即: X ‾ ∼ N ( μ , σ 2 n ) \overline{X} \sim N\left(\mu, \frac{\sigma^2}{n}\right) XN(μ,nσ2)

其中, μ \mu μ是总体的期望值, σ 2 \sigma^2 σ2 是总体的方差。这意味着,即使原始数据不是正态分布,样本均值的分布在大样本情况下也会接近正态分布。

为什么有确定的分布,就可以采用样本均值近似算法?

  • 期望值的存在:有确定的分布意味着我们知道总体的概率分布函数 ( f(x) ),从而可以确定总体的期望值 ( \mu ) 和方差 ( \sigma^2 )。这为我们提供了一个明确的目标,即通过样本均值来估计这个期望值。
  • 独立同分布样本:从确定的分布中抽取的样本是独立同分布的,这满足大数定律和中心极限定理的前提条件。
  • 样本均值的收敛性:根据大数定律,当样本数量 n n n 足够大时,样本均值 X ‾ \overline{X} X 会收敛到总体的期望值 μ \mu μ。这使得样本均值成为一个可靠的估计量。
  • 样本均值的分布特性:根据中心极限定理,当样本数量 n n n 足够大时,样本均值的分布近似于正态分布。这使得我们可以使用正态分布的性质来进行进一步的统计推断和置信区间估计。

参考

  • https://blog.csdn.net/robert_chen1988/article/details/90319257
  • https://blog.csdn.net/wdl1992/article/details/108410404

网站公告

今日签到

点亮在社区的每一天
去签到