文档详情

数学建模之Monte_Carlo模拟.ppt

发布:2017-06-19约8.76千字共41页下载文档
文本预览下载声明
排队问题随机模拟 排队论主要研究随机服务系统的工作过程。 在排队系统中,服务对象的到达时间和服务时间都是随机的。排队论通过对随机服务现象的统计研究,找出反映这些随机现象平均特性的规律指标,如排队的长度、等待的时间及服务利用率等。 [1] 系统的假设: (1) 顾客源是无穷的; (2) 排队的长度没有限制; (3)到达系统的顾客按先后顺序依次进入服务,“先到先服务”。 在某商店有一个售货员,顾客陆续来到,售货员逐个地接待顾客.当到来的顾客较多时,一部分顾客便须排队等待,被接待后的顾客便离开商店.设: 1.顾客到来间隔时间服从参数为0.1的指数分布. 2.对顾客的服务时间服从[4,15]上的均匀分布. 3.排队按先到先服务规则,队长无限制. 假定一个工作日为8小时,时间以分钟为单位。 [1]模拟一个工作日内完成服务的个数及顾客平均等待时间t. [2]模拟100个工作日,求出平均每日完成服务的个数及每日顾客的平 均等待时间。 单服务员的排队模型模拟 w:总等待时间; ci:第i个顾客的到达时刻; bi:第i个顾客开始服务时刻; ei:第i个顾客服务结束时刻; xi:第i-1个顾客与第i个顾客之间到达的间隔时间; yi:对第i个顾客的服务时间。 符号说明 c1 b1 c3 c4 c5 c2 e1 b2 e2 b3 e3 b4 e4 b5 ci=ci-1+ xi ei=bi+yi bi=max(ci,ei-1) t 思路分析 初始化:令i=1,ei-1=0,w=0 产生间隔时间随机数xi~参数为0.1的指数分布 ci=xi , bi=xi 产生服务时间随机数yi~[4,15]的均匀分布 ei=bi+yi 累计等待时间:w=w+bi-ci 准备下一次服务:i=i+1 产生间隔时间随机数xi~参数为0.1的指数分布 ci=ci-1+ xi 确定开始服务时间:bi=max(ci,ei-1) bi>480? Y N i=i-1,t=w/i 输出结果:完成服务个数:m=i 平均等待时间:t 停止 流程框图 用蒙特卡洛法解非线性规划问题 基本假设 试验点的第j个分量xj服从[aj ,bj]内的均匀分布. 符号假设 求解过程 先产生一个随机数作为初始试验点,以后则将上一个试验点的第j个分量随机产生,其它分量不变而产生一新的试验点.这样,每产生一个新试验点只需一个新的随机数分量.当KMAXK或PMAXP时停止迭代. 框 图 初始化:给定MAXK,MAXP;k=0,p=0,Q:大整数 xj=aj+R(bj-aj) j=1,2,…,n j=0 j=j+1,p=p+1 PMAXP? Y N xj=aj+R(bj-aj) gi(X)≥0? i=1,2…n Y N jn? f(X)≥Q? Y N X*=X,Q=f(X) k=k+1 kMAXK? Y N 输出X,Q,停止 Y N 在Matlab软件包中编程,共需三个M-文件:randlp.m, mylp.m, lpconst.m.主程序为randlp.m. % mylp.m function z=mylp(x)        %目标函数 z=2*x(1)^2+x(2)^2-x(1)*x(2)-8*x(1)-3*x(2);  %转化为求最小值问题 % randlp.m function [sol,r1,r2]=randlp(a,b,n)   %随机模拟解非线性规划 debug=1; a=0;              %试验点下界 b=10;              %试验点上界 n=1000;             %试验点个数 r1=unifrnd(a,b,n,1);      %[a,b]均匀分布随机数矩阵 r2=unifrnd(a,b,n,1); sol=[r1(1) r2(1)]; z0=inf; for i=1:n x1=r1(i); x2=r2(i); lpc=lpconst([x1 x2]); if lpc==1 z=mylp([x1 x2]); if zz0 z0=z; sol=[x1 x2]; end end end 与Monte Carlo方法相似,但理论基础不同的方法—“拟蒙特卡罗方法”(Quasi-Monte Carlo方法)—近年来也获得迅速发展。这种方法的基本思想是“用确定性的超均匀分布序列(数学上称为Low Discrepancy Sequences)代替Monte Carlo方法中的随机数序列。对某些问题该方法的实际速度一般可比Monte Carl
显示全部
相似文档