Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дербенева Анна.doc
Скачиваний:
20
Добавлен:
19.04.2013
Размер:
38.4 Кб
Скачать

Построение имитационной модели.

Построение имитационной модели осуществлено на алгоритмическом языке программирования PASCAL. Название основной программы - model.exe.

В программе присутствует множество переменных, которые мы опишем идентификаторами:

i - переменная цикла;

r - переменная, в которую поступает случайное число;

nom - номер машины;

dloch - длина очереди;

arend - количество арендуемых машин;

kolrab - количество нанятых рабочих-наладчиков;

zanrab - количество занятых рабочих в процессе производства;

knm - количество неработающих машин, недостающих до 50;

krez - количество машин в резерве;

timemod - время длительности эксперимента;

zpl - зарплата рабочим;

d - издержки на рабочих в конце эксперимента;

zprostoi - издержки из-за снижения производства;

zrezerv - издержки на резервные машины;

minmin - определяет, к какой машине и к какой фазе, в данный момент

нужно обратиться;

timerez - переменная, в которой хранится прошлое время состояния системы,

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

timeprst - эта переменная, хранящая прошлое состояние системы,

необходима для подсчета издержек при снижении производства;

sost[1..4] - массив состояний всех машин;

times [1 .. 100] - массив времен, когда нужно обратиться к каждой машине;

mintime[1..4] - массив ближайших по времени машин в каждой фазе (1 -

производство, 2 - очередь, 3 - ремонт, 4 - резерв);

noms[ 1.. 4] - номера тех машин, к которым нужно обратиться в каждой фазе

при очередном состоянии системы;

В программе сделаны некоторые допущения:

1) в начальное время, какое бы количество рабочих мы не взяли для эксперимента, очередь всегда равна двум машинам;

2) количество арендных машин не может быть больше, чем количество нанятых рабочих , умноженное на 2, т. е. на длину очереди в начальный момент. Отсюда количество машин в резерве равно krez=arend - 2*kolrab.

Теперь при сказанных выше допущениях будем считать, что на момент времени t=0:

  1. в цехе начинают работу 50 машин;

  2. арендовано arend машин, всего в системе - (50+arend) машин;

  3. в мастерской работают kolrab наладчиков и на момент t=0 они все заняты, т.е. начали ремонтировать kolrab машин;

  4. на каждой фазе находится хотя бы одна машина.

Описание работы программы.

Программа работает следующим образом.

В начале вводятся количество арендных машин и количество нанятых рабочих. Затем вырабатываем датчиком псевдослучайных чисел время поломки каждой машины в цехе, ищем среди них минимальное и заносим его в переменную mintime[1], а его номер в noms[1]. Затем также вырабатываем время обслуживания машин, находящихся в ремонте и, найдя среди них минимальное, заносим его в mintime[3], а номер в noms[3]. Времени машин, стоящих в очереди и резерве, присваиваем минимальное время ремонта. Дальше сравниваем, что произойдет быстрее, машина сломается или отремонтируется. Если машина отремонтируется раньше, то ее состоянию присваиваем 4, т.е. делаем ее резервной, а машину из очереди помещаем в ремонт и вырабатываем ей время ремонта, при этом уменьшая очередь.

На начало следующего состояния системы мы в каждой фазе ищем нужный нам номер машины, а именно в 1-ой по минимальному времени поломки, во 2- ой и 4-ой - по максимальному времени стояния в очереди или в резерве, в 3-ей - по минимальному времени ремонта. Теперь снова сравниваем время ремонта и поломки. Из распределения времени поломки и ремонта видно, что минимальным опять будет время ремонта. Процесс продолжаем до тех пор, пока не отправятся в резерв все отремонтированные машины и очередь станет равной 0. Теперь у нас задействуются машины из цеха со своим временем поломки. Видя, что нет очереди и рабочие свободны, машина сразу отправляется на ремонт, меняя свое состояние sost[nom]:=3.

Теперь в mintime[1] находится следующее минимальное время поломки машины, которое сравнивается со временем машины в ремонте.

Как только в цехе окажется меньше 50 машин (knm>0), резервная машина переходит в состояние=1, и для нее вырабатывается время поломки, прибавляемое к тому времени, с которым она уже пришла в цех.

Каждый раз, когда система меняет свое состояние и в ней перемещаются машины, временам машин, которые стоят в очереди и в резерве, присваивается то время, согласно которому принимается решение. Каждый раз это время сравнивается с модельным, и при их равенстве выводятся результаты. Таким образом, отслеживая программу по времени и сравнивая его с модельным, достигается непрерывность процесса.