Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
2 / 2 / 0
Регистрация: 22.05.2014
Сообщений: 23
1

Система массового обслуживания многоканальная с неограниченной очередью

17.05.2017, 16:56. Показов 5973. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста разобраться. Есть программа, имитирующая поступление заявок в систему, на входе задается кол-во каналов, среднее число заявок в час, среднее время обслуживания заявки, и сам интервал наблюдения. Неправильно считается кол-во обслуженных заявок, в чем ошибка?


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 int main_interval = 0; //общий интервал времени
        double dt = 0;         //длина одного шага
        double lambda = 0;     //среднее число заявок в минуту
        double Mu = 0;         //время обслуживания одной заявки в минутах
        int n = 0;             //количество каналов
        int S = 0;             //количество свободных каналов
        int length = 0;        //длина очереди
        int max_length = 0;    //максимальная длина очереди
        double r = 0;          //случайная вероятность того, что за интервал Tau не было заявок
        double Tau = 0;        //интервал между заявками на данном шаге
        int k = 0;             //количество заявок на данном шаге
        double time = 0;       //сколько прошло времени
        int away = 0;          //обслужено заявок на данном шаге
        int z = 0;             //количество заявок, которое требуется обслужить на данном шаге 
        int S_ = 0;            //количество занятых каналов
        Random rand = new Random();
        #endregion
 
        public void Start()
        {
            progressBar1.Minimum = 0;
            main_interval = (int)numMainInterval.Value * 60; //общий интервал времени в минутах
            progressBar1.Maximum = main_interval;
            dt = Math.Log(2) / lambda;                       //реальная длина одного шага в минутах
            timer1.Interval = (int)(dt * 100);              //модельная длина одного шага в милисекундах (модельное время идёт быстрее)
            timer1.Start();                                  //запуск таймера
        }
 
        public void Step()
        {
            r = Convert.ToDouble(rand.Next(100)) / 100; //случайная вероятность того, что за интервал Tau не было заявок
            Tau = -(Math.Log(r) / lambda);              //интервал между заявками на данном шаге
            k = (int)(dt / Tau);                        //поступило заявок
 
            away = (int)(n / Mu);                       //обслужено заявок
            int people = (n - S) + length + k - away;   //кол-во заявок в очереди и на каналах
            if (people >= n)                           //если заявок больше чем каналов 
            {
                S = 0;                                  //свободных каналов нет
                length = people - n;                    //считаем очередь
            }
            else if (people < n && people >= 0)        //если все заявки на каналах
            {
                S = n - people;                         //уменьшаем кол-во свободных каналов
                length = 0;                             //очередь равна 0
            }
            else if (people < 0)                        //если количество заявок отрицательно
            {
                S = n;                                  //количество свободных каналов максимально
                length = 0;                             //очередь равна 0
            }
 
            if (max_length < length)                    //сравниваем текущую очередь с максимальной
            {
                max_length = length;                    //если текущая очередь больше максимальной, 
            }                                           //устанавливаем новое значение максимальной очереди
            z = k + length;                             //очередь + новые заявки
            S_ = n - S;                                 //количество занятых каналов
        }
 
        #region События
        private void button1_Click(object sender, EventArgs e)
        {
            time = 0;
            length = 0;
            max_length = 0;
            lambda = Convert.ToDouble(tbOneTransitTime.Text.Replace('.', ',')) / 60;
            Mu = Convert.ToDouble(tbPeopleOnMinute.Text.Replace('.', ','));
            n = (int)numTerminalCount.Value;
            S = n;
            S_ = 0;
            k = 0;
            away = 0;
            z = 0;
            Otrisovka();
            Start();
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            time = time + dt;
            try
            {
                progressBar1.Value = (int)time;
            }
            catch { }
            if (time >= main_interval)
            {
                timer1.Stop();
            }
            Step();
            Otrisovka();
        }
 
        public void Otrisovka()
        {
            lbTime.Text = "Прошло минут " + time.ToString();
            lbFreeTerminalsCount.Text = "Количество свободных каналов = " + S.ToString();
            lbQueueLength.Text = "Длина очереди = " + length.ToString();
            lbMaxLength.Text = "Макс. длина очереди = " + max_length.ToString();
            lbCome.Text = "Поступило заявок " + k.ToString();
            lbAway.Text = "Обслужено заявок " + away.ToString();
            Count.Text = "Количество заявок " + z.ToString();
            CountTerminalWork.Text = "Количество занятых каналов = " + S_.ToString();
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2017, 16:56
Ответы с готовыми решениями:

Моделирование процесса функционирования многоканальной системы массового обслуживания с ограниченной очередью
Добрый день помогите сделать задачу, я в этом полный нубас)) Междугородный переговорный пункт...

Моделирование многоканальной системы массового обслуживания с неограниченной очередью и ее оптимизацией
Ребят я нубас полнейший :( прошу вашей помощи, брат попросил помочь найти решение с учебы задание....

Многоканальная система массового обслуживания
Всем привет. Нужно составить любую задачу на тему многоканальная система массового обслуживания,...

Многоканальная система массового обслуживания с приоритетами
Здравствуйте! Вообщем задание такое. Реализовать модель системы, представленной на рисунке:...

3
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
17.05.2017, 17:02 2
Взрыв мозга. Вы издеваетесь?
C#
1
2
3
S_ = n - S;
S = n;
S_ = 0;
называйте переменные осмыслено, чтобы понимать, а не бегать читать пояснения, пока нашел одно - другое уже вылетело с головы.
0
2 / 2 / 0
Регистрация: 22.05.2014
Сообщений: 23
18.05.2017, 18:37  [ТС] 3
не понимаю, что не так с переменными?
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
18.05.2017, 23:15 4
А Вы поставьте себя на наше место, как разбирать Ваш код? В самых паршивых универах, школах и то с первых уроков учат писать осмысленные названия переменных, классов, сущностей. Откройте любую книжку нормальную - там нету этих "волшебных" переменных, кроме как циклов for. Зачем так издеваться над мозгами людей, которые читают Ваш код?
0
18.05.2017, 23:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2017, 23:15
Помогаю со студенческими работами здесь

Многоканальная СМО с отказами ( система массового обслуживания - Delphi)
Составить программу решения задачи в среде программирования Delphi. На промышленном предприятии...

Многоканальная смо с неограниченной очередью (мастерская по ремонту холодильников)
В мастерской по ремонту холодильников работает n мастеров. В среднем в течение дня поступает в...

Система массового обслуживания с параллельными каналами обслуживания с повторами
Всем доброго времени суток. Прошу вашей помощи в следующей задаче (Нет, не очередной ловец халявы:...

Система массового обслуживания
Дана задача по системе массового обслуживания: АТС поселка обеспечивает не более 5 переговоров...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru