排队论大作业Word文档格式.docx
《排队论大作业Word文档格式.docx》由会员分享,可在线阅读,更多相关《排队论大作业Word文档格式.docx(9页珍藏版)》请在冰点文库上搜索。
N)。
通过对不同X0的一步转移矩阵计算其n值,得到收敛快慢与X0的关系,再比较不同的一步转移矩阵P收敛快慢,得到P与收敛快慢的关系。
一概述:
马尔科夫链的应用非常重要,同事也非常广泛的应用在现代的各个领域中,像马尔科夫链预测,能够对状态转移和时间序列做很好的预测,同时一步转移矩阵在市场营销上也有起到预测作用。
当然还有很多的其他应用,这里就不多说了。
二一步转移矩阵的模型分析
根据前面的假设,初始状态为X0,一步转移矩阵概率为P,当n足够大时
X0*P^n=Y
设置一个初始转态X0,计算n的收敛阈值,当矩阵收敛到一个稳定的状态时,会得到Y为一个稳定的行列式。
P11p12p13p14p15
P21p22p23p24p25
P31p32p33p34p35
P41p42p43p44p45
P51p52p53p54p55
X0*P^n=
其中p11+......+p15=1
P21+......+p25=1
.
P51+......+p55=1
根据计算对于不同的X0,一步转移矩阵收敛时n的值没有变化,可以得到其与初始状态X0无关。
此时,改变一步转移矩阵的类型,使用不同的一步转移矩阵,并设置同样的初始状态X0,计算此时的阈值n发现对于不同的一步转移矩阵,其收敛速度并不一样。
对于不同的一步转移矩阵,其收敛速度与什么有关,有以下假设:
1一步转移矩阵行列式的值会对收敛速度有影响。
对于一步转移矩阵的行列式值,通过计算不同行列式的值的得到矩阵的收敛速度图如下
仿真结果:
环境:
matlab,win7
对于行列式为1的此矩阵,是收敛的,且速度最快
对于一个随机转移矩阵B,n在19时收敛det(B)=;
对于行列式值为的矩阵D,n=100时收敛
对于行列式值为0的矩阵E在n=150时收敛
对于行列式值为的矩阵F,在n=40时收敛
从以上的数据中可以得到,当det(P)为1时,矩阵已经是收敛的,当det(P)=0时,矩阵几乎是不收敛的,当det(P)趋近与1时收敛越快。
测量多组数据得到如下图曲线图(横坐标为Det,纵坐标为收敛速度)
四总结:
从本次实验中可以得出一步转移矩阵的收敛速度与矩阵行列式的值有关,行列式的值越大,收敛越快。
题目二
要求:
分析但服务窗等待制M/M/N排队系统,其中平均到达速率I,每个服务员的平均服务速率为u,由概率分布求系统中的总顾客数L,考虑到公式推导的复杂性,用自己熟悉的语言纸上写代码,给出求解l近似值的核心代码,代码关键部分必须标注。
代码如下:
#include<
iostream>
usingnamespacestd;
doublegetp0(doublep,intN);
doublegetl(doublep0,doublep,intN);
intfactorial(intn);
doublepowerr(double,int);
voidshow();
intmain(){
while
(1){
show();
}
}
doublegetp0(doublep,intN){//求p0
intk=0;
doublep0;
doublesum=0;
while(k<
N){
doubles;
s=powerr(N*p,k)/factorial(k)+powerr(N*p,N)/(factorial(N)*(1-p));
sum+=s;
k++;
p0=1/sum;
returnp0;
}
doublegetl(doublep0,doublep,intN){//求队长L
doubles;
s=N*p+p0*p*powerr(N*p,N)/(factorial(N)*(1-p)*(1-p));
returns;
intfactorial(intn){//求阶乘
ints=n;
if(n>
0){
while(n>
1){
s=s*(n-1);
n--;
}
returns;
elsereturn1;
doublepowerr(doublea,intn){//求指数
doubles=1;
while(n>
s*=a;
n--;
voidshow(){
doubleu;
//服务速率
doubleI;
//输入速率
intN;
//服务窗的个数
cout<
<
"
输入顾客到达速率I:
endl;
输入服务速率u:
输入N:
cin>
>
I>
u>
N;
doublep=I/(N*u);
doubleL;
L=getl(getp0(p,N),p,N);
总队长L=:
L<
结果: