数学建模计算机模拟的技术
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 模拟通常借助于计算机进行。
计算机模拟:在已经建立的数学、逻辑模 型的基础之上,通过计算机试验,对一个 系统按照一定的决策原则或作业规则,由 一个状态变换为另一个状态的行为进行描 述和分析。
模拟的作用:
• 对于很难用解析方法加以处理的问题,模 拟是一种有效的技术;
• 对建模过程中的假设进行鉴定,对理论研 究的结论加以检验;
终态模拟:在规定的时间T内进行模拟运行,时间 达到T时,模拟终止。其性能指标明显取决于系 统的初始状态。
稳态模拟:随着模拟时间的推移,系统的性能逐渐 趋于平稳。其目的是研究非终态系统长期运行条 件下的稳态性能,模拟时间的长短取决于能否获 得系统性能的优良估计(可由模拟输出的精度确 定)。
1.1.4 模拟的一般步骤
1.2 随机模拟案例:赶上火车的概率
【问题】如图,一列火车从A站开往B站,某人每天
赶往B站上这趟火车.
火车运行方向
某人
A
B
思考:请研究他能否赶上这趟火车。
他已了解到: 1)火车从A站到B站的运行时间是均值为30分
钟,标准差为2分钟的随机变量;
2)火车在下午大约1点离开A站,离开时刻 的频率分布如下:
2.1 Monte-Carlo原理
2.2 蒙特卡罗法应用 2.2.1 求解非线性规划
2.2.2 估算圆周率
2.2.3 估算定积分
1)频率法
2)平均值法
3 模拟模型案例
例1:某港口提供有足够的泊位供船舶停靠,但现 在仅有一个可供装卸的泊位,船舶先到则先进行 装卸,如果船舶得不到及时装卸而造成的滞期费 为每小时100元。现要弄清该系统的性能,重点 考察船舶进入该港后等待装卸的滞留时间以及卸 位(即装卸用的泊位)的利用率,从而进行经济 效益分析。
表2 100艘船装卸时间频数表
装卸时间(小时) 9 10 11 12 13 14 15 16 装卸船舶数(艘) 20 22 19 16 10 8 3 2
表3 船舶到达港口的时间间隔累积分布表
到达间隔 5 6 7 8 9 10 11 12 13 14 15 16 17 18 累积频率 0.01 0.04 0.10 0.17 0.26 0.36 0.47 0.58 0.69 0.78 0.85 0.91 0.96 1.00
1 模拟基础 2 Monte-Carlo模拟 3 模拟模型案例
1 模拟基础 1.0 模拟的背景、思路
应用领域: •第二次世界大战期间,J.V.Neumann等人将进行的“中 子扩散”的科研项目取名为“Monte-Carlo” •运输系统模拟 •摩天大楼安全疏散系统模拟 •国民经济发展模拟 •人口增长系统模拟 •供水系统模拟
• 固定时间步长法:模拟时间每次均以相等 的固定步长向前推进,每到达一个新的模 拟时间点需检查相应时间段内是否发生了 事件。需根据实际问题合理设置模拟时间 发生改变的步长。
根据模拟过程中因变量的变化情况进行分类:
1)离散型模拟:因变量在与事件时间有关的具体模 拟时间点呈离散性变化。大多数系统(如排队服 务系统)可采用离散型模拟。
时间推进方法:一般采用下次事件法 应当重点对系统状态可能发生改变的事件进行描述,
并确定这些事件之间的逻辑关系。
排队系统通常采用离散型模拟模型。其中,发生系 统状态变化的事件有两个:一是有顾客到达;二 是服务员完成服务。将最近发生上述两种事件之 一的时刻设置为下次事件发生点,就可将服务过 程描述为图2所示的模拟模型。
首先,对进入该港口的100艘船进行实际调查,记录其活动情况,得到 这100艘船到达港口的时间间隔和装卸时间的分布情况的频数和累积频 率分布。
表1 100艘船到达港口的时间间隔频数表
到达间隔 (小时)
到达船舶 数(艘)
5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 3 6 7 9 10 11 11 11 9 7 6 5 4
算法1(分步骤描述) 第 1 步 输入模拟次数n 第 2 步 k=1,count=0 第 3 步 当k<=n,执行Step 4-9,否则执行第11步 第 4 步 生成均匀分布随机数赋给r 第 5 步 由r及公式确定T1模拟火车出发时刻 第 6 步 生成均匀分布随机数赋给r; 第 7 步 由r及公式确定T3模拟人达到时刻 第 8 步 生成正态分布随机数T2模拟火车运行时间 第 9 步 IF T1+T2 > T3, count=count+1,END 第 10 步 执行第3步 第 11 步 输出赶上火车频率p=count/n
ii)模拟法:用概率统计知识建立模型,通过模拟 求近似解。 即先建立模拟模型,然后通过计算机模拟得到 问题的近似解。在同样条件下多次试验,计算 他能及时赶上火车的频率。
问题分析:能及时赶上火车的充要条件是:
T3 T1 T2
即T3 T1 T2
其中
T1—火车从A站出发的时刻;
T2—火车的运行时间; T3—他到达B站的时刻。
end%for
prob=count/n
模拟结果:每次模拟1000次或5000次
序号 1 2 3 4 5 6
模拟次数 1000 1000 1000 5000 5000 5000
近似概率p 0.6280 0.6920 0.6530 0.6490 0.6260 0.6288
系统模拟注意事项:
一次模拟结果毫无意义! 模拟是试验性的,是思维结果的验证。 必须进行足够多次的模拟,并对结果进行统计分 析。 系统模拟特点:系统模拟是研究系统,特别是动态 系统的重要方法,对于: 结构复杂的系统; 很难用解析方法求出变量关系的系统; 内部机理不明的“黑箱”系统; 为验证用其他方法建立的模型及结果,应是较好 的选择。
n=input('输入模拟次数:');
count=0;
for i=1:n, rt1=rand; %模拟随机变量t1(火车从A站出发的时刻)
if rt1<0.7
T1=0;
elseif rt1>=0.7 & rt1<0.9
T1=5;
else
T1=10; end
T2=30+randn*2; %模拟随机变量t2(火车的运行时间)
• 编制程序,模拟运行。
• 分析模拟输出结果:模拟结果的统计特性(样本 均值、方差、置信区间等),灵敏性分析,选择 最优方案。
注:模拟结果的统计分析模拟的输出结果是分布特 征未知的随机变量,每次运行的结果仅仅是对该 随机变量所有观察值总体的一次抽样,对总体的 代表性很差,虽然可以增加模拟运行的时间从而 增加抽样次数,但这些数据总是由一个“种子” 经过一定的算法而获得的伪随机序列,它们是自 相关的,并不能构成统计上独立的随机样本。
• 对不同的实现方案进行多次模拟,按照既 定的目标函数对不同方案进行比较,从中 选择最优方案。
1.1.2 模拟的分类
通常,模拟时间是模拟的主要自变量。
设计正确的模拟时间推进机理:模拟过程中 应根据系统的特性正确推进模拟时间,使 系统中各要素与发生的事件保持同步。
推进模拟时间的基本方法:
• 下次事件法:将模拟时间由一个事件发生 的时间点推进到紧接着的下一次事件发生 的时间点。
算法2(伪代码描述)
i)初始化: 输入模拟次数n; count=0;
ii)模拟n次 for i=1 to n,
模拟随机变量T1,T2,T3, 分别赋给t1,t2,t3;
if t1+t2 > t3, count=count+1
end if end for app_prb=count / n;
模拟 程序
1.3 随机变量的建模
•利用理论分布,基于对问题的实际的、合理的假 设,选择适当的理论分布模拟随机变量
优点是给出了各种理论结果出现的概率,便于进行数学分 析和处理。但此方法仅限于十分简单的情况,当问题越复 杂,数学处理变得越困难,并且丢失了试验数据的信息。
•基于实际数据的频率做近似模拟
优点在于完全与观察数据相符,并且随实际问题的复杂程 度增大不会产生更大的困难,仅增大工作量而已。缺点是 不便于进行数学分析,不得不依赖于模拟得到的统计结果。
2)连续型模拟:因变量随时间的改变呈连续性变 化。在大多数计算机模拟过程中,按固定的步长 推进模拟时间。
通常需建立一系列的由系统状态变量组成的 状态方程组,以描述状态变量与模拟时间的关系。
3)混合型模拟:因变量随时间的推移而作连续性 的变化并具有离散性的突变,如库存控制系统。
1.1.3 模拟的方式
是什么变 量?如何
模拟?
基本假设: i)假设T1,T2,T3都是相互独立的随机变量; ii)将午后1时记为t=0,设火车运行时间T2 服从正态分布: T2 ~N(30,22)。
建立模型:为了简化计算,将下午1点记为初始时 刻。得到随机变量T1和T3的分布律如下:
火车出发时刻T1和人到达B站时刻T3的分布 律分别为:
%模拟随机变量t3(他到达B站的时刻)
rt3=rand;
if rt3<0.3
T3=28;
elseif rt3>=0.3 & rt3<0.7
T3=30;
elseif rt3>=0.7 & rt3<0.9
T3=32;
else
T3=34;
end
if T3 < T1 + T2,
count=count+1; end
T1(分) 0
5
10
P(t)
0.7
0.2
0.1
T3(分) 28
30 32
34
P(t)
0.3
0.4 0.2
0.1
能及时赶上火车的概率 p=P{T3<T1+T2 }
如果r为在(0,1)均匀分布的随机数,为了模拟随 机变量T1和T3,可以通过如下方法:
0,
t1
5,
10,
0 r 0.7, 0.7 r 0.9, 0.9 r 1.
•管理系统模拟 •雷达系统模拟 •战争系统模拟
模拟思路: •“模拟”-对系统抽象建模 •“试验”-根据模型设计算法,编程进行反复试验 •“估计”-根据试验数据 •“收集”-根据试验结果作出判断
1.1 模拟的基本知识
1.1.1 模拟的概念及作用
• 现实系统的数学或逻辑模型可能十分复杂, 例如大多数具有随机因素的复杂系统,其 中的一些随机性因素很难用准确的数学公 式表述,从而也无法对整个系统采用解析 法求解。模拟是处理这类实际问题的有力 工具。
28, 0 r 0.3,
t3
30, 32,
0.3 0.7
r r
0.7, 0.9,
34, 0.9 r 1.0.
则 t1 和 t3 可 分 别 用来模拟随机变
量T1和T3。
模拟算法设计
输入:赶火车次数(天数) 输出:赶上火车的频率
两种不同风格的算法描述
主要变量说明: n 模拟次数 k 临时变量,存储当前累计模拟次数 count 存储赶上火车的次数
装卸时间 累积频率
表4 船舶装卸时间累积分布表
9 10 11 12 13 14 15 16 0.20 0.42 0.61 0.77 0.87 0.95 0.98 1.00
为了比较准确地反映系统的性能,我们采用稳态
模拟方式,可以考察系统运行360天的情况。假 定港口每天24小时连续工作,因此模拟时间T设 置为8640小时。考虑到船舶到达港口的事件是影 响整个系统状态的主要因素,可以将模拟事件设 置为该事件的发生时刻。
出发时刻 午后1:00 午后1:05 午后1:10
频率
0.7
0.2
0.1
他到达B 站的时刻的频率分布为
时刻 午后1:28 午后1:30 午后1:32 午后1:34
频率wenku.baidu.com
0.3
0.4
0.2
0.1
他能否及时赶上火车?
明确问题:他能及时赶上火车的概率是多少?
建模方向(思路):
i)分析法:用概率统计知识建立分析模型,求解 析解。(思考)
•应用常将两种模拟方法结合起来使用
1.4 均匀分布随机变量模拟 1.4.1 平方取中法
1.4.2 线性同余法
线性同余法程序:产生0-c整数
1.5 Matlab随机模拟函数: 1.5.1 常见分布随机变量的模拟
1.5.2 其它随机变量的模拟
2 Monte-Carlo模拟
• 明确问题,建立模型。正确描述待研究问题,明 确规定模拟的目的和任务,确定衡量系统性能或 模拟输出结果的目标函数,然后根据系统的结构 及作业规则,分析系统各状态变量之间的关系, 以此为基础建立所研究的系统模型。
• 收集和整理数据资料。模拟技术的正确运用,往 往由大量的输入数据作依靠。在随机模拟中,应 认真分析具体收集到的随机性数据资料,确定系 统中随机性因素的概率分布特性,以此为依据产 生模拟过程所必需的抽样数据。