/// <summary> /// Generates a new event based on this UserGroups random interarrival mean. /// </summary> /// <param name="simulationClock">Simulation clock for offsetting time to enter system</param> /// <returns></returns> public Job GenerateArrival(double simulationClock) { CurEventCooldown = PseudoRandomGenerator.ExponentialRVG(view.InterarrivalERVGMean); Job newJob = new Job(CurEventCooldown + simulationClock, this, simulationClock); return newJob; }
/// <summary> /// Called when a system component is processing a Job. /// </summary> /// <param name="component">Next component to process job</param> /// <param name="job">Job being processed</param> /// <param name="isMac">If it's the Mac, set SystemEntryTime and increment number of jobs in system for W and L</param> /// <returns></returns> private KeyValuePair<double, Job> SystemComponentJobProcess(SystemComponentData component, Job job, bool isMac) { if (isMac) { job.SystemEntryTime = SimClock; jobsInSystem++; } // BUSY if (SimClock < component.TimeIdleAgain) { job.ArrivalTime = component.TimeIdleAgain + PseudoRandomGenerator.ExponentialRVG(component.ProcessMean); } // IDLE else { component.TotalTimeIdle += (SimClock - component.TimeIdleAgain); job.ArrivalTime += PseudoRandomGenerator.ExponentialRVG(component.ProcessMean); } component.TimeIdleAgain = job.ArrivalTime; job.LocationInSystem = component; return new KeyValuePair<double,Job>(job.ArrivalTime, job); }