生活随笔
收集整理的這篇文章主要介紹了
数学建模之排队论模型及代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數學建模之排隊論模型及代碼
本人新手第一次搞了個博客,以前都是看別人寫的博客,汲取別人的知識,今天自己也寫一下自己的博客,分享一下自己的收獲,希望對你有用。
言歸正傳,排隊論是數學建模中很常見的數學模型,但因其涉及到專業知識,所以對于非理工專業的人來說,還是很有困難的。下面講解一下,模型一般步驟:
第一步:數據的準備
即確定客戶的來源符合什么分布,確定服務時間符合什么分布。比如大部分游客到達時間符合泊松分布,服務時間又符合指數分布。但請注意,符合什么分布,要結合你的數據進行分析。所以這里要涉及到分布驗證的問題,一般而言,大都采用假設性檢驗。(是什么請關注博主,后期講解。本文只講模型,和代碼)驗證成功后,才能夠說明你的數據符合什么分布,參數為多少(要先用SPSS先進行驗證,然后進行假設檢驗,否則萬一假設錯了,就尷尬了)。
第二步:機構運行機制的模擬
你的服務機構的運行機制是什么,決定了你的客戶將按怎樣的方式進行出入。這樣才能確定客戶的到達時間,等待時間,離開時間。常用的有單服務臺,多服務臺,單人,多人一班次的模型。
第三步:計算機模擬
在確定了所有的因素之后,就可以通過計算機模擬進行仿真了。按照模型的思路一步一步來。(編程能力要有一定功底)
這里,小編給出了多人一班次的代碼,注釋很詳細,你們可以按照它進行仿寫,多練習練習。
clear
clc
to_time=600;
L=10;
a=30;
lamda=5;
mu =3;
ser_mean = 1/mu;
arr_num = round(to_time*lamda*2);
qu(2,:)=exprnd(ser_mean,1,arr_num);%服務時間
qu(1,:)=poissrnd(1/lamda,1,arr_num);
qu(1,:)=cumsum(qu(1,:));%到達時間
%逐步實驗
%第一輪的模擬
s(1)=qu(1,a);%一輪開始的時間
e(1)=max(qu(2,1:a));%一輪逗留的時間段
for k=1:a
qu(3,k)=s(1)+L+qu(2,k);%離去時間
qu(4,k)=s(1);%預測時間
qu(5,k)=s(1)-qu(1,k);%等待時間
end
%第i輪模擬
for i=2:10000%結束條件,采用結束時間進行判斷if(e(i-1)+s(i-1)+L>=to_time)break;endif(s(i-1)+L+e(i-1)<to_time)num(i-1)=sum(qu(1,a*(i-1)+1:1590)<s(i-1)+L+e(i-1));%統計當前等待人數。elsenum(i-1)=sum(qu(1,a*(i-1)+1:1590)<to_time);endif(num(i-1)<=a)%達到啟動要求或不滿足的情況下s(i)=qu(1,a*i);e(i)=max(qu(2,a*(i-1)+1:a*i));%逗留時間最長for k=a*(i-1)+1:a*iqu(3,k)=s(i)+qu(2,k)+L;%離去時間qu(4,k)=s(i);%預約時間qu(5,k)=s(i)-qu(1,k);%等待時間endelseif(num(i-1)>a)%超出規定人數時s(i)=s(i-1)+e(i-1)+L;%開始時間e(i)=max(qu(2,a*(i-1):a*i));%逗留時間for k=a*(i-1)+1:a*iqu(3,k)=s(i)+qu(2,k)+L;%離去時間qu(4,k)=s(i);%預約時間qu(5,k)=s(i)-qu(1,k);%等待時間endendend
end%可視化處理%滿足條件對平均等待時間的影響%figure;%x=1:c;%plot(x,dely(x),'-o');%legend('x的性能曲線');%預約時間,和到達時間figure;x=1:a*(i-1);plot(x,qu(1,x),'-r',x,qu(4,x),'-b');legend('到達時間','預約時間');figure;plot(x,qu(4,x)-qu(1,x),'-o');legend('預測需要多少時間后開始');figure;plot(x,qu(3,x),'-o');legend('離去時間');
運行結果:
本文為作者原創,未經作者同意不得轉發。
總結
以上是生活随笔為你收集整理的数学建模之排队论模型及代码的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。