- •Язык имитационного моделирования gpssWorld
- •Базовые понятия системы имитационного моделирования gpssWorld.
- •Системные числовые атрибуты
- •Логические и условные операторы
- •Формат записи операторов языка gpss
- •Операторы, имитирующие работу динамической категории объектов.
- •Операторы, имитирующие работу аппаратной категории объектов.
- •Операторы, имитирующие работу статистической категории объектов
- •Операторы операционной категории
- •Блок выбора объекта из однородной совокупности объектов по заданному условию
- •Блоки, изменяющие маршрут движения транзактов.
- •Размножение транзактов.
- •Операторы вычислительной категории
- •Операторы, имитирующие работу группирующей категории
- •Операторы, имитирующие работу запоминающей категории
- •Примеры построения модели на языке gpssWorld
- •Пример №1
- •Пример №2
- •Пример №3
- •Пример №4
- •Пример №5
- •Пример №6
- •Редактор форм
- •Введение
- •Создание формы и указание модели
- •Ввод информации о модели
- •Настройка динамического мониторинга
- •Добавление пользовательского объекта мониторинга
- •Построение формы ввода одного эксперимента
- •Корневая панель
- •Команда «Надпись»
- •Команда «Группа»
- •Команда «Элемент управления вкладками»
- •Команда «Скрывающаяся панель»
- •Команда «Изображение»
- •Команда «Секция ввода»
- •Привязка к операнду
- •Связывание элемента диалога и элемента «надпись»
- •Добавление/удаление факторов
- •Команда «Выпадающий список»
- •Команда «Галка»
- •Команда «Кнопка»
- •Форма планирования экспериментов
- •Принципы планирования
- •Добавление факторов
- •Добавление показателей
- •Выбор серии экспериментов
- •Ручной план эксперимента
- •Автоматическое построение плана с использованием шага
- •Работа с exe-модулем
- •Ошибки во время моделирования
- •Анализ результатов
- •Открытие результатов
- •Анализ результатов моделирования одиночного эксперимента
- •Стандартный отчет
- •План полного факторного эксперимента.
- •План дробного факторного эксперимента
- •Планы второго порядка
- •Ортогональный центральный композиционный план
- •Ротатабельный центральный композиционный план
- •Планы Коно
- •Планы Кифера
- •Использование пакета Statistica10 для статистической обработки экспериментальных данных
- •Вычисление основных статистических характеристик
- •Оценка нормальности распределения
- •Необходимость проверки нормальности распределения анализируемых данных
- •Проверка на нормальность распределения анализируемых данных
- •Тесты Колмогорова – Смирнова и Шапиро – Уилка
- •График нормальных вероятностей
- •Корреляционный анализ
- •Коэффициент корреляции Пирсона
- •Коэффициент корреляции Спирмена
- •Факторный анализ
- •Выбор числа факторов
- •Кластерный анализ
- •Стандартизация данных
- •Кластерный анализ
- •Регрессионный анализ
- •Оптимизация
- •Пример моделирования предметной области и анализ результатов
- •Модель процесса сборки пк
- •Разработка модели процесса сборки пк
- •Моделирование процесса сборки пк
- •Настройки модели
- •Корреляционный анализ
- •Регрессионный анализ
- •Задание
- •Задание на лабораторную работу №1
- •Задания на лабораторную работу №2
- •Задание на лабораторную работу №3
- •Варианты заданий
- •Варианты первых заданий
- •Варианты вторых заданий
- •Варианты третьих заданий
Оптимизация
Оптимизация проводится в ППП Excelметодом касательных (Ньютона) по следующему алгоритму:
Сервис-> Надстройки-> поставить галочку «поиск решения»
Дальше вводите формулу для вашего уравнения регрессии, например:
Сервис -> поиск решения -> появится окно
в поле «установить целевую ячейку» выбираете ячейку, в которой находится формула (в данном случае это C2)
выбираете что нужно сделать: максимизировать или минимизировать
В поле «изменяя ячейки» выделяете все Xкоторые используете для уравнений регрессии
Добавляете ограничения
Нажимаете выполнить и получаете результат
Пример моделирования предметной области и анализ результатов
Модель процесса сборки пк
В сборочном цехе производится сборка ПК из комплектующих, хранящихся на складе. В начальный момент на складе хранятся следующие комплектующие с соответствующим процентом браком:
Корпус с блоком питания - 520 (1%).
Материнская плата – 520 (1%).
Процессор - 510 (0,1%).
Оперативная память - 1100 (2%).
Жесткий диск - 550 (2%).
Видеокарта - 520 (1%).
К сборщику поступают комплектующие, необходимые для одного ПК (корпус с блоком питания, материнская плата, процессор, 2 оперативные памяти, жесткий диск, видеокарта). Собранные ПК отправляются в отдел технического контроля, где техник устанавливает ПК в термокамеру для проведения "стрессового" тестирования. По завершению или провалу тестирования ПК снимается с термокамеры. Если в составе ПК имеется бракованная деталь, то она сдается в утиль и заменяется новой деталью, взятой со склада. Затем отремонтированный ПК снова ставится в термокамеру. Прошедшие тестирование ПК сдаются в отдел готовой продукции, где комплектовщик упаковывает ПК передает его на склад магазина.
В середине смены (длительность смены составляет 8 часов) все сотрудники сборочного цеха делают перерыв на обед на 1 час.
Сборочному цеху поставлена задача собрать ПК.
Результативные показатели эффективности:
- загруженность сборщиков.
- загруженность техников.
- загруженность комплектовщиков.
- среднее время ожидания в очереди в термокамеру.
Оптимизируемые факторы:
- меняется от 3 до 5 – количество сборщиков.
- меняется от 4 до 6 – количество техников.
- меняется от 1 до 3 – количество комплектовщиков.
–меняется от 50 до 70 – количество мест в термокамере.
Объективные факторы:
минут – время сборки ПК.
минут – время подготовки ПК и установки в термокамеру.
часа – время проведения «стрессового» тестирования.
минут – время определения бракованной детали и ее замена.
минут – время снятия ПК с термокамеры.
минут – время упаковки ПК.
Разработка модели процесса сборки пк
Модель данной задачи:
HARDWARE_COUNT EQU 6 ;Количество типов комплектующих
STORE_INFO MATRIX ,6,3 ;Матрица, содержащая входные данные по типам комплектующих
;Каждая строка - отдельный тип комплектующих
;Первый столбец - количество комплектующих
;Второй столбец - брак, записанный в долях от единицы
;Третий столбец - количество комплектующих данного типа для одного ПК
INITIAL MX$STORE_INFO(1,1),520
INITIAL MX$STORE_INFO(1,2),0.01
INITIAL MX$STORE_INFO(1,3),1
INITIAL MX$STORE_INFO(2,1),520
INITIAL MX$STORE_INFO(2,2),0.01
INITIAL MX$STORE_INFO(2,3),1
INITIAL MX$STORE_INFO(3,1),510
INITIAL MX$STORE_INFO(3,2),0.001
INITIAL MX$STORE_INFO(3,3),1
INITIAL MX$STORE_INFO(4,1),1100
INITIAL MX$STORE_INFO(4,2),0.02
INITIAL MX$STORE_INFO(4,3),2
INITIAL MX$STORE_INFO(5,1),550
INITIAL MX$STORE_INFO(5,2),0.02
INITIAL MX$STORE_INFO(5,3),1
INITIAL MX$STORE_INFO(6,1),520
INITIAL MX$STORE_INFO(6,2),0.01
INITIAL MX$STORE_INFO(6,3),1
ASSEMBLERS STORAGE 4 ;Количество сборщиков
TECHNICIANS STORAGE 5 ;Количество техников
TEST_CHAMBERS STORAGE 50 ;Количество мест в термокамере
PACKERS STORAGE 2 ;Количество комплектовщиков
INITIAL X$X_0,500 ;Количество ПК
INITIAL X$X_5,30 ;Время сборки
INITIAL X$X_6,15 ;Время подготовки ПК и установки в термокамеру
INITIAL X$X_7,1440 ;Время проведения стрессового тестирования
INITIAL X$X_8,15 ;Время определения бракованной детали и ее замена
INITIAL X$X_9,5 ;Время снятия ПК из термокамеры
INITIAL X$X_10,10 ;Время упаковки ПК
GENERATE ,,,X$X_0 ;Генерация всех транзактов (ПК)
;Сборка ПК
QUEUE ASSEMBLERS_QUEUE
ENTER ASSEMBLERS
DEPART ASSEMBLERS_QUEUE
;Записываем в параметры транзакта 1-6 флаг, показывающий является ли соответствующий этому номеру тип комплектующего бракованный
ASSIGN I1,HARDWARE_COUNT ;Счетчик для блока LOOP
SET_PARAM_MARK TEST G MX$STORE_INFO(P$I1,1),0,HARDWARE_RUN_OUT_MARK ;Проверяем, есть ли еще комплектующие этого типа на складе
MSAVEVALUE STORE_INFO-,P$I1,1,MX$STORE_INFO(P$I1,3) ;Уменьшаем количество комплектующих данного типа на складе
ASSIGN P$I1,(RN10/1000'LE'MX$STORE_INFO(P$I1,2)) ;Записываем в параметр с номером данного комплектующего, будет ли он бракованным с заданной вероятностью (RN10 возврщает от 1 до 999)
LOOP I1,SET_PARAM_MARK ;Повторяем с уменьшением счетчика i1
ADVANCE X$X_5,(X$X_5#0.1) ;Производим сборку ПК
LEAVE ASSEMBLERS
;Тестирование ПК
PUT_IN_CHAMBER_MARK QUEUE TECHNICIANS_QUEUE
ENTER TEST_CHAMBERS
ENTER TECHNICIANS
DEPART TECHNICIANS_QUEUE
ADVANCE X$X_6,(X$X_6#0.1) ;Установка в термокамеру
LEAVE TECHNICIANS
TEST E (P1+P2+P3+P4+P5+P6),0,TEST_FAULTED ;Если нет бракованных комплектующих
ADVANCE X$X_7,(X$X_7#0.02) ;Производим тестирование сутки
TRANSFER ,PUT_OUT_CHAMBER_MASK
TEST_FAULTED ADVANCE (UNIFORM(RN1,0,X$X_7)) ;Иначе тестирование остановится в произвольное время
PUT_OUT_CHAMBER_MASK ENTER TECHNICIANS
ADVANCE X$X_9,(X$X_9#0.1) ;Снятие с термокамеры
LEAVE TECHNICIANS
LEAVE TEST_CHAMBERS
TEST E (P1+P2+P3+P4+P5+P6),0,REPEAR_MARK ;Если есть бракованные комплектующие,то отправляем на ремонт
;Упаковка ПК
QUEUE PACKERS_QUEUE
ENTER PACKERS
DEPART PACKERS_QUEUE
ADVANCE X$X_10,(X$X_10#0.1)
LEAVE PACKERS
TERMINATE 1
;Ремонт ПК
REPEAR_MARK ENTER TECHNICIANS
ADVANCE X$X_8,(X$X_8#0.5) ;Производим ремонт ПК
;Обновляем данные по комплектующим
ASSIGN I1,HARDWARE_COUNT ;счетчик для блока LOOP
;Используя косвенную адресацию, находим параметр транзакта с текущим номером счетчика и проверяем этот ли тип комплектующих бракованный
REPEAR_TRY_SET_PARAM_MARK TEST E P*$I1,1,REPEAR_NEXT_PARAM_MARK
TEST G MX$STORE_INFO(P$I1,1),0,HARDWARE_RUN_OUT_MARK ;Проверяем есть ли еще комплектующие этого типа на складе
MSAVEVALUE STORE_INFO-,P$I1,1,MX$STORE_INFO(P$I1,3) ;Уменьшаем количество комплектующих данного типа на складе
SAVEVALUE P$I1+,MX$STORE_INFO(P$I1,3) ;Суммируем бракованные детали каждого типа
ASSIGN P$I1,(RN10/1000'LE'MX$STORE_INFO(P$I1,2)) ;Записываем в параметр с номером данного комплектующего, будет ли он бракованным с заданной вероятностью (RN10 возврщает от 1 до 999)
REPEAR_NEXT_PARAM_MARK LOOP I1,REPEAR_TRY_SET_PARAM_MARK ;Повторяем с уменьшением счетчика i1
LEAVE TECHNICIANS
TRANSFER ,PUT_IN_CHAMBER_MARK ;Отправляем отремонтированные ПК в термокамеру
HARDWARE_RUN_OUT_MARK SAVEVALUE HARDWARE_RUN_OUT,1 ;Указываем, что на складе закончились комплектующие какого-то типа
TERMINATE 10000 ;останавливаем моделирование
;цикл, блокирующий работу сотрудников, имитирую ночь, обед и выходные
GENERATE 0,,,1,2 ;Генерируем единственный транзакт с повышенным приоритетом
ASSIGN REST_TIME,480;Время первого отдыха, отсчитывая от 00:00 (8 часов)
ASSIGN WORK_TIME,240 ;Время работы до перерыва (4 часа)
ASSIGN DAY_PART,1 ;Будет показывать часть дня (до обеда/после обеда)
ASSIGN DAY_COUNT,1 ;Будет отсчитывать дни недели
;блокируем работу сотрудников
REST_MARK SUNAVAIL ASSEMBLERS
SUNAVAIL TECHNICIANS
SUNAVAIL PACKERS
ADVANCE P$REST_TIME ;Имитируем отдых
;разблокируем сотрудников
SAVAIL ASSEMBLERS
SAVAIL TECHNICIANS
SAVAIL PACKERS
ADVANCE P$WORK_TIME ;Время работы сотрудников
TEST L P$DAY_PART,2,NIGHT_MARK ;Если время до обеда
ASSIGN REST_TIME,60 ;Устанавливаем обеденное время (1 час)
ASSIGN DAY_PART+,1 ;Изменяем часть дня
TRANSFER ,REST_MARK ;Повторяем блокировку
NIGHT_MARK TEST L P$DAY_COUNT,5,HOLYDAY_MARK ;Если время после обеда
ASSIGN REST_TIME,900 ;Устанавливаем время отдыха до следующего дня (15 часов)
ASSIGN DAY_PART,1 ;Устанавливаем время до обеда
ASSIGN DAY_COUNT+,1 ;Увеличиваем день недели
TRANSFER ,REST_MARK ;Повторяем блокировку
;если начинаются выходные
HOLYDAY_MARK ASSIGN REST_TIME,3780 ;Устанавливаем время отдыха до следующего дня (63 часа)
ASSIGN DAY_PART,1 ;Устанавливаем время до обеда
ASSIGN DAY_COUNT,1 ;Устанавливаем день недели в 1
TRANSFER ,REST_MARK ;Повторяем блокировку
START 500