⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queue_lizhe.c

📁 模拟顾客服务过程
💻 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 + -