Модель бензоколонки

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

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

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

Объект

Свойства

Установки

Форма 1

Name

Caption

FrmForm1

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

Командная кнопка 1

Name

Caption

Command1

Расчет

Командная кнопка 2

Name

Caption

Command2

Расчет

Командная кнопка 3

Name

Caption

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

Name

Enabled

Form2

False

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

Private Sub Form2_Load()

End Sub

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

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

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

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

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

frmForm1.Enabled = False: FrmForm1.Visible = False

frmForm2.Enabled = True: FrmForm2.Visible = True

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

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-м каналах

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

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

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

TKmin = TKO(1)

For J = 1 To Nkan

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

Next J

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

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

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

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

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

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

Sub SAJAVKA

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

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

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

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

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

If Ts > Tfin Then Exit For ‘условие прекращения приема заявок

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

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

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

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

End Sub

Sub SERVICE

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

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

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

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

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

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

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

If DTWait > Twmax Then Exit Sub

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

TH = TKO(J)

End If

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

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

If TK > Tfin Then

TKO(J) = Tfin: Exit Sub

End If

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

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

End Sub

Страница:  1  2  3  4 


Другие рефераты на тему «Экономико-математическое моделирование»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы