OMSCS-SIM课程笔记03-Hand and Spreadsheet Simulations
这个系列是Gatech OMSCS 仿真和建模课程(ISYE 6644: Simulation and Modeling for Engineering and Science)的同步课程笔记。课程内容涉及计算机模拟在统计分析和建模中的应用,本节介绍随机模拟的基本方法。
Stepping Through a Differential Equation
在正式介绍随机模拟前我们首先来看一下如何通过模拟的方法来求解微分方程。假设我们已知函数
整理后可以得到迭代形式:
这种求解微分方程的方法称为Euler方法(Euler’s method)。对于给定的边界条件,我们可以利用Euler方法进行迭代来获得
Monte Carlo Integration
接下来我们考虑积分的情况。对于任意可积函数
通过换元可以把它转换成[0, 1]标准区间上的积分:
其中,
使用MC时我们首先从(0, 1)区间上的均匀分布进行采样,然后定义
其中
进一步对
也就是说
更进一步我们还可以估计
那么
其中
Making Some
MC的一个经典应用是估计圆周率
因此我们可以建立一个指示函数
显然
Single-Server Queue
现实中的很多问题使用解析的方法来精确求解可能是比较困难的,在这种情况下使用模拟的方法可以帮助我们进行求解。首先考虑一个排队问题,假设有一个先入先出(FIFO)的队列,我们引入一些记号来方便描述:
- 用户
和 之间到达的时间间隔为 - 用户
到达的时刻为 - 用户
的服务时刻为 ,离开的时刻为 ,它们满足 - 用户
的等待时间为 - 用户
在队列中的总时间 - 用户
的服务时间为 ,它与离开队列时刻 的关系为
依据这些关系我们可以生成一个用户序列如下,通过模拟结果可以计算出用户的平均等待时间为

接下来我们考虑系统中在单位时间的平均用户数,我们记


因此单位时间的平均用户数为:
另一种计算
如果使用后入先出(LIFO)的策略,对于同样的样本我们可以得到仿真结果如下:

计算得到此时用户的平均等待时间为5.33,单位时间系统中的平均用户数为2,因此后入先出的队列比先入先出的队列更加高效。
(s; S) Inventory System
接下来考虑一个库存管理系统。假设每件商品的售价为
假设第

通过模拟我们可以得到商店每天的利润:

Simulating Random Variables
本节课最后讨论了模拟随机变量的方法。对于离散型随机变量我们可以通过对[0, 1]区间上的均匀分布进行采样,然后利用逆变换采样来生成离散变量。


而对于连续型随机变量,只需要解出CDF的反函数再进行逆变换采样即可。
