Автор работы: Пользователь скрыл имя, 10 Декабря 2013 в 09:09, курсовая работа
Целью выполнения курсовой работы является углубление знаний по данной дисциплине, применять имитационные модели в системах управления экономического назначения.
В ходе выполнения курсовой работы у студента должно формироваться представление о принципах и способах построения имитационной модели экономических процессов.
В ходе достижения цели решаются следующие задачи:
Проведение анализа возможных методов решения поставленной задачи;
Организация экспериментов с моделью;
Обработка результатов моделирования;
Введение 3
1 Постановка задачи 4
1.1 Переработка модели 5
2 Анализ задачи моделирования и выдвижение гипотез 6
2.1 Анализ задачи моделирования 6
2.2 Выдвижение гипотез 8
3 Описание реализации модели 9
3.1 Разработка концептуальных моделей 9
3.2 Выбор программного средства моделирования 10
3.3 Выбор программы для реализации имитационной модели 11
4 Описание имитационной модели 14
4.1 Описание использованных в модели объектов 16
4.2 Организация экспериментов в GPSS 19
5 Анализ и оценка результатов моделирования 20
Заключение 22
Список использованной литературы 23
Из приведённых данных видно, что среднее время прохождения заявок для первой модели аналогично результатам второй модели, откуда можно сделать вывод о том, что наилучшим с точки зрения пропускной способности производственной системы для данных наборов параметров является первый способ закрепления роботов за операциями, что соответствует выдвинутой ранее гипотезе.
Такая разница в использовании роботов объясняется тем, что время, требуемое на транспортировку детали роботом, меньше времени, требуемого станку, и интервала прихода деталей. Один робот успевает перевозить почти все детали. Работа второго робота для данных наборов параметров вызывается лишь в двух случаях, когда первый робот находится возле станка, а второй всё ещё возле приёмного пункта, и когда первый робот находится возле склада обработанных деталей, а первый возле станка. С уменьшением интервала прихода заявок или с увеличением времени движения робота данная ситуация меняется и коэффициенты использования выравниваются.
Что касается максимальной ёмкости для хранения деталей на участке прибытия, то единичные значения также объясняются тем, что время работы первого робота меньше среднего интервала прихода заявок.
В результате выполнения курсовой разработаны две имитационные модели роботизированной производственной системы, соответствующие двум способам закрепления роботов за операциями: по роботу на каждый из путей перемещения детали и каждый робот может использоваться на любом из путей. На основе функционирования модели получены требуемые статистические данные, а также сделан вывод о предпочтительности для данных наборов входных параметров закрепления каждого робота за своей операцией. Отсюда можно сделать вывод о выполнении целей, поставленных перед данной курсовой работой.
В ходе данной курсовой работы было получено знание в области статистки, необходимо было анализировать программу, сверять данные проводить исследования.
; исходные данные
INITIAL X$t_0,40
INITIAL X$t_1,6
INITIAL X$t_2,7
INITIAL X$t_3,5
INITIAL X$t_4,8
INITIAL X$t_5,1
INITIAL X$t_6,60
INITIAL X$t_7,10
INITIAL X$t_8,100
INITIAL X$pos1,0 ; приёмный пункт
INITIAL X$pos2,1 ; станок 1
INITIAL X$pos3,2 ; станок 2
INITIAL X$progon,0 ; нужно для учёта времени холостого прогона робота к нужному станку
GENERATE (EXPONENTIAL(1,X$t_0#2,(X$t_0)
QUEUE priem
; ищем робота находящегося
proverka_pos1 TEST NE X$pos1,0,seize_robot1
proverka_pos2 TEST NE X$pos2,0,seize_robot2
proverka_pos3 TEST NE X$pos3,0,seize_robot3
; ищем робота находящегося
proverka_pos1_1 TEST NE X$pos1,1,izm_progon1
proverka_pos2_1 TEST NE X$pos2,1,izm_progon2
proverka_pos3_1 TEST NE X$pos3,1,izm_progon3
; ищем робота находящегося
proverka_pos1_2 TEST NE X$pos1,2,izm_progon11
proverka_pos2_2 TEST NE X$pos2,2,izm_progon22
proverka_pos3_2 TEST NE X$pos3,2,izm_progon33
; ищем робота находящегося
proverka_pos1_3 TEST NE X$pos1,3,izm_progon111
proverka_pos2_3 TEST NE X$pos2,3,izm_progon222
proverka_pos3_3 TEST NE X$pos3,3,izm_progon333
TRANSFER ,proverka_pos1
; определение времени движения ближайшего робота до станка
izm_progon1 SAVEVALUE progon,X$t_1
TRANSFER ,seize_robot1
izm_progon2 SAVEVALUE progon,X$t_1
TRANSFER ,seize_robot2
izm_progon3 SAVEVALUE progon,X$t_1
TRANSFER ,seize_robot3
izm_progon11 SAVEVALUE progon,(X$t_1 + X$t_2)
TRANSFER ,seize_robot1
izm_progon22 SAVEVALUE progon,(X$t_1 + X$t_2)
TRANSFER ,seize_robot2
izm_progon33 SAVEVALUE progon,(X$t_1 + X$t_2)
TRANSFER ,seize_robot3
izm_progon111 SAVEVALUE progon,(X$t_1 + X$t_2 + X$t_3)
TRANSFER ,seize_robot1
izm_progon222 SAVEVALUE progon,(X$t_1 + X$t_2 + X$t_3)
TRANSFER ,seize_robot2
izm_progon333 SAVEVALUE progon,(X$t_1 + X$t_2 + X$t_3)
TRANSFER ,seize_robot3
; моделирование работы робота
seize_robot1 SEIZE robot1
SAVEVALUE pos1,1
DEPART priem
ADVANCE (X$t_1+X$t_4+X$t_5 + X$progon)
RELEASE robot1
TRANSFER ,metka_stanok1
seize_robot2 SEIZE robot2
SAVEVALUE pos2,1
DEPART priem
ADVANCE (X$t_1+X$t_4+X$t_5 + X$progon)
RELEASE robot2
TRANSFER ,metka_stanok1
seize_robot3 SEIZE robot3
SAVEVALUE pos3,1
DEPART priem
ADVANCE (X$t_1+X$t_4+X$t_5 + X$progon)
RELEASE robot3
TRANSFER ,metka_stanok1
;моделирование работы станка
metka_stanok1 QUEUE pered_stankom1
SEIZE stanok1
DEPART pered_stankom1
ADVANCE (normal (1, X$t_6, X$t_7))
RELEASE stanok1
******************************
QUEUE posle_stanka1
a_proverka_pos1 TEST NE X$pos1,1,a_seize_robot1
a_proverka_pos2 TEST NE X$pos2,1,a_seize_robot2
a_proverka_pos3 TEST NE X$pos3,1,a_seize_robot3
a_proverka_pos1_1 TEST NE X$pos1,0,a_izm_progon1
a_proverka_pos2_1 TEST NE X$pos2,0,a_izm_progon2
a_proverka_pos3_1 TEST NE X$pos3,0,a_izm_progon3
a_proverka_pos1_2 TEST NE X$pos1,2,a_izm_progon11
a_proverka_pos2_2 TEST NE X$pos2,2,a_izm_progon22
a_proverka_pos3_2 TEST NE X$pos3,2,a_izm_progon33
a_proverka_pos1_3 TEST NE X$pos1,3,a_izm_progon111
a_proverka_pos2_3 TEST NE X$pos2,3,a_izm_progon222
a_proverka_pos3_3 TEST NE X$pos3,3,a_izm_progon333
TRANSFER ,a_proverka_pos1
a_izm_progon1 SAVEVALUE progon,X$t_1
TRANSFER ,a_seize_robot1
a_izm_progon2 SAVEVALUE progon,X$t_1
TRANSFER ,a_seize_robot2
a_izm_progon3 SAVEVALUE progon,X$t_1
TRANSFER ,a_seize_robot3
a_izm_progon11 SAVEVALUE progon,X$t_2
TRANSFER ,a_seize_robot1
a_izm_progon22 SAVEVALUE progon,X$t_2
TRANSFER ,a_seize_robot2
a_izm_progon33 SAVEVALUE progon,X$t_2
TRANSFER ,a_seize_robot3
a_izm_progon111 SAVEVALUE progon,(X$t_2 + X$t_3)
TRANSFER ,a_seize_robot1
a_izm_progon222 SAVEVALUE progon,(X$t_2 + X$t_3)
TRANSFER ,a_seize_robot2
a_izm_progon333 SAVEVALUE progon,(X$t_2 + X$t_3)
TRANSFER ,a_seize_robot3
a_seize_robot1 SEIZE robot1
SAVEVALUE pos1,2
DEPART posle_stanka1
ADVANCE (X$t_2+X$t_4+X$t_5 + X$progon)
RELEASE robot1
TRANSFER ,a_metka_stanok2
a_seize_robot2 SEIZE robot2
SAVEVALUE pos2,2
DEPART posle_stanka1
ADVANCE (X$t_2+X$t_4+X$t_5 + X$progon)
RELEASE robot2
TRANSFER ,a_metka_stanok2
a_seize_robot3 SEIZE robot3
SAVEVALUE pos3,2
DEPART posle_stanka1
ADVANCE (X$t_2+X$t_4+X$t_5 + X$progon)
RELEASE robot3
TRANSFER ,a_metka_stanok2
a_metka_stanok2 QUEUE pered_stankom2
SEIZE stanok2
DEPART pered_stankom2
ADVANCE (EXPONENTIAL(1,0,(1/X$t_8)))
RELEASE stanok2
******************************
QUEUE posle_stanka2
b_proverka_pos1 TEST NE X$pos1,2,b_seize_robot1
b_proverka_pos2 TEST NE X$pos2,2,b_seize_robot2
b_proverka_pos3 TEST NE X$pos3,2,b_seize_robot3
b_proverka_pos1_1 TEST NE X$pos1,1,b_izm_progon1
b_proverka_pos2_1 TEST NE X$pos2,1,b_izm_progon2
b_proverka_pos3_1 TEST NE X$pos3,1,b_izm_progon3
b_proverka_pos1_2 TEST NE X$pos1,3,b_izm_progon11
b_proverka_pos2_2 TEST NE X$pos2,3,b_izm_progon22
b_proverka_pos3_2 TEST NE X$pos3,3,b_izm_progon33
b_proverka_pos1_3 TEST NE X$pos1,0,b_izm_progon111
b_proverka_pos2_3 TEST NE X$pos2,0,b_izm_progon222
b_proverka_pos3_3 TEST NE X$pos3,0,b_izm_progon333
TRANSFER ,b_proverka_pos1
b_izm_progon1 SAVEVALUE progon,X$t_2
TRANSFER ,b_seize_robot1
b_izm_progon2 SAVEVALUE progon,X$t_2
TRANSFER ,b_seize_robot2
b_izm_progon3 SAVEVALUE progon,X$t_2
TRANSFER ,b_seize_robot3
b_izm_progon11 SAVEVALUE progon,X$t_3
TRANSFER ,b_seize_robot1
b_izm_progon22 SAVEVALUE progon,X$t_3
TRANSFER ,b_seize_robot2
b_izm_progon33 SAVEVALUE progon,X$t_3
TRANSFER ,b_seize_robot3
b_izm_progon111 SAVEVALUE progon,(X$t_1 + X$t_2)
TRANSFER ,b_seize_robot1
b_izm_progon222 SAVEVALUE progon,(X$t_1 + X$t_2)
TRANSFER ,b_seize_robot2
b_izm_progon333 SAVEVALUE progon,(X$t_1 + X$t_2)
TRANSFER ,b_seize_robot3
b_seize_robot1 SEIZE robot1
SAVEVALUE pos1,3
DEPART posle_stanka2
ADVANCE (X$t_3+X$t_4+X$t_5 + X$progon)
RELEASE robot1
TRANSFER ,konec
b_seize_robot2 SEIZE robot2
SAVEVALUE pos2,3
DEPART posle_stanka2
ADVANCE (X$t_3+X$t_4+X$t_5 + X$progon)
RELEASE robot2
TRANSFER ,konec
b_seize_robot3 SEIZE robot3
SAVEVALUE pos3,3
DEPART posle_stanka2
ADVANCE (X$t_3+X$t_4+X$t_5 + X$progon)
RELEASE robot3
konec TERMINATE
main GENERATE 28800
TERMINATE 1
start 10
* инициализация сохраняемых
* предназначенных для значений входных параметров
******************************
INITIAL X$t_0,40
INITIAL X$t_1,6
INITIAL X$t_2,7
INITIAL X$t_3,5
INITIAL X$t_4,8
INITIAL X$t_5,1
INITIAL X$t_6,60
INITIAL X$t_7,10
INITIAL X$t_8,100*********************
* инициализация позиций роботов
******************************
INITIAL X$pos1,0 ; приёмный пункт
INITIAL X$pos2,0 ; станок 1
******************************
* инициализация всремени
INITIAL X$progon,0
* определение таблицы,
* значения начинаются с 80
VREMIA_TRANZAKTA TABLE M1,80,5,60
* вход транзакта в модель
nachalo GENERATE (EXPONENTIAL(1,X$t_0#2,(X$t_0)
* сохранение текущего времени
MARK
* очередь
QUEUE priem
* поиск робота, находящегося возле приёмного пункта
******************************
proverka_pos1 TEST NE X$pos1,0,seize_robot1
proverka_pos2 TEST NE X$pos2,0,seize_robot2
******************************
* поиск робота, находящегося возле станка
******************************
proverka_pos1_1 TEST NE X$pos1,1,izm_progon1
proverka_pos2_1 TEST NE X$pos2,1,izm_progon2
******************************
* поиск робота, находящегося возле склада
******************************
proverka_pos1_2 TEST NE X$pos1,2,izm_progon11
proverka_pos2_2 TEST NE X$pos2,2,izm_progon22
******************************
* переход к поиску робота возле приёмного пункта
TRANSFER ,proverka_pos1
* определение времени холостого
прогона робота к нужному
******************************
izm_progon1 SAVEVALUE progon,
TRANSFER ,seize_robot1
izm_progon2 SAVEVALUE progon,
TRANSFER ,seize_robot2
izm_progon11 SAVEVALUE progon,
TRANSFER ,seize_robot1
izm_progon22 SAVEVALUE progon,
TRANSFER ,seize_robot2
******************************
* перемещение детали первым роботом
******************************
seize_robot1 SEIZE robot1
SAVEVALUE pos1,1
DEPART priem
ADVANCE (X$t_1+X$t_4+X$t_5 + X$progon)
RELEASE robot1
TRANSFER ,metka_stanok1
******************************
* перемещение детали вторым роботом
******************************
seize_robot2 SEIZE robot2
SAVEVALUE pos2,1
DEPART priem
ADVANCE (X$t_1+X$t_4+X$t_5 + X$progon)
RELEASE robot2
TRANSFER ,metka_stanok1
* работа станка
******************************
metka_stanok1 QUEUE pered_
SEIZE stanok1
DEPART pered_stankom1
ADVANCE (normal (1, X$t_6, X$t_7))
RELEASE stanok1
******************************
* очередь после станка
QUEUE posle_stanka1
* ищем робота находящегося
******************************
a_proverka_pos1 TEST NE X$pos1,1,a_seize_robot1
a_proverka_pos2 TEST NE X$pos2,1,a_seize_robot2
******************************
* ищем робота находящегося
******************************
a_proverka_pos1_1 TEST NE X$pos1,0,a_izm_progon1
a_proverka_pos2_1 TEST NE X$pos2,0,a_izm_progon2
******************************
* ищем робота находящегося
******************************
a_proverka_pos1_2 TEST NE X$pos1,2,a_izm_progon11
a_proverka_pos2_2 TEST NE X$pos2,2,a_izm_progon22
******************************
* переход к поиску робота возле первого станка
TRANSFER ,a_proverka_pos1
* определение времени холостого хода робота
******************************
a_izm_progon1 SAVEVALUE
TRANSFER ,a_seize_robot1
a_izm_progon2 SAVEVALUE
TRANSFER ,a_seize_robot2
a_izm_progon11 SAVEVALUE
TRANSFER ,a_seize_robot1
a_izm_progon22 SAVEVALUE
TRANSFER ,a_seize_robot2
******************************
* работа первого робота
******************************
a_seize_robot1 SEIZE robot1
SAVEVALUE pos1,2
DEPART posle_stanka1
ADVANCE (X$t_2+X$t_4+X$t_5 + X$progon)
RELEASE robot1
TRANSFER ,zanesenie_vremeni
******************************
* работа второго робота
******************************
a_seize_robot2 SEIZE robot2
SAVEVALUE pos2,2
DEPART posle_stanka1
ADVANCE (X$t_2+X$t_4+X$t_5 + X$progon)
RELEASE robot2
TRANSFER ,zanesenie_vremeni
******************************
* занесение в таблицу времени прохождения транзакта
zanesenie_vremeni TABULATE
* вывод транзакта из модели
konec TERMINATE
* моделирование 8-ми часовой рабочей смены
******************************
main GENERATE 28800
TERMINATE 1
******************************
* 10 запусков модели
start 10
Приложение С. Статистика программы
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 288000.000 67 3 0
NAME VALUE
Информация о работе Построение имитационной модели роботизированной производственной системы