版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、銀行排隊(duì)問題各個時刻的隊(duì)長還是銀行排隊(duì)問題,基本代碼我已經(jīng)整理差不多了,各個函數(shù)如下,就差求一下各個時刻的隊(duì)長了,誰能幫忙啊?(以五分鐘為一時間單位,即求零時刻的隊(duì)長,五分鐘時的隊(duì)長,十分鐘時的隊(duì)長,依次類推)void OpenForDay() /* 初始化操作 */int i;InitList(&ev); /* 初始化事件鏈表為空 */en.OccurTime=0; /* 設(shè)定第一個客戶到達(dá)事件 */en.NType=Qu; /* 到達(dá) */OrderInsert(&ev,en,cmp); /* 插入事件表 */for(i=0;i <Qu; i) /* 置空隊(duì)列 */I
2、nitQueue(&qi);void CustomerArrived() /* 處理客戶到達(dá)事件,en.NType=Qu */QElemType f;int durtime,intertime,i;CustomerNum;Random(&durtime); /* 生成隨機(jī)數(shù) */intertime=expntl(LAMBUDA);et.OccurTime=en.OccurTime intertime; /* 下一客戶到達(dá)時刻 */et.NType=Qu; /* 隊(duì)列中只有一個客戶到達(dá)事件 */if(et.OccurTime <CloseTime) /* 銀行尚未關(guān)門,插入
3、事件表 */OrderInsert(&ev,et,cmp);i=Minimum(q); /* 求長度最短隊(duì)列的序號,等長為擁有最小序號的隊(duì)列 */f.ArrivalTime=en.OccurTime;f.Duration=durtime;EnQueue(&qi,f);if(QueueLength(qi)=1)et.OccurTime=en.OccurTime durtime;et.NType=i;OrderInsert(&ev,et,cmp); /* 設(shè)定第i隊(duì)列的一個離開事件并插入事件表 */void CustomerDeparture() /* 處理客戶離開事件,e
4、n.NTyPe <Qu */int i;i=en.NType;DeQueue(&qi,&customer); /* 刪除第i隊(duì)列的排頭客戶 */TotalTime =en.OccurTime-customer.ArrivalTime; /* 累計(jì)客戶逗留時間 */if(!QueueEmpty(qi) /* 設(shè)定第i隊(duì)列的一個離開事件并插入事件表 */GetHead_Q(qi,&customer);et.OccurTime=en.OccurTime customer.Duration;et.NType=i;OrderInsert(&ev,et,cmp);fo
5、r(i=0;i <Qu;i )if(MaxQueue <=QueueLength(qi)MaxQueue=QueueLength(qi);void Bank_Simulation() int t;Link p;OpenForDay(); /* 初始化 */while(!ListEmpty(ev)DelFirst(&ev,GetHead(ev),&p);en.OccurTime=GetCurElem(p).OccurTime;en.NType=GetCurElem(p).NType;for(t=en.OccurTime;t)if(en.NType=Qu)Custome
6、rArrived(); /* 處理客戶到達(dá)事件 */elseCustomerDeparture(); /* 處理客戶離開事件 */ /* 計(jì)算并輸出平均逗留時間 */printf("顧客總數(shù):%d, 所有顧客共耗時:%d分鐘, 平均每人耗時: %d分鐘,最大隊(duì)長為:%dn",CustomerNum,TotalTime,TotalTime/CustomerNum,MaxQueue);void main()Bank_Simulation();網(wǎng)友回復(fù):等著你把代碼貼全了呵呵網(wǎng)友回復(fù):這些還不夠?剩下的都是些小東西網(wǎng)友回復(fù):主文件除了include就這些了/* 兩個窗口的排隊(duì)模型
7、的數(shù)值仿真 */#define Qu 2 /* 客戶隊(duì)列數(shù) */#define LAMBUDA1 5/* 每個客戶辦理業(yè)務(wù)的時間最大值 */#define LAMBUDA2 10 /*負(fù)指數(shù)分布的lambuda*/#define CloseTime 540 /* 銀行的營業(yè)時間 */typedef struct /* 定義ElemType為結(jié)構(gòu)體類型 */int OccurTime; /* 事件發(fā)生時刻 */int NType; /* 事件類型,Qu表示到達(dá)事件,0至Qu-1表示Qu個窗口的離開事件 */Event,ElemType; /* 事件類型,有序鏈表LinkList的數(shù)據(jù)元素類型 *
8、/typedef LinkList EventList; /* 事件鏈表類型,定義為有序鏈表 */typedef structint ArrivalTime; /* 到達(dá)時刻 */int Duration; /* 辦理事務(wù)所需時間 */QElemType; /* 定義QElemType(隊(duì)列的數(shù)據(jù)元素類型)為結(jié)構(gòu)體類型; */* 程序中用到的主要變量(全局)。算法3.7 */EventList ev; /* 事件表 */Event en; /* 事件 */Event et; /* 臨時變量 */LinkQueue qQu; /* Qu個客戶隊(duì)列 */QElemType customer; /*
9、 客戶記錄 */int TotalTime=0,CustomerNum=0,MaxQueue=0,time=0; /* 累計(jì)客戶逗留時間,客戶數(shù)(初值為0) */; /* 銀行營業(yè)時間(單位是分) */int cmp(Event a,Event b) /* 依事件a的發(fā)生時刻 <、=或>事件b的發(fā)生時刻分別返回-1、0或1 */if(a.OccurTime=b.OccurTime)return 0;elsereturn (a.OccurTime-b.OccurTime)/abs(a.OccurTime-b.OccurTime);void OpenForDay() /* 初始化操作
10、*/int i;InitList(&ev); /* 初始化事件鏈表為空 */en.OccurTime=0; /* 設(shè)定第一個客戶到達(dá)事件 */en.NType=Qu; /* 到達(dá) */OrderInsert(&ev,en,cmp); /* 插入事件表 */for(i=0;i <Qu; i) /* 置空隊(duì)列 */InitQueue(&qi);expntl(float x)/* 負(fù)指數(shù)分布 */float z,m;doz = (float) rand() / RAND_MAX);while (z = 0) ¦ ¦ (z = 1);m=-x*log(
11、z);return(m);int Minimum(LinkQueue Q) /* 返回最短隊(duì)列的序號 */int lQu;int i,k;for(i=0;i <Qu;i )li=QueueLength(Qi);k=0;for(i=1;i <Qu;i )if(li <l0)l0=li;k=i;return k;void CustomerArrived() /* 處理客戶到達(dá)事件,en.NType=Qu */QElemType f;int durtime,intertime,i;CustomerNum;durtime=expntl(LAMBUDA1); /* 生成隨機(jī)數(shù) */in
12、tertime=expntl(LAMBUDA2);et.OccurTime=en.OccurTime intertime; /* 下一客戶到達(dá)時刻 */et.NType=Qu; /* 隊(duì)列中只有一個客戶到達(dá)事件 */if(et.OccurTime <CloseTime) /* 銀行尚未關(guān)門,插入事件表 */OrderInsert(&ev,et,cmp);i=Minimum(q); /* 求長度最短隊(duì)列的序號,等長為擁有最小序號的隊(duì)列 */f.ArrivalTime=en.OccurTime;f.Duration=durtime;EnQueue(&qi,f);if(Queu
13、eLength(qi)=1)et.OccurTime=en.OccurTime durtime;et.NType=i;OrderInsert(&ev,et,cmp); /* 設(shè)定第i隊(duì)列的一個離開事件并插入事件表 */void CustomerDeparture() /* 處理客戶離開事件,en.NTyPe <Qu */int i;i=en.NType;DeQueue(&qi,&customer); /* 刪除第i隊(duì)列的排頭客戶 */TotalTime =en.OccurTime-customer.ArrivalTime; /* 累計(jì)客戶逗留時間 */if(!Qu
14、eueEmpty(qi) /* 設(shè)定第i隊(duì)列的一個離開事件并插入事件表 */GetHead_Q(qi,&customer);et.OccurTime=en.OccurTime customer.Duration;et.NType=i;OrderInsert(&ev,et,cmp);for(i=0;i <Qu;i )if(MaxQueue <=QueueLength(qi)MaxQueue=QueueLength(qi);void Bank_Simulation() int t;Link p;OpenForDay(); /* 初始化 */while(!ListEmpty(ev)DelFirst(&ev,GetHead(ev),&p);en.OccurTime=GetCurElem(p).OccurTime;en.NType=GetCurElem(p).NType;if(en.NType=Qu)CustomerAr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度冷鏈物流空調(diào)清洗消毒與防凍服務(wù)合同2篇
- 2025年度企業(yè)內(nèi)部員工保密協(xié)議(新修訂)5篇
- 二零二五年度國際會議兼職同聲傳譯及外教聘請協(xié)議3篇
- 2025年香港建筑工程合同正規(guī)范本標(biāo)準(zhǔn)版6篇
- 二零二五年度城市污水處理廠承包管理服務(wù)協(xié)議4篇
- 二零二五年度大型活動現(xiàn)場解說配音合作協(xié)議4篇
- 2025年噴灌系統(tǒng)節(jié)水技術(shù)創(chuàng)新合作合同4篇
- 2025年度農(nóng)產(chǎn)品供應(yīng)鏈金融合作協(xié)議-@-1
- 二零二五年度展覽館場地租賃與展會組織服務(wù)合同3篇
- 2025年金融科技支付系統(tǒng)開發(fā)與運(yùn)營合同3篇
- 茉莉花-附指法鋼琴譜五線譜
- 結(jié)婚函調(diào)報告表
- SYT 6968-2021 油氣輸送管道工程水平定向鉆穿越設(shè)計(jì)規(guī)范-PDF解密
- 冷庫制冷負(fù)荷計(jì)算表
- 肩袖損傷護(hù)理查房
- 設(shè)備運(yùn)維管理安全規(guī)范標(biāo)準(zhǔn)
- 辦文辦會辦事實(shí)務(wù)課件
- 大學(xué)宿舍人際關(guān)系
- 2023光明小升初(語文)試卷
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
- 申請使用物業(yè)專項(xiàng)維修資金征求業(yè)主意見表
評論
0/150
提交評論