Файл: Конспект лекций Для студентов специальности 080801. 65 - приклад.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 30.12.2025

Просмотров: 3302

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Федеральное агентство по образованию

Оглавление

Глава 5. Моделирование вычислительных и операционных систем 289

Глава 6. Основы моделирования процессов 305

Глава 7. Задания для самостоятельной работы 311

Глава 8. Проектирование имитационных моделей 335

Глава 9. Технология имитационного моделирования 361

Глава 10. Примеры принятия решений с помощью имитационного моделирования 433

Глава 11. Задания для имитационных проектов 451

Предисловие

Введение

Глава 1. Модели массового обслуживания

1.1. Системы массового обслуживания и их характеристики

1.2. Системы с одним устройством обслуживания

1.3. Основы дискретно-событийного моделирования смо

1.4. Многоканальные системы массового обслуживания

Глава 2. Вероятностные сети систем массового обслуживания

2.1. Общие сведения о сетях

2.2. Операционный анализ вероятностных сетей

2.3. Операционные зависимости

2.4. Анализ узких мест в сети

Глава 3. Вероятностное моделирование

3.1. Метод статистических испытаний

3.2. Моделирование дискретных случайных величин

3.3. Моделирование непрерывных случайных величин

3.4. Сбор статистических данных для получения оценок характе­ристик случайных величин

Для оценки дисперсии случайной величины ξ используют фор­мулу

3.5. Определение количества реализаций при моделировании случайных величин

По формулам (3.18-3.20) находим

Задачи для самостоятельной работы

Задача 6

Глава 4. Система моделированияgpss

4.1. Объекты

4.2. Часы модельного времени

4.3. Типы операторов

4.4. Внесение транзактов в модель. БлокGenerate

Задание для самостоятельной работы:

4.5. Удаление транзактов из модели. БлокTerminate

4.6. Элементы, отображающие одноканальные обслуживающие устройства

4.7. Реализация задержки во времени. БлокAdvance

Задания для самостоятельной работы:

4.8. Сбор статистики об ожидании. Блоки queue, depart

4.9. Переход транзакта в блок, отличный от последующего. БлокTransfer

Задания для самостоятельной работы:

4.10. Моделирование многоканальных устройств

4.11. Примеры построенияGpss-моделей

Построение модели

4.12. Переменные

4.13. Определение функции вGpss

Пример 4.23

4.14. Стандартные числовые атрибуты, параметры транзактов. Блоки assign, mark, loop

4.15. Изменение приоритета транзактов. БлокPriority

4.16. Организация обслуживания с прерыванием. Блоки pre­empt и return

Задание для самостоятельной работы:

4.17. Сохраняемые величины

4.18. Проверка числовых выражений. Блок test

Пример 4.40

Задание для самостоятельной работы:

4.19. Определение и использование таблиц

Задания для самостоятельной работы:

4.20. Косвенная адресация

4.21. Обработка транзактов, принадлежащих одному семейству

4.22. Управление процессом моделирования в системеGpss

4.23. Списки пользователей

4.24. Блоки управления потоками транзактовLogic,gatelr,gatelSиGate

7 Testne p1,p2,asn2 ; Повторить, если адресат

4.25. Организация вывода временных рядов изGpss-модели

4.26. Краткая характеристика языкаPlus

4.27. Команды gpss World

4.28. Диалоговые возможностиGpssWorld

4.29. Отличия между gpss World и gpss/pc

Глава 5. Моделирование вычислительных и операционных систем

5.1. Операционные системы компьютеров

5.2. Сети и системы передачи данных

5.3. Проблемы моделирования компьютеров и сетей

Глава 6. Основы моделирования процессов

6.1. Производственные процессы

6.2. Распределительные процессы

6.3. Процессы обслуживания клиентов

6.4. Процессы управления разработками проектов

Глава 7. Задания для самостоятельной работы Задание 1. Моделирование разливной линии

Глава 8. Проектирование имитационных моделей с помощью интерактивной системы имитационного моделирования

8.1. Структура интерактивной системы имитационного модели­рования

8.2. Построение концептуальной схемы модели

8.3. Параметрическая настройка модели

