}     // end of

        #endregion

        #region Initialize

        /// <summary>
        /// Arrival stream of clients is initialized
        /// </summary>
        /// <param name="startTime">Start time of simulation</param>
        /// <param name="simEngine">End time of simulation</param>
        protected override void CustomInitialize(DateTime startTime, ISimulationEngine simEngine)
        {
            EntityClient nextClient = new EntityClient();

            EventClientArrival nextClientArrival = new EventClientArrival(this, nextClient);

            double arrivalTimeMinutes = ((SimulationModelQueuing)ParentSimulationModel).ArrivalTime;

            simEngine.AddScheduledEvent(nextClientArrival, startTime
                                        + TimeSpan.FromMinutes(Distributions.Instance.Exponential(arrivalTimeMinutes)));
        } // end of CustomInitialize
Exemple #2
0
        } // end of Event

        #endregion

        //--------------------------------------------------------------------------------------------------
        // State Change
        //--------------------------------------------------------------------------------------------------

        #region StateChange

        /// <summary>
        /// Overriden state change of the event. Request for service is made, next client arrival is scheduled
        /// </summary>
        /// <param name="time">Time the client arrives</param>
        /// <param name="simEngine">SimEngine responsible for simulation execution</param>
        protected override void StateChange(DateTime time, ISimulationEngine simEngine)
        {
            // next arrival is scheduled

            EntityClient nextClient = new EntityClient();

            EventClientArrival nextClientArrival = new EventClientArrival(ParentControlUnit, nextClient);

            double arrivalTimeMinutes = ((SimulationModelQueuing)ParentControlUnit.ParentSimulationModel).ArrivalTime;

            simEngine.AddScheduledEvent(nextClientArrival, time
                                        + TimeSpan.FromMinutes(Distributions.Instance.Exponential(arrivalTimeMinutes)));

            ParentControlUnit.AddRequest(new RequestQueing("WaitInQueue", Client, time));
        } // end of Trigger