资源简介
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);
}
}
}
相关资源
- Maven教学视频及实战项目
- ArcGISEnterprise10.7全套资源.txt
- 技术专利模板-专利编写资源
- 网易wdf格式资源文件提取器代码
- 大学数据结构期末考试试题(有答案
- arcgis10.2.2全套资源
- K3_WISE_V14.3安装包、资源包
- LPC2294开发板资源
- 梦幻手游资源提取
- 打开文件夹资源管理器,选中多个文
- 简易计算器2014版 v1.0 文件夹.rar
- Game AI Pro1~3高清pdf资源
- 颜色提取器的源代码资源
- 《视觉测量》张广军最新版高清pdf(
- windows资源管理系统 自启工具
- opensees 资源
- 资源链接列表.docx
- myeclipse10绿色版百度云资源.txt
- cqsjh5资源和搭建教程.docx
- nostarch1.zip web漏洞实验app
- react项目使用了 Ant Design等需要三级联
- 恐怖密室++精细场景模型,高质量灯光
- 全套数据结构视频-网盘资源
- kettle资源
- Origin 2018 安装资源+安装教程
- LuaInterface资源包
- elementUI元件库旧版资源
- 乐优商城资源整合链接.txt
- CAD视频教程百度云资源链接类型
- 数据可视化经典案例数据资源
评论
共有 条评论