Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Варфоломеев алгоритмизация.doc
Скачиваний:
15
Добавлен:
11.11.2019
Размер:
2.78 Mб
Скачать

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

Объект

Свойства

Установки

Форма 2

Name Enabled

Form2 False

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

Private Sub Form2 Load() End Sub

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

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

Public Const Tfin = 10 'время окончания работы

Public Const Nzmax = 40 'максимальное число заявок

Public TzfNzmax) 'массив времени поступления заявок

Public Nob(3) As Integer 'число обслуженных заявок в каналах

Public ТКО(З) 'время окончания обслуживания заявок

Public TZcp, Tobcp, Twmax, Tkmin, TH, TK, z, Ts Public Snob As Long, lz 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 'сумматор числа обслуженных заявок

frmForm 1.Enabled = False: frmForm 1.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(l) = 0: Nob(2) = 0: Nob(3) = 0' обнуление числа обслуженных

'заявок

ТКО(1) = 0: ТКО(2) = 0: ТКО(З) = 0 ' время окончания

' обслуживания 'заявок в 1, 2 и 3-м каналах Call ZAJAVKA ' процедура "Поток заявок"

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

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

TKmin = ТКО(1) For J = 1 То Nkan

If TKO(J) < TKmin Then TKmin = TKO(J): Jmin = J Next J

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

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

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

Snob = Snob + Nob(l) + Nob(2) + Nob(3)

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

frmForm2.Enabled = False: frmForm2. Visible = False frmForml.Enabled = True: frmForml. Visible = True

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

Cotn = SNob / Nr - 1 + 0.5 * Nkan - 0.5 * Nkan ♦ Nkan frmForm 1 .txtResult = Format$(Cotn, "#.##") End Sub

Sub ZAJAVKA()

' Процедура "Поток заявок"

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

For J = 1 То Nzmax' ' начало цикла формирования заявок z = Rnd(l) ' случайная величина с равномерным распределением

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

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

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

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

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

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

Sub SERVICE0

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

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

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

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

If Tz(lz) < TKO(J) Then ' проверка необходимости корректировки ' корректировка времени начала обслуживания:

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

If DTWait > TWmax Then Exit Sub

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

End If

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

' в интервале (0,1)

TK = ТН - TObcp * Log(z) ' время окончания обслуживания

If TK > Tfin Then

TKO(J) = Tfin: Exit Sub End If

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

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

End Sub

Приложение 3

Программа

модели управления запасами на языке Visual Basic 5.0

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

Макет стартовой формы приведен на рис. S.I, с. 89 1.1. Таблица свойств

Объект

Свойства

Установки

Форма 1

Name

frmZapasy

Caption

Модель управления запасами

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

Name

cmdRashet

Caption

Расчет

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

Name

cmdClear

Caption

Очистка

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

Name

cmdExit

Caption

Выход


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

Private Sub cmdRaschet_Click()

Nur = Val(txtbegUr): Part = Val(txtParty) URmin = Val(txtURmn):MTVZ=Val(txtMTdos) STVZ=Val(txtSNdos): MDS=Val(txtMDcp) SDS=Val(txtSKOD): Cl=Val(txtC_l): C2=Val(txtC_2) C3=Val(txtC_3): TD=Val(txtTskl): Nr=Val(txtNreal) Call Model3 End Sub

Private Sub cmdClear_Click()

frmZapasy.txtResult = "" End Sub

Private Sub cmdExit_Click()

End End Sub

2. Модуль общего назначения Model3.bas

Public Sub Model3()

' Главный модуль программы "управление запасами" MSC = 0 ' средние суммарные издержки

SSC - 0 ' СКО суммарных издержек

ТРО = TD + 1 ' время выполнения заявки на поставку

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

ТР=ТР0 ' исходное значение времени поступления партии товара Scl=0 ' исходная сумма затрат на хранение товара

Sc2=0 ' исходная сумма затрат на поставку товара

Sc3=0 ' исходная сумма затрат, связанных с нехваткой товара Т=0 ' счетчик модельного времени, дни

Zajav=0 ' признак отсутствия запроса на поставку

V=Nur ' начальный уровень текущего запаса

Do ' начало цикла DO...LOOP

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

If Т > TD Then Exit Do ' условие окончания расчета

' текущей реализации

N = Norm ' обращение к функции, вырабатывающей случайную величину с нормальным распределением — Norm D = Int(MDS + N * SDS) ' случайный дневной спрос

If Т >= TP Then

TP = ТРО ' восстановление исходного времени поставки Zajav = 0 'восстановление признака отсутствия заявки

V = V + Part ' увеличение запаса после поставки

End If

  • = V - D ' уменьшение запаса в результате спроса If V < 0 Then ' условие появления дефицита

Sc3 = Sc3 - V * СЗ 'определение издержек, связанных с

дефицитом товара

  • = О 'обнуление запаса товара End If

Scl = Scl + V * CI ' затраты на хранение товара

If V < Urmin Then ' снижение запаса ниже нормы

If Zajav = О Then ' условие отсутствия оформленной

'заявки на поступление товара Sc2 = Sc2 + С2 * Part ' затраты на организацию поставки N = Norm ' обращение к функции, вырабатывающей

' случайную ' величину с нормальным распределением TZ = Int(MTVZ + N * STVZ) ' случайное время выполнения

'очередного заказа

Zajav = 1 ' фиксация оформления заявки

End If End If Loop

SC = Scl + Sc2 + Sc3

MSC = MSC + SC ' суммарные издержки в Ir-реализациях

SSC = SSC + SC * SC ' сумма квадратов издержек

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

' результаты моделирования: Сер = MSC / Nr 'сред­

ние затраты

If Nr > 1 Then

DispC = (SSC-Nr*Ccp*Ccp)/(Nr-1) ' дисперсия затрат

' определение среднего квадратического отклонения затрат: If DispC>0 Then SigC = Sqr(DispC) Else SigC = 0 End If

С gar = Ccp+1.28*SigC ' максимальные гарантированные затраты

'вывод на экран результата расчета: frmZapasy.txtResult = Format$(Cgar, "#####") End Sub Function Norm()

'генератор нормального распределения Sz = О

For j = 1 To 12

z = Rnd(l) ' датчик случайных чисел с равномерным распределением

' в интервале (0,1)

Sz = Sz + z Next j

Norm = Sz - 6 ' центрирование случайной величины

End Function

Приложение 4

Программа

модели производственной фирмы на языке Visual Basic 5.0

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

Макет стартовой формы приведен на рис. 6.1, с. 104.