8.4. Генератор формул

8.5. Управление экспериментом

8.6. Запуск эксперимента и обработка результатов моделирования

8.7. Управление проектами и общей настройкой системы

8.8. Пример построения модели средствамиIss2000

Глава 9. Технология имитационногомоделирования

9.1. Имитационные проекты

9.2. Организация экспериментов

9.3. Проблемы организации имитационных экспериментов

9.4. Оценка точности результатов моделирования

9.5. Факторный план

9.6. Дисперсионный анализAnovAв планированииэкспериментов

9.7. Библиотечная процедураAnova

9.8. Технология проведение дисперсионного анализа в системеGpss World

9.9. Особенности планирования экспериментов

9.10. Нахождение экстремальных значений на поверхности отклика

9.11. Организация экспериментов вGpssWorld

9.12. Выбор наилучшего варианта структуры системы

Глава 10. Примеры принятия решений с помощью имитационного моделирования

10.1. Моделирование производственного участка

10.2. Моделирование технологического процесса ремонта и заме­ны оборудования

Глава 11. Задания для имитационных проектов

Приложение Системные сча

Сча транзактов

Сча блоков:

Сча одноканальных устройств:

Сча очередей

Сча таблиц

Сча ячеек и матриц ячеек сохраняемых величин:

Сча вычислительных объектов

Сча списков и групп

Список литературы

Оптимизирующий эксперимент добавляется в созданную и от­лаженную модель. Для этого необходимо выбрать пункт меню Edit/Insert Experiment/Optimizing, после чего откроется диалоговое окно Optimizing Experiment Generator (рис. 9.12).

В нем указываются необходимые для выполнения эксперимента параметры. В полях Experiment Name и Run Procedure Name зада­ются соответственно название эксперимента и Run-процедуры прого­нов модели. По умолчанию название эксперимента - RSM (от Re­sponse Surface Model). Это имя будет добавлено ко всем названиям процедур и переменных, которые автоматически генерируются для >того эксперимента. Пользователю доступны для изменений все про­цедуры, относящиеся к эксперименту, кроме одной -RSM_FitSurfaceToData (имя процедуры фиксировано и не изменится при задании другого названия эксперимента). В качестве названия Run-процедуры рекомендуется использовать DoTheRun, хотя можно использовать и любое другое имя.

В полях Factor Name А, В, С, D, E указываются изменяемые ве­личины (факторы) и задаются значения их верхних и нижних уровней Value 1 и Value 2.

Поля Low Limit, High Limit для Movement Limits задают мак­симальные границы перемещения (могут иногда помочь при поиске оптимума, но в большинстве случаев можно оставлять значения по умолчанию 0 и 100).

Значение поля Redirection Limit ограничивает количество из­менений направлений при поиске оптимума. В некоторых случаях достаточно 1, но обычно нужно выбирать 2 или 3.

В поле Expression указывается целевая функция - выражение на языке PLUS, заключенное в круглые скобки, или переменная модели, в которой задана эта функция. С помощью переключателя Maximize-Minimize выбирается направление оптимизации.

При выборе Generate Run Procedure создается процедура про­гонов модели, в противном случае придется ее написать. Выбор Load F12... позволяет запускать эксперимент с помощью нажатия одной клавиши F12 вместо того, чтобы выбирать в меню Com­mand/Conduct и в нем вводить CONDUCT RSM() или другое вы­бранное название эксперимента.

Для запуска автоматической генерации эксперимента нужно на­жать на кнопку Insert Experiment, но сначала необходимо задать пе­речисленные параметры.


Покажем на примерах, как можно использовать оптимизирую­щий эксперимент.

Пример 9.5

Исследуем работу алгоритма поиска экстремума функции с двумя переменными z = , которая представляет собой верх­нюю часть сферы с радиусом 3. Для того, чтобы можно было создать оптимизирующий эксперимент, воспользуемся простой моделью:

GENERATE 10

TERMINATE 1

В ней через 10 единиц модельного времени приходит транзакт, завершающий процесс моделирования, который должен начинаться с помощью оператора управления START 1.

