Форум: "Основная";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
ВнизКто-нибудь сталкивался с написанием моделирования системы Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c