Ejemplo n.º 1
0
        /// <summary>
        /// 1. Symulacja kolejki M/M/1
        /// </summary>
        public void Task1()
        {
            double[] roValues         = new double[] { 0.25, 0.5, 0.75 };
            double   paramLambda      = 4;
            var      outputParams     = new QOutputParams();
            var      p0Points         = new List <List <Point> >();
            var      expectedP0Values = new List <double>();

            for (int i = 0; i < roValues.Length; i++)
            {
                double paramRo = roValues[i];
                double paramMi = paramLambda / paramRo;

                var queueSystem = new Mm1QueueSystem(paramMi, paramLambda);

                var simulator = new MultiSimulator(queueSystem);
                simulator.RunSim();

                outputParams.AddEntry(simulator.OutputParams);
                p0Points.Add(simulator.EventSimulator.P0Points);
                expectedP0Values.Add(simulator.EventSimulator.QueueSystem.ExpectedP0);
            }

            string output = Task1Intro;

            output += PrettyPrint(outputParams);

            SaveP0Points(p0Points);
            output += "\n\nPunkty wykresów zbieżności P0 zapisano w pliku 'p0data.txt' na Pulpicie";

            Console.Write(output);
            AllOutput += output;
        }
Ejemplo n.º 2
0
        public void Task2()
        {
            var outputParams = new QOutputParams();

            double[] roValues    = new double[] { 0.25, 0.5, 0.75 };
            double   paramLambda = 4;

            double[] imgClientsProbas = new double[3];

            for (int i = 0; i < roValues.Length; i++)
            {
                double paramRo     = roValues[i];
                double paramMi     = paramLambda / paramRo;
                var    queueSystem = new Mm1Continuous(paramMi, paramLambda);
                var    simulator   = new MultiSimulator(queueSystem);
                simulator.RunSim();

                outputParams.AddEntry(simulator.OutputParams);
                imgClientsProbas[i] = simulator.ImgClientServicedProbability;
            }

            string output = Task2Intro;

            output += PrettyPrint(outputParams);
            output += PrettyPrintImgClientProbability(roValues, imgClientsProbas);
            Console.Write(output);
            AllOutput += output;
        }
Ejemplo n.º 3
0
        private string PrettyPrint(QOutputParams outputParams)
        {
            double[] roValues = outputParams.RoValues;
            string   output   = "";

            output += ("\t\t\t\t\t   Ro\n");
            output += ($"\t\t\t| {roValues[0]:0.00}\t | {roValues[1]:0.00}\t  | {roValues[2]:0.00}   |\n");
            output += ("\t\t\t----------------------------\n");

            foreach (var oParam in outputParams.AllParams)
            {
                var expecteds = oParam.Values.Select((param) => param.sExpected).ToList();
                var values    = oParam.Values.Select((param) => param.sValue).ToList();
                var errors    = oParam.Values.Select((param) => param.sError).ToList();

                string expectedString = "\tOczekiwane\t|";
                string valuesString   = "\tUzyskane\t|";
                string errorsString   = "\tBład wzg.\t|";

                for (int i = 0; i < roValues.Length; i++)
                {
                    expectedString += $" {expecteds[i]} |";
                    valuesString   += $" {values[i]} |";
                    errorsString   += $" {errors[i]}   |";
                }

                expectedString += $"\n";
                valuesString   += $"\n";
                errorsString   += $"\n";

                output += ($"{oParam.Name}\t\t\t\t\n");
                output += expectedString;
                output += valuesString;
                output += errorsString;
                output += ("\t\t\t----------------------------\n");
            }

            return(output);
        }