183537 (566987), страница 2
Текст из файла (страница 2)
Цифрой 2 обозначено действие, заключающееся в нажатии (с помощью мыши) кнопки «Расчет». В процедуре, связанной с этой кнопкой, оператор 3 осуществляет перевод исходных данных из символьной формы в числовую. Затем оператор 4 обращается к модулю общего назначения «Model2». Схема алгоритма этого модуля приведена на рис. 4.
Рис. 2. Макет стартовой формы:
1 - текстовые поля; 2 - командные кнопки
После окончания работы модуля и выдачи на экран результатов моделирования работа процедуры, связанной с кнопкой «Расчет», заканчивается. Программа вновь переходит в режим ожидания действий пользователя.
Цифрой 5 на схеме (рис.3) обозначено действие пользователя, заключающееся в нажатии кнопки «Очистка». В процедуре, связанной с ней, производится очищение текстового поля для вывода результата моделирования. Затем обычно производятся изменение исходных данных и проведение новых расчетов с использованием кнопки «Расчет».
Рис.3. Схема алгоритма процедур обработки прерываний
Цифрой 7 на схеме обозначено действие пользователя, заключающееся в нажатии кнопки «Выход». В результате работа программы прекращается.
Оператор 1 на рис. 4 обнуляет глобальную переменную SNобс - суммарное число обслуженных заявок. Оператор 2 активизирует окно формы № 2 и делает неактивным окно формы № 1. Оператор 3 начинает циклический перебор случайных реализаций. Оператор 4 выводит на экран (в окно формы № 2) счетчик числа рассчитанных реализаций.
Оператор 5 в начале каждой случайной реализации обнуляет локальные переменные, к которым относятся: число заявок, поступающих в одной реализации Nz, число обслуженных заявок в каждом из трех каналов Nобс1, Nобс2, Nобс3, начальные значения времени освобождения 1-го, 2-го и 3-го каналов Tок1, Tок2 и Tок3.
Рис.4. Схема алгоритма модуля «Model2»
Оператор 6 обращается к автономной процедуре формирования потока заявок. В результате работы этой процедуры формируется массив значений времени
[Тз(1), Тз(2), Тз(3),…, Тз(Nзi)],
где Nзi -общее число поступивших заявок для i-й случайной реализации.
Оператор 7 является началом цикла обслуживания заявок. Операторы 8, 9, 10 и 11 производят выбор номера канала, который характеризуется наименьшим значением времени освобождения от обслуживания заявки.
Оператор 12 обращается к автономной процедуре обслуживания очередной заявки. На выходе этой процедуры определяется число обслуженных заявок в выбранном канале Nобс(Jmin).
Оператор 13 служит для расчета суммарного числа обслуженных заявок по рекурсивной формуле
SNобс = SNобс + Nобс.1 + Nобс.2 + Nобс.3.
После окончания цикла случайных реализаций оператор 14 возвращает свойство активного окна форме № 1. Оператор 15 рассчитывает и выводит на экран значение выходной переменной - средней относительной прибыли по формуле
.
Схема алгоритма процедуры формирования заявок показана на рис. 5.
Оператор 1 устанавливает на нуль модельное время Т. Оператор 2 является началом цикла формирования заявок. Оператор 3 обращается к датчику случайных чисел, который вырабатывает возможное значение случайной величины z, равномерно распределенной в интервале (0,1).
Оператор 4 определяет возможное значение случайной величины времени поступления очередной заявки при условии, что среднее время между соседними заявками равно Тз.cp. Оператор 5 проверяет условие окончания процесса формирования заявок.
Оператор 6 подсчитывает число поступивших заявок, помещает время поступления каждой заявки в специальный массив и изменяет модельное время Т.
Схема алгоритма процедуры обслуживания заявок показана на рис. 6.
Оператор 1 обнуляет время ожидания начала обслуживания заявки Tож и присваивает времени начала обслуживания Tн время поступления очередной заявки T3(J3).
Рис.5. Схема алгоритма формирования заявок
Оператор 2 производит проверку занятости канала. Начальное значение времени освобождения канала Ткоj приравнивается нулю в главном модуле в блоке обнуления локальных переменных.
Если канал занят, то оператор 3 определяет время ожидания Tож как разность времени освобождения канала Ткоj и времени поступления заявки T3(J3). Оператор 4 проверяет условие, что время ожидания Тож превышает допустимое Тож.max. Если это условие выполняется, то управление передается на конец процедуры и заявка остается необслуженной.
Оператор 5 служит для коррекций времени начала обслуживания заявки. Оно теперь должно равняться времени освобождения канала Ткоj. Оператор 6 обращается к датчику случайных чисел с равномерным распределением в интервале (0,1), который вырабатывает возможное значение случайной величины z. Оператор 7 определяет возможное значение времени окончания обслуживания заявки Тк.
Оператор 8 проверяет условия окончания периода обслуживания, а оператор 9 фиксирует тот факт, что данный канал будет занят до конца рабочего дня. Оператор 10 увеличивает на единицу число обслуженных заявок в j-м канале и фиксирует время освобождения канала.
Рис. 6. Схема алгоритма процедуры обслуживания заявок
3. ПРИМЕР РЕШЕНИЯ ЗАДАЧИ МОДЕЛИРОВАНИЯ
Рассмотрим пример решения задачи исследования системы массового обслуживания с помощью разработанной алгоритмической модели. Выберем следующие входные параметры:
-
среднее время между заявками Тз.ср = 1 ч;
-
максимальное время ожидания Тож.max. = 0,25 ч;
-
число случайных реализаций Np = 5000.
Варьируемые переменные:
-
среднее время обслуживания заявок Тобс.ср = 0,5; 1; 2; 4 ч;
-
число каналов обслуживания NK = 1; 2; 3.
Результаты расчетов приведены в табл. 1.
Таблица 1
Nвар | NK | Тобс.ср | Cотн.ср |
1 | 1 | 0,5 | 6,27 |
2 | 2 | 0,5 | 7,12 |
3 | 3 | 0,5 | 5,53 |
4 | 1 | 1 | 4,24 |
5 | 2 | 1 | 5,83 |
6 | 3 | 1 | 4,74 |
7 | 1 | 2 | 2,33 |
8 | 2 | 2 | 3,61 |
9 | 3 | 2 | 2,94 |
10 | 1 | 4 | 0,95 |
11 | 2 | 4 | 1,40 |
12 | 3 | 4 | 0,65 |
Следовательно, при выбранных исходных данных, в частности при среднем времени между соседними заявками, равном 1 ч, наибольшая прибыль достигается при числе каналов NK=2.
Проведенные исследования показали, что оптимальное число каналов зависит от соотношения между величинами среднего времени между соседними заявками и среднего времени обслуживания (рис. 7).
Рис.7. Зависимость оптимального числа каналов nk от параметров Тз.ср и Тобс.ср
4. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
В интегральной среде Visual Basic 5.0 создайте программу «Модель бензоколонки», текст которой приведен ниже. Произведите отладку программы с целью ликвидации формальных ошибок. Произведите проверку программы расчетом. Подставьте те же исходные данные, которые были выбраны в приведенном выше примере. Убедитесь в том, что результаты расчетов практически совпадают. Произведите самостоятельное исследование закономерностей функционирования фирмы с помощью алгоритмической модели. Выберите исходные данные, проведите расчеты и проанализируйте результаты моделирования.
Программа моделирования бензоколонки
-
Стартовая форма frmForm1
-
Таблица свойств формы 1 (макет на рис. 2)
-
Объект | Свойства | Установки |
Форма 1 | Name Caption | FrmForm1 Модель СМО с 1,2 или 3 каналами |
Командная кнопка 1 | Name Caption | Command1 Расчет |
Командная кнопка 2 | Name Caption | Command2 Расчет |
Командная кнопка 3 | Name Caption | Command3 Выход |
-
Процедуры обработки прерываний
Private Sub Command1_Click()
Nkan = Val(txtNk): TZcp = Val(txtTzs): TObcp = Val(txtTobs)
TWmax = Val(txtTwm): Nr = Val(txtNp)
Call Model2
End Sub
Private Sub Command2_Click()
FrmForm1.txtResult = “”
End Sub
Private Sub Command3_Click()
End
End Sub
-
Форма frmForm2
-
Таблица свойств формы 2
-
Объект | Свойства | Установки |
Форма 2 | Name Enabled | Form2 False |
-
Процедура обработки прерываний
Private Sub Form2_Load()
End Sub
-
Модули общего назначения
‘Описание констант и массивов
Public Const Tfin = 10 ‘время окончания работы
Public Const NzMax = 40 ‘максимальное число заявок
Public Tz(Nzmax) ‘массив времени поступления заявок
Public Nob(3) As Integer ‘число обслуженных заявок в каналах
Public TKO(3) ‘время окончания обслуживания заявок
Public TScp, Tobcp, Twmax, Tkmin, TH, TK, z, Ts
Public Snob As Long, Iz As Integer, Nz As Integer, Ir As Integer
Public Nr As Integer, J As Integer, Nkan As Integer, Jmin As Integer 180
Public Sub Model2()
‘Главный модуль