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

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

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

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

    1. Таблица свойств

Объекты

Свойства

Установки

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

Name

Caption

Command 1

Расчет

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

Name

Caption

Command 2

Очистка

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

Name

Caption

Command 1

выход

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

Private Sub Commandl_Click()

Lz = Val(Textl): P = Val(Text2): С = Val(Text3)

TD = Val(Text4): STotn = Val(Text5): Nr = W(Text6)

Forj = 1 To 4: MTobsG) = Val(Text7(j - 1)): Nextj

Call Model4

End Sub

Private Sub Command2_Click()

Text8 = «»: Text9 = «»

End Sub

Private Sub Command3_Click()

End

End Sub

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

Public MTobs(4), TH(4), TK(4)

Public Mprof As Double, Cprof As Double, Sum2 As Double

Public SNM As Double, SigProf As Double Public Lz, P, C, TD, STotn, Nr Public Ir, Nz, TzO, Nobs, i, j, z, Tz, N, Tobs, Sz, Min Public Max, SMT, Fact Const К = 4 ' число цехов

Public Sub Model7()

Randomize

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

Mprof = 0 ' начальное значение средней прибыли

Sum2 = 0 ' начальное значение суммы квадратов прибыли

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

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

Nz = 0: TzO = 0: Nobs = 0

For j = 1 To K: TKG) = 0: Nextj

Do ' начало внутреннего цикла DO..LOOP

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

'распределением

Tz = TzO - Log(z) / Lz ' время поступления заказа

TzO = Tz

If Tz > TD Then Exit Do

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

Forj = 1 To К ' начало цикла выполнения заказов

If Tz > TKG) Then TH(j)=Tz Else THG)=TK(j) N = NORM ' функция «Нормальное распределение»

Tobs = MTobsG) * (1 + N * STotn)

TK(j) = TH(j) + Tobs ' время окончания обслуживания

If TKG) > TD Then Exit Do

Tz = TKG)

Next j

Nobs = Nobs + 1

Loop

'результаты расчета одной реализации:

Prof = Р * Nobs – С ' прибыль

Mprof = Mprof + Prof ' суммарная прибыль

Sum2 = Sum2 + Prof * Prof ' сумма квадратов прибыли

Next Ir ' конец цикла случайных реализаций

Cprof = Mprof / Nr ' средняя прибыль

Disp = (Sum2 - Nr * Cprof * Cprof) / (Nr - 1) ' дисперсия прибыли

If Disp > 0 Then SigProf = Sqr(Disp) Else SigProf = 0

Gprof = Cprof - 1.28 * SigProf ' минимальная гарантированная

'прибыль

Call Factor ' расчет величины числового фактора

Forml.Text8 = Format$(Fact, «0.000»)

Forml.Text9 = Format$(Gprof, «#####»)

End Sub

Function NORM()

'процедура-функция «Нормальное распределение»

Sz = 0

For i = 1 To 12

z = Rnd: Sz = Sz + z

Nexti

NORM = Sz - 6

End Function

Public Sub Factor()

'процедура расчета числового фактора

Min = MTobs(l): Max = MTobs(l): SMT = 0

For f=l ToK

SMT = SMT + MTobs(f)

If MTobs(f) > Max Then Max = MTobs(f)

If MTobs(f) < Min Then Min = MTobs(f)

Next

Fact = (Max - Min) / SMT

End Sub