Matlab实现。

分为主函数 MyLine 和被调用函数 Func。

主函数 MyLine 实现在 Func 函数的基础上实现序贯法, 将平均等待队长作为每次模拟的 X,求出置信区间。
Func 函数实现单次模拟排队系统,返回向量 vector。向量vector分别包括仿真平均排队时间Cus_Queue_avg,仿真平均等待时间Cus_Wait_avg,仿真系统中平均等待队长 Cus_Wait_Queue_avg,仿真系统中平均顾客数 Cus_Wait_CusNum_avg。

主函数 MyLine:

 clear;
clc;
Alpha=0.1; %置信水平
Gama=0.1; %相对精度
Beta=0.1;
Lambda=0.2; %到达率 Lambda
Mu=0.25; %服务率 Mu
time=; %单回模拟次数
%序贯法实现
All_vector=Func( Lambda,Mu );%函数返回的向量
for i=:time
All_vector=[All_vector;Func( Lambda,Mu )];
end
vect=sum(All_vector)/time;%各列求和取平均
%下面系统中平均等待队长作为每次模拟的 X,用来评估运行结果
S=sum((All_vector()-vect()).*(All_vector()-vect()))/(ti
me-);%后面假设 S 不变
Betan=sqrt(S/time)*tinv(-Alpha/,time-);
Gaman=Betan/vect();
while(Gaman>=Gama) %Betan>=Beta||
time=time+;
All_vector=[All_vector;Func( Lambda,Mu )];
vect=sum(All_vector)/time;
S=sum((All_vector()-vect()).*(All_vector()-vect()))/(ti
me-);%后面假设 S 不变
Betan=sqrt(S/time)*tinv(-Alpha/,time-);
Gaman=Betan/vect();
end
time
disp(['系统中平均等待队长的置信区间下界
=',num2str(vect(3)-Betan)]);
disp(['系统中平均等待队长的置信区间上界
=',num2str(vect(3)+Betan)]);

Func 函数:

 function [ vector ] = Func( Lambda,Mu )
%单次的排队模拟,样本数 CusTotal
CusTotal=; %仿真顾客总数%=input('请输入仿真顾客
总数 CusTotal=');
Cus_Arrive=zeros(,CusTotal);%到达时刻
Cus_Leave=zeros(,CusTotal);%离开时刻
IntervaCus_Arrive=-log(rand(,CusTotal))/Lambda;%到达时间间

Cus_Arrive=cumsum(IntervaCus_Arrive); %每列
累加,形成到达初始时刻;如果只有一行,该行向后叠加
Interval_Serve=-log(rand(,CusTotal))/Mu; %服务时间间隔
%为事件调度法做准备
Cus_Leave()=Cus_Arrive()+Interval_Serve();%顾客离开时间
for i=:CusTotal
if Cus_Leave(i-)<Cus_Arrive(i)
Cus_Leave(i)=Cus_Arrive(i)+Interval_Serve(i);
else
Cus_Leave(i)=Cus_Leave(i-)+Interval_Serve(i);
end
end
Cus_Wait=Cus_Leave-Cus_Arrive; %各顾客在系统中的等待时间
%mean:如果是 n*m 的矩阵,mean 对各列分别进行求平均;当 n= 时,
对一行求平均
Cus_Wait_avg=mean(Cus_Wait); %平均等待时间
Cus_Queue=Cus_Wait-Interval_Serve;%各顾客在系统中的排队时间
Cus_Queue_avg=mean(Cus_Queue); %平均排队时间
%TimePoint 系统调度时间
TimePoint=[Cus_Arrive,Cus_Leave];%系统中顾客数随时间的变化
TimePoint=sort(TimePoint);
CusNum=zeros(size(TimePoint));
temp=; %指向事件表
CusNum()=;
%统计 dt 时间内的排队人数——事件调度法
%截止到 i,还有多少个事件
for i=:length(TimePoint)
%后一事件的结束时间晚于前一事件的结束时间
%所以只要第 temp- 个事件没有结束, 后面的事件到了发生时间
(事件仿真钟<=系统仿真钟),都要加入 CusNum 中计数
if
(temp<=length(Cus_Arrive))&&(TimePoint(i)==Cus_Arrive(temp)
)
CusNum(i)=CusNum(i-)+;
temp=temp+;
else
CusNum(i)=CusNum(i-)-;
end
end
%系统中平均顾客数计算
Time_interval=zeros(size(TimePoint));
Time_interval()=Cus_Arrive();
for i=:length(TimePoint)
Time_interval(i)=TimePoint(i)-TimePoint(i-);
end
%这里画一下图即可.i 时间段*(i-)时刻统计的事件数量。类似于向
后积分
CusNum_fromStart=[ CusNum];
Cus_Wait_CusNum_avg=sum(CusNum_fromStart.*[Time_interval
] )/TimePoint(end);
%系统平均等待队长
QueLength=zeros(size(CusNum));
for i=:length(CusNum)
if CusNum(i)>=
%还有等待事件(满足事件仿真钟<=系统仿真钟,但没有发
生)
QueLength(i)=CusNum(i)-;
else
QueLength(i)=;
end
end
Cus_Wait_Queue_avg=sum([ QueLength].*[Time_interval
] )/TimePoint(end);
%仿真值与理论值比较
row=Lambda/Mu;
QueLength_avg=row*row/(-row);%Q
CusNum_avg=row/(-row);%L
Queue_avg=QueLength_avg/Lambda;%d
Wait_avg=CusNum_avg/Lambda;%w
%返回的向量
vector=[Cus_Queue_avg,Cus_Wait_avg,Cus_Wait_Queue_avg,Cus_W
ait_CusNum_avg];
end

基本代码都在了,报告自己写吧。

matlab实现M/M/1排队系统的更多相关文章

  1. 利用JS模拟排队系统

    我爱撸码,撸码使我感到快乐!大家好,我是Counter.今天给大家分享的是js模拟排队系统,刚开始有排队序列,序列里有vip用户和普通用户,vip用户永远位于普通用户的前面,只有当当前vip用户都办理 ...

  2. 叫号系统排队系统挂号系统实现(JAVA队列)

    关于队列,使用的地方很的多. 现实中有许多的样例. 比方医院的挂号系统,银行里的叫号系统,食堂里的排队打饭等等.市场上又这种排队取号的设备.他们的功能基本例如以下: 1.系统可联网联机统一发号.2.系 ...

  3. MM1排队系统

    #coding=utf-8 import time import random as rd #import math import pylab as pl def simulate(nameda,u) ...

  4. MATLAB信号与系统分析(三)——连续信号与系统的复频域分析及MATLAB实现

    一.系统的拉普拉斯变换和反变换 1.MATLAB函数 F=laplace(f) %求拉氏变换 f=ilaplace(F) %求拉氏反变换 2.例子 clear all;clc;close all f= ...

  5. 基于Matlab的多自由度系统固有频率及振型计算

    可参考文涛,基于Matlab语言的多自由度振动系统的固有频率及主振型计算分析,2007 对于无阻尼系统 [VEC,VAL]=eig(inv(A)*K) 对于有阻尼系统,参考振动论坛计算程序 输入M,D ...

  6. 赴美工作常识(Part 6 - 绿卡排队)

    上一篇<赴美工作常识(Part 5 - 绿卡优先级)>解释完排队的优先级是怎么确定的,以及 PERM 和 I–140 表的意义,接下来就要解释一下队具体是怎么排的以及排到之后的 I–485 ...

  7. 【matlab】设定C++编译器

    在用matlab2016a,运行的代码涉及到C++混编,要用mex把C++代码编译出来. 记得几年前的matlab版本,通过: mex -setup 就可以设定了,选择要使用的编译器(文本的超链接), ...

  8. MATLAB获取“非免驱的相机或者摄像头”的图像数据

    Image Acquisition Toolbox™ Adaptor Kit 图像採集工具箱 当要使用MATLAB获取"非免驱的相机或者摄像头"的图像数据时,须要开发一个插件,MA ...

  9. 【matlab】命令行窗口一直不停的输出ans=1?

    ans= 1 matlab里面的ans是一个系统量,当m文件中出现非赋值性的计算时,matlab会把结果自动存入ans. 如果m文件中每一个计算都是赋值的,即所计算的结果都是保存在自己设定的变量中的, ...

随机推荐

  1. angular ng-content

    <p> child works! </p> <ng-content></ng-content> <app-child> 父组件投影 < ...

  2. Bitnami WordPress如何修改MySQL root的默认密码?

    Bitnami WordPress安装完毕后,MySQL root的默认密码为空,我们应该马上修改MySQL密码,在开始菜单里面,进入Bitnami ,启动控制台程序,随后输入: mysql -u r ...

  3. PTA数据结构之 List Leaves

    Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...

  4. win7系统电脑显示windows副本不是正版怎么办

    win7系统电脑显示windows副本,可以:在开始输入框中输入cmd——以管理员权限运行——在命令行中输入SLMGR -REARM,——重启.

  5. 【bzoj3329】Xorequ 矩阵快速幂

    Description Input 第一行一个正整数,表示数据组数据 ,接下来T行 每行一个正整数N Output 2T行 第2i-1行表示第i个数据中问题一的解, 第2*i行表示第i个数据中问题二的 ...

  6. 2、Tensorflow中的变量

    2.Tensorflow中的变量注意:tf中使用 变量必须先初始化下面是一个使用变量的TF代码(含注释): # __author__ = "WSX" import tensorfl ...

  7. Unity---动画系统学习(2)---模型3种导入方式、人形动画介绍、切割动画

    1. 介绍 Unity中导入的模型主要是由3DMAX.Maya等建模软件制作的,后缀为.fbx的文件. 博主在Unity Asset Store里面下载了一套官方免费的模型和动画. 和一套地图,分享给 ...

  8. 题解 P1632 点的移动

    P1632 点的移动 题目描述 平面上有N个整数坐标点.如果将点(x0,y0)移动到(x1,y1),则需要的代价为|x0-x1|+|y0-y1|.求使得K(K=1,-,N)个点在同一位置上最少需要的代 ...

  9. 【BZOJ4800】[CEOI2015 Day2]世界冰球锦标赛 (折半搜索)

    [CEOI2015 Day2]世界冰球锦标赛 题目描述 译自 CEOI2015 Day2 T1「Ice Hockey World Championship」 今年的世界冰球锦标赛在捷克举行.\(Bob ...

  10. 学习markdown语法,易读易写,放2个教程地址

    http://wowubuntu.com/markdown/basic.html http://wowubuntu.com/markdown/basic.html