Смекни!
smekni.com

Модель бензоколонки (стр. 3 из 3)

Рис.7. Зависимость оптимального числа каналов nkот параметров Тз.ср и Тобс.ср

4. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ

В интегральной среде VisualBasic 5.0 создайте программу «Модель бензоколонки», текст которой приведен ниже. Произведите отладку программы с целью ликвидации формальных ошибок. Произведите проверку программы расчетом. Подставьте те же исходные данные, которые были выбраны в приведенном выше примере. Убедитесь в том, что результаты расчетов практически совпадают. Произведите самостоятельное исследование закономерностей функционирования фирмы с помощью алгоритмической модели. Выберите исходные данные, проведите расчеты и проанализируйте результаты моделирования.

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

1. Стартовая форма frmForm1

1.1. Таблица свойств формы 1 (макет на рис. 2)

Объект Свойства Установки
Форма 1 NameCaption FrmForm1Модель СМО с 1,2 или 3 каналами
Командная кнопка 1 NameCaption Command1Расчет
Командная кнопка 2 NameCaption Command2Расчет
Командная кнопка 3 NameCaption Command3Выход

1.2. Процедуры обработки прерываний

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

2. Форма frmForm2

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

Объект Свойства Установки
Форма 2 NameEnabled Form2False

2.2. Процедура обработки прерываний

Private Sub Form2_Load()

End Sub

3. Модули общего назначения

‘Описание констант и массивов

PublicConstTfin = 10 ‘время окончания работы

PublicConstNzMax = 40 ‘максимальное число заявок

PublicTz(Nzmax) ‘массив времени поступления заявок

PublicNob(3) AsInteger‘число обслуженных заявок в каналах

PublicTKO(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()

‘Главный модуль

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

frmForm1.Enabled = False: FrmForm1.Visible = False

frmForm2.Enabled = True: FrmForm2.Visible = True

ForIr = 1 ToNr‘начало цикла случайных реализаций

frmForm2.Cls‘очистка окна формы 2

frmForm2.CurrentX = 600: frmForm2.CurrentY = 200

frmForm2.Print “Расчет ” & Ir & “-й реализации” ‘вывод показаний ‘счетчика числа реализаций в окно формы 2 ‘обнуление локальных переменных

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

Nob(1) = 0: Nob(2) = 0: Nob(3) = 0 ‘обнуление числа обслуженных заявок

TKO(1) = 0: TKO(2) = 0: TKO(3) = 0 ‘время окончания обслуживания

‘заявок в 1, 2 и 3-м каналах

CallZAJAVKA‘процедура «Поток заявок»

ForIz = 1 ToNz‘начало цикла обслуживания заявок

‘выбор номера канала

TKmin = TKO(1)

For J = 1 To Nkan

If TKO(J) < Tkmin Then Tkmin = TKO(J): Jmin = J

NextJ

CallSERVICE‘процедура обслуживания заявки

NextIz‘конец цикла обслуживания заявок

‘суммарное число обслуженных заявок:

Snob = Snob + Nob(1) + Nod(2) + Nob(3)

NextIr‘конец цикла реализаций

FrmForm2.Enabled = False: FrmForm2.Visible = False

FrmForm1.Enabled = True: FrmForm1.Visible = True

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

Cont = Snob/Nr – 1 + 0.5 * Nkan – 0.5 * Nkan * Nkan

frmForm1.txtResult = Format$(Cont, “#.##”)

End Sub

SubSAJAVKA

‘Процедура «Поток заявок»

T = 0 ‘модельное время

ForJ = 1 ToNzmax‘начало цикла формирования заявок

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

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

IfTs > TfinThenExitFor‘условие прекращения приема заявок

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

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

T = Ts‘изменение модельного времени

NextJ‘конец цикла формирования заявок

End Sub

Sub SERVICE

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

J = Jmin‘номер канала

DTWait = 0 ‘начальное значение времени ожидания

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

IfTz(Iz) < TKO(J) Then‘проверка необходимости коррктировки

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

DTWait = TKO(J) – Tz(Iz) ‘период ожидания

If DTWait > Twmax Then Exit Sub

‘время начала обслуживания

TH = TKO(J)

EndIf

Z = Rnd(1) ‘случайная величина с равномерным ‘распределением в интервале (0,1)

TK = TH – Tobcp * Log(z) ‘время окончания обслуживания

If TK > Tfin Then

TKO(J) = Tfin: Exit Sub

EndIf

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

TKO(J) = TK‘время окончания обслуживания

End Sub