畅享博客 > 供应链仿真优化 > 系统建模与仿真 > [原创]单队列单服务台仿真程序Edit by Foxpro
2008-3-11 20:49:23

[原创]单队列单服务台仿真程序Edit by Foxpro

*中文注释已经显示为乱码,具体看附件prg文件,需要FoxPro6以上打开和运行!

****************************************************************************************
*      µ¥¶ÓÁе¥·þÎñ̨·ÂÕæ³ÌÐòSingleQueueSingleServer,SQSS                              *
*      ¹Ë¿Íµ½´ï¼ä¸ôʱ¼ä·þ´Ó£¨2£¬8£©µÄ¾ùÔÈ·Ö²¼£¬·þÎñʱ¼ä·þ´Ó£¨3£¬7£©µÄ¾ùÔÈ·Ö²¼          *
*      ·ÂÕæÏµÍ³ÔËÐÐ10000·ÖÖÓ£¬»ñµÃϵͳ£º·þÎñ̨¹¤×÷ʱ¼ä£¬¹Ë¿ÍÊýÁ¿£¬¶ÓÁ㤶ÈÖ¸±ê         *
****************************************************************************************
**************************************************************************
*                    Ö÷³ÌÐò           *
**************************************************************************          
DO Initial
DO WHILE SimuClock   IF NextEvent()=1
      DO Event1
   ELSE
      DO Event2
   ENDIF
ENDDO
DO MyReport

**************************************************************************
**       ³õʼ»¯¹ý³Ì£º¶¨Òå±äÁ¿£¬²¢³õʼ»¯±äÁ¿Öµ                           **
**************************************************************************
PROCEDURE  Initial
  PUBLIC Simuclock,ServerStatus,QueueLength,NextE1Time,NextE2Time,EndTime   &&·ÂÕæ¿ØÖƱäÁ¿
  PUBLIC SumInCustomer,SumOutCustomer,MaxQueueLength,TotalBusyTime
  EndTime=10000   &&·ÂÕæ½áÊøÊ±¼ä 
  Simuclock=0.0       &&·ÂÕæÏµÍ³Ê±ÖÓ
  ServerStatus=0
  QueueLength=0
  NextE1Time=0
  NextE2Time=2000
 
  SumInCustomer=0
  SumOutCustomer=0
  MaxQueueLength=0
  TotalBusyTime=0
  &&ÉÏÊöËÄÏî·Ö±ðÊÇ£º¹Ë¿Íµ½´ï×ÜÊý£¬¹Ë¿ÍÀ뿪×ÜÊý£¬×î´ó¶ÓÁг¤¶È£¬·þÎñÔ±×ܵŤ×÷ʱ¼ä
ENDPROC

**************************************************************************
**       ʼþ¸üйý³Ì£ºÈ·¶¨ÏÂһʼþ                                     **
**************************************************************************
FUNCTION NextEvent
  IF NextE1Time<=NextE2Time
     RETURN  1
  ELSE
     RETURN 2
  ENDIF
ENDFUNC

**************************************************************************
**       Event1¹ý³Ì£º¹Ë¿Íµ½´ïʼþÀý³Ì                                   **
**************************************************************************
PROCEDURE  Event1
  SimuClock=NextE1Time
  NextE1Time=NextE1Time+MyUniform(2,8)
  IF ServerStatus=0
     ServerStatus=1
     MidValue=MyUniform(3,7)   &&Õâ¾äºÍϾäÊÇΪÁËÀۼƷþÎñÔ±µÄ·þÎñʱ¼ä
     TotalBusyTime=TotalBusyTime+MidValue
     NextE2Time=SimuClock+MidValue
  ELSE
     QueueLength=QueueLength+1
  ENDIF
 
  &&ÏÂÃæ´úÂëΪͳ¼ÆÊý¾Ý´¦Àí
  SumInCustomer=SumInCustomer+1
  IF QueueLength>MaxQueueLength
     MaxQueueLength=QueueLength
  ENDIF
ENDPROC
**************************************************************************
**       Evengt2¹ý³Ì£º·þÎñÍê±ÏʼþÀý³Ì                                  **
**************************************************************************
PROCEDURE  Event2
   SimuClock=NextE2Time
   IF QueueLength=0
      ServerStatus=0
      NextE2Time=2000000
   ELSE
      QueueLength=QueueLength-1
      MidValue=MyUniform(3,7)      &&Õâ¾äºÍϾäÊÇΪÁËÀۼƷþÎñÔ±µÄ·þÎñʱ¼ä
      TotalBusyTime=TotalBusyTime+MidValue
      NextE2Time=SimuClock+MidValue
   ENDIF  
   SumOutCustomer=SumOutCustomer+1
ENDPROC
**************************************************************************
**       MyReport¹ý³Ì£º´òӡͳ¼ÆÊý¾Ý¹ý³Ì                                 **
**************************************************************************
PROCEDURE  MyReport
  ?"¹Ë¿Íµ½´ï×ÜÊý£º",SumInCustomer
  ?"¹Ë¿ÍÀ뿪×ÜÊý£º",SumOutCustomer
  ?"¶ÓÁÐ×î´ó³¤¶È£º",MaxQueueLength
  ?"·þÎñÔ±·þÎñ×Üʱ¼ä£º",TotalBusyTime
ENDPROC
**************************************************************************
**       MyUniform¹ý³Ì£º×Ô¶¨Òå¾ùÔÈËæ»úº¯Êý                              **
**************************************************************************
FUNCTION MyUniform
  PARAMETERS MinValue,MaxValue
  RETURN MinValue+(MaxValue-MinValue)*RAND()
ENDFUNC


****************************************************************************************************************
*                                                     ˼¿¼Ìâ                                                   *
****************************************************************************************************************
**********************************
*  Ò»¡¢¸ù¾ÝÈçÏÂÌõ¼þ£¬Ð޸ĴúÂ룬²¢ÔËÐзÂÕæ£¬»ñµÃͳ¼ÆÊý¾Ý
*     1£© ¹Ë¿Íµ½´ïʱ£¬·¢ÏÖÒѾ­ÓÐ10λ¹Ë¿ÍÔÚÅŶӣ¬Ôò²»½øÈëϵͳ£»Í³¼ÆÓжàÉÙλ¹Ë¿ÍÁ÷ʧÁË£»
*     2£© µ±·þÎñÔ±·¢ÏÖ¶ÓÁÐÖÐÓÐ5λÒÔÉϹ˿ÍÅŶÓʱ£¬Ôò¼Ó¿ì¹¤×÷²½·¥£¬¼´·þÎñʱ¼äËõ¶Ì10%£»
*     3£© ¹Ë¿Íÿ´Îµ½´ïµÄÊýÁ¿²»Êǹ̶¨µÄ1¸ö£¬¿ÉÄÜÊÇ1¡¢2¡¢»ò3¸ö£¬¶ÔÓ¦¸ÅÂÊΪ£º40£¬30£¬30£»
**********************************
* ¶þ¡¢ÔÚÍê³É100λ¹Ë¿Í·þÎñʱ£¬ÏµÍ³Í£Ö¹£¬Ä£ÄâԭϵͳºÍµÚÒ»ÌâÖÐÈýÖÖÇé¿ö£»

****************************************************************************************************************                                 

sqss.rar ( 1 KB )

推荐到鲜果: 查阅更多相关主题的帖子: 仿真

评论

您正在以 匿名用户 的身份发表评论  快速登录
(不得超过 50 个汉字)
       看不清,换一个
提示消息
(输入完内容可以直接按Ctrl+Enter提交)