- •Кафедра Экономической Кибернетики. Курсовая работа по “Математическим основам информатики и моделирования”
- •Введение.
- •Содержательное описание объекта моделирования.
- •Выбор формализованной схемы описания модели предприятия.
- •Построение модели в математических уравнениях.
- •Построение имитационной модели.
- •Анализ полученных результатов.
- •Оценка модели.
Построение имитационной модели.
Построение имитационной модели осуществлено на алгоритмическом языке программирования 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:
в цехе начинают работу 50 машин;
арендовано arend машин, всего в системе - (50+arend) машин;
в мастерской работают kolrab наладчиков и на момент t=0 они все заняты, т.е. начали ремонтировать kolrab машин;
на каждой фазе находится хотя бы одна машина.
Описание работы программы.
Программа работает следующим образом.
В начале вводятся количество арендных машин и количество нанятых рабочих. Затем вырабатываем датчиком псевдослучайных чисел время поломки каждой машины в цехе, ищем среди них минимальное и заносим его в переменную mintime[1], а его номер в noms[1]. Затем также вырабатываем время обслуживания машин, находящихся в ремонте и, найдя среди них минимальное, заносим его в mintime[3], а номер в noms[3]. Времени машин, стоящих в очереди и резерве, присваиваем минимальное время ремонта. Дальше сравниваем, что произойдет быстрее, машина сломается или отремонтируется. Если машина отремонтируется раньше, то ее состоянию присваиваем 4, т.е. делаем ее резервной, а машину из очереди помещаем в ремонт и вырабатываем ей время ремонта, при этом уменьшая очередь.
На начало следующего состояния системы мы в каждой фазе ищем нужный нам номер машины, а именно в 1-ой по минимальному времени поломки, во 2- ой и 4-ой - по максимальному времени стояния в очереди или в резерве, в 3-ей - по минимальному времени ремонта. Теперь снова сравниваем время ремонта и поломки. Из распределения времени поломки и ремонта видно, что минимальным опять будет время ремонта. Процесс продолжаем до тех пор, пока не отправятся в резерв все отремонтированные машины и очередь станет равной 0. Теперь у нас задействуются машины из цеха со своим временем поломки. Видя, что нет очереди и рабочие свободны, машина сразу отправляется на ремонт, меняя свое состояние sost[nom]:=3.
Теперь в mintime[1] находится следующее минимальное время поломки машины, которое сравнивается со временем машины в ремонте.
Как только в цехе окажется меньше 50 машин (knm>0), резервная машина переходит в состояние=1, и для нее вырабатывается время поломки, прибавляемое к тому времени, с которым она уже пришла в цех.
Каждый раз, когда система меняет свое состояние и в ней перемещаются машины, временам машин, которые стоят в очереди и в резерве, присваивается то время, согласно которому принимается решение. Каждый раз это время сравнивается с модельным, и при их равенстве выводятся результаты. Таким образом, отслеживая программу по времени и сравнивая его с модельным, достигается непрерывность процесса.