Диалоговое окно эксперимента заполним так, как показано на рис. 9.13 (при задании имен констант, переменных лучше использо­вать символ подчеркивания - это гарантирует избежание конфликтов имен).

В данном случае полезно в Movement Limits поменять пределы на 0 и 1, вследствие чего намного уменьшается количество итераций и увеличивается точность. Результат получается идеальным.

После нажатия кнопки Insert Experiment откроется окно Run Procedure Generation (рис. 9.14), в котором отображается автомати­чески сгенерированный текст Run-процедуры, названной именем DoTheRun.

Нажмем кнопку OK, в результате чего код на языке PLUS будет добавлен в текст модели.

В него нужно внести исправления, в данном случае необходимо следующим образом изменить процедуру DoTheRun:

PROCEDURE DoTheRun(Run Number) BEGIN

DoCommand("CLEAR OFF");

DoCommand(" START 1");

END;

Теперь надо оттранслировать модель, выполнив пункт меню Command/Create Simulation. При этом мы увидим, что все процеду­ры регистрируются.

Нажмем клавишу F12 и начнем эксперимент. В журнале сессии будет представлена следующая информация о ходе эксперимента.

Полученные оптимальные значения (входные переменные my_х = 0, my_у = 0, выходная переменная Yield = 3) совпадают с тео­ретическими.

Это как раз тот случай, когда можно увидеть, что сначала была попытка применить линейную модель Y = 2.86125 - 0.206216А + 0.203185В, она не удалась и поэтому была применена модель второго порядка Y = 3.00049 + ОА + 0В + ОАВ - 0.180775А2 -0.17918В2. Также этот пример продемонстрировал, что оптимум не обязательно должен находиться между указанными значениями полей Value 1, Value 2 диалогового окна Optimizing Experiment Gen­erator.


Пример 9.6

Рассмотрим задачу нахождения оптимального количества работников производственного участка (аналог задачи о печи [10]).

Имеется производственный участок, на котором работают несколько человек. Чтобы изготовить изделие, работники сначала его собирают в течение 30±5 мин (процесс сборки осуществляется парал­лельно), а потом обрабатывают с помощью общей машины в течение 8±2 мин. В каждый момент времени на машине можно обрабатывать только одно изделие. После этого изделие считается готовым, и ра­ботник начинает собирать новое изделие. Доход от одного изделия составляет 5 единиц стоимости, использование машины обходится в 400 единиц стоимости в неделю, зарплата одного рабочего 150 еди­ниц стоимости в неделю. Нужно определить, сколько нужно рабочих, чтобы доход от производства был максимальным. Моделирование необходимо выполнить для пятидневной недели с восьмичасовым ра­бочим днем.

Нужно найти такое значение параметра NWorkers, при котором доход достигал бы максимального значения. В выражение дохода PRIBY входит количество изготовленных изделий, равное значению СЧА N$OUT. Понятно, что доход может быть как отрицательным (убытки от производства), так и положительным (когда производство становится прибыльным).

Диалоговое окно эксперимента заполним, как показано на рис. 9.15. Используем ту же процедуру DoTheRun, что и в примере 9.5.

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

Y = -344.694+ 121.531 А- 11.8367 А2.

Оптимальные значения: входная переменная NWorkers=5.13, выходная переменная Yield = 254.96. С учетом условия целочисленности количества работников, имеем: оптимальное число работников для этой модели равно 5 .

При некоторых значениях полей Value 1, Value 2 диалогового окна Optimizing Experiment Generator процедура оптимизирующего эксперимента не выполняет по­следний прогон «Running the predicted Optimum» и не вы­ дает искомый результат. Также может быть выдано такое сообщение «Goodness of fit test fails. Standard Error is 0. Cannot perform F test". В этих случаях нужно изменить значения Value 1 и Value 2.


Эксперименты пользователя. Пользовательский эксперимент в GPSS World - очень гибкий и мощный инструмент, так как с помо­щью встроенного языка PLUS можно задать выполнение разнообраз­ных, достаточно сложных действий. Кроме того, выполняющийся эксперимент позволяет вызывать любые команды GPSS из процедур на языке PLUS. Подпрограммы на языке PLUS делятся на процедуры (в заголовке используется ключевое слово PROCEDURE) и экспери­менты (EXPERIMENT) Эти подпрограммы должны находиться в файле модели. Разница между этими двумя видами подпрограмм за­ключается в следующем. Процедуры с помощью оператора RETURN могут возвращать значение, которое можно посмотреть с помощью команды SHOW, либо использовать в других подпрограммах. Для этого сначала нужно оттранслировать модель вместе с процедурой или же просто процедуру, если модель не используется. При этом процедура регистрируется. Затем в меню нужно выбрать пункт Command/SHOW и написать там название процедуры, указав в скобках нужные параметры или ничего не указывая (если параметров нет). После этого процедура выполняется и выдается результат.

Процедуры на языке PLUS также могут использоваться в коман­дах GPSS в качестве операндов. В этом случае они заключаются в круглые скобки. Эти процедуры, в свою очередь, в качестве парамет­ров могут использовать вызовы других процедур. Это очень мощное новшество GPSS World значительно повышает возможности и гиб­кость модели.

Эксперимент отличается от процедуры тем, что он может быть вызван (выполнен) только пользователем. Для этого нужно выбрать пункт меню Command/CONDUCT и написать там название экспе­римента, указав в круглых скобках параметры, если они имеются, или ничего не указывая, если параметров нет. Что нового дает экспери­мент? Ключевым моментом является то, что с помощью библиотеч­ной процедуры DoCommand можно вызывать любую команду GPSS, а это позволяет многократно выполнять прогоны модели и в каждом прогоне получать доступ к текущим результатам. Из подпрограммы эксперимента могут вызываться процедуры, которые в свою очередь могут вызывать другие процедуры и т.д. Причем из любой процеду­ры, на какой бы глубине вложенности вызовов она ни была, можно вызывать процедуру DoCommand. Поэтому структура выполняемого кода эксперимента может быть какой угодно сложной. Таким обра­зом, пользовательский эксперимент объединяет в себе набор проце­дур на языке PLUS, в котором одна из процедур имеет в заголовке ключевое слово EXPERIMENT. Выполнить такой эксперимент мож­но с помощью команды CONDUCT. Разные эксперименты могут иметь общие вызываемые процедуры.


В пользовательском эксперименте для задания последователь­ности команд и исходных данных каждого прогона модели удобно использовать PLUS-процедуру. Такая процедура может инициализи­ровать генераторы случайных чисел, выполнять команды и управлять имитацией.

В руководстве по GPSS World пользовательские эксперименты используются исключительно с процедурой ANOVA, однако, их можно использовать для решения совершенно разных задач. Рас­смотрим несколько практических примеров пользовательского экспе­римента.

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

Рассмотрим еще раз задачу из примера 9.6. Использование в этом примере оптимизирующего эксперимента было не совсем кор­ректным. Оптимизирующий эксперимент рассчитан на модели, рабо­тающие в стационарном режиме, а для данного примера нет гарантий, что за пять дней работы моделируемая система войдет в такой режим.

Поэтому следует считать, что система работает в переходном режиме, и для каждого значения количества работников необходимо провести некоторое число прогонов модели.

Воспользуемся программой из примера 9.6 и организуем для этой модели пользовательский эксперимент, но прежде рассмотрим алгоритм поиска оптимума. Предполагаем, что целевая функция, определяющая прибыль, имеет единственный оптимум. Если бы време­на сборки и обработки детали на машине были бы детерминирован­ными, то оптимальное количество работников находилось бы вблизи величины, равной отношению времени сборки к времени обработки. В этом случае машина была бы максимально загружена и работники не простаивали бы в ожидании ее освобождения. В действительности, в силу случайного характера этих времен, оптимальное число работ­ников будет отличаться от значения, рассчитанного таким образом. Так как количество вариантов невелико, то можно воспользоваться методом их перебора, проводя эксперименты с разным числом работ­ников, начиная с одного. Таким образом, предполагаемый доход бу­дет вначале увеличиваться до некоторого момента, а когда на каком-то шаге (при большем количестве работников) доход станет меньше, чем на предыдущем шаге, нужно остановиться. Оптимальное количе­ство работников соответствует шагу с самым большим значением до­хода.