Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Моделирование экономических систем(пособие).doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

4. Пример решения задачи моделирования

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

  • среднее время между заявками – Т3 ср = 9 мин;

  • диапазон времени обслуживания – DTo6c = 12 мин;

  • максимальное время ожидания – Тож.тах = 30 мин;

  • период функционирования –Ткон = 5 ч;

  • число случайных реализаций – Np= 5000 .

Варьируемые переменные:

• средние времена обслуживания заявок – Гобс ср = 1; 11/2; 2; 3; 5 мин;

• число каналов обслуживания – NK = 1; 2; 3; 4; 5.

Результаты расчетов приведены на рис. 6.

Рис. 6. Зависимость СОТН.СР от числа каналов NК и среднего времени

между заявками ТЗ.СР

При выбранных исходных данных оптимальное число кана­лов, при котором достигается наибольшая прибыль, увеличива­ется с уменьшением среднего времени между заявками.

Приложение 2

Программа модели смо с однородными заявками на языке

Visual Basic 6.0

Стартовая форма Form l

Макет стартовой формы приведен на рис. 2 (смотри выше).

1. Таблица свойств формы 1

Объект

Свойства

Установки

Форма 1

Name

Caption

Form 1

Модель СМО с 1,2 или 5 каналами

Командная

кнопка 1

Name

Caption

Command1

Расчет

Командная

кнопка 2

Name

Caption

Command2

Очистка

Командная

кнопка 3

Name

Caption

Command3

Выход

2. Процедуры обработки объектов

"ИМИТАЦИОННАЯ МОДЕЛЬ СИСТЕМЫ МАССОВОГО "ОБСЛУЖИВАНИЯ с 1, 2, 3, 4 или 5 каналами

"Однородными заявками и ограниченным ожиданием

‘----------------- Константы -----------------------------------------------------------------

Const Nzmax = 100 ‘максимальное число заявок

Const NKmax = 5 ‘максимальное число каналов

‘----------------- Описание массивов- -------------------------------------------------------

Dim Tz(Nzmax) 'массив времен поступления

Dim Nobs(NKmax) 'число обслуженных заявок в каналах

Dim TOK(NKmax ‘времена освобождения каналов

Dim TZcp, Tobscp, Tfin, TWmax, TKmin, TH, TK, z, Ts

Dim SNobs As Long, Iz, Nz, Ir, Nr, J, Nkan, Jmin

Private Sub Commandl_Click()

Nkan = Val(Textl): TZcp = Val(Text2): Tobscp = Val(Text3)

DTobs = Val(Text4): TWmax = W(Text5): Tfin = Val(Text6):

Nr = Val(Text7)

Call Raschet

End Sub

Sub Raschet()

'{---------------- процедура «Расчет» --------------------------}

SNob = 0 'сумматор числа обслуженных заявок

For Ir = 1 То Nr 'начало цикла случайных реализаций

'обнуление локальных переменных:

Nz = 0 'обнуление числа заявок

For i = 1 То NKmax

Nobs(i) = 0: TOK(i) = 0

Next

Call ZAJAVKA 'процедура «Поток заявок»

For Iz = 1 To Nz 'начало цикла обслуживания заявок

'выбор номера канала:

TKmin = 100

For J = 1 То Nkan

If ТОЩ J) < TKmin Then TKmin = TOK(J): Jmin = J

NextJ

IfNr=l Then Call Debug2

Call SERVICE 'процедура обслуживания заявки

Next Iz 'конец цикла обслуживания заявок

For i = 1 То Nkan

SNobs = SNobs + Nobs(i) 'суммарное число обслуженных заявок

Nexti

Nextlr 'конец цикла реализаций

'....показатель эффективности:

Cotn = SNobs / Nr - 1 + 0.5 * Nkan - 0.5 * Nkan * Nkan

Forml.Text8.ForeColor = &HFF

Forml.Text8 = Format$(Cotn, «0.0»)

End Sub

Siib ZAJAVKAO 'Процедура «Поток заявок»

Т = 0 'модельное время

For J = 1 То Nzmax 'начало цикла формирования заявок

z = Rnd( 1) 'случайная величина с равномерным

'распределением в интервале (0,1)

Ts = Т - TZcp * Log(z) 'случайное время поступления заявки

'...проверка условия прекращения приема заявок:

If Ts > Tfin * 60 Then Exit For

Nz = Nz + 1 'счетчик числа заявок

Tz(Nz) = Ts 'фиксированное время поступления заявки

Т = Ts 'изменение модельного времени

Next J 'конец цикла формирования заявок

End Sub

Sub SERVICEO

'------- Процедура «Обслуживание заявок»

J = Jmin

DTVteit = 0

TH = Tz(Iz) 'время начала обслуживания

'проверка необходимости корректировки времени:

If Tz(Iz) < TOK(J) Then

'корректировка времени начала обслуживания:

DTWait = TOK(J) - Tz(Iz) 'период ожидания

If DTWait > TWmax Then Exit Sub

TH = TOK(J) 'время начала обслуживания

End If

z = Rnd(l) 'случайная величина с равномерным

'распределением в интервале (0,1)

ТК = TH + Tobscp + DTods * (z - 0.5) 'время окончания обслуживания

If ТК > Tfin * 60 Then

TOK(J) = Tfin: Exit Sub

End If

Nobs(J) = Nobs(J) + 1 'увеличение числа обслуженных заявок

TOK(J) = ТК 'время окончания обслуживания

'If Nr = 1 Then Call Debug4

End Sub

Private Sub Command2_Click()

Text8 = ""

End Sub

Private Sub Command3_Click()

End

End Sub