public void TestBufferedServer() { m_noAdmitCount = 0; m_admitCount = 0; m_model = new Model(); ((Model)m_model).RandomServer = new Randoms.RandomServer(54321, 100); ItemSource factory = CreatePatientGenerator("Patient_", 25, 5.0, 3.0); NormalDistribution dist = new NormalDistribution(m_model, "SvcDistribution", Guid.NewGuid(), 15.0, 3.0); IPeriodicity per = new Periodicity(dist, Periodicity.Units.Minutes); IResourceManager rscPool = new SelfManagingResource(m_model, "RscMgr", Guid.NewGuid(), 5.0, 5.0, false, true, true); BufferedServer bs = new BufferedServer(m_model, "RscSvr", Guid.NewGuid(), per, new IResourceRequest[] { new SimpleResourceRequest(1.0, rscPool) }, true, false); bs.PlaceInService(); ConnectorFactory.Connect(factory.Output, bs.Input); factory.Output.PortDataPresented += new PortDataEvent(FactoryOutput_PortDataPresented); bs.PreQueue.LevelChangedEvent += new QueueLevelChangeEvent(Queue_LevelChangedEvent); bs.ServiceBeginning += new ServiceEvent(Server_ServiceBeginning); bs.ServiceCompleted += new ServiceEvent(Server_ServiceCompleted); m_model.Start(); }
public void TestResourceServerComplexDemands() { m_noAdmitCount = 0; m_admitCount = 0; m_model = new Model(); ((Model)m_model).RandomServer = new Randoms.RandomServer(54321, 100); ItemSource factory = CreatePatientGenerator("Patient_", 50, 5.0, 3.0); Queue queue = new Queue(m_model, "TestQueue", Guid.NewGuid()); ConnectorFactory.Connect(factory.Output, queue.Input); NormalDistribution dist = new NormalDistribution(m_model, "SvcDistribution", Guid.NewGuid(), 240.0, 45.0); IPeriodicity per = new Periodicity(dist, Periodicity.Units.Minutes); SelfManagingResource nursing = new SelfManagingResource(m_model, "Nursing", Guid.NewGuid(), 7.0, 7.0, false, false, true); SelfManagingResource clerks = new SelfManagingResource(m_model, "Clerks", Guid.NewGuid(), 6.0, 6.0, false, false, true); SelfManagingResource doctors = new SelfManagingResource(m_model, "Doctors", Guid.NewGuid(), 2.0, 2.0, false, false, true); MultiResourceTracker mrt = new MultiResourceTracker(m_model); mrt.Filter = ResourceEventRecordFilters.AcquireAndReleaseOnly; //mrt.Filter = ResourceTracker.Filters.AllEvents; mrt.AddTargets(nursing, clerks, doctors); IResourceRequest[] demands = new IResourceRequest[] { new SimpleResourceRequest(.20, nursing), new SimpleResourceRequest(.15, clerks), new SimpleResourceRequest(.05, doctors) }; ResourceServer rs = new ResourceServer(m_model, "RscSvr", Guid.NewGuid(), per, demands); rs.PlaceInService(); ConnectorFactory.Connect(queue.Output, rs.Input); factory.Output.PortDataPresented += new PortDataEvent(FactoryOutput_PortDataPresented); queue.LevelChangedEvent += new QueueLevelChangeEvent(Queue_LevelChangedEvent); rs.ServiceBeginning += new ServiceEvent(Server_ServiceBeginning); rs.ServiceCompleted += new ServiceEvent(Server_ServiceCompleted); m_model.Start(); // string dataFileName = Highpoint.Sage.Utility.DirectoryOperations.GetAppDataDir() + @"Data.csv"; // System.IO.TextWriter tw = new System.IO.StreamWriter(dataFileName); // foreach ( ResourceEventRecord rer in mrt ) { // tw.WriteLine(rer.When.ToLongTimeString()+"," // +rer.Resource.Name+"," // +rer.Action.ToString()+"," // +rer.Available ); // } // tw.Close(); // System.Diagnostics.Process.Start("excel.exe","\""+dataFileName+"\""); Console.WriteLine(new CSVDumper(mrt, new CompoundComparer(ResourceEventRecord.ByAction(false), ResourceEventRecord.ByTime(false))).ToString()); }