Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual Basic
Перезагрузить страницу моделирование на VBA
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
FeSSi FeSSi вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 19.04.2012
По умолчанию моделирование на VBA - 19.04.2012, 18:28

Дана задача: Необходимо решить, какое число мест на стоянке следует отвести для автомобилей, ожидающих мойки. Интервалы времени между приходами автомобилей на мойку распределены экспоненциально со средним значением, равным 5 мин. Время мойки автомобиля также распределено экспоненциально со средним значением 4 мин. Если клиенты приезжают на мойку и не находят свободного места для ожидания, то они уезжают и моют свой автомобиль в другом месте.
Исследовать на имитационной модели, как зависит доля обслуженных и уехавших клиентов от числа мест на стоянке. Имитацию провести для одного, двух и трех мест на стоянке для машин, ожидающих мойки. Каждая конфигурация должна имитироваться для полного рабочего дня (8 часов без перерыва). Поскольку необслуженные клиенты и пустующие места на стоянке приносят убытки, определите на модели такое количество мест, которое минимизирует эти убытки.
Вот код:
vb Код:
Const Nzmax = 100       ‘максимальное число заявок 
Dim Tz(Nzmax)       ‘массив времени поступления заявок
Dim Nob As Integer      ‘число обслуженных заявок
Dim TKO, TKS(3) ‘время окончания обслуживания заявки, время ‘освобождения стоянки
Dim Nr As Integer      
Dim TZcp, Tobcp, Tkmin, TH, TK, z, Ts, TFin, Nz
Dim Snp As Long, Snot As Long      
Dim Snob As Long, Iz As Integer, Nkan As Integer, Jmin As Integer  

Private Sub CommandButton1_Click()  ‘кнопка «Расчет»
Nkan = Val(txtNk)       ‘количество стояночных мест
TZcp = Val(txtTzs)      ‘среднее время между заявками
Tobcp = Val(txtTobs)    ‘среднее время обслуживания заявки
Nr = Val(txtNp)     ‘число случайных реализаций
TFin = Val(txtFin)      ‘период работы
Call Model2         ‘вызов процедуры работы мойки
   End Sub

Private Sub CommandButton2_Click()  ‘кнопка «Очистить»
TxtResult = ""     
txtPost = ""           
txtObcl = ""           
txtNObcl = ""      
End Sub

Private Sub CommandButton3_Click()  ‘кнопка «Выход»
End
End Sub

Public Sub Model2()    
    Snob = 0            ‘сумма обслуженных заявок
    Snp = 0         ‘сумма поступивших заявок
    Snot = 0            ‘сумма необслуженных заявок
    For Ir = 1 To Nr        ‘цикл случайных реализаций
        Nz = 0          ‘обнуление числа поступивших заявок
        Nob = 0         ‘обнуление числа обслуженных заявок
        TKO = 0     ‘обнуление конца времени обслуживания заявки
        TKS(1) = 0: TKS(2) = 0: TKS(3) = 0      ‘обнуление времени
‘свобождения стоянки
        Call ZAJAVKA   
        For Iz = 1 To Nz    ‘цикл случайных реализаций
        Call SERVICE       
        Next Iz         ‘
        Snob = Snob + Nob   ‘сумма обслуженных заявок
        Snp = Snp + Nz  ‘сумма поступивших заявок
        Snot = Snp – Snob   ‘сумма необслуженных заявок
    Next Ir        
    Cotn = Snob / Nr - 1 + 0.5 * Nkan - 0.5 * Nkan * Nkan   ‘эффективность
    TxtResult = Format$(Cotn, "#.##")  
    txtPost = Snp      
    txtObcl = Snob 
    txtNObcl = Snot
End Sub

Sub ZAJAVKA()  
    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
End Sub

Sub SERVICE()      
    TH = Tz(Iz)     время поступления заявки
    If Tz(Iz) < TKO Then    ‘проверка необходимости корректировки времени
        Tkmin = TKS(1) 
        Jmin = 1       
        For J = 1 To Nkan  
            If TKS(J) < Tkmin Then Tkmin = TKS(J): Jmin = J ‘выбор стоянки
        Next J
        If Tz(Iz) < TKS(J) Then Exit Sub    ‘если нет свободных мест
        TH = TKO        ‘время начала обслуживания
        TKS(J) = TKO        ‘время освобождения стоянки
     End If
     z = Rnd(1)    
     TK = TH - Tobcp * Log(z)   ‘время конца обслуживания заявки
     If TK > TFin Then  ‘время окончания работ
        TKO = TFin: Exit Sub       
    End If
    Nob = Nob + 1       ‘счетчик обслуженных заявок
    TKO = TK        ‘время окончания обслуживания
End Sub

Почему то не меняется количество обслуженных для любого количества мест, а при вводе 3х каналов вообще ошибка о том, что выходит за размеры массива
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Моделирование работы МПА (Delphi, C#) Маша1986 Задания за деньги 1 20.12.2011 09:58
Моделирование квартиры Kostyan350 Любые вопросы от новичков 1 04.07.2011 22:56
Моделирование движения прыгающего мяча BlueScreen Вопросы начинающих программистов 1 09.05.2011 17:40
Симуляция и моделирование новых процессов James May Visual C++ 4 08.02.2011 02:46
Моделирование реального газа Оля2410 C++ Builder 1 29.12.2010 20:57
3d моделирование Cerber86 Софт и программы 13 18.02.2009 19:39
Моделирование пространственных явлений imported_@LeX Программирование графики 1 04.05.2007 15:51
Моделирование реальных процессов unlexd Алгоритмы 8 09.09.2006 23:28
Моделирование поверхностей Vadim_85 Программирование графики 1 26.06.2006 05:16
Ряды данных. Моделирование. CLP(FD). Поможите. -SergeyKo- Prolog 12 19.05.2006 03:09
Моделирование поверхностей Безье Tolya Программирование графики 5 22.06.2005 03:31



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов