コード例 #1
0
ファイル: TestServers.cs プロジェクト: stuarthillary/Sage-1
        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();
        }
コード例 #2
0
ファイル: TestServers.cs プロジェクト: stuarthillary/Sage-1
        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());
        }