Beispiel #1
0
        private void task_a()
        {
            double μ1             = double.Parse(textBox_ch1.Text); // Интенсивность обработки заявок канала 1
            double μ2             = double.Parse(textBox_ch2.Text); // Интенсивность обработки заявок канала 2
            int    maxQueueCount1 = int.Parse(textBox_queue1.Text); // Число мест ожидания 1-й фазы
            int    maxQueueCount2 = int.Parse(textBox_queue2.Text); // Число мест ожидания 2-й фазы

            double λmin = double.Parse(textBox_λmin.Text);
            double λmax = double.Parse(textBox_λmax.Text);
            double step = double.Parse(textBox_step.Text);

            // Создадим список точек
            PointPairList denialProbabilityPoints  = new PointPairList();
            PointPairList denialProbability1Points = new PointPairList();
            PointPairList denialProbability2Points = new PointPairList();

            for (double λ = λmin; λ <= λmax; λ += step)
            {
                QueuingSystem qs = new QueuingSystem(λ, μ1, μ2, maxQueueCount1, maxQueueCount2);
                qs.Imitate();

                denialProbabilityPoints.Add(λ, qs.DenialProbability);
                denialProbability1Points.Add(λ, qs.DenialProbability1);
                denialProbability2Points.Add(λ, qs.DenialProbability2);
            }

            // Получим панель для рисования
            GraphPane pane = zedGraphControl_a.GraphPane;

            pane.XAxis.Title.Text = "λ, интенсивность входного потока заявок";
            pane.YAxis.Title.Text = "Вероятность";
            pane.Title.Text       = "";

            // Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
            pane.CurveList.Clear();


            LineItem denialCurve  = pane.AddCurve("Вероятность отказа", denialProbabilityPoints, Color.Blue, SymbolType.Default);
            LineItem denial1Curve = pane.AddCurve("Вероятность отказа 1", denialProbability1Points, Color.Black, SymbolType.Default);
            LineItem denial2Curve = pane.AddCurve("Вероятность отказа 2", denialProbability2Points, Color.Green, SymbolType.Default);

            denialCurve.Line.Width  = 1.2f;
            denialCurve.Symbol.Fill = new Fill(Color.Blue);

            denial1Curve.Line.Width  = 1.2f;
            denial1Curve.Symbol.Fill = new Fill(Color.Black);

            denial2Curve.Line.Width  = 1.2f;
            denial2Curve.Symbol.Fill = new Fill(Color.Green);

            // Вызываем метод AxisChange (), чтобы обновить данные об осях.
            // В противном случае на рисунке будет показана только часть графика,
            // которая умещается в интервалы по осям, установленные по умолчанию
            zedGraphControl_a.AxisChange();

            // Обновляем график
            zedGraphControl_a.Invalidate();
        }
Beispiel #2
0
        private void Imitate()
        {
            int    requestsNumber = int.Parse(textBox_number.Text);       // Количество заявок во входном потоке
            double λ              = double.Parse(textBox_intensity.Text); // Интенсивность входного потока заявок
            double μ1             = double.Parse(textBox_ch1.Text);       // Интенсивность обработки заявок канала 1
            double μ2             = double.Parse(textBox_ch2.Text);       // Интенсивность обработки заявок канала 2
            int    maxQueueCount1 = int.Parse(textBox_queue1.Text);       // Число мест ожидания 1-й фазы
            int    maxQueueCount2 = int.Parse(textBox_queue2.Text);       // Число мест ожидания 2-й фазы

            QueuingSystem qs = new QueuingSystem(λ, μ1, μ2, maxQueueCount1, maxQueueCount2);

            qs.Imitate(requestsNumber);


            label_denialCount1.Text = @"Количество отказов 1: " + qs.DenialCount1;
            textBox_denial1.Text    = qs.DenialProbability1.ToString(CultureInfo.InvariantCulture);

            label_denialCount2.Text = @"Количество отказов 2: " + qs.DenialCount2;
            textBox_denial2.Text    = qs.DenialProbability2.ToString(CultureInfo.InvariantCulture);

            label_denialCount.Text = @"Количество отказов: " + qs.DenialCount;
            textBox_denial.Text    = qs.DenialProbability.ToString(CultureInfo.InvariantCulture);
        }