📄 queue_lizhe.c
字号:
#include<math.h>
# include "stdlib.h"
main()
{
int i,j,sysm_num=0,m,n,y=1,custom_num=0;
float a[100],b[103],c[105],*tax,*tbs,*T;
double miu,v,result,free=0.0,lumda,plost,p_sum=0,server=0,Q,A;
double tx,tx_sum,txsum=0.0,tc,number=0;
double lo_queue=0,lo_sys=0,wt_queue=0,wt_sys=0;
tax=a;
T=a;
tbs=b;
randomize();
for(i=0;i<101;i++)
{
c[i]=0;
}
printf("The system content m<100 !\n");
printf("please input lumda, m ,miu and custom_num=");
scanf("%lf %d %lf %d",&lumda,&m,&miu,&custom_num);
printf("\n");
for(i=0;i<100;i++)
{v=(rand()%100)/100.0;
result=-log(1-v)/lumda;
a[i]=result;}
for (i=0;i<103;i++)
{v=(rand()%100)/100.0;
result=-log(1-v)/miu;
b[i]=result;}
tx_sum=*tax;
tax++;
for (n=1;n<custom_num;n++)/*服务custom_num个顾客*/
{
y++;
printf("custom_num=%d\n",y);
if ((tc+*tbs)<=(tx_sum+*tax))
{
tc=tc+*tbs;
txsum=tx_sum;
tx=tx_sum;
tx_sum=tx_sum+*tax;
T=tax;
sysm_num=0;
while((tx+*T)<tc)
{
++sysm_num;
if((*T)==0) sysm_num--;
tx=tx+*T;
T++;
printf("sysm_num_0=%d\n",sysm_num);
}
printf("sysm_num_1=%d\n",sysm_num);
free=0;
if(sysm_num==0)
{
free=tx_sum-tc;
c[0]=c[0]+free;
tc=tx_sum;
printf("sysm_num_2=%d,free=%f\n",sysm_num,free);
};
if(sysm_num>m)
{
printf("sysm_num_3=%d\n",sysm_num);
j=sysm_num-m;
for(i=0;i<j;i++)
{
*(tax+m+i)=0;
c[m+1]=c[m+1]+1;
}
sysm_num=m;
};
printf("sysm_num_4=%d\n",sysm_num);
if(sysm_num!=0)
{
printf("sysm_num_5=%d\n",sysm_num);
j=sysm_num;
free=0;
for(i=0;i<j;i++)
{
txsum=txsum+*(tax+i);
free=free+tc-tx;
printf("free=%f\n",free);
}
c[sysm_num]=c[sysm_num]+free;
};
printf("tc=%f,tx_sum=%f\n",tc,tx_sum);
}
if((tc+*tbs)>(tx_sum+*tax))
{
tc=tc+*tbs;
T=tax;
tx=tx_sum;
txsum=tx_sum;
sysm_num=0;
tx_sum=tx_sum+*tax;
while((tx+*T)<tc)
{
++sysm_num;
if(*T==0) sysm_num--;
tx=tx+*T;
T++;
printf("sysm_num_6=%f\n",sysm_num);
}
printf("sysm_num_7=%d\n",sysm_num);
if(sysm_num==0)
{
free=0;
free=tx_sum-tc;
c[0]=c[0]+free;
tc=tx_sum;
printf("sysm_num_8=%d,free=%f\n",sysm_num,free);
};
if(sysm_num>m)
{
printf("sysm_num_9=%d\n",sysm_num);
j=sysm_num-m;
for(i=0;i<j;i++)
{
*(tax+m+i)=0;
c[m+1]=c[m+1]+1;
}
sysm_num=m;
printf("sysm_num_10=%d",sysm_num);
};
if(sysm_num!=0)
{
printf("sysm_num_11=%d\n",sysm_num);
j=sysm_num;
free=0;
for(i=0;i<j;i++)
{
txsum=txsum+*(tax+i);
free=free+tc-txsum;
printf("free=%f\n",free);
}
};
c[sysm_num]=c[sysm_num]+free;
printf("tc=%f,tx_sum=%f\n",tc,tx_sum);
}
tax++;
tbs++;
}
plost=c[m+1]/custom_num;
server=1-c[0]/tx_sum;
Q=1-plost;
A=lumda*Q;
for(i=0;i<m+1;i++)
{
number=number+c[i];
}
number=number/tx_sum;
for (i=0;i<m+1;i++)
{c[i]=c[i]/tx_sum;
p_sum=p_sum+c[i];
if(i%5==0) printf("\n");
printf("c[%d]=%f,",i,c[i]);}
for (i=2;i<m+1;i++)
lo_queue=(i-1)*c[i]+lo_queue;
for(i=1;i<m+1;i++)
lo_sys=i*c[i]+lo_sys;
wt_queue=lo_queue/lumda;
wt_sys=lo_sys/lumda;
printf("\n");
printf("p_sum=%f,tc=%f,tx_sum=%f\n",p_sum,tc,tx_sum);
printf("plost=%f\n",plost);
printf("Q=%f\n",Q);
printf("A=%f\n",A);
printf("server=%f\n",server);
printf("lo_queue=%f,number=%f\n",lo_queue,number);
printf("lo_sys=%f\n",lo_sys);
printf("wt_queue=%f\n",wt_queue);
printf("wt_sys=%f\n",wt_sys);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -