Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.03;
Скачать: CL | DM;

Вниз

Кто-нибудь сталкивался с написанием моделирования системы   Найти похожие ветки 

 
Ryser   (2002-09-21 15:40) [0]

массового обслуживания? Ну, например, Модель автоматической телефонной станции. Есть там параметры всякие... Необходимо промоделировать работу телефонной станции в течение L часов. В ходе моделирования определить вероятность отказа, среднюю долю времени, в тече-ние которого телефонная станция вообще не загружена.
Может, посоветуете что-нибудь? Нужно понять сам алгоритм решения :(((


 
Юрий Зотов ©   (2002-09-21 17:18) [1]

Система состоит из N каналов (заводим массив). Каждый канал (запись или объект) характеризуется:

1. Типом или типами задач, которые он умеет исполнять (заводим перечислимый тип задач).
2. Производительностью (число - P операций в единицу времени).
3. Надежностью (число - T единиц времени бесперебойной работы).
4. Состоянием - свободен/занят/отказал (заводим перечислимый тип состояний каналов) и, если занят, то процент выполнения текущей задачи (время ее исполнения по отношению к объему задачи).

На вход системы (через определенные промежутки времени или хаотически) поступают задачи (заводим очередь задач (FIFO) - общую или свою для каждого типа задач). Каждая задача (запись) характеризуется:

1. Своим типом (уже завели - см. выше).
2. Объемом (число - кол-во единиц времени для ее выполнения).

Дополнительное поле в записи о задаче - ссылка на следующую запись (нужно для формирования очереди). Если задача последняя, там сидит nil. Должна быть переменная - указатель на начало очереди (если очередь пустая, там тоже сидит nil). То есть, это стандартный связанный список.

Как только имеется свободный канал, умеющий выполнять тип имеющейся в очереди задачи, она выбирается из очереди и поступает на выполнение в данный канал. С этого момента канал помечается, как занятый. Освободится он по истечении времени, не меньшего, чем объем этой задачи - и тогда либо займется новой задачей, либо будет простаивать и ждать, когда в очереди появится задача доступного ему типа (после чего займется ею). По истечении времени, не меньшего, чем время бесперебойной работы этого канала, он считается вышедшим из строя и удаляется из системы (навсегда или временно - если учитывать возможность ремонта и время ремонта). Если задача завершена, или обслуживавший ее канал вышел из строя, она удаляется из системы.

Далее задаем квант времени (числовая константа - чем меньше, тем точнее моделирование) и крутим цикл по времени (числовая переменная) от нуля до заданного времени L с приращением, равным кванту. Здесь мы обновляем состояние очереди (поступление задач), а далее крутим внутренний цикл - по каналам. В нем сначала определяем состояние каждого канала, а затем, если требуется, обновляем его и состояние очереди (выборка задач и удаление выполненных или повисших задач). Параллельно накапливаем нужную статистику.

По завершении внешнего цикла подбиваем требуемую суммарную статистику, выдаем результаты юзеру (преподавателю) и требуем с него денег (или пятерки).

Вот и все.
:о)

P.S.
Эта же программа годится для моделирования работы магазина, автосервиса, ресторана, некоторых технических устройств - любой системы массового обслуживания.


 
Andrey Shakula   (2002-09-23 10:04) [2]

Насколько помню из института - это все делается на основе сетей Петри.


 
AFrolov ©   (2002-09-23 10:51) [3]


> Далее задаем квант времени (числовая константа - чем меньше,
> тем точнее моделирование) и крутим цикл по времени (числовая
> переменная) от нуля до заданного времени L с приращением,
> равным кванту. Здесь мы обновляем состояние очереди (поступление
> задач), а далее крутим внутренний цикл - по каналам. В нем
> сначала определяем состояние каждого канала, а затем, если
> требуется, обновляем его и состояние очереди (выборка задач
> и удаление выполненных или повисших задач). Параллельно
> накапливаем нужную статистику.


Наиболее правильным является подход пособытийного рассмотрения жизни системы. Т.к. моменты когда ничего не происходит интереса не представляют.
Жизненый цикл любой заявки представляет сопряжен с рядом событий (приход заявки, поступление на обслуживание, завершение обслуживания и т.д.). При этом между событиями состояние заявки не изменяется. При этом все характеристики для получения статистик получаются как разность времени между событиями. По сравнению с методом предложенным Юрий Зотов © (21.09.02 17:18) данный подход имеет 2 приемущества -
1. Время моделирования намного меньше
2. Ошибки дискретизации времени равны 0





 
REA   (2002-09-23 12:10) [4]

Институт не помню, но помню что в теории массового обслуживания все это было - и законы распределения и одна касса много очередей и много касс одна очередь. Стало быть - в библиотеку.


 
3asys   (2002-09-23 12:16) [5]

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1031915428&n=0
Может что-нибудь найдете для себя.

С Уважением, 3asys


 
3asys   (2002-09-23 12:17) [6]

Извините! не туда скопировал -))

С Уважением, 3asys



Страницы: 1 вся ветка

Текущий архив: 2002.10.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
7-8205
ask
2002-07-24 10:26
2002.10.03
Информация о CD


7-8189
МИФИст
2002-07-24 21:13
2002.10.03
Красоту навожу...


14-8173
Weare
2002-09-10 11:13
2002.10.03
Помогите разобраться


14-8110
Ketmar
2002-09-05 09:57
2002.10.03
где менять цвет текста в Object Inspector е?


6-8092
phantom_17
2002-07-29 12:35
2002.10.03
Поиск