예제 #1
0
 /// <summary>
 /// Basic Construcor
 /// </summary>
 /// <param name="parentControlUnit">Parent control</param>
 /// <param name="client">Client to be served</param>
 /// <param name="server">Server performing service</param>
 public ActivityGetServed(ControlUnit parentControlUnit,
                          EntityClient client,
                          EntityServer server)
     : base(parentControlUnit, "ActivityGetServed", true)
 {
     _client = client;
     _server = server;
 } // end of Activity
예제 #2
0
        }     // 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
예제 #3
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
예제 #4
0
 /// <summary>
 /// Basic constructor
 /// </summary>
 /// <param name="type">Type of request, eiter "WaitInQueue" or "GetServed"</param>
 /// <param name="client">Client filing request</param>
 /// <param name="time">Time the request is filed</param>
 public RequestQueing(string type, EntityClient client, DateTime time)
     : base(type, client.ToArray(), time)
 {
     _client = client;
 } // end of RequestBeAbsent
예제 #5
0
 /// <summary>
 /// Basic constructor
 /// </summary>
 /// <param name="parentControlUnit">Parent control</param>
 /// <param name="patient">Client that arrives</param>
 public EventClientArrival(ControlUnit parentControlUnit, EntityClient client)
     : base(EventType.Standalone, parentControlUnit)
 {
     _client = client;
 } // end of Event