1、管理信息系统课程设计报告书XXX 工 学 院课程设计报告作 者:XXX学 号:XXX学 院:XXXX专 业:XXXX课 程:管理信息系统模拟指导教师:XXXX2016年12月1 背景知识阐述离散系统模拟是指系统状态仅在某些确定的时间点(由系统结构决定)才发生变化的模拟,其模拟时间呈现离散性变化,系统状态在时间点之间不变化。2 问题简介与分析2.1 离散系统模拟(1) 单服务台排队系统(M/M/1)模拟分析与设计(2)有顾客损失的多服务台排队系统(M/M/S)模拟分析与设计2.2 连续系统模拟(1)捕食者与被捕食者模型模拟分析与设计(2) 网民数量扩散模型(BASS模型)模拟分析与设计2.3 多
2、智能体系统模拟(1)萤火虫优化系统模拟(2)蚁群优化系统模拟3 模拟系统与程序的分析与设计3.1离散系统3.1.1单服务台排队系统(M/M/1)模拟分析与设计 已知顾客到达时间和服务时间的统计规律(通常来自实际数据或一定的概率分布)的情况下,如何仿真该排队系统。系统假设: (1)顾客源是无穷的; (2)排队长度没有限制; (3)到达系统的顾客按先后顺序依次进入服务。已知条件: (1)顾客到达时间间隔k i 服从均值为i 的指数分布,即: (2)服务员服务时间k s 服从均值为s 的指数分布,即:试对该单服务台排队系统进行分析、设计、模拟,并给出 (1) i=5min, s=4min;(2) i
3、=5min, s=5min;(3) i=4min, s=5min;三种情况下的模拟结果(到达顾客数、服务顾客数、平均等待时间、平均服务时间、平均队长)。%一、系统分析系统状态:在任意时刻t (1)排队等候的顾客数目L(t); (2)服务员工作状态S(t)。引起系统状态改变的行为称为事件,在排队系统中包含两类基本事件: (1)顾客到达事件ak; (2)顾客离去事件dk。模拟时钟:因为系统状态在ak、dk 时刻发生改变,所以在模拟系统运行中,设置时钟t,让t 依事件发生的先后顺序,从一个事件的发生时刻推进到下一个事件的发生时刻。变量设置: (1)ik:第k 位顾客与第k-1 位顾客到达时间间隔;
4、(2)sk:第k 位顾客服务时间; (3)L(t):排队等待的顾客数目; (4)S(t):服务员工作状态;(5)ak:第k 位顾客到达时刻;ak= ak-1+ ik (k=1,2,) (6)dk :第k 位顾客离去时刻;dk= maxak,dk-1 + sk (k=1,2,)模拟过程分析: (1)先根据时间间隔i 和服务时间s 的概率分布生成随机数ik、sk;(2)再计算顾客到达时刻ak 和离开时刻dk;ak= ak-1+ ik dk= maxak,dk-1 + sk k=1,2, (3)让时钟t 按照到达时刻ak 和离开时刻dk 从小到大的顺序推进。注意:通常不是先生成i 或s 待用,而是时
5、钟t 推进到某一事件发生时,才生成所需的i 或s。 (4)设当前时钟为t,在每一个事件发生时,需要设置并记录4 个数值:L(t):排队等待的顾客数目;S(t):服务员工作状态;下一个顾客到达事件的发生时刻:ARRIVETIEM下一个顾客离开事件的发生时刻:DEPARTTIME二、单服务台排队系统模拟源程序:function out = MM1(mu1,mu2,T) %单服务台模拟系统%mu1-顾客到达时间间隔服从指数分布;%mu2-服务时间服从指数分布;%T-模拟终止时刻%-初始化-t = 0; %当前时间tt = t; %tt-时间序列L = 0; %L-队长LL = L; %LL-队长序列
6、S = 0; %S-服务员状态c = ; %c-顾客到达时间序列b = ; %b-服务开始时间序列e = ; %e-顾客离开时间序列a_count = 0; %a_count-到达顾客数b_count = 0; %b_count-服务顾客数ARRIVETIME = 0; %顾客到达事件DEPARTTIME = 0; %顾客离开事件%-模拟过程-while t=Tif(ARRIVETIME 0) %有排队的顾客L = L-1; %更新队长s = exprnd(mu2); %生成服务时间b_count = b_count+1; %更新服务顾客数b = b,t; %记录顾客开始服务时间DEPARTT
7、IME = t + s; %顾客离开时间e = e,DEPARTTIME; %记录顾客离开时间else %若没有排队的顾客,更新服务台为空闲状态S = 0;DEPARTTIME = T;endendtt = tt,t;LL = LL,L;end%-模拟结果-length(e); length(c);Ws = sum(e-c(1:length(e)/length(e); %平均逗留时间Wb = sum(e-b(1:length(e)/length(e); %平均服务时间Ls = sum(diff(tt,T).*LL)/T; %平均队长fprintf(到达顾客数:%dn,a_count) %到达顾
8、客数fprintf(服务顾客数:%dn,b_count) %服务顾客数out = Ws,Wb,Ls;end%3.1.2有顾客损失的多服务台排队系统(M/M/S)模拟分析与设计 在该排队系统中,有多个服务台s。顾客逐个到达系统,已知顾客到达时间间隔是随机的,服从指数分布。顾客在服务台的服务时间也是随机的,且服从指数分布。当有服务台空闲时,顾客接受服务;若排队顾客数超过k,则新到达的顾客离去,问如何仿真该排队系统。系统假设:(1)顾客源是无穷的;(2)到达系统的顾客按先后顺序依次进入服务。已知条件:(1) 顾客到达时间间隔k i 服从均值为i 的指数分布,即:(2) 服务员服务时间k s 服从均值
9、为s 的指数分布,即:试对该多服务台排队系统进行分析、设计、模拟,并给出(1) s=2,k=5,i=5min, s=4min;(2) s=2,k=4,i=3min, s=5min;(_3) s=2,k=6,i=2min, s=5min;三种情况下的模拟结果(到达顾客数、服务顾客数、平均等待时间、平均服务时间、平均队长)。%有顾客损失的多服务台单服务台排队系统模拟源程序:function out = MMS(s,k,mu1,mu2,T)%多服务台排队系统模拟%s-服务台个数%k-最大顾客等待数%mu1-顾客到达时间间隔服从指数分布;%mu2-服务时间服从指数分布;%T-模拟终止时刻%-初始化-a
10、rrive_time = exprnd(mu1); %arrive_time-顾客到达事件leave_time = ; %leave_time-顾客离开事件current_time = 0; %current_time-当前时间L = 0; %L-队长LL = L; %LL-队长序列tt = current_time; %tt-时间序列c = ; %c-顾客到达时间序列b = ; %b-服务开始时间序列e = ; %e-顾客离开时间序列a_count = 0; %a_count-到达顾客数b_count = 0; %b_count-服务顾客数e_count = 0; %e_count-损失顾客
11、数%-模拟过程-while min(arrive_time,leave_time) Tcurrent_time = min(arrive_time,leave_time);tt = tt, current_time; %记录时间序列if current_time = arrive_time %顾客到达子过程arrive_time =arrive_time + exprnd(mu1); %刷新顾客到达事件a_count = a_count + 1; %累加到达顾客数if L s %有空闲服务台L = L +1; %更新队长b_count = b_count+1; %累加服务顾客数c = c, current_time; %记录顾客到达时间序列b = b, current_time; %记录服务开始时间序列leave_time = leave_time, current_time+exprnd(mu2); %产生新的顾客离开事件leave_time = sort(leave_time); %离开事件表排序elseif L s+k %有空闲等待位L = L+1; %更新队长b_count = b_count + 1; %累加服务顾客数c = c, current_time; %记录顾客到达时间序列else %顾客损失e_count = e_count + 1; %累加损失顾客
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1