资源简介
MM1排队系统仿真
应用M/M/1队列编程思想,模拟有限顾客数量和队列长度的单服务台排队仿真事件,并统计平均等待时间,平均队列长度和服务器利用率,熟悉事件推进方式,队列建立和提取方式。
代码片段和文件信息
#include
#include
#include
#define ARRIVE 0
#define DEPAR 1
#define IDLE 0
#define OCCUPY 1
int queueMaxqueueLength=0custNumcustNumQueue=0busy=IDLE;
double clock=0sumDelay=0sumServe=0;
typedef struct eventNode{
int typeid;
double arriveTime;
double serveTime;
double deparTime;
struct eventNode* nextlink;
}event;
event* queueTail;
struct eventHeadNode{
struct eventNode* eventlink ;
};
struct eventHeadNode* eventHead;
struct queueHeadNode{
struct eventNode* queuelink;
};
struct queueHeadNode* queueHead;
double U_Random();
double possion(int lambdaArrive);
double exponential(double lambdaServe);
void initialFEL(int lambdaArrivedouble lambdaServe);
void serve();
void placeEvent(event* eventTemp);
void addQueue(event* eventTemp);
void destroyEventHead(event* eventTemp);
event* popQueue();
void bl();
double U_Random()
{
double f;
f = (float)(rand() % 100);
return f/100;
}
double possion(int lambdaArrive){
int k=0;
long double p=1.0;
long double l=exp(-lambdaArrive);
while(p>=l){
double u = U_Random();
p*=u;
k++;
}
return k-1;
}
double exponential(double lambdaServe){
double u;
do{
u=(double)(rand()%100)/100;
}while(u==0);
u=(-1/lambdaServe)*log(u);
return u;
}
void initialFEL(int lambdaArrivedouble lambdaServe){
int i;
double sumTime=0;
event* eventCur;
for(i=0;i if(eventHead->eventlink==NULL){
eventCur=(event*)malloc(sizeof(event));
eventCur->type=ARRIVE;
eventCur->arriveTime=possion(lambdaArrive);
eventCur->serveTime=exponential(lambdaServe);
eventCur->deparTime=-1;
eventCur->nextlink=NULL;
eventCur->id=i;
eventHead->eventlink=eventCur;
sumTime=eventCur->arriveTime;
}
else{
eventCur->nextlink=(event*)malloc(sizeof(event));
eventCur=eventCur->nextlink;
eventCur->type=ARRIVE;
sumTime+=possion(lambdaArrive);
eventCur->arriveTime=sumTime;
eventCur->serveTime=exponential(lambdaServe);
eventCur->deparTime=-1;
eventCur->nextlink=NULL;
eventCur->id=i;
}
printf(“%d号顾客到达时间:%lf,服务时间:%lf\n“eventCur->ideventCur->arriveTimeeventCur->serveTime);
}
}
void serve(){
event* eventCur;
while(eventHead->eventlink!=NULL){
eventCur=eventHead->eventlink;
if(eventCur->type==ARRIVE){
clock=eventCur->arriveTime;
if(busy==IDLE){
busy=OCCUPY;
eventCur->deparTime=clock+eventCur->serveTime;
eventCur->type=DEPAR;
destroyEventHead(eventCur);
placeEvent(eventCur);
}
else{
if(queueLength destroyEventHead(eventCur);
addQueue(eventCur);
custNumQueue++;
queueLength++;
}
else{
destroyEventHead(eventCur);
free(eventCur);
}
}
}
相关资源
- railroad铁路CAD生成
- ISE_14.7_license.lic
- ANSYS LS-DYNA
- phong模型(简单光照模型)
- 编译原理实验工具及参考源码(lex&
- Python全栈学习笔记面向对象大作业:
- 画图程序MFC/VC/VC CRectTracker 串行化
- IpHlpApi.h&IpHlpApi.lib
- 专门修改exe文件的资源
- powerdatagrid控件 源码
- 我写的一个简单的属性编辑器控件
- 校园网络信息发布系统
- Heroes3 资源文件查看器SND文件修改
- 2016移动支付年三赛点:补贴、硬件、
- 迅雷敏感资源限制解除小工具.zip
- Git汉化资源
- Xilinx FPGA底层资源架构与设计规范
- mongodb+redis资源
- 水资源监测数据通讯规约SZY206-2016.p
- CCleaner Pro v5.06.5219中文版(集成注册码
- springboot+mybatis整合实现注册登录
- 利用存储虚拟化整合企业存储资源
- DFT某省国土资源厅数据中心存储备份
- 华为公司人力资源管理纲要2.0总纲公
- LPAR逻辑分区 ‒ 机器内可在线移动资
- 网卡驱动程序软件 intel pro 100ve)
- visio2013模板资源
- PowerHRP助力贝尔罗斯提升人力资源管理
- 2017黑马软件测试全套完整视频教程
- 论中国天然林保护可持续发展管理机
评论
共有 条评论