matlab中排队论的程序

matlab中排队论的程序,第1张

你参考模仿一下吧。

clear

clc

%

%初始化顾客

%

%总仿真时间

Total_time = 10;

%队列最大长度

N = 10000000000;

%到达率与服务率

lambda = 10;

mu = 6;

%平均到达时间与平均服务时间

arr_mean = 1/lambda;

ser_mean = 1/mu;

arr_num = round(Total_timelambda2);

events = [];

%按负指数分布产生各顾客达到时间间隔

events(1,:) = exprnd(arr_mean,1,arr_num);

%各顾客的到达时刻等于时间间隔的累积和

events(1,:) = cumsum(events(1,:));

%按负指数分布产生各顾客服务时间

events(2,:) = exprnd(ser_mean,1,arr_num);

%计算仿真顾客个数,即到达时刻在仿真时间内的顾客数

len_sim = sum(events(1,:)<= Total_time);

%

%计算第 1个顾客的信息

%

%第 1个顾客进入系统后直接接受服务,无需等待

events(3,1) = 0;

%其离开时刻等于其到达时刻与服务时间之和

events(4,1) = events(1,1)+events(2,1);

%其肯定被系统接纳,此时系统内共有

%1个顾客,故标志位置1

events(5,1) = 1;

%其进入系统后,系统内已有成员序号为 1

member = [1];

for i = 2:arr_num

%如果第 i个顾客的到达时间超过了仿真时间,则跳出循环

if events(1,i)>Total_time

break;

else

number = sum(events(4,member) > events(1,i));

%如果系统已满,则系统拒绝第 i个顾客,其标志位置 0

if number >= N+1

events(5,i) = 0;

%如果系统为空,则第 i个顾客直接接受服务

else

if number == 0

%其等待时间为 0

20091516

%PROGRAMLANGUAGEPROGRAMLANGUAGE

events(3,i) = 0;

%其离开时刻等于到达时刻与服务时间之和

events(4,i) = events(1,i)+events(2,i);

%其标志位置 1

events(5,i) = 1;

member = [member,i];

%如果系统有顾客正在接受服务,且系统等待队列未满,则 第 i个顾客进入系统

else len_mem = length(member);

%其等待时间等于队列中前一个顾客的离开时刻减去其到 达时刻

events(3,i)=events(4,member(len_mem))-events(1,i);

%其离开时刻等于队列中前一个顾客的离开时刻加上其服

%务时间

events(4,i)=events(4,member(len_mem))+events(2,i);

%标识位表示其进入系统后,系统内共有的顾客数

events(5,i) = number+1;

member = [member,i];

end

end

end

end

%仿真结束时,进入系统的总顾客数

len_mem = length(member);

%

%输出结果

%

%绘制在仿真时间内,进入系统的所有顾客的到达时刻和离

%开时刻曲线图(stairs:绘制二维阶梯图)

stairs([0 events(1,member)],0:len_mem);

hold on;

stairs([0 events(4,member)],0:len_mem,'-r');

legend('到达时间 ','离开时间 ');

hold off;

grid on;

%绘制在仿真时间内,进入系统的所有顾客的停留时间和等

%待时间曲线图(plot:绘制二维线性图)

figure;

plot(1:len_mem,events(3,member),'r-',1: len_mem,events(2,member)+events(3,member),'k-');

legend('等待时间 ','停留时间 ');

grid on;

#include <stdioh>

#include <malloch>

typedef int queuetype;

queuetype num=1;

typedef struct qnode

{

    queuetype data;

  struct qnode next;

} QNode; //链队结点类型

typedef struct 

{

    QNode front,rear;

} QuType;

void initlqueue(QuType L)

{

 L->front=L->rear=NULL;

}

void pushlqueue(QuType L,queuetype e)

{

 QNode p=(QNode)malloc(sizeof(QNode));

 p->data=e;

 p->next=NULL;

 if(!L->front)

 {

  L->front=p;

 }

 if(L->rear)

  L->rear->next=p;

 L->rear=p;

 num++;

}

void deletlqueue(QuType L)

{

 if(L->front)

 {

  QNode p;

  p=L->front;

  printf("第%d位选手已经就诊!\n",p->data);

  L->front=p->next;

  if(!p)

   L->rear=NULL;

  else

   free(p);

 }

 else

 {

  

  num=0;

  printf("所有的病人都已就诊完毕!\n");

 }

}

void showqueueperson(QuType L)

{

 QNode p=L->front;

 printf("输出所有排队者的序号:\n");

 while(p)

 {

  printf(" %d\n",p->data);

  p=p->next;

 }

 if(!L->front)

  printf("病人都已经看病完成!\n");

}

void quikSee(QuTypeL,queuetype e)

{

 QNode p=L->front,q,t;

 while(p&&p->data!=e)

 {

  t=p;

  p=p->next;

 }

 if(p->data==e)

 {

  printf("find!%d号即可进行诊疗!\n",p->data);

  q=t->next;

  if(q->next)

  t->next=q->next;

if(t->next==L->rear)

   t->next=L->rear=NULL;  free(q);

  

 }

 else

  printf("队列中无此人!无需删除 *** 作!\n");

}

//链队类型

void SeeDoctor()

{

    int sel,flag=1;

    QuType qu=(QuType)malloc(sizeof(QuType));

 queuetype quik=0;

    initlqueue(qu);//创建空队

 while (flag==1) //循环执行

 {

  printf("1:排队 2:就诊 3:查看排队 4不再排队,余下依次就诊 5:下班  请选择:");

  scanf("%d",&sel);

  switch(sel)

  {        //排队,入队

  case 1: pushlqueue(qu,num); printf("\n挂号成功!\n"); break;

  case 2: deletlqueue(qu);

   printf("\n");break;  //就诊,出队

  case 3: showqueueperson(qu);   break;  //显示排队病人

  case 4: {

     printf("若您需要马上就诊,请输入您的号:");

     scanf("%d",&quik);

     quikSee(qu,quik);

     printf("\n");

    }      break;  //任意顺序就诊

  case 5: {

     printf("抱歉!已下班,请排队的病人明天再来就诊!\n\n");//下班,明天就医!

     flag=0;     //退出

     break;

    }

  default : printf("输入错误,请从新输入!\n\n"); continue;

  }

    }

}

void main()

{

 SeeDoctor();

}

病人的姓名等信息就在结构体里加几个成员就行了!主要功能已经实现了!

我截张图给你吧!

以上就是关于matlab中排队论的程序全部的内容,包括:matlab中排队论的程序、c语言课程设计题目 医院排队看病系统、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10085944.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存