Текст
                    ИМИТАЦИОННОЕ
МОДЕЛИРОВАНИЕ
3-Е ИЗДАНИЕ
АВЕРИЛЛ М. ЛОУ, В. ДЭВИД КЕЛЬТОН

С^ППТЕР

SIMULATION MODELING AND ANALYSIS Third edition Averill M. Law, W. David Kelton Mc Graw Hill OSBORNE
КЛАССИКА COmPUTEA SCIENCE 7J7 АВЕРИЛЛ M. ЛОУ В. ДЭВИД КЕЛЬТОН ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ З-Е ИЗДАНИЕ С^ППТЕР Москва - Санкт-Петербург • Нижний Новгород - Воронеж Новосибирск Ростов-на-Дону - Екатеринбург Самара Киев • Харьков - Минск 2004
ББК 32.973.2 УДК 681.3.06 К34 Кельтон В., Лоу А. К34 Имитационное моделирование. Классика CS. 3-е изд. — СПб.: Питер; Киев: Издательская группа BHV, 2004. — 847 с.: ил. ISBN 5-94723-981-7 ISBN 966-552-118-7 Всесторонне рассмотрены все важные аспекты, связанные с имитационным моделирова- нием — моделирование, программное обеспечение моделирования, проверка достоверности и про- верка правильности моделей, моделирование входных данных, генераторы случайных чисел, генерация случайных переменных и процессов, статистическое планирование и анализ экспери- ментов моделирования. Книга содержит множество примеров. Она может использоваться в каче- стве учебного пособия для студентов старших курсов университетов, обучающихся по специаль- ности «Вычислительные комплексы, системы и сети», «Прикладная математика», «Компьютерные науки и компьютерная инженерия» и ряду других. Будет чрезвычайно полезна специалистам по моделированию систем и системному анализу. ББК 32.973.2 УДК 681.3.06 Права на издание получены по соглашению с McGraw-Hill. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. ISBN 0070592926 (англ.) ISBN 5 94723-981-7 ISBN 966-552-118-7 ©2000,1991,1982 by The McGraw-Hill Companies, Inc. © ЗАО Издательский дом «Питер», 2004 © Издательская группа BHV. Киев, 2004
Краткое содержание Об авторах.............................................13 Предисловие .......................................... 15 Глава 1. Основы имитационного моделирования..........19 Глава 2. Моделирование сложных систем...............139 Глава 3. Программное обеспечение имитационного моделирования................................249 Глава 4. Основы теории вероятностей и статистики....285 Глава 5. Создание адекватных и детальных имитационных моделей......................................316 Глава 6. Выбор входных распределений вероятностей...346 Глава 7. Генераторы случайных чисел.................462 Глава 8. Генерирование случайных величин............502 Глава 9. Анализ выходных данных для автономной системы......................................568 Глава 10. Сравнение альтернативных конфигураций системы......................................629 Глава 11. Методы понижения дисперсии..................659 Глава 12. Планирование экспериментов и методы оптимизации............................................707 Глава 13. Моделирование производственных систем.......758 Приложение............................................798 Литература............................................801 Алфавитный указатель..................................835
Содержание Об авторах...........................................................13 Предисловие.........................................................15 Глава 1. Основы имитационного моделирования.........................19 1.1. Суть имитационного моделирования...............................19 1.2. Система, модели и имитационное моделирование...................21 1.3. Дискретно-событийное моделирование.............................25 1.3.1. Механизмы продвижения времени.......................... 26 1.3.2. Компоненты дискретно-событийной имитационной модели и их организация................................................28 1.4. Моделирование СМО с одним устройством обслуживания.............31 1.4.1. Постановка задачи........................................31 1.4.2. Интуитивное объяснение...................................38 1.4.3. Организация и логика программы...........................48 1.4.4. Программа на языке FORTRAN...............................53 1.4.5. Программа на языке С.....................................64 1.4.6. Выходные данные моделирования............................72 1.4.7. Альтернативные правила останова..........................74 1.4.8. Определение событий и переменных.........................81 1.5. Моделирование системы управления запасами......................85 1.5.1. Постановка задачи........................................85 1.5.2. Организация и логика программы........................... . 87 1.5.3. Программа на языке FORTRAN...............................92 1.5.4. Программа на языке С....................................100 1.5.5. Выходные данные моделирования...........................106 1.6. Альтернативные подходы к созданию имитационных моделей........108 1.6.1. Параллельное и распределенное моделирование.............108 1.6.2. Моделирование в Интернете и моделирование с использованием веб-узлов.....................................................111 1.7. Этапы в исследовании системы посредством моделирования........111 1.8. Другие виды моделирования.....................................115 1.8.1. Непрерывное моделирование...............................115 1.8.2. Комбинированное непрерывно-дискретное моделирование.....117 1.8.3. Моделирование по методу Монте-Карло.....................118 1.9. Преимущества, недостатки и ошибки моделирования...............120 Приложение 1А. Продвижение времени посредством постоянного шага....123 Приложение 1Б. Начала моделирования систем массового обслуживания..124 1Б.1. Компоненты системы массового обслуживания................125 1Б.2. Обозначения для систем массового обслуживания............125 1Б.З. Критерии оценки работы систем массового обслуживания.....126 Задачи.............................................................129
Содержание 7 Глава 2. Моделирование сложных систем........................................139 2.1. Введение................................................................139 2.2. Обработка списков при моделировании.....................................140 2.2.1 Сохранение списков.................................................140 2.2.2. Связанное распределение памяти....................................141 2.3. Простая библиотека функций simlib.......................................147 2 4. Система массового обслуживания с одним устройством обслуживания . . 157 2.4.1. Постановка задачи.................................................157 2.4.2. Программа с применением библиотеки функций simlib.................157 2.4.3. Выходные данные моделирования и их исследование...................164 2 5 Компьютерная система с режимом разделения времени........................165 2.5.1. Постановка задачи.................................................165 2.5.2. Программа simlib..................................................166 2.5.3. Выходные данные моделирования и их исследование ..................178 2.6. Банк с несколькими кассами..............................................179 2.6.1. Постановка задачи.................................................179 2.6.2. Программа simlib..................................................179 2.6.3 Выходные данные моделирования и их исследование..................192 2.7. Производственная система................................................193 2.7.1. Постановка задачи.................................................193 2.7.2. Программа simlib .................................................195 2.7.3. Выходные данные моделирования и их исследование..................207 2 8. Эффективное управление списками событий.................................209 Приложение 2А. Код на языке С для пакета simlib..............................211 Задачи.......................................................................226 Глава 3. Программное обеспечение имитационного моделирования..................................................... 249 3.1. Введение................................................................249 3.2. Сравнение пакетов имитационного моделирования и языков программирования..........................................250 3.3. Классификация программных средств имитационного моделирования .... 251 3.3.1. Универсальные и предметно-ориентированные пакеты имитационного моделирования....................................251 3.3.2. Подходы к моделированию...........................................252 3.3.3. Общие элементы моделирования......................................255 3.4. Возможности программ имитационного моделирования........................255 3.4.1. Основные характеристики...........................................256 3.4.2. Оборудование и программное обеспечение............................258 3.4.3 Анимация и динамическая графика....................................258 3.4.4. Статистические возможности........................................260 3.4.5. Работа с заказчиками и документация...............................262 3.4.6. Отчеты с выходными данными и графика..............................263 3.5. Универсальные пакеты имитационного моделирования........................264 3.5.1. Пакет имитационного моделирования Arena...........................264 3.5.2. Пакет имитационного моделирования Extend..........................269 3.5.3. Другие универсальные пакеты имитационного моделирования . . 276
8 Содержание 3.6. Объектно-ориентированное моделирование.........................276 3.6.1. Основные понятия.........................................276 3.6.2. Пакет имитационного моделирования MODSIM III.............278 3.7. Предметно-ориентированные пакеты имитационного моделирования...284 Глава 4. Основы теории вероятностей и статистики....................285 4.1. Введение.......................................................285 4.2. Случайные величины и их свойства...............................285 4.3. Выходные данные и стохастические процессы моделирования........297 4.4. Оценка средних значений, дисперсий и корреляций................300 4.5. Доверительные интервалы и проверка гипотез о среднем значении.....304 4.6. Усиленный закон больших чисел..................................310 4.7. Опасность замены распределения вероятностей его средним значением.311 Приложение 4А. Замечания по поводу ковариационно стационарных процессов. ..312 Задачи..............................................................312 Глава 5. Создание адекватных и детальных имитационных моделей............................................................316 5.1. Введение и определения.........................................316 5.2. Рекомендации по определению уровня детализации модели..........319 5.3. Верификация моделирующих компьютерных программ.................322 5.4. Методы повышения валидации и доверия к модели..................327 5.4.1. Сбор высококачественной информации и данных о системе.......327 5.4.2. Регулярное взаимодействие с менеджером...................329 5.4.3. Документальная поддержка предположений и структурированный критический анализ.............................................329 5.4.4. Валидация компонентов модели количественными методами.......331 5.4.5. Валидация выходных данных всей имитационной модели.......333 5.4.6. Анимация.................................................336 5.5. Роль руководства в процессе моделирования системы..............337 5.6. Процедуры для сравнения модельных и системных выходных данных.....337 5.6.1. Метод проверки...........................................337 5.6.2. Метод доверительного интервала, основанный на независимых данных.........................................................342 5.6.3. Методы временного ряда...................................344 Задачи..............................................................345 Глава 6. Выбор входных распределений вероятностей...................346 6.1. Введение.......................................................346 6.2. Наиболее часто используемые распределения вероятностей.........352 6.2.1. Параметризация непрерывных распределений.................352 6.2.2. Непрерывные распределения................................353 6.2.3. Дискретные распределения.................................372 6.2.4. Эмпирические распределения...............................381 6.3. Методы оценки для выборочной независимости.....................383
Содержание 9 6.4. Действие 1: гипотеза относительно семейства распределений......387 6.4.1. Итоговая статистика.......................................388 6.4.2. Гистограммы ..............................................390 6.4.3. Сводные квантили и блоковые графики.......................392 6.5. Действие II: оценка параметров.................................398 6.6. Действие III: определение наиболее подходящего распределения...402 6.6.1. Эвристические процедуры...................................402 6.6.2. Критерий согласия.........................................412 6.7. Программа ExpertFit и пример ее использования..................426 6.8 Смещенные и усеченные распределения............................432 6.9. Распределения Безье............................................435 6.10. Многомерные распределения, корреляции и стохастические процессы .... 435 6.10.1. Определение многомерных распределений....................437 6.10.2. Определение произвольных безусловных распределений и корреляций.....................................................441 6.10.3 Определение стохастического процесса......................442 6.11. Выбор распределения при отсутствии данных......................444 6.12. Модели процессов поступления требований........................447 6.12.1. Пуассоновские процессы...................................448 6.12.2. Нестационарный пуассоновский процесс.....................449 6.12.3. Групповые поступления....................................452 6.13. Оценка однородности различных наборов данных...................453 Приложение 6А. Таблицы оценок максимального правдоподобия для гамма- и бета-распределений.......................................454 Задачи...............................................................457 Глава 7. Генераторы случайных чисел..................................462 7.1. Введение........................................................462 7.2. Линейные конгруэнтные генераторы................................467 7.2.1. Смешанные генераторы......................................469 7.2.2. Мультипликативные генераторы..............................471 7.3. Генераторы других типов.........................................474 7.3.1. Конгруэнтные генераторы общего типа.......................474 7.3.2. Сложные генераторы........................................475 7.3.3. Генератор Таусворта и связанные с ним другие генераторы...478 7.4. Тестирование генераторов случайных чисел .......................480 7.4.1. Эмпирические тесты................................... .... 480 7.4.2. Теоретические тесты.......................................487 7.4.3. Некоторые общие замечания по тестированию.................490 Приложение 7А. Компьютерные программы для мультипликативного ЛКГ с простым модулем.....................................................491 7А.1. Программа на языке FORTRAN.................................491 7А.2. Программа на языке С.......................................494 7А.З. Получение начальных чисел для потоков......................496 Приложение 7Б. Машинонезависимая программа на языке С для комбинированного ЛКГ..............................................496 Задачи...............................................................499
10 Содержание Глава 8. Генерирование случайных величин. ... 502 8.1. Введение . . . .................................... 502 8.2. Общие подходы к генерированию случайных величин..... 504 8.2.1. Обратное преобразование.. 505 8.2.2. Композиция..................................... ...... 514 8.2.3. Свертка................................................. 518 8.2.4. Принятие-отклонение .. ...... 519 8.2.5. Специальные свойства.................................... 525 8.3. Генерирование непрерывных случайных величин.................... 526 8.3.1. Равномерное распределение......................... ..... 527 8.3.2. Экспоненциальное распределение......................... - 527 8.3.3. Распределение Эрланга т-го порядка.... .... 528 8.3.4. Гамма-распределение...... 529 8.3.5. Рвсп ределение Вей булла................................ 532 8.3.6. Нормальное распределение..... . .....532 8.3.7. Логнормальное распределение.. 534 8.3.8. Бета-распределение...................................... 534 8.3.9. Распределение Пирсона V типа ... 536 8.3.10. Распределение Пирсона VI типа...... ......536 8.3.11. Лог-логистическое распределение........................ 536 8.3.12. Связанное распределение Джонсона.................... ... 537 8.3.13. Несвязанное распределение Джонсона .. . . ........ ... 537 8.3.14. Распределение Безье................................. ... 537 8.3.15. Треугольное распределение ... ......537 8.3.16. Эмпирические распределения . .538 8.4. Генерирование дискретных случайных величин . . ......539 8.4.1. Распределение Бернулли................... . .... 540 8.4.2. Дискретное равномерное распределение..... . . 540 8.4.3. Произвольное дискретное распределение... .. 541 8.4.4. Биномиальное распределение... . . 546 8.4.5. Геометрическое распределение......................... ... 546 8.4.6- Отрицательное биномиальное распределение. ......546 8.4.7. Распределение Пуассона...................................547 8.5. Генерирование коррелированных случайных величин, векторов и процессов..........................................- ... ..........548 8.5.1. Использование условных распределений. ..... ... 548 8.5.2. Нормальное многомерное и логнормальное многомерное распределения................................................. 549 8.5.3. Коррелированные случайные величины с гамма-распределением. . . . 550 8.5.4. Генерирование случайных величин из многомерных семейств..551 8.5.5. Генерирование случайных векторов с произвольно определенными безусловными распределениями и корреляциями.................. . 552 8.5.6. Генерирование стохастических процессов...................553 8.6. Генерирование процессов поступления... . .555 8.6.1. Пуассоновские процессы.............................. .... 555 8.6.2. Нестационарный пуассоновский процесс..... . 555 8.6.3. Групповое поступление.....................................559
Содержание 11 Приложение 8А. Обоснование метода принятия-отклонения................560 Приложение 8Б. Подготовительный этап для метода замещений............561 Задачи...............................................................562 Глава 9. Анализ выходных данных для автономной системы .... 568 9.1. Введение........................................................568 9.2. Переходное и установившееся поведение стохастического процесса..571 9.3. Типы имитационного моделирования и анализ выходных данных.......574 9.4. Статистический анализ при переходном режиме моделирования.......578 9.4.1. Оценка средних значений...................................579 9.4.2. Оценка других показателей работы..........................589 9.4.3. Выбор начальных условий...................................592 9.5. Статистический анализ установившихся параметров.................593 9.5.1. Проблема начального переходного процесса................. 594 9.5.2. Использование метода репликации и удаления для получения оценки средних значений..........................................600 9.5.3. Другие методы получения оценки средних значений...........602 9.5.4. Оценка других показателей работы..........................613 9.6. Статистический анализ установившихся циклических параметров.....614 9.7. Множественные оценки показателей работы.............. . .......617 9.8. Временные графики важных переменных.............................621 Приложение 9А. Отношения математических ожиданий и оценки методом «складного ножа».............................................622 Задачи...............................................................623 Глава 10. Сравнение альтернативных конфигураций системы .... 629 10.1. Введение.......................................................629 10.2. Доверительные интервалы при сравнении двух систем..............633 10.2.1. Доверительный интервал на основе парного {-критерия......633 10.2.2. Доверительный интервал на основе {-критерия для независимых выборок........................................ 635 10.2.3. Сравнение двух методов...................................636 10.2.4. Сравнения, основанные на установившихся показателях работы.... 637 10.3. Доверительные интервалы при сравнении нескольких систем........639 10.3.1. Сравнение с образцом.....................................639 10.3.2. Попарное сравнение каждой системы со всеми остальными системами...................................................... 641 10.3.3. Множественные сравнения с лучшей системой...... ........643 10.4. Ранжирование и выбор...........................................643 10.4.1. Выбор лучшей из к систем.................................644 10.4.2. Выбор подмножества размером т, содержащего лучшую из к систем.....................................................646 10.4.3. Выбор т лучших из к систем...............................648 10.4.4. Дополнительные проблемы и методы.........................649 Приложение 10А. Обоснованность процедур выбора.......................653 Приложение 10Б. Константы для процедур выбора........................654 Задачи...............................................................656
12 Содержание Глава 11. Методы понижения дисперсии ...............................659 11.1. Введение......................................................659 11.2. Метод общих случайных чисел...................................660 11.2.1. Пояснение метода........................................661 11.2.2 Применение метода........................................662 11.2.3. Синхронизация...........................................665 11.2.4. Примеры.................................................670 11.3. Дополняющие случайные величины................................678 11.4. Контрольные случайные величины . . 685 11.5. Непрямая оценка...............................................693 11.6. Метод создания условий........................................696 Задачи..............................................................700 Глава 12. Планирование экспериментов и методы оптимизации. . . . 707 12.1. Введение......................................................707 12.2. Факторные планы типа 2*.......................................711 12.3. Эксперименты со многими факторами.............................724 12.3.1. Факторные планы типа 2к~р с дробными репликами..........725 12.3.2. Стратегии отсеивания факторов...........................732 12.4. Поверхности отклика и метамодели..............................734 12.5. Чувствительность и оценка градиента...........................743 12.6. Поиск оптимума................................................745 12.6.1. Методы поиска оптимума..................................748 12.6.2. Пакеты программ поиска оптимума, совмещенные с программами имитационного моделирования.....................750 Задачи..............................................................754 Глава 13. Моделирование производственных систем.....................758 13.1. Введение......................................................758 13.2. Цели моделирования производственных систем....................759 13.3. Программное обеспечение моделирования производственных систем.761 13.4. Моделирование случайности в производственных системах.........765 13.4.1. Источники случайности . . ..............................765 13.4.2. Простои механизмов......................................768 13.5. Пример моделирования..........................................775 13.5.1. Задачи и результаты моделирования................ . 775 13.5.2. Статистические вычисления...............................785 13.6. Анализ работы предприятия, производящего металлические детали.787 13.6.1. Описание системы........................................787 13.6.2. Общие цели моделирования................................788 13.6.3. Разработка модели.......................................788 13.6.4. Проверка достоверности и адекватности модели............789 13.6.5. Результаты имитационных экспериментов...................791 13.6.6. Выводы и полученные преимущества........................794 Задачи..............................................................794 Приложение..........................................................798 Литература..........................................................801 Алфавитный указатель................................................835
Об авторах Аверилл М. Лоу (Averill М. Law) — президент компании Averill М Law & Asso- ciates, Inc. (Тусон, Аризона), специализирующейся на консультациях по вопросам моделирования, на обучении моделированию и разработке соответствующего про- граммного обеспечения. До того как возглавить компанию, он работал профессо- ром в Аризонском университете, где преподавал курс принятия решений, а также адъюнкт-профессором в Висконсинском университете, читая лекции по организа- ции производства. Аверилл М. Лоу получил степени доктора философии и магис- тра естественных наук в области организации производства и исследования опе- раций в Калифорнийском университете в Беркли, магистра гуманитарных наук в области математики в Калифорнийском государственном университете в Лонг- Бич и бакалавра гуманитарных наук в области математики в Пенсильванском го- сударственном университете. Доктор Лоу консультировал по проблемам моделирования такие компании и организации, как Andersen Consulting, ARCO, Boeing, Booz Allen & Hamilton, Cellular One, Compaq, Kaiser Aluminum, Kimberly-Clark, M&M/Mars, SAIC, Sandia National Labs, 3M, Tropicana, Xerox, отдел по вопросам моделирования Министер- ства обороны США, Военно-воздушные силы США, Вооруженные силы США, Министерство связи США и Ведомство по делам ветеранов США. Он прочитал более 320 кратких курсов по моделированию в 17 странах мира, а также проводил семинары в США для ALCOA, AT&T, Coca-Cola, CSX, GE, GM, IBM, Intel, Lock- heed Martin, Lucent Technologies, MCI, Motorola, Nortel, 3M, Time Warner, UPS, Whirlpool, Xerox, НАСА, Агентства национальной безопасности, Военно-воздуш- ных сил США, Вооруженных сил США и Военно-морских сил США. Кроме того, Аверилл М. Лоу является одним из разработчиков программы по подбору распределений ExpertFit, которая автоматизирует выбор входных рас- пределений вероятностей при моделировании и используется более чем в 1600 ор- ганизациях по всему миру. Он также принимал участие в создании видеофильмов «Моделирование производственных систем» и «Как провести успешное изучение системы посредством моделирования». Доктор Лоу — автор (соавтор) трех книг и множества публикаций по вопросам моделирования, производства, исследования операций, статистики и сетей связи. Его статья «Статистический анализ выходных данных моделирования» была пер- вой заказной тематической статьей по моделированию, появившейся в крупном научном журнале. В 1988 году он получил награду за лучшую публикацию от Ин- ститута организации производства за ряд своих работ по моделированию произ- водственных систем. Во время своих научных изысканий в течение 8 лет подряд ученый пользовался поддержкой Управления военно-морских исследований. Бу- дучи президентом Колледжа моделирования INFORMS, в 1990-1991 годах он вел регулярную колонку, посвященную теме моделирования, в издании Industrial En- gineering. В 1994 году д-р Лоу выступил с программной речью на первой крупной конференции по вопросам моделирования, проводившейся в Азии (Токио).
14 Об авторах В. Дэвид Кельтон (W. David Kelton) — профессор факультета управления тор- гово-промышленной деятельностью университета в Цинциннати, где он препода- ет количественный анализ и управление операциями, а также ведет курсы по мо- делированию, стохастическим процессам, исследованию операций и статистике. В. Дэвид Кельтон получил степени бакалавра гуманитарных наук в области мате- матики в Висконсинском университете в Мэдисоне, магистра естественных наук в области математики в Огайском университете, доктора философии и магистра естественных наук в области организации производства в Миннесотском, Мичи- ганском университетах и Кентукском государственном университете. Он пригла- шался для чтения циклов лекций в Висконсинский университет, Венский инсти- тут специальных исследований и Варшавскую школу экономики. Проводимые им исследования, а также публикации касаются вероятностных и статистических аспектов моделирования, возможностей применения моделиро- вания, статистического контроля качества и стохастических моделей. Его статьи появлялись в изданиях Operations Research, Management Science, INFORMS Jour- nal on Computing, ПЕ Transactions, Naval Research Logistics, Journal of American Statistical Association и др. В соавторстве с Рэндэллом П. Садовски (Randall Р. Sa- dowski) и Деборой А. Садовски (Deborah A. Sadowski) Кельтон написал книгу по моделированию с пакетом Arena, выпущенную издательством WCB/McGraw-Hill в 1998 году. Ученый получал стипендии от General Motors, Ford, Standard Oil, Cray Research, Apple Computer, Hennepin County (Миннесота), Vaughn Communi- cations, Cincinnati Sub-Zero, Omnicare Inc., Revco Drug Stores, McKesson Auto- mated Pharmacy Systems, Select Tool & Die Corporation, Гражданского совета по правонарушениям и юстиции Миннеаполиса, Центра по городским и региональ- ным делам Миннесоты, студенческих общежитий университета в Цинциннати и Министерства образования США. В. Дэвид Кельтон является главным редактором журнала INFORMS Journal on Computing, он также работал редактором по вопросам моделирования в журналах Operations Research и INFORMS Journal on Computing, редактором отдела по во- просам моделирования ПЕ Transactions, помощником редактора Operations Re- search, Journal of Manufacturing Systems и Simulation, а также приглашенным ре- дактором HE Transactions, регулярно пишет статьи как для многих журналов, так и для Национального научного фонда США и за свою деятельность получил ряд наград. Он был президентом колледжа моделирования TIMS и работал представи- телем INFORMS в совете директоров Зимней конференции по моделированию, где в 1998 году был избран председателем совета директоров. В 1987 году В. Дэвид Кельтон являлся руководителем программы Зимней конференции по моделиро- ванию, а в 1991 — ее генеральным руководителем. Ученый работал консультантом с такими компаниями и организациями, как Volvo, General Dynamics, Harper-Gra- ce Hospitals, Pillsburry, 3M, Johnson Controls, Systems Modeling, SuperValu, SEMA- TECH, НАСА, Управление жилищного строительства Миннеаполиса и Венская торговая палата (Австрия).
Посвящается Штеффи, Хезер, Адаму, Брайану и памяти Салли и Дэвида. Аверилл М. Л оу Посвящается Кристи, Молли, Анне и Энни. В. Дэвид Кельтом Предисловие Цель книги «Имитационное моделирование» — дать всесторонний обзор всех важ- ных аспектов изучения систем посредством имитационного моделирования, в том числе программного обеспечения имитационного моделирования, проверок дос- товерности и адекватности модели, моделирования входных данных, генераторов случайных чисел, генерирования случайных величин и процессов, статистических планов и анализа моделируемых экспериментов, а также осветить основные сфе- ры применения имитационного моделирования, в частности возможности моде- лирования производственных систем. Здесь приведено много примеров и задач, а также ссылок на литературу по моделированию, к которой можно обратиться для углубленного изучения предмета. Издание может использоваться как учебник для курсов различных уровней, в том числе: 4- первичного курса имитационного моделирования для студентов с начальной подготовкой в области машиностроения, технологии производства, бизнеса или вычислительной техники (главы 1-4, разделы из глав 5-9), в конце тако- го курса обучавшиеся смогут полностью и эффективно изучать системы по- средством моделирования, а также будут готовы к изучению более сложного курса имитационного моделирования; 4 усложненного курса имитационного моделирования для подготовленных сту- дентов и аспирантов, изучающих любую из вышеназванных дисциплин (боль- шая часть материала глав 5-12), по завершении этого курса студенты будут знать более сложные методы, применяемые при изучении систем посредством моделирования, а также будут готовы к пониманию и проведению исследова- ний посредством моделирования; 4 введения в имитационное моделирование как части основного курса исследо- вания операций или науки о методах управления (главы 1, 3, 5, 6 и 9). Преподаватели, избравшие эту книгу для ведения своего курса, могут восполь- зоваться вспомогательными материалами на сайте www.mhhe.com/Lawkelton, кото- рые содержат полный набор решений к задачам, слайды для лекций и програм- мный код (в том числе все имитационные модели из настоящего издания). Чтобы получить реквизиты доступа к материалам узла, надо связаться с представителями
16 Предисловие издательства McGraw-Hill по электронному адресу mhcom@mcgraw-hilLcom или же через сайт www.mhhe.com. Книга также может служить руководством для специалистов, занимающихся моделированием. В нее включено множество подробных практических примеров, часть которых подобрана из исследований, проводившихся авторами. Для понимания изложенного материала необходимо знать основы теории ве- роятностей и статистики (хотя обзор этих тем и дан в главе 4), а также иметь неко- торый опыт в области вычислительной техники. При изучении глав 1 и 2 понадо- бится знание универсальных языков программирования, таких как FORTRAN или С. Время от времени придется обращаться к линейной алгебре и теории мат- ричных исчислений. Более сложный материал выделен в отдельные разделы или приложения к главам. В третье издание внесены некоторые изменения и дополнения (кое-что и уда- лено), но структура книги, оглавление и нумерация глав остались такими, как в предыдущем издании. В связи с сегодняшними тенденциями в языках програм- мирования из главы 1 удален код на языке Паскаль (хотя его все еще можно загру- зить с сайта www.mhhe.com/lawkelton), теперь в ней приведены программы на язы- ках FORTRAN 77 и С. Код в главе 2 переведен с FORTRAN 77 на С (опять-таки старые программы на FORTRAN 77 можно найти, обратившись к вышеупомяну- тому сайту). Этот код основан на С-версии исходного кода библиотеки SIMLIB на FORTRAN 77, созданной д-ром Грегори Глокнером (Gregory Glockner) и исполь- зованной в первых двух изданиях книги. Поскольку с выхода второго издания книги в программном обеспечении моделирования произошли существенные из- менения, глава 3 полностью обновлена. В главе 4 изложены основы теории вероят- ностей и статистики, поэтому она осталась практически без изменений. Процеду- ры проверки модели существенно усовершенствованы, в связи с чем большая часть материала главы 5 переписана. В главе 6, касающейся моделирования вход- ных данных, представлены важные новые распределения, некоторые из последних исследований и достижения в моделировании, а также оценке коррелированных структур и процессов. В главе 7 рассмотрены новые и существенным образом усо- вершенствованные генераторы случайных чисел, кроме того, дан их программный код (который также можно загрузить с сайта www.mhhe.com/lawkelton). Обновлен материал в главе 8, касающийся генерирования величин и процессов, в том числе приведены последние достижения в генерировании коррелированных структур и процессов, определенных в главе 6. Методы статистического планирования и анализа в главах 9-12 существенно расширены или модернизированы, особенно это касается оптимизации имитационных моделей в главе 12. В главе 13 тоже учтены последние достижения в теории моделирования и программном обеспече- нии. В отличие от двух предыдущих изданий ссылки на литературные источники ко всем главам собраны в конце книги и размещены в алфавитном порядке, что позволило не прерывать изложение материала подробными библиографическими описаниями, а также делает восприятие текста более удобным. Многие люди и организации помогали в работе над тремя изданиями этой кни- ги (работа над первым из которых началась более 20 лет назад). Особую благо- дарность хотелось бы выразить сотруднику компании Averill М. Law & Associates
Предисловие 17 м-ру Майклу Г. Мак-Комасу (Michael G. McComas) за его бесценный вклад во многие этапы работы над книгой, в том числе моделирование, анализ исследова- ния, компьютерные вычисления и чтение набросков глав. Большую помощь и под- держку в подготовке этого издания, а также двух предыдущих оказали отдел по во- просам моделирования Министерства обороны США, отделение количественного анализа и управления операциями университета в Цинциннати, Институт супер- компьютеров при Миннесотском университете, Управление военно-морских ис- следований и Управление исследований армии, финансировавшие Центр матема- тических исследований при Висконсинском университете. Кроме них также очень помогли в работе рецензенты настоящего издания Кен Бауэр (Ken Bauer) (Ин- ститут технологий Военно-воздушных сил США), Джефф Кочран (Jeff Cochran) (Аризонский государственный университет), Дейв Голдсман (Dave Goldsman) (Georgia Tech), Мансуре Моллагхасеми (Mansooreh Mollaghasemi) (Университет Центральной Флориды), а также рецензенты предыдущих изданий Осман Балки (Osman Balci) (Virginia Tech), Вафик Искандер (Wafik Iskander) (Западновирд- жинский университет), Барри Нельсон (Barry Nelson) (Северо-западный универ- ситет), покойный Джеймс Риггс (James Riggs), Пируз Вакилли (Pirooz Vakilli) (Бостонский университет), Фрак Вульф (Frank Wolf) (Западномичиганский уни- верситет). Понимая, что невозможно упомянуть всех, кто внес свой вклад в работу над книгой, все же хотелось бы поблагодарить за помощь Каушика Балакришна- на (Kaushi Balakrishnan), Раса Бартона (Russ Barton), Аарти Бхате-Фелшейма (Aarti Bhate-Felsheim), Билла Байлеса (Bill Biles), Дайан Бишак (Diane Bischak), Эберхарда Блюмеля (Eberhard Blumel), Джейсона Боселя (Jason Boesel), Дэна Бруннера (Dan Brunner), Джеффа Кэмма (Jeff Camm), Марне Карио (Мате Cario), Джона Карсона (John Carson), Джона Чарнеса (John Chames), Джека Чена (Jack Chen), Рассела Ченга (Russell Cheng), Янгс Чуна (Youngsoo Chun), Боба Крейна (Bob Crain), Боба Даймонда (Bob Diamond), Эдда Дудевича (Ed Dudewicz), Джорджа Фишмана (George Fishman), Пола Фишсика (Paul Fishwick), Бена Фокса (Ben Fox), Майка Фу (Mike Fu), Ричарда Фуджимото (Richard Fujimoto), Фре- да Гловера (Fred Glover), Джорге Хэддока (Jorge Haddock), Фила Хейдельбергера (Phil Heidelberger), Джима Хенриксена (Jim Henriksen), Шелдона Джекобсона (Sheldon Jacobson), Марка Джонсона (Mark Johnson), Дата Джонса (Doug Jones), Питера Калиша (Peter Kalish), Джима Келли (Jim Kelly), Стива Лавенберга (Ste- ve Lavenberg), Пьера Л’Экьюэра (Pierre L’Ecuyer), Марти Леви (Marty Levy), Пи- тера Лоренца (Peter Lorenz), Херба Моргана (Herb Morgan), Дата Морриса (Doug Morrice), Джо Мюррея (Joe Murray), Дика Нансе (Dick Nance), Дэвида Ни- коля (David Nicol), Билла Нордгрена (Bill Nordgren), Дэвида Нормана (Davi Norman), Джина О’Рейлли (Jean O’Reilly), Джима Палмера (Jim Palmer), Дени- са Пегдена (Dennis Pegden), Тайлера Филлипса (Tyler Phillips), Алана Прицкера (Alan Pritsker), Джона Рамберга (John Ramberg), Яна Роулеса (Ian Rawles), Ча- ка Рейлли (Chuck Reilly), Стива Робертса (Steve Roberts), Ральфа Роджерса (Ralph Rogers), Эдда Расселла (Ed Russell), Деб Садовски (Deb Sadowski), Рэн- ди Садовски (Randy Sadowski), Сафи Сафизаде (Safi Safizadeh), Пола Санчеса (Paul Sanchez), Сьюзэн Санчес (Susan Sanchez), Боба Сарджента (Bob Sargent),
18 Предисловие (Lee Schruben), Томаса Шульца (Thomas Schulze), Мюрали Шэнкер (Murali Shanker), Боба Шеннона (Bob Shannon), Марлен Смит (Marlene Smith), Ка- рен Сиэнли (Karen Stanley), Дейва Стуррока (Dave Sturrok), Джима Свейна (Jim Swain), Майка Тааффе (Mike Taaffe), Лорела Трэвиса (Laurel Travis), Кари- ма Тумея (Kerim Tumay), Брайна Унгера (Brian Unger), Виллема ван Гроэнендаа- ля (Willem Van Groenendaal), Томаса Варлея (Thomas Varley), Эда Уотсона (Ed Watson), Питера Велша (Peter Welch), Джима Вильсона (Jim Wilson), Брай- на Вуда (Brian Wood), Саймона Янгблада (Simone Youngblood) и Энвера Юкесана (Enver Yucesan). От издателя перевода Свои замечания, предложения, вопросы отправляйте по адресу электронной по- чты comp@piter.com (издательство «Питер», компьютерная редакция). Мы будем рады узнать ваше мнение о книге! Подробную информацию о книгах издательств «Питер» и «Издательская груп- па BHV» вы найдете на сайтах www.piter.com и www.bhv.kiev.ua.
Глава 1 Основы имитационного моделирования ♦ Понятие об имитационном моделировании, системах и моделях 4- Переменные и подпрограммы дискретно-событийной модели ♦ Схемы системы массового обслуживания ♦ Разработка и программирование простых имитационных моделей ♦ Методы моделирования ♦ Преимущества и недостатки исследования систем с помощью моделирования 1.1. Суть имитационного моделирования В данной книге рассматривается использование компьютерных технологий для ими- тации различных процессов или операций (то есть их моделирования), выполняе- мых реальными устройствами. Устройство или процесс обычно именуется систе- мой. Для научного исследования системы мы прибегаем к определенным допуще- ниям, касающимся ее функционирования. Эти допущения, как правило, имеющие вид математических или логических отношений, составляют модель, с помощью которой можно получить представление о поведении соответствующей системы. Если отношения, которые образуют модель, достаточно просты для получения точной информации по интересующим нас вопросам, то можно использовать мате- матические методы. Такого рода решение называется аналитическим. Однако боль- шинство существующих систем являются очень сложными, и для них невозможно создать реальную модель, описанную аналитически. Такие модели следует изучать с помощью моделирования. При моделировании компьютер используется д ля чис- ленной оценки модели, а с помощью полученных данных рассчитываются ее реаль- ные характеристики. Моделирование может, например, использоваться при рассмотрении производст- венной компанией возможности постройки больших дополнительных помещений для одного из ее заводов, если руководство компании не уверено, что потенциальный рост производительности сможет оправдать затраты на строительство. Невозможно соорудить помещения, а затем убрать их в случае нерентабельности, в то время как моделирование работы завода в его текущем состоянии и с якобы созданными до- полнительными помещениями помогает в решении этой проблемы.
20 Глава 1. Основы имитационного моделирования Имитационное моделирование может применяться в самых различных сферах деятельности. Ниже приведен список задач, при решении которых моделирование особенно эффективно: ♦ проектирование и анализ производственных систем; ♦ оценка различных систем вооружений и требований к их материально-тех- ническому обеспечению; ♦ определение требований к оборудованию и протоколам сетей связи; ♦ определение требований к оборудованию и программному обеспечению раз- личных компьютерных систем; ♦ проектирование и анализ работы транспортных систем, например аэропор- тов, автомагистралей, портов и метрополитена; > оценка проектов создания различных организаций массового обслуживания, например центров обработки заказов, заведений быстрого питания, боль- ниц, отделений связи; ♦ модернизация различных процессов в деловой сфере; ♦ определение политики в системах управления запасами; ♦ анализ финансовых и экономических систем. Имитационное моделирование — один из наиболее распространенных методов, а возможно, и самый распространенный метод, исследования операций и теории управления, о чем свидетельствуют, например, Зимние конференции по вопросам имитационного моделирования (Winter Simulation Conference), ежегодно собира- ющие до 700 участников. Существует еще несколько конференций, организуемых поставщиками программных продуктов для моделирования, в которых ежегодно участвует свыше 100 чел. Известно также несколько обзоров, посвященных использованию методов иссле- дования операций. Например, Лейн, Мансор и Харпелл [Lane, Mansour and Harpell, 19931] в своих отчетах за период с 1973 по 1988 год приходят к выводу, что мо- делирование постоянно входит в число трех наиболее важных методов исследования операций. К двум другим они относят математическое программирование (универ- сальный термин, применяемый для обозначения таких методов, как линейное про- граммирование, нелинейное программирование и т. п.) и статистику (которая, по сути, не является методом исследования операций). Гупта [Gupta, 1997] проанали- зировал 1294 статьи журнала Interfaces (одного из ведущих журналов, освещающих применение методов исследования операций) за период с 1970 по 1992 год и уста- новил, что из 13 упоминающихся технологий моделирование занимает второе место, пропустив вперед лишь математическое программирование. Более широкому распространению имитационного моделирования воспрепят- ствовали несколько факторов. Во-первых, модели, применяемые для исследова- ния больших систем, все больше усложняются, что, в свою очередь, затрудняет на- писание для них компьютерных программ. В последние годы эту задачу удалось 1 Библиографические описания упомянутых здесь и далее источников можно найти в конце книги. — Примеч. ред.
1.2. Система, модели и имитационное моделирование 21 существенно облегчить благодаря появлению мощных программных продуктов, автоматически предоставляющих многие элементы, необходимые для •«програм- мирования» имитационной модели. Во-вторых, моделирование сложных систем часто требует много компьютерного времени. Однако по мере увеличения быстро- действия и снижения стоимости компьютеров данная проблема также постепенно становится решаемой. И наконец, создается неверное впечатление о моделирова- нии как об упражнении в программировании, пусть и очень сложном. Из-за этого многие исследования посредством моделирования выполняются как построение и программирование эвристической модели с последующим разовым запуском программы для получения «ответа». Мы опасаемся, что при упомянутом подходе не учитывается вопрос о том, как правильно запрограммированная модель должна использоваться для получения выводов о системе, и такой подход приводит к ошибочным результатам. (Вопросы, касающиеся методологии имитационного моделирования, в основном не зависящей от применяемого программного обеспе- чения и оборудования, рассматриваются в последующих главах этой книги.) В главе 1 (а также в главе 2) мы детально рассмотрим системы и модели, а затем покажем, как создавать программы на универсальных языках для моделирования систем с разным уровнем сложности. Код программ, приведенный в данной главе, может быть загружен с сайта www.mhhe.com/lawkelton. 1.2. Система, модели и имитационное моделирование Система — это совокупность объектов, например людей или механизмов, функ- ционирующих и взаимодействующих друг с другом для достижения определенной цели. Данное определение предложено Шмидтом и Тейлором [Schmidt and Taylor, 1970]. На практике понятие системы зависит от задач конкретного исследования. Так, совокупность предметов, которые составляют систему в одном исследовании, может являться лишь подмножеством в иной системе, при проведении другого ис- следования. Скажем, при исследовании функционирования банка с целью опреде- ления числа кассиров, необходимого для обеспечения адекватного обслуживания клиентов, желающих снять деньги со счета, обналичить чек, сделать вклад, систе- ма будет состоять из кассиров и посетителей, ожидающих своей очереди на обслу- живание. Если же в исследовании должны быть учтены служащие, занимающиеся выдачей кредитов, и сейфы для вкладов на ответственном хранении, определение системы расширится соответствующим образом [Fishman, 1978, р. 3]. Состояние системы определяется как совокупность переменных, необходимых для описания системы на определенный момент времени в соответствии с задача- ми исследования. При исследовании банка примерами переменных состояния мо- гут служить число занятых кассиров, число посетителей в банке и время при- бытия каждого клиента в банк. Существуют системы двух типов: дискретные и непрерывные. В дискретной системе переменные состояния в различные периоды времени меняются мгновен- но. Банк можно назвать примером дискретной системы, поскольку переменные
22 Глава 1. Основы имитационного моделирования состояния, например количество посетителей в банке, меняются только по при- бытии нового посетителя, по окончании обслуживания или уходе посетителя, раньше находившегося в банке. В непрерывной системе переменные меняются бес- прерывно во времени. Самолет, движущийся в воздухе, может служить примером непрерывной системы, поскольку переменные состояния (например, положение и скорость) меняются постоянно по отношению ко времени. На практике система редко является полностью дискретной или полностью непрерывной. Но в каждой системе, как правило, превалирует один тип изменений, по нему мы и определяем ее либо как дискретную, либо как непрерывную. В определенные моменты функционирования большинства систем возникает необходимость их исследования с целью получения представления о внутренних отношениях между их компонентами или вычисления их производительности в новых условиях эксплуатации. На рис. 1.1 изображены различные способы ис- следования системы. Рассмотрим их подробнее. Рис. 1.1. Способы исследования системы + Эксперимент с реальной системой или с моделью системы? При наличии воз- можности физически изменить систему (если это рентабельно) и запустить ее в действие в новых условиях лучше всего поступить именно так, поскольку в этом случае вопрос об адекватности полученного результата исчезает сам собой. Однако часто такой подход неосуществим либо из-за слишком больших за- трат на его осуществление, либо в силу разрушительного воздействия на саму систему. Например, в банке ищут способы снижения расходов, и с этой целью предлагается уменьшить число кассиров. Если опробовать в действии новую систему — с меньшим числом кассиров, это может привести к длительным
1.2. Система, модели и имитационное моделирование 23 задержкам в обслуживании посетителей и их отказу от услуг банка. Более того, система может и не существовать на самом деле, но мы хотим изучить различ- ные ее конфигурации, чтобы выбрать наиболее эффективный способ выпол- нения. Примерами таких систем могут служить сети связи или стратегические системы ядерных вооружений. Поэтому необходимо создать модель, представ- ляющую систему, и исследовать ее как заменитель реальной системы. При ис- пользовании модели всегда возникает вопрос — действительно ли она в такой степени точно отражает саму систему, чтобы можно было принять решение, основываясь на результатах исследования. (Детально вопрос о достоверности модели рассматривается в главе 5.) ♦ Физическая модель или математическая модель? При слове «модель» боль- шинство из нас представляет себе кабины, установленные вне самолетов на тренировочных площадках и применяемые для обучения пилотов, либо ми- ниатюрные супертанкеры, движущиеся в бассейне. Это все примеры физичес- ких моделей (именуемых также иконическими или образными). Они редко ис- пользуются при исследовании операций или анализе систем. Но в некоторых случаях создание физических моделей может оказаться весьма эффективным при исследовании технических систем или систем управления. Примерами мо- гут служить масштабные настольные модели погрузочно-разгрузочных систем и, по крайней мере, один случай создания полномасштабной физической мо- дели заведения быстрого питания в большом магазине, в реализации которой были задействованы вполне реальные посетители [Swart and Donno, 1981]. Однако преобладающее большинство создаваемых моделей являются мате- матическими. Они представляют систему посредством логических и количес- твенных отношений, которые затем подвергаются обработке и изменениям, чтобы определить, как система реагирует на изменения, точнее — как бы она реагировала, если бы существовала на самом деле. Наверное, самым простым примером математической модели является известное соотношение d rt, где d — расстояние, г — скорость перемещения, t — время перемещения. Иногда такая модель может быть и адекватна (например, в случае с космическим зон- дом, направленным к другой планете, по достижении им скорости полета), но в других ситуациях она может не соответствовать действительности (например, транспортное сообщение в часы пик на городской перегруженной автостраде). ♦ Аналитическое решение или имитационное моделирование? Чтобы ответить на вопросы о системе, которую представляет математическая модель, следует установить, как эту модель можно построить. Когда модель достаточно проста, можно вычислить ее соотношения и параметры и получить точное аналити- ческое решение. Если в примере с формулой d = rt известны расстояние, на которое перемещается объект, и его скорость, то время, необходимое для пе- ремещения, рассчитывается из соотношения t = d/r. Это простое аналитиче- ское решение, к которому мы приходим с помощью ручки и бумаги. Однако некоторые аналитические решения могут быть чрезвычайно сложными и тре- бовать при этом огромных компьютерных ресурсов. Обращение большой не- разреженной матрицы является знакомым многим примером ситуации, когда существует в принципе известная аналитическая формула, но получить в таком
24 Глава 1. Основы имитационного моделирования случае численный результат не так просто. Если в случае с математической моделью возможно аналитическое решение и его вычисление представляется эффективным, лучше исследовать модель именно таким образом, не прибегая к имитационному моделированию. Однако многие системы чрезвычайно слож- ны, они практически полностью исключают возможность аналитического ре- шения. В этом случае модель следует изучать с помощью имитационного мо- делирования, то есть многократного испытания модели с нужными входными данными, чтобы определить их влияние на выходные критерии оценки работы системы. Имитационное моделирование воспринимается как «метод последней надеж- ды», и в этом есть толика правды. Однако в большинстве ситуаций мы быстро осознаем необходимость прибегнуть именно к этому средству, поскольку иссле- дуемые системы и модели достаточно сложны и их нужно представить доступным способом. Допустим, у нас есть математическая модель, которую требуется исследовать с помощью моделирования (далее — имитационная модель). Прежде всего нам не- обходимо прийти к выводу о средствах ее исследования. В этой связи следует классифицировать имитационные модели по трем аспектам. ♦ Статическая или динамическая? Статическая имитационная модель — это система в определенный момент времени или же система, в которой время просто не играет никакой роли. Примерами статической имитационной мо- дели являются модели, созданные по методу Монте-Карло (см. раздел 1.8.3). Динамическая имитационная модель представляет систему, меняющуюся во времени, например конвейерную систему на заводе. Построив математичес- кую модель, следует решить, каким образом ее можно использовать для полу- чения данных о системе, которую она представляет. ♦ Детерминированная или стохастическая? Если имитационная модель не со- держит вероятностных (случайных) компонентов, она называется детермини- рованной. Примером такой модели является сложная (и аналитически сложно вычислимая) система дифференциально-разностных уравнений, описывающих химическую реакцию. В детерминированной модели результат можно полу- чить, когда для нее заданы все входные величины и зависимости, даже если в этом случае потребуется большое количество компьютерного времени. Одна- ко многие системы моделируются с несколькими случайными входными данны- ми компонентов, в результате чего создается стохастическая имитационная мо- дель. (Пример того, как опасно игнорировать случайность при моделировании системы, приведен в разделе 4.7.) Большинство систем массового обслужива- ния и управления запасами именно таким образом и моделируется. Стохасти- ческие имитационные модели выдают результат, который является случай- ным сам по себе, и поэтому он может рассматриваться лишь как оценка истин- ных характеристик модели. Это один из главных недостатков моделирования (см. раздел 1.9). (Данному вопросу посвящены главы 9-12 этой книги.) ♦ Непрерывная или дискретная? Говоря обобщенно, мы определяем дискретную и непрерывную модели подобно ранее описанным дискретной и непрерывной
1.3. Дискретно-событийное моделирование 25 системам. (Более точное определение дискретного (событийного) и непрерыв- ного моделирования вы найдете в разделах 1.3 и 1.8 соответственно.) Следует заметить, что дискретная модель не всегда используется для моделирования дискретной системы, и наоборот. Необходимо ли для конкретной системы ис- пользовать дискретную или непрерывную модель, зависит от задач исследова- ния. Так, модель транспортного потока на автомагистрали будет дискретной, если вам необходимо учесть характеристики и движение отдельных машин. Однако, если машины можно рассматривать в совокупности, транспортный поток может быть описан с помощью дифференциальных уравнений в непре- рывной модели. (Дополнительные сведения по этому вопросу можно найти в разделе 5.2, в частности в примере 5.2.) Имитационные модели, которые мы дальше рассмотрим, будут дискретными, динамическими и стохастическими (за исключением тех, о которых речь пойдет в разделе 1.8). В дальнейшем будем именовать их дискретно-событийными ими- тационными моделями. (Так как детерминированные модели представляют собой особый вид стохастических моделей, тот факт, что мы ограничиваемся только такими моделями, не влечет за собой каких-либо погрешностей в обобщении.) 1.3. Дискретно-событийное моделирование Дискретно-событийное моделирование используется для построения модели, от- ражающей развитие системы во времени, когда состояния переменных меняются мгновенно в конкретные моменты времени. (Говоря математическим языком, система может меняться только в исчислимое количество моментов времени.) В такие моменты времени происходят события, при этом событие определяется как мгновенное возникновение, которое может изменить состояние системы. Хо- тя теоретически дискретно-событийное моделирование можно осуществлять с помощью вычислений вручную, количество данных, которые должны сохранять- ся и обрабатываться при моделировании большинства реальных систем, диктует необходимость применения вычислительных машин. (В разделе 1.4.2 небольшой пример моделирования выполняется вручную только для того, чтобы продемон- стрировать используемую в нем логику моделирования.) Пример 1.1. Рассмотрим систему с одним устройством обслуживания, например парик- махерскую или справочное бюро в аэропорту с одним оператором. Нам необходимо приблизительно подсчитать ожидаемую среднюю задержку требований в очереди. При этом задержка требования в очереди равна времени, прошедшему с момента его появле- ния в системе до начала его обслуживания. Для того чтобы рассчитать среднюю задерж- ку в дискретно-событийной имитационной модели, определяются такие переменные состояния, как состояние устройства обслуживания (занято или свободно), число тре- бований в очереди (если таковые имеются) и время поступления каждого требования, ожидающего своей очереди. При поступлении требования должно быть определено сос- тояние устройства обслуживания: может ли требование быть обслужено немедленно или его необходимо поместить в конец очереди. После завершения обслуживания тре- бования, исходя из числа требований в очереди, определяется, будет устройство обслу- живания свободно или же начнет обслуживание первого требования в очереди. Чтобы
26 Глава 1. Основы имитационного моделирования вычислить задержку требования в очереди, необходимо установить время его поступле- ния, так как задержка равна времени начала обслуживания требования (которое будет известно) минус время его поступления. В этой системе есть два типа событий: поступ- ление требования и завершение обслуживания требования, приводящее к его уходу. Поступление требования является событием, поскольку оно вызывает изменение состо- яния устройства обслуживания (переменной состояния) со свободного на занятое или увеличение числа требований в очереди (переменной состояния) на единицу. Соот- ветственно уход требования также является событием, так как вызывает изменение сос- тояния устройства обслуживания с занятого на свободное или уменьшение числа требо- ваний в очереди на единицу. (В разделе 1.4 описано создание дискретно-событийной имитационной модели этой системы с одним устройством обслуживания.) В приведенном выше примере оба типа событий действительно меняют сос- тояние системы, тогда как в некоторых дискретно-событийных моделях события применяются для задач, не вызывающих таких изменений. Так, событие может использоваться, чтобы задать окончание имитационного прогона на определенное время (см. раздел 1.4.7) или вычислить результаты работы системы в определен- ный момент времени (см. раздел 1.5), при этом оно не будет вызывать действи- тельного изменения состояния системы. Именно потому в начале раздела сказано, что событие может изменить состояние системы. 1.3.1. Механизмы продвижения времени Динамическая природа дискретно-событийных имитационных моделей требует, что- бы мы следили за текущим значением имитационного времени по мере функциони- рования имитационной модели. Нам необходим также механизм для продвижения имитационного времени от одного значения к другому. В имитационной модели пе- ременная, обеспечивающая текущее значение модельного времени, называется часа- ми модельного времени. При создании модели на таких универсальных языках, как FORTRAN или С, единица времени для часов модельного времени никогда не уста- навливается явно. Подразумевается, что оно будет указываться в тех же единицах, что и входные параметры. К тому же модельное время и время, необходимое для про- гона имитационной модели на компьютере, как правило, невозможно соотнести. Существует два основных подхода к продвижению модельного времени: про- движение времени от события к событию и продвижение времени с постоянным шагом. Поскольку первый подход используется всеми основными имитационны- ми программами и большинством разработчиков, создающих свои модели на уни- версальных языках, а также с учетом того, что второй подход является разновид- ностью первого, в дискретно-событийных моделях, рассматриваемых в этой книге, будет применяться такой подход, как продвижение времени от события к собы- тию. В приложении 1А (в конце этой главы) дан краткий обзор продвижения времени с постоянным шагом. При использовании продвижения времени от события к событию часы модель- ного времени в исходном состоянии устанавливаются в 0 и определяется время возникновения будущих событий. После этого часы модельного времени переходят на время возникновения ближайшего события, и в этот момент обновляются со- стояние системы с учетом произошедшего события, а также сведения о времени
1.3. Дискретно-событийное моделирование 27 возникновения будущих событий. Затем часы модельного времени продвигаются ко времени возникновения следующего (нового) ближайшего события, обновля- ется состояние системы и определяется время будущих событий, и т. д. Процесс продвижения модельного времени от времени возникновения одного события ко времени возникновения другого продолжается до тех пор, пока не будет выполне- но какое-либо условие останова, указанное заранее. Поскольку в дискретно-собы- тийной имитационной модели все изменения происходят только во время возник- новения событий, периоды бездействия системы просто пропускаются, и часы переводятся со времени возникновения одного события на время возникновения другого. (При продвижении времени с постоянным шагом такие периоды бездей- ствия не пропускаются, что приводит к большим затратам компьютерного време- ни. См. приложение 1А.) Следует отметить, что длительность интервала продви- жения модельного времени от одного события к другому может быть различной. Пример 1.2. В этом примере детально рассматривается механизм продвижения времени от события к событию в системе массового обслуживания с одним устройством обслу- живания, которая уже использовалась в примере 1.1. Нам понадобятся следующие обо- значения: t, — время поступления требования i (t0 = 0); А; = tj - — время между поступлениями требований i - 1 и i; Sj — время, потраченное устройством на обслуживание требования i (без учета времени задержки требования в очереди); D{ — время задержки требования i в очереди; С; -1, + Di + Si — время ухода требования i по завершении обслуживания; в; — время возникновения события i любого типа (значение i, принимаемое часами модельного времени без учета значения е0 - 0). Каждый из определенных параметров, как правило, будет случайной величиной. Пред- положим, что нам известны распределения вероятностей для времени между поступле- нием требований Аь Л2,... и для времени обслуживания S2,... и что они имеют функ- ции распределения (см. раздел 4.2), обозначенные как FA и Fs соответственно. (FA и Fs вычисляются путем сбора данных в интересующей нас системе и последующего опреде- ления распределений по этим данным с использованием методов, описанных в главе 6.) В момент времени е0 = 0 устройство находится в состоянии незанятости. Время поступ- ления первого требования определяется путем генерации значения At из FA (методы гене- рации случайных наблюдений из указанного распределения рассматриваются в главе 8) и прибавления его к 0. После этого часы модельного времени переводятся на время воз- никновения следующего (первого) события et - t2. (На рис. 1.2 изогнутые стрелки пред- ставляют продвижение часов модельного времени.) Поскольку на момент поступления требования устройство находится в состоянии незанятости, оно немедленно начинает обслуживание с задержкой требования в очереди Dx - 0, и его состояние меняется на за- нятое. Время Cj завершения обслуживания поступившего требования определяется пу- тем генерации значения Sx из Fs и прибавления его к t2. И наконец, время поступления второго требования t2 вычисляется по формуле t2 = Ц + Л2, где значение Л2 генерируется из Fa. Если t2 < ct, как показано нарис. 1.2, часы модельного времени переводятся с на время следующего события е2 = Г2. (Если бы ct было меньше t2, часы были бы переведены с et на Cj.) Так как требование, поступившее в момент времени t2, обнаруживает, что уст- ройство обслуживания уже занято, число требований в очереди увеличивается с 0 до 1, а время поступления требования записывается. Однако в этот раз не генерируется время обслуживания требования S2. Время поступления третьего требования вычисляется
28 Глава 1. Основы имитационного моделирования по формуле £3” tj + А3. Если Ct< t3, как показано на рис. 1.2, часы модельного времени пе- реводятся с е2 на время возникновения следующего события е3 - с2. Когда требование, обслуживание которого завершено, уходит, начинается обслуживание требования в оче- реди (того, которое поступило в момент времени t2), вычисляется время его задержки в очереди D2 - ct -12 и с2 - q + S2 (теперь S2 генерируется из Ед), а число требований в очереди меняется с 1 на 0. Если q < часы модельного времени переводятся с е3 на вре- мя возникновения следующего события е4 - q, и т. д. Моделирование может быть пре- рвано, например, в случае, когда число требований, задержка которых в очереди была учтена, достигнет указанного значения. Рис. 1.2. Механизм продвижения времени от события к событию в системе с одним устройством обслуживания 1.3.2. Компоненты дискретно-событийной имитационной модели и их организация Хотя моделирование применяется к самым разнообразным реальным системам, все дискретно-событийные имитационные модели включают ряд общих компонентов. Логическая организация этих компонентов позволяет обеспечивать программирова- ние, отладку и последующее изменение программы имитационной модели. В част- ности, дискретно-событийная имитационная модель, которая использует механизм продвижения времени от события к событию и написана на универсальном языке, содержит следующие компоненты: ♦ состояние системы — совокупность переменных состояния, необходимых для описания системы в определенный момент времени; ♦ часы модельного времени — переменная, указывающая текущее значение мо- дельного времени; ♦ список событий — список, содержащий время возникновения каждого по- следующего типа событий; ♦ статистические счетчики — переменные, предназначенные для хранения статистической информации о характеристике системы; ♦ программа инициализации — подпрограмма, устанавливающая в исходное состояние имитационную модель в момент времени, равный 0; ♦ синхронизирующая программа — подпрограмма, которая отыскивает следу- ющее событие в списке событий и затем переводит часы модельного време- ни на время возникновения этого события;
1.3. Дискретно-событийное моделирование 29 ♦ программа обработки событий — подпрограмма, обновляющая состояние сис- темы, когда происходит событие определенного типа (для каждого типа со- бытий существует отдельная программа обработки событий); ♦ библиотечные программы — набор подпрограмм, применяемых для генера- ции случайных наблюдений из распределений вероятностей, которые были определены как часть имитационной модели; ♦ генератор отчетов — подпрограмма, которая считывает оценки (со стати- стических счетчиков) критериев оценки работы и выдает отчет по оконча- нии моделирования; ♦ основная программа — подпрограмма, которая вызывает синхронизирующую программу, для того чтобы определить следующее событие, а затем переда- ет управление соответствующей событийной программе с целью обеспече- ния заданного обновления состояния системы. Основная программа может также контролировать необходимость прекращения моделирования и вызы- вать генератор отчетов по его окончании. Логические отношения (поток управления) между данными компонентами по- казаны на рис. 1.3. Моделирование начинается в момент времени, равный 0. При этом основная программа вызывает программу инициализации, которая устанав- ливает часы модельного времени в 0, затем задает исходное состояние системы, устанавливает в исходное состояние статистические счетчики и инициализирует список событий. После возвращения управления основной программе она вызы- вает синхронизирующую программу, чтобы определить тип ближайшерособытия. Если следующим должно произойти событие типа i, часы имитационного времени переводятся на время возникновения события типа i, и управление возвращается основной программе. Основная программа активизирует программу обработки со- бытий i, при этом происходят три типа действий: первое — обновляется состояние системы в соответствии с произошедшим событием типа i; второе — собирается информация о критериях оценки работы системы путем обновления статистиче- ских счетчиков; третье — генерируется время возникновения будущих событий, и информация о нем добавляется в список событий. Часто при определении вре- мени будущих событий возникает необходимость сгенерировать случайные на- блюдения из распределения вероятностей; такое наблюдение будем называть слу- чайной величиной. После полного завершения обработки в программе обработки событий i или в основной программе выполняется проверка с целью определить (относительно некоторого условия останова), следует ли прервать моделирова- ние. И если моделирование должно быть завершено, из основной программы вы- зывается генератор отчета, для того чтобы считать оценки (со статических счетчи- ков) необходимых критериев работы и создать отчет. Если время прекращения моделирования еще не настало, управление снова передается основной програм- ме, и цикл «основная программа—синхронизирующая программа—основная прог- рамма-программа обработки событий—проверка условия прекращения имита- ции» повторяется до тех пор, пока условие останова не будет выполнено. Прежде чем завершить этот раздел, следует сказать несколько слов о состоя- нии системы. Как уже говорилось в разделе 1.2, система — это четко определенная
30 Глава 1. Основы имитационного моделирования совокупность объектов. Объекты характеризуются с помощью значений, именуе- мых атрибутами. В дискретно-событийной имитационной модели эти атрибуты являются частью состояния системы. Объекты с каким-либо общим свойством часто объединяются в списки (в файлы, либо наборы). Для каждого объекта суще- ствует запись в списке, состоящем из атрибутов объектов. Порядок размещения объектов в списке определяется некоторым правилом. (Эффективные подходы к сохранению списков записей рассматриваются в главе 2.) В системе, описанной в примерах 1.1 и 1.2, такими объектами являются устройство обслуживания и тре- бования. Здесь устройство имеет атрибут «состояние устройства» (занято или свободно), а требования, ожидающие в очереди, — атрибут «время поступления». (Число требований в очереди можно также считать атрибутом устройства.) Как будет показано в разделе 1.4, требования объединяются в списки. Программа инициализации 1. Установка часов модельного времени в О 2. Задание исходного состояния системы и установка в исходное состояние статистических счетчиков 3. Инициализация списка событий Прогоамма обработки событий i Рис. 1.3. Поток управления в механизме продвижения времени от события к событию
1.4. Моделирование системы массового обслуживания 31 Организация и функционирование дискретно-событийной моделирующей про- граммы, в которой применяется механизм продвижения времени от события к со- бытию, довольно типичны, если эта программа написана на универсальном языке (например, FORTRAN или С). Такой подход к имитационному моделированию называется планированием событий, поскольку время будущих событий явно ука- зано в модели и запланировано в модельном будущем. Существует альтернатив- ный подход к имитационному моделированию, именуемый процессным подходом. При этом моделирование рассматривается с точки зрения отдельных объектов, участвующих в нем, и разработанный код описывает «опыт» отдельного «типич- ного» объекта по мере его «перемещения» по системе. Для разработки такого рода имитационных моделей требуется специальное программное обеспечение имита- ционного моделирования (о чем пойдет речь в главе 3). Даже при использовании процессного подхода моделирование фактически выполняется вне нашего поля зрения — как часть представленной выше логики планирования событий. 1.4. Моделирование системы массового обслуживания с одним устройством обслуживания В настоящем разделе детально рассматривается моделирование системы массового обслуживания с одним устройством обслуживания. Это парикмахерская с одним работником. Хотя такая система в сравнении с теми, которые обычно требуют мо- делирования, кажется очень простой, она все же довольно показательна. В разделе 1.4.1 описывается интересующая нас система и более конкретно оп- ределяются задачи. В разделе 1.4.2 объясняется, как моделировать такую систему, при этом показаны схемы моделируемой системы после возникновения каждого события. В разделе 1.4.3 освещается организация модели, не зависящая от языка ее реализации, а в разделах 1.4.4 и 1.4.5 рассматривается код на языках FORTRAN и С. Результаты моделирования описываются в разделе 1.4.6, а в разделе 1.4.7 условие останова заменяется другим распространенным способом окончания мо- делирования. В разделе 1.4.8 дано краткое описание техники определения и упро- щения структуры событий и переменных имитационной модели. 1.4.1. Постановка задачи Рассмотрим систему массового обслуживания с одним устройством (рис. 1.4). В этой системе интервалы времени между поступлением требований Аь А2,... явля- ются независимыми и одинаково распределенными случз&ными. величинами. («Оди- наково распределенные» означает, что интервалы времени между поступлением требований имеют одинаковое распределение вероятностей.) Когда требование поступает, а устройство свободно, обслуживание начинается немедленно. Время обслуживания 51( 52,... следующих требований представлено независимыми оди- наково распределенными случайными величинами, на которые не влияют интерва- лы времени обслуживания. Если при поступлении требования устройство занято,
32 Глава 1. Основы имитационного моделирования требование становится в очередь. По завершении обслуживания требования уст- ройство выбирает требование из очереди (если такая имеется) по принципу FIFO (First-In, First-Out — «первым пришел — первым обслужен»). (Другие дисципли- ны обслуживания рассматриваются в приложении 1Б.) Уходящее требование Устройство обслуживания Обслуживаемое требование Требование в очереди Поступившее требование Рис. 1.4. Система массового обслуживания с одним устройством обслуживания Моделирование начинается с состояния «пустая и незанятая», то есть когда в системе нет требований, и устройство обслуживания свободно. С момента вре- мени, равного 0, мы начинаем ожидать поступление первого требования. Скорее всего, это произойдет по истечении первого интервала времени между поступле- ниями а не в момент времени, равный 0 (это было бы возможное, но особое предположение моделирования). Мы будем продолжать моделирование до тех пор, пока для определенного числа требований п не истечет время задержки в очереди, то есть моделирование прекратится, когда n-е требование будет обслу- жено. Следовательно, время завершения моделирования является случайной вели- чиной, которая зависит от наблюдаемых значений случайных переменных, обоз- начающих время между поступлениями требований и время обслуживания.
1.4. Моделирование системы массового обслуживания 33 Для того чтобы определить критерии оценки работы системы, обратимся к трем параметрам их характеристики. Прежде всего найдем ожидаемую среднюю за- держку в очереди для каждого из п требований, завершивших свое ожидание во время моделирования; эту величину обозначим как d(ri). Слово «ожидаемая» в оп- ределении d(n) означает, что при заданном прогоне имитационной модели (или при заданном прогоне действительной системы, которую представляет имитаци- онная модель) средняя задержка, наблюдаемая для n-го числа требований, зависит от полученных наблюдений случайных переменных, обозначающих время между поступлениями требований и время обслуживания. При следующем прогоне ими- тационной модели (или на второй день — с реальной системой) требования будут прибывать в другие моменты времени, и необходимое время обслуживания также будет иным. Это приведет к получению другого среднего значения задержки для п требований. Следовательно, при прогоне имитационной модели среднее значение задержки требования в очереди также считается случайной величиной. Нам же необходимо установить ожидаемое значение случайной величины. Согласно од- ной интерпретации d(n) является средним огромного (фактически бесконечного) числа средних задержек в очереди n-го числа требований. После одного прогона имитационной модели, при котором зафиксированы задержки требований в оче- реди Д, D2,.... D„ очевидной оценкой J(n) является формула представляющая среднее время Д n-го числа задержек, которое наблюдалось при моделировании (поэтому «(и)1 может быть также обозначено как D (п)). Следует отметить, что говоря о времени задержки, мы не исключаем возможности того, что оно будет равно 0 в случае поступления требования в момент, когда система нахо- дится в состоянии незанятости (в этой модели нам точно известно, что Д = 0). Время задержки, равное 0, учитывается в среднем, поскольку большое количество таких случаев, когда время задержки равно 0, указывает на то, что система пред- оставляет надлежащее обслуживание, и наши выходные оценки критериев работы должны это отражать. Одна из причин того, что мы берем среднее значение задер- жек Д, а не рассматриваем каждую из них по отдельности, состоит в том, что их распределение не будет одинаковым (например, Д - 0, но Д может иметь поло- жительное значение), и среднее является единым показателем времени задержки всех требований в очереди. В данном контексте речь не идет об обычном «сред- нем» базовой статистики, так как отдельные слагаемые не являются независимы- ми случайными наблюдениями одного и того же распределения. Также обратим внимание на то, что J(n) — это оценка, основанная на выборке размера «1», по- скольку мы выполняем только один полный прогон имитационной модели. Из элементарной статистики нам известно, что выборка размера 1 не имеет большой статистической ценности. (К этому вопросу вернемся в главах 9-12.) „ Ожидаемая средняя задержка в очереди d(ri) несет информацию об оценке кри- териев работы системы с точки зрения требований, однако для управления такой 1 В этой книге символ «А> над буквой указывает на оценку. — Примеч. ред.
34 Глава 1. Основы имитационного моделирования системой может понадобиться совершенно иная информация. Поскольку созда- ваемые реальные имитационные модели в большинстве своем очень сложны, а для их прогона может потребоваться немало времени, мы, как правило, обращаемся ко многим выходным оценкам критериев работы, описывая различные аспекты по- ведения системы. Одним из таких критериев в нашей простой системе является ожидаемое среднее число требований в очереди (без учета уже находящихся на обслуживании), обозначенное как q(n), где п указывает, что среднее вычисляется за период времени, который необходим для наблюдения n-го числа задержек, определяющих правило останова. Это среднее отличается от среднего времени задержки требований в очереди, поскольку оно берется, скорее, в отношении кон- кретного (непрерывного) периода времени, нежели в отношении требований (ко- торые дискретны). Таким образом, нам нужно определить среднее по времени число требований в очереди. С этой целью число требований в момент времени t (для любого вещественного числа t >0) мы обозначим как Q(t), а время, необходи- мое для наблюдения n-го числа задержек в очереди, как Т(п). Тогда для любого времени t между 0 и Т(п) значение Q(t) будет неотрицательным целым числом. Да- лее, пусть pi - ожидаемая часть (имеющая значение от 0 до 1) времени, когда Q(t) равно i, тогда приемлемым определением q(n) будет ?(«) = £ 1р{. i=0 Таким образом, q(n) является взвешенным средним возможных значений г для очереди длиной Q(t), при этом весовые коэффициенты являются ожидаемой час- тью времени, которое расходуется на каждую из своих возможных длин очереди. Чтобы определить <?(н), заменяем значения pt их оценками и получаем §(и) = £гЛ. (11) i=0 где является частью времени, измеряемой (а не ожидаемой) в процессе модели- рования, когда число требований в очереди равнялось i. Однако для вычисления q (и) удобнее переписать формулу, используя некоторые геометрические методы. Пусть Ti будет суммарным временем в течение моделирования очереди длиной i, тогда Т(п) '=T0 + Tl + T2 + ...npi = 7]/Т(п). В результате приведенное выше уравне- ние (1.1) мы можем переписать как СО У.1Т, <t2) На рис. 1.5 показано возможное течение времени или реализация Q(t) в систе- ме при условии, что п “ 6 (на данном этапе не следует учитывать штриховку пря- моугольников). Требования прибывают в моменты времени, равные 0,4; 1,6; 2,1; 3,8; 4,0; 5,6; 5,8 и 7,2. Уход требований (завершение обслуживания) происходит в моменты времени, равные 2,4; 3,1; 3,3; 4,9 и 8,6. В момент времени, когда Т(6) = = 8,6, моделирование завершается. Обращаясь к рис. 1.5, имейте в виду, что Q(t) не учитывает требование, находя- щееся на обслуживании (если таковое есть), и в период времени между 0,4 и 1,6 очередь будет отсутствовать (Q(0“ 0), хотя при этом одно требование находится
1.4. Моделирование системы массового обслуживания 35 на обслуживании. То же самое касается периодов времени с 3,1 по 3,3, с 3,8 по 4,0 и с 4,9 по 5,6. Но в период времени с 3,1 по 3,3 требования отсутствуют вообще, исистема находится в состоянии незанятости, как и в период времени с 0 по 0,4. Q(0 Рис. 1.5. Q(t), время поступления и время ухода в реализации системы массового обслуживания с одним устройством обслуживания Чтобы вычислить значение q(ri), вначале необходимо вычислить значения Tit которые, прибегнув к помощи рис. 1.5, можно трактовать как интервалы времени (иногда отделенные друг от друга некоторым промежутком времени), в течение которых Q(t) равно 0, 1, 2 и т. д.: Т0“ (1,6 - 0,0) + (4,0 - 3,1) + (5,6 - 4,9) = 3,2; 'Л = (2,1 - 1,6) + (3,1 - 2,4) + (4,9 - 4,0) + (5,8 - 5,6) - 2,3; Т2 = (2,4 - 2,1) + (7,2 - 5,8) - 1,7; Т3 - (8,6 - 7,2) = 1,4. (Т, - 0, когда i >4, поскольку в данной реализации очередь никогда не достигает та- кой длины.) Числитель в уравнении (1.2) JiTj =(0х 3,2)+(1х2,3) + (2х 1,7) + (Зх 1,4) = 9,9. (1.3) i-0 Отсюда оценка среднего по времени числа требований в очереди при данном прогоне имитационной модели q(6) - 9,9/8,6 - 1,15. Каждый из не равных нулю членов в левой части уравнения (1.3) соответствует заштрихованной площади на рис. 1.5:1x2,3 соответствует площади, заштрихованной диагональными линия- ми (в четырех прямоугольниках), 2x1,7 — площади, заштрихованной перекрест- ными диагональными линиями (в двух прямоугольниках), 3x1,4 — затемненной
36 Глава 1. Основы имитационного моделирования площади (один прямоугольник). Иными словами, суммирование в числителе урав- нения (1.2) представляет накопленную площадь под кривой Q(t) между началом и концом моделирования. С учетом того, что площадь под кривой является инте- гралом, мы можем написать следующее уравнение: Д») IX = i=0 о а оценка q (и) может быть выражена как Т(п) (1-4) Выражения (1.4) и (1.2) эквивалентны для q(n), однако (1.4) предпочтитель- нее, поскольку интеграл в нем может быть рассчитан как накопление простых пло- щадей прямоугольников, возникающих в течение времени моделирования, что ме- нее удобно при явном суммировании по формуле (1.2). Более того, выражение (1.4) предполагает среднее для непрерывного Q(t), так как операцию интегрирова- ния можно только приблизительно считать непрерывным суммированием. Третий выходной критерий оценки работы системы — показатель занятости устройства. Ожидаемый коэффициент использования устройства является отно- шением времени, когда устройство находится в состоянии занятости, ко времени моделирования (от 0 до Т(п)) и, следовательно, является числом между 0 и 1. Обо- значим его как u(n). При одной реализации моделирования оценкой и(п) является й(п), равная измеряемому отношению времени, когда устройство находится в со- стоянии занятости, ко времени моделирования. Теперь й(п) можно вычислить не- посредственно при моделировании, отметив моменты времени, когда меняются состояния устройства (со свободного на занятое, и наоборот), а затем выполнив соответствующие действия с вычитанием и делением. Однако такую величину удобнее рассматривать как среднее для непрерывного времени, подобное средней длине очереди, определив функцию занятости как B(t\ = если УС1Р°йство занятов момент времени t; ' ' ~ [0 если устройство свободное момент времени I. Таким образом, коэффициент й(п) можно выразить как часть времени, когда B(t) = 1. На рис. 1.6 изображен график функции B(t) для реализации процесса мо- делирования, использованного на рис. 1.5. В этом случае получаем (3,3-0,4) + (8,6-3,8) _7Д _090 (15) 0,0 0,0 Результат указывает на то, что в ходе моделирования 90 % времени устройство за- нято. Но числитель в формуле (1.5) может также рассматриваться как площадь под функцией B(t), так как высота B(t) всегда равна либо 0, либо 1. Следовательно, Т(п) jB(t)dt <t6)
1.4. Моделирование системы массового обслуживания 37 и мы снова видим, что й(п) является для непрерывной функции B(t) средним, со- ответствующим нашему понятию занятости. Как и в случае с q (п), коэффициент и (и) удобнее выражать через интеграл уравнения (1.6), поскольку в ходе модели- рования интеграл функции B(t) легче вычислять путем сложения площадей пря- моугольников. Для многих случаев моделирования, включающих разные устрой- ства обслуживания, статистика коэффициента использования дает достаточно информации для решения проблем нехватки ресурсов (коэффициент использова- ния, равный 100 %, связан с большими перегрузками показателей продвижения очереди) или их избытка (низкая занятость). Это особенно касается случаев, ког- да устройствами обслуживания являются такие дорогие приборы, как роботы про- изводственных систем или большие компьютеры (мэйнфреймы), задействован- ные в операциях по обработке данных. B(t) Рис. 1.6. B(t), время поступления и время ухода в реализации системы массового обслуживания с одним устройством обслуживания (та же реализация, что на рис. 1.5) Итак, три критерия оценки работы системы включают: среднюю задержку в оче- реди <?(и); среднее по времени число требований в очереди g(n); часть времени, когда устройство обслуживания находится в состоянии занятости й(п). Средняя задержка требования в очереди является статистикой дискретного времени, по- скольку она определяется относительно ряда случайных переменных {О,}, кото- рые имеют индекс дискретного времени i - 1,2,.... Среднее по времени число тре- бований в очереди и часть времени, когда устройство обслуживания находится в состоянии занятости, — это примеры статистики непрерывного времени, по- скольку они определяются относительно совокупности случайных переменных {Q(t)} и {В(0} соответственно, каждая из которых индексируется по параметру не- прерывного времени t е [0, <»). (Символ е означает «содержащийся». Таким обра- эом, в этом случае t может быть любым не отрицательным вещественным числом.) Как статистика дискретного времени, так и статистика непрерывного времени
38 Глава 1. Основы имитационного моделирования часто используются в моделировании, при этом они позволяют получить не толь- ко средние показатели. Например, нам мотут понадобиться значения либо макси- мальной наблюдаемой задержки в очереди (статистика дискретного времени), ли- бо части времени в ходе моделирования, когда в очереди насчитывалось, как минимум, пять требований (статистика непрерывного времени). События в этой системе: поступление требования и его уход (после завер- шения обслуживания). Переменными состояния, необходимыми для оценки d(n), q(n) и и(п), являются состояние устройства обслуживания (0 — состояние незаня- тости, 1 — состояние занятости); число требований в очереди; время поступления каждого требования, находящегося на данный момент в очереди (представлено в виде списка); время последнего события. Время последнего события, опреде- ленное как e^i, если <, t < et (где t — текущее время при моделировании), требуется для вычисления ширины прямоугольников при суммировании площа- дей в оценках q(n) и и(п). 1.4.2. Интуитивное объяснение Для объяснения процесса моделирования системы массового обслуживания с од- ним устройством обслуживания рассмотрим вначале, как имитационная модель будет представлена в компьютере в моменты времени е0 = 0 и е1( е2,е13, когда происходит 13 последовательных событий, необходимых для наблюдения задан- ного числа задержек требований в очереди п - 6. Для удобства примем, что время между поступлениями и время обслуживания требований равны Ai =0,4; А2 =1,2; Л3 =0,5; Л4 =1,7; Л5 =0,2; Л6 =1,6; Л7 =0,2; Л8 =1,4; Л9 =1,9, ...; Sj =2,0; S2 =0,7; 53 =0,2; S4 =1,1; S5 =3,7; 56 =0,6, ... Так, между моментом времени 0 и моментом поступления первого требования проходит 0,4 единицы времени, между поступлением первого и второго требова- ний — 1,2 единицы времени и т. д. Время, необходимое для обслуживания первого требования, равно 2 единицам времени и т. д. Нет необходимости задавать сами единицы времени (минуты, часы и т. п.), необходимо только, чтобы все значения времени выражались в одних и тех же единицах. В реальном моделировании (см. разделы 1.4.4 и 1.4.5) значения Л( и генерируются из соответствующих им распределений вероятностей (по мере необходимости) в процессе моделирования. Приведенные числовые значения Л, и выбраны так, чтобы можно было сгенери- ровать реализацию моделируемой системы, изображенную на рис. 1.5 и 1.6, демон- стрирующих процессы Q(t) и B(t). На рис. 1.7 показаны схемы самой системы и ее компьютерного представления в каждый из моментов времени еь = 0, е, - 0,4,..., е13 = 8,6. На схемах системы квад- раты — это устройства обслуживания, а круги — требования; число в круге — время поступления требования. На схемах компьютерного представления системы пока- заны значения переменных, которые получены после завершения обработки дан- ного события. Рассмотрим, как меняется компьютерное представление в моменты возникновения событий.
1.4. Моделирование системы массового обслуживания 39 Система Время поступления - 0,4 Компьютерное представление Рис. 1.7. Схемы системы и ее компьютерного представления в момент времени 0 и во все 13 моментов времени возникновения последующих событий: а — инициализация; б — событие 1 (поступление требования 1) в — событие 2 (поступление требования 2)
40 Глава 1. Основы имитационного моделирования Рис. 1.7. Схемы системы и ее компьютерного представления в момент времени О и во все 13 моментов времени возникновения последующих событий (продолжение): г — событие 3 (поступление требования 3); д — событие 4 (уход требования 1); е — событие 5 (уход требования 2)
1.4. Моделирование системы массового обслуживания 41 Время поступления - 3,3 Система Ж Рис. 1.7. Схемы системы и ее компьютерного представления в момент времени О и во все 13 моментов времени возникновения последующих событий (продолжение)-, ж — событие 6 (уход требования 3); з — событие 7 (поступление требования 4); и — событие 8
42 Глава 1. Основы имитационного моделирования Рис. 1.7. Схемы системы и ее компьютерного представления в момент времени О и во все 13 моментов времени возникновения последующих событий (продолжение)', к — событие 9; л — событие 10; м — событие 11
1.4. Моделирование системы массового обслуживания 43 Рис. 1.7. Схемы системы и ее компьютерного представления в момент времени О и во все 13 моментов времени возникновения последующих событий {продолжение)-. н — событие 12; о — событие 13 Инициализация {t “ 0). Моделирование начинается с вызова основной програм- мой протраммы инициализации. Приступая к моделированию, мы предположили, что в системе изначально не содержались никакие требования и устройство обслу- живания было свободно, как показано на схеме системы (рис. 1.7, а). Переменные состояния модели устанавливаются в исходную позицию: состояние устройства обслуживания равно 0 (0 используется, чтобы представить состояние незанятости, 1 - состояние занятости устройства, аналогично определению функции В(0), И число требований в очереди также равно 0. Для хранения значений времени поступления требований, находящихся на данный момент в очереди, используется одномерный массив. Этот массив изначально пуст, но в ходе моделирования его размер будет то увеличиваться, то уменьшаться. Время последнего события уста- навливается в исходное состояние, равное 0, для того, чтобы время первого собы- тия (когда оно будет использоваться) имело правильное значение. Часы модель- ного времени устанавливаются в 0, а список событий, представляющий время
44 Глава 1. Основы имитационного моделирования следующего возникновения каждого типа событий, инициализируется таким об- разом. Время поступления первого требования равно 0 + At = 0,4 и обозначается как «А», следующее в списке событий. Поскольку в этот момент требований на об- служивании нет, не имеет смысла говорить о времени следующего ухода (по спис- ку событий «D»), и мы знаем, что первым событием станет поступление первого требования в момент времени, равный 0,4. Для продолжения моделирования из списка событий выбирается наименьшее значение, определяющее следующее со- бытие. Таким образом, запланировав уход на момент времени » (или очень боль- шое число в компьютерной программе), мы отменяем учет события ухода и делаем следующим событием поступление. (Такой подход иногда именуется поглощением события ухода.) После этого четыре статистических счетчика устанавливаются в 0. По завершении инициализации управление возвращается основной програм- ме, которая вызывает синхронизирующую программу, чтобы та определила сле- дующее событие. Поскольку 0,4 < оо, следующим событием будет поступление требования в момент времени 0,4, а синхронизирующая программа переведет часы на это время, после чего снова передаст управление основной программе с ин- формацией о том, что следующим событием станет поступление. Поступление требования 1 (£ = 0,4). В момент времени 0,4 основная программа передает управление программе поступления и та выполняет обработку поступле- ния первого требования. На рис. 1.7, б показана система и ее компьютерное пред- ставление после внесения всех изменений, которых требовала обработка поступ- ления. Поскольку при поступлении данного требования устройство находилось в состоянии незанятости (состояние устройства равно 0), его обслуживание начи- нается немедленно, и задержка в очереди составляет D\ = 0 (однако такое время де- йствительно рассчитывается как задержка). Состояние устройства обслуживания установлено на значение 1, что указывает на занятость устройства, тогда как оче- редь все еще пуста. Часы были переведены на текущее время 0,4, а список событий обновляется с учетом поступления этого требования: следующее поступление со- стоится через А2 - 1,2 единицы времени с текущего момента, в момент времени, равный 0,4 + 1,2 = 1,6, а следующий уход (завершение обслуживания прибывшего на данный момент требования) — через = 2,0 единицы времени с текущего мо- мента, в момент времени, равный 0,4 + 2 = 2,4. Число задержек в очереди увеличи- вается на 1 (когда число задержек достигает п = 6, моделирование заканчивается) и Dt = 0 добавляется к общей задержке (которая все еще равна 0). Значение площа- ди под Q(t) обновлено добавлением в произведение предыдущего значения (то есть к уровню, который она имела между последним событием и текущим момен- том) времени Q(t) (в этом случае 0) длительности интервала времени от последне- го события до текущего момента, тогда время последнего события t - 0,4 - 0. Обра- тите внимание, что время последнего события, используемого здесь, имеет старое значение (0), пока эта программа обработки событий не присвоит ему новое значе- ние (0,4). Точно так же площадь B(t) обновлена путем добавления в произведение предыдущего значения (0) времени длительности интервала времени, тфошедше- го с последнего события. (Вновь посмотрите на рис. 1.5 и 1.6 и проследите за на- коплением площадей под Q(t) и B(t).) В конечном итоге время последнего собы- тия увеличивается до текущего времени (0,4), и управление снова передается
1.4. Моделирование системы массового обслуживания 45 основной программе. Она вызывает синхронизирующую программу, которая про- сматривает список событий и определяет по наименьшему значению, что следую- щим событием станет поступление еще одного требования в момент времени 1,6. Программа обновляет часы в соответствии с этим значением и снова передает управление основной программе вместе с информацией о том, что следующим со- бытием будет поступление. Поступление требования 2 (£ = 1,6). На этот раз вновь действует программа поступления. На рис. 1.7, в показана система и ее компьютерное представление после внесения всех изменений, которых требовала обработка события поступ- ления. Поскольку при поступлении этого требования устройство находится в сос- тоянии занятости (состояние устройства равно 1), оно должно стать первым в оче- реди. Время его поступления сохраняется в первой ячейке массива, а переменная числа требований в очереди меняется на 1. Время следующего поступления в списке событий увеличивается на величину А3 = 0,5 единиц времени с текущего момента и становится равным 1,6 + 0,5 = 2,1; время следующего ухода не меняется, так как его значение 2,4 является временем ухода требования 1, все еще находя- щегося на обслуживании. Поскольку мы не наблюдаем окончания какого-либо ожидания в очереди, число задержек в очереди и общая продолжительность задер- жек не меняются. Площадь под Q(t) увеличивается на 0 (предыдущее значение Q(t)), время, прошедшее с последнего события, равно 1,6 - 0,4 = 1,2. Площадь под B(t) увеличивается на 1 (предыдущее значение B(t)), неизменным остается ин- тервал времени 1,2. После обновления времени последнего события на текущее управление снова передается основной программе, а затем синхронизирующей программе, определяющей, что следующим событием будет поступление требо- вания в момент времени 2,1. Поступление требования 3 (£ = 2,1). Снова вызывается программа поступления (рис. 1.7, г). Устройство обслуживания остается занятым, и очередь увеличивается еще на одно требование, время его поступления сохраняется во второй ячейке массива. Время следующего поступления обновляется на t + А4 = 2,1 + 1,7 - 3,8, а время следующего ухода все еще остается неизменным, так как мы ожидаем завершения обслуживания требования 1. Значения счетчиков задержки остаются неизменными, так как ни одно ожидание в очереди еще не закончилось, а к зна- чениям двух накопителей площади добавляется 1 (предыдущее значение Q(t) nB(ty), время, прошедшее после последнего события, равно 2,1 - 1,6 = 0,5. После обновления времени последнего события на текущее время управление вновь пе- редается основной программе, затем вызывается синхронизирующая программа, которая просматривает список событий и определяет, что следующим событием будет уход требования в момент времени 2,4, и обновляет значение часов на это время t - 2,4. Уход требования 1 (£ ш 2,4). Теперь основная программа вызывает программу ухода (рис. 1.7, Э). Устройство продолжает оставаться занятым, так как требова- ние 2 переходит с первого места в очереди на обслуживание. Очередь уменьшается на единицу, а массив времени поступления передвигается на одну ячейку, показы- вая тем самым, что требование 3 теперь является первым в очереди. Требованию 2,
46 Глава 1. Основы имитационного моделирования которое поступает на обслуживание, нужно будет S2 = 0,7 единицы времени, поэто- му время следующего ухода (то есть ухода требования 2) в списке событий увели- чивается на S2 единиц времени по сравнению с текущим временем, то есть оно бу- дет равно 2,4 + 0,7 = 3,1. Время следующего поступления (требования 4) остается неизменным, поскольку оно определено раньше при поступлении требования 3, и мы все еще находимся в ожидании этого события. Статистика задержек обнов- ляется, поскольку в этот момент требование 2 поступает на обслуживание и закан- чивает свое ожидание в очереди. В данном случае мы воспользуемся массивом времени поступления и вычислим продолжительность задержки требования 2 в очереди следующим образом: текущее время минус время поступления требова- ния 2, или Dl - 2,4 - 1,6 = 0,8. (Значение 1,6 хранилось в первой ячейке массива вре- мени поступления до его обновления, поэтому приведенное выше вычисление дол- жно выполняться до передвижения элементов массива.) Статистика площадей обновляется следующим образом: для Q(t) добавляется 2 х (2,4 - 2,1) (здесь ис- пользовано предыдущее значение Q(t)); для B(t) добавляется 1 х (2,4 - 2,1). Время последнего события обновляется, а управление снова предается основной про- грамме, после чего синхронизирующая программа определяет, что следующим со- бытием будет уход требования в момент времени 3,1. Уход требования 2 (£ “ 3,1). Изменения, происходящие при этом событии, подоб- ны изменениям, возникающим при уходе требования 1 в момент времени 2,4. Обратите внимание, что мы наблюдаем еще одну задержку в очереди и что после этого события очередь опять остается пустой, а устройство занятым. Уход требования 3 (t “ 3,3). Изменения, происходящие при этом событии, снова окажутся подобны изменениям, сопровождающим уход двух предыдущих требо- ваний. В данном случае будет только одно немаловажное исключение — поскольку очередь теперь пуста, устройство обслуживания становится свободным. Нам при- дется установить время следующего ухода на оо, поскольку система выглядит те- перь так же, как и в момент времени 0, а мы стремимся к тому, чтобы следующим событием стало поступление требования 4. Поступление требования 4 (f “ 3,8). Поскольку это требование застает устрой- ство обслуживания свободным, его задержка в очереди равна 0 (то есть 0). По- этому в данном случае изменения подобны тем, что произошли при поступлении требования 1 в момент времени 0,4. Оставшиеся шесть событий изображены на рис. 1.7, и-о. Следует просмотреть их и убедиться, что стало понятно, как получены соответствующие значения пере- менных и массивов, а в этом могут помочь графики Q(t) и B(t) на рис. 1.5 и 1.6. С уходом требования 5 в момент времени t — 8,6 требование 6 покидает очередь и поступает на обслуживание. Теперь число задержек в очереди достигает 6 (за- данное значение п), и моделирование заканчивается. В этот момент основная про- грамма вызывает генератор отчетов, чтобы он вычислил выходные показатели (J(6) = 5,7/6 = 0,95; q(6) - 9,9/8,6 - 1,15; 4(6) - 7,7/8,6 - 0,90). Пример, иллюстрирующий логику моделирования, требует комментариев. ♦ Вероятно, одним из ключевых элементов динамики моделирования является взаимодействие между часами модельного времени и списком событий. Часы
1.4. Моделирование системы массового обслуживания 47 переводятся на время следующего события, которое определяется посредст- вом сканирования списка событий в конце обработки каждого события и на- хождения в нем наименьшего (то есть следующего) времени события. Таким образом осуществляется движение моделирования во времени. ♦ Пока обрабатывается событие, модельное время не меняется. Хотя для модели время не меняется, при обновлении значений переменных и статистических счет- чиков следует придерживаться соответствующего порядка. Так, вначале нужно обновить счетчик площади под Q(t), а затем число требований в очереди, а не наоборот, поскольку высота прямоугольника, которая должна быть использова- на, является предыдущим значением Q(t) (прежде чем будет выполнено обнов- ление £>(£)). Нельзя также обновлять время последнего события до обновления накопителей площади. Если, скажем, при уходе требования изменить список очереди до вычисления времени задержки в очереди первого требования, мо- жет возникнуть еще один тип ошибки, поскольку время поступления требования будет потеряно. ♦ Иногда возникают непредвиденные обстоятельства, которые, тем не менее, дол- жны быть учтены. К примеру, не следует забывать, что после ухода требования очередь может остаться пустой, и это приведет к незанятости устройства об- служивания, из чего следует, что учет события ухода требования вновь должен быть отменен. Условия останова также бывают более сложными, чем может показаться на первый взгляд. В приведенном выше примере моделирование остановилось, казалось бы, обычным способом после ухода одного требования, что позволило очередному требованию перейти на обслуживание и завершить необходимую последнюю задержку в очереди. Но вместо этого моделирование могло бы завершиться и поступлением требования. Каким образом? 4 В некоторых имитационных моделях может оказаться два (и более) элемента в списке событий, связанных с наименьшим временем1. Во избежание таких на- рушений временной связи должно быть включено решающее правило (так про- исходит при моделировании системы управления запасами, о чем идет речь в разделе 1.5). Решающее правило может повлиять на результаты моделирова- ния, поэтому его следует выбирать в соответствии с тем, как моделируется система. Однако во многих случаях при моделировании вероятность возник- новения связей можно игнорировать, поскольку использование непрерывных случайных переменных делает их возникновение событием с нулевой вероят- ностью. В описанной выше модели, например, распределение времени поступ- ления и времени обслуживания является непрерывным, следовательно, вре- менная связь в списке событий имеет нулевую вероятность возникновения (хо- тя все же может возникнуть при компьютерном моделировании в связи с ко- нечной точностью в представлении вещественных чисел). Приведенное выше упражнение демонстрирует, какие изменения и структуры данных задействованы в дискретно-событийном моделировании с точки зрения планирования событий. В нем содержатся все наиболее важные идеи, необходи- мые для осуществления моделирования более сложных систем такого типа. Время 1 Речь идет об одновременных событиях, которые должны происходить в одно и то же модельное время, например события окончания обслуживания требования и поступления нового. — Примеч. ред.
48 Глава 1. Основы имитационного моделирования между поступлениями и время обслуживания получено из таблицы случайных чисел определенного типа, созданной для отражения нужных распределений ве- роятностей. Результатом могло стать так называемое моделирование вручную, ко- торое может иметь любую продолжительность. Однако очевидно, что такое мо- делирование очень утомительно, поэтому мы хотим обратиться к применению компьютеров для выполнения арифметических операций и учета использования системных ресурсов, вовлеченных в более длительные или сложные имитации. 1.4.3. Организация и логика программы В этом разделе мы определим компоненты, необходимые для моделирования сис- темы массового обслуживании с одним устройством обслуживания на языках FORTRAN (см. раздел 1.4.4) и С (см. раздел 1.4.5). Организация и логика про- граммы, описанные в данном разделе, относятся к обоим языкам, таким образом, далее можно изучить только один из разделов — 1.4.4 или 1.4.5, что зависит от языковых предпочтений. На данном этапе можно назвать несколько причин, по которым следует при- бегнуть к таким универсальным языкам программирования, как FORTRAN или С (вместо того чтобы обратиться к более мощному программному обеспечению вы- сокого уровня). ♦ Научившись моделировать на универсальном языке, каждой детали которого нужно уделять внимание, можно лучше понимать действие моделей, следова- тельно, останется меньше шансов совершать концептуальные ошибки при пе- реходе к программному обеспечению высокого уровня. ♦ Несмотря на то что сейчас существует очень надежное и мощное программное обеспечение моделирования (см. главу 3), в случае необходимости подробного воспроизведения специальной логики сложных систем некоторые части про- грамм для них приходится создавать на универсальном языке. ♦ Универсальные языки моделирования широко доступны, и на них до сих пор пишутся целые имитационные модели. Мы не ставим своей целью подробно рассматривать в данной книге какое-либо конкретное программное обеспечение моделирования (обзор некоторых подоб- ных пакетов будет сделан в главе 3). Те знания, которые можно получить при зна- комстве с нашим более обобщенным подходом и примером моделирования систем в этой и других главах, облегчат изучение специализированного программного обеспечения моделирования. Систему массового обслуживания с одним устройст- вом обслуживания, которую мы будем моделировать в двух следующих разделах, отличают от модели предыдущего раздела два следующих фактора. ♦ Моделирование завершится, когда в очереди будет определено число задержек, п “ 1000, а не п = 6, что поможет собрать больше данных (а также продемон- стрирует возможности компьютера, ведь в предыдущем разделе нам хватило терпения вручную определить только шесть задержек). Следует отметить, что такое изменение правила останова меняет и саму модель, потому как выходные показатели определяются относительно правила останова, то есть меняется значение п в J(n), g(n) и u(n), которые оцениваются.
1.4. Моделирование системы массового обслуживания 49 ♦ Время между поступлениями и время обслуживания теперь будут моделиро- ваться по экспоненциальным распределениям как независимые случайные ве- личины со средним временем 1 мин для интервалов между поступлениями и 0,5 мин - для времени обслуживания. Экспоненциальное распределение со средним значением р (любое положительное вещественное число) является непрерывным, с плотностью распределения вероятностей f(x) = i е~*/₽ для х £ 0. (Дополнительные сведения о плотности распределения вероятностей, в частнос- ти об экспоненциальном распределении, вы найдете в главах 4 и 6.) Данное изменение мы вносим потому, что такие входные параметры (управляющие моделированием), как время между поступлениями и время обслуживания, преимущественно генерируются из установленных распределений (не пред- полагается, что они уже известны, как это было сделано в предыдущем разде- ле). Выбор экспоненциального распределения с упомянутыми выше частными значениями р, по существу, случаен, и к нему прибегают в первую очередь пото- му, что на компьютере легко сгенерировать экспоненциально распределенные случайные величины. В действительности допущение экспоненциально рас- пределенного времени между поступлениями часто бывает достаточно реалис- тичным, а вот принятие экспоненциально распределенного времени обслужи- вания менее правдоподобно. (В главе 6 подробно рассматриваются вопросы выбора форм и параметров распределений для моделирования входных слу- чайных переменных системы.) Система массового обслуживания с экспоненциально распределенным време- нем между поступлением требований и временем обслуживания требований обыч- но называется системой М/М/1 (о чем пойдет речь в приложении 1Б). Для создания такой модели нам нужен способ генерирования случайных вели- чин из экспоненциального распределения. Подпрограммы, использующие код на языках FORTRAN и С, действуют одинаково, на чем мы сейчас и акцентируем внимание. В первую очередь, чтобы сгенерировать величину (7, равномерно (не- прерывно) распределенную между 0 и 1, вызывается генератор случайных чисел (описанный в главе 7). Такое распределение, далее именуемое как U(0, 1), имеет плотность распределения вероятностей . [1 если 0 5x51; J} {О в противном случае. Можно без усилий показать, что вероятность, с которой случайная переменная попадает в любой подынтервал [х, х + Аг], содержащийся в интервале [0,1], равна постоянно Аг (см. раздел 6.2.2)1. Распределение U(0, 1) является фундаменталь- ным в имитационном моделировании, поскольку случайная величина из любого распределения может быть сгенерирована посредством начальной генерации од- ной или нескольких случайных величин U(0, 1) с последующим выполнением какого-либо преобразования, что подробно рассмотрено в главе 8. Получив вели- чину U, возьмем ее натуральный логарифм, умножим результат на величину р и из- 1 Вероятность попадания в подынтервал (х, х + Дх] равна длине интервала Дх. — Примеч. ред.
50 Глава 1. Основы имитационного моделирования меним знак, чтобы возвратить то, что будет предъявлено как экспоненциально распределенная случайная величина со средней величиной £, то есть ~р In U. Работа этого алгоритма основана на том, что интегральная функция распре- деления случайной величины X определена для любого вещественного х как F(x) - Р(Х<,х) (в главе 4 дан обзор основ теории вероятности). Если величина является экспоненциальной функцией X со средним значением р, то для любого вещественного х 2:0, так как плотность распределения вероятностей экспоненциального распределения при аргументе t £ 0 равна (1/Р)е^. Убедив- шись в правильности нашего метода, можно попытаться установить, что возвра- щенное им значение будет меньше или равно х (любое неотрицательное вещест- венное число) с вероятностью Е(х): P(-pln U <. х) = р(1п U 2: = = P(U^e-x^) = = Р(е~х/® 5L751) = = 1-е"ж/₽. Первая строка приведенного уравнения получена делением на -р (вспомните, что р > 0, значит, -р < 0; неравенство меняется на противоположное), вторая стро- ка — результат возведения в степень обеих частей уравнения (экспоненциальная функция является монотонно возрастающей, поэтому неравенство сохраняется), третья строка просто переписана с учетом того, что U в любом случае попадает в интервал [0,1], а последняя строка образована исходя из того, что U — это U(0,1) и интервал [е“^₽, 1] содержится в интервале [0,1]. Поскольку последняя строка — это функция Е(х) для экспоненциального распределения, мы убедились, что наш алгоритм верен. (В главе 8 объясняется, как генерируются случайные величины.) Для генерирования случайных чисел с целью получения величины U будем ис- пользовать частный метод, как это показано в программах на языках FORTRAN и С (см. листинги 7.1-7.3 в приложении 7А главы 7). Большинство компиляторов имеют встроенные генераторы случайных чисел, но многие из них не очень качест- венны, так что следует избегать их использования (см. главу 7). Программу удобно собирать из блоков нескольких подпрограмм. Это помогает сделать более понятной ее логику и взаимодействие компонентов. Кроме основной программы, программа моделирования включает подпрограммы для инициализа- ции, синхронизации, генерирования отчетов и экспоненциально распределенных случайных величин (см. рис. 1.3). Гораздо проще написать отдельную подпрограм- му для обновления статистики непрерывного времени, которая представлена на- копляемыми площадями под кривыми Q(t) и В(0. Самые важные действия произ- водятся в подпрограммах событий, имеющих следующую нумерацию. Событие _______________________________________Тип события Поступление требования в систему 1 Уход требования из системы по окончании обслуживания 2
1.4. Моделирование системы массового обслуживания 51 Поскольку логика программ обработки событий не зависит от конкретного языка, который будет использоваться, рассмотрим ее в этом разделе. На рис. 1.8 показана блок-схема поступления требования. В первую очередь генерируется время следующего поступления и помещается в список событий. Затем проверяется занятость устройства. Когда устройство заня- то, число требований в очереди увеличивается на 1, и мы проверяем, заполнена ли память, выделенная для хранения очереди (см. код в разделах 1.4.4 и 1.4.5). Если очередь уже заполнена, генерируется сообщение об ошибке, и моделирование пре- кращается. Если в очереди еще есть место, время поступления требования поме- щается в конце очереди. Рис. 1.8. Блок-схема программы поступления для системы массового обслуживания
52 Глава 1. Основы имитационного моделирования (Такая полная проверка очереди может быть отменена в случае применения ди- намического распределения памяти в языке программирования, который его под- держивает.) Если устройство свободно на момент поступления требования, то за- держка требования в очереди будет равна 0, что, тем не менее, считается задер- жкой, и число задержек требований возрастает на 1. Устройство переводится в со- стояние занятости, а в списке событий планируется время ухода по окончании обслуживания поступившего требования. Логика программы ухода требования изображена на рис. 1.9. Как вы помните, эта программа вызывается по завершении обслуживания требования (за которым следует уход из системы). Рис. 1.9. Блок-схема программы ухода для системы массового обслуживания
1.4. Моделирование системы массового обслуживания 53 Если после ухода требования очередь остается пустой, устройство переходит в состояние незанятости, а учет ухода требований отменяется, поскольку сле- дующим событием должно быть поступление. Если же после ухода в очереди остается еще одно или несколько требований, первое в очереди требование остав- ляет очередь и переходит на обслуживание. При этом длина очереди уменьшается на 1, а продолжительность задержки этого требования вычисляется и регистри- руется соответствующим статистическим счетчиком. Число задержек в очереди увеличивается на 1, и планируется время ухода требования, перешедшего на об- служивание. После этого оставшиеся в очереди требования (если таковые име- ются) передвигаются на одно место вперед. Показанный в данной главе способ реализации списка очереди является очень простым, но не самым эффективным. В главе 2 приведены более удобные способы обработки списков при модели- ровании очередей. В следующих двух разделах показано, как использовать приведенные выше сведения при написании программ на языках FORTRAN и С. Можно изучить только один из разделов — в зависимости от предпочтения либо знания языка — FORTRAN или С. Их логика и организация в сущности одинаковы, за исключени- ем случаев, определяемых частными свойствами отдельного языка. Результаты (идентичные для обоих языков) рассматриваются в разделе 1.4.6. Эти программы не являются ни самыми простыми, ни самыми эффективными, они разработаны и приведены для того, чтобы показать, как можно организовывать моделирование более сложных систем. 1.4.4. Программа на языке FORTRAN В данном разделе рассматривается программа на языке FORTRAN 77, разработан- ная для моделирования системы массового обслуживания М/М/1. Общую справ- ку по языку FORTRAN 77 можно найти в работе Коффмана и Фридмана [Koffman and Friedman, 1996]. В этой и других программах на языке FORTRAN 77, при- веденных в нашей книге, мы по мере возможности следовали стандартам ANSI, чтобы обеспечить переносимость программ. Единственным исключением из стан- дарта ANSI для языка FORTRAN 77 стало использование оператора INCLUDE, кото- рый будет рассмотрен в этом разделе. Программа может иметь синтаксис, не- сколько отличающийся от приведенных ниже в листингах. Код программы можно найти на сайте www.mhhe.com/lawkeLton. Мы запускали программы на различных компьютерах и компиляторах. В неко- торых случаях при прогоне данной модели численные результаты отличались из-за неточностей при операциях с числами с плавающей запятой. Это может ска- заться в какой-либо момент моделирования, если, например, два события будут запланированы на очень близкое время. Тогда ошибки округления могут привести к возникновению различной последовательности событий. Подпрограммы и функции, приведенные в табл. 1.1, входят в программу, на- писанную на языке FORTRAN для данной модели. В таблице также содержатся переменные, которые используются в программе (к переменным моделирования относятся переменные состояния, статистические счетчики и переменные, при- меняемые для обеспечения программирования).
54 Глава 1. Основы имитационного моделирования Таблица 1.1. Подпрограммы, функции и переменные языка FORTRAN для модели системы массового обслуживания Подпрограмма Описание INIT TIMING ARRIVE DEPART REPORT UPTAVG Программа инициализации Синхронизирующая программа Программа обработки событий типа 1 Программа обработки событий типа 2 Генерирует отчет по окончании моделирования Обновляет статистику непрерывного времени для накопителей площади перед возникновением каждого события EXPON(RMEAN) Функция генерирования экспоненциально распределенной случайной величины со средним значением RMEAN RAND(l) Функция генерирования равномерно распределенной случайной величины между 0 и 1 (см. листинг 7.1) Переменная Определение Входные параметры MARRVT MSERVT TOTCUS Среднее время между поступлениями (в этом случае равно 1,0) Среднее время обслуживания (равно 0,5) Общее число задержек требований п в очереди, которое должно быть учтено (равно 1000) Переменные моделирования ANIQ AUTIL Площадь под функцией определения числа требований в очереди [Q(t)] Площадь под функцией определения статуса устройства обслуживания [B(i)j BUSY Мнемоническая константа для устройства в состоянии занятости (равна 1) DELAY IDLE Задержка требования в очереди Мнемоническая константа, обозначающая устройство в состоянии незанятости (равна 0). MINTNE Используется программой TIMING для определения следующего события NEVNTS Число типов событий для этой модели, используется программой TIMING (в этом случае равно 2) NEXT Тип (в этом случае равен 1 или 2) следующего события (определяется программой TIMING) NIQ NUMCUS Число требований в очереди на данный момент Число требований, задержка которых в очереди завершилась в настоящий момент QLIMIT RMEAN Число ячеек памяти для массива TARRVL (равно 100) Среднее экспоненциально распределенной случайной величины, которая должна быть сгенерирована (используется EXPON) SERVER Состояние устройства (0 — свободно, 1 — занято)
1.4. Моделирование системы массового обслуживания 55 Переменная Определение TARRVL(I) Время поступления требования, которое теперь становится первым в очереди (размер очереди 100 мест) TIME TLEVNT TNE(I) TOTDEL TSLE Часы модельного времени Время последнего события Время следующего события типа I (I ’ 1; 2); часть списка событий Общее время задержек, завершенных в настоящий момент Время, прошедшее с последнего события (используется UPTAVG) Выходные переменные AVGDEL AVGNIQ UTIL Средняя задержка в очереди (rf(n)) Среднее по времени число требований в очереди ($(я)) Коэффициент занятости устройства (й(я)) Код основной программы, приведенный в листинге 1.1, начинается с оператора INCLUDE, который выводит строки из файлаmml .del (листинг 1.2). Оператор INCLUDE копирует файл, имя которого указано в кавычках (здесь mml.del), в основную программу на место оператора INCLUDE. В файле mml.de! содержатся объявления переменных и массивов типа INTEGER или REAL, блок MODEL типа COMMON и значение PARAMETER (QLIMIT - 100) — предполагаемой максимальной длины очереди (может быть подобрана методом проб и ошибок), которую мы когда-либо получим. (Как уже говорилось раньше, использование динамического распределения памяти в языке, поддерживающем это свойство, избавит нас от необходимости в подобных предположениях. FORTRAN 77 не поддерживает динамическое выделение па- мяти, a FORTRAN 90 - поддерживает.) Все операторы из файла mml.del должны появляться практически в каждой подпрограмме моделируемой системы, поэтому использование оператора INCLUDE упрощает их ввод и внесение в них изменений. Переменные в блоке MODEL являются глобальными, то есть они будут известны и доступны всем подпрограммам, содержащим этот оператор COMMON. Переменные, не вошедшие в блок MODEL, будут локальными для подпрограмм, в которых они встре- чаются. Мы также приняли соглашение явно объявлять тип (REAL или INTEGER) всех переменных, массивов и функций, независимо от того, задает ли первая буква переменной нужный тип по умолчанию в соответствии с соглашением FORTRAN. Далее файл входных данных (mml. 1 п) открывается и назначается модулю 5, а файл, в котором содержится результат (mml.QUt), открывается и назначается модулю 6. (Мы не приводим содержимое файла mml.in, поскольку в нем имеется всего одна строка с числами 1,0; 0,5 и 1000, разделенными любым количеством пробелов.) Число типов событий при моделировании NEVNTS для данной модели задается равным 2, а мнемонические константы BUSY и IDLE устанавливаются так, чтобы они использовали переменную состояния устройства SERVER, с целью сделать код более читабельным. Дальше входные параметры читаются в свободном формате. После написания заголовка отчета и отображения входных параметров (чтобы прове- рить их) вызывается программа инициализации INIT. Затем, для того чтобы опре- делить тип следующего события NEXT и соответствующим образом перевести часы модельного времени TIME вызывается синхронизирующая программа TIMING. Перед
56 Глава 1. Основы имитационного моделирования обработкой этого события вызывается подпрограмма UPTAVG, обновляющая пло- щади под кривыми Q(t) и B(t) для статистики непрерывного времени; подпро- грамма UPTAVG также изменяет время последнего события TL.EVNT до значения те- кущего времени системы. Таким же образом мы автоматически обновляем эти площади перед обработкой каждого события. Затем управление передается со- ответствующей программе обработки событий путем применения вычисляемого оператора GO ТО. Если NEXT - 1, вызывается программа обработки событий ARRIVE (метка 20), чтобы обработать поступление требования. Если NEXT * 2, вызывается программа DEPART (метка 30) для обработки ухода требования по завершении об- служивания. По возвращении управления из программы ARRIVE или DEPART в ос- новную программу выполняется проверка (метка 40), с тем чтобы убедиться, что число завершивших свою задержку в очереди требований NUMCUS, увеличиваю- щееся на 1 по завершении задержки в очереди каждого требования, все еще мень- ше числа требований TOTCUS, задержку которых в очереди мы хотим учесть. Если это так, то для продолжения моделирования вызывается программа TIMING. А если указанное число задержек учтено, вызывается генератор отчетов REPORT, который вычисляет и записывает искомые критерии оценок работы. Наконец, входной и выходной файлы закрываются (мера предосторожности, во многих системах не обязательная), и прогон имитационной модели завершается. Листинг 1.1. Код на языке FORTRAN для основной программы (модель системы массового обслуживания) * Основная программа для системы массового * обслуживания с одним устройством обслуживания. * Вводим файл объявлений. INCLUDE '01,11.6011 * Открываем входной и выходной файлы. OPEN (5. FILE - 'ml.in') OPEN (6. FILE - 'innl.out') * Указываем число типов событий для синхронизирующей программы. NEVNTS - 2 * Задаем мнемонические константы для занятого и свободного состояния устройства. BUSY - 1 * IDLE - О * Считываем входные параметры. READ (5.*) MARRVT. MSERVT. TOTCUS * Записываем заголовок отчета и входные параметры. WRITE (6.2010) MARRVT. MSERVT. TOTCUS 2010 FORMAT (' Система массового обслуживания с одним устройством обслуживания '// & ' Среднее время между поступлениями'.FU.3.' мин'// & ' Среднее время обслуживания’.F16.3.' мин'//
1.4. Моделирование системы массового обслуживания 57 & ' Число требований'.114//) * Инициализируем моделирование. CALL INIT * Определяем следующее событие. 10 CALL TIMING * Обновляем среднестатистические накопители. CALL UPTAVG * Вызываеи соответствующую программу обработки событий. GO ТО (20. 30). NEXT 20 CALL ARRIVE GO TO 40 30 CALL DEPART * Если моделирование завершено, вызываем генератор отчета и завершаем * моделирование. В противном случае продолжаем моделирование. 40 IF (NUMCUS .LT. TOTCUS) GO TO 10 CALL REPORT CLOSE (5) CLOSE (6) STOP END Листинг 1.2. Код на языке FORTRAN для файла объявлений mml.dcl (модель системы массового обслуживания) INTEGER QLIMIT PARAMETER (QLIMIT - 100) INTEGER BUSY.IDLE.NEVNTS.NEXT.NIQ.NUMCUS.SERVER.TOTCUS REAL ANIQ.AUTIL.MARRVT.MSERVT,TARRVL(QLIMIT).TIME.TLEVNT.THE(2),T0TDEL REAL EXPON COMMON /MODEL/ ANIQ,ACTIL.BUSY.IDLE.MARRVT.MSERVT,SEVNTS,NEXT,NIQ. & NUMCUS.SERVER.TARRVL.TIME.TLEVNT.TNE.TOTCUS.TOTDEL Код для подпрограммы INIT приведен в листинге 1.3. В ней с помощью операто- ра INCLUDE вводится тот же файл объявлений mml.dcL Каждый оператор подпро- граммы INIT соответствует элементу компьютерного представления на рис. 1.7, а. Время первого поступления TNE(l) определяется путем прибавления экспоненци- ально распределенной случайной величины со средним значением MARRVT, то есть EXPON(MARRVT), к значению часов модельного времени TIME - 0. (В этом операторе мы явно использовали переменную TIME, несмотря на то что она имеет значение О, с тем чтобы показать общий вид оператора для определения времени будущих со- бытий.) Поскольку на момент времени TIME - 0 в системе отсутствуют требования, время следующего ухода TNE(2) устанавливается на 1.0Е + 30 (так в FORTRAN обозначается 103®). Таким образом мы гарантируем, что первым событием в систе- ме будет поступление.
58 Глава 1. Основы имитационного моделирования Подпрограмма TIMING, приведенная в листинге 1.4, сравнивает значения TNE(l), TNE(2), ..., TNE(NEVNTS) и устанавливает для NEXT тот тип события, который имеет наименьшее время возникновения. (Следует учитывать, что NEVNTS задается в ос- новной программе.) Если возникает временная связь, выбирается тип события с меньшим номером. Затем часы модельного времени переводятся на время воз- никновения события выбранного типа MINTNE. Программу несколько усложняет необходимость проверки — не является ли список событий пустым. При этом мы исходим из того, что все события должны произойти до значения времени TIME - - 1030. Если такой случай когда-либо возникнет (на что указывает NEXT - 0), ге- нерируется сообщение об ошибке вместе с текущим временем (как возможной подсказкой для отладки), и моделирование прерывается. Листинг 1.3. Код на языке FORTRAN для подпрограммы INIT (модель системы массового обслуживания) SUBROUTINE INIT INCLUDE •mml.dcl’ * Устанавливаем в исходное состояние часы модельного времени TIME - 0.0 * Устанавливаем в исходное состояние переменные состояния. SERVER - IDLE NIQ - 0 TLEVNT - 0.0 * Устанавливаем в исходное состояние статистические счетчики NUMCUS - 0 TOTDEL - 0.0 ANIQ - 0.0 AUTIL - 0.0 Инициализируем список событий. Поскольку требования отсутствуют, событие ухода (завершение обслуживания) исключено из рассмотрения. TNE(l) - TIME + EXPON(MARRVT) TNE(2) - 1.0E+30 RETURN END Листинг 1.4. Код на языке FORTRAN для подпрограммы TIMING, (модель системы массового обслуживания) SUBROUTINE TIMING INCLUDE ’mml.del' INTEGER I REAL MINTNE MINTNE - 1.0E+29 NEXT - 0 * Определяем тип следующего события.
1.4. Моделирование системы массового обслуживания 59 DO 10 - 1. NEVNTS IF (TNE(I) .LT. MINTNE) THEN MINTNE - TNE(I) NEXT - I END IF 10 CONTINUE * Проверяем, пуст ли список событий. IF (NEXT .EQ. 0) THEN * Список событий пуст, завершаем моделирование. WRITEC6.2010) TIME 2010 FORMAT!' Список событий пуст в момент времени'.F10.3) STOP ENO IF * Список событий не пуст, переводим часы модельного времени. TIME - MINTNE RETURN END Код для программы обработки событий ARRIVE, приведенный в листинге 1.5, со- ответствует ходу событий, описанному в разделе 1.4.3 и показанному на блок-схе- ме рис. 1.8. Следует иметь ввиду, что TIME — это время поступления требования, которое прибывает на данный момент, и что при этом выполняется проверка пере- полнения очереди (необходимая, поскольку FORTRAN 77 не поддерживает дина- мическое распределение памяти), когда мы запрашиваем, будет ли теперь значе- ние переменной NIQ больше значения переменной QLIMIT, определяющей длину массива TARRVL. Программа обработки событий DEPART, код которой приведен в листинге 1.5, вызывается из основной программы после завершения обслуживания требования (и по его последующем уходе). Логика этой программы рассматривалась в разде- ле 1.4.3 и отображена на блок-схеме рис. 1.9. Следует иметь в виду, что если опера- тор TNE(2) - 1.0Е + 30, стоящий перед оператором ELSE будет опущен, программа войдет в бесконечный цикл. Возникает вопрос — почему? Продвижение остальной части очереди (если таковая имеется) на одну позицию вперед с помощью цикла D0 10 гарантирует, что время поступления на обслуживание следующего требова- ния (после завершения задержки в очереди) всегда будет сохраняться в TARRVL(1). Если бы очередь была свободна (требование, покинувшее очередь и перешедшее на обслуживание, оказалось бы единственным ожидающим в очереди), то пере- менная NIQ равнялась бы 0, а цикл DO вообще бы не выполнялся, так как I (исход- ное значение индекса цикла DO) равняется 1, что уже превышает его конечное зна- чение (NIQ - 0). Это свойство является характерным для FORTRAN 77. (Такое простое управление очередью с помощью ее физического продвижения на одну позицию вперед, безусловно, неэффективно. Мы еще вернемся к этому вопросу в главе 2.) Последнее замечание по поводу программы DEPART касается вычитания
60 Глава 1. Основы имитационного моделирования значения элемента массива TARRVL (1) из показаний часов TIME, чтобы получить зна- чение задержки в очереди. Если моделирование продолжается в течение длитель- ного периода модельного времени, TIME и TARRVL (1) приобретут очень большие зна- чения по сравнению с их разностью. Поскольку они будут сохраняться как числа с плавающей запятой (REAL) и их точность будет недостаточной, возможны серьез- ные потери при выполнении этого вычисления. Следовательно, если есть потреб- ность в том, чтобы моделирование выполнялось продолжительное время, необхо- димо задать тип DOUBLE PRECISION как для переменной TIME, так и для массива TARRVL. Листинг 1.5. Код на языке FORTRAN для подпрограммы ARRIVE (модель системы массового обслуживания) SUBROUTINE ARRIVE INCLUDE ‘mml.dcl1 REAL DELAY * Планируем следующее поступление. TNE(l) - TIME + EXPON(MARRVT) * Проверяем, занято ли устройство. IF (SERVER .EQ. BUSY) THEN * Устройство занято, поэтому увеличиваем число требований в очереди. NIQ - NIQ + 1 * Проверяем, существует ли условие переполнения очереди. IF (NIQ .GT. QLIMIT) THEN * Очередь переполнена, прекращаем моделирование. WRITE(6.2010) TIME 2010 FORMAT!'Переполнение массива TARRVL в момент времени'.F10.3) STOP END IF * В очереди еще остается место, сохраняем время поступления * требования в (новом) конце массива TARRVL. TARRVL(NIQ) - TIME ELSE * Устройство находится в состоянии незанятости, поэтому задержка поступившего * требования в очереди равна 0. (Следующие два оператора используются для большей * ясности программы и не влияют на результат моделирования.) DELAY - 0.0 . T0TDEL - T0TDEL + DELAY * Увеличиваем число задержек требований и переводим устройство * в состояниё занятости.
1.4. Моделирование системы массового обслуживания 61 NUMCUS- NUMCUS + 1 SERVER - BUSY, * • Планируем уход требований (завершение обслуживания). TNE(2) - TIME + EXPON(MSERVT) , END IF '' RETURN END Листинг 1.6.,Код на языке FORTRAN для подпрограммы DEPART (модель системы кассового обслуживания) < SUBROUTINE DEPART INCLUDE •mml.dcT . INTEGER I REAL DELAY * Проверяем, есть ли в очереди требования. IF(NIQ .EQ. 0) THEN * В очереди нет требований, переводим устройство в состояние * незанятости и отменяем учет ухода (завершения обслуживания). SERVER - IDLE TNE(2) - 1.0Е+30 ELSE * В очереди есть требования, уменьшаем число требований в очереди. NIQ - NIQ - 1 * Вычисляем задержку в очереди требования, обслуживание которого * началось, и обновляем значение общего накопителя времени задержки. DELAY - TIME - TARRVL(l) TOTDEL TCfTDEL + DELAY * Увеличиваем число требований, завершивших задержку в очереди. * и планируем время ухода. NUMCUS - NUMCUS + 1 TNE(2) - TIME + EXPON(MSERVT) * Переводим каждое требование (если такие есть) в очереди на одну * позицию вперед. DO 10 I - 1, NIQ - 10 TARRVL(I) - TARRVLH + 1) END IF RETURN '- END
62 Глава 1. Основы имитационного моделирования Код в подпрограмме REPORT вызывается, когда проверка условия останова в ос- новной программе устанавливает, что моделирование закончено (листинг 1.7). Сред- нюю задержку AVGDEL вычисляем путем деления общего времени задержки на чис- ло тех требовании, задержки которых в очереди мы наблюдали. Среднее число требований AVGNIQ, находящихся в очереди в каждый момент времени, получаем делением площади под Q(t), обновленной в связи с окончанием моделирования (поскольку подпрограмма UPTAVG вызывается из основной программы перед обра- боткой события либо поступления, либо ухода, одно из которых завершает моде- лирование), на значение времени в момент завершения моделирования. Средний коэффициент занятости устройства UTIL вычисляется делением площади под B(t) на окончательное значение времени. Все три показателя записываются в отчет. Кроме того, фиксируется окончательное значение времени, чтобы узнать, сколько времени заняло наблюдение задержек 1000 требований в очереди. Листинг 1.7. Код на языке FORTRAN для подпрограммы REPORT (модель системы массового обслуживания) SUBROUTINE REPORT INCLUDE ’ml. del' REAL AVGDEL.AVGNIQ.UTIL * Вычисляем и записываем оценки искомых показателей критериев работы. AVGDEL - TOTDEL / NUMCUS AVGNIQ - ANIQ / TIME UTIL - AUTIL I TIME WRITE (6.2010) AVGDEL. AVGNIQ. UTIL. TIME 2010 FORMAT (/' Средняя задержка в очереди’.F11.3,'мин'// & ’ Среднее число требований в очереди’.F10.3// & ’ Коэффициент занятости устройства обслуживания’.F15.3// & ’ Время завершения моделирования'.F12.3.’мин’) RETURN END Подпрограмма UPTAVG (листинг 1.8) вызывается перед обработкой каждого со- бытия (любого типа), она обновляет значения площадей под двумя функциями, необходимые для получения статистики непрерывного времени. Эта программа не является программой обработки событий и выделена только для того, чтобы сделать написание кода более удобным. Вначале вычисляется время TSLE, прошед- шее после последнего события, затем время последнего события TLEVNT меняется на текущее время для подготовки к следующему входу в подпрограмму UPTAVG. Затем площадь под функцией определения числа требований в очереди увеличи- вается на площадь прямоугольника под Q(t), которая рассчитывается путем умно- жения промежутка времени с момента последнего события TSLE на величину NIQ. Следует помнить, что подпрограмма UPTAVG вызывается до обработки события, и такие переменные состояния, как NIQ, все еще имеют свои предыдущие значения. Площадь под B(t) увеличивается на площадь прямоугольника, ширина которого равна TSLE, а высота — SERVER. Вот почему переменную SERVER удобно определять как 0 или 1. Обратите внимание, что в этой программе, как и программе DEPART,
1.4. Моделирование системы массового обслуживания 63 производится вычитание двух чисел с плавающей запятой (TIME - TLEVNT), которые в случае продолжительного моделирования могут достичь достаточно больших значений по сравнению с их разностью. В такой ситуации может понадобиться об- ъявить TIME и TLEVNT как переменные типа DOUBLE PRECESION. Листинг 1.8. Код на языке FORTRAN для подпрограммы UPTAVG (модель системы массового обслуживания) SUBROUTINE UPTAVG INCLUDE ’mml.dcl' REAL TSLE * Вычисляем время, прошедшее после последнего события, и обновляем маркер * времени последнего события. TSLE - TIME - TLEVNT TLEVNT - TIME * Обновляем площадь под функцией определения числа требований в очереди. ANIQ - ANIQ - NIQ * TSLE * Обновляем площадь под функцией определения занятости устройства. AUTIL - AUTIL - SERVER * TSLE RETURN END Функция EXPON (листинг 1.9), генерирующая экспоненциально распределен- ную случайную величину со средним значением £ - RMEAN (переданным в функцию EXPON), соответствует алгоритму, о котором шла речь в разделе 1.4.3. Генераторслу- чайных чисел RAND, используемый в ней с аргументом типа INTEGER, равным 1, де- тально рассматривается в главе 7 (см. листинг 7.1 в приложении 7А). Встроенная функция LOG языка FORTRAN возвращает натуральный логарифм ее аргумента, а ее тип согласуется с типом аргумента. Листинг 1.9. Код на языке FORTRAN для функции EXPON REAL FUNCTION EXPON(RMEAN) REAL RMEAN REAL RAND * Возвращает экспоненциально распределенную случайную величину со средним RbEAN. EXPON - -RMEAN * LOG(RANDCl)) RETURN END Описанная программа должна взаимодействовать с кодом генератора случай- ных чисел, приведенным в листинге 7.1. Чтобы обеспечить такое взаимодействие, следует скомпилировать каждую из программ по отдельности.
64 Глава 1. Основы имитационного моделирования 1.4.5. Программа на языке С В этом разделе представлена программа на языке С для моделирования системы массового обслуживания М/М/1. Мы обратились к версии языка стандарта ANSI, предложенной Керниганом и Ричи [Kemighan and Ritchie, 1988], в частности к определению прототипов функций. Мы воспользовались и таким преимущес- твом С, как возможность присвоения переменным и функциям длинных имен, уже самим названием объясняющим свое назначение (например, текущее значение модельного времени хранится в переменной sim time — модельное время). Как и программы на FORTRAN 77, все программы на языке С мы запускали на различ- ных компьютерах и компиляторах, чтобы обеспечить их высокую переносимость. По причинам, о которых шла речь в начале раздела 1.4.4, численные результаты могут отличаться на разных компьютерах и компиляторах. К программам должна быть подсоединена математическая библиотека языка С, что может потребовать установки опции, зависящей от компилятора (в системах UNIX этой опцией часто является -1m в операторе компиляции). Все коды, приведенные в этой главе, могут быть загружены с сайта www.mhhe.com/lawkelton. В листинге 1.10 заданы внешние определения. Заголовочный файл Icgrand.h (см. листинг 7.3 в приложении 7А) включается в объявление функций генератора случайных чисел. Символьной константе Q LIMIT присваивается значение 100, предполагаемая максимальная длина очереди, которую мы когда-либо получим, может быть подобрана методом проб и ошибок. (Как уже говорилось, применение динамического распределения памяти в языке, поддерживающем это свойство, из- бавит нас от необходимости прибегать к таким предположениям. Язык С поддер- живает это свойство, но мы его раньше не использовали, стремясь сделать наши примеры как можно более сопоставимыми с примерами на языке FORTRAN 77.) Символьные константы BUSY и IDLE определены для использования с переменной server status (состояние устройства), для того чтобы сделать код более читабель- ным. Определены указатели файлов *1 nf 11 е и *outf i 1 е, что позволит открывать со- ответственно входной и выходной файлы из кода, а не с уровня функционирова- ния системы. Следует обратить внимание и на то, что список событий, о чем уже шла речь, будет выполнен как массив ti me_next_event при игнорировании его нуле- вой ячейки, чтобы индекс соответствовал типу события. Листинг 1.10. Код на языке С для внешних определений (модель системы массового обслуживания) /* Внешние определения для системы массового */ /* обслуживания с одним устройством обслуживания. */ include <stdio.h> #include <math.h> #include "Icgrand.h" /* Заголовочный файл для генератора случайного числа. */ #def1ne Q_LIMIT 100 /* Ограничение длины очереди. */ #define BUSY 1 /* Мнемонические константы для устройства в состоянии */ #define IDLE 0 /* занятости и незанятости. */ 1nt next_event_type. num_custs_delayed. num_delays_reqirired. num events. num_in_q. server_status:
1.4. Моделирование системы массового обслуживания 65 float area_num_in_q. area_server_status. mean_interarrival. mean_service. sim_time, time_arrival[Q_LIMIT + 1]. time_last_event. time_next_event[3]. total_of_delays: FILE *infile. *outfile: void initialize(void); void timing(void); void arrive(void); void depart(void): void report(void); void update_time_avg_stats(void): float expon(float mean); Код основной функции показан в листинге 1.11. В нем открываются входной и выходной файлы, и число типов событий при моделировании этой системы ус- танавливается на 2. Затем входные параметры считываются из файла mml. i п, в ко- тором содержится одна строка с числами 1,0; 0,5 и 1000, разделенными пробелами. Когда заголовок отчета написан и указаны входные параметры (для проверки, правильно ли они считаны), вызывается функция инициализации. Цикл while вы- полняет моделирование до тех пор, пока не зарегистрируются задержки 1000 тре- бований в очереди (правило останова). В цикле whi 1 е вначале вызывается синхро- низирующая функция, определяющая тип следующего события и переводящая на это время часы модельного времени. Перед обработкой данного события вызыва- ется функция, обновляющая площади под кривыми Q(t) и B(t). То есть мы автома- тически обновляем эти площади перед обработкой каждого события. Затем опера- тор switch, основанный на переменной next_event_type (равен 1 — для поступления и 2 — для ухода), передает управление соответствующей событийной функции. После выполнения цикла while вызывается функция report, входной и выходной файлы закрываются, и моделирование завершается. Листинг 1.11. Код на языке С для основной функции (модель системы массового обслуживания) main!) /* Основная функция. */ { /* Открываем входной и выходной файлы. */ infile - fopen("mml.in“. "г"); outfile - fopen("mml.out", "w"); /* Указываем число событий для синхронизирующей функции. */ num_events - 2; /* Считываем входные параметры. */ fscanfdnfile, "Xf Xf Xd". &mean_interarrival. &mean_service. &num_delaysjrequi red); /* Указываем заголовок отчета и входные параметры. */ fprintf(outfile. "Система массового обслуживания с одним устройством обслуживания\п\п"): fprintf(outfile, "Среднее время между поступлениямиХН.ЗГ мин\п\п“, mean_interarrival); продолжение
66 Глава 1. Основы имитационного моделирования Листинг 1.11 (продолжение) fprintf(outfile. "Среднее время обслуживанияПб.ЗГ нин\п\п". mean_service): fprintf(outfile. "Число требованийХ14д\п\п”. num_delays_required): /* Инициализируем моделирование. */ initialized; /* Выполняем моделирование, пока не зарегистрировано */ /* нужное число задержек в очереди. */ while (num_custs_delayed < num_delays_required) { /* Определяем следующее событие. */ timingd; /* Обновляем среднестатистические накопители. */ update_time_avg_stats(): /* Вызываем соответствующую событийную функцию. */ switch (next_event_type) { case 1: arrived; break; case 2: departd; break; } ) /* Вызываем генератор отчетов и завершаем моделирование. */ reportd: fclose(infile); fclose(outfile): return 0; } Код функции инициализации приведен в листинге 1.12. Каждый оператор в нем соответствует элементу компьютерного представления на рис. 1.7, а. Заметьте, что время первого поступления time_next_event[l] определяется путем прибавления экспоненциально распределенной случайной величины со средним значением вре- мени между поступлениями mean_interarrival, то есть expon(mean_interarrival), к значению часов модельного времени sim time. (Чтобы показать общий вид опе- ратора для определения времени будущего события, мы явно использовали в этом операторе переменную sim_time, хотя она имеет значение 0.) Поскольку в момент времени, когда sim_time - 0, в системе нет требований, время следующего ухода time_next_event[2] устанавливается на 1.0е+30 (в языке С таким образом обозна- чается 1О30), и это является гарантией того, что следующим событием будет по- ступление.
1.4. Моделирование системы массового обслуживания 67 Листинг 1.12. Код на языке С для функции инициализации (модель системы массового обслуживания) void Initial1ze(void) /* Функция инициализации. */ { /* Устанавливаем в исходное состояние часы модельного времени. */ sim_time - 0.0; /* Задаем исходные значения переменных состояния. */ server_status - IDLE; num_in_q - 0; time_last_event - 0.0; /* Устанавливаем в исходное состояние статистические счетчики. */ num_custs_delayed - 0; total_of_delays - 0.0; area_num_in_q - 0.0; area_server_status - 0.0; /* Инициализируем список событий. Отменяем учет ухода */ /* (завершения обслуживания), поскольку в системе нет требований. */ time_next_event[l] - sim_time + expon(mean_interarrival); time_next_event[2] - 1.0e+30; } Синхронизирующая функция (листинг 1.13.) используется для того, чтобы сравнить время возникновения событий time_next_event[l], time_next_event[2],..., time_next_event[num_events] (переменная num_events была задана в основной функ- ции) и установить тип следующего события num_events, которое имеет наименьшее время возникновения. В случае возникновения временной связи выбирается тип события с меньшим номером. После этого часы модельного времени переводятся на время возникновения выбранного типа события nrin_time_next_event. Програм- му несколько усложняет необходимость проверки, не является ли список событий пустым. При этом мы исходим из того, что все события должны произойти до времени, которое равно 1О30. Если такая ситуация возникнет (на что указывает next_event_type - 0), генерируется сообщение об ошибке вместе с текущим вре- менем (как возможной подсказкой для отладки), и моделирование прерывается. Код событийной функции arrive (листинг 1.14.) не зависит от языка програм- мирования и соответствует описанию, приведенному в разделе 1.4.3 и на блок- схеме рис. 1.8. Обратите внимание на то, что sim_time ~ это время поступления требования, которое поступает в данный момент, и что выполняется проверка пе- реполнения очереди. При этом мы запрашиваем, будет ли теперь значение пе- ременной num_in_q больше значений переменной Q LIMIT, определяющей длину массива time_arrival.
68 Глава 1. Основы имитационного моделирования Лмстняг 1.18. Код на языке С для синхронизирующей функции (модель системы массового обслуживания) void tlming(vold) /* Синхронизирующая функция. */ { Int 1; float m1n_t1me_next_event - 1.0е+29; next_event_type - 0; /* Определяеи тип следующего события. */ for (i - 1; 1 <- num_events; ++i) if (time_next_event[i) < min_time_next_event) { min_time_next_event - t1me_next_event[i); next_event_type - 1: } /* Проверяеи. является ли список событий пустым. */ if (next_event_type — 0) { /* Список событий пуст, завершаем моделирование. */ fprintffoutfile, "\пСписок событий пуст в момент времени If", sim_time): ex1t(l); } /* Список событий не пуст, переводим часы модельного времени. */ sim_time - min_t1me_next_event: } Листинг 1.14. Код на языке С для функции arrive (модель системы массового обслуживания) void arrive(void) /* Событийная функция для поступления требования, */ { float delay; /* Планируем следующее поступление. */ - t1me_next_event[l] - sim_time + expon(mean_interarr1val); /* Проверяеи. занято ли устройство обслуживания. */ 1f (server_status — BUSY) { /* Устройство занято, увеличиваем'число требований в очереди. */ , ++numjn_q; /* Проверяем наличие условия переполнения. */ 1f Cnum_in_q > QJ.IMIT) { /* Очередь переполнена, прекращаем моделирование. */ fprintffoutfile. “ХпПереполнение массива time_arrival в");
1.4. Моделирование системы массового обслуживания 69 fprintf(outfile, ” нонент времени if". sim_t1me); exit(2); } /* В очереди все еще остается место, сохраняем время */ /* поступления требования в (новом) конце массива time_arrival. */ t1me_arrival[num_1n_q] - sim_time; } else { /* Устройство свободно, задержка поступившего требования в очереди равна нулю. (Следующие два оператора не влияют на результат моделирования.) */ delay - 0.0: total_of_delays +- delay: /* Увеличиваем число задержек требований, переводим устройство в состояние занятости. */ ++num_custs_delayed; server_status - BUSY; /* Планируем уход требования (завершение обслуживания). */ time_next_event[2] - sim time + expon(mean_service): } } Событийную функцию depart (листинг 1.15.) вызываем из основной програм- мы, когда происходит завершение обслуживания требования (и его последующий уход). Логика этой функции рассматривалась в разделе 1.4.3 и отображена на блок-схеме рис. 1.9. Обратите внимание, что, если оператор time_next_event[2] - - 1.0е + 30 перед оператором else будет опущен, программа войдет в бесконечный цикл. Это может произойти, поскольку продвижение остальной части очереди (если таковая имеется) на одну позицию вперед с помощью цикла for гарантирует, что время поступления требования, которое следующим поступит на обслужива- ние (после завершения задержки в очереди), всегда будет сохраняться в массиве time_arri val [1]. Если бы очередь была свободна (то есть требование, покинувшее очередь и перешедшее на обслуживание, было единственным ожидающим в очере- ди), переменная num_1n_q равнялась бы 0, а цикл вообще бы не выполнялся, по- скольку исходное значение индекса цикла 1 равно 1, что уже превышает его конеч- ное значение (num_in_q - 0). (Такое простое управление очередью с помощью ее физического продвижения на одну позицию вперед, конечно же, неэффективно. Мы еще вернемся к этому вопросу в главе 2.) Последнее замечание по поводу функции depart касается вычитания значения time arri val [1] из показаний часов sim time для получения значения времени задержки в очереди. Если моделирова- ние выполняется в течение длительного периода модельного времени, sim time и time arrivaUl] приобретают большие значения по сравнению с их разностью. Поскольку они будут сохраняться как числа с плавающей запятой (fl oat), их точ- ность может оказаться недостаточной, и возникнут потери при выполнении вы- числения. По этой причине, если мы хотим, чтобы моделирование выполнялось
70 Глава 1. Основы имитационного моделирования продолжительное время, нужно задать тип double как для переменной sim time, так и для массива time_arrival. Листинг 1.15. Код на языке С для функции depart (модель системы массового обслуживания) void depart(void) /* Событийная функция для ухода требования. */ { int 1: float delay; /* Проверяем, есть ли в очереди требования. */ if (num_1n_q — 0) { /* В очереди нет требований, переводин устройство в состояние незанятости и отненяен учет ухода (завершения обслуживания). */ server status - IDLE: time_next_event[2] - 1.0е+30; } else { /* В очереди есть требования, уменьшаем число требований в очереди. */ —num_in_q: /* Вычисляем задержку в очереди требования, обслуживание которого началось, и обновляем значение общего накопителя времени задержки. */ delay - sim_time - time_arrival[l): total_of_delays +- delay; /* Увеличиваем число задержек требований и планируем время ухода. */ ++num_custs_delayed: time next_event[2] - sim_time + expon(mean_service): /* Переводин каждое требование в очереди на одну позицию вперед. */ for (1 - 1: 1 <« num_in_q; ++1) time_arrival[i] - time_arrival[i + 1); } } Код в функции report вызываем после выполнения цикла whi 1 е в основной про- грамме (листинг 1.16). Среднюю задержку вычисляем путем деления общего вре- мени задержки на число тех требований, задержки которых в очереди мы наблюда- ли. Среднее число требований, находящихся в очереди в каждый момент времени, получаем делением площади под Q(t), обновленной в связи с окончанием модели- рования (поскольку функция обновления вызывается из основной программы пе- ред обработкой события либо поступления, либо ухода, одно из которых заверша- ет моделирование), на значение времени в момент завершения моделирования. Коэффициент занятости устройства вычисляется делением площади под B(t) на окончательное значение времени. Все три показателя записываются в отчет. Кро-
1.4. Моделирование системы массового обслуживания 71 ме того, записывается окончательное значение времени, чтобы узнать, сколько времени заняло наблюдение задержек 1000 требований в очереди. Листинг 1.16. Код на языке С для функции report (модель системы массового обслуживания) void report(void) /* Функция генератора отчетов. */ /* Вычисляем и записываем искомые критерии оценки работы. */ fprlntf(outfile. "\п\пСредняя задержка в очередиШ.ЗТ нин\п\п". total_of_delays / num_custs_delayed); fprintf(outf1le. "Среднее число требований в очередиХ10.3Лп\п", area_num_in_q / sim_time): fprintf(outfile, "Коэффициент занятости устройства обслуживанияЯ15.3Т\п\п", area_server_status / s1m_time); fprintffoutfile. "Время завершения ноделированияХ12.3Т мин". sim_time); } Функция update_t1me_avg_stats (листинг.1.17) вызывается перед обработкой каждого события (любого типа), она обновляет значения площадей под двумя функциями, необходимые для получения статистики непрерывного времени. Эта программа не является программой обработки событий и выделена только для то- го, чтобы сделать написание кода более удобным. Вначале вычисляется время, прошедшее после последнего события, затем время последнего события меняется на текущее время для подготовки к следующему входу в эту функцию. Далее пло- щадь под функцией определения числа требований в очереди увеличивается на площадь прямоугольника под Q(t), которая рассчитывается путем умножения промежутка времени с момента последнего события time_since_l ast_event на вели- чину num_i n_q. Не следует забывать, что данная функция вызывается до обработки события, и такие переменные состояния, как num ln q все еще имеют свои преды- дущие значения. Площадь под B(t) увеличивается на площадь прямоугольника ши- риной time_since_1ast_event и высотой server_status, равной 0 или 1. Эта функция, подобно функции depart, производит вычитание двух чисел с плавающей запятой (sim_time - time_l ast_event), имеющих возможность в случае длительного модели- рования достичь достаточно больших значений по сравнению с их разностью. В такой ситуации может понадобиться объявить sim time и time_1ast_event как переменные типа double. Листинг 1.17. Код на языке С для функции update_t1me_avg_stats (модель системы массового обслуживания) void update_time_avg_stats(void) /* Обновляем накопители площади для статистики среднего времени. */ { float time_since_last_event; /* Вычисляем время, прошедшее после последнего события, и обновляем маркер времени последнего события. */ time_since_last_event - sim_time - time_last_event: time_last_event - sim_time; продолжение
72 Глава 1. Основы имитационного моделирования Листинг 1.17 (продолжение) /* Обновляем площадь под функцией определения числа требований в очереди. */ area_num_in_q +- num_1n_q * time_since_last_event; /* Обновляем площадь под функцией определения занятости устройства. */ area server status +- server_status * time_since_last_event; } Функция ехроп (листинг 1.18), генерирующая экспоненциально распределен- ную случайную величину со средним значением р = mean (переданным в функцию ехроп), соответствует алгоритму, приведенному в разделе 1.4.3. Генератор случай- ных чисел legrand, используемый в ней с аргументом int, равным 1, детально рас- сматривается в главе 7 (см. листинг 7.2 в приложении 7А). Встроенная функция log языка С возвращает натуральный логарифм ее аргумента. Листинг 1.18. Код на языке С для функции ехроп float expon(float mean) /* Функция для генерирования экспоненциально распределенной случайной величины. */ { /* Возвращаем экспоненциально распределенную случайную величину со средним mean. */ return -mean * log(lcgrandd)); } Описанная программа должна взаимодействовать с кодом генератора случай- ных чисел, приведенным в листинге 7.2. Чтобы это обеспечить, можно скомпили- ровать каждую из программ по отдельности. 1.4.6. Выходные данные моделирования Выходные данные (в файле mml.out) показаны в листинге 1.19. Поскольку в про- граммах на обоих языках использовался один и тот же метод генерирования слу- чайагх чисел, они дали одинаковые результаты. В этом прогоне имитационной модели среднее время задержки в очереди составило 0,430 мин, в среднем в очере- ди находилось 0,418 требований, а занятость устройства составила 46 % времени. Для того чтобы зарегистрировать задержку в очереди 1000 требований, понадоби- лось 1027,915 мин модельного времени. Число реальное, так как ожидаемая задер- жка требований в очереди равнялась 1 мин. (Нельзя считать совпадением то, что средняя задержка в очереди, среднее число требований в очереди и коэффициент занятости устройства имеют здесь близкие значения, см. приложение 1Б.) Эти конкретные числа в выходных данных были, по сути, определены числами, которые в этот раз выдал генератор случайных чисел. И если бы использовался другой генератор случайных чисел или тот же самый, но с иным «шагом» или «по- током» (см. главу 7), то в результате прогона были бы получены другие числа. По- этому найденные числа нельзя считать единственно правильными, их скорее всего можно назвать оценками (возможно, и не самыми точными) ожидаемых искомых показателей d(n), q(n) и и(п), хотя результаты являются функциями входных па-
1.4. Моделирование системы массового обслуживания 73 раметров: среднего времени между поступлениями, среднего времени обслужива- ния и правила останова п — 1000. На них также влияет состояние системы при инициализации моделирования — требования отсутствуют, устройство обслужи- вания свободно. (Статистический анализ выходных данных моделирования рас- сматривается в главах 9-12.) В некоторых случаях может возникнуть потребность оценить статические ха- рактеристики модели (см. главу 9), в частности характеристики модели после выполнения моделирования в течение длительного (теоретически бесконечного) времени. Для простой системы массового обслуживания М/М/1, которую мы рас- сматривали, статическую среднюю задержку в очереди, статическое среднее число требований в очереди и статический коэффициент занятости устройства можно вычислить аналитически. Все эти показатели будут составлять 0,5 [Ross, 1997, р. 419-420]. Следовательно, если бы мы хотели определить статические показате- ли, полученные оценки, исходя из правила останова п = 1000, не слишком бы отли- чались, по крайней мере, в абсолютных величинах. Поэтому можно полагать, что это удачный результат, ведь п = 1000 мы выбрали произвольно! На практике выбор правила останова, позволяющего получить действительно хорошие оценки статических характеристик, достаточно сложен. Предположим, что в случае с сис- темой массового обслуживания М/М/1 интенсивность поступления была изме- нена с 1 на 1,98 требования в минуту (теперь среднее время между поступлениями составляет 0,505 мин), а среднее время обслуживания осталось бы неизменным. Мы, как и прежде, намерены определить статические показатели при модели- ровании очереди с п -1000 задержек требований. Для этого выполняем соответст- вующий прогон имитационной модели и получаем значения 17,404 мин, 34,831 и 0,997 для средней задержки в очереди, среднего числа требований в очереди и коэффициента занятости устройства соответственно. Поскольку настоящие ста- тические значения этих показателей равны 49,5 мин, 98,01 и 0,99 соответственно, становится ясно, что правило останова не может быть выбрано произвольно. (В гла- ве 9 речь пойдет о том, как определять длительность прогона имитационной мо- дели для статического моделирования.) Листинг 1.19. Отчет с выходными данными (модель системы массового обслуживания) Среднее время между поступлениями 1.000 мин Среднее время обслуживания 0.500 мин Число требований 1000 Средняя задержка в очереди 0,430 мин Среднее число требований в очереди 0.418 Коэффициент занятости устройства обслуживания 0.460 Длительность моделируемого периода 1027.915 мин Может возникнуть вопрос, почему мы вместо того, чтобы находить ожидае- мую среднюю задержки требования в очереди d(n), не оценили среднее время
74 Глава 1. Основы имитационного моделирования ожидания требования в системе w(n). Время ожидания требования определяется как промежуток времени с момента поступления требования до момента заверше- ния его обслуживания и ухода. Во-первых, мы считаем, что задержка требования в очереди в ожидании окончания обслуживания других требований — самый нена- дежный период нахождения требования в системе. Более того, если очередь пред- ставляет собой часть производственной системы, где требования на самом деле являются деталями, ожидающими обслуживания станком (устройством обслужи- вания), тогда задержка в очереди — это «потеря», а время, потраченное на обслу- живание, — «необходимость». Вторая причина сосредоточения внимания на за- держке в очереди — статистическая эффективность. Обычной оценкой w(n) будет ЁА is, w(n) = ^——=£*— = 3(n) + S(n), (1.7) и и и где Wj - Dj+ Si — время ожидания в системе требования г; 5(и) — среднее время об- служивания и-го числа требований. Для выполнения моделирования прежде всего следует знать распределение времени обслуживания, таким образом ожидаемое или среднее время обслуживания Е(5) станет известным, а альтернативной оцен- кой w(n) будет й>(и) = d(ri) + £(5). (Обратите внимание на то, что 5(и) является несмещенной оценкой £(5) в урав- нении (1.7).) Почти во всех случаях моделирования систем массового обслуживания w(n) будет более эффективной (менее изменчивой) оценкой w(n), чем w(n)n, следо- вательно, более предпочтительной (обе оценки являются несмещенными). Поэтому, если вам понадобится оценка w(n), нужно получить оценку сЦп) и прибавить из- вестное ожидаемое время обслуживания £(5). Вообще есть смысл по возможности заменять оценки их ожидаемыми значениями (см. раздел 11.5, в котором рассмат- риваются косвенные оценки). 1.4.7. Альтернативные правила останова В приведенном выше примере системы массового обслуживания моделирование прекратилось, когда число требований, задержанных в очереди, достигло 1000. Таким образом стало очевидным, что окончательное значение модельного вре- мени было случайной переменной. Тем не менее для многих реальных моделей мо- делирование должно завершаться по прошествии какого-либо фиксированного периода времени, например 8 ч. Так как в нашем примере время между поступле- ниями и время обслуживания являются непрерывными случайными переменны- ми, вероятность завершения моделирования через 480 мин после начала равна 0 (игнорируя конечную точность компьютера). Для того чтобы остановить моде- лирование в указанное время, мы вводим фиктивное событие «завершения моде- лирования» (назовем его событием типа 3), которое планируется на время 480. Когда время этого события (хранящееся в третьей ячейке списка событий) станет меньше времени остальных типов событий в списке, будет вызван генератор отче-
1.4. Моделирование системы массового обслуживания 75 та, и моделирование остановится. Теперь случайной величиной будет число задер- жанных требований. Для того чтобы реализовать этот способ в компьютерной программе, нужно внести изменения в основную программу, программу инициализации и генератор отчетов (о чем пойдет речь дальше). Достаточно просмотреть пример только для одного из языков, но необходимо сделать это очень внимательно. Программа на языке FORTRAN. Изменения должны быть внесены в основную программу, файл объявлений (переименованный в mmlaltdd), а также в програм- мы INIT и REPORT (листинги 1.20-1.23). Изменения в программах TIMING, ARRIVE, DEPART и UPTAVG касаются только имени файла в операторе INCLUDE. В программе EXPON никаких изменений не происходит. В листингах 1.20 и 1.21 (заметим, что те- перь в системе имеется 3 типа событий) мы видим, что желательная продолжи- тельность времени моделирования TEND теперь является входным параметром и членом модуля COMMON MODEL (TOTCUS удалена), а операторы после вычисляемого опе- ратора G0 ТО изменены. В основной программе (как и раньше), прежде чем войти в программу обработки событий, вызываем программу UPTAVG, для того чтобы пло- щади были обновлены перед тем, как следующим событием станет событие типа 3 (завершение моделирования). Единственное изменение в программе INIT (если не учитывать изменение файла в операторе INCLUDE) — это добавление оператора TNE(3) - TEND, который планирует конец моделирования. Единственное изменение в программе REPORT (листинг 1.23) — это указание записать число требований, за- держанных в очереди вместо времени завершения моделирования, так как в дан- ном случае нам известно, что оно равно 480 мин, однако мы не знаем, сколько требований завершили свои задержки в очереди к этому времени. Листинг 1.20. Код на языке FORTRAN для основной программы (модель системы массового обслуживания с заданной продолжительностью прогона) * Основная программа для системы массового обслуживания с одним устройством * обслуживания и заданной продолжительностью прогона. * Вводим файл объявлений. INCLUDE ,mmlalt.dcT * Открываем входной и выходной файлы. OPEN (5. FILE - Walt.in') OPEN (6. FILE - ’mmlalt.ouf) * Указываем число типов событий для синхронизирующей программы. NEVNTS - 3 * Задаем мнемонические константы для занятого и свободного состояния устройства. BUSY - 1 IDLE - О * Считываем входные параметры. READ (5.*) MARRVT. MSERVT. TEND продолжение
76 Глава 1. Основы имитационного моделирования Листинг 1.20 (продолжение) * Записываем заголовок отчета и входные параметры. WRITE (6.2010) MARRVT. MSERVT. TEND . 2010 FORMAT (' Система кассового обслуживания с одним устройством и заданной'// & ” продолжительность прогона’// & ' Среднее время между поступлениями’.F11.3.‘ мин*// & ’ Среднее время обслуживания'.FIG.'S.' мин’// & ' Длительность моделирования’.F9.3' кин’//) * Инициализируем моделирование. CALL INIT * Определяем следующее событие. . 10 CALL TIMING * Обновляем среднестатистические накопители. CALL UPTAVG * Вызываем соответствующую программу обработки событий. GO ТО (20. 30. 40). NEXT 20 CALL ARRIVE GO ТО 10 30 CALL DEPART GO TO 10 * Если моделирование завершено, вызываем генератор отчета * и завершаем моделирование. 40 CALL REPORT CLOSE (5) CLOSE (6) STOP END Листинг 1.21. Код на языке FORTRAN для файла объявлений mmlalt.dd (модель системы массового обслуживания с заданной продолжительностью прогона) INTEGER QLIMIT PARAMETER (QLIMIT - 100) INTEGER BUSY.IDLE.NEVNTS.NEXT.NIQ.NUMCUS.SERVER REAL ANIQ.AOTIL.MARRVT.MSERVT.TARRVL(QLIMIT).TEND.TIME.TLEVNT.TNE(3).TOTDEL REAL EXPON COMMON /MODEL/ ANIQ.AUTIL,BUSY.IDLE.MARRVT.MSERVT.NEVNTS.NEXT.NIQ. 8 NUMCUS.SERVER.TARRVL.TEND.TIME.TLEVNT.TNE.TOTDEL
1.4. Моделирование системы массового обслуживания 77 Листинг 1.22. Код на языке FORTRAN для подпрограммы INIT (модель системы массового обслуживания с заданной продолжительностью прогона) SUBROUTINE INIT INCLUDE 'mmlalt.dcl' * Устанавливаем в исходное состояние часы модельного времени. t TIME - 0.0 * Устанавливаем в исходное состояние переменные состояния. SERVER - IDLE NIQ - 0 Л TLEVNT - 0.0 * Устанавливаем в исходное состояние статистические счетчики. NUMCUS - 0 T0TDEL - 0.0 ANIQ - 0.0 . v /UJTIL - 0.0 * Инициализируем список собйтий. Поскольку требования отсутствуют. * отменяем учет ухода (завершения обслуживания). Завершение * моделирования (тип событий 3) планируется на время TEND. TNE(l) - TIME + EXPON(MARRVT) TNE(2) - 1.0E+30 TNE(3) - TEND RETURN END Листинг 1.23. Код на языке FORTRAN для подпрограммы REPORT (модель системы массового обслуживания с заданной продолжительностью прогона) SUBROUTINE REPORT INCLUDE mmlalt.dcl’ REAL AVGDEL.AVGNIQ,UTIL * Вычисляем и записываем искомые оценки критериев работы. AVGDEL - TOTDEL / NUMCUS AVGNIQ - ANIQ / TIME UTIL - AUTIL / TIME WRITE (6.2010) AVGDEL. AVGNIQ. UTIL. TIME 2010 FORMAT (/' Средняя задержка в очереди'.F11.3.’мин'// & ' Среднее число требований в очереди'.F10.3// & ' Коэффициент использования устройства обслуживания'.F15.3// & ' Число завершенных задержек'.17) RETURN END
78 Глава 1. Основы имитационного моделирования Программа на языке С. Изменения должны быть внесены во внешние определе- ния, в основную функцию и функции Initialize и report (листинги 1.24-1.27); остальные функции остаются без изменений. В листингах 1.24 и 1.27 (заметим, что теперь в системе имеется три типа событий) мы видим, что желательная продол- жительность времени моделирования time_end теперь является входным парамет- ром (num_del ay requi red удалена), а оператор swi tch изменен. Чтобы завершить мо- делирование, исходный цикл while заменен циклом do while (см. листинг 1.25), который повторяется, пока выполняемые события имеют тип, отличный от типа 3 (завершение моделирования); после выбора для выполнения события типа 3 цикл завершается, и моделирование прекращается. В основной программе (как и рань- ше), прежде чем войти в событийную функцию, мы вызываем функцию update tl - me avg stat, чтобы площади были обновлены перед завершением моделирования, когда следующим событием станет событие типа 3 (завершение моделирования). Единственное изменение в функции инициализации (листинг 1.26) — добавление оператора time_next_event[3] - time_end, который планирует конец моделирова- ния. А единственное изменение в функции report (листинг 1.27) — это указание за- писать число требований, задержанных в очереди, вместо времени завершения мо- делирования, так как в данном случае известно, что оно равно 480 мин, однако мы не знаем, сколько требований завершили свои задержки к этому времени. Листинг 1.24. Код на языке С для внешних определений (модель системы массового обслуживания с заданной продолжительностью прогона) /* Внешние определения для системы массового обслуживания с одним устройством обслуживания и заданной продолжительностью прогона. */ iinclude <stdio.h> #include <math.h> #include "legrand.h" /* Заголовочный файл для генератора случайного числа. */ #def1ne QJ.IMIT 100 /* Ограничение длины очереди. */ #def1ne BUSY 1 /* Мнемонические константы для устройства в состоянии занятости */ #define IDLE 0 /* и незанятости. */ int next_event_type. num_custs_delayed. num_events. num_1n_q, server_status; float area_num_1n_q, area_server_status, mean_1nterarrival. mean_service, sim_time. time_arrival[Q_LIMIT + 1], time_end. time_last_event. time_next_event[4]. total_of_delays; FILE *1nf1le. *outf1le: void Initialize!void); void timing(void); void arrive!void); void depart!void): void report(void); void update_t1me_avg_stats(void); float exponlfloat mean):
1.4. Моделирование системы массовогообслуживания 78 Листинг 1.25. Код на языке С для основной функции (модель системы массового обслуживания с заданной продолжительностью прогона) па1п() /* Основная функция. */ { /* Открываем входной и выходной файлы. */ infile - fopen("ninlalt.1n". "г"): outfile - fopen("mmlalt.out". V); /* Указываем число событий для синхронизирующей функции. */ num_events - 3: /* Считываем входные параметры. */ fscanfCinfile, "Xf Xf Xf". &mean_interarrival. &nean_service, &time_end); /* Указываем заголовок отчета и входные параметры. */ fprintfioutfile. "Система массового обслуживания с одним устройством обслуживания и заданной продолжительностью прогона"); fprintf(outfi1е. "Длина\п\п"); fprintf(outfile. "Среднее время между поступлениями X11.3f мин\п\п". meanjnterarrival): fprintf(outfile. "Среднее время обслуживания X16.3f мин\п\п". mean_service); fprintf(outfile, "Длительность моделированиях?)^ мин\п\п". time_end); /* Инициализируем моделирование. */ initialize(); /* Выполняем моделирование до тех пор. пока оно не прекратится по возникновении события завершения моделирования (тип 3). */ do { /* Определяем следующее событие. */ timlngO; /* Обновляем среднестатистические накопители. */ update_time_avg_stats(): /* Вызываем соответствующую событийную функцию. */ switch (next_event_type) { case 1: arriveO: break; case 2: depart(); break; case 3: reportO; break; } продолжение #
80 Глава 1. Основы имитационного моделирования Листинг 1.25 (продолжение) /* Если последний выполненным событием было событие завершения моделирования (тип 3). завершаем моделирование. В противном случае продолжаем моделирование. */ } while (next_event_type !- 3): fclose(infile); fclose(outflle); return 0; } Листинг 1.26. Код на языке С для функции инициализации (модель системы массового обслуживания с заданной продолжительностью прогона) void initialize(void) /* Функция инициализации. */ { /* Устанавливаем в исходное состояние часы модельного времени. */ s1m_t1me - 0.0; /* Задаем исходные значения переменных состояния. */ server status - IDLE; num_1n_q - 0; time_last_event - 0.0; /* Устанавливаем в исходное состояние статистические счетчики. */ num_custs_delayed - 0; total_of_delays - 0.0; area_num_1n_q - 0.0; area_server_status - 0.0: /* Инициализируем список событий. Поскольку в системе нет требований, отменяем учет ухода (завершения обслуживания). Событие завершения моделирования планируется на время tinie_end. */ time_next_event[l] - s1m_t1me + expon(mean interarrival); time_next_event[2] - 1.0e+30: t1mejiext_event[3] - t1me_end; } Листинг 1.27. Код на языке С для функции report (модель системы массового обслуживания с заданной продолжительностью прогона) void report(void) /* Функция генератора отчетов. */ { /* Вычисляем и записываем искомые оценки критериев работы. */ fprintf(outfile, "\п\пСредняя задержка в очередиШ.ЗГ мин\п\п". total_of_delays / num_custs_delayed); fprintf(outfiTe. "Среднее число требований в очередиХ10.3Т\п\п". area_num_1n_q / s1m_time): fprintf(outf1le. "Коэффициент использования устройства обслуживанияХ15.3Т\п\п". area_server_status / sim time); fprintf(outfile. "Число завершенных задержек в очередиХ7б". num_customers_delayed);
1.4. Моделирование системы массового обслуживания 81 Выходной файл (mmlalt.out, полученный в результате запуска программы на FORTRAN или С) показан в листинге 1.28. При этом прогоне имитационной мо- дели число наблюдаемых задержек составило 475, что вполне естественно, если учесть, что система моделировалась 480 мин, а в минуту в среднем прибывало одно требование. Три показателя из оцениваемых критериев работы снова имеют до- вольно близкие значения, но на этот раз они несколько меньше, нежели результа- ты, полученные по завершении предыдущего прогона имитационной модели, ко- гда наблюдались задержки в очереди 1000 требований. Возможным объяснением может служить продолжительность текущего прогона, в два раза меньшая продол- жительности предыдущего. Так как исходными условиями моделирования систе- мы является незанятость устройства обслуживания и отсутствие очереди (со- стояние незагруженности), при этом прогоне у модели меньше шансов достигнуть состояния перегруженности. В данном случае снова был выполнен единственный прогон, поэтому его результаты не являются достаточно точными. Простого спо- соба оценить степень неточности за один прогон не существует. Предположим, что система массового обслуживания является парикмахерской с одним работником, которая работает с 9.00 до 17.00. Прекращение моделирова- ния ровно через 8 ч может привести к тому, что у нас останется клиент с незакон- ченной стрижкой. В этом случае следовало бы закрыть дверь парикмахерской для других клиентов и продолжить моделирование до тех пор, пока не завершится об- служивание всех присутствующих клиентов (если бы они были). В задаче 1.10 предлагается внести изменения в программу, необходимые для реализации этого правила останова (см. также раздел 2.6). Листинг 1.28. Отчет с выходными данными (модель системы массового обслуживания с одним устройством обслуживания и заданной продолжительностью прогона) Среднее время между поступлениями 1.000 мин Среднее время обслуживания 0.500 мин Длительность моделируемого периода 480.000 мин Средняя задержка в очереди 0.399 мин Среднее число требований в очереди 0.394 Коэффициент использования устройства обслуживания 0.464 Число завершенных задержек в очереди 475 1.4.8. Определение событий и переменных В разделе 1.3 мы определили событие как мгновенное свершение, которое может изменить состояние системы. В случае с простой системой массового обслужи- вания с одним устройством обслуживания сложностей с определением событий не возникало (см. раздел 1.4.1). Но в ряде случаев закономерен вопрос (особенно это касается сложных систем) — как установить количество событий и дать опре- деление событиям модели вообще. Могут возникнуть трудности и с определением
82 Глава 1. Основы имитационного моделирования переменных состояния, необходимых для выполнения моделирования с правиль- ной последовательностью событий и получения искомых выходных показателей. Единого подхода к решению этих вопросов не существует. Разработчики исполь- зуют различные подходы при представлении модели через события и переменные, каждый из которых может быть правильным. Тем не менее существуют принципы и методы, помогающие сделать структуру модели более простой и позволяющие избежать логических ошибок. Шрубен [Schruben, 1983b] предложил метод представления событий с помо- щью графов, который позднее усовершенствовал Сарджент [Sargent, 1988], а по- сле Сом и Сарджент [Som and Sargent, 1989]. В их интерпретации предлагаемые события, каждое из которых представлено в виде узла, соединяются между собой с помощью направленных дуг (стрелок), демонстрирующих, как события могут на- значаться при возникновении других событий или от самих себя. Например, для моделирования системы массового обслуживания (раздел 1.4.3) при обработке со- бытия поступления назначается еще одно событие поступления и, возможно, уход требования, а для ухода требования может быть запланирован еще один уход. Причем поступление должно быть изначальным, чтобы обеспечить начало выпол- нения моделирования. В представлении событий с помощью графов ряд событий (узлов) соединяется стрелками, указывающими на тип события, которое можно запланировать. На рис. 1.10 события для системы массового обслуживания с од- ним устройством обслуживания представлены с помощью графов. Стрелки жир- ного начертания указывают, что событие, находящееся на конце стрелки, может быть запланировано при возникновении события, находящегося в начале стрелки, через (по возможности) ненулевой промежуток времени. Тонкая ломаная стрелка указывает, что событие на ее конце является изначальным. Таким образом, собы- тие поступления перепланирует себя и может запланировать уход требования (ко- гда поступление застает устройство обслуживания в состоянии незанятости), со- бытие ухода требования также может перепланировать себя (если после ухода в очереди еще остаются требования). Рис. 1.10. Представление событий с помощью графов для системы массового обслуживания В случае с этой моделью закономерен вопрос — почему мы явно не обозначили отдельным событием переход требования на обслуживание (как из очереди, так и непосредственно после поступления). Бесспорно, подобное действие может из- менить состояние системы (например, длина очереди уменьшается на 1). Это со- бытие действительно можно выделить, и моделирование при этом не нарушится. В данной ситуации мы получим последовательность событий, как на рис. 1.11.
1.4. Моделирование системы массового обслуживания 83 При возникновении событий, расположенных в начале двух тонких светлых стре- лок, немедленно происходят события, находящиеся в конце стрелок (без какого- либо временного промежутка между двумя событиями). В этом случае тонкая светлая стрелка обозначает поступление требования в пустую систему, когда пере- ход требования на обслуживание осуществился. Изогнутая тонкая стрелка пред- ставляет уход требования. Так как в системе еще остается очередь, немедленно бу- дет осуществлен переход на обслуживание первого требования в очереди. В итоге число событий увеличилось на одно, поэтому представление модели усложняется. Представление событий с помощью графов используется в том числе и для того, чтобы упростить событийную структуру моделирования, удалив ненужные собы- тия. Существует несколько правил, позволяющих обеспечить такое упрощение. Одно из них гласит: если у узла, представляющего событие, все входящие дуги тонкие и светлые (то есть событие происходит только при возникновении других событий без какого-либо интервала времени между ними), то такое событие мо- жет быть удалено из модели и включено в события, при возникновении которых оно возникает через нулевой интервал времени. В нашем случае событие перехода на обслуживание может быть удалено, а относящиеся к нему действия перенесены частично в поступление (поступление требования при незанятом устройстве об- служивания и его немедленный переход на обслуживание), а частично в уход (об- служивание требования завершается, а за ним еще остается очередь, из которой следующее требование переходит на обслуживание). Мы снова возвращаемся к более простому представлению событий (см. рис. 1.10). Как правило, нет необхо- димости включать в модель события, которые могут происходить обязательно в связке с другими событиями. Уменьшая число событий, мы не только упрощаем концепцию модели, но и можем ускорить ее выполнение. Однако сокращать коли- чество событий следует осторожно, чтобы должным образом установить приори- теты и обработать временные узлы. Рис. 1.11. Представление событий с помощью графов для системы массового обслуживания с отдельно выделенным событием перехода на обслуживание Еще одно правило связано с инициализацией. Граф, представляющий событие, разбивается на строго связанные составляющие, в каждой из которых можно •«пе- ремещаться* от одного узла к любому другому, следуя в направлениях, указанных дугами. Представление на рис. 1.10 разбивается на две строго связанные состав- ляющие (с одним узлом в каждой из них), а представление на рис. 1.11 состоит из двух строго связанных составляющих (одна из них представлена узлом поступле- ния самим на себя, а другая состоит из узлов перехода на обслуживание и ухода). Правило инициализации гласит, что в любой строго связанной составляющей, в которой нет входящих дуг, ведущих от других узлов, расположенных вне этой
84 Глава 1. Основы имитационного моделирования составляющей, должен быть, по крайней мере, один изначальный узел. При нару- шении этого правила события, входящие в составляющую, никогда не будут вы- полняться. На рис. 1.10 и 1.11 такой строго связанной составляющей является узел поступления, а поскольку у него нет входящих стрелок от других узлов, он должен быть инициализирован. На рис. 1.12 показано представление для модели, описанной в разделе 1.4.7, с заданной продолжительностью прогона, куда мы вве- ли фиктивное событие завершения моделирования. Это событие само по себе является строго связанной составляющей без входящих стрелок, поэтому оно то- же должно инициализироваться, то есть завершение моделирования планирует- ся как часть процедуры инициализации. Невыполнение этого условия при- ведет к ошибочному завершению моделирования. Мы представили неполный упрощенный обзор метода представления событий с помощью графов. Он обладает и другими свойствами: отношениями отмены событий, способами взаимодействия подобных событий, усовершенствованием дуг для планирования событий с учетом условного планирования, а также включе- ния необходимых переменных состояния [Schruben, 1983b]. Сарджент [Sargent, 1988], а также Сом и Сарджент [Som and Sargent, 1989] эти методы расширили и усовершенствовали. Их работы содержали полные объяснения, где использова- лись гибкая производственная система и модели компьютерной сети. Представле- ние событий с помощью графов применимо для проверки эквивалентности двух разных с виду систем [Yucesan and Schruben (1998)]. Шрубен [Schruben, 1995] представил пакет программного обеспечения SIGMA, который позволяет созда- вать представления имитационных моделей с помощью графов на экране, а затем генерирует код и выполняет прогон модели. Пособием по изучению метода пред- ставления событий с помощью графов является работа Басса [Buss, 1996]. Рис. 1.12. Представление событий с помощью графов для системы массового обслуживания с заданной продолжительностью прогона При моделировании системы метод представления событий с помощью графов может быть использован для упрощения структуры и определения некоторых видов ошибок. Он бывает особенно полезен в сложных моделях с большим ко- личеством взаимосвязанных событий. Кроме того, следует иметь в виду и другие побудители, постоянно вынуждающие озадачиваться — зачем нужна та или иная переменная (см. задачу 1.4).
1.5. Моделирование системы управления запасами 85 1.5. Моделирование системы управления запасами Теперь перейдем к рассмотрению моделирования при сравнении стратегий осу- ществления заказов в системе управления запасами. Многие элементы нашей мо- дели характерны для действующих систем управления запасами. 1.5.1. Постановка задачи Компании, продающей один вид продукции, необходимо определить, какое коли- чество товара она должна иметь в запасе на каждый из последующих п мес. (п — заданный входной параметр). Промежутки времени между возникновением спро- са на товар являются независимыми и представлены случайными величинами, имеющими одинаковое распределение, со средним значением 0,1 мес. Объемы спроса D также являются независимыми (они не зависят от того, когда возникает спрос) и одинаково распределенными случайными величинами: 1 с вероятностью 2 с вероятностью |; 3 с вероятностью 4 с вероятностью |. В начале каждого месяца компания пересматривает уровень запасов и решает, какое количество товара заказать у поставщика. В случае, когда компания заказы- вает Z единиц товара, она будет нести затраты, равные К + iZ, где К — покупная стоимость, К = 32 доллара; i — дополнительные затраты на единицу заказанного товара, i = 3 доллара. (Если Z = 0, какие-либо затраты отсутствуют.) При оформле- нии заказа время, необходимое для его доставки (именуемое временем доставки или временем получения заказа), является случайной величиной, равномерно рас- пределенной между 0,5 и 1 мес. Компания использует постоянную стратегию управления запасами (s, S), что- бы определить, какое количество товаров заказывать, то есть если/<$; ~[0 если/>s. где I,S,s — это соответственно уровень запасов в начале месяца, после поступле- ния заказа и критический. При возникновении спроса на товар он немедленно удовлетворяется, если уро- вень запасов, по меньшей мере, равен спросу на товар. Если спрос превышает уровень запасов, поставка той части товара, которая превышает спрос над пред- ложением, откладывается и выполняется при будущих поставках. (В этом случае новый уровень запасов равен старому уровню запасов минус объем спроса, что приводит к появлению отрицательного уровня запасов.) При поступлении заказа товар в первую очередь используется для максимально возможного выполнения отложенных поставок (если таковые имеются); остаток заказа (если таковой име- ется) добавляется в запасы.
86 Глава 1. Основы имитационного моделирования Мы рассмотрели один тип расходов, возникающий в системе запасов, — это за- траты на приобретение заказа. Однако большинство реальных систем управления запасами сталкиваются еще с двумя дополнительными типами расходов — затра- тами на хранение, а также издержками, связанными с нехваткой товара, к кото- рым мы вернемся, введя некоторые дополнительные обозначения. Пусть I(t) - уровень запасов в момент времени t (обратите внимание, величина I(t) может быть положительной, отрицательной или равняться нулю); F(t) = max{/(t), 0} — количество товара, имеющегося в наличии в системе запасов на момент времени t (заметьте, что F(t) £ 0); a I~(t) = max{ -I(t), 0} — количество товара, поставка которого была отложена на момент времени t (T(t) £0.) Возможное изменение соотношения I(t), F(t) и I~(t) показано на рис. 1.13. Моменты времени, когда I(t) уменьшается, соот- ветствуют моментам возникновения спроса. В нашей модели предполагается, что затраты h на хранение в месяц составляют 1 доллар на единицу товара, имеющегося в (положительных) запасах. Затраты на хранение включают арендную плату за склад, страховки, расходы на обслужива- ние и налоги, а также скрытые издержки, возникающие, если капитал, вложенный в запасы, мог бы инвестироваться куда-нибудь еще. До сих пор в своих формули- ровках мы не учитывали тот факт, что некоторые затраты на хранение возникают даже тогда, когда F(t) = 0, поскольку наша задача — сравнить стратегии осуществ- ления заказов без учета этого фактора, который, по сути, не зависит от используе- мой стратегии и не повлияет на нашу оценку. Итак, если F(t) представляет коли- чество товара в запасах на момент времени t, то среднее по времени количество товара, находящегося в запасах в течение п мес., составляет njl+(t)dt 7+ = °------, п что подобно определению среднего числа требований, находящихся в очереди Рис. 1.13. Изменение количества товара 7(Г), Г(£) и Г(Г) по времени
1.5. Моделирование системы управления запасами 87 Допустим, что издержки п, связанные с отложенными поставками, равны 5 дол- ларам на единицу товара в отложенной поставке за месяц. При этом учитываются издержки на ведение дополнительного учета при невыполнении заказа и урон, на- носимый престижу компании. Среднее по времени количество товара в отложен- ных поставках п Г -----------. п Следовательно, средние издержки, образовавшиеся в связи с отложенными по- ставками, в месяц будут составлять itl . Предположим, что исходный уровень запасов /(0) = 60 и у компании нет непри- обретенных заказов. Будем моделировать работу системы в течение п — 120 мес. и воспользуемся показателями средних общих расходов в месяц (которые включают в себя сумму средних затрат на приобретение заказа в месяц, средних затрат на хра- нение в месяц и средних издержек, связанных с нехваткой товара, в месяц), чтобы сравнить следующие девять стратегий осуществления заказов (s — точка заказа): 5 20 20 20 20 40 40 40 60 60 S 40 60 80 100 60 80 100 80 100 В этой главе не рассматривается вопрос, каким образом выбраны такие страте- гии осуществления заказов (управления запасами); статистические методы подоб- ных определений описаны в главе 12. Обратите внимание, что переменными состояния имитационной модели этой системы управления запасами являются уровень запасов I(t), количество товара в невыполненном заказе, направленном от компании к поставщику, и время пос- леднего события, которое необходимо для вычисления площади под функциями Г(0иГ(0. 1.5.2. Организация и логика программы В рассматриваемой модели системы управления запасами используются следую- щие типы событий. Событие Тип события Поступление заказа от поставщика в компанию 1 Возникновение спроса на товар со стороны покупателя 2 Завершение моделирования через п мес. 3 Оценка запасов (и возможный заказ товаров) в начале месяца 4 Завершение моделирования мы сделали событием типа 3, а не 4, поскольку на момент времени 120 будут запланированы как событие завершения моделирова- ния, так и событие оценки запасов, а наша задача состоит в том, чтобы в это время первым было выполнено именно событие завершения моделирования. (В связи с тем, что моделирование закончится в момент времени 120, нет смысла оценивать
88 Глава 1. Основы имитационного моделирования запасы и возможные объемы заказов, соответственно нести издержки, относящие- ся к заказу, который никогда не прибудет.) Событие типа 3 всегда будет наступать прежде, чем событие типа 4, так как в случае планирования двух типов событий на одно время синхронизирующие процедуры (в обоих языках) отдают преимущест- во типу события с меньшим номером. Имитационная модель, по сути, должна быть разработана так, чтобы события обрабатывались в соответствующем порядке при возникновении временных связей. На рис. 1.14 показано представление собы- тий с помощью графов (см. раздел 1.4.8). Для моделирования этой системы нужны три типа случайных величин. Проме- жутки между возникновениями спроса распределены экспоненциально, значит, для них можно использовать алгоритм (и код), разработанный в разделе 1.4. Слу- чайная величина спроса D должна быть дискретной (как уже описывалось рань- ше), и может быть генерирована следующим образом. Вначале необходимо поде- лить единичный интервал на смежные подынтервалы Q = [0,1/6), С2 = [1/6,1/2), С3 = [1/2,5/6) и С4= [5/6,1) и от генератора случайных чисел получить случайную величину U с U(0,1). Если U попадает в интервал Си возвращаем D - 1; если Uпо- падает в интервал С2, возвращаем D = 2 и т. д. Так как ширина равна 1/6 - 0 = = 1/6, a Uравномерно распределена между интервалом [0,1], вероятность попада- ния U в интервал Cj (и получения результата D = 1) составляет 1/6; это согласует- ся с искомой вероятностью для D “ 1. Аналогичным образом мы возвращаем D = 2: если U попадает в интервал С2, вероятность такого попадания равна ширине С2, то есть 1/2 - 1/6 = 1/3, как и требовалось. То же самое касается и других интервалов. Все подпрограммы, применяемые для генерирования величин спроса, используют этот принцип и в качестве входных величин принимают разделяющие точки, опре- деляющие подынтервалы, которые являются интегральными вероятностями рас- пределения D. Рис. 1.14. Представление событий с помощью графов для модели системы управления запасами
1.5. Моделирование системы управления запасами 89 Время доставки равномерно распределено, но не в единичном интервале [0,1]. По сути, мы можем генерировать случайную величину, равномерно распределен- ную в любом интервале [а, А], сгенерировав случайное число U с U(0, 1), а затем возвратив а + U(b - а). (Формальное доказательство правильности этого метода приведено в разделе 8.3.1.) Из четырех событий в действительности только три вызывают изменения со- стояния системы (исключением является событие завершения моделирования). Поскольку их логика не зависит от языка программирования, используемого для моделирования, опишем ее в этом разделе. Событие поступления заказа (рис. 1.15) должно вносить изменения, возникаю- щие при доставке (ранее оформленного) заказа от поставщика. Уровень запасов увеличивается на число товаров в заказе, а событие поступления заказа должно быть исключено из рассмотрения. (Чтобы определить, может ли быть в модели с такими параметрами более одного невыполненного заказа за один раз, обрати- тесь к задаче 1.12.) При событии возникновения спроса (рис. 1.16) обрабатывают- ся изменения, необходимые для его представления. Рис. 1.15. Блок-схема программы обработки события поступления заказа для модели системы управления запасами Рис. 1.16. Блок-схема программы обработки события возникновения спроса для модели системы управления запасами
90 Глава 1. Основы имитационного моделирования При этом генерируется величина спроса, а уровень запасов уменьшается на по- лученную величину. И в конечном итоге в списке событий планируется время сле- дующего возникновения спроса. Обратите внимание, в этом месте уровень запасов может стать отрицательным. Блок-схема события оценки запасов, происходящего в начале каждого месяца, приведена на рис. 1.17. Рис. 1.17. Блок-схема программы обработки события оценки запасов для модели системы управления запасами Если уровень запасов 1(f) на время оценки составляет, по меньшей мере, s, за- каз не размещается, и происходит лишь планирование следующего события оцен- ки запасов в списке событий. Однако, если 1(f) < s, потребуется поместить заказ
1.5. Моделирование системы управления запасами 91 на 5 - I(t) товаров. Для этого количество заказанного товара [5 - 7(0] сохраняется до тех пор, пока не прибудет заказ и не будет запланировано время поступления заказа. В этом случае мы планируем следующим событием оценку запасов. Как и в модели системы массового обслуживания, так и в модели системы управления запасами удобнее отдельно выделить программу для обновления на- копителей статистики непрерывного времени, хотя в данной модели это сделать труднее. Блок-схема такой программы приведена на рис. 1.18. Основной вопрос в данном случае заключается в следующем: нужно ли нам обновлять площадь под функциями 7*(0 и r(t). Если в результате последнего события уровень запасов стал отрицательным, значит в системе есть отложенные поставки, следовательно, должна быть обновлена только площадь под функцией Г(0. Если уровень запасов положительный, нужно обновить только площадь под функцией Г(0. Если же уровень запасов равен 0 (что возможно), обновление не требуется. В коде этой программы на обоих языках значение переменной времени последнего события также меняется на текущее время. Указанная программа будет вызываться из ос- новной программы сразу после того, как синхронизирующая программа возвратит управление, независимо от типа события, а также от того, действительно ли уро- вень запасов изменился на данный момент. Таким образом обеспечивается про- стой (хотя и не самый эффективный в плане вычислений) способ обновления ин- тегралов статистики непрерывного времени. Рис. 1.18. Блок-схема программы обновления накопителей статистики непрерывного времени для модели системы управления запасами
92 Глава 1. Основы имитационного моделирования В разделах 1.5.3 и 1.5.4 содержатся программы моделирования этой системы на языках FORTRAN и С. Вы можете прочитать только один из этих разделов — в за- висимости от языковых предпочтений. В них отсутствует код синхронизирующей подпрограммы и подпрограммы генерирования экспоненциально распределенной величины, поскольку они такие же, как и в модели системы массового обслужива- ния (см. раздел 1.4), за исключением версии синхронизирующей программы на языке FORTRAN, где в операторе INCLUDE имя файла объявлений mml.dcl должно быть заменено на inv.dcL Кроме того, можно акцентировать внимание на подобии основных программ в моделях систем массового обслуживания и управления за- пасами на соответствующих языках. 1.5.3. Программа на языке FORTRAN Кроме основной программы модель системы управления запасами также исполь- зует подпрограммы и переменные языка FORTRAN, перечисленные в табл. 1.2. Весь код, который мы приводим в настоящей главе, может быть загружен с сайта www.mhhe.com/lawkelton. Таблица 1.2. Подпрограммы, функции и переменные языка FORTRAN ___________для модели системы управления запасами Подпрограмма Назначение INIT Программа инициализации TIMING Синхронизирующая программа ORDARV Программа обработки событий типа 1 DEMAND Программа обработки событий типа 2 REPORT Программа обработки событий типа 3 (генератор отчетов) EVALU8 Программа обработки событий типа 4 UPTAVG Перед возникновением каждого события обновляет площадь под функциями Г(£) и Г(Г) EXPON(RMEAN) Функция для генерирования экспоненциально распределенной случайной величины со средним RMEAN IRANDI(NVALUE.PROBD) Функция для генерирования случайной величины между 1 и NVALUE (положительным целым числом) в соответствии с функцией распределения PROBDII) (1-1,2,..., NVALUE). Если X — случайное целое число, вероятность того, что X примет значение, меныиее или равное I, задается PROBDI I). Значения NVALUE и PROBDI I) устанавливаются в основной программе. (Такой формат подпрограммы IRANDI выбран, чтобы ее использование согласовывалось с главой 2.) UNIFRM(A.B) Функция для генерирования случайной непрерывной величины, равномерно распределенной между А и В (А и В — вещественные числа, при этом А < В). RANDI1) Функция для генерирования равномерно распределенной случайной величины между 0 и 1 (см. листинг 7.1)
1.5. Моделирование системы управления запасами 93 Переменная Определение Входные параметры BIGS S, второе число в спецификации (s, S) стратегии управления запасами Н h, значение затрат на хранение единицы товара (в этом случае равно 1) INCRMC i, дополнительные затраты на единицу заказанного товара (равны 3) INITIL Исходный уровень запасов (равен 60) MAXLAG Максимальное время доставки (равно 1,0) MDEMDT Среднее время между возникновением спроса (равно 0,1) MINLAG Минимальное время доставки (равно 0,5) NMNTHS Длительность моделируемого периода, мес. (равно 120) NP.OLCY Число рассматриваемых стратегий управления запасами (равно 9) NVALUE Максимально возможный объем спроса (равен 4) PI я, значение издержек на единицу товара, поставка которого была отложена (равно 5) PROBD(I) Вероятность того, что спрос будет меньше или равен I SETUPC К, покупная стоимость заказа (равна 32) SMALLS s, первое число в спецификации (s, S) стратегии управления запасами Переменные моделирования AMINUS Площадь под функцией J~(t) на текущий момент AMOUNT Количество товара Z, заказанного компанией у поставщика APLUS Площадь под функцией Г (t) на текущий момент INVLEV /ft), уровень запасов NEVNTS Число типов событий для данной модели (в этом случае равно 4) NEXT Тип (1, 2,3 или 4) следующего события TIME Часы модельного времени TLEVNT Время последнего события TNE(I) Время следующего события типа I (I “ 1, 2, 3, 4) TORDC Общие затраты на приобретение заказа TSLE Время, прошедшее после последнего события U Случайная величина, равномерно распределенная между 0 и 1 Выходные переменные ACOST Средние общие расходы в месяц AHL DC Средние затраты на хранение в месяц AORDC Средние затраты на приобретение заказа в месяц ASHRC Средние издержки, связанные с нехваткой товара, в месяц
94 Глава 1. Основы имитационного моделирования Код основной программы приведен в листинге 1.29. В результате введения файла объявлений (листинг 1.30) и объявления локальных переменных I и NPOLCY как тип INTEGER открываются входной и выходной файлы, а число событий в NEVNTS устанавливается на 4. Затем считываются и записываются входные параметры (за исключением з и 5), а также создается заголовок отчета. В подпрограмме REPORT для каждой пары (s, 5) будет создана отдельная строка в результатах, соответст- вующих данному заголовку. После этого начинается цикл DO (метка 60), каждое повторение которого выполняет полное моделирование системы с указанной па- рой значений (з, 5). Прежде всего в цикле считываются значения для следующей пары (з, 5). Модель инициализируется с вызовом программы INIT, далее для опре- деления типа следующего события NEXT применяется программа TIMING, а для об- новления значения часов модельного времени — TIME. После возвращения управ- ления программой TIMING с типом следующего события вызывается программа UPTAVG, обновляющая статистику непрерывного времени перед выполнением са- мой программы обработки событий. Затем, как и раньше, с помощью вычисляемо- го оператора G0 ТО управление передается соответствующей программе обработки событий. В случае, если событие не является завершением моделирования, управ- ление снова передается оператору 10 (вызов программы TIMING), и моделирование продолжается. Если моделирование закончено (NEXT - 3), вызывается программа REPORT, и моделирование для текущей пары (з, 5) завершается. Листинг 1.29. Код на языке FORTRAN для основной программы (модель системы управления запасами) * Основная программа для системы управления запасами. * Вводим файл объявлений и объявляем локальные переменные. INCLUDE 'Inv.dcT INTEGER I.NPOLCY * Открываем входной и выходной файлы. OPEN (5. FILE - 'inv.in') OPEN (6, FILE - 'inv.ouf) * Указываем число типов событий для синхронизирующей программы. NEVNTS - 4 * Считываем входные параметры. READ (5,*) INITIL. NMNTHS, NPOLCY. NVALUE. MDEMDT, SETUPC. INCRMC. & H. PI. MINLAG. MAXLAG READ (5.*) (PROBD(I). I - 1, NVALUE) * Записываем заголовок отчета и входные параметры. WRITE (6,2010) INITIL, NVALUE. (PROBD(I), I - 1. NVALUE) 2010 FORMAT (' Система управления запасами с одним видом товара'// & ’ Исходный уровень запасов'.124.' единиц'// & ' Число объемов спроса',125// & ' Функция распределения объемов спроса'.2X.8F8.3)
1 ^.Моделирование системы управления запасами 95 ... WRITE (6.2020) MDEMDT. MINLAG. MAXLAG. NMNTHS. SETUPC. INCRMC, H. PI. NPOLCY ЙЙЙ FORMAT (' Среднее время между возникновением спроса.F26.2.' нес.'// 1.4 ’ Диапазон времени доставки’.F29.2.' no'F10.2’ мес.'// ' Длительность моделируемого периода'.123* мес.'// j 'К - '.F6.i.' i -’.F6.1.’ h -’.F6.1.' pi"'.F6.1// & ' Число стратегий'.129// & 10Х.4(8Х,'Среднее')/ & ’ Стратегия • общие расходы затраты на приобретение заказа'. & ' затраты на хранение издержки, связанные с нехваткой товара * Выполняем моделирование с разными стратегиями управления запасами. D0 60 I - 1. NPOLCY * Считываем параметры стратегии управления запасами и начинаем моделирование. READ (5.*) SMALLS. BIGS CALL INIT * Определяем следующее событие. 10 CALL TIMING * Обновляем среднестатистические накопители. CALL UPTAVG * Вызываем соответствующую программу обработки событий. G0 ТО (20 . 30 . 50 . 40). NEXT 20 CALL ORDARV GO TO 10 30 CALL DEMAND GO TO 10 40 CALL EVALU8 GO TO 10 50 CALL REPORT 60 CONTINUE CLOSE (5) CLOSE (6) STOP ENO Листинг 1.30. Код на языке FORTRAN для файла объявлений inv.dcl (модель системы управления запасами) INTEGER AMOUNT.BIGS.INITIL.INVLEV.NEVNTS,NEXT,NMNTHS.NVALUE.SMALLS REAL AMINUS.APLUS.H.INCRMC.MAXLAG.MDEMOt.MINLAG.PI.PR0BD(25). & SETUPC.TIME.TLEVNT.TNE(4),T0RDC INTEGER IRANDI REAL EXPON.UNIFRM COMMON /MODEL/ AMINUS.AMOUNT.APLUS.BIGS.H.INCRMC.INITIL.INVLEV. & MAXLAG. MDEMDT .MINLAG. NEVNTS. NEXT. NMNTHS. NVALUE. PI & PROBD,SETUPC.SMALLS.TIME.TLEVNT.TNE.TORDC
96 Глава 1 Основы имитационного моделирования Подпрограмма INIT приведена в листинге 1.31. Обратите внимание, что первая оценка запасов выполняется в момент времени TIME - 0, поскольку исходный уровень запасов может быть меньше s. Учет события типа 1 (поступление товара) отменяется, поскольку мы приняли допущение, что изначально в системе нет неприобретенных заказов. Листинг 1.31. Код на языке FORTRAN для подпрограммы INIT (модель системы управления запасами) SUBROUTINE INIT INCLUDE 'inv.dcl' Устанавливаем в исходное состояние часы модельного времени. TIME - 0.0 Устанавливаем в исходное состояние переменные состояния. INVLEV - INITIL TLEVNT - 0.0 Устанавливаем в исходное состояние статистические счетчики. TORDC - 0.0 APLUS - 0.0 MINUS - 0.0 Инициализируем список событий. Поскольку неприобретенных заказов нет, отменяем учет события поступления заказа. TNE(l) - 1.0Е+30 TNEC2) - TIME + EXPON(MDEMDT) TNE(3) - NMNTHS TNE(4) - 0.0 RETURN END Программы обработки событий ORDARV, DEMAND и EVALU8 (листинги 1.32-1.34) соответствуют описаниям, которые приведены в разделе 1.5.2 и на блок-схемах (рис. 1.15-1.17). Следует иметь в виду, что в программе DEMAND случайная величина спроса генерируется из функции IRANDI, а в программе EVALU8 переменная TORDC увеличивается на сумму затрат на приобретение любого заказанного товара. Листинг 1.32. Код на языке FORTRAN для подпрограммы ORDARV (модель системы управления запасами) SUBROUTINE ORDARV INCLUDE inv.dcl' Увеличиваем уровень запасов на заказанное количество товара. INVLEV - INVLEV + AMOUNT
1.5. Моделирование системы управления запасами 97 * Поскольку теперь в системе нет неприобретенных заказов, отменяем учет * события поступления заказа. TNE(l) - 1.0Е+30 RETURN END Листинг 1,33. Код на языке FORTRAN для подпрограммы DEMAND (модель системы управления запасами) SUBROUTINE DEMAND INCLUDE ’Inv.dcT * Уменьшаем уровень запасов на сгенерированный объем спроса. INVLEV - INVLEV - IRANDKNVALUE.PROBD) * Планируем время следующего возникновения спроса. TNE(2) - TIME + EXPON(MDEMDT) RETURN END Листинг 1.34. Код на языке FORTRAN для подпрограммы EVALUB (модель системы управления запасами) SUBROUTINE EVALU8 INCLUDE ’Inv.dcT * Проверяем, является ли уровень запасов меньше SMALLS. IF (INVLEV .LT. SMALLS) THEN * Уровень запасов меньше SMALLS, помещаем заказ * на соответствующее количество товара. AMOUNT - BIGS - INVLEV TORDC - TORDC + SETUPC + INCRMC + AMOUNT * Планируем поступление заказа. TNE(l) - TIME + UNIFRM(MINLAG.MAXLAG) END IF * Независимо то того, был ли оформлен заказ. * планируем следующую оценку запасов. TNE(4) - TIME + 1.0 RETURN END Генератор отчетов (листинг 1.35) по отдельности вычисляет три составляющие общих расходов, а затем складывает их, чтобы получить средние общие расходы
98 Глава 1. Основы имитационного моделирования в месяц ACOST. Вместе со средними общими расходами в месяц и тремя их состав1 ляющими (затратами на приобретение заказа, затратами на хранение и издержка- ми, связанными с нехваткой товаров) записываются текущие значения s и 5 с це- лью идентификации стратегии. Листинг 1.35. Код на языке FORTRAN для подпрограммы REPDRT (модель системы управления запасами) SUBROUTINE REPORT f INCLUDE 1inv.dcl' REAL ACOST.AHLDC.AORDC.ASHRC * Вычисляем и записываем оценки искомых показателей. AORDC - TORDC / NMNTHS AHLDC - Н * APLUS / NMNTHS ASHRC - PI * AMINUS / NMNTHS ACOST - AORDC + AHLDC + ASHRC WRITE (6.2010) SMALLS. BIGS. ACOST. AORDC. AHLDC. ASHRC 2010 FORMAT (/' ('ДЗ.’ЛЗ.ТЛНб.г RETURN END Код подпрограммы UPTAVG (см. раздел 1.5.2 и рис. 1.18) показан в листинге 1.36. На языке FORTRAN она выполнена с помощью вычисляемого оператора if (это довольно старый и редко используемый элемент), заканчивающийся тремя поме- ченными операторами (в этом случае 10,20 и 30), которым передается управление, в зависимости от того, каким оказывается аргумент (в этом случае просто INVLEV): отрицательным, нулевым или положительным. Как и в модели системы массового обслуживания, описанной в разделе 1.4, если моделирование будет продолжитель- ным, может возникнуть потребность установить для переменных TIME и TLEVNT тип DOUBLE PRECISION, для того чтобы избежать при вычитании грубых ошибок, связан- ных с округлением. Листинг 1.36. Код на языке FORTRAN для подпрограммы UPTAVG (модель системы управления запасами) SUBROUTINE UPTAVG INCLUDE 'Inv.dcl' REAL TSLE * Вычисляем время, прошедшее с последнего события, и обновляем маркер * времени последнего события. TSLE - TIME - TLEVNT TLEVNT - TIME * Определяем состояние уровня запасов в течение предыдущего интервала. * Если уровень запасов в течение предыдущего интервала был * отрицательным, обновляем AMINUS. Если он равен 0. в обновлении нет * необходимости. Если положительным, обновляем APLUS. IF (INVLEV) 10. 20. 30 10 AMINUS - AMINUS - INVLEV * TSLE
1.5. Моделирование системы управления запасами 99 20 RETURN 30 APLUS - APLUS + INVLEV * TSLE RETURN END к Код для функции IRANDI (листинг 1.37) будет генерировать целое число между 1 и NVALUE в соответствии с функцией распределения PROBD(I) при условии, что заданы значения NVALUE и PROBD(I) (I - 1,2,NVALUE). (В нашем случае NVALUE - 4, PR0BDC1) - 1/6, PR0BDC2) - 1/2, PR0BDC3) - 5/6, PR0BD(4) - 1; все значения указаны с точностью до трех знаков после запятой при вводе.) Логика моделирования соответствует объяснениям, приведенным в разделе 1.5.2. Обратите внимание, что входной массив PROBD должен содержать кумулятивную функцию распределения (а не вероятности), значение которой она принимает в качестве своих возможных значений. Листинг 1.37. Код на языке FORTRAN для функции IRANDI INTEGER FUNCTION IRANDI EXPON(NVALUE.PROBD) INTEGER I.NVALUE REAL PROBD(1).U REAL RAND * - Генерируем случайную величину U(0.1). U - RAND(l) * Возвращаем случайное целое число от 1 до NVALUE в соответствии * с кумулятивной функцией распределения PROBD. DO 10 I - 1. NVALUE - 1 IF (U .LT. PROBD(D) THEN IRANDI - I RETURN END IF 10 CONTINUE IRANDI - NVALUE RETURN END Функция UNIFRM показана в листинге 1.38, описана в разделе 1.5.2. Листинг 1.38. Код на языке FORTRAN для функции UNIFRM REAL FUNCTION UNIFRM(A.B) REAL A.В REAL RAND * Возвращаем случайную величину U(A.B). UNIFRM - A + RAND(l) * (B - A) RETURN END
100 Глава 1. Основы имитационного моделирования 1.5.4. Программа на языке С Внешние определения показаны в листинге 1.39. Массив prob_di stri b_demand пред- назначен для хранения кумулятивных вероятностей объемов спроса, он передает- ся в функцию генерирования случайных целых чисел random_1 integer. Как и для системы массового обслуживания, необходимо включить заголовочный файл legrand.h (см. листинг 7.3), чтобы объявить функции генератора случайных чисел (код показан в листинге 7.2). Код можно найти на сайте www.mhhe.com/lawkelton. Код основной функции приведен в листинге 1.40. После опфытия входного и выходного файлов число событий устанавливается на 4. Затем считываются и записываются входные параметры, а также создается заголовок отчета. В функции report для каждой пары (s, S) создается отдельная строка в результатах, соответст- вующих этому заголовку. Затем начинается цикл for, каждое повторение которого выполняет полное моделирование системы с указанной парой (s, S). В первую оче- редь в цикле считываются значения следующей пары (s, S). После этого модель инициализируется, и цикл do whi 1 е выполняет моделирование до тех пор, пока не произойдет событие типа 3 (завершение моделирования), как уже объяснялось в разделе 1.4.7. В цикле применяется синхронизирующая функция, которая опре- деляет тип следующего события и обновляет значения часов модельного времени. После возвращения управления синхронизирующей функции с типом следующего события обновляется статистика непрерывного времени перед выполнением са- мой программы обработки событий. Для того чтобы передать управление соответ- ствующей программе обработки событий, используется оператор switch. В отли- чие от правила останова с фиксированным временем, которое использовалось в разделе 1.4.7, в данном случае по завершении цикла do whi 1 е мы не останавлива- ем работу программы, а переходим к ее следующей стадии, когда цикл for считы- вает значения следующей пары (s, S), и снова выполняется отдельное моделирова- ние. Выполнение всей программы завершается только тогда, когда заканчивается выполнение цикла for и не остается непроверенных пар (s, S). Листинг 1.39. Код на языке С для внешних определений (модель системы управления запасами) /* Внешние определения для модели системы управления запасами. */ #include <stdio.h> #1nclude <math.h> #include "legrand.h” /* Заголовочный файл для генератора случайного числа. */ int amount, bigs. 1n1tial_inv_level. inv_leve1, next_event_type. num_events. numjnonths, num_values_demand, smalls; float areajiolding. area_shortage. holding cost, incremental_cost. maxlag. mean_interdemand. minlag. prob_distrib_demand[26], setup_cost. shortage_cost. sim_time, time_last_event, time_next_event[5L total_order1 ngcost; FILE *1nfile. *outfile; void initlallze(void); void timing(void); void order_arr1val(void); void demand!vold):
1.5. Моделирование системы управления запасами 101 void evaluate(void): void report(void); void update_t1me_avg_stats(void): float expon(float mean): int random_integer(float prob_di$trib []); float uniform(float a. float b): Листинг 1.40. Код на языке С для основной функции (модель системы управления запасами) mainO /* Основная функция. */ { int 1. num_pol1cies; /* Открываем входной и выходной файлы. */ Infile - fopenCinv.in", "г"); outfile - fopen("inv.out". V): /* Указываем число событий для синхронизирующей функции. */ num_events - 4; /* Считываем входные параметры. */ fscanf(1nf11e, "Xd Xd Xd Xd Xf Xf Xf Xf Xf Xf Xf". &1nitia1_1nv_level. &num_months. &numj)olicies, &num_values_deniand. &mean_interdemand. &setup_cost, &incremental_cost. &holding_cost. &shortage_cost. &minlag. &maxlag): for (1 - 1: i <- num_values_demand: ++1) fscanf(infile. "Xf". &prob_distrib_danand[i]); /* Записываем заголовок отчета и входные параметры. */ fprintf(outfile. "Система управления запасами с одним видом товара\п\п"); fprlntf(outfile. "Исходный уровень запасовХ24б единиц\п\п". initial-invlevel): fprintf(outf1le. "Число объемов cnpocaX25d\n\n". num_values_den>and); fprlntf(outfile. "Функция распределения объемов спроса "); for (1 - 1; 1 <- num_values_demand; ++1) fprintf(outfile, "X8.3f". prob_distrib_demand[1]); fprintf(outfile. "\п\пСреднее время между возникновением cnpocaX26.2f\n\n". mean_1nterdemand); fprintf(outfile. "Диапазон времени fl0CTaBKMX29.2f toX10.2f мес.\п\п". minlag.maxlag); fprintf(outf1le. "Длительность моделируемого периодаХ23б мес.\п\п". numjnonths): fprlntf(outfile. "К -X6.1f 1 -X6.1f h -X6.1f pi -X6.1f\n\n". setup_cost. incremental_cost. holding cost. shortage_cost); fprintf(outfile. "Число стратегййХ29б\п\п". numjpollcies); fprlntf(outfile. " Среднее Среднее"): fprintf(outf1le, " Среднее СреднееХп"): fprintf(outfile. " Стратегия общие расходы затраты на приобретение заказа"); fprintf(outfile. " затраты на хранение издержки, связанные с нехваткой товара"): /* Выполняем моделирование с разными стратегиями управления запасами. */ for (1 - 1; i <- num_pol1cies; ++1) { продолжение &
102 Глава I. Основы имитационного моделирования Листинг 1.40 (продолжение) /* Считываем параметры стратегии управления запасами и инициализируем моделирование. */ fscanf(infile. "Id Id", bsmalls. &bigs): InitializeO; /* Выполняем моделирование до тех пор, пока оно не прервется по возникновении события завершения моделирования (тип 3). */ do { /* Определяем следующее событие. */ timingO; /* Обновляем среднестатистические накопители. */ update time_avg_stats(); /* Вызываем соответствующую событийную функцию. */ switch (next_event_type) { case 1: order_arrival(); break; case 2: dentandO; break; case 4: evaluateO; break; case 3: reportO; break; } /* Если только что было выполнено событие, отличное от завершения моделирования (тип 3). продолжаем моделирование. В противном случае завершаем моделирование системы для текущей пары (s.S) и переходим к следующей паре (если они есть). */ } while (next_event_type !- 3); } /* Полностью завершаем моделирование. */ fclose(infile); fclose(outfile); return 0; } Функция инициализации приведена в листинге 1.41. Первая оценка запасов выполняется в момент времени 0, так как исходный уровень запасов может быть меньше s, а учет события типа 1 (поступление товара) отменяется, поскольку мы приняли допущение, что изначально в системе нет неприобретенных заказов.
1.5. Моделирование системы управления запасами 103 Листинг 1.41. Код на языке С для функции инициализации (модель системы управления запасами) void initialize(void) /* Функция инициализации. */ { /* Устанавливаем в исходное состояние часы модельного времени. */ sim_time - 0.0; /* Устанавливаем в исходное состояние переменные состояния. */ inv_level - initial_inv_level; time_last_event - 0.0; /* Устанавливаем в исходное состояние статистические счетчики. */ tota1_ordering_cost - 0.0; area_holding - 0.0; area_shortage - 0.0; /* Инициализируем список событий. Поскольку неприобретенных заказов нет. отменяем учет события поступления заказа. */ time_next_event[l] - 1.0е+30; time_next_event[2] - sim_t1me + expon(mean_interdemand); t1me_next_event[3] - numjnonths; time_next~event[4] - 0.0: } Событийные функции order_arrival, demand и evaluate (листинги 1.42-1.44) соответствуют описаниям, которые приведены в разделе 1.5.2 и на блок-схемах рис. 1.15-1.17. В функции evaluate переменная total_ordering_cost увеличивается на сумму затрат на приобретение заказа для любого заказа, который мог быть раз- мещен при ее выполнении. Листинг 1.42. Код на языке С для функции order arrival (модель системы управления запасами) void order_arrival(void) /* Событийная функция для поступления заказа. */ { /* Увеличиваем уровень запасов на заказанное количество товара. */ inv level +- amount; /* Поскольку теперь в системе нет неприобретенных заказов, отменяем учет события поступления заказа. */ time next_event[l] - 1.0e+30: } Листинг 1.43. Код на языке С для функции demand (модель системы управления запасами) void demand(void) /* Событийная функция для возникновения спроса. */ { /* Уменьшаем уровень запасов на сгенерированный объем спроса. */ inv_level -- random_integer(prob_distrib_demand); продолжение
104 Глава 1. Основы имитационного моделирования Листинг 1.43 (продолжение) /* Планируем время следующего возникновения спроса. */ timejiext_event[2] - sim_time + expon(mean_interdemand); } Листинг 1.44. Код на языке С для функции evaluate (модель системы управления запасами) void evaluate(void) /* Событийная функция для оценки запасов. */ { /* Проверяем, является ли уровень запасов меньше smalls. */ if (inv_1evel < smalls) { /* Уровень запасов меньше smalls, оформляем заказ на соответствующее количество товара. */ amount - bigs - invlevel; total_ordering_cost +- setup cost + incremental_cost * amount; /* Планируем поступление заказа. */ time_next_event[l] - sinrtime + uniform(m1nlag. maxlag); } /* Независимо то того, был ли оформлен заказ, планируем следующую оценку запасов. */ time_next event[4] - sim time + 1.0; } Генератор отчетов (листинг 1,45) по отдельности вычисляет три составляющие общих расходов (затраты на приобретение заказа, затраты на хранение и издерж- ки, связанные с нехваткой товаров), а после этого складывает их, чтобы получить средние общие расходы в месяц. Вместе со средними общими расходами в месяц и тремя их составляющими записываются текущие значения s и 5 с целью иденти- фикации стратегии. Листинг 1.45. Код на языке С для функции report (модель системы управления запасами) void report(void) /* Функция генератора отчетов. */ { /* Вычисляем и записываем оценки искомых показателей. */ float avg_holding_cost. avg_ordering_cost, avg_shortage_cost; avg_ordering_cost - total_ordering_cost I numjnonths: avg_holding_cost - holding_cost * area holding / numjnonths: avg_shortage cost - shortage cost * area_shortage / numjnonths; fprintf(outfile. "\n\n(mX3d)X15.2fX15.2m5.2m5.2f". smalls, bigs. avg_ordering_cost + avg_ho1ding_cost + avg_shortage_cost. avg_ordering_cost. avg_holding_cost. avg_shortage cost); }
1.5. Моделирование системы управления запасами 10S Код функции update_time_avg_stats (см. раздел 1.5.2 и рис. 1.18) показан в лис- тинге 1.46. Если при этом уровень запасов invjevel равен 0, то не выполняется ни условие if, ни условие else if, в результате обновление не происходит, что и тре- бовалось. Как и в модели системы массового обслуживания, описанной в разде- ле 1.4, если моделирование будет охватывать длительное время, возможно, пона- добится установить для переменных sim time и timejast_event тип double, чтобы избежать при вычитании грубых ошибок, связанных с округлением. Листинг 1.46. Код на языке С для функции update_time_avg_stats (модель системы управления запасами) void update_time_avg_stats(void) /* Обновляем накопители площади для статистики среднего времени. */ { float time_since_last_event; /* Вычисляем время, прошедшее после последнего события. и обновляем маркер времени последнего события. */ time_sincejast_event - sim_tlme - timejastevent; tlme_last_event - sim time; /* Определяем состояние уровня запасов в течение предыдущего интервала. Если уровень запасов в течение предыдущего интервала был отрицательным, обновляем area_shortage. Если положительным - обновляем area_holding. Если он равен нулю, в обновлении нет необходимости. */ if (Invlevel < 0) area_shortage -- invjevel * time_since_last_event; else if (invjevel > 0) area_holding +- invjevel * time sincejast_event; } Код для функции random 1 nteger (листинг 1.47) будет генерировать целое число в соответствии с функцией распределения prob_distrib[I] при условии, что зада- ны значения prob_distrib[I]. (В нашем случае prob_distrib[l] = 1/6, prob_dis- trib[2] - 1/2, prob_distrib[3] - 5/6, prob_distrib[4] = 1; все значения указаны с точностью до трех знаков после запятой при вводе.) Логика соответствует объяс- нениям из раздела 1.5.2. Заметим, что входной массив функции prob_distrib дол- жен содержать кумулятивную функцию распределения (а не вероятности), значе- ние которой она принимает в качестве своих возможных значений. Функция uniform показана в листинге 1.48, а ее описание уже приводилось в разделе 1.5.2. Листинг 1.47. Код на языке С для функции random ! nteger int randomjnteger(float prob distrib[]) /* Функция генерации случайного целого числа. */ { int 1; float u; /* Генерируем случайную величину U(0.1). */ u - lcgrand(l); продолжение &
10S Глава 1. Основы имитационного моделирования Листинг 1.47 (продолжение) /* Возвращаем случайное целое число в соответствии с кумулятивной функцией распределения prob_d1str1b. */ for (1 - 1; u >- prob_distrib[i]; ++i) return 1; } Листинг 1.48. Код на языке С для функции uniform float uniform(float a, float b) /* Функция генерирования равномерно распределенной случайной величины. */ { /* Возвращаем случайную величину 11(А.В). */ return а + lcgrand(l) * (b - а); } 1.5.5. Выходные данные моделирования Отчет (в файле inv.out), который был получен в ходе моделирования, показан в листинге 1.49. У этой модели существуют отличия в результатах для разных язы- ков, компиляторов и компьютеров, несмотря на использование одного алгоритма генератора случайных чисел (эти расхождения объяснены в начале раздела 1.4.4). Три составляющие средних общих расходов в месяц выделены с тем, чтобы оп- ределить, как они сами по себе реагируют на изменения значений s и S, когда нуж- на проверка модели и кода. Например, если оставить s со значением 20 неизмен- ным и увеличивать S от 40 до 100, затраты на хранение будут возрастать с 9,25 до 36,00 долларов в месяц, в то же время издержки, связанные с нехваткой товара, бу- дут уменьшаться. Затраты на приобретение заказов также уменьшатся с увеличе- нием значения S, поскольку оформление заказов с большими значениями S будет осуществляться реже. Таким образом, можно избегать излишних затрат на приоб- ретение товара. Точно так же, если оставить S со значением 100 неизменным и уве- личивать s от 20 до 60, это уменьшит издержки, связанные с нехваткой товара (7,95; 1,30; 0,24 доллара), и увеличит затраты на хранение (36,00; 46,42 и 53,91 дол- лара), так как при увеличении значения s запасы будут уменьшаться все медлен- нее. Если мы и можем, не прибегая к моделированию, сказать, в каком направле- нии будут изменяться расходы, определяемые тремя составляющими, то сказать что-либо об их сумме без моделирования не представляется возможным. Листинг 1.49. Отчет с выходными данными (модель системы управления запасами) Система управления запасами с одним видон товара Исходный уровень запасов 60 единиц Число объемов спроса 4 Функция распределения объемов спроса 0.167 0.500 0.833 1.000
1.5. Моделирование системы управления запасами 107 Среднее время между возникновениями спроса 0.10 мес. Диапазон времени доставки 0.50 до 1.00 мес Длительность моделируемого периода 120 мес. К - 32.0 1-3.0 h - 1.0 р1 - 5.0 Число стратегий 9 Средние общие Средние затраты на приобретение Средние затраты Средние издержки, связанные с нехваткой Стратегия расходы заказа на хранение товара (20. 40) 126.61 99.26 9.25 18.10 (20. 60) 122.74 90.52 17.39 14.83 (20. ВО) 123.86 87.36 26.24 10.26 (20.100) 125.32 81.37 36.00 7.95 (40. 60) 126.37 98.43 25.99 1.95 (40. 80) 125.46 88.40 35.92 1.14 (40.100) 132.34 84.62 46.42 1.30 (60. 80) 150.02 105.69 44.02 0.31 (60.100) 143.20 89.05 53.91 0.24 Поскольку оцениваемым критерием общих расходов в месяц является сумма трех составляющих, которые, реагируя на изменения, иногда изменяются в раз- ных направлениях, без моделирования невозможно предвидеть направление из- менения самого критерия. Поэтому мы просто выбираем из полученных данных наилучший вариант — это стратегия (20,60), когда средние месячные расходы со- ставляют 122,74 доллара. Однако в рассматриваемом случае с фиксированной длительностью моделируемого периода (компанию интересует период планиро- вания 10 лет) в действительности надо оценить средние общие расходы в месяц в течение первых 120 мес. для каждой стратегии. Числа в листинге 1.49 являются оценками этих ожидаемых величин, каждая оценка основывается на единичной выборке (на одном прогоне имитационной модели или репликации). Не исключе- но, что эти оценки будут существенно колебаться, их порядок может значительно отличаться от порядка ожидаемых величин, являющихся искомыми данными. В сущности, если повторно выполнить все девять случаев моделирования, исполь- зуя различные случайные величины U(0,1), полученные оценки могут существен- но отличаться от представленных в листинге 1.49. Более того, порядок новых оце- нок также может быть другим. Из сказанного можно сделать вывод — если длительность прогона имитацион- ной модели фиксируется самой постановкой проблемы, одного прогона имитаци- онной модели для каждой интересующей нас стратегии или системы недостаточ- но. (В главе 9 рассматривается вопрос о том, сколько прогонов модели нужно выполнить, чтобы получить точные оценки требуемых величин. В главах 10 и 12 освещаются проблемы, связанные с получением нескольких различных требуемых величин при работе с альтернативными системами.)
108 Глава 1. Основы имитационного моделирования 1.6. Альтернативные подходы к созданию имитационных моделей Разработчики моделирования изначально направляли свои усилия на поиск новых и более совершенных способов моделирования систем, используя при этом сущест- вующее компьютерное оборудование и программное обеспечение. Таким образом, происходило создание коммерческого программного обеспечения для моделирова- ния (см. главу 3). В этом разделе мы остановимся на двух общих и во многом неза- висимых программных разработках, которые могут оказать существенное влияние на практику имитационного моделирования и его программное обеспечение. 1.6.1. Параллельное и распределенное моделирование Все модели, описанные в разделах 1.4 и 1.5 (а также те, к которым мы обратимся в главе 2), действуют приблизительно одинаково. Часы модельного времени взаи- модействуют со списком событий, в результате чего определяется, какое событие будет обрабатываться следующим. Часы переводятся на время возникновения этого события, а компьютер выполняет логику события, которая может потребо- вать: обновить переменные, обработать списки очередей и событий, сгенерировать случайные числа и величины, собрать статистику. Данная логика выполняется в соответствии с модельным временем возникновения событий, то есть в этих слу- чаях моделирование является последовательным. Более того, всю работу выпол- няет один компьютер. В последние годы компьютерная технология позволила связывать отдельные компьютеры или процессоры в параллельную или распределенную вычислитель- ную среду. Например, несколько относительно недорогих мини-компьютеров (или даже микрокомпьютеров) могут быть связаны друг с другом с помощью сети, а в более крупном компьютере можно разместить несколько процессоров, которые будут работать как сами по себе, так и во взаимодействии друг с другом. Такая вы- числительная среда позволяет распределять различные части задачи между от- дельными процессорами, работающими одновременно или параллельно, и таким образом уменьшать общее время, необходимое для решения данной задачи. Конеч- но, такая возможность во многом зависит от сути самой задачи, а также от доступ- ного компьютерного оборудования и программного обеспечения. В настоящее время распределенная и параллельная обработка используется во многих облас- тях, например при оптимизации и проектировании баз данных. В этом разделе мы обсудим некоторые попытки применить упомянутые идеи в динамическом моделировании. Более подробную информацию, а также ссылки на оригинальные источники вы найдете в работах Чандрасекарана и Шеппарда [Chandrasekaran and Sheppard, 1987], Миера [Misra, 1986], Фуджимото [Fujimoto, 1993], Никола [Nicol, 1996], Багродиа [Bagrodia, 1996], Никола и Хейдельбергера [Nicol and Heidelberger, 1996], Фуджимото [Fujimoto, 1998]. Анализ конкретных приложений для параллельного и распределенного моделирования дается в кни- гах Никола, Джонсона и Йошимуры [Nicol, Johnson and Yoshimura, 1997], а также Каротерса и др. [Carothers et al., 1997]. Кроме того, узнать о самых последних раз-
1.6. Альтернативные подходы к созданию имитационных моделей 109 работках в этой области, можно из журнала ACM Transactions on Modeling and Computer Simulation (TOMACS), а также ежегодника Proceedings of the Winter Si- mulation Conference. Существует много способов разделить динамически моделируемые системы на части, то есть распределить работу между различными процессорами. Пожалуй, самый прямой способ — это распределение отдельных «функций поддержки» (на- пример, генерирования случайных чисел, генерирования случайных величин, об- работки списка событий, обработки списков и очередей, а также сбора статисти- ки) по различным процессорам. Логическое выполнение моделирования все же остается последовательным, как в программах разделов 1.4 и 1.5, однако теперь «главная» моделирующая программа может передавать выполнение функций поддержки другим процессорам и продолжать свою работу. Например, когда в мо- дели из раздела 1.4 понадобится обновить список очереди, главная моделирующая программа передает сообщение процессору, выполняющему эту функцию, указы- вая, что именно должно быть сделано. Процессор выполнит поставленную перед ним задачу одновременно с дальнейшим выполнением главной программы. О реа- лизации этой идеи сообщается в работе Шеппарда [Sheppard et al., 1985]. Комфорт [Comfort, 1984], в частности, рассматривает обработку списка событий при орга- низации процессоров по принципу «главный-подчиненный», так как обработка списка событий может занимать наибольшую часть времени при прогоне имита- ционной модели (см. раздел 2.8). Другой способ распределения имитационной модели между различными про- цессорами —декомпозиция модели на отдельные подмодели, которые выполняют- ся несколькими процессорами. Например, производственное оборудование очень часто моделируется как сеть взаимосвязанных станций обслуживания, каждая из них представляет отдельный тип операций (см. раздел 2.7). Отдельные подмодели (или их труппы) распределены между различными процессорами, и каждый из них моделирует свою часть системы. Необходимость обеспечивать соответствую- щие логические отношения между подмоделями предусматривает обмен инфор- мацией между процессорами. В примере с производственным оборудованием зто происходит, когда деталь покидает одну станцию и переходит к другой станции, моделируемой на другом процессоре. Но не следует забывать о необходимости со- блюдать правильную временную последовательность выполнения операций, то есть о синхронизации обработки подмоделей различными процессорами для пра- вильного представления общих действий модели. Одно из основных преимуществ такого вида распределенного моделирования заключается в отсутствии глобаль- ных часов модельного времени и полного списка событий. Поскольку обработка списка событий при традиционном имитационном моделировании может занять много времени, возможность выполнения программы без списка событий — весь- ма привлекательная идея (см. раздел 2.8). Место часов модельного времени и спи- ска событий занимает система для передачи сообщений между процессорами, где каждое сообщение содержит «отметку времени». Недостаток такого метода за- ключается в том, что при моделировании может возникнуть тупик — два процес- сора будут вынуждены ожидать сообщения друг от друга для продолжения работы (даже если в реальной моделируемой системе такое не произойдет). Аналогичная
110 Глава 1. Основы имитационного моделирования ситуация может привести к остановке моделирования, поэтому должен приме- няться метод нахождения и устранения тупиков (или возможность их избегать). Этот метод распределенного моделирования был изначально разработан Чанди и Миера [Chandy and Misra, 1979, 1981, 1983], а также рассматривается в работе Миера [Misra, 1986]. Другая концепция, связанная с распределением подмоделей между параллель- ными процессорами, известна как концепция виртуального времени, реализован- ная через механизм изменения шкалы времени [Jefferson, 1985]. Выше указывалось, что каждый процессор моделирует свою часть системы по времени, но не ожидает получения сообщений от других процессоров, обладающих возможностью рабо- тать одновременно с ним, хотя и с различной скоростью. Такое ожидание неизбеж- но при описанном подходе с передачей сообщений. Если подмодель, создаваемая отдельным процессором, получает сообщение, которое она должна была получить ранее (и оно потенциально влияет на ее действия с того момента времени), для этой подмодели выполняется откат путем возвращения ее времени к более ран- нему моменту получения сообщения. Например, подмодель Б моделировалась до момента времени 87, и в это время поступило сообщение от подмодели А, которое модель Б должна была получить в момент времени 61. Тогда часы для подмодели переводятся назад на момент времени 61, а моделирование подмодели Б между мо- ментами времени 61 и 87 отменяется, поскольку без учета сообщения от момента времени 61 оно могло быть выполнено неправильно. При этом к отмененной части моделирования могут относиться сообщения другим подмоделям, теперь каждое из них аннулируется посредством отправки соответствующего антисообщения. Антисообщения, в свою очередь, могут генерировать вторичные откаты в полу- чающих подмоделях и т. д. Подход, когда, во-первых, работа, выполненная между моментами времени 61 и 87, утрачивается, а во-вторых, в связи с откатом модели- рования возникают дополнительные расходы, может показаться неудачным. Од- нако при этом процессоры все время заняты моделированием (за исключением времени отката), вместо того чтобы бездействовать в ожидании сообщений перед дальнейшим «правильным» продвижением моделирования по времени. В стохасти- ческом моделировании нельзя точно определить, понадобится ли откат, поэтому механизм изменения шкалы времени называют «рулеткой». Его недостаток заклю- чается в возникновении расходов на дополнительную память и обработку возмож- ных откатов, а преимущество состоит в том, что откаты могут быть редкими, и все процессоры будут продолжать продвижение вперед в моделировании. Более того, при использовании механизма изменения шкалы времени не появляются тупики. Вопросы разработки и оценки распределенной обработки при моделировании активно исследуются. Однако уже теперь ясно, что, насколько удачным окажется тот или иной метод (и будет ли он работать вообще), зависит от структуры и пара- метров модели, а также от доступной компьютерной среды. Например, если мо- дель можно поделить на подмодели, слабо связанные между собой (в частности сеть очередей, в которой требования редко переходят из одной очереди в другую), тогда любая из схем распределения моделирования, описанных выше, может пре- доставлять некоторые преимущества.
1.7. Этапы в исследовании системы посредством моделирования 111 Специальные исследования по эффективности распределенного моделирова- ния описаны в работах Лавенберга, Мунца и Самади [Lavenberg, Muntz and Sa- madi, 1983], Комфорта [Comfort, 1984], Хейдельбергера [Heidelberger, 1988]. В по- следней из работ рассматривается влияние распределенного моделирования на статистическую эффективность со смешанными результатами (а не на время, не- обходимое для прогона модели). В книгах Шанкера, Келтона и Падмана [Shanker, Kelton and Padman, 1993; Shanker, Padman and Kelton, 2000] можно найти инфор- мацию о том, как лучше поделить имитационную модель для распределения меж- ду параллельными процессорами, в том числе с возможностью динамического из- менения такого деления во время прогона. 1.6.2. Моделирование в Интернете и моделирование с использованием веб-узлов В связи с быстрым развитием Интернета и World Wide Web возникает естествен- ный вопрос, каким образом эта гигантская (и все еще в основном неконтролируе- мая) сеть может служить для создания, распределения, модификации и, прогона имитационных моделей. Исследован широкий спектр подобных вопросов, в том числе использование механизмов клиент-сервер для увеличения производитель- ности, распространение имитационных моделей и результатов их выполнения, публикация и обучение [Fishwick, 1996,1997]. Общий обзор подходов к моделиро- ванию с использованием веб-узлов, базирующийся на характерных примерах дан в работе Лоренца и др. [Lorenz et al., 1997]. Пока еще трудно предсказать, как Интернет и веб-узлы могут повлиять на моделирование. Однако очевидно, что вопрос является весьма актуальным, и многие специалисты исследуют самые раз- нообразные способы применения этой технологии для расширения возможностей моделирования. 1.7. Этапы в исследовании системы посредством моделирования Теперь, когда мы изучили некоторые подробности внутренней работы дискретно- событийного моделирования, нужно вернуться назад, чтобы понять: программи- рование модели — всего лишь часть общих усилий, направленных на разработку и анализ сложной системы посредством моделирования. При этом внимание дол- жно уделяться множеству разных вопросов, в частности статистическому анализу выходных данных моделирования и управлению проектом. На рис 1.19 показаны этапы, составляющие типичное исследование системы посредством моделирова- ния [Banks, Carson and Nelson, 1996; Law, 1999; Law and McComas, 1990]. Число возле символа, представляющего отдельный этап, соответствует номеру более под- робного описания этого этапа, приведенного ниже. Заметьте, что исследование по- средством моделирования — это не простой последовательный процесс, он пред- полагает необходимость часто возвращаться назад, к предыдущему этапу.
112 Глава 1. Основы имитационного моделирования Рис. 1.19. Этапы исследования системы с помощью моделирования
1,7. Этапы в исследовании системы посредством моделирования 113 1. Формулировка задачи и планирование исследования системы. 1.1. Постановка задачи руководителем. 1.2. Проведение ряда встреч с руководителем проекта, аналитиками имитаци- онного моделирования и экспертами по изучаемой тематике с целью ис- следования системы. Рассмотрение следующих вопросов: — глобальная цель исследования; — специальные вопросы, на которые должно ответить исследование; — критерии качества работы, используемые в будущем для оценки эффек- тивности различных конфигураций системы; — масштаб модели; — моделируемые конфигурации системы; — применяемое программное обеспечение (см. главу 3); — временной интервал для исследования и необходимые ресурсы. 2. Сбор данных и определение модели. 2.1. Сбор информации о конфигурации системы и способах эксплуатации, ко- торая сводится к тому, что: — одного специалиста в данном случае недостаточно; — необходимо привлечь экспертов по изучаемой тематике, владеющих до- стоверной информацией; — способы эксплуатации нельзя формализовать. 2.2. Сбор данных (если это возможно) для определения параметров модели и входных распределений вероятностей (см. главу 6). 2.3. Схематическое изображение данных в «описании допущений*, представля- ющем собой концептуальную модель (см. раздел 5.4.3). 2.4. Сбор данных (по возможности) о рабочих характеристиках существующей системы (с целью осуществления проверки на этапе 6). 2.5. Выбор уровня детальности модели в зависимости от перечисленных ни- же факторов: — цели проекта; — критериев качества работ; — доступности данных; — интересов достоверности; — компьютерных возможностей; — мнений экспертов по изучаемой тематике; - ограничений, связанных со временем и финансированием. 2.6. Установление между каждым элементом модели и соответствующим ему элементом системы взаимно-однозначного соответствия. 2.7. Регулярное взаимодействие с руководителем и другими ведущими специ- алистами проекта (см. раздел 5.4.2).
114 Глава 1. Основы имитационного моделирования 3. Определение адекватности концептуальной модели. 3.1. Выполнение структурного анализа концептуальной модели с предостав- . лением описания допущений на рассмотрение аудитории, которая состо- ит из руководителей, аналитиков, а также экспертов по изучаемой тема- тике (см. раздел 5.4.3), принимая во внимание, что: — анализ помогает убедиться, что допущения, принятые для модели, вер- ны и ничего не упущено; — анализ обеспечивает право собственности на модель; — анализ выполняется до начала программирования, чтобы в дальнейшем избежать перепрограммирования модели. 4. Создание компьютерной программы и ев проверка. 4.1. Программирование модели (на языке FORTRAN или С) или с помощью программного обеспечения для моделирования (в частности, Arena, Auto- Mod, Extend, ProModel, WITNESS). Преимущество использования язы- ков программирования заключается в том, что, как известно, у них невы- сокая закупочная стоимость, и созданная с их помощью модель требует меньше времени для выполнения. Использование программного обеспе- чения моделирования (см. главу 3) уменьщает время программирования, поэтому в итоге дает меньшую стоимость всего проекта. 4.2. Проверка моделирующей компьютерной программы, а также ее отладка (см. раздел 5.3). 5. Выполнение предварительных прогонов. 5.1. Выполнение предварительных прогонов с целью осуществления провер- ки на этапе 6. 6. Проверка соответствия программной модели. 6.1. Если есть существующая система — сравнение критериев качества рабо- ты и существующей системы (этап 2). 6.2. Независимо от наличия существующей системы — просмотр аналитика- ми и экспертами по изучаемой теме результатов прогонов модели с це- лью определения их правильности. 6.3. Использование анализа чувствительности (см. раздел 5.4.4) для определе- ния факторов модели, имеющих существенное влияние на критерии качес- тва работы системы, так как их следует моделировать очень точно. 7. Планирование экспериментов. 7.1. Детальное изложенйе того, что является важным для каждой системной конфигурации: — длительность каждого прогона; — длительность переходного периода (если он необходим); — количество независимых прогонов имитационной модели с использо- ванием различных случайных чисел (см. главу 7), что потребуется при построении доверительных интервалов.
1.8. Другие виды моделирования 115 8. Выполнение рабочих прогонов. 8.1. Выполнение рабочих прогонов для получения результатов, которые по- надобятся на этапе 9. 9. Анализ выходных данных. 9.1. Обработка выходных данных с целью: — определения абсолютных характеристик известной конфигурации сис- темы (см. главу 9); — проведения относительного сравнения альтернативных конфигураций системы (см. главу 10 и раздел 11.2). 10. Документальное представление и использование результатов. 10.1. Документальное оформление допущений (см. этап 2) компьютерной про- граммы и результатов исследования для использования в текущем и бу- дущих проектах. 10.2. Представление результатов исследования: — использование анимации (см. главу 3) для объяснения модели руко- водителям и другим людям, которым не известны все ее подробности; — обсуждение процесса создания модели и ее достоверности, чтобы по- высить уровень доверия к ней. 10.3. Использование результатов в процессе принятия решений, если они дей- ствительны и достоверны. 1.8. Другие виды моделирования Хотя в нашей книге основное внимание уделяется дискретно-событийному моде- лированию, некоторые другие виды моделирования также имеют большое значе- ние. Попытаемся вкратце разъяснить суть этих видов моделирования и сравнить их с дискретно-событийным моделированием. В частности, рассмотрим непре- рывное, непрерывно-дискретное моделирование, а также моделирование по мето- ду Монте-Карло. 1.8.1. Непрерывное моделирование Непрерывное моделирование — это моделирование системы по времени с помо- щью представления, в котором переменные состояния меняются непрерывно по отношению ко времени. Как правило, в непрерывных имитационных моделях ис- пользуются дифференциальные уравнения, которые устанавливают отношения для скоростей изменения переменных состояния во времени. Если дифференци- альные уравнения очень просты, их можно решать аналитически, чтобы предста- вить значения переменных состояния для всех значений времени как функцию значений переменных состояния в момент времени 0. При больших непрерывных моделях аналитическое решение невозможно, но для численного интегрирования дифференциальных уравнений в случае с заданными специальными значениями
116 Глава 1. Основы имитационного моделирования для переменных состояния в момент времени 0 используются технологии числен- ного анализа, например интегрирование Рунге-Кутта. Некоторые продукты для моделирования, в частности SIMULINK и Dymola, разрабатывались специально с целью создания непрерывных имитационных мо- делей. Кроме того, такие пакеты дискретно-событийного моделирования, как Are- na [Pegden, Shannon and Sadowski, 1995], AweSim [Pritsker and O’Reilly, 1999] и Extend [Imagine, 1997b], имеют возможности для непрерывного моделирования и дополнительные возможности, которые позволяют использовать дискретные и непрерывные компоненты в одной модели одновременно (см. раздел 1.8.2). (Все, кто интересуется приложениями для непрерывного моделирования, могут обра- титься к материалам журнала Simulation.) Пример 1.3. Рассмотрим непрерывную модель соперничества между двумя популяция- ми. Биологические модели такого типа, именуемые моделями хищник-добыча (или па- разит-хозяин), рассматривались многими авторами, в том числе Брауном [Braun, 1975, р. 583] и Гордоном [Gordon, 1978, р. 103]. Среда представлена двумя популяциями — хищников и добычи, взаимодействующими друг с другом. Добыча пассивна, но хищни- ки зависят от ее популяции, поскольку она является для них источником пищи. (Напри- мер, хищниками могут быть акулы, а добычей — рыба, которой они питаются [Braun, 1975].) Пусть x(t) и y(t) обозначают численность особей в популяциях соответственно добычи и хищников в момент времени t. Допустим, популяция добычи имеет обильные запасы пищи; при отсутствии хищников темп ее прироста составит rx(t) для некоторого положительного значения г (г — естественный уровень рождаемости минус естествен- ный уровень смертности). Существование взаимодействия между хищниками и добы- чей дает основание предположить, что уровень смертности добычи в связи с этим взаи- модействием пропорционален произведению численностей обоих популяций x(t)y(t). Поэтому общий темп изменения популяции добычи dx/dt может быть представлен как = rx(t) - ax(t)y(t), (1.8) где а — положительный коэффициент пропорциональности. Поскольку существование самих хищников зависит от популяции добычи, темп изменения популяции хищников в отсутствии добычи составляет -sy(t) для некоторого положительного s. Более того, взаимодействие между двумя популяциями приводит к росту популяции хищников, темп которого также пропорционален x(t)y(t). Следовательно, общий темп изменения популяции хищников dy/dt составляет = ~sy(t) + bx(f)y(f), (1.9) где b — положительный коэффициент пропорциональности. При начальных условиях х(0) > 0 и у(0) > 0 решение модели, определенной уравнениями (1.8) и (1.9), имеет инте- ресное свойство: x(t) > 0 и y(t) > 0 для любого t i 0 [Braun, 1975]. Следовательно, попу- ляция добычи никогда не будет полностью уничтожена хищниками. Решение {*(£), y(t)} также является периодической функцией времени. Иными словами, существует такое значение Г > 0, при котором x(t + п7) - х(Г) и у (Г + п7) ~ y(t) для любого положительно- го целого числа п. Такой результат не является неожиданным. По мере увеличения по- пуляции хищников популяция добычи уменьшается. Это приводит к снижению темпа роста популяции хищников и, соответственно, вызывает уменьшение их числа, что, в свою очередь, ведет к увеличению популяции добычи и т. д.
1.8. Другие виды моделирования 117 Рассмотрим отдельные значения г-0,001; с-2 х 106;s~0,01;i- 10'6; исходные разме- ры популяций составляют х(0) - 12 000 и у(0) ~ 600. На рис. 1.20 представлено числен- ное решение уравнений (1.8) и (1.9), полученное при использовании вычислительного пакета, разработанного для численного решения систем дифференциальных уравнений (а не языка непрерывного моделирования). Рис. 1.20. Численное решение модели хищник-добыча Обратите внимание на то, что приведенный выше пример полностью детерми- нистический, то есть в ием нет случайных компонентов. Однако имитационная модель может содержать и неизвестные величины; например, в уравнения (1.8) и (1.9) могут быть добавлены случайные величины, которые каким-то образом за- висят от времени, или постоянные множители могут быть смоделированы как ве- личины, случайно изменяющие свои значения в определенные моменты времени. 1.8.2. Комбинированное непрерывно-дискретное моделирование Поскольку некоторые из систем невозможно отнести ни к полностью дискретным, ни к полностью непрерывным, может возникнуть необходимость в создании моде- ли, которая объединяет в себе аспекты как дискретно-событийного, так и непре- рывного моделирования, в результате чего получается комбинированное непрерыв- но- дискретное моделирование. Между дискретным и непрерывным изменениями
118 Глава 1. Основы имитационного моделирования переменных состояния могут происходить три основных типа взаимодействия [Pritsker, 1995, р. 61-62]: ♦ дискретное событие может вызвать дискретное изменение в значении не- прерывной переменной состояния; ♦ в определенный момент времени дискретное событие может вызвать изме- нение отношения, управляющего непрерывной переменной состояния; ♦ непрерывная переменная состояния, достигшая порогового значения, мо- жет вызвать возникновение или планирование дискретного события. Комбинированные непрерывно-дискретные имитационные модели могут соз- даваться с помощью пакетов Arena [Pegden, Shannon, Sadowski, 1995], AweSim [Pritsker and O’Reilly, 1999] и Extend [Imagine, 1997b]. В следующем примере комбинированного непрерывно-дискретного моделиро- вания дано краткое описание модели, подробно рассмотренной Прицкером [Prits- ker, 1995, р. 354-364], который в своей работе приводит и другие примеры этого типа моделирования. Пример 1.4. Танкеры, перевозящие нефть, прибывают в один разгрузочный док, попол- няя резервуар-хранилище, из которого нефть по трубопроводу попадает на нефтепере- гонный завод. Из разгружающегося танкера нефть подается в резервуар-хранилище с по- стоянной скоростью. (Танкеры, прибывающие к занятому доку, образуют очередь.) На нефтеперегонный завод нефть подается из резервуара с различными заданными скорос- тями. Док открыт с 6.00 до 24.00. По соображениям безопасности разгрузка танкеров прекращается по закрытии дока. Дискретными событиями в этой (упрощенной) модели являются прибытие танкера на разгрузку, закрытие дока в полночь и открытие в 6.00. Уровни нефти в разгружающемся танкере и резервуаре-хранилище задаются переменными непрерывного состояния, ско- рости изменения которых описаны с помощью дифференциальных уравнений [Pritsker, 1995, р. 354-364]. Разгрузка танкера считается завершенной, когда уровень нефти в тан- кере составляет менее 5 % его емкости, но разгрузка должна быть временно прекращена, если уровень нефти в резервуаре-хранилище станет равным его емкости. Разгрузка мо- жет быть возобновлена, когда уровень нефти в резервуаре станет меньше 80 % его емко- сти. В случае если уровень нефти в резервуаре станет меньше 5000 баррелей, нефтепере- гонный завод должен быть временно закрыт. Для того чтобы избежать частого закрытия и возобновления работы завода, подача нефти из резервуара на завод не будет возобнов- ляться до тех пор, пока в нем не наберется 50 000 баррелей нефти. Каждое из пяти собы- тий, связанных с уровнем нефти (например, падение уровня нефти ниже 5 % емкости танкера), по определению Прицкера, является событием состояния. В отличие от диск- ретных событий, события состояния не планируются, они происходят, когда перемен- ные непрерывного состояния переходят пороговое значение. 1.8.3. Моделирование по методу Монте-Карло Моделирование по методу Монте-Карло определяется как процедура, в которой используются случайные числа, то есть случайные величины U(0,1). Такая проце- дура предназначена для решения стохастических и детерминистических задач, в которых течение времени не играет особой роли. Следовательно, моделирование по методу Монте-Карло является скорее статическим, чем динамическим. Хотя
1.8. Другие виды моделирования 119 некоторые авторы утверждают, что метод Монте-Карло применим к любому типу моделирования, в котором используются случайные числа, мы считаем, что его использование более ограничено. Название метода Монте-Карло появилось во вре- мя второй мировой войны, когда этот подход был применен к проблемам, связан- ным с разработкой атомной бомбы. Подробное изложение сути метода вы найдете в работах Хаммерсли и Хандскомба [Hammersley and Handscomb, 1964], Халтона [Halton, 1970], Рубинштейна [Rubinstein, 1981, 1992], Моргана [Morgan, 1984], Фиптмана [Fishman, 1996], а также Рубинштейна, Меламеда и Шапиро [Rubin- stein, Melamed and Shapiro, 1998]. Пример 1.5. Предположим, необходимо оценить интеграл Ь 7= jg(x)dr, а где g(x) является действительной функцией, которую нельзя интегрировать аналити- чески. (На практике моделирование по методу Монте-Карло вряд ли будет использо- ваться для оценки одного единственного интеграла, так как для этого существуют более эффективные методы численного анализа. Вероятнее, что он будет применяться для ре- шения задач на кратные интегралы с нерегулярной подынтегральной функцией.) Рас- смотрим, как детерминистическая задача может быть решена с помощью моделиро- вания методом Монте-Карло. Пусть Y будет случайной величиной (б - a)g(X), где X — непрерывная случайная величина, распределенная равномерно между [а, б] (обозна- ченная как U(a, b)). Тогда математическое ожидание значения Y E(Y) = E[(b-a)g(X)] = = (b-a)E[g(X)] = b = (b-a')jg(x')fx(x)dx = a b jg^dx = {b-a)^r--------1, ' ' b-a где Д(х) - 1/(6 - a) — плотность распределения вероятностей случайной величины U(o, Ъ) (см. раздел 6.2.2). (Обоснование третьего равенства приведено в работе Росса [Ross, 1997, р. 42].) Таким образом, задача оценки интеграла упрощена до оценки ожи- даемой величины E(Y). В частности, оценим £(У) “ /по выборочному среднему ---, гдеХк Х2..Х^ — независимые и одинаково распределенные случайные величины U(a, b). (Выборочное среднее У(п) можно рассматривать как площадь прямоугольника с длиной (Ь - а) и высотой I /(Ь - а), которое является непрерывным средним g(x) между [а, 6].) Более того, можно показать, что Е [У(п) - 7], то естьУ(я) является несмещенной оценкой I, a Var[y(n)] - Var(T)/n (см. раздел 4.4)1. Допустим, что дисперсия Var(F) является ко- нечной, из чего следует, что значение У (я) будет сколь угодно близко к I для достаточно большого значения п с вероятностью, равной 1 (см. раздел 4.6). 1 Обозначение Var используется для дисперсии. — Примеч. ред.
120 Глава 1. Основы имитационного моделирования Для демонстрации описанной выше схемы в численном отношении предположим, что необходимо оценить интеграл Л I = jsinxdr, О который, как показывают элементарные вычисления, может иметь значение 2. Результа- ты применения моделирования по методу Монте-Карло для оценки этого интеграла при разных значений п приведены в табл. 1.3. Таблица 1.3. У(п) при разных значениях п, полученные в результате применения моделирования по методу Монте-Карло для оценки интеграла £sinazfc = 2 п 10 20 40 80 160 У(я) 2,213 1,951 1,948 1,989 1,993 В настоящее время моделирование по методу Монте-Карло широко применя- ется при решении определенных задач статистики, которые не поддаются анали- тической обработке. Этот тип моделирования применялся для оценки критиче- ских значений или достоверности критерия при проверке гипотезы. Определение критических значений критерия соответствия тесту Колмогорова- Смирнова для нормальности (рассматривается в разделе 6.6) является примером такого приме- нения. Дополнительные сведения можно получить, обратившись к техническим журналам Communications in Statistics (Pt. В. Simulation and Computation), Journal of Statistical Computation and Simulation и Technometrics, каждый из которых содер- жит множество примеров этого типа моделирования. Наконец, процедуры, рассматриваемые в разделе 9.4, могут быть использованы при определении объема выборки и, необходимого для получения заданной точно- сти в исследовании посредством моделирования по методу Монте-Карло. 1.9. Преимущества, недостатки и ошибки моделирования Эту вводную главу мы завершаем перечнем достоинств и недостатков моделиро- вания (в сравнении с другими методами исследования систем). Рассмотрим также некоторые общие ошибки, допускаемые при исследовании систем посредством моделирования, которые могут нарушить ход моделирования или даже полностью сделать проект непригодным. Данный вопрос в определенной мере уже обсуждал- ся в разделе 1.2, однако теперь, когда мы проработали некоторые примеры моде- лирования систем, можно говорить об этом более конкретно. Как уже шла речь в разделе 1.2, моделирование широко применяется для иссле- дования сложных систем. Популярности моделирования в этой сфере способству- ют его преимущества. ♦ Большинство из сложных реальных систем со стохастическими элементами не могут быть точно описаны с помощью математических моделей, которые
1.9. Преимущества, недостатки и ошибки моделирования 121 можно оценить аналитически, поэтому моделирование становится единствен- но возможным методом их исследования. ♦ Моделирование позволяет оценить эксплуатационные показатели существу- ющей системы при некоторых проектных условиях эксплуатации. ♦ Путем моделирования можно сравнивать предлагаемые альтернативные вари- анты проектов системы (или альтернативные стратегии эксплуатации для кон- кретной системы), чтобы определить, какой из них больше соответствует ука- занным требованиям. ♦ При моделировании мы можем обеспечить гораздо более эффективный конт- роль условий эксперимента, нежели при экспериментировании с самой систе- мой (см. главу 11). ♦ Моделирование позволяет изучить длительный интервал функционирования системы (скажем, экономической) в сжатые сроки или, наоборот, изучить бо- лее подробно работу системы в развернутый интервал времени. Конечно, моделирование имеет и свои недостатки. ♦ Каждый из прогонов стохастической имитационной модели позволяет полу- чить лишь оценки настоящих характеристик модели для определенного набора входных параметров1. Следовательно, для каждого изучаемого набора входных параметров понадобится несколько независимых прогонов модели (см. гла- ву 9). По этой причине имитационные модели не столь удобны при оптимиза- ции, как при сравнении определенного числа альтернативных проектов систе- мы. Однако с помощью аналитической модели, в случае, если она подходит для решения данной задачи, часто можно легко получить точные настоящие характеристики модели для различных наборов входных параметров. Поэто- му, если доступна или может быть легко разработана аналитическая модель, адекватная системе, лучше использовать именно ее, а не обращаться к имита- ционному моделированию. ♦ Обычно разработка имитационных моделей дорого стоит и занимает много времени. ♦ Большое число данных, получаемых в результате исследования посредством моделирования, или убедительное влияние реалистичной анимации часто при- водят к тому, что результатам такого исследования доверяют больше, чем это оправдано (см. раздел 3.4.3). Если модель не является адекватным представле- нием изучаемой системы, результаты моделирования (какими бы убедительны- ми они ни казались) будут содержать мало полезной информации о действи- тельной системе. Принимая решение, подходит ли исследование посредством моделирования к конкретной ситуации, следует учитывать все указанные преимущества и недос- татки имитационного моделирования. Кроме того, обратите внимание, что в неко- торых исследованиях можно использовать как аналитические модели, так и ими- тационное моделирование. В частности, моделирование может быть использовано 1 Речь идет о стохастических имитационных моделях. В случае использования детерминированных имитационных моделей (без учета случайных факторов) за один прогон модели получают точные значения выходных переменных, а не их оценки. — Примеч. ред.
122 Глава 1. Основы имитационного моделирования для проверки обоснованности допущений, необходимых для аналитической моде- ли. И наоборот, аналитическая модель может предложить рациональные альтер- нативы для исследования системы посредством моделирования. Предположим, что все-таки выбрано моделирование. Однако успешному ис- следованию с помощью модели могут помешать такие обстоятельства [Law and McComas, 1998]: ♦ нечеткая постановка задач в начале исследования системы посредством мо- делирования; ♦ недостаточный уровень проработки деталей модели; ♦ недостаток согласованности с руководством в процессе исследования сис- темы посредством моделирования; ♦ неправильное понимание моделирования руководством; ♦ подход к исследованию системы посредством моделирования как к просто- му упражнению в программировании; ♦ отсутствие в команде, работающей над моделированием системы, специа- листов со знанием методологии моделирования (см. главы 5, 6, 9 и др.); ♦ недостаточная подборка данных по системе; * неподходящее программное обеспечение моделирования; ♦ использование в явном виде программного обеспечения для моделирова- ния, сложные макрооператоры которого не могут быть надлежащим обра- зом подтверждены документально и не могут реализовать нужную модель- ную логику; ♦ ошибочность убеждений в том, что для работы с простыми в употреблении пакетами программ для моделирования, почти не нуждающимися в про- граммировании, достаточно более низкого уровня технической подготовки; ♦ неправильное использование анимации; ♦ неверное определение источников случайных величин в реальных системах; ♦ использование произвольных распределений (то есть нормальных, равно- мерных и треугольных) в качестве входных параметров моделирования; ♦ анализ выходных данных, полученных в результате одного прогона имита- ционной модели, с помощью формул, допускающих независимость; + отношение к выходным статистическим данным, полученным на основании единственного прогона определенного проекта системы, как к единственно правильным ответам; ♦ сравнение альтернативных проектов системы на основе одного прогона каж- дого проекта; + использование неправильных критериев оценки работы. В последующих главах книги мы расскажем о том, что следует делать при модели- ровании (а не о том, чего делать не следует).
Приложение 1A 123 Приложение 1А Продвижение времени посредством постоянного шага Как уже упоминалось в разделе 1.3.1, второй основной подход к продвижению ча- сов модельного времени в дискретно-событийной имитационной модели называ- ется продвижением времени посредством постоянного шага. При таком подходе часы модельного времени продвигаются точно на & единиц времени для како- го-либо соответствующего выбора At. После каждого обновления часов выполня- ется проверка с целью определить, произошли ли какие-либо события в течение предыдущего интервала времени At. Если на этот интервал запланированы одно или несколько событий, считается, что данные события происходят в конце интер- вала, после чего состояние системы и статистические счетчики соответствующим образом обновляются. Продвижение времени посредством постоянного шага про- демонстрировано на рис. 1.21, где изогнутые стрелки показывают продвижение часов модельного времени, a e, (i= 1,2,...) — это действительное время возникнове- ния события i любого типа (а не значение часов модельного времени). В интервале [О, At) событие происходит в момент времени eit но оно рассматривается как прои- зошедшее в момент времени At. В интервале [At, 2At) события не происходят, все же модель выполняет проверку, чтобы убедиться в этом. В интервале [2At, 3At) со- бытия происходят в моменты времени е2 и е3, однако считается, что они произош- ли в момент времени 3 At и т. д. В ситуациях, когда принято считать, что два или не- сколько событий происходят в одно и то же время, необходимо применение ряда правил, позволяющих определять, в каком порядке обрабатывать события. Таким образом, продвижение времени посредством постоянного шага имеет два недос- татка: возникновение ошибок, связанных с обработкой событий в конце интерва- ла, в течение которого они происходят, а также необходимость решать, какое со- бытие обрабатывать первым, если события, в действительности происходящие в разное время, рассматриваются как одновременные. Подобного рода проблемы можно частично решить, сделав интервалы At менее продолжительными, но тогда возрастает число проверок возникновения событий, что приводит к увеличению времени выполнения задачи. Принимая во внимание это обстоятельство, продви- жение времени с помощью постоянного шага не используют в дискретно-собы- тийных имитационных моделях, когда интервалы времени между последователь- ными событиями могут значительно отличаться по своей продолжительности. О Ci At 2At е2 е3 3At е4 4At Время Рис. 1.21. Пример продвижения времени посредством постоянного шага В основном этот подход предназначен для систем, в которых можно допустить, что все события в действительности происходят в один из моментов п времени At (и - 0,1, 2,...) для соответственно выбранного At. Так, в экономических системах
124 Глава 1. Основы имитационного моделирования данные часто предоставляются за годичные промежутки времени, поэтому естест- венно в имитационной модели установить продвижение времени с шагом, равным одному году. Информацию о моделировании экономических систем можно найти в работе Нейлора [Naylor, 1971]. (В разделе 4.3 речь пойдет о системе управления запасами, в которой может использоваться продвижение времени посредством постоянного шага без потерь точности.) Следует заметить, что продвижение времени посредством постоянного шага мо- жет быть выполнено с помощью механизма продвижения времени от события к со- бытию, если планировать время возникновения событий через At единиц времени. Приложение 1Б Начала моделирования систем массового обслуживания Система массового обслуживания состоит из одного или нескольких устройств обслуживания, которые предоставляют какие-либо услуги требованиям. Требова- ния, поступающие (как правило), когда все устройства заняты, образуют одну или несколько очередей к устройствам обслуживания. Во многих случаях исследование системы посредством дискретно-событий- ного моделирования связано с моделированием реальной системы массового об- служивания или, по крайней мере, какого-либо ее компонента, который является системой массового обслуживания. Поэтому, как нам представляется, те, кто изу- чают моделирование, должны знать хотя бы азы, касающиеся компонентов сис- темы массового обслуживания, стандартных обозначений систем массового об- служивания и рабочих характеристик, которые используются для определения качества услуг, предоставляемых такими системами. В табл. 1.4 приведены неко- торые примеры реальных систем массового обслуживания. Дополнительную ин- формацию об этих системах можно получить из работы Гросса и Харриса [Gross and Harris, 1998]. Тем, кто интересуется системами массового обслуживания сетей связи, рекомендуется работа Берцекаса и Галлагера [Bertsekas and Gallager, 1992]. В книге Шантивумара и Бузакотта [Shanthikumar and Buzacott, 1993] рассматрива- ются стохастические модели производственных систем. Таблица 1.4. Примеры систем массового обслуживания Система Устройства обслуживания Требования Банк Кассы Клиенты Больница Врачи, санитары, больничные койки Пациенты Компьютер Центральный процессор, устройства ввода-вывода Задачи Производство Станки, рабочие Детали Аэропорт Взлетно-посадочные полосы, выходы, пункты регистрации пассажиров Самолеты, пассажиры Сеть связи Узлы, линии связи Сообщения, пакеты
Приложение 1Б 125 1Б.1. Компоненты системы массового обслуживания Система массового обслуживания включает в себя три компонента: процесс по- ступления, механизм обслуживания и дисциплину обслуживания. Процесс поступления состоит из описания механизма появления требований в системе массового обслуживания. Допустим, что Л, — время между поступления- ми требования (г - 1) и требования i (см. раздел 1.3). Если Alt Л2,... являются неза- висимыми и одинаково распределенными величинами, то среднее (или математи- ческое ожидание) время между поступлениями можно обозначить как Е(А), аХ- 1/£(Л) будет интенсивностью поступления требований. Механизм обслуживания в системе массового обслуживания определяется сле- дующими факторами: числом устройств обслуживания (обозначаемым как з), на- личием для каждого устройства своей очереди или существованием одной очере- ди для всех устройств и распределением вероятностей времени обслуживания требований. Пусть 5{ обозначает время обслуживания поступившего требования i. Если 5ц 52,... — независимые и одинаково распределенные величины, то среднее время обслуживания требования выразится как Е(5) и скорость обслуживания требований составит <а “ 1/Е(5). Дисциплина обслуживания определяется правилом, которое устройство обслу- живания использует для выбора из очереди следующего требования (если та- ковые есть) по завершении обслуживания текущего требования. Обычно исполь- зуются такие дисциплины очереди: ♦ FIFO (First-In, First-Out): требования обслуживаются по принципу «первым прибыл — первым обслужен»; ♦ LIFO (Last-In, First-Out): требования обслуживаются по принципу «послед- ним прибыл — первым обслужен» (см. задачу 2.17); ♦ приоритет-, требования обслуживаются в порядке их значимости (см. зада- чу 2.22) или в соответствии с требованиями к обслуживанию (см. задачи 1.24, 2.20 и 2.21). 1Б.2. Обозначения для систем массового обслуживания Некоторые системы массового обслуживания так часто встречаются на практике, что для них разработаны специальные обозначения. В частности, возьмем систе- му массового обслуживания, изображенную на рис. 1.22, которая обладает следу- ющими характеристиками. 1)з устройств массового обслуживания и одна очередь FIFO для всех этих уст- ройств; 2)Ли А2,... — независимые и одинаково распределенные величины; 3)5„ 52,... — независимые и одинаково распределенные величины; 4) величины At и 5{ не зависят друг от друга. Такая система массового обслуживания обозначается как GI/G/s, при этом GI (General Independent — произвольное независимое) относится к распределению величин Аь a G (General — произвольное) — к распределению величин 5(. Если для
126 Глава 1. Основы имитационного моделирования величин А, и 5( задаются специальные распределения (как всегда происходит при моделировании), вместо GI и G используются символы, обозначающие эти рас- пределения. Для распределения по экспоненциальному закону применяется сим- вол М — Марковский, то есть без памяти, свойственный экспоненциальному рас- пределению (см. задачу 4.26). Символ Ек предназначен для распределения Эрланга k-то порядка (если X является переменной с распределением Эрланга k-ro поряд- ка, то X = гДе величины У, - независимые и одинаково экспоненциально распределенные величины), а символ D — для детерминистических (или постоян- ных) интервалов времени. Система массового обслуживания с одним устройством обслуживания и экспоненциально распределенными интервалами между поступ- лениями требований и временем обслуживания, где применяется дисциплина об- служивания FIFO, обозначается М/М/1. Рис. 1.22. Система массового обслуживания GI/G/s Для любой системы массового обслуживания GI/G/s величина р = А/(5Ю) на- зывается коэффициентом использования системы массового обслуживания (зи — скорость обслуживания в системе, когда заняты все устройства обслуживания); это показатель того, насколько задействованы ресурсы системы. 1 Б.З. Критерии оценки работы систем массового обслуживания Существует множество критериев оценки работы систем массового обслужива- ния. В этом разделе рассмотрены те четыре показателя, которые обычно исполь- зуются при математическом исследовании систем массового обслуживания. Од- нако не следует делать вывод, что эти показатели являются наиболее важными на практике (см. главу 9). На самом деле для некоторых реальных систем они не могут быть четко определены, то есть они не существуют. Пусть D} — задержка в очереди требования г; W{ - D{ + S{ — время ожидания в системе требования i;
Приложение 1Б 127 Q(t) — число требований в очереди в момент времени t; L(t) — число требований в системе в момент времени t (Q(t) плюс число требований, которые находятся на обслуживании в момент времени t). Тогда показатели d = lim ——: с вероятностью 1 п-*х> п И w = lim —— с вероятностью 1 я-*» п (если они существуют) называются установившейся средней задержкой и устано- вившимся средним временем ожидания. Соответственно показатели Q = -——— с вероятностью 1 и г jL(t)dt L = -——— с вероятностью 1 (если они существуют) называются установившимся средним по времени числом требований в очереди и установившимся средним по времени числом требований в системе. Здесь и далее в этой книге выражение «с вероятностью 1» дано для со- блюдения математической правильности и не имеет особого практического значе- ния. Допустим, что JJ=i DJn-td при п -> оо (с вероятностью 1) для некоторой сис- темы массового обслуживания. Если выполняется очень большое (бесконечное) число экспериментов, эти средние задержки УД1 /п фактически в каждом экспе- рименте стремятся к конечной величине d. Заметьте, что р < 1 — обязательное условие существования d, w, Q и L в системе массового обслуживания GI/G/s. К наиболее общим и нужным результатам для систем массового обслуживания относятся уравнения сохранения Q = и L = Xw, выполняющие для любой системы массового обслуживания, где существуют по- казатели d и w [Stidham, 1974]. (В разделе 11.5 показан пример моделирования с этими отношениями.) Еще одно важное уравнение (см. разделы 1.4.6и 11.5) — ' w = rf + E(5). Следует обратить внимание, что упомянутые, выше критерии оценки работы системы могут быть аналитически вычислены для систем массового обслужива- ния M/M/s (з 1)t M/G/i. при . любом распределении G и для некоторых других систем. Вообще распределение времени между поступлениями, распределение вре- мени обслуживания или обеих этих величин должно быть экспоненциальным (или разновидностью экспоненциального распределения Эрланга А-го порядка), чтобы аналитическое решение стало возможным [Gross and Harris, 1998].
128 Глава 1. Основы имитационного моделирования Например, можно аналитически показать, что установившееся среднее число требований в системе M/M/i вычисляется по формуле Z = p/(l-p), которая отображена на графике (рис. 1.23) как функция р. Заметьте, что L— явно не линейная функция р, и для р > 0,8 график L экспоненциально возрастает. Хотя формула, определяющая L, выведена специально для систем массового обслужи- вания M/M/i, нелинейное поведение, показанное на рис. 1.23, свойственно систе- мам массового обслуживания вообще. Рис. 1.23. График L = р/(1 - р) для системы массового обслуживания M/M/i Еще один интересный (и наглядный) пример аналитического решения — вы- числение установившейся средней задержки в очереди для системы массового об- служивания M/G/i по формуле Х{Уаг(5)+[Е(5)]2} 2(1-Щ5)] где Var(5) обозначает дисперсию распределения времени обслуживания [Ross, 1997, р. 444]. Таким образом, если Е(5) имеет большее значение, тогда перегрузка (в данном случае измеряемая как d) будет большей; чего и следовало ожидать. По формуле можно обнаружить и менее очевидный факт: перегрузка также увели- чивается, когда изменчивость распределения времени обслуживания возрастает, даже если среднее время обслуживания остается прежним. Интуитивно это мож- но объяснить так: дисперсия случайной величины времени обслуживания может принять большое значение (поскольку она должна быть положительной), то есть единственное устройство обслуживания будет занято длительное время, что при- ведет к увеличению очереди.
Задачи 129 Задачи 1.1. Опишите наиболее эффективный, с вашей точки зрения, способ исследо- вания каждой из нижеперечисленных систем (с учетом возможностей, при- веденных на рис. 1.1) и объясните свой ответ: а) небольшой участок существующей фабрики; б) автострада с транспортной развязкой, которая испытывает серьезные пе- регрузки; в) пункт скорой помощи в существующей больнице; г) процедура доставки пиццы; д) работа пригородного автобуса для агентства, занимающегося прокатом автомобилей в аэропорту; е) сеть связи в районе боевых действий. 1.2. Предположим, что решено изучить все системы, перечисленные в задаче 1.1, посредством имитационной модели. Выясните, каким должно быть модели- рование — статическим или динамическим, детерминированным или сто- хастическим, непрерывным или дискретным. 1.3. Определите I(t) — общее число требований в системе в момент времени t (включая как требования в очереди, так и требования на обслуживание, если таковые имеются в момент времени t) для системы массового обслуживания с одним устройством обслуживания, описанной в разделе 1.4. А. Справедливо ли равенство L(t) ~ Q(t) + 1? Обоснуйте свой ответ. Б. Для реализации системы, описанной при моделировании вручную в раз- деле 1.4.2, составьте трафик L(t) в зависимости от t (подобный изобра- женным на рис. 1.5 и 1.6) между моментами времени 0 и Г(6). В. По графику, полученному при выполнении пункта Б, вычислите I (6) — среднее по времени число требований в системе в течение интервала вре- мени [О, Т(6)]. Оценку чего представляет /(6)? Г. Дополните рис. 1.7, с тем чтобы показать, как вычисляется /(6) в про- цессе моделирования. 1.4. Допустим, что при исследовании системы массового обслуживания с одним устройством обслуживания (описанной в разделе 1.4), решено не оценивать ожидаемую среднюю задержку в очереди; при этом структура и параметры модели остаются прежними. Меняются ли в этом случае переменные состоя- ния? Если да, то как? 1;5. Возьмем систему массового обслуживания с одним устройством обслужива- . ния, описанную в разделе 1.4. Пусть W{ — общее время пребывания в системе требования i до завершения обслуживания, включающее время, проведенное в очереди, плюс время обслуживания. Для той же реализации, описанной при моделировании вручную в разделе 1.4.2, вычислите w(m) — общее время пре- бывания в системе первых т требований, покинувших систему, при т - 5. Соответственно дополните рис. 1.7. Как при этом изменятся переменные состояния?
130 Глава 1. Основы имитационного моделирования 1.6. Из рис. 1.5 видно, что максимальная длина очереди равнялась 3. Напишите общее выражение для этого параметра (с учетом правила останова при п задержках) и дополните рис. 1.7, чтобы длину очереди можно было автомати- чески вычислять в ходе моделирования. 1.7. Измените код программ для системы массового обслуживания, приведенный в разделах 1.4.4 и 1.4.5, чтобы обеспечить вычисление и запись таких допол- нительных показателей: а) среднего по времени числа требований в системе (см. задачу 1.3); б) среднего общего времени пребывания требования в системе (см. зада- чу 1.5); в) максимальной длины очереди (см. задачу 1.6); г) максимальной задержки в очереди; д) максимального времени пребывания требования в системе; е) части требований, задержка которых в очереди превышает 1 мин. Запустите эту программу, воспользовавшись генератором случайных чисел, приведенным в приложении 7А. 1.8. Алгоритм в разделе 1.4.3 для генерирования экспоненциально распределен- ной случайной величины со средним значением р должен возвратить - pin U, где U — случайная величина 17(0, 1). Этот алгоритм можно изменить, с тем чтобы он возвращал - pln(l - U). Почему? 1.9. Выполните 10 прогонов модели системы массового обслуживания, рассмот- ренной в разделах 1.4.4 и 1.4.5, поместив цикл, в котором будет заключаться большая часть основной программы, начиная с инициализации и заканчивая вызовом генератора отчетов. Обсудите результаты. (Такие действия можно назвать 10-кратной независимой репликацией моделирования.) 1.10. Предположим, что в системе массового обслуживания с одним устройством обслуживания, описанной в разделе 1.4, заведение открывается в 9.00 (на- зовем это время моментом времени 0) и закрывается в 17.00, но его работа продолжается до тех пор, пока не будет обслужен последний клиент, нахо- дившийся в системе 17.00 (на обслуживании или в очереди). Измените код так, чтобы он отражал это правило останова, и оцените те же самые пока- затели системы. 1.11. Допустим, что в системе массового обслуживания с одним устройством об- служивания, описанной в разделе 1.4, есть место в очереди только для двух требований, а требование, поступившее, когда очередь уже заполнена, поки- дает систему (такая ситуация называется неприсоединением к очереди). Смо- делируйте такую систему с правилом останова ровно после 480 мин работы и оцените те же показатели, оценка которых выполнена в разделе 1.4, а также ожидаемое число требований, не присоединившихся к очереди. 1.12. Рассмотрим моделирование системы управления запасами в разделе 1.5. А. В этой модели с теми же параметрами не может быть более одного непри- обретенного заказа (то есть ранее заказанного, но еще не доставленного товара) за раз. Почему?
Задачи 131 Б. Опишите, какие изменения следует сделать, если время доставки равно- мерно распределено между 0,5 и 6 мес. (а не между 0,5 и 1,0 мес.) при отсутствии каких-либо других изменений. Следует ли принимать реше- ния о заказе товаров, исходя только из уровня запасов 1(0? 1.13. Измените модель системы управления запасами из раздела 1.5 так, чтобы выполнялось пять ее прогонов для каждой стратегии ($, 5) (см. задачу 1.9). Обсудите результаты. Какая стратегия управления запасами оказалась наи- лучшей? Вы в этом уверены? 1.14. Средства обслуживания состоят из двух последовательных устройств обслу- живания, для каждого из которых существует отдельная очередь с дисципли- ной обслуживания FIFO (рис. 1.24). По завершении обслуживания требова- ния устройством 1 оно переходит к устройству 2, а требование, обслуживание которого завершило устройство 2, покидает систему. Допустим, что интерва- лы времени между поступлением требований к устройству 1 являются неза- висимыми и одинаково экспоненциально распределенными случайными ве- личинами со средним значением 1 мин. Время обслуживания требований устройством 1 представлено независимыми и одинаково экспоненциально распределенными случайными величинами со средним значением 0,7 мин, а время обслуживания требований устройством 2 — независимыми и одина- ково экспоненциально распределенными случайными величинами со сред- ним значением 0,9 мин. Выполните прогон имитационной модели ровно для 1000 мин и для каждого устройства оцените ожидаемую среднюю задержку требования в очереди, ожидаемое среднее по времени число требований в очереди и ожидаемый коэффициент использования устройства. ООО OD-OOOO OD- Очередь 1 Устройство Очередь 2 Устройство обслуживания 1 обслуживания 2 Рис. 1.24. Система массового обслуживания с двумя последовательными устройствами обслуживания 1.15. Обратимся к условию задачи 1.14. Допустим, что существует время переме- щения с момента ухода требования от устройства обслуживания 1 до момен- та его поступления в очередь 2 (или к устройству 2). Допустим, это время перемещения равномерно распределено между 0 и 2 мин. Измените модель и выполните ее прогон при тех же условиях, чтобы получить те же показате- ли. Каков необходимый размер (то есть длина) списка событий? 1.16. Опять обратимся к задаче 1.14. Предположим, что к устройству 2 не может быть очереди. Иными словами, если требование, обслуживание которого за- вершено устройством 1, обнаруживает, что устройство 2 свободно, оно пере- ходит непосредственно к этому устройству, как и раньше. Однако, если по завершении обслуживания устройством 1 устройство 2 все еще занято, тре- бование должно оставаться в устройстве 1, пока устройство 2 не освободится (такого рода ситуация называется блокировкой). Пока переход требования
132 Глава 1. Основы имитационного моделирования к устройству 2 заблокирован, оно не получает никакого дополнительного обслуживания от устройства 1, но и не позволяет устройству 1 обслуживать следующее требование из очереди 1, если таковые имеются. Более того, во время блокировки в очередь 1 продолжают поступать новые требования. Вычислите те же шесть показателей, что и в задаче 1.14. 1.17. Возьмем систему управления запасами из раздела 1.5. Допустим, что уровень запасов I(t) в начале месяца меньше нуля, компания отправляет поставщику срочный заказ. (Если 0 < s, компания размещает обычный заказ.) Сроч- ный заказ на Z единиц товара обойдется компании в 48 + 4Z долларов, время доставки для него равномерно распределено в промежутке [0,25; 0,50] мес. Выполните прогон имитационной модели для всех девяти стратегий и оцени- те ожидаемые средние общие расходы в месяц, ожидаемую часть времени существования отложенных поставок, то есть когда I(t) < 0, и ожидаемое число срочных заказов. Оправдано ли размещение срочных заказов? 1.18. Обратимся к системе управления запасами из раздела 1.5. Допустим, что товар в запасах скоропортящийся, и его срок хранения равномерно распреде- лен между 1,5 и 2,5 мес. То есть если товар имеет срок хранения / мес., тогда по прошествии I мес. после помещения его в хранилище он портится. (Раз- личные товары в заказе, получаемом от поставщика, будут иметь различные сроки хранения.) Компания обнаруживает, что товар испортился только не- посредственно при проверке перед продажей. Если установлено, что товар испорчен, его выбрасывают, и проверяют следующую единицу товара. Пред- положим, что товары в запасах проверяются в порядке FIFO. Повторите девять прогонов имитационной модели и после этого определите те же расхо- ды, что и раньше. Вычислите также часть товаров, выброшенных по причине негодности. 1.19. Рассмотрим систему с s (s 1) параллельными устройствами обслуживания. Допустим, что интервалы между поступлениями требований являются неза- висимыми и одинаково распределенными величинами со средним значением Е(А), а время обслуживания требований (независимо от устройства обслу- живания) — одинаково распределенными величинами со средним значением Е(5). Если требование прибывает, когда одно из устройств обслуживания свободно, его обслуживание начинается немедленно, при этом, если свободно несколько устройств, требование выбирает крайнее слева незанятое устрой- ство (с наименьшим номером). В противном случае требование становится в конец единственной очереди FIFO, из которой требования попадают ко всем устройствам. (Такая система массового обслуживания называется M/M/s, см. приложение 1Б.) Напишите общую программу для моделирования этой системы, в которой будут оцениваться ожидаемая средняя задержка в очере- ди, ожидаемое среднее по времени число требований в очереди и ожидаемый коэффициент использования каждого из устройств обслуживания (правило останова — регистрация п задержек в очереди). Величины х, Е(А), E(S) и п должны быть входными параметрами. Выполните прогон модели для х = 5, Е(А) - 1, E(S) - 4 и п - 1000.
Задачи 133 1.20. Повторно выполните задачу 1.19, но на этот раз требование поступает, когда свободно несколько устройств обслуживания, и выбирает между ними уст- ройство с равной вероятностью. Например, если s - 5, а требование поступа- ет, когда устройства 1,3, 4 и 5 свободны, оно может выбирать каждое из этих устройств с вероятностью 0,25. 1.21. Клиент прибывает в банк, где имеется три параллельно работающие кассы. А. Если в банке действует одна очередь с дисциплиной FIFO, каков будет необходимый размер (то есть длина) списка событий для имитационной модели этой системы? Б. Если у каждой кассы образуется своя очередь с дисциплиной FIFO, а по- сетитель может переходить из одной очереди в другую (правила пере- хода см. в разделе 2.6), каков будет необходимый размер списка собы- тий? Допустим, что переход не занимает времени. В. Повторно выполните пункт Б с учетом, что переход занимает 3 с. Во всех трех пунктах допускаем, что для завершения моделирования не тре- буется никаких событий. 1.22. Производственная система состоит из т станков, с каждым из которых из- редка случаются поломки. Перед поломкой станок работает в течение проме- жутка времени, который является экспоненциально распределенной случай- ной величиной со средним значением 8 ч. Ремонтом станков занимается s (s — неизменное положительное целое число) ремонтников. Для того чтобы почи- нить один станок, одному ремонтнику требуется экспоненциально распреде- ленный промежуток времени со средним значением 2 ч; с одним станком может работать только один ремонтник, даже если в это время есть еще не- занятые рабочие. Если в определенное время сломалось более s станков, они образуют очередь на ремонт с дисциплиной FIFO и ожидают прибытия пер- вого освободившегося ремонтника. Ремонтник полностью осуществляет ре- монт станка, независимо от того, что еще происходит в системе. Предполо- жим, что каждый час простоя одного станка из-за поломки стоит системе 50 долларов, а час работы ремонтника — 10 долларов. (Ремонтники получают почасовую оплату, независимо от того, работали ли они в действительности.) Пусть т = 5, однако напишите общий код, который путем изменения входно- го параметра будет способен обрабатывать значения вплоть до т ' 20. Смоде- лируйте систему ровно при 800 ч работы для каждой стратегии занятости $ = -1,2,..., 5, чтобы определить, какая из них дает наименьшие ожидаемые сред- ние расходы в час, допустив, что в момент времени 0 все машины только что прошли ремонт. 1.23. Обратимся к системе из задачи 1.10. Предположим, что для устройства обыч- но требуется 30-минутный перерыв в работе, который делается в первый мо- мент времени после 12.00, когда в системе нет клиентов. Однако, если пере- рыва в работе устройства не было до 13.00, он осуществляется по завершении обслуживания клиента, который находился на обслуживании в 13.00. (До- пустим, что все клиенты, находившиеся в очереди в 13.00, будут ожидать окончания перерыва.) Если клиент прибывает во время перерыва, он может
134 Глава 1. Основы имитационного моделирования уйти немедленно, не дожидаясь обслуживания, такая ситуация называется неприсоединением к очереди. Вероятность того, присоединится ли такой кли- ент к очереди, будет зависеть от промежутка времени, остающегося до завер- шения перерыва. (Время завершения перерыва сообщается). В частности, клиент, прибывший во время перерыва, может не присоединиться к очереди со следующей вероятностью. Время, остающееся до возобновления Вероятность неприсоединения работы устройства, мин____ клиента к очереди______________ [20,30) 0,75 [10,20) 0,50 [0,10)0,25 (Метод генерации случайных целых чисел, рассмотренный в разделе 1.5.2, может использоваться для того, чтобы определить — присоединится клиент к очереди или нет. Более простой подход описан в разделе 8.4.1.) Выполните прогон имитационной модели и оцените те же самые показатели системы, что и раньше. (Обратите внимание, что устройство обслуживания не занято во время перерыва, а среднее число в очереди вычисляется с учетом данных за время перерыва.) Кроме того, оцените ожидаемое число клиентов, не при- соединившихся к очереди. 1.24. Рассмотрим систему массового обслуживания с одним устройством обслу- живания, описанную в разделе 1.4. Предположим, что время обслуживания требования известно в момент его поступления. По завершении обслуживания одного требования устройство переходит к обслуживанию требования в оче- реди (если таковые имеются), время обслуживания которого является наи- меньшим. Выполняйте моделирование до тех пор, пока не будет завершена задержка 1000 требований, и оцените ожидаемую среднюю задержку в очере- ди, ожидаемое среднее по времени число требований в очереди и ожидаемую часть требований, задержка которых превышает 1 мин. (Такая дисциплина об- служивания называется самой короткой работой в первую очередь.) 1.25. Возьмем систему с двумя последовательными устройствами обслуживания из задачи 1.14. Предположим, что с вероятностью 0,2 требование, обслужи- вание которого завершило устройство 2, будет неудовлетворено обслужива- нием вообще и должно будет пройти повторное обслуживание (по меньшей мере, еще один раз) у обоих устройств. Определите задержку в очереди тре- бования (в отдельной очереди), которая является общей задержкой в этой очереди для всех прохождений обслуживания данным требованием. Смоде- лируйте систему для каждого из таких случаев (необходимо оценить те же показатели, что и раньше): а) неудовлетворенные требования становятся в конец очереди 1; б) неудовлетворенные требования становятся в начало очереди 1. 1.26. Система состоит из двух устройств обслуживания типа А и одного устройст- ва обслуживания типа Б. Предположим, требования поступают в систему с интервалами, представленными независимыми и одинаково экспоненци-
Задачи 135 ально распределенными величинами со средним значением, равным 1 мин. При поступлении требования определяется его принадлежность к типу 1 или типу 2 с вероятностью 0,75 и 0,25. Требование типа 1 может обслуживаться любым устройством, но выбирает устройство типа А, если оно свободно. Вре- мя обслуживания для требований типа 1 представлено независимыми и оди- наково экспоненциально распределенными величинами со средним значением 0,8 мин независимо от типа устройства. Требования типа 1, поступившие в момент, когда все устройства заняты, становятся в единственную очередь с дисциплиной FIFO для требований типа 1. Требованиям типа 2 необходи- мо одновременное обслуживание устройства типа А и устройства типа Б. Вре- мя обслуживания для требований типа 2 равномерно распределено между 0,5 и 0,7 мин. Требование типа 2, поступившее, когда оба устройства типа А заня- ты или когда занято устройство типа Б, становится в единственную очередь с дисциплиной FIFO для требований типа 2. По завершении обслуживания любого требования предпочтение отдается требованию типа 2, если таковое присутствует в системе и если оба устройства — устройство типа А и устрой- ство типа Б — свободны в это время. В противном случае предпочтение отда- ется требованию типа 1. Выполните моделирование системы для времени, равного 1000 мин, и оцените ожидаемую среднюю задержку в очереди и ожидаемое среднее во времени число требований в очереди для каждого типа требований. Оцените также ожидаемую часть времени, которое каждое уст- ройство затрачивает на обслуживание каждого типа требований. 1.27. В супермаркете имеется две кассы — обычная и срочная, в каждой из них ра- ботает по одному кассиру (рис. 1.25). Клиенты обычной кассы прибывают через экспоненциально распределенные интервалы времени со средним зна- чением 2,1 мин, а время их обслуживания представлено экспоненциально распределенными величинами со средним значением 2,0 мин. У клиентов срочной кассы интервалы между прибытием представлены экспоненциально распределенными величинами со средним значением 1,1 мин, а время обслу- живания — экспоненциально распределенными величинами со средним зна- чением 0,9 мин. Процессы прибытия двух типов клиентов не зависят друг от друга. Обслуживание клиента обычной кассы, прибывшего, когда, по крайней мере, один из кассиров свободен, начинается немедленно; при этом, если сво- бодны обе кассы, он выбирает обычную. Клиент обычной кассы, прибывший, когда обе кассы заняты, становится в очередь к обычной кассе. Точно так же клиент срочной кассы, прибывший, когда хотя бы один из кассиров свободен, немедленно переходит на обслуживание; при этом если свободны обе кассы, он выбирает срочную. Клиенты срочной кассы, прибывшие, когда обе кассы заняты, становятся в очередь к срочной кассе, даже если очередь к обычной кассе короче. Когда любая касса завершает обслуживание клиента, на обслу- живание переходят клиенты из очереди к этой кассе (если таковые имеются). Если же у одной кассы нет очереди, а у другой кассы - есть, на обслуживание переходит первый клиент из очереди. Если у обеих касс отсутствуют очере- ди, касса, завершившая обслуживание клиента, становится свободной. Сле- дует обратить внимание на то, что на среднее время обслуживания клиента
136 Глава 1. Основы имитационного моделирования влияет тип клиента, а не то, где он проходит обслуживание — у обычной или срочной кассы. В исходном состоянии в системе нет клиентов и кассы не за- няты. Моделирование должно выполняться точно для интервала времени 8 ч. Вычислите среднюю задержку в каждой очереди, среднее по времени число клиентов в каждой очереди, а также коэффициент использования каждой кассы. Какие рекомендации вы бы дали для дальнейшего исследования или усовершенствования этой системы? (21 июня 1983 года в газете города Клив- ленда Plain Dealer была напечатана статья под заголовком «Быстрый расчет предпочтительнее низких цен», в которой сообщалось, что, согласно опросу Института маркетинга продовольственных товаров, посетители супермарке- тов считают, что быстрый расчет у касс является более важным фактором, чем привлекательные цены. Группа покупателей, составляющая 39 %, пред- почла «быстрый расчет», а 28 % отдали предпочтение более низким ценам, что отражает рост недовольства по поводу необходимости стоять в очереди для оплаты покупки). Очередь к обычной кассе Обычная касса -ОООО OD- -ООООО OD- Очередь к срочной кассе Срочная касса Рис. 1.25. Процесс оплаты покупок в супермаркете 1.28. Круглосуточно работающая заправочная станция с одной колонкой может иметь два типа клиентов. Полицейские машины, которые прибывают через каждые 30 мин; первая машина прибывает в момент времени, равный 15 мин. Обычные (не полицейские) машины имеют экспоненциально распределен- ные интервалы между прибытиями со средним значением 5,6 мин; первая об- ычная машина прибывает в момент времени 0. Время обслуживания для всех машин экспоненциально распределено со средним значением 4,8 мин. Маши- на, прибывшая, когда колонка свободна, сразу попадает на обслуживание. Обычная машина, прибывшая, когда колонка занята, становится в конец еди- нственной очереди. Полицейская машина, прибывшая, когда колонка занята, становится в начало очереди, перед любой обычной машиной. (Если в начале очереди уже есть полицейские машины, допустим, что новоприбывшая поли- цейская машина все равно становится перед ними в самом начале очереди. Каким образом может возникнуть такая ситуация?) Изначально система сво- бодна, в ней нет машин. Моделирование должно выполняться до тех пор, по- ка не завершится задержка в очереди 500 машин (любого типа). Оцените ожидаемую среднюю задержку в очереди отдельно для каждого типа машин, а также ожидаемое среднее по времени число машин (каждого типа) в очере- ди и ожидаемый коэффициент использования колонки. 1.29. В системах телефонной связи представляют интерес модели следующего ти- па. Между двумя большими городами А и Б существует определенное число
Задачи 137 междугородных линий связи. Каждая линия может работать в обоих направ- лениях (то есть передавать сигналы, возникшие и пункте А, и в пункте Б), но может передавать только один вызов за один раз (рис. 1.26). Человек в пункте А или Б хочет сделать звонок в другой город, при этом есть свободные линии; вызов немедленно передается по одной из свободных линий. Если все п ли- ний заняты, человек получает сигнал о том, что он должен повесить трубку и попробовать дозвониться позднее. Устройств, позволяющих подождать в очереди освобождения одной из линий, не существует, поэтому такие забло- кированные звонящие попросту покидают систему. Время между попытками дозвониться из города А в город Б представлено экспоненциально распреде- ленными величинами со средним значением 10 с; а время между попытками дозвониться из города Б в город А представлено экспоненциально распре- деленными величинами со средним значением 12 с. Продолжительность раз- говора является экспоненциально распределенной величиной со средним зна- чением 4 мин, независимо от того, из какого города сделан звонок. Изна- чально все линии свободны. Моделирование выполняется для 12 ч. Вычис- лите среднее по времени число занятых линий, среднюю по времени часть занятых линий, общее число звонков (из каждого города), число заблокиро- ванных звонков и часть заблокированных звонков. Определите приблизи- тельно, сколько нужно линий, чтобы блокировалось не более 5 % звонков. Город А > п Линия 1 г Город Б 1> Линия 2 г Линия я Рис. 1.26. Система междугородных телефонных линий 1.30. Городские автобусы прибывают на станцию технического обслуживания с экс- поненциально распределенными интервалами времени между прибытиями со средним значением 2 ч. Станция включает в себя участок технического контроля и два одинаковых ремонтных участка (рис. 1.27). Технический контроль Ремонт Рис. 1.27. Автобусная станция техобслуживания
138 Глава 1. Основы имитационного моделирования Каждый автобус проходит технический контроль. Время технического контро- ля равномерно распределено между 15 мин и 1,05 ч; для участка технического контроля существует единственная очередь с дисциплиной FIFO. Техничес- кий контроль показывает, что 30 % автобусов нуждаются в каком-нибудь ре- монте. Два параллельных ремонтных участка также имеют единственную оче- редь с дисциплиной FIFO. Время ремонта равномерно распределено между 2,1 и 4,5 ч. Выполните прогон имитационной модели для 160 ч и вычислите сред- нюю задержку в каждой очереди, среднюю длину каждой очереди, коэффици- ент использования участка технического контроля и коэффициент использо- вания ремонтного участка (определяемого как половина среднего по времени числа занятых станций, поскольку в системе таких станций две). Воспроизво- дите моделирование 5 раз. Допустим, что интенсивность прибытия автобусов увеличилась в четыре раза, то есть среднее время между прибытиями уменьши- лось до 30 мин. Сможет ли существующая система справиться с такой ситуаци- ей? Можно ли ответить на этот вопрос, не прибегая к моделированию?
Глава 2 Моделирование сложных систем ♦ Обработка списков при проектировании ♦ Использование библиотеки функций simlib ♦ Моделирование систем массового обслуживания с одним и несколькими устройствами обслуживания 4- Моделирование компьютерной системы с режимом разделения времени ♦ Моделирование системы учреждения и производственной системы 2.1. Введение В главе 1 описаны общие принципы имитационного моделирования систем, а так- же создание моделей и кода для двух специальных систем. Такие системы очень просты, их можно запрограммировать, используя универсальный язык програм- мирования, не прибегая ни к специальному программному обеспечению для моде- лирования, ни к служебным программам (за исключением генератора случайных чисел). Однако в основном реальные системы являются более сложными, и разра- ботка кода для их моделирования без использования специального программного обеспечения может оказаться нелегкой и трудоемкой задачей. В этой главе рассматривается обработка списков, которую необходимо выпол- нять при моделировании большинства систем. Кроме того, представлен ряд функ- ций библиотеки simlib, написанной на языке С стандарта ANSI. Эти функции обеспечивают выполнение ряда задач по обработке списков, а также некоторых общих операций моделирования, в частности обработку списка событий, сбор ста- тистики, генерирование случайных чисел и наблюдений из нескольких распреде- лений, а также вычисление и запись результатов. Затем функции simlib использо- ваны в четырех примерах моделирования систем, первый из них касается системы массового обслуживания с одним устройством из раздела 1.4 (он включен, чтобы продемонстрировать использование функций simlib в уже знакомой нам модели); три следующих примера намного сложнее. Здесь продемонстрированы возможности моделирования более сложных сис- тем, показано, как обработка списков и служебные операции simlib могут помочь при программировании. Пакет simlib использован в основном с целью быстрее ос- воить моделирование сложных систем и оценить, насколько полезными окажутся подобные пакеты для моделирования при обработке списков и других данных. Это
140 Глава 2. Моделирование сложных систем не означает, что simlib может считаться таким же либо даже более эффективным, нежели современное коммерческое программное обеспечение для моделирования (рассматриваемое в главе 3). Полный исходный код функций simlib приведен в приложении 2А, а также в листинге 7.2, его еще можно загрузить с сайта www.mh- he.com/lawkelton (вместе с кодом для всех примеров этой главы). Версия библиоте- ки simlib на языке FORTRAN 77 и код для четырех примеров этой главы тоже могут быть загружены с указанного веб-узла. 2.2. Обработка списков при моделировании Имитационные модели, рассмотренные в главе 1, действительно очень просты, по- скольку в них содержался либо один список записей, либо списков записей не бы- ло вообще, за исключением списка событий. Записи в этих списках состояли из одного атрибута и всегда обрабатывались по принципу «первым прибыл — первым обслужен» (First-In, First-Out, FIFO). В примере с системой массового обслужива- ния использовался список с дисциплиной FIFO, где содержались записи всех тре- бований, ожидавших в очереди, а запись для каждого требования состояла из одно- го атрибута — времени поступления требования. В примере с системой управления запасами списки отсутствовали, за исключением списка событий. Тем не менее в большинстве сложных моделей применяется множество списков со значитель- ным количеством записей, и каждая из них содержит множество атрибутов. Более того, очень часто эти списки обрабатываются не по принципу FIFO. Например, в не- которых моделях должна существовать возможность удалить из списка запись, где указанный атрибут (кроме времени размещения записи в списке) имеет наименьшее значение. Если такое большое количество информации не будет эффективно сохра- няться и обрабатываться, моделирование может потребовать столько времени и па- мяти, что изучение системы с помощью модели окажется просто не реальным. В разделе 2.2.1 приведены два подхода к сохранению списков записей в ком- пьютере — последовательное распределение памяти и связанное распределение памяти, а также поясняется, почему при моделировании сложных систем второй подход является более предпочтительным. В разделе 2.2.2 показано использова- ние связанного распределения памяти на уровне, достаточном для простого «язы- ка»1 моделирования simlib (о котором пойдет речь в разделе 2.3). Этот «язык» (овладеть им можно в течение нескольких часов) дает прекрасную возможность понять суть специального программного обеспечения для моделирования (см. главу 3), изучение которого потребует значительно больше времени. Кроме того, simlib предоставляет механизм, объясняющий моделирование систем более слож- ных, чем описанные в главе 1. 2.2.1. Сохранение списков Для сохранения списков записей в компьютере существует два подхода. При последовательном распределении памяти (что применялось в главе 1) записи 1 Авторы используют термин «язык», хотя на самом деле здесь рассматривается библиотека функций на языке С. — Примеч. ред.
2.2. Обработка списков при моделировании 141 в списке размещаются в смежных ячейках памяти одна за другой. Именно такой подход понадобился для сохранения списка времени поступления требований в систему, описанную разделе 1.4. При связанном распределении памяти каждая запись в списке содержит атри- буты, а также указатели (или ссылки), отображающие логическую связь одной записи с другими. При этом нет необходимости сохранять записи, логически сле- дующие одна за другой, в смежных ячейках памяти. (Более детально связанное распределение памяти рассмотрено в разделе 2.2.2.) Для имитационного моде- лирования связанное распределение памяти предпочтительнее в силу нескольких перечисленных ниже причин. ♦ С помощью связанного распределения памяти можно существенно сократить время обработки некоторых видов списков. В примере с системой массового обслуживания из раздела 1.4 каждый раз по завершении обслуживания требо- вания (если в очереди за ним еще оставались Требования) приходилось пере- двигать каждый из элементов в массиве времени поступления на одну ячейку памяти вверх. При значительной длине очереди такой подход окажется неэф- фективным, поскольку в этом случае в массиве будет содержаться большое количество записей. Как станет ясно из примера 2.1, связанное распределение памяти ускоряет обработку таких массивов. ♦ В имитационных моделях, списки событий которых содержат значительное количество записей одновременно, можно существенно ускорить обработку та- ких списков (см. пример 2.2 и раздел 2.8). 4 В некоторых имитационных моделях можно сократить размер компьютерной памяти, необходимый для хранения списков (см. раздел 2.2.2). ♦ Связанное распределение памяти предоставляет общую структуру, позволя- ющую легко сохранять и обрабатывать множество списков одновременно, при- чем записи в различных списках могут обрабатываться по-разному. Именно поэтому связанное распределение памяти применяется во всем основном про- граммном обеспечении для моделирования. 2.2.2. Связанное распределение памяти В этом разделе описано связанное распределение памяти, достаточное для разра- ботки простого «языка» моделирования simlib, основанного на языке С (о котором пойдет речь в следующем разделе). Более полное описание принципов обработки списков можно найти, например, в работе Кнута [Knuth, 1997]. Предположим, что список записей должен сохраняться в массиве и что строки массива соответствуют записям, а столбцы соответствуют атрибутам (или полям данных), составляющим эти записи. При моделировании системы массового об- служивания из раздела 1.4 для каждого требования, ожидавшего в очереди, созда- валась запись в списке времени поступления. Каждая такая запись состояла из од- ного атрибута — времени поступления соответствующего требования. В принципе запись о требовании может включать дополнительные атрибуты, в частности воз- раст клиента, показатель приоритета, уровень обслуживания.
142 Глава 2. Моделирование сложных систем Список записей называется двунаправленным, если каждая запись в нем содер- жит связанные с ней ссылки на предыдущую и следующую записи. В ссылке на следующую запись (или в прямом указателе) определенной записи дается номер физической строки в массиве записи, которая логически следует за указанной за- писью. Если за указанной записью больше нет записей, ссылке на следующую за- пись присваивается значение 0. В ссылке на предыдущую запись (или в обратном указателе) определенной записи дается номер физической строки в массиве запи- си, которая логически предшествует указанной записи. Если указанная запись не содержит предшествующей записи, ссылке на предыдущую запись присваивается значение 0. Номер физической строки массива, в которой имеется запись, являю- щаяся логически первой в списке, обозначается указателем головы списка (заго- ловка), ему присваивается значение 0, если в списке нет записей. Номер физичес- кой строки для записи, являющейся логически последней в списке, обозначается указателем хвоста списка, которому присваивается значение 0 в том случае, если в списке нет записей. В любой заданный момент времени список, скорее всего, будет занимать лишь определенное подмножество строк массива, где он физически хранится. «Пустые» строки массива, доступные для дальнейшего использования, объединяются в спи- сок доступного пространства (List of Available Space, LAS). Список доступного пространства обычно обрабатывается в порядке LIFO (Last-In, First-Out — «по- следним прибыл — первым обслужен»). Значит, если потребуется строка для со- хранения дополнительной записи, она будет взята из начала списка доступного пространства; когда строка больше не нужна для хранения записи, она снова будет возвращена в начало списка. Так как все действия выполняются с головой списка доступного пространства, он не нуждается ни в хвостовом указателе, ни в ссылках на предыдущую запись. (Такой список называется однонаправленным.) При моде- лировании системывмомент времени 0 все строки в массиве являются компонен- тами списка доступного пространства, и ссылке на следующую запись строки i присваивается значение i + 1 (за исключением последней строки, ссылке на кото- рую присваивается значение 0, всем ссылкам на предыдущую запись — значение 0), а указателю головы списка доступного пространства присваивается значение 1. (Ссылке на предыдущую запись для определенной строки присваивается значе- ние положительного целого числа, только когда в этой строке есть запись.) В язы- ках, поддерживающих динамическое распределение памяти (например, С) список доступного пространства может рассматриваться как вся память, доступная для динамического распределения. Пример 2.1. Для системы массового обслуживания из раздела 1.4 рассмотрим список, в котором содержатся данные о требованиях, ожидающих обслуживания в очереди. Каж- дая запись в этом списке имеет один атрибут — время поступления. Предположим, на момент времени 25 в очереди находится три требования. Время их поступления равно соответственно 10,15 и 25, их записи содержатся в физических строках 2,3 и 1 массива, состоящего из 5 строк и 1 столбца. (В данном случае мы допускаем, что в очереди нико- гда не будет больше пяти требований.) Строки 4 и 5 являются компонентами списка дос- тупного пространства (рис. 2.1). Заметьте, что начальный указатель списка равен 2, ссылка на следующую запись для записи в строке 2 равна 3, а ссылка на предыдущую запись для записи в строке 3 равна 2 и т. д.
2.2. Обработка списков при моделировании 143 Рис. 2.1. Состояние списков при моделировании системы массового обслуживания в момент времени 25 Рис. 2.2. Состояние списков при моделировании системы массового обслуживания в момент времени 40 Предположим, что следующим событием (после момента времени 25) будет поступле- ние требования в момент времени 40 и что нам понадобится добавить соответствующую за- пись в список, который будет обрабатываться в соответствии с дисциплиной FIFO. Так как начальный указатель списка доступного пространства равен 4, запись для поступившего требования будет помещена в строку 4 массива, а указателю'головы списка доступного пространства будет присвоено значение 5, такое значение имеет ссылка на следующую
144 Глава 2. Моделирование сложных систем запись строки 4. Поскольку новая запись помещается в хвост списка, а указатель хвоста списка сейчас равен 1, ссылке на следующую запись в строке 1 будет присвоено значе- ние 4. Ссылке на предыдущую запись в новой записи (то есть записи в физической стро- ке 4) будет присвоено значение 1, а ссылке на следующую запись в новой записи — зна- чение 0; указатель хвоста списка получит значение 4. Состояние обоих списков, после того как в них внесены изменения, показано на рис. 2.2. Допустим, что следующим событием моделирования (после момента времени 40) станет завершение обслуживания требования в момент времени 50, которое велось по меньшей мере с момента времени 25, и надо удалить запись требования, расположенную в голове списка с тем, чтобы это требование могло перейти на обслуживание. Указатель головы списка равен 2, а ссылка на следующую запись для записи в физической строке 2 равна 3, время поступления в записи из строки 2 используется для вычисления задержки в очереди требования, которое поступит на обслуживание (эта задержка равна 50-10). Указателю головы списка присваивается значение 3, предшествующей ссылке на запись в строке 3 — значение 0, а строка 2 (более не востребованная) помещается в голову спи- ска доступного пространства. Для этого указателю головы списка присваивается значе- ние 2, а ссылке на следующую запись для строки 2 — значение 5 (предыдущая началь- ная строка списка доступного пространства). Состояние обоих списков после внесения в них изменений можно видеть на рис. 2.3. Рис. 2.3. Состояние списков при моделировании системы массового обслуживания в момент времени 50 Список доступного пространства Таким образам, удаление записи из начала списка всегда требует устанавливать только четы- ре ссылки, или указателя. Вспомним, что при использовании для управления списком подхо- да, описанного в главе 1, необходимо передвигать все записи в последовательном списке на одну ячейку вперед. Если бы в списке было, скажем, .100 записей, понадобилось бы гораздо больше времени, нежели при использовании связанного списка Итак, сохранение очереди в виде связанного списка в приведенном выше при- мере выглядит довольно простым, а в следующем примере будет показано, как с помощью связанного списка можно обрабатывать список событий.
2.2. Обработка списков при моделировании 145 Пример 2.2. В модели системы управления запасами из раздела 1.5 список событий со- хранялся в массиве, в котором каждому из четырех типов событий соответствовала фи- зическая ячейка памяти. Если на определенный момент времени событие не назнача- лось, для него устанавливалось время возникновения со (представленное в компьютере как 1О30). Однако в большинстве более сложных моделей, как написанных на универ- сальном языке, так и созданных с помощью специального программного обеспечения для моделирования (рассматривается в главе 3), список событий сохраняется в виде связанного списка, упорядоченного в соответствии с возрастанием значений времени возникновения событий. При этом события со значениями времени возникновения, рав- . ными со, в список событий не включаются. Более того, так как сохраненный список со- бытий упорядочен в соответствии с возрастанием времени возникновения событий (ат- рибут 1), следующее событие всегда будет находиться в начале списка, поэтому нужно удалить эту запись из списка, что определит время возникновения следующего события (атрибут 1) и его тип (атрибут 2). Например, список событий при моделировании систе- мы управления запасами будет сохраняться в массиве из четырех строк и двух столбцов, столбец 1 предназначен для такого атрибута, как время возникновения события, столбец 2 — для атрибута, представляющего тип события, а именно: 1,2,3 Или 4. Предположим, в момент времени 0 известно, что в момент времени 0,25 возникнет спрос на товар (со- бытие типа 2), первая оценка запасов (событие типа 4) будет выполнена непосредствен- но в момент времени 0, моделирование завершится (событие типа 3) в момент времени 120, а неприобретенных заказов, поступление которых планируется (событие типа 1), в системе нет. Состояние списка событий и списка доступного пространства после ини- циализации в момент времени 0 показаны на рис. 2.4. Обратите внимание, что в списке нет события типа 1, а в физической строке 1 массива записано событие типа 2, поскольку это была первая запись, помещенная в список событий. Список Список доступного пространства Хвост о Рис. 2.4. Состояние списков при моделировании системы управления запасами после инициализации в момент времени 0 Чтобы определить, какое следующее (первое) событие возникнет в момент времени 0, из списка событий удаляется первая запись, часам модельного времени присваивается зна- чение первого атрибута этой записи (то есть 0), а типу следующего события присваива- ется значение второго атрибута (то есть 4). Строка 3, в которой содержалась эта запись,
146 Глава 2. Моделирование сложных систем помещается в начало списка доступного пространства. Поскольку тип события равен 4, следующим возникает событие оценки запасов (в момент времени 0). Предположим, что в момент времени 0 оформляется заказ, который прибудет от поставщика в момент вре- мени 0,6. Чтобы поместить событие поступления заказа в список событий, значения 0,6 и 1 помещаются в столбцы 1 и 2 строки 3 (голова списка доступного пространства), а за- тем эта новая запись добавляется в список событий. Для этого осуществляется логиче- ское продвижение вниз по списку (с использованием ссылок на следующую запись), по- ка для нее не будет найдено правильное расположение. В частности, сначала атрибут 1 новой записи (0,6) сравнивается с атрибутом 1 записи в строке 1 (0,25). И поскольку 0,6 > 0,25, новая запись должна быть дальше по списку, чем запись в строке 1. Затем 0,6 сравнивается с атрибутом 1 записи в строке 2 (120). (При этом ссылка на следующую за- пись для записи в строке 1 равна 2.) Так как 0,6 < 120, нбвая запись логически помещает- ся между записями в физических строках 1 и 2, для чего соответственно меняются ссыл- ки на предшествующие и последующие записи у этих трех записей. Далее на момент времени 1 назначается следующее событие оценки запасов и помещается в список собы- тий, как и событие поступления заказа. Состояние списков после обработки событий в момент времени О показано на рис. 2.5. Список Список доступного пространства Голова 0 Рис. 2.5. Состояние списков при моделировании системы управления запасами после обработки событий в момент времени 0 В приведенном выше описании один список сохранялся в массиве, пустые строки которого были компонентами списка доступного пространства. Хотя по- добным образом в одном и том же физическом массиве можно сохранять множест- во различных списков одновременно. При этом используется один список доступ- ного пространства, а голова и хвост каждого списка обозначаются отдельными начальными и конечными указателями. В некоторых приложениях этот подход
2.3. Простая библиотека функций simlib 147 позволяет существенно сэкономить память, предназначенную для хранения. До- пустим, для моделирования потребуется 20 списков, в каждом из которых будет содержаться 100 записей, состоящих из 10 атрибутов каждая. Во время использо- вания метода последовательного распределения памяти (см. главу 1) понадобится 20 массивов по 100 строк и 10 столбцов каждый, то есть всего 20 000 ячеек памяти. Предположим, что в любой момент времени задействовано лишь 25 % всех доступ- ных строк. Тогда можно применить альтернативный подход, когда все 20 списков будут храниться в одном массиве, состоящем из 1000 строй и 10 столбцов. В таком случае потребуется 10 000 ячеек памяти для массива плюс 2040 дополнительных ячеек для ссылок и указателей, то есть всего 12 040 ячеек. Более того, в определен- ный момент моделирования некоторые списки могут занимать больше доступных строк, чем предполагает их «достаточная» часть в массиве, и при этом не возник- нет переполнения памяти. Простая библиотека функций для моделирования simlib, рассматриваемая в сле- дующем разделе, позволяет сохранять все списки (в том числе и список событий) в динамической памяти, которая выделяется по мере необходимости для сохране- ния новой записи в списке и освобождается после удаления записи из списка. 2.3. Простая библиотека функций simlib В данном разделе описывается простая библиотека функций для моделирования на языке С, в котором реализована концепция связанного распределения памяти, представленная в разделе 2.2.2. Этот язык упрощает следующие процедуры: добав- ление записи в список (при этом запись может быть добавлена в начало списка, в конец списка или с учетом сортировки в нем других записей — по возрастанию или убыванию); удаление записи из списка (может быть удалена как первая, так и последняя запись в списке); обработка списка событий; вычисление статистики дискретного времени по указанным переменным (например, средняя задержка в очереди требования для систем массового обслуживания); вычисление стати- стики непрерывного времени по указанным переменным (например, среднее по времени число товаров в системе управления запасами); генерирование случай- ных величин, которые используются в примерах этой главы и главы 1; представле- ние выходных данных в стандартном формате. Библиотека функций simlib пред- оставляет ряд возможностей, входящих в специальное программное обеспечение для моделирования (см. главу 3), но ей не присущи завершенность и эффектив- ность вычислений. Здесь она рассматривается только, чтобы лучше понять суть функционирования программного обеспечения в моделировании, а также процесс моделирования систем, более сложных, чем те, о которых шла речь в главе 1. Ядром библиотеки функций simlib является совокупность двунаправленных списков. Эти списки хранятся в динамической памяти, пространство для них вы- деляется по мере добавления новых записей и освобождается по мере удаления за- писей из списков. Максимальное число списков равно 25, записи в каждом списке могут иметь до 10 атрибутов, все данные в них хранятся как тип float. Так как в simlib используется динамическое распределение памяти, общее число записей во всех списках ограничено только размером памяти компьютера.
148 Глава 2. Моделирование сложных систем Список под номером 25 всегда является списком событий. В нем атрибут 1 каждой записи — время возникновения события, атрибут 2 — тип события. Кроме того, этот список всегда сортируется по мере возрастания значений атрибута 1 (времени возникновения события), поэтому начальная (первая) запись в нем всег- да относится к следующему событию. Чтобы использовать simlib, необходимо включить в программу файл simlib.h (с помощью оператора #1nclude), который, в свою очередь, содержит оператор #1 ncl ude для файла simlibdefs.h. Оба файла показаны в листингах 2.28 и 2.29 в при- ложении 2А. В них содержатся объявления и определения нижеследующих пере- менных и констант. sim time Часы модельного времени, переменная типа float, обновляемая функцией timing библиотеки simlib (функция timing будет рассматриваться дальше) next_event_type Тип следующего события, переменная типа 1 nt, определяется функцией timing библиотеки simlib (функция timing будет рассматриваться дальше) transfer^ ] Массив типа float с индексами i- 1,2,.... 10 (индекс i - 0 не используется) для передачи записей в списки и из списков, применяемых при моделировании; transferfi] относится к атрибуту i записи. Массив transfer также служит в библиотеке simlib местом передачи пользователю некоторых итоговых статистических данных maxatr Максимальное число атрибутов для любой записи в любом списке имитационной модели, переменная типа int. Если maxatr не устанавливается пользователем в основной функции, для нее по умолчанию применяется значение 10; значение maxatr не может превышать 10. Если присвоить переменной значение меньше 10, программа будет выполняться быстрее. В simlib значение переменной maxatr должно быть не меньше 4 list_s1ze[Hst] Текущее количество записей в списке list, массив типа int, который автоматически обновляется simlib. Пользователю не понадобится менять значение 1 i st_si ze[l 1st], а нужно будет только запрашивать его в случае необходимости. Например, если установлено, что список 3 представляет очередь, тогда list_s1ze[3] всегда будет обозначать число объектов в этой очереди. Таким образом, если list_size[3] равен 0, понятно, что в очереди нет объектов I1st_rank[list] Номер атрибута, если таковой имеется, по значениям которого записи в списке 11st будут упорядочены (в порядке возрастания или убывания) функцией Hst_f1le библиотеки simlib; массив типа 1nt. Например, если необходимо, чтобы записи в списке 4 выстраивались в соответствии со значениями атрибута 2, то для добавления записи в список 4 пользователь должен присвоить list_rank[4] значение 2, прежде чем применять функцию Hst/ile; один из аргументов функции list_file определяет, в каком порядке будет упорядочен список Как правило, значение Hst_rank[4] задается в основной функции. Если список 11st не упорядочен (то есть записи добавляются только в начало или в конец списка), тогда значение list_rank[Hst] не задается вообще. Обратите внимание, что для list_rank[25] задается значение 1 в функции инициализации 1n1t_s1mlib библиотеки simlib, поскольку атрибутом 1 списка событий (список 25) всегда является время возникновения события, а нам необходимо, чтобы список событий сортировался в порядке возрастания времени возникновения событий FIRST Символьная константа для опции добавления или удаления записи в начале списка; в файле simlibdefs.h ей автоматически присваивается значение 1
2.3. Простая библиотека функций simtib 149 LAST Символьная константа для опции добавления или удаления записи в конце списка; в файле simlibdefs.h ей автоматически присваивается значение 2 INCREASING Символьная константа для опции сортировки списка в порядке возрастания значений соответствующего атрибута, указанного в массиве 11st_rank; автоматически устанавливается на 3 в файле simlibdefs.h DECREASING Символьная константа для опции сортировки списка в порядке убывания значений соответствующего атрибута, указанного в массиве 11st_rank; автоматически устанавливается на 4 в файле simlibdefs.h LIST EVENT Символьная константа для номера списка событий (25); автоматически устанавливается на 25 в файле simlibdefs.h EVENT_TIME Символьная константа для номера атрибута времени возникновения события в списке событий; автоматически устанавливается на 1 в файле simlibdefs.h EVENT_TYPE Символьная константа для номера атрибута типа события в списке событий; автоматически устанавливается на 2 в файле simlibdefs.h Эти переменные и массивы применяются или устанавливаются пользователем во время моделирования по мере необходимости и должны иметь имена и типы, указанные выше, то есть те, с которыми они объявлены в файле simlib.h. Всего в библиотеку simlib входит 19 функций, каждая из них может быть ис- пользована для выполнения действий, часто возникающих при моделировании. ♦ Функция init_simlib. Вызывается из основной функции, написанной пользо- вателем, в начале любого прогона имитационной модели. Она выделяет про- странство для хранения списков, устанавливает в исходное состояние ссылки на следующую и предыдущую записи, а также начальный и конечный указате- ли каждого списка, устанавливает часы модельного времени в 0, задает для list_rankfEVENT_LIST] значение EVENT_TIME, чтобы обеспечить сортировку спис- ка событий по времени их возникновения, и устанавливает для переменной maxatr значение по умолчанию, равное 10. Кроме того, в ней устанавливаются на 0 накопители статистики для функций sampst и timest (описаны ниже). ♦ Функция list_file(option, list). Добавляет атрибуты записи, которую пользо- ватель поместил в массив transfer, в список list (имеет тип Int) в соответ- ствии со значением ее аргумента option. То есть при вызове функции list_fi - 1е в список list помещается transfer[i] как атрибут г новой записи (i = 1,2,..., maxatr). При этом доступны такие значения аргумента option. Аргумент Действие 1 (или FIRST) Запись в массиве transfer добавляется в список list перед его первой текущей записью 2 (или LAST) Запись в массиве transfer добавляется в список list после его последней текущей записи 3 (или INCREASING) Запись в массиве transfer добавляется в список list так, чтобы он оставался отсортированным в порядке возрастания значений атрибута list_rank[11st], значение которого должно быть установлено раньше. Если две записи имеют одинаковые значения атрибута list rank[l 1 st], действует правило FIFO 4 (или DECREASING) Запись в массиве transfer добавляется в список list так, чтобы он оставался отсортированным в порядке убывания значений атрибута 11st_rank[list], Если две записи имеют одинаковые значения атрибута 11st_rank[11st], действует правило FIFO
150 Глава 2. Моделирование сложных систем Таким образом, функция list_file(1.3) поместит запись transfer[l],trans- fer[maxatr] в список 3, сделав ее первой записью в списке. То же осуществит и функция 1ist_fi 1 e(FIRST, 3). Если нужно, чтобы список 2 был отсортирован в порядке убывания значений атрибута 4 записей этого списка, надо выполнить функцию list_file(DECREASING, 2), перед тем убедившись, что основной функ- ции присвоено list_rank[2] значение 4 (в функции main). Затем можно запла- нировать событие в списке событий, выполнив функцию 11 st_fi 1 е( INCREASING, LIST EVENT) после того, как (по меньшей мере) для transfer[l] будет установлено значение времени возникновения этого события, а для transfer[2] — тип этого события (см. ниже описание функции event^schedule - более простого способа планирования событий в списке событий). Функция list file динамически выделяет пространство для хранения новой записи в списке list. ♦ Функция list_remove(option, list). Вызывая эту функцию, мы удаляем запись из списка list (тип данных int) и копируем ее (то есть ее атрибуты) в массив transfer. Аргумент option типа int определяет, какая запись будет удалена. Аргумент Действие 1 (или FIRST) Удаляет первую запись из списка list и помещает ее в массив transfer 2 (или LAST) Удаляет последнюю запись из списка 1 i st и помещает ее в массив transfer После вызова функции list remove элементы в массиве transfer, которые те- перь соответствуют элементам только что удаленной записи, обычно использу- ются для выполнения каких-либо задач моделирования. Например, функция list_remove(2.1) удаляет последнюю запись в списке 1 и помещает ее в массив transfer; то же самое осуществляет функция list remove(LAST.l). При этом ди- намически освобождается память, поскольку пространство, используемое для этой записи в списке list, больше не востребовано. ♦ Функция tinting. Вызванная пользователем из функции main, выполняет то же, что и синхронизирующие функции, описанные в главе 1. Единственное ее от- личие заключается в том, что теперь она является внутренней функцией паке- та simlib и использует структуру списка событий таким образом, как это пока- зано в примере 2.2. Ею определяется тип следующего события next_event_type (переменная типа int библиотеки simlib, объявленная в файле simlib.h), а значе- ние часов sim time обновляется в соответствии со временем возникновения следующего события. При этом функция timing вызывает функцию list_remo- ve(FIRST, LIST EVENT), для того чтобы та удалила первую запись из списка со- бытий (списка 25). Так как список событий сортируется в порядке возраста- ния времени возникновения событий, это будет запись следующего события. Таким образом, атрибуты 1 через переменную maxatr первой записи помеща- ются в массив transfer и могут быть использованы в дальнейшем. Иногда же имеет смысл обратиться к каким-нибудь другим атрибутам записей событий (а не атрибутам 1 и 2)( см. разделы 2.6 и 2.7, а также задачу 2.3). ♦ Функция event_schedule(time_of_event, type_of_event). Данную функцию можно вызвать, чтобы планировать возникновение события типа type of event (тип int) на время time_of_event (тип float). Обычно функция event schedule
2.3. Простая библиотека функций simlib 151 применяется для планирования события в модельном будущем, поэтому зна- чение переменной time of event — это сумма значений переменных sim time + timejnterval, где timejnterval - интервал между текущим моментом времени и временем возникновения события. Если в списке событий кроме атрибутов 1 (время возникновения события) и 2 (тип события) используются еще и дру- гие атрибуты, пользователь должен поместить их значения в соответствую- щие ячейки массива transfer, прежде чем вызывать функцию event schedule. ♦ Функция event cancel(event type). С ее помощью можно отменить (удалить) первое событие типа event_type (тип int) в списке событий, если такое собы- тие есть в списке, и поместить атрибуты записи отмененного события в мас- сив transfer. Если в списке событий нет события типа event type, функция event_cancel не выполнит никаких действий. Когда данная функция находит в списке событие типа event type и отменяет его, она возвращает значение 1 типа int; если такого события нет, функция возвращает значение 0. ♦ Функция sampst(value, variable). Собирает и суммирует дискретные данные, например значения задержек требований в очереди. Предусмотрено до 20 пе- ременных функции sampst, каждая из которых обрабатывается и суммируется в отдельности и индексируется по аргументу переменной типа int. Так, в мо- дели может быть три отдельные очереди, и тогда Переменные 1, 2 и 3 функции sampst будут использоваться для накопления и суммирования задержек требо- ваний в отдельности в каждой из этих трех очередей. Всего функция sampst может выполнять три задачи. В ходе моделирования. При каждом наблюдении нового значения переменной variable функции sampst (допустим, окончание задержки в очереди) ее значе- ние помещается в аргумент value типа float и вызывается функция sampst. На- пример, если определено, что переменная 2 функции sampst будет обозначать задержки в очереди 2 модели, то можно выполнить функцию sampst(delау2, 2), поместив нужное значение задержки в переменную del ау2 типа float. Функция sampst обеспечивает отдельный учет для каждой переменной, в которой накап- ливается статистика для получения конечных результатов (описаны дальше). По завершении моделирования. Пользователь может вызвать функцию sampst с отрицательным значением соответствующей переменной vari аЫ е, чтобы по- лучить итоговую статистику, которая помещается в массив transfer[i ] следую- щим образом. i transfer[i] 1 Зарегистрированное среднее значение переменной variable 2 Зарегистрированное количество значений переменной variable 3 Зарегистрированное максимальное значение переменной vari аЫ е 4 Зарегистрированное минимальное значение переменной variable Кроме того, функция возвращает как тип float среднее по времени значение (называемое), которое помещается в массив transferEl] для удобства, посколь- ку при моделировании часто требуются средние значения. Так, при выполне- нии функции sampst (0.0. -2) итоговая статистика по переменной 2 функции
152 Глава 2. Моделирование сложных систем sampst помещается в массив transfer (как это описано выше), и таким образом возвращается среднее значение. Затем нужная итоговая статистика выводится для пользователя или применяется иначе. При таком использовании функции sampst значение аргумента value игнорируется. (Если для переменной variable не зарегистрировано ни одного значения, то ее среднее, максимальное и мини- мальное значения не определяются. Тогда функция sampst возвращает среднее значение как 0, максимальное как -1О30 и минимальное как Ю30.) Для установки в 0 всех счетчиков переменных функции sampst. Счетчики для всех переменных функции sampst устанавливаются в исходное состояние (как в начале моделирования) при выполнении функции sampst(0.0. 0). Эта функ- ция выполняется в функции init_simlib в момент времени 0. Такую возмож- ность следует использовать в процессе моделирования в случае, когда мы име- ем намерение начать регистрацию данных только по завершении некоторого предварительного периода работы системы (см. раздел 9.5.1 и задачу 2.7). ♦ Функция timest(value, variable). Подобна функции sampst, но работает с не- прерывными данными, например с функцией для определения среднего числа требований в очереди (см. раздел 1.4.1). Аргумент variable типа int снова от- носится к одной из 20 возможных переменных variable функции timest, в ко- торых по мере необходимости собираются данные. Например, переменные 1, 2 и 3 могут обозначать число требований в очередях 1, 2 и 3 соответственно. Как и функция sampst, функция timest может выполнять три задачи. В ходе моделирования. Каждый раз, когда переменная vari abl е функции ti mest получает новое значение, следует выполнять функцию timest(value. variable), где аргумент value типа float содержит новое значение переменной (получен- ное после внесения изменений). Например, если длина очереди 2 меняется в результате поступления или ухода требования, надо выполнить функцию timest(q2, 2) с целью сбора соответствующей статистики. Накопители стати- стики для функции timest инициализируются в функции init_siml ib исходя из допущения, что все функции непрерывного времени, отслеживаемые функци- ей timest, изначально имеют значение 0. Такое поведение можно отменить, вы- полнив сразу после вызова функции init_simlib функцию timest(value. va- riable), аргумент value которой содержит необходимое (ненулевое) исходное значение переменной variable. (Это действие нужно выполнить для каждой из необходимых переменных функции timest.) По завершении моделирования. Пользователь может вызвать функцию timest с отрицательным значением переменной variable, чтобы получить итоговую статистику, которая помешается в массив transfer[i] следующим образом. i transferfi] 1 Зарегистрированное среднее по времени значение переменной variable, обновленное на время вызова функции 2 Максимальное значение переменной variable, зарегистрированное на время вызова функции 3 Минимальное значение переменной variable, зарегистрированное на время вызова функции
2.3. Простая библиотека функций simlib 153 Кроме того, данная функция возвращает как тип fl oat среднее по времени зна- чение (называемое), которое помещается в массив transfer [1] для удобства, по- скольку это значение часто требуется при моделировании. Так, при выполне- нии функции timest(0.0, -2) итоговая статистика по переменной 2 функции timest будет помещена в массив transfer (как описано выше), и тем самым воз- вращается среднее по времени значение. Затем необходимая итоговая стати- стика выводится для пользователя или находит иное применение. Для установки в 0 всех счетчиков переменных функции timest. Счетчики для всех переменных функции timest устанавливаются в исходное состояние (как в начале моделирования) при выполнении функции timest(0.0. 0). Эта функ- ция выполняется в функции init simlib в момент времени 0. Предполагается, что все переменные функции ti mest изначально имеют значение 0. Чтобы пере- установить для переменной vari ablе функции timest значение val ue, необходи- мо выполнить функцию timest(value, variable). ♦ Функция filest(list). Обычно вызывается в конце прогона имитационной мо- дели и обеспечивает итоговые данные по количеству записей в списке list, помещая их в массив transfer[i] подобно функции timest. i transferp]_______________________________________________________ 1 Среднее по времени число записей в списке 11 st, обновленном на время вызова функции 2 Максимальное число записей в списке list, зарегистрированное на время вызова функции 3 Минимальное число записей в списке list, зарегистрированное на время вызова функции Кроме того, функция возвращает как тип float среднее по времени значение (называемое), которое помещается в массив transfer[l] для удобства, так как это значение часто требуется при моделировании. Библиотека simlib рассмат- ривает число записей в списке как функцию непрерывного времени со значе- нием, увеличивающимся или уменьшающимся только во время возникновения событий, поэтому имеет смысл говорить о среднем по времени числе записей в списке и т. д. Simlib таким образом автоматически отслеживает все списки и позволяет выдавать соответствующую статистику при вызове функции fi lest. Почему важны данные о длине списков? Возможность получения сведений о длине списков может оказаться полезной, поскольку число записей в списке часто имеет какое-либо физическое значение. Так, при моделировании очередь, как правило, представлена списком, следовательно, число записей в списке равно числу требований в очереди, то есть среднее по времени или максималь- ное число требований в очереди просто является средним по времени или мак- симальным числом записей в списке. Еще один пример: список используется для представления устройства обслуживания. Когда устройство занято, в спи- ске содержится одна запись; когда устройство свободно, список пуст. В этом случае среднее по времени число записей в списке представляет коэффициент занятости устройства, поскольку список может иметь длину, равную либо О, либо 1. Таким образом, часто (если не всегда) можно избежать необходимости
154 Глава 2. Моделирование сложных систем явно отслеживать функции непрерывного времени с помощью функции timest. Тем не менее вместо функции f1 lest следует использовать функцию timest, ес- ли соответствующий список устанавливается просто для удобства сбора стати- стики. Особенно это касается случаев, когда отслеживаемая функция увеличи- вается или уменьшается с шагом, отличным от 1 (примером может служить уровень запасов в модели из раздела 1.5), из-за затрат, связанных с добавлени- ем и удалением большого количества фиктивных записей. Более того, если от- слеживаемая функция может принимать нецелые значения, вместо функции filest опять-таки надо применять функцию timest. (Библиотека simlib рас- сматривает число записей в списке list как переменную 20 + list функции timest, так что в действительности существует всего 45 переменных функции timest, но только первые 20 доступны пользователю. Тогда функция fi lest вы- зывает функцию timest с переменной, равной -(20 + list), для получения стати- стики по списку list.) 4 Функция out sampst(unit, lowvar, highvar). Ее можно вызвать для получения итоговой статистики по переменным с номерами от lowvar до highvar (вклю- чительно) функции sampst и записать ее в файл unit. Оба аргумента, lowvar и highvar, имеют тип int. Таким образом, мы получаем стандартный формат результатов (они помещаются в строке из 80 символов) и можем избежать: заключительного вызова функции sampst (что, впрочем, не избавляет нас от необходимости вызывать ее в ходе моделирования), использования операто- ров prlntf, форматирования и т. д. Недостаток функций out_sampst в том, что она не позволяет управлять комментариями и схемой результатов. Так, функ- ция out_sampst(outfile, 1. 3) запишет итоговую статистику по переменным 1, 2 и 3 в файл outfile, а функция sampst(outfile, 4, 4) запишет итоговую ста- тистику по переменной 4. Дальше в этой главе при моделировании с приме- нением библиотеки simlib приведены примеры использования (и игнорирова- ния) такого стандартного формата результатов. ♦ Функция out_timest(unit, lowvar, highvar). Как и функция out sampst, эта не- обязательная функция может быть использована для представления результа- тов стандартного формата в файле unit для переменных с номерами от lowvar до highvar функции timest.. 4 функция out_filest(unit, lowfile, highfile). Использует функцию filest, что- бы представить итоговую статистику по числу записей в файлах с номерами от 1 owf i 1 е до hi ghf 11 е, записав ее в файл uni t; оба аргумента, 1 owfi 1 е и hi ghfi 1 е, имеют тип int. 4 Функция expon(mean, stream). Возвращает значение типа float со значени- ем, полученным из экспоненциального распределения со средним значением mean (аргумент типа float). Аргумент stream типа int является случайным но- мером потока, его указывает пользователь (см. раздел 7.1 и приложение 7А). На данный момент можно рассматривать иомер потока как отдельный неза- висимый генератор случайных чисел (или список случайных чисел), который создает нужные значения из экспоненциального распределения. Как правило, при моделировании удобно «выделять» поток случайных чисел для отдельно- го источника случайности, например: поток 1 - для интервалов времени меж-
2.3. Простая библиотека функций simiib 155 ду поступлениями, поток 2 — для времени обслуживания и т. д., что позволяет использовать методы понижения дисперсии (см. главу 11). Названные методы зачастую обеспечивают повышение статистической точности моделирования. Применяя выделенные потоки, можно облегчить отладку программы. За ис- ключением функции выделения специальных потоков, это такая же функция, как и та, что использовалась в разделе 1.4.5 для генерирования результатов из экспоненциального распределения. В библиотеке simlib доступно 100 отдель- ных потоков, то есть аргумент stream имеет значения от 1 до 100 включитель- но, а длина каждого потока составляет 100 000 случайных чисел. 4- функция random_integer(prob_distrib[], stream). Возвращает значение целого числа из дискретного распределения вероятности со значениями интегральной функции распределения, указанными пользователем в массиве prob_distrib типа float. Для положительного целого числа i между 1 и 25, чтобы генериро- вались значения меньшее чем или равное i с нужной вероятностью, необходи- мо определить массив prob_distrib[1] прежде чем вызывать функцию rand- omjnteger. Если диапазон необходимых целых чисел представлен как 1, 2,..., k, где k < 25, тогда для prob_distrib[k] должно быть установлено значение 1,0; таким образом, нет необходимости указывать prob_distrib[j] pjixj > k. Цело- численный аргумент stream (между 1 и 100) задает поток случайных чисел. За исключением возможности выделения потоков случайных чисел это такая же функция, как и та, которая использовалась для системы управления запасами в разделе 1.5.4. 4 Функция uniform(a, b, stream). Возвращает значение типа float со значени- ем, полученным из (непрерывного) равномерного распределения между а и b (оба аргумента имеют тип float). Как и в предыдущих функциях, аргумент stream — это целое число от 1 до 100, задающее поток случайных чисел. 4 Функция erlang(m, mean, stream). Возвращает значение типа float со значе- нием, полученным из распределения Эрланга т-го порядка со средним значе- нием mean посредством потока случайных чисел stream; аргумент m имеет тип float, a stream - int. (Данное распределение будет рассмотрено в разделе 2.7.) 4- Функция lcgrand(stream). Является генератором случайных чисел, используе- мым в библиотеке simlib. Функция возвращает значение типа float со значе- нием, полученным из непрерывного равномерного распределения между 0 и 1 с помощью потока случайных чисел stream (целочисленный аргумент). Ее код дан в листинге 7.2 в приложении 7А. Используя simlib, в частности добавляя в программу файл simlib.h (с помощью оператора #i ncl ude), нет необходимо- сти включать файл legrand.h (см. листинг 7.3 в приложении 7А), поскольку в файле simlib.h есть все необходимые объявления. 4 Функция lcgrandst(zset, stream). Устанавливает начальное число для потока случайных чисел stream, которое представляет собой аргумент zset типа long (см. листинг 7.2 в приложении 7А). 4 Функция lcgrandgt(stream). Возвращает значение типа long с текущим базо- вым целым числом для генератора случайных чисел потока stream. Более пол- ное описание функции содержит глава 7 (см. листинг 7.2 в приложении 7А).
156 Глава 2. Моделирование сложных систем Данная функция служит для возобновления моделирования (с применением legrandst) с того места, где был остановлен предыдущий прогон, при исполь- зовании случайных чисел. В завершение описания библиотеки simlib, прежде чем перейти к конкретным примерам, обратимся к обозрению, в котором рассмотрим применение компонен- тов simlib при моделировании. Пользователь, безусловно, может по-прежнему пи- сать основную и событийные функции на языке С, но функции библиотеки simlib значительно упрощают разработку кода. В первую очередь необходимо опреде- лить события и решить, какие списки будут использоваться; нумерация списков и их атрибутов в целом является произвольной, но очень важно, чтобы она была по- следовательной. Следует также определить все применяемые переменные функ- ций sampst и timest, а также использование потоков случайных чисел. Кроме гло- бальных переменных, объявленных в библиотеке simlib (в заголовочном файле simlib.h), понадобится объявлять некоторые глобальные и, возможно, локальные переменные. В основной функции выполняются следующие действия (приблизи- тельно в указанном порядке). 1. Считываются и записываются (для подтверждения) входные параметры. 2. Вызывается функция init_simlib, чтобы установить в исходное состояние пе- ременные simlib. 3. При необходимости 11 st_rank[l 1 st] присваивается номер атрибута, используе- мого для сортировки списка 11 st. Применяется для списков, которые должны вестись в порядке соответствия значению определенного атрибута. (Если, кро- ме списка событий, других таких списков нет, этот пункт пропускается). 4. Переменной maxatr присваивается значение максимального числа атрибутов, используемого в любом списке. Обратите внимание, что для нормальной рабо- ты simlib значение maxatr должно быть не меньше 4. Если же пропустить этот пункт, по умолчанию maxatr будет присвоено значение 10, и моделирование бу- дет выполняться правильно. Но если присвоить maxatr меньшее значение, то это ускорит моделирование, поскольку отпадает потребность копировать неис- пользуемые атрибуты в списки и из них. 5. При необходимости вызывается функция timest для установки в исходное со- стояние переменных функции timest, которые изначально не будут равны 0. 6. Инициализируется список событий с помощью вызова функции event schedule для каждого события, назначаемого на момент времени 0. Если в структуре данных для события используются какие-либо атрибуты кроме первого (время возникновения событий) и второго (тип события), пользователь должен сам установить transfer[3], transfer[4] и т. д. перед вызовом функции event schedu- 1е для этого события. События, которые не могут возникнуть, в список собы- тий не помещаются. 7. Вызывается функция timing, с тем чтобы определить тип следующего события next_event_type и обновить значения часов модельного времени sim_time в соот- ветствии со временем возникновения этого события. 8. Вызывается соответствующая событийная функция (написанная пользовате- лем, но с возможным применением переменных и функций библиотеки simlib),
2.4. Система массового обслуживания с одним устройством обслуживания 157 определенная значением переменной next event type. Для этого, как правило, применяется оператор выбора case, он передает управление одному из операто- ров вызова событийных функций, как в программах на языке С из главы 1. 9. По завершении моделирования вызывается функция генератора отчетов (на- писанная пользователем), которая, в свою очередь, вызывает функцию sampst, timest или filest, а затем выводит итоговую статистику. В качестве альтерна- тивы генератор отчетов может вызывать функцию out_sampst, out_timest или out fl 1 est с целью вывести итоговую статистику в стандартном формате. Пока выполняется моделирование, списки обрабатываются с помощью функ- ций llst file и list remove вместе с массивом transfer, служащим для передачи данных, содержащихся в атрибутах записей, в списки и из них. Функции sampst и timest также используются для сбора статистики по определенным переменным. Последнее замечание касается возможностей обработки ошибок в библиотеке simlib. Пока не существует пакета для моделирования, способного обнаруживать все ошибки и определять пути их исправления, однако моделирующие программы содержат для этого специальные возможности (см. главу 1). И simlib имеет неско- лько возможностей обработки ошибок, обеспечивающих вывод на экран сообще- ния стандартного вида, где указана суть ошибки и время ее возникновения. Так, функция timing библиотеки simlib следит за «направлением времени», то есть не позволяет назначить событие на момент времени предшествующий текущему. Кроме того, проверяются недействительные номера списков, недействительные номера переменных, а также контролируются попытки удалить запись из пустого списка. В разделах 2.4-2.7 будет показано, как библиотека simlib используется для мо- делирования систем разного уровня сложности. 2.4. Система массового обслуживания с одним устройством обслуживания В этом разделе речь пойдет о том, как имитировать систему массового обслужива- ния с одним устройством обслуживания, представленную в разделе 1.4, используя библиотеку simlib. 2.4.1. Постановка задачи Поскольку данная модель точно соответствует модели из раздела 1.4, мы можем сосредоточиться на использовании simlib, не тратя времени на описание структу- ры новой модели. Нами будет использовано правило останова после регистрации 1000 задержек в очереди, описанное в разделе 1.4.3. 2.4.2. Программа с применением библиотеки функций simlib В первую очередь необходимо определить события модели, которые в данном слу- чае остаются прежними: поступление требования — это событие типа 1, уход тре- бования (завершение обслуживания) — событие типа 2.
158 Глава 2. Моделирование сложных систем Затем следует определить списки simlib и атрибуты их записей. Эти сведения лучше записать, поскольку на них придется ссылаться в ходе разработки программы. Список_____________________Атрибут 1________________ Атрибут 2 1, очередь Время на обслуживание — 2, устройство обслуживания — — 25, список событий Время возникновения события Тип события Что касается списка 1 (представляющего собой очередь), то он подобен масси- ву time arrival, применяемому в разделе 1.4.5, но теперь можно воспользоваться функциями simlib для обработки списков. В списке 1 записи имеют лишь один ат- рибут. Список 2 представляет устройство обслуживания — в нем нет записей (ког- да устройство свободно) либо присутствует всего одна запись (когда устройство занято). Если устройство занято, запись в списке 2 окажется -«фиктивной», то есть в ней не будет действительных атрибутов. Такой список создается для того, чтобы можно было по окончании моделирования воспользоваться функцией f i l est с це- лью получения данных о коэффициенте занятости устройства. Кроме того, чтобы узнать, занято ли устройство, достаточно определить, будет ли размер списка 2 list_size[2] равен 1. Применение фиктивного списка позволяет обойтись без пе- ременной server status и без использования функции timest для получения дан- ных о занятости устройства в ходе моделирования и по завершении. Однако такой подход не является наиболее эффективным в плане выполнения вычислений, по- скольку изменение состояния устройства обслуживания запрашивает весь меха- низм связанных списков, а не вызывает изменение лишь переменной server_sta- tus. (Хороший пример соотношения между временем, затрачиваемым на вычисле- ния, и временем, которое аналитик тратит на создание кода.) Наконец, список 25 является списком событий. Атрибут 1 этого списка представляет собой время воз- никновения событий, атрибут 2 — тип событий; указанные атрибуты списка собы- тий являются обязательными для всех программ simlib, но в некоторых моделях используются и дополнительные атрибуты для записей событий в списке 25. Далее определяются все применяемые переменные функций sampst и timest. В этом случае используется одна переменная функции sampst. Номер переменной функции sampst_____Значение__________ 1 Задержки в очереди Поскольку с помощью функции fi 1 est (или функции out f i 1 est, если для нас более приемлем стандартный формат результатов) можно получить как статистику относительно числа требований в очереди, так и статистику коэф- фициента загрузки устройства, переменные функции timest в этой модели не потребуются. Наконец, назначаем отдельные потоки случайных чисел для генерирования интервалов времени между поступлениями и временем обслуживания. Поток Назначение __________________________ 1 Интервал времени между поступлениями 2 Время обслуживания
2.4. Система массового обслуживания с одним устройством обслуживания 159 Внешние объявления приведены в листинге 2.1, они находятся в начале файла mmlsmlb.c. В первую очередь включаем в программу (с помощью оператора#! ncl ti- de) заголовочный файл simlib.h, который требуется для всех программ, использую- щих simlib. Чтобы сделать код более читабельным и более общим, определяем символьные константы для типов событий, номеров списков, переменных функ- ции sampst и потоков случайных чисел. Еще следует объявить некоторые перемен- ные, не относящиеся к simlib, однако их будет гораздо меньше, нежели в разде- ле 1.4.5, поскольку значительная часть информации содержится в simlib. Кроме того, нам потребуются некоторые функции: функция initjnodel — для инициали- зации определенной модели, функции arri ve и depart — для событий, а также гене- ратор отчетов. Функции timing и ехроп больше не понадобятся, так как они есть в библиотеке simlib. Листинг 2.1. Код на языке С с внешними объявлениями (модель системы массового обслуживания в simlib) /* Внешние объявления для модели системы массового обслуживания с одним устройством обслуживания в simlib. */ #1nclude “simlib.h" #define EVENT_ARRIVAL #define EVENT_DEPARTURE fdefine LIST_QUEUE #define LIST_SERVER #define SAMPSTDELAYS #define STREAM_INTERARRIVAL tfdefine STREAM SERVICE /* Требуется для использования simlib.с. */ 1 /* Тип события для поступления требования. */ 2 /* Тип события для ухода требования. */ 1 /* Номер списка для очереди. */ 2 /* Номер списка для устройства обслуживания. */ 1 /* Переменная функции sampst для задержек в очереди. */ 1 /* Поток случайных чисел для интервалов времени между поступлениями. */ 2 /* Поток случайных чисел для времени обслуживания. */ /* Объявляем глобальные переменные, не относящиеся к simlib. */ int num_custs_delayed. num_delaysj?equired: float mean_interarrival. mean_service; FILE *1nfile. *outfile; /* Объявляем функции, не относящиеся к simlib. */ void initjnodel(void); void arrive(void); void depart(void); void report(void); В листинге 2.2 показана основная функция, ее должен написать пользователь. Открыв входной и выходной файлы, считываем входные параметры, записываем их для подтверждения правильности считывания (а также для оформления вы- ходных результатов). Вызывая функцию init simlib, инициализируем библиоте- ку simlib. Затем для переменной maxatr устанавливаем значение 4, поскольку у нас пока нет записей, содержащих более двух атрибутов, и к тому же для правильной работы simlib переменная maxatr должна иметь значение не меньше 4. Кроме спис- ка событий, других упорядоченных списков нет, поэтому для массива list rank ничего задавать не нужно. Обе функции непрерывного времени (определяющие
ffiO Глава 2. Моделирование сложных систем длину очереди и еостояйие устройства обслуживания) изначально равны 0, пото- му нет пЬтребности менять значения, установленные для них по умолчанию. Да- лее вызываем написанную функцию 1nit_model, с помощью которой задаем пере- менные моделирования, не использующиеся в библиотеке simlib. Остальная часть основной функции соответствует коду в листинге 1.11 для варианта модели, напи- санного без применения библиотеки simlib. Обновлять счетчики статистики непре- рывного времени нет потребности, поскольку simlib делает это самостоятельно. Листинг 2 Л. Код на языке С для основной функции (модель системы массового обслуживания в simlib) main!) /* Основная функция. */ { /* Открываем входной и выходной файлы. */ infile - fopen("mmlsmlb.1n". "г"): outfile - fopen("mmlsmlb.out", "w"); /* Считываем входные параметры. */ fscanf(infile. "Xf Xf Xd", &mean_interarrival. &nean_service. &num_delays_requi red); /* Записываем заголовок отчета и входные параметры. */ fprintf(outfile. "Система массового обслуживания с одним устройством обслуживания в siml1b\n\n"); fprintf(outfile. "Среднее время между поступлениями XII.3f мин\п\п". meanjnterarri val): fprintf{outfile. "Среднее время обслуживанияХ16.3Г мин\п\п", mean_service): fprintf(outfi1е, "Число требованийХ14б\п\п\п". num_delays_required): /* Инициализируем simlib */ init_simlib(): /* Задаем значение переменной maxatr - max(максимальное число атрибутов для одной записи, 4) */ maxatr - 4; /* НИКОГДА НЕ ЗАДАВАЙТЕ ДЛЯ ПЕРЕМЕННОЙ maxatr ЗНАЧЕНИЕ МЕНЬШЕ 4. */ /* Инициализируем модель. */ initjnodeK); /* Выполняем моделирование, пока дополнительные задержки все еще необходимы. */ while (num_custs_delayed < num_delays_required) { /* Определяем следующее событие. */ timing!): /* Вызываем соответствующую событийную функцию. */ switch (next_event type) { case EVENT ARRIVAL:
2.4. Система массового обслуживания с одним устройством обслуживания 161 arriveO; break; case EVENT_DEPARTURE; departO: break: } } ,, /* Вызываем генератор отчетов и завершаем моделирование. */ reportO: fclose(infile); fclose(outfile): return 0; } В листинге 2.3 показан код функции initjnodel, который начинается с установки в 0 счетчика числа зарегистрированных задержек требований в очереди num_custo- mers delayed. Затем планируется первое поступление требования. Для этого вызыва- ется функция event_schedule с нужным временем возникновения события (значение типа float) в качестве первого артумента и типом события (тип int) в качестве вто- рого аргумента. В данном случае не обязательно прибавлять значение переменной sim_time к сгенерированному экспоненциально распределенному времени между по- ступлениями в первом аргументе, поскольку значение sim time сейчас равно 0. Но мы написали этот аргумент таким образом, чтобы показать общую форму и подчеркнуть тот факт, что первый аргумент функции event_schedul е является абсолютным време- нем в модельном будущем, когда должно возникнуть данное событие, а не интерва- лом времени от текущего момента до времени возникновения события. В главе 1 время событий, которые не могли возникнуть, устанавливалось на оо (точнее на 1О30), а теперь эти события просто не вносятся в список событий и таким образом исклю- чается возможность их выбора и возникновения. Поэтому в данной функции собы- тие ухода требования вообще не назначается. Листинг 2.3. Код на языке С для функции initjnodel (модель системы массового обслуживания в simlib) void initjnodel(void) /* Функция инициализации. */ { num_custs_delayed - 0; event_schedule(sim_time + expon(mean_interarrival. STREAM_INTERARRIVAL). EVENT ARRIVAL); 1 В листинге 2.4 приведен код событийной функции arrive, которая начинается с функции event_schedule, планирующей следующее поступление в форме, анало- гичной той, что использовалась в функции i ni tjnodel. (В этом случае обязательно прибавление значения sim_time к сгенерированному экспоненциально распреде- ленному времени между поступлениями в первом аргументе, поскольку sim_time будет иметь положительное значение.) Затем проверяется занятость устройства
162 Глава 2. Моделирование сложных систем обслуживания, и для этого определяется наличие фиктивной записи в списке устройства обслуживания (то есть равен ли 1 размер списка list_size[LIST_SER- VER]). Если устройство занято, то поступившее требование должно стать в конец очереди, с этой целью время поступления требования (текущее значение часов s1m_time) помещается в первую ячейку массива transfer, и эта запись добавляется в конец (аргумент opti on равен LAST, то есть 2) списка очереди (аргумент list равен LIST QUEUE, то есть 1). Обратите внимание, в данном случае у нас нет потребности проверять, не переполнена ли очередь, поскольку simlib по мере необходимости автоматически выделяет память для хранения списков. Если же устройство сво- бодно, задержка требования в очереди равна 0, что регистрируется с помощью функции sampst. Такая регистрация необходима, несмотря на то что задержка рав- на 0, так как при этом функция sampst все равно увеличивает число наблюдений на 1. Мы увеличиваем значение переменной num_cust_del ayed, поскольку регистри- руется задержка одного требования в очереди, и в списке событий назначаем со- бытие ухода EVENT_DEPARTURE. Напомним, что для генерирования времени обслужива- ния выделен поток 2. Листинг 2.4. Код на языке С для функции arrive (модель системы массового обслуживания в simlib) void arrive(void) /* Событийная функция для поступления требования. */ /* Назначаем следующее поступление. */ event_schedule(sim_time + expon(mean_interarrival. STREAMJNTERARRIVAL). EVENT_ARRIVAL): /* Проверяем занятость устройства обслуживания (то есть наличие записи в списке LIST_SERVER). */ if (list_size[LIST_SERVER] — 1) { /* Устройство занято, сохраняем время поступления данного требования в конце списка LIST_QUEUE. */ transfer[l] - sim time; liSt_file(LAST. LIST_QUEUE); ) else { /* Устройство свободно, начинаем обслуживание поступившего требования, задержка в очереди которого равна 0. (Следующий оператор в данном случае ОБЯЗАТЕЛЕН.) */ sampst(0.0. SAMPST_DELAYS); /* Увеличиваем число задержек требований в очереди. */ ++num_custs_delayed; /* Переводин устройство в состояние занятости. добавляя фиктивную запись в список LIST_SERVER. */ list_file(FIRST. LIST_SERVER):
2.4. Система массового обслуживания с одним устройством обслуживания 163 /* Назначаем уход требования (завершение обслуживания). */ event_schedule(sim_time + expon(mean_service. STREAM_SERVICE). EVENT_DEPARTURE): } } Событийная функция depart (см. листинг 2.5) проверяет наличие требований в очереди по длине списка очереди, которая содержится в переменной list_si ze[LIST_QUEUE]. Если требований в очереди нет, устройство обслуживания стано- вится свободным, для этого нужно произвести только одно действие — удалить фиктивную запись из списка LIST_SERVER. Заметьте, удаляется первая запись спис- ка, но можно удалить и последнюю, поскольку она в списке всего одна. Если в оче- реди есть требования, ее покидает первое требование, а время его поступления по- мещается в массив transfer[l] с помощью функции list remove. Следовательно, задержка в очереди этого требования равна sim_time - transfer[l]. Ее продолжи- тельность подсчитывается и регистрируется в функции sampst, а число зарегис- трированных задержек увеличивается. Если бы моделирование выполнялось в те- чение длительного времени (как и в примерах в главе 1), для sim_time и transfer пришлось бы задать тип double, чтобы избежать потери точности вычитания при вычислении задержек в очереди. Наконец, назначается завершение обслуживания требования с помощью функции event_schedule. Учтите, что больше не нужно пе- редвигать очередь на одно место вперед, simlib делает это самостоятельно, исполь- зуя связанные списки (о чем уже шла речь в примере 2.1). Листинг 2.5. Код на языке С для функции depart (модель системы массового обслуживания в siihlib) void depart(void) /* Событийная функция для ухода требования. */ { /* Проверяем, есть ли требования в очереди. */ if (list_size[LIST_QUEUE] -- 0) /* В очереди нет требований, переводим устройство в состояние незанятости и опускаем в списке событий уход требования (завершение обслуживания). (На текущий момент его нет в списке, поскольку оно было удалено функцией timing.) */ list_remove(FIRST. LIST_SERVER); else { /* В очереди есть требования, удаляем из нее первое требование, регистрируем задержку в очереди, увеличиваем число задержек требований в очереди и назначаем событие ухода. */ list_remove(FIRST. LIST_QUEUE): sampst(sim_time - transfertl], SAMPST DELAYS): ++num_custs_delayed: event_schedule(sim_time + expon(mean service. STREAM_SERVICE), EVENT_DEPARTURE); } }
164 Глава 2. Моделирование сложных систем Функция генератора отчетов (листинг 2.6) использует стандартный формат результатов, предоставляемых функцией out sampst, определяющей задержку в оче- реди, и функцией out fl 1 est, определяющей число требований в очереди и коэф- фициент использования устройства. Заметьте, перед вызовом функций out sampst и out_filest присутствуют краткие заголовки, что делает отчет удобочитаемым. Листинг 2,6. Код на языке С для функции report (модель системы массового обслуживания в simlib) void report(void) /* Функция генератора отчетов. */ { /* Получаем и записываем оценки искомых рабочих показателей. */ fprintf(outfile, "ХпЗадержки в очереди, мин Ап"); out_sampst(outfile, SAMPST_DELAYS. SAMPST_DELAYS): fprintf(outfile. "ХпДлина очереди (1) и коэффициент использования устройства обслуживания (2)Ап"); out_filest(outfile. LIST_QUEUE. LIST_SERVER); fprintf(outfile, "ХпВремя завершения моделированияА12.3f. мин\п". sim_time); } 2.4.3. Выходные данные моделирования и их исследование Стандартный формат результатов, который создают функции out_sampst и out fi - 1 est дан в файле результатов mmlsmlb.out (листинг 2.7). Чтобы избежать возмож- ного превышения размеров поля, использован общий формат численных резуль- татов. В файле приведены все характеристики выходных показателей, то есть средние, максимальные и минимальные значения, а также число наблюдений для дискретных переменных, используемых функцией sampst. Кроме того, выводится окончательное значение часов модельного времени при остановке. Важен тот факт, что эти численные результаты не совпадают с результатами (представленными в листинге 1.19) другого варианта этой модели, созданного не в simlib. Так, средняя задержка в очереди для примеров из главы 1 равна 0,430, тог- да как в этом примере — 0,525; разница составляет около 22 %. Причина заключа- ется в том, что теперь применена концепция выделения потока случайных чисел для определенного источника случайности, тогда как в главе 1 тот же поток (но- мер 1) использован для всех таких источников. Обе программы правильны, и это еще раз подтверждает необходимость тщательного статистического анализа вы- ходных данных моделирования, о чем пойдет речь в главах 9-12. Листинг 2.7. Отчет с выходными данными (модель системы массового обслуживания в simlib) Система массового обслуживания с одним устройством обслуживания в simlib Среднее время между поступлениями 1,000 мин Среднее время обслуживания 0.500 мин Число требований 1000
2.5. Компьютерная система с режимом разделения времени 165 .« Задержки в очереди, мин: Номер переменной Среднее Число SAMPST значение значений Максимум Минимум 1 0.524872ВЕ+00 0.1000000Е+04 0.56330В7Е+01 0.0000000Е+00 Длина очереди (1) и коэффициент использования устройства обслуживания (2): Среднее по времени Номер файла значение Максимум Минимум 1 0.5400774Е+00 0,В000000Е+01 0.0000000Е+00 2 0.5106925Е+00 0.1000000Е+01 0.0000000Е+00 Время завершения моделирования: 971.847 мин Использование simlib существенно упростило данную модель, но достоинства таких пакетов становятся особенно очевидными в сложных моделях с более разви- той структурой списков. (Эти модели рассматриваются в разделах 2.5-2.7.) 2.5. Компьютерная система с режимом разделения времени В данном разделе библиотека simlib применена для моделирования компьютерно- го центра с режимом разделения времени, который описан в работе Адири и Ави- Ицхака [Adiri and Avi-Itzhak, 1969]. 2.5.1. Постановка задачи Компания использует компьютерную систему, состоящую из центрального про- цессора (ЦП) и п терминалов (рис. 2.6). Оператор каждого терминала затрачивает на -«обдумывание» некоторый промежуток времени, который представлен экспо- ненциально распределенной случайной величиной со средним значением 25 с, за- тем он направляет ЦП задание, время обслуживания которого распределено экс- поненциально со средним значением 0,8 с. Поступающие задания формируют единственную очередь к ЦП с циклической дисциплиной обслуживания, а не с дис- циплиной обслуживания FIFO. Это означает, что ЦП выделяет для каждого зада- ния максимальный квант времени обслуживания продолжительностью q = 0,1 с. Если оставшееся время обслуживания задания $ не превышает q, ЦП тратит время з плюс неизменное время подкачки1 (время свопинга) т = 0,015 с, чтобы обработать задание, которое затем возвращается на свой терминал. Однако, если s>q, ЦП за- трачивает (д + т) с на обработку задания, которое затем возвращается в конец оче- реди, а оставшееся время его обслуживания уменьшается на q. Процесс повторяет- ся до тех пор, пока обслуживание задания не будет завершено. После этого задание 1 Механизм подкачки (swapping) в оперативную память недостающей страницы виртуальной памяти, затребованной программой. — Примеч. ред.
166 Глава 2. Моделирование сложных систем возвращается на свой терминал, оператор которого начинает очередной период •«обдумывания». Пусть Ri будет временем ответа i-ro задания, закончившего обслуживание, ко- торое определяется как время, прошедшее между моментом, когда задание по- кидает терминал, и моментом, когда ЦП завершает его обработку. Посредством sim- lib смоделируем компьютерную систему для выполнения 1000 заданий (то есть с 1000 значений времени ответов) для каждого из случаев, когда п = 10,20,..., 80, и оценим ожидаемое среднее время ответов для этих заданий, ожидаемое среднее по времени число заданий в очереди, а также ожидаемый средний коэффициент загрузки ЦП. Допустим, что в момент времени 0 все операторы за терминалами обдумывают задания. Компании необходимо установить такое число терминалов, чтобы среднее время ответов на запросы пользователей не превышало 30 с. Рис. 2.6. Схема компьютерной системы с режимом разделения времени 2.5.2. Программа simlib В модели компьютерной системы будут использованы следующие события. Событие Тип события Поступление задания в ЦП от терминала по завершении времени обдумывания Завершение обслуживания задания ЦП, когда выполнение задания либо завершено, либо на него был затрачен квант времени обслуживания q Завершение моделирования 1 2 3 Заметим, что мы определяем событие завершения моделирования, несмотря на то что правило останова для этой модели не определено моментом времени. Собы-
2,5. Компьютерная система с режимом разделения времени 167 тие завершения моделирования планируется на момент времени, когда будет заре- гистрировано 1000-е значение времени ответов; оно должно произойти незамед- лительно, то есть в то же самое время. Естественно, существуют другие способы выполнения этого правила останова, о чем будет сказано дальше. Представление событий с помощью графов (см. раздел 1.4.8) для модели ком- пьютерной системы показано на рис. 2.7. Поскольку для каждого из п терминалов изначально запланировано событие поступления задания, на рис. 2.7 видно п ини- циализаций события поступления задания. Обратите внимание на то, что события поступления задания и завершения обслуживания ЦП потенциально могут пла- нировать друг друга. При поступлении задания может быть запланировано завер- шение обслуживания ЦП, если в момент поступления задания ЦП свободен. При завершении обслуживания ЦП может быть запланировано поступление задания, если выполнение задания, покидающего ЦП, полностью завершено и оно возвра- щается на свой терминал. Кроме того, событие завершения обслуживания ЦП мо- жет запланировать само себя в случае, когда задание покидает ЦП до полного за- вершения его обработки и, снова переходя в очередь, обнаруживает, что очередь свободна и ЦП не занят, так как все остальные задания находятся на терминалах. Наконец, следует учитывать тот факт, что событие завершения моделирования может быть запланировано из события завершения обслуживания ЦП с нулевым интервалом времени между ними, то есть в тот момент времени, когда выполнен- ное задание покидает ЦП и регистрируется последнее требуемое (1000-е) время ответов. Как уже говорилось в разделе 1.4.8, событие, у которого все входящие дуги тон- кие и ровные (это событие планируется из события, от которого начинается такая дуга, с нулевым интервалом времени между ними), может быть удалено из модели, а его действия включены в другие события. Решение задачи 2.2 связано именно с этой проблемой. и Рис. 2.7. Представление событий с помощью графов для модели компьютерной системы В модели будут использованы три списка записей: один — для заданий в очереди (список 1), другой — для задания, обрабатываемого ЦП (список 2), и еще один — это список событий (как обычно, список 25). Списки включают атрибуты приведен- ные в таблице.
168 Глава 2. Моделирование сложных систем Список Атрибут 1 Атрибут 2 1, очередь Время поступления задания в компьютер Оставшееся время обслуживания 2, ЦП Время поступления задания в компьютер Оставшееся время обслуживания после текущего времени цикла ЦП (имеет отрицательное значение, если текущее время цикла ЦП является последним, необходимым для этого задания) 25, список событий Время возникновения события Тип события Таким же образом, как и в разделе 2.4, для представления устройства обслужи- вания (список 2 для ЦП) мы используем отдельный список, обеспечивая тем са- мым по завершении моделирования оценку коэффициента использования ЦП посредством функции f i 1 est. Однако в этом случае атрибуты такого списка не яв- ляются фиктивными: в них содержится необходимая информация о задании, ко- торое обслуживается, поскольку ему, возможно, придется возвратиться к ЦП еще несколько раз, а для его правильной обработки необходимо, чтобы с заданием со- хранялись время его поступления и оставшееся время обслуживания. Заметьте, мы поступили таким образом, чтобы атрибуты в списках 1 и 2 совпадали, теперь передача записи между этими двумя списками может выполняться просто путем вызова функций 1 i st_remove и 1 i st_f i 1 e, и нет необходимости перестраивать атри- буты в массиве transfer. Наконец, мы явно не отслеживаем исходный терминал за- дания, поэтому, когда его обработка в компьютере завершена, неизвестно, на ка- кой терминал его отсылать, чтобы этот терминал мог начать очередной период обдумывания. В действительности такого, конечно, быть не может, поскольку тогда операторы будут получать обратно результаты заданий других операторов. Однако при моделировании нет необходимости представлять принадлежность ка- ждого задания конкретному терминалу, поскольку требуются только общие (от- носящиеся ко всем терминалам) рабочие показатели для времени ответов. Более того, все терминалы являются одинаковыми в вероятностном смысле, так как рас- пределения времени обдумывания ЦП для них одинаковы. В задаче 2.3 нужно ус- ложнить модель, для того чтобы собрать отдельную статистику по времени отве- тов для каждого терминала, и при этом обеспечить варьирование характеристик терминалов. Любое из изменений потребует, чтобы, пока задание находится в ком- пьютере, с ним сохранялось указание на его исходный терминал. Поскольку в модели есть только один интересующий нас дискретный показа- тель (время ответов), понадобится только одна переменная функции sampst. Номер переменной функции sampst Значение 1 Время ответов Для каждого из показателей статистики непрерывного времени (число зада- ний в очереди и коэффициент использования ЦП) существует соответствующий список, длина которого представляет искомую величину, следовательно опять можно получить результат с помощью функции f 11 est, не обращаясь к перемен- ным функции timest.
2.5. Компьютерная система с режимом разделения времени 169 В рассматриваемой модели используется два типа случайных переменных. Вы- делим для них следующие потоки. Поток Назначение 1 Время обдумывания 2 Время обслуживания В листинге 2.8 показаны глобальные внешние определения, находящиеся в на- чале файла tscomp.c. После ввода заголовочного файла simlib.h с помощью опера- тора #т nclude объявляются символьные константы для типов событий, номеров списков, номера переменной функции sampst и потоков случайных чисел. Затем объявляются переменные, не относящиеся к simlib, в том числе: целочисленные переменные для минимального и максимального числа терминалов при прогонах имитационной модели (min term = 10 и max term = 80), переменные увеличения числа терминалов при прогонах имитационной модели (i ncr_terms - 10), количест- ва терминалов для отдельного прогона имитационной модели (num terms), числа зарегистрированных значений времени ответов в текущем прогоне (num responses) и необходимого числа ответов (num responses requi red - 1000). Переменные типа float необходимы только входным параметрам для среднего времени обдумыва- ния, среднего времени обслуживания, кванта времени q и времени подкачки т. Кроме того, объявляются функции, написанные пользователем и не относящиеся к библиотеке simlib, в том числе событийные функции для поступления задания и завершения обслуживания ЦП. Мы написали не событийную функцию start_ CPU run для обработки определенного действия, которое может возникнуть, когда произойдет событие либо поступления задания, либо завершения обслуживания задания ЦП. Она позволит избежать повторения данного блока кода в каждой из этих событийных функций. Здесь не использована отдельная функция инициали- зации модели, поскольку в данном случае (в дополнение к тому, что simlib выпол- няет с помощью функции init simlib) требуется не так уж много действий, кото- рые просто включены в основную функцию. В этой модели решено не прибегать к стандартному формату результатов, поскольку в действительности будет выпол- няться восемь отдельных прогонов имитационной модели, и выходные данные лучше организовать в настраиваемую таблицу с одной строкой для каждого прого- на. Кроме того, нам требуются только средние значения показателей, а не все их характеристики (максимальное значение и т. п.). Листинг 2.8. Код на языке С для внешних определений (модель компьютерной системы) /* Внешние определения для модели компьютерной системы с режимом разделения времени. */ #include "simlib.h" Wine EVENT_ARRIVAL #define EVENT END_CPU_RUN Wine EVENTJND_SIMULATION Wine LIST_QUEUE Wine LIST_CPU /* Требуется для использования simlib.с. */ 1 /* Тип события для поступления задания в ЦП. */ 2 /* Тип события для завершения обслуживания ЦП. */ 3 /* Тип события для завершения моделирования. */ 1 /* Номер списка для очереди к ЦП. */ 2 /* Номер списка для ЦП. */ продолжение
170 Глава 2. Моделирование сложных систем Листинг 2.8 (продолжение) #define SAMPST_RESPONSE_TIMES 1 /* переменная функции sampst для времени ответов. */ ^define STREAM_THINK 1 /* Поток случайных чисел для времени обдумывания. */ #define STREAM_SERVICE 2 /* Поток случайных чисел для времени обслуживания. */ /* Объявляем глобальные переменные, не относящиеся к simlib. */ int min_terms. max_terms, incr_terms. num_terms. num responses. num_responses_requi red, term; float mean_think. mean_service. quantum, swap: FILE *infile. *outfile: /* Объявляем функции, не относящиеся к simlib. */ void arrive(void): void start_CPU_run(void); void end_CPU_run(void); void report(void); В основной функции (листинг 2.9), как обычно, открываются входной и вы- ходной файлы, считываются входные параметры и записываются в заголовке от- чета. Поскольку всего будет выполнено восемь прогонов имитационной модели и для результатов каждого выделяется отдельная строка в таблице результатов, на этот раз также записываем заголовки ее столбцов. После этого начинается цикл for, который последовательно устанавливает для переменной num_terms значения 10,20,..., 80. В этот цикл входит остальная часть основной функции (кроме опера- тора), закрывающей файлы в самом конце. В цикле for для каждого значения пе- ременной num terms выполняется отдельный прогон имитационной модели, вклю- чая инициализацию и запись результатов. Каждый прогон имитационной модели начинается с отдельной инициализации simlib с помощью функции init_simlib. После этого для переменной maxatr задается значение 4, переменная num_responses устанавливается в 0, и планируется первое поступление задания в ЦП от каждого из терминалов путем вызова функции event_schedule для каждого из терминалов, число которых определяется переменной num terms. В результате число событий в списке событий будет равно num_terms. Все события будут иметь тип 1 и представ- лять завершение первоначального периода обдумывания заданий определенными терминалами. На следующем этапе начинается цикл do whi 1 е, в нем функция ti mi ng и соответ- ствующие событийные функции вызываются до тех пор, пока не возникнет собы- тие завершения моделирования. При выполнении события завершения моделиро- вания (и вызове функции report) цикл do while завершается, и мы возвращаемся к циклу for. Событие завершения моделирования не планируется изначально, оно будет запланировано в функции end_CPU_run при завершении времени 1000-го от- вета на время, когда произошло это завершение. Затем из основной функции вы- зывается функция report, и текущий прогон имитационной модели завершается. На момент окончания внешнего цикла for будут выполнены все необходимые про- гоны модели, а также собраны все их результаты, поэтому все файлы программы закрываются.
2.5. Компьютерная система с режимом разделения времени 171 Листинг 2.9. Код на языке С для основной функции (модель компьютерной системы) mainO /* Основная функция. */ { /* Открываем входной и выходной файлы. */ infile - fopenCtscomp.in", “г"); outfile - fopenCtscomp.out”. V); /* Считываем входные параметры. */ fscanf(infile. "Xd Xd Xd Xd Xf Xf Xf Xf". &min_terms. &max_terms. &incr_terms. &num_responses_required. &mean_think. toeanservice. &quantum. &swap); /* Записываем заголовок отчета и входные параметры. */ fprintf(outfile. "Модель компьютерной системы с режимом разделения времени\п\п"); fprintf(outfi1е, "Число терминаловХЭЬ - X4d no X4d\n\n". min_terms. max terms. incr_terms): fprintf(outfile. "Среднее время обдумывания fprintf(outfile, "Среднее время обслуживания fprintf(outfile. "Время кванта fprintf(outfi1е. "Время подкачки fprintf(outfile, "Число обработанных заданий num_responses_requi red); fprintf(outfile. " Число Среднее X11.3f с\п\п". mean_think); X11.3f c\n\n". mean_service); X11.3f c\n\n". quantum): X11.3f c\n\n". swap): X12d\n\n\n". Среднее число"); fprintf(outfile, " Коэффициент использования^"); fprintf(outfile. "терминалов время ответа заданий в очереди ЦП”); /* Выполняем прогоны имитационной модели с различным числом терминалов. */ for (num_terms - min_terms; num_terms <- max_terms; num_terrns += incr_terms) { /* Инициализируем simlib. */ init_s1ml1b(); /* Задаем значение переменной maxatr - max (максимальное число атрибутов для одной записи. 4) */ maxatr - 4; /* НИКОГДА НЕ ЗАДАВАЙТЕ ДЛЯ ПЕРЕМЕННОЙ maxatr ЗНАЧЕНИЕ МЕНЬШЕ 4. */ /* Устанавливаем в исходное состояние счетчик, не относящийся к simlib. */ num_responses - 0; /* Планируем первое поступление задания в ЦП от каждого терминала. */ for (term - 1; term <- num_terms; ++term) event_schedule(expon(mean_think. STREAM_THINK). EVENT_ARRIVAL): /* Выполняем моделирование до тех пор. пока оно не прервется по возникновении события завершения моделирования (тип EVENT_ENO_SIMULATION). */ продолжение &
172 Глава 2. Моделирование сложных систем Листинг 2.9 (продолжение) do { /* Определяем следующее событие. */ timing!); /* Вызываем соответствующую событийную функцию. */ switch (next event type) { case EVENTARRIVAL: arriveO; break; case EVENT_END_CPU_RUN: end_CPU_run(); break; case EVENT_END_SIMULATION: reportO; break; } /* Если только что запланированное событие является событием завершения моделирования (тип EVENT_END_SIMULATION), завершаем моделирование. В противном случае продолжаем моделирование. */ } while (next_event_type !- EVENT_END SIMULATION); } fclose(infile); ‘ fclose(outfile); return 0; ) Блок-схема события поступления задания представлена на рис. 2.8, а код соот- ветствующей событийной функции — в листинге 2.10. Для каждого находящегося в компьютере задания (в очереди или в ЦП) существует запись, атрибуты которой описаны раньше. Поскольку это событие представляет собой поступление зада- ния в компьютер по завершении времени обдумывания, его атрибуты необходимо определить сейчас. Время поступления задания будет сохраняться в первом атри- буте, а общее время обслуживания будет генерироваться и сохраняться во втором атрибуте. Запись для такого новопоступившего задания помещается в конец оче- реди. Может случиться, что при поступлении задания ЦП будет свободен (то есть в списке LIST CPU число записей list_s1ze[LIST_CPU] равно 0), тогда вызывается функция start CPU run, которая извлекает это задание из очереди (где оно являет- ся единственным) и помещает в ЦП, чтобы начать его обработку. В логике этой функции неявно заложен следующий порядок: задание, поступающее в компью- тер, когда ЦП свободен, не может сразу же попасть в ЦП, сначала оно должно быть помещено в очередь, а затем сразу же удалено из нее. Такое физическое допущение является важным, поскольку между тем моментом, когда задание покидает оче- редь, и моментом его поступления на обработку ЦП наблюдается время подкачки, о чем пойдет речь далее.
2.5. Компьютерная система с режимом разделения времени 173 Рис. 2.8. Блок-схема событийной функции arrive для модели компьютерной системы Листинг 2.10. Код на языке С для функции arrive (модель компьютерной системы) void arrive(void) /* Событийная функция для поступления задания в ЦП по завершении времени обдумывания. */ /* Помещаем поступившее задание в конец очереди к ЦП. Обратите внимание. что для каждой записи задания сохраняются следующие атрибуты: 1. Время поступления в компьютер. 2. Время (оставшееся) обслуживания задания ЦП (в этом случае равное общему времени обслуживания, так как задание только что поступило). */ transfer[l] - slm_time: transfer[2] - expon(mean_service. STREAM SERVICE): Hst_file(LAST. LIST_QUEUE); /* Если ЦП свободен, начинаем обработку задания. */ if (l1st_size[LIST_CPU] — 0) start_CPU run(): ) Блок-схема не событийной функции start_CPU_run представлена на рис 2.9, а ее код —влистинге 2.11. Функция вызывается из событийной функции arrive (очем только что говорилось) или из событийной функции end_CPU_run; она должна быть достаточно общей, чтобы подходить для обоих случаев. Функция start_CPU_run предназначается для извлечения из очереди первого задания, размещения его в ЦП, а также планирования времени, когда оно покинет ЦП — либо после полного
174 Глава 2. Моделирование сложных систем завершения его обработки, либо же по истечении кванта времени обслуживания. Прежде всего эта функция должна обеспечить извлечение задания из начала оче- реди, для этого из нее вызывается функция 11 st remove. Затем вычисляется время, которое ЦП потратит на это задание. Оно равно кванту или оставшемуся времени обслуживания, которое содержится во втором атрибуте, только что помещенному в transfer[2] (берется меньшее из двух значений) плюс время подкачки. Прежде чем поместить запись задания в список ЦП, оставшееся время обслуживания задания (в transfer[2]) уменьшается на полный квант времени, даже если для об- служивания требуется только часть этого времени. В последнем случае второй ат- рибут записи задания приобретает отрицательное значение, это сигнал того, что задание после завершения только что начавшегося прохождения ЦП возвратится к терминалу. Планирование события завершения обслуживания ЦП для прохождения этого задания Рис. 2.9. Блок-схема функции start CPU run для модели компьютерной системы Если задание не будет выполнено после того, как пройдет через ЦП, оно еще раз будет обрабатываться в течение полного кванта времени обслуживания, а его второй атрибут, уменьшенный на полный квант времени обслуживания, будет представлять неотрицательное время обслуживания, оставшееся после этого про- хождения заданием ЦП. Наконец, задание помещается в список ЦП с помощью
2.5. Компьютерная система с режимом разделения времени 175 функции 11 st_fi 1 е (время поступления задания в компьютер transferal] уже уста- новлено правильно, поскольку это значение берется из записи, только что извле- ченной из списка очереди, первый атрибут в котором имеет такое же определе- ние), а в списке событий назначается завершение обслуживания ЦП. Листинг 2.11. Код на языке С для функции start_CPU_run (модель компьютерной системы) void start_CPU_run(void) /* Не событийная функция, начинающая выполнение задания ЦП. */ { float run_time; /* Извлекаем из очереди первое задание. */ list_remove(FIRST, LIST_QUEUE): /* Определяем время прохождения ЦП этого задания, включая время подкачки. */ if (quantum < transfer[2]) run_time - quantum + swap: else run_time - transfer[2] + swap; /* Уменьшаем оставшееся время обслуживания задания ЦП на полный квант времени обслуживания. (Если не требуется полного кванта времени, значение атрибута становится отрицательным. Это означает, что на этот раз выполнение задания будет завершено, и оно должно быть возвращено терминалу.) */ transfer[2] -- quantum; /* Помещаем задание в ЦП. */ Hst_file(FIRST. LIST_CPU); /* Назначаем завершение обслуживания ЦП. */ event schedule(sim time + run time. EVENT END CPU RUN); } " ’ ---------------------------------------------- Событийная функция endCPUrun вызывается из основной функции, когда за- дание завершит прохождение ЦП (рис. 2.10 и листинг 2.12). После того как зада- ние покинет ЦП, выполняется проверка, имеющая целью установить, нуждается ли оно в дальнейшем обслуживании ЦП, то есть является ли значение второго ат- рибута положительным. Если это так, задание снова помещается в конец очереди (обратите внимание, что атрибуты списков очереди и ЦП совпадают, поэтому данные массива transfer верны), и вызывается функция startCPUrun, которая извлекает первое задание из очереди и начинает его обработку. Когда выполнение задания, покинувшего ЦП, полностью завершается, для него с помощью функции sampst регистрируется время ответа, равное sim time - transfer[l]. В случае, если моделирование продолжается в течение длительного времени, то (как и в предыду- щих примерах) и для sim_time, и для transfer[1] следует задать тип doubl е, что позво- лит избежать потерь точности при их вычитании. Затем планируется завершение очередного времени обдумывания и увеличивается число зарегистрированных
176 Глава 2. Моделирование сложных систем значений времени ответов. После этого выполняется проверка, зарегистрировано ли необходимое число ответов. Если это так, то планируется немедленное возник- новение события завершения моделирования (первый аргумент, переданный фун- кции event schedule, — текущее модельное время sim_time), и функция timing не- медленно выбирает это событие (то есть без продвижения модельного времени), а основная функция вызывает функцию report для завершения моделирования. Если же моделирование не завершено, вызывается функция start_CPU_run при условии, что в очереди еще есть задания. В случае отсутствия задания в очереди, никакие действия не предпринимаются, и моделирование продолжается. i Рис. 2.10. Блок-схема функции end_CPU_run для модели компьютерной системы
2.5. Компьютерная система с режимом разделения времени 177 Листинг 2.12. Код на языке С для функции end_CPU_run (модель компьютерной системы) void end_CPU_run(void) /* Событийная функция для завершения обслуживания задания ЦП. */ { /* Удаляем задание с обслуживания ЦП. */ I1st_remove(FIRST, LIST_CPU); /* Проверяем, требуется ли еще время для выполнения этого задания. */ if (transfer[2] > 0.0) { /* Для выполнения этого задания еще требуется время ЦП. помещаем задание в конец очереди и начинаем обслуживание первого задания в очереди. */ 11st_f 11е(LAST. LIST_QUEUE); start CPU_run(): } else { /* Выполнение этого задания завершено, собираем статистику времени ответа и снова направляем задание выдавшему его терминалу, то есть планируем поступление следующего задания от данного терминала. */ sampst(sim_time - transfer[l], SAMPST_RESPONSE_TIMES); event schedule(sim time + expon(mean_think. STREAM THINK). EVENT-ARRIVAL): /* Увеличиваем число выполненных заданий. */ ++num_responses: /* Проверяем, выполнено ли необходимое число заданий. */ if (num_responses >- nwn_responses_required) /* Необходимое число заданий выполнено, планируем немедленное возникновение события завершения моделирования (помещая его в начало списка событий). */ event_schedule(sim_t1me, EVENT_END_SIMULATION); else /* Необходимое число заданий не выполнено, если в очереди еще есть задания, начинаем обслуживание следующего задания. */ 1f (Hst_size[LIST_QUEUE] > 0) start CPU runO: } " ’ ) Генератор отчетов (листинг 2.13) записывает в выходной файл одну строку с числом терминалов для только что завершившегося прогона со средним зна- чением, возвращенным функцией sampst для времени ответов, а также со средним по времени значением длины очереди и средним по времени значением занятости устройства, которые возвращаются функцией filest (вспомните, что функции sampst, timest и filest также возвращают средние значения, которые они вычис- ляют, к тому же помещают среднее значение в transfer[l]).
178 Глава 2. Моделирование сложных систем Листинг 2.13. Код на языке С для функции report (модель компьютерной системы) void report(void) /* Функция генератора отчетов. */ { /* Получаем и записываем оценки искомых критериев работы. */ fprintf(outfile. "\n\n«5d^l6.3m6.3m6.3f". num_terms. sampst(0.0. -SAMPST_RESPONSE TIMES). filest(LIST_QUEUE), filest(LIST_CPU)); } 2.5.3. Выходные данные моделирования и их исследование Выходной файл tscomp.out показан в листинге 2.14. Как и ожидалось, перегрузка компьютерной системы возрастает с увеличением количества терминалов, на что указывают среднее время ответов, средняя длина очереди и коэффициент исполь- зования процессора. Становится очевидным, что такая система может удовлетво- рительно работать с 60 терминалами, превышение этого числа ведет к тому, что время ответа ЦП становится значительно больше 30 с. На этом уровне, как можно убедиться, средняя длина очереди составляет около 30 заданий (такие сведения могут понадобиться при определении памяти, необходимой для хранения зада- ний; возможно, для решения данного вопроса более полезными были бы данные о максимальной длине очереди). Кроме того, в такой системе ЦП будет занят практически постоянно. Но эти заключения основываются на выходных данных, полученных в результате единственного воспроизведения системы (длительность которого выбрана произвольно), поэтому их точное значение неизвестно. Листинг 2.14. Отчет с выходными данными (модель компьютерной системы) Модель компьютерной системы с режимом разделения времени Число терминалов 10 - 80 по 10 Среднее время обдумывания 25.000 с Среднее время обслуживания О.В00 с Время кванта 0.100 с Время подкачки 0.015 с Число обработанных заданий 1000 Число Среднее Среднее число Коэффициент использования терминалов время ответа заданий в очереди ЦП 10 1.324 0.156 0.358 20 2.165 0.929 0.65В 30 5.505 4.453 0.914 40 12.698 12.904 0.998 50 24.593 23.871 0.998 60 31.712 32.958 1.000 70 42.310 42.666 0.999 80 47.547 51.158 1.000
2.6. Банк с несколькими кассами 179 2.6. Банк с несколькими кассами На этот раз simlib используется для моделирования банка с несколькими кассами, в котором клиенты могут переходить из одной очереди в другую, если им это вы- годно. В данной модели представлено также еще одно правило останова. 2.6.1. Постановка задачи Банк с пятью кассами открывается в 9.00 и закрывается в 17.00, однако кассы про- должают работу до тех пор, пока все клиенты, находившиеся в банке в 17.00, не бу- дут обслужены. Допустим, что интервалы времени между прибытием клиентов представлены экспоненциально распределенными величинами со средним значе- нием 1 мин, а время обслуживания клиентов — экспоненциально распределенны- ми величинами со средним значением 4,5 мин. К каждой кассе формируется отдельная очередь. Прибывший клиент присое- диняется к наиболее короткой очереди, выбирая крайнюю левую из одинаковых по длине очередей. Пусть п, обозначает общее число клиентов (считая тех, кото- рые в данный момент обслуживаются кассой) в очереди перед кассой i в опреде- ленный момент времени. Если по завершении обслуживания клиента кассой i для некой кассы j, fij > п, + 1, тогда клиент, находившийся в конце очереди j, переходит в конец очереди i. (В том случае, если таких клиентов два или больше, то пере- ходит тот, кто находится в крайней левой очереди.) Если касса i свободна, она на- чинает обслуживание этого клиента (рис. 2.11). Рис. 2.11. Переход клиента из конца очереди) -2 к освободившейся кассе i - 3 Руководство банка интересуют текущие расходы и качество услуг, предостав- ляемых клиентам, поэтому оно обдумывает возможность изменения числа касс. Воспользуемся simlib, чтобы смоделировать банк и оценить ожидаемое среднее по времени совокупное число клиентов в очередях, ожидаемую среднюю задержку в очереди и ожидаемую максимальную задержку в очереди для числа касс п - 4,5, 6 и 7. Во всех случаях допускаем, что при открытии банка клиентов в нем нет. 2.6.2. Программа simlib В модели банка используются следующие события. Событие _____________________________Тип события Прибытие клиента в банк 1 Уход клиента из банка по завершении обслуживания 2 Закрытие банка в 17.00 3
180 Глава 2. Моделирование сложных систем На рис. 2.12 события данной модели представлены с помощью графов. Такое представление подобно аналогичному, разработанному для модели системы мас- сового обслуживания с одним устройством обслуживания с заданной продолжи- тельностью прогона (см. рис. 1.22), за исключением события завершения модели- рования, которое заменено событием закрытия банка. Хотя оба события в этом случае и занимают одинаковое положение в диаграмме событий, они подразумева- ют различные действия. Рис. 2.12. Графы событий для модели банка Модель банка требует 2n +1 списков записей, где п — число касс при отдельном прогоне имитационной модели. Списки с 1-го по n-й содержат записи для клиен- тов, ожидающих обслуживания в соответствующей очереди. Списки с (п + 1)-го по 2п-й используются для определения занятости касс. Если список п + i (в кото- ром i- 1,2,..., п) содержит одну запись, то касса i занята. Если в нем нет записей, касса i свободна. Как обычно, список 25 предназначен для списка событий. В спис- ках используются следующие атрибуты. Список Атрибут 1 Атрибут 2 Атрибут 3 С 1-го по n-й, очереди Время прибытия в очередь — — С (и + 1)-го по 2п-й, кассы — — — 25, список событий Время возникновения события Тип события Номер кассы, если тип события — 2 В этой модели вновь используем отдельные списки для устройств обслужива- ния. Единственная причина, по которой мы так поступаем в данном случае, — по- требность представить состояние устройств (занято или свободно), поскольку в атрибутах этих записей не хранится какая-либо значимая информация, статис- тика коэффициентов использования устройств нам не требуется. Обратите вни- мание, что в списке 25 будет сохраняться не только время возникновения события и его тип, так как в случае с событием ухода (тип 2) нам необходимо знать номер кассы, которую покинул клиент, что позволит обеспечить правильное управление
2.6. Банк с несколькими кассами 181 очередями и переход клиентов из одной очереди в другую. При программирова- нии не следует забывать о необходимости определить значение для transfer[3], прежде чем вызвать функцию simlib event_schedul е для событий типа 2, поскольку функция копирует атрибуты только в transfer[l] и transfer[2] перед добавлением записи в список событий. Сбор статистики в этой модели происходит немного иначе. В ней существует несколько отдельных очередей, и клиент может ощутить задержку (время, про- шедшее со времени его прибытия в систему до начала его обслуживания каким-ли- бо устройством) в различных очередях, что связано с возможностью перехода кли- ента из одной очереди в другую. Для клиента сохраняется время его прибытия (в атрибуте 1 списков очереди) независимо от того, в какой очереди он находится, так что задержка может быть вычислена в начале обслуживания. Таким образом, все задержки собираются в одной переменной функции sampst. Номер переменной функции sampst Значение 1 Задержка в очереди (или очередях) Используя функцию sampst, также автоматически получаем максимальное зна- чение задержки в очереди (или очередях). Кроме того, надо определить среднее по времени общее число клиентов в оче- реди. Пусть Qi(O обозначает число клиентов в очереди на момент времени t для i - - 1, 2,..., п, тогда Q(0=taw (2.1) будет общим числом клиентов во всех очередях на момент времени t. Следователь- но, необходимо вычислить jQ(t)A $ = jL^—, (2.2) где Т— время завершения моделирования (оно определяется в соответствии с опи- санным выше правилом останова). Однако, если мы подставим уравнение (2.1) в уравнение (2.2) и воспользуемся линейными интегралами, получим следующее уравнение: § = +§2 +...+$„, где /О,.(0Л л =-------- ч, т является средним по времени числом клиентов в очереди i. Это означает, что сред- нее значение суммы индивидуальных длин очередей является суммой их средних длин. Значит, по завершении моделирования можно воспользоваться функцией filest (она будет применяться к отдельным очередям) и найти оценки затем сложить их и получить 4 Оценку можно вычислить непосредственно, определив
182 Глава 2. Моделирование сложных систем переменную timest, соответствующую Q(t), увеличивая ее после каждого прибы- тия и уменьшая в начале каждого обслуживания. Однако списки записей придется поддерживать все равно, поэтому предпочтительнее описанный выше подход. (В задаче 2.4 рассматривается дополненный вариант этой модели, в котором нуж- но установить максимальное общее число клиентов в очередях, а также упомяну- тую уже статистику; в этом задании потребуется определить, будет ли максималь- ное значение суммы равно сумме максимальных значений). В модели банка существует два типа случайных переменных: интервалы време- ни между прибытиями и время обслуживания, поэтому используем следующие потоки. Поток Назначение 1 Интервалы времени между прибытиями 2 Время обслуживания В листинге 2.15 показаны внешние определения, а также глобальные перемен- ные модели банка. Заголовочный файл simlib.h, как обычно, включается в програм- му с помощью оператора #i ncl ude. Затем устанавливаются символьные константы для типов событий, переменной sampst и потоков случайных чисел. Далее опреде- ляются целочисленные переменные для минимального и максимального числа касс (4 и 7 соответственно), числа счетчиков для конкретного прогона имитацион- ной модели; «короткие» целочисленные переменные предназначаются для нахож- дения очереди, которую выберет прибывший клиент. Входные параметры опреде- ляются как тип float. Значение переменной length !ndoors_open задается в часах, тогда как для всех остальных измерений времени применяются минуты, поэтому в коде их придется привести в соответствие. После этого задаются прототипы функций. Функция arri ve используется для событий типа 1; функция depart — для событий типа 2 (в ее аргументе int содержится номер кассы, которую покидает клиент). Функция jockey не является событийной функцией (ее аргумент int определяет номер кассы, где завершается обслуживание, и к которой, возможно, перейдет клиент из другой очереди), а функция report предназначается для записи результатов по завершении моделирования после 17.00. Листинг 2.15. Код на языке С для внешних определений (модель банка) /* Внешние определения для модели банка с несколькими кассами. */ #include "simlib.h" /* Требуется для использования simlib.с. */ # define EVENT_ARRIVAL 1 /* Тип события для прибытия клиента. */ # define EVENT_DEPARTURE 2 /* Тип события для ухода клиента. */ ^define EVENT_CLOSE_DOORS 3 /* Тип события для закрытия банка в 17.00. */ # define SAMPSTJJELAYS 1 /* переменная функции sampst для задержек в очереди(очередях). */ # define STREAMJNTERARRIVAL 1 /* Поток случайных чисел для интервалов времени между прибытиями. */ # define STREAM_SERVICE 2 /* Поток случайных чисел для времени обслуживания. */
2.6. Банк с несколькими кассами 183 /* Объявляем глобальные переменные, не относящиеся к simlib. */ int min_tellers. max_tellers. num_tellers. shortestjength. shortest_queue; float mean_interarrival. mean_service, length_doors_open; FILE *infile. *outfile; /* Объявляем функции, не относящиеся к simlib. */ void arrive!void); void departCint teller); void jockey(int teller); void report(void); Основная функция (листинг 2.16) начинается с открытия входного и выходно- го файлов, чтения входных параметров, последующей их записи и создания заго- ловка отчета. Как и в модели компьютерной системы, практически вся основная функция заключается в цикл for, в котором индекс num_tel 1 ers представляет число касс в текущем варианте модели. Вызывая функцию i ni t_si ml i b, инициализируем simlib (это действие должно выполняться для каждого варианта модели, поэтому функция находится внутри цикла for). Далее для переменной maxatr задается зна- чение 4 (количество атрибутов во всех записях в модели не превышает 3, но, чтобы программа работала правильно, значение maxatr не может быть меньше 4). Назна- чается первое прибытие, а также закрытие банка, при этом обеспечивается пере- вод единиц времени закрытия в минуты. Затем начинается цикл while, и прогон модели продолжается до тех пор, пока не опустеет список событий, после чего мо- делирование текущего варианта завершается. Объясним, почему в этой модели та- кой способ реализации правила останова является эффективным. До 17.00 собы- тие закрытия банка хранится в списке событий, в нем также всегда назначается следующее событие прибытия, поэтому список не будет пустым. В 17.00 произой- дет закрытие банка, запись этого события будет удалена из списка событий, а само событие обеспечит удаление (с помощью функции event cancel) следующего со- бытия прибытия, прервав, таким образом, поток прибытий и обеспечив в дальней- шем отсутствие Событий прибытия в списке, где останутся только события ухода. Если в банке на 17.00 остаются клиенты, некоторые из них будут находиться на об- служивании, а события их ухода будут значиться в списке событий. Наконец (если в банке на 17.00 не осталось клиентов или просто в 17.00 обслуживание всех кли- ентов будет завершено), в этот момент список событий опустеет, и моделирование завершится. В процессе выполнения цикла while, как обычно, вызывается функ- ция timi ng, передающая управление событийной функции arri ve или depart (обра- тите внимание, что аргумент, передаваемый в функцию depart, приводится к типу i nt, поскольку он является номером кассы в третьем атрибуте записи события ухо- да). Событие закрытия банка выполняется, как уже было описано выше, когда до него доходит очередь. По завершении цикла whi 1 е текущий прогон имитационной модели заканчивается, и вызывается функция report, которая обеспечивает вы- числение выходных результатов. С окончанием цикла for моделирование полнос- тью прекращается, тогда мы закрываем входной и выходной файлы и завершаем выполнение программы.
184 Глава 2. Мод елирование сложных систем Листинг 2.16. Код на языке С для основной функции (модель .банка) main() /* Основная функция. */ { /* Открываем входной и выходной файлы. */ infile - fopen("mtbank.in". "г"); outfile - fopenCmtbank.out", V); /* Считываем входные параметры. */ fscanf(infile, "Xd Xd Xf Xf Xf". &min_tellers. &max_tellers, &mean_interarrival. &mean_service, &length_doors_open); /* Записываем заголовок отчета и входные параметры. */ fprfntfCoutfile, "Банк с несколькими кассами и переходом клиентов из одной очереди в другую\п\п"): fprintf(outfile, "Число KaccX16d toX3d\n\n", min_tellers. max_tellers); fprintf(outfile. "Среднее время Между прибытиями!!!^ иин\п\п". mean_interarr1val); fprintf(outfile. "Среднее:время обслуживанияХ1б.ЗТ мин\п\п". mean_service): fprintfCoutfile, "Закрытие банка nocneX16.3f чХпХпХпХп", length_door$__open); /* Выполняем прогоны модели с различным числом касс. */ for (num tellers - min_tellers; num_tellers <- max_tellers; ++num_tellers) { /* Инициализируем simlib. */ init_simlib(); /* Задаем значение переменной maxatr - max (максимальное число атрибутов для одной записи. 4) */ maxatr - 4; /* НИКОГДА НЕ ЗАДАВАЙТЕ ДЛЯ ПЕРЕМЕННОЙ maxatr ЗНАЧЕНИЕ МЕНЬШЕ 4. */ /♦ Назначаем первое прибытие. */ event schedule(expon(mean_interarrival. STREAM INTERARRIVAL). EVENT-ARRIVAL); /* Назначаем закрытие банка. (Обратите внимание на соответствие единиц времени). */ event_schedule(60 * length_doors_open. EVENT_CLOSE_DOORS): /* Выполняем прогоны модели, пока в списке событий есть записи. */ while (list_size[LIST_EVENT] !- 0) { /* Определяем следующее событие. */ timingO;
2.6. Банк с несколькими кассами 185 /* Вызываем соответствующую событийную функцию. */ switch (next_event_type) { case EVENT_ARRIVAL: arrive!); break: case EVENT_DEPARTURE: depart(Cint) transfer[3]); /* transfer[3] - это номер кассы. */ break; case EVENT_CLOSE_DOORS: event_cancel(EVENT_ARRIVAL); break; } } /* Вычисляем результаты для прогона модели с num_tellers кассами. */ reportO; fclose(infile): fclose(outfile); return 0; ) Блок-схема и код событийной функции arrive приведены на рис. 2.13 и в лис- тинге 2.17. Функция начинается с планирования очередного события прибытия. Затем следует цикл for с индексной переменной teller, где перебираются номера касс, при этом поочередно проверяются все кассы (номер списка п +1, п + 2,..., 2п) до обнаружения свободной (то есть такой, значение переменной которой list s! - ze[num_tellers + teller] равно 0). Как только будет обнаружена свободная касса, в функции sampst регистрируется задержка клиента в очереди, равная 0, касса пе- реводится в состояние занятости путем добавления в список кассы фиктивной за- писи, и для этого клиента планируется событие завершения обслуживания. Далее оператор возврата передает управление основной функции, а оставшиеся части функции arri ve и цикла for (если таковая имеется) не выполняются. Эта оставша- яся часть функции arrive относится к случаю, когда все кассы заняты, а остаток части цикла for предназначен для обслуживания касс с большими номерами (они не рассматриваются, поскольку предпочтение все равно отдается свободным кас- сам с меньшими номерами). Если цикл for завершается, значит, все кассы заняты. В ходе следующего цикла for просматриваются очереди в поисках среди них са- мой короткой. В случае обнаружения нескольких одинаковых по длине очередей, из них выбирается та, что имеет наименьший номер. Такое правило разрешения связей реализуется с помощью строгого неравенства (<) в операторе i f, то есть при поиске слева направо новая очередь выбирается только в том случае, если она действительно короче выбранной раньше. По завершении цикла в целочисленной переменной shortest queue будет содержаться номер выбранной очереди, и при- бывший клиент будет определен в конец этой очереди, при этом потребуется един- ственный атрибут — время прибытия.
186 Глава 2. Моделирование сложных систем Рис. 2.13. Блок-схема функции arrive для модели банка Листинг 2.17. Код на языке С для функции arrive (модель банка) void arrive(void) /* Событийная функция для прибытия клиента в банк. */ int teller; /* Планируем следующее прибытие. */ event_schedule(sim_time + expon(mean_iriterarrival. STREAMJNTERARRIVAL). ,r EVENT_ARRIVAL): /* Если касса свободна, начинаем обслуживание прибывшего клиента. */ for (teller - 1; teller <= num tellers; ++teller) { if (list_size[num_tellers + teller] — 0) { /* Эта касса свободна, поэтому задержка клиента,равна 0. */ sanipst(0.0. SAMPST-DELAYS); /* Переводим кассу в состояние занятости (атрибуты в этом случае значения не имеют). */ list_file(FIRST, num_tellers + teller);
2.6. Банк с несколькими кассами 187 /* Планируем завершение обслуживания. */ transfer[3] - teller; /* Определяем третий атрибут для записи события типа 2 в списке событий перед вызовом функции event_schedule. */ event_schedule(sim_time + ехроп (meanserv ice. STREAM SERVICE). EVENT_DEPARTURE); /* Возвращаем управление основной функции. */ return; } } /* Все кассы заняты, находим самую короткую очередь (выбираем крайнюю левую из одинаковых коротких очередей). */ shortest_length - list_size[lj: shortest_queue - 1; for (teller - 2; teller <= num tellers: ++teller) if (list_size[teller] < shortestjength) { shortestjength - list_size[tellerj; shortest_queue - teller; } /* Определяем клиента в конец крайней левой очереди из числа самых коротких очередей. */ transfer[l] - sim_time; list file(LAST. shortest_queue); } Событийная функция depart (рис. 2.14 и листинг 2.18) вызывается из основной программы, когда завершается обслуживание клиента. При этом целочисленный аргумент tel 1 er представляет номер кассы, которая завершает обслуживание. Ес- ли в очереди к данной кассе нет клиентов (значение 11st_size[teller] равно 0), касса становится свободной, чтобы показать это, из соответствующего списка уда- ляется фиктивная запись. Затем вызывается функция jockey с целью определить, может ли клиент из другой очереди перейти на обслуживание к только что освобо- дившейся кассе номер tel 1 er. Если же в очереди к этой кассе еще есть клиенты, за- пись первого клиента удаляется из ее списка, его задержка в очереди (sim_time - transfer[l]) регистрируется в функции sampst и планируется событие завершения обслуживания. При длительном моделировании для sim_time и transfer[1] следует задать тип doubl е, чтобы избежать потерь точности при вычитании. Перед вызовом функции event schedule определяется transfer[3] как номер кассы, поскольку эта функция копирует только время и тип события (атрибуты 1 и 2) в массив transfer перед добавлением их в список событий. В любом случае вызывается функция jockey, для того чтобы проверить, не хочет ли какой-либо клиент из другой очереди перейти в очередь к этой кассе. (После возникновения события прибытия клиен- ты не должны переходить из одной очереди в другую, так как при этом ожидаемое время до их ухода не уменьшится.)
188 Глава 2. Моделирование сложных систем Вызов перехода клиента из другой очереди Рис. 2.14. Блок-схема функции depart для модели банка Листинг 2.18. Код на языке С для.функции depart (модель банка) void depart(int teller) /* Событийная функция для ухода клиента. */ { у* Проверяеи, есть ли клиенты в очереди к кассе teller. */ if (list_size[teller] — 0). /* В очереди нет клиентов, переводин кассу в состояние незанятости. */ Hst_reniove(FIRST. nufn_tellers + teller): else { /* В очереди есть клиенты, начинаем обслуживание клиента. */ 11st_remove(FIRST, teller): sampst(sim_time - transfer^. SAMPST_DELAYS): transfer[3] - teller; /* Определяем перед вызовом функции event^schedule. */
2.6. Банк с несколькими кассами 189 event_schedule(sim time + expon(mean_service, STREAMSERVICE). EVENT-DEPARTURE); } /* Если возможно, обеспечиваем переход клиента из другой очереди в конец этой очереди. */ jockey(teller); } Несобытийная функция jockey (рис. 2.15 и листинг 2.19) используется с цело- численным аргументом tel 1 ег для определения того, может ли клиент перейти из одной очереди (более длинной) в очередь к кассе с номером tel 1 ег либо на обслу- живание к кассе с номером teller, если она освободилась. В целочисленной пере- менной jumper сохраняется номер той очереди, которую покидает клиент в случае осуществления перехода. Изначально переменная имеет значение 0; ей присваива- ется положительное значение, только если найден клиент, имеющий намерение осуществить переход. Целочисленная переменная mi n_di stance указывает (абсо- лютное) расстояние (выраженное числом очередей) от очереди клиента, потенци- ально готового осуществить переход, до очереди, в которую он может перейти. Изначально ей присваивается большее число, поскольку необходимо найти мини- мальное из таких расстояний. Число клиентов, пребывающих в очереди к кассе teller, содержится в целочисленной переменной ni, то есть ni = п( для i = teller. С помощью цикла for определяем, удовлетворяет ли какая-нибудь из очередей (other tel 1 ег) требованиям для перехода клиента, представленным условиями other teller * teller (поскольку клиент не может перейти в свою собственную очередь) и nj > ni + 1, где nj — число клиентов в очереди перед кассой other_teller, то есть n j = tij для j - other_tel 1 ег. Если выполняются оба условия, клиент из конца очереди с номером other tel 1 ег, готов перейти в другую очередь. Этот клиент (воз- можно, временно) будет переходить из одной очереди в другую, если он находится строго ближе к очереди перехода, нежели прибывшие раньше клиенты, и также го- товые к переходу (то есть если значение переменной di stance для этого клиента строго меньше, чем расстояние для других клиентов, готовых к переходу). Обра- тите внимание, что в случае, если два клиента, готовые к переходу, находятся на одинаковом расстоянии от очереди, в которую они могут перейти (один слева от нее, а другой справа), переход осуществит клиент слева, поскольку для клиента справа выполняется условие строгого близкого расстояния. По окончании цикла for переменной jumper присваивается значение 0, если длины других очередей та- ковы, что нет желающих осуществить переход. В этом случае управление снова пе- редается основной функции, и никакие действия не выполняются. Если перемен- ная jumper имеет положительное значение, то оно равно номеру очереди, клиент которой осуществит переход, при этом он удаляется из конца данной очереди. Да- лее проверяется, занята ли касса, которая только что освободилась, обслуживани- ем (клиента, бывшего первым в очереди к кассе). Если касса занята, клиент просто присоединяется к концу этой новой для него очереди. Если же касса свободна, клиент переходит непосредственно на обслуживание к данной кассе, поэтому вы- числяется и регистрируется его задержка в очереди, а касса снова переводится
190 Глава 2. Моделирование сложных систем в состояние занятости. Кроме того, планируется время завершения обслуживания клиента, осуществившего переход. Рис. 2.15. Блок-схема функции jockey для модели банка Листинг 2.19. Код на языке С для функции jockey (модель банка) void jockey(int teller) /* Переход клиента в конец очереди teller из конца другой очереди, если есть клиент, готовый к переходу. */ int jumper. nrin_distance. ni, nj. other teller. distance: /* Находим переменную jumper, соответствующую номеру очереди, последний клиент которой перейдет в очередь к кассе teller, если такой клиент есть. */ jumper - 0: mi n_distance - 1000;
2.6. Банк с несколькими кассами 191 ni - list_size[teller] + list_size[num_tellers + teller]: /* Проверяем все очереди слева направо. ♦/ for (other_teller - 1; other_teller <= num tellers; ++other_teller) { nj - list_size[other_teller] + list_size[num_tellers + other_teller]; distance - abs(teller - other teller); /* Проверяем, удовлетворяет ли клиент в конце очереди other_teller условию перехода. */ if (other_teller !- teller && nj > ni + 1 && distance < min_distance) { /* На данном этапе клиент в конце очереди other_teller выбирается для перехода, поэтому сохраняем номер его очереди и расстояние до очереди перехода. */ jumper - other_teller; min distance - distance; } /* Проверяем, найден ли клиент, готовый к переходу. */ if (jumper > 0) { Z* Такой клиент найден, извлекаем его из очереди. */ list_remove(LAST. jumper); /* Проверяем, занята ли касса, в очередь к которой переходит клиент. */ if (list_size[num_tellers + teller] > 0) /* Касса занята, помещаем клиента в конец этой новой для него очереди. */ T1st_file(LAST, teller): else { ' /* Касса свободна, вычисляем задержку клиента, осуществляющего переход, переводим кассу в состояние занятости и начинаем обслуживание. *Z sampst (sinrtime - transfer[l], SAMPST_DELAYS); list_file(FIRST. num_tellers + teller?; transfer[3] - teller: Z* Задаем это значение перед вызовом event_schedule. */ event_schedule(s1m time + expon(mean_service. STREAM_S£RVICE). EVENT DEPARTURE): } } Код генератора отчетов (листинг 2.20) начинается с цикла, подсчитывающего среднее число клиентов в отдельных очередях с целью получения общего среднего числа клиентов в очереди, о чем уже раньше шла речь. Затем данное значение за- писывается вместе с числом касс в данном варианте модели. Наконец, вызывается
192 Глава 2. Моделирование сложных систем функция, выдающая выходные данные в стандартном формате, для единственной переменной функции sampst, чтобы записать среднюю и максимальную задержки клиентов в очереди (очередях). Листинг 2.20. Код на языке С для функции report (модель банка) void report(void) /* Функция генератора отчетов. */ ( int teller; float avg_num_in_queue; /* Вычисляем и записываем оценки искомых рабочих показателей. */ avg_num_in_queue - 0.0; for (teller - 1; teller <= num_tellers; ++teller) avg_num_in_queue +- filest?teller); fprintf(outfile, "\n\nCX2d кассами, среднее число клиентов в очереди = X10.3f", num_tellers. avg_num_in_queue); fprintf(outfile. "\п\пЗадержки в очереди. мин:\п"); out_sampst(outfile. SAM₽ST_DELAYS. SAMPST DELAYS); } 2.6.3. Выходные данные моделирования и их исследование В листинге 2.21 показаны выходные данные моделирования (в файле mtbank.out). Сравнивая возможные варианты с текущей стратегией банка, когда используется пять касс, можно убедиться, что уменьшение числа касс до четырех приведет к ухудшению качества обслуживания клиентов (об этом свидетельствуют задер- жки в очереди и длина очередей). Увеличение числа касс способствует существен- ному улучшению обслуживания клиентов и уменьшению средней длины очере- дей. Является ли такой шаг экономически обоснованным, зависит от того, как руководство соотносит улучшение обслуживания клиентов с затратами на допол- нительную кассу. Вряд ли оправдано добавление седьмой кассы, поскольку улуч- шение обслуживания в этом случае не кажется существенным по сравнению с сис- темой из шести касс. Заметьте, что известно, сколько клиентов обслуживалось в течение дня в каждом варианте системы — оно соответствует числу зарегистриро- ванных задержек. Это число не очень отличается в различных вариантах системы, поскольку скорость прибытия остается той же, а помещение банка не ограничено. В задаче 2.4, Б и В система усложнена путем добавления новых выходных пока- зателей (коэффициента использования устройства и максимального общего чис- ла клиентов в очередях), а в задаче 2.4, Г модель расширена с учетом реально воз- можных ограничений размеров помещения банка для расположения клиентов в очередях. Листинг 2.21. Отчет с выходными данными (модель банка) Банк с несколькими кассами и переходом клиентов из одной очереди в другую Число касс 4-7 Среднее время между прибытиями 1.000 мин
2.7. Производственная система 193 Среднее время обслуживания 4.500 мин. Закрытие банка после 8.000 ч С четырьмя кассами среднее число кдиентов в очереди равно 51.319 Задержки в очереди, мин: Номер переменной Среднее Число ,. sampst значение значений Максимум Минимум 1 63.2229 501.000 156.363 0.000000 . I С пятью кассами среднее число клиентов в очереди равно 2.441 Задержки в очереди, мин: Номер переменной Среднее Число sampst значение значений Максимум Минимум 1 2.48149 483.000 21.8873 0.000000 С шестью кассами среднее число клиентов в очереди равно 0.718 Задержки в очереди, мин: Номер переменной sampst Среднее значение Число значений Максимум Минимум 1 0.763755 467.000 16.5103 0.000000 С семью кассами среднее число клиентов в очереди равно 0.179 Задержки в очереди, мин: Номер переменной sampst Среднее значение Число значений Максимум Минимум 1 0.176180 493.000 6.97122 0.000000 2.7. Производственная система В этом разделе пакет simlib использован для моделирования производственной системы. Этот пример сложнее рассмотренных до сих пор. В нем показано, как имитационное моделирование может применяться в целях выявления Нехватки ресурсов в производственном процессе. Для сравнения можно обратиться к про- грамме этой модели, созданной в пакете GPSS/H, предназначенном для модели- рования, которую приводит Шрайбер [Shriber, 1991, sec. 13.23]. 2.7.1. Постановка задачи Производственная система состоит из пяти автоматизированных рабочих мест. В настоящий момент места 1,2,..., 5 включают соответственно 3,2,4,3 и 1 одина- ковых станков (рис. 2.16). В сущности система представляет собой сеть из пяти
194 Глава 2. Моделирование сложных систем многоканальных систем массового обслуживания. Предположим, что работы по- ступают в систему с интервалами, представленными независимыми и одинаково экспоненциально распределенными случайными величинами со средним значе- нием 0.25 ч. Существует три типа работ: поступающие работы имеют типы 1,2 и 3 с соответствующими вероятностями 0,3; 0,5 и 0,2. Для работ типа 1,2 и 3 требуется выполнение четырех, трех и пяти заданий соответственно. Задания должны вы- полняться на указанных местах в определенном порядке. В различных типах ра- бот используются следующие технологические маршруты. Рабочие места в соответствии Тип работы с технологическим маршрутом 1 3,1, 2, 5 2 4,1, 3 3 2,5,1,4, 3 Рис. 2.16. Схема производственной системы с пятью рабочими местами, показывающая маршрут работ типа 1 Так, в работе типа 2 первое задание выполняется на рабочем месте 4, второе — на рабочем месте 1 и последнее — на рабочем месте 3. Если работа поступает на определенное рабочее место, а все станки на нем уже заняты, она добавляется в единственную очередь с дисциплиной обслуживания FIFO на этом рабочем месте. Время выполнения задания на определенном станке является независимой случайной величиной с распределением Эрланга 2-го по- рядка, среднее значение которой зависит от типа работы и от рабочего места, где
2.7. Производственная система 195 находится станок. (Если X — независимая случайная величина с распределением Эрланга 2-го порядка со средним значением г, тогда X - Yt + Y2, где Yj и У2 — неза- висимые экспоненциально распределенные величины со средним значением г/2. В качестве альтернативного варианта X может быть случайной величиной, имею- щей гамма-распределение с параметром формы 2 и масштабным параметром г/2. Подробнее об этом рассказано в разделе 6.2.2.) Распределение Эрланга 2-го поряд- ка выбрано, чтобы представить время обслуживания, потому, что как показывает опыт, если собирается информация о времени выполнения какого-либо задания, гистограмма этих данных часто имеет такую форму, как у функции плотности ве- роятностей для распределения Эрланга. Среднее время обслуживания для каждо- го типа работ и каждого задания приведено в таблице. Тип работы Среднее время обслуживания для последовательных заданий, ч 1 0,50; 0,60; 0,85; 0,50 2 1,10; 0,80; 0,75 3 1,20; 0,25; 0,70; 0,90; 1,00 Таким образом, для работы типа 2 требуется среднее время обслуживания 1,10 ч на рабочем месте 4 (там выполняется первое задание для этой работы). Создадим модель работы системы в течение 365 рабочих дней (при 8-часовом рабочем дне и отсутствии перерывов) и оценим ожидаемую среднюю совокупную задержку в очереди (не включающую времени обслуживания) для каждого типа работ и ожидаемую полную среднюю совокупную задержку для всех типов работ. При вычислении последнего значения используем соответствующие типы работ с вероятностями 0,3; 0,5 и 0,2 как удельный вес. Кроме того, оценим: ожидаемое среднее число работ в очереди, ожидаемый коэффициент использования (опреде- ляется с помощью функции timest), ожидаемую среднюю задержку в очереди для каждого рабочего места. Допустим, что все станки имеют примерно одинаковую цену и что для системы может быть приобретен один новый станок с целью повышения производительнос- ти. С помощью описанных выше выходных данных моделирования решим, какие дополнительные прогоны имитационной модели должны быть сделаны. (В каж- дом из новых прогонов будет задействовано 14 станков, что на 1 превышает их на- стоящее число.) После дополнительных прогонов воспользуемся общей средней задержкой для всех типов работ, чтобы определить, станок какого типа следует приобрести для системы. 2.7.2. Программа simlib События в модели цеха довольно просты. Представим их следующим образом. Описание события Тип события Поступление работы в систему 1 Уход работы с определенного рабочего места 2 Завершение моделирования 3
196 Глава 2. Моделирование сложных систем Заметьте, в этой модели событие ухода относится к уходу работы с любого ра- бочего места. Поэтому оно не всегда означает уход работы из системы вообще, а только в том случае, когда рабочее место будет последним на маршруте работы. На рис. 2.17 дано представление событий модели цеха с помощью графов. Рис. 2.17. Представление событий с помощью графов для модели цеха Ниже приводится структура списков, которая будет использоваться в модели. Список Атрибут 1 Атрибут 2 Атрибут 3 Атрибут 4 С 1-го по 5-й, Время поступления очереди на рабочее место Тип работы Номер задания — 25, список событий Время возникновения события Тип события Тип работы Номер задания Время поступления в атрибуте 1 списка очереди соотносится со временем по- ступления работы на рабочее место для этого списка, а не с изначальным време- нем поступления работы в систему. Номер задания работы представляет ее место- нахождение на маршруте: для первого задания он равен 1, для второго — 2 и т. д. Например, задание номер 2 для работы типа 3 касается ее обработки на рабочем месте 5. Следовательно, рабочее место обработки можно определить, зная тип ра- боты и номер задания. В этой модели задержки работ в очередях используются по-разному, поэтому структура переменных функции sampst сложнее, чем в предыдущих моделях. Нам нужно узнать время средней задержки в очереди для каждого рабочего места (без учета типа работы); для этого применим переменные функции sampst с 1-й по 5-ю. Кроме того, необходимо найти время средней задержки для всех Очередей, посе- щаемых работой каждого типа (без учета рабочего места); для этого используем переменные функции sampst с 6-й по 8-ю. Номер переменной функции sampst Значение 1 Задержка в очереди на рабочем месте 1 2 Задержка в очереди на рабочем месте 2
2.7. Производственная система 197 Номер переменной функции sampst Значение 3 Задержка в очереди на рабочем месте 3 4 Задержка в очереди на рабочем месте 4 5 Задержка в очереди на рабочем месте 5 6 Задержка в очереди работ типа 1 7 Задержка в очереди работ типа 2 8 Задержка в очереди работ типа 3 Следовательно, каждая задержка в очереди регистрируется в двух различных переменных функции sampst, одна из которых используется для рабочего места, а другая — для типа работ. Для статистики непрерывного времени используются функции fl lest и timest. Поскольку для каждой очереди имеется отдельный список, с помощью функции filest несложно получить значение среднего числа работ в каждой из очередей. Кроме того, нужно определить занятость каждого рабочего места. Поскольку на рабочем месте может быть несколько станков, а не один, коэффициент занятости рабочего места определяется средним по времени числом станков, задействован- ных йа рабочем месте, разделенным на общее число станков на рабочем месте. Чтобы определить среднее число занятых станков на рабочем месте, создадим соб- ственный (не имеющий отношения к simlib) массив numjnachines_busy[j], который будет определять число станков, занятых на текущий момент на рабочем месте j. При изменении его значения для любого рабочего места будет вызываться функ- ция timest. Таким образом, в модели будут применяться следующие переменные функции timest. Номер переменной функции timest Значение 1 Число занятых станков на рабочем месте 1 2 Число занятых станков на рабочем месте 2 3 Число занятых станков на рабочем месте 3 4 Число занятых станков на рабочем месте 4 5 Число занятых станков на рабочем месте 5 В модели цеха используется три типа случайных переменных, для которых определим такие потоки. Поток Назначение 1 Интервалы времени между поступлением работ 2 Типы работ 3 Время обслуживания Поток 3 используется для генерирования времени обслуживания всех работ независимо от их типа. При моделировании некоторых систем можно выделить отдельные потоки для генерирования времени обслуживания каждого типа работ
198 Глава 2. Моделирование сложных систем или на каждом рабочем месте, чтобы контролировать точные характеристики каж- дого типа работ или каждого рабочего места. Во внешних определениях для программы модели цеха (листинг 2.22) после обязательного оператора #include для файла simlib.h задаются символьные кон- станты типов событий, потоков случайных чисел, а также максимальных значений числа рабочих мест и типов работ. Максимальные значения используются с целью распределения пространства массивов. Применяя их, вместо того, чтобы поме- щать числа непосредственно в объявления массивов, приводим программу к обще- му виду. Затем объявляем несколько переменных и массивов типа i nt, назначения которых объясняют их имена: i используется в качестве индекса типа работы, j — в качестве индекса рабочего места или номера задания. Число станков на рабочем месте у определяется как num_machines[j], общее число заданий (то есть поступле- ний работы на различные рабочие места) для работы i — как num_tasks[i], rou- te[ 1 ] [ j ] — это рабочее место для задания; работы типа i. В определениях объявля- ется рад переменных и массивов типа fl oat: среднее время между поступлениями mean_i nterarrl val измеряется в часах (единицы времени в модуле), а длительность моделируемого периода length simulatlon измеряется 8-часовыми днями (всего 365), что надо учесть при написании кода. Переменная prob_distrib_job_type[i] обозначает вероятность того, что работа будет относиться к типу, номер которого меньше или равен i, a mean_service[i][j] — среднее время обслуживания задания; работы типа i. Затем объявляются функции. Обратите внимание, что целочислен- ный аргумент newjob (новая работа) передается в функцию arri ve со значением 1, если в систему поступила новая работа (в этом случае arri ve применяется как со- бытийная функция), или со значением 2, если работа просто покидает одно рабо- чее место и поступает на другое рабочее место ее маршрута (в этом случае arrive применяется как несобытийная «служебная» функция). Листинг 2.22. Код на языке С для внешних определений (модель цеха) /* Внешние определения для модели цеха. */ finclude "simlib.h" /* Требуется для использования simlib.с. */ # define EVENT-ARRIVAL 1 /* Тип события для поступления работы в систему. */ # define EVENT-DEPARTURE 2 7* Тип события для ухода работы с определенного рабочего места. */ # define EVENT_END_SIMULATION 3 /* Тип события для завершения моделирования. */ fdefine STREAM_INTERARRIVAL 1 /* Поток случайных чисел для интервалов времени между поступлениями работ. */ # define STREAM_JOB_TYPE 2 /* Поток случайных чисел для типов работ. */ # define STREAM_SERVICE 3 /* Поток случайных чисел для времени обслуживания. */ # define MAX_NUM_STATIONS 5 /* Максимальное число рабочих мест. */ fdefine MAX_NUM_JOB_TYPES 3 /* Максимальное число типов работ. */ /* Объявляем глобальные переменные, не относящиеся к simlib. */ int num_stations. num_job_types. i, j. num_machines[MAX_NUM_STATIONS + 1]. num_tasks[MAX_NUM_JOB_TYPES +1]. route[MAX_NUM_JOB_TYPES +1][MAX_NUM_STATIONS + 1]. num_machines_busy[MAX_NUM_STATIONS + 1]. job_type. task:
2.7. Производственная система 199 float meanjnterarrival. length_simulation. prob_distribJob_typeL26], mean_service[MAX_NUM_JOB_TYPES +1][ MAX_NUM_STATIONS + 1]: FILE *infile. *outfile: /* Объявляем функции, не относящиеся к simlib. */ void arrived nt new Job); void depart!void): void report(void): Основная функция (листинг 2.23) довольно длинная, но имеет обычную форму. Обратите внимание на поправки, внесенные при вызове функции event_schedul е для события завершения моделирования, чтобы соблюсти соответствия единиц времени. Листинг 2.23. Код на языке С для основной функции (модель цеха) main!) /* Основная функция. */ ( /* Открываем входной и выходной файлы. */ infile - fopen("jobshop.in", "г"): outflle - fopend jobshop. out". V); /* Считываем входные параметры. */ fscanfdnfile. "Xd Xd Xf Xf", &num_stations. &num job_types, &mean_interarrival. &length_simulation): for (j - 1: j <- num_stations; ++j) fscanfdnfile, "Xd", &num_machines[jj); for (1 - 1; i <- numjob_types: ++i) fscanf(infile. "Xd", &num_tasks[1]): for (i - 1: i <- numjob_types; ++i) { for (j - 1: j <- num_tasks[i]: ++j) fscanfdnfile. "Xd". &route[1][j]): for (j - 1: j <- num_tasks[i]: ++j) fscanfdnfile. "Xf". &mean_service[i][j]); } for (1 - 1; i <- num_job_types; ++i) fscanf(infile. "Xf". &prob_distribjob_type[i]): /*. Записываем заголовок отчета и входные параметры. */ fprintf(outfile. "Модель цеха\п\п"); fprintf(outfile. "Число рабочих местХ21б\п\п“. num_stations); fpr1ntf(outfile. "Число станков на каждом рабочем месте "): for (j - 1; j <- num_stat1ons: ++j) fprintf(outfile, "X5d". num_machines[jj); fprintf(outfile. "\п\пЧисло типов работХ25б\п\п", num_job_types); fprintf(outfile, "Число заданий для каждого типа работ “); for (i - 1; i <- numjobJypes; ++i) fprintf(outfile. "X5d", num_tasks[i]): fprintf(outfile, "\п\пФункция распределения типов работ "); продолжение
200 Глава 2, Моделирование сложМых систем Листинг 2.23 (продолжение) for (1 - 1: 1 < num_job_types; ++i) fprintf(outfile. ”X8.3f". prob_distrib_job_type[i]); fprintf(outfile. "\п\пСреднее время между поступлением работХД4й2Г час\п\п". meanjnterarrival); fprintf(outfile, "Длительность моделируемого периода^.If 8-часовы.х дней\п\п\п", length_simulation): , , fprintf(outfile, "Тип работы Рабочее место на маршруте"); for (1 - 1; i <- num_Job_types; ++1) { fpr1ntf(outfile. "Mi\«X4d ", i); ' ? ’> for (j - 1; J •nuBtasksCta? ♦*$) ' ' » fprintf(outfile, "X5d\ routed fprintf(outfile, "\п\п\пТип работы "); fprintf(outfile. "Среднее дремя обслуживания, ч. для последовательных,работ"): s. ,.г for (i - 1; i <- rium_job_types: ++i) { fpr1ntf(outf1le. "\n\nX4d ". i); :r for (j - 1; j <- num_tasks[1); ++J) fprintf(outfile. "X9.2f", mean_serv1ced3[j]); ’ } /* Изначально устанавливаем все станки на всех рабочих местах в состояние незанятости. */ for (j - 1; j <- num_stations; ++j) ’ num_machines_busy[j] - 0: /^.Инициализируем simlib. */ 1nit_simlib(); » /* Задаем значение переменной maxatr - max (максимальное' Число атрибутов для одной записи. 4) */ ; maxatr - 4; /* НИКОГДА НЕ ЗАДАВАЙТЕ ДЛЯ ПЕРЕМЕННОЙ maxatr ЗНАЧЕНИЕ МЕНЫВЕ 4. */ /* Планируем поступление первой работы. */ event_schedule(expon(mean_interarrival, STREAM_INTERARRIVAL). EVENT_ARRIVAL); • i. /* Планируем завершение моделирования. (Необходимо сделать поправку на единицы времени.) */ event_schedule(8 * length_simulation. EVENT_END_SIMULATION); /* Выполняем прогоны модели до возникновения события завершения моделирования (тип EVENT_END_SIMULATION). */ do { /* Определяем следующее событие. */ timingO;
2.7. Производственная система 201 /* Вызываем соответствующую событийную функцию. */ switch (next_event_type) { case EVENT-ARRIVAL: arrived): break; case EVENTOEPARTURE: depart!): break: case EVENT_END_SIMULATION: report!); break; } /* Если было выполнено событие завершения моделирования (тип EVENT_END_SIMULATION). заканчиваем моделирование. В противном случае продолжаем моделирование. */ } while (next_event_type != EVENT_END_SIMULATION); fclose(infile); fclose(outfile); return 0; } Событийная функция arrive (рис. 2.18 и листинг 2.24) начинается с проверки значения аргумента newjob, по которому определяется, будет arri ve использовать- ся как событийная функция для обработки поступления новой работы в систему (newjob - 1) или как завершающая часть события ухода работы с рабочего места для обработки поступления уже существующей в системе работы на следующее рабочее место ее маршрута (new job - 2). Если в систему поступает новая работа, планируется следующее поступление работы и с помощью функции гandom J nteger пакета simlib, а также интегральных вероятностей в массиве prob distri bjob type генерируется ее тип как случайное число от 1 до 3. Наконец, номер задания этой новой работы устанавливается на 1. Из объяснений к событийной функции depart, приведенных далее, следует, что если функция arri ve не касается поступления но- вой работы в систему, тип работы и номер задания в ней уже будут иметь правиль- ные значения, указанные в переменных job type (тип работы) и task (задание). Не- зависимо от того, является ли эта работа новой, функция продолжает определение рабочего места, куда поступает работа, по ее типу и номеру задания, проводя поиск в массиве route (маршрут). Затем она проверяет, есть ли на рабочем месте свобод- ные станки, и, если все станки заняты, работа помещается в конец очереди. Если имеются свободные станки, работа на этом рабочем месте имеет задержку, равную 0 (которая регистрируется в функции sampst как для рабочего места, так и для типа работы), а свободный станок на рабочем месте переводится в состояние занятости, что отмечается в соответствующей переменной функции timest. Обратите внима- ние на использование приведения типа fl oat для целочисленного массива nummac- hines_busy (число занятых станков), чтобы преобразовать его значение в значение типа float, которое требуется для функции timest. И наконец, планируется уход
202 Глава 2. Моделирование сложных систем этой работы с рабочего места. Важно не забыть определить два последних атрибу- та записи события перед вызовом функции event_schedule. Рис. 2.18. Блок-схема функции arrive для модели цеха
2.7. Производственная система 203 Листинг 2.24. Код на языке С для функции arrive (модель цеха) void arrivednt newjob) /* Пункция, обслуживающая событие поступления новой работы в систему, а также поступление работы на очередное рабочее место ее маршрута, не являющееся событием. */ { int station; /* Если это поступление новой работы в систему, генерируем время следующего поступления и определяем тип, а также номер задания поступившей работы. */ if (newjob — 1) { event_schedule(sim_time + exponOneanJnterarrival. STREAMJNTERARRIVAL). EVENT_ARRIVAL); job_type - random_integer(prob_distribjob_type. STREAM_JOB_TYPE); task - 1; } /* Определяем рабочее место на маршруте работы. */ station - route[job_type][task]; /* Проверяем, есть ли на этом рабочем месте свободные станки. */ if (numjnachines_busy[station] — num_machines[station]) { /* Все станки на рабочем месте заняты, поэтому помещаем поступившую работу в конец соответствующей очереди. Обратите внимание, что в записи для каждой работы сохраняются следующие данные: 1) время поступления на данное рабочее место; 2) тип работы; 3) номер текущего задания. */ transfer[l] - sim_time; transfer[2] - job_type; transfer[3] - task; list_file(LAST. station); } else { /* На этом рабочем месте есть свободный станок, начинаем обслуживание поступившей работы (задержка которой в очереди равна 0). */ sampst(O.O, station); /* Для рабочего места. */ sampst(O.O, num_stations + job_type); /* Для типа работы. */ ++num_machines_busy[station]; timest((float) num_rnachines_busy[station], station): /* Планируем завершение обслуживания. Обратите внимание, что два последних атрибута записи события определяштся перед вызовом функции event_schedule. */ transfer[3] - job_type; transfer[4] - task; event_schedule(sim_time + erlang(2, mean_service[job type][task], STREAM_SERVICE). EVENT DEPARTURE): } }
204 Глава 2. Моделирование сложных систем Событийная функция depart (рис. 2.19 и листинг 2.25) получает значения job_t.ype и task из записи события.ухода, которую только что поместила в массив transfer функция timing, а номер рабочего места station, которое покидает рабо- та, — из массива route. Рис. 2.19. Блок-схема функции depart (модель цеха) Если в очереди на этом рабочем месте нет работ, станок свободен, что отмечает- ся в функции timest. Если на рабочем месте есть очередь, из нее извлекается пер- вая работа (с типом job type queue и номером задания task queue, позволяющими
2.7, Производственная система 205 отличить ее от предыдущей работы, покидающей рабочее место). Задержка этой работы в очереди регистрируется в двух соответствующих переменных функции sampst, после чего планируется ее уход с этого рабочего места. В том случае, если моделирование будет продолжаться длительное время, переменной sim time и мас- сиву transfer опять-таки следует присвоить тип double, чтобы избежать потерь точности при вычислении задержки. Наконец, если у работы, которая покидает рабочее место, еще есть невыполненные задания, номер задания увеличивается, и оно направляется на другое рабочее место ее маршрута с помощью функции arrive. На этот раз аргумент new_job этой функции будет иметь значение 2; следо- вательно, данная работа не является новой в системе. Листинг 2.25. Код на языке С для функции depart (модель цеха) void depart(void) /* Событийная функция для ухода работы с рабочего места. */ { int station. job_type_queue, task_queue; /* Определяем рабочее место, которое покидает работа. */ job_type - transfer[3]; task » transfer[4]; station - route[job_type][task]; /* Проверяем, есть ли еще работы в очереди на этом рабочем месте. */ If (Hst_s1ze[stat1on] -- 0) { 7* В очереди на рабочем месте больше нет работ, переводим Станок на этом рабочем месте в состояние незанятости. */ —num_mach1nes_busy[station]; timest((float)~num_machines_busy[station]. station): } else { /* В очереди на рабочем месте есть работы, начинаем обслуживание первой работы в очереди. */ list_remove(FIRST, station): /* Вычисляем задержку работы для этого рабочего места. */ sampst(s1m_t1me - transfer[l]. station); /* Вычисляем ту же задержку для этого типа работы. */ Job_type_queue - transfer[2]; task_queue - transfer[3]: saropst(sim_t1me - transfer[l], num_stat1ons + job_type_queue); /* Планируем завершение обслуживания этой работы на данном рабочем месте. Обратите внимание, что два последних атрибута записи события определяются перед вызовов функции event_schedule. */
206 Глава 2. Моделирование сложных систем Листинг 2.25 (продолжение) transfer[3] - job_type_queue: transfer[4] - task_queue; event_schedule(s i m_ti me + erlang(2. mean service[job type_queue][task_queue], STREAMSERVICE). EVENT DEPARTURE); } /* Если у работы, покинувшей рабочее место, еще есть невыполненные задания, отправляем работу на следующее рабочее место ее маршрута. */ 1f (task < num_tasks[job_type]) { ++task: arr1ve(2); } } В коде функции генератора отчетов (листинг 2.26) первый цикл for предназна- чен для вычисления значения средней общей задержки во всех очередях для каж- дого типа работы i; слово «общей» здесь имеет целью подчеркнуть, что она опреде- ляется суммой средних задержек для всех очередей на маршруте каждого типа работ. Мы должны умножать среднее значение, возвращенное функцией sampst, на число заданий в этом типе работ, num_tasks[i], а поскольку функция sampst вызы- валась для каждой работы этого типа, которая покидала систему num_tasks[i ] раз (а не один раз), то знаменатель num_tasks[i], используемый функцией sampst для вычисления среднего значения времени, слишком большой. Поэтому сложим ве- совые коэффициенты этих средних общих задержек по вероятностям для их типов работ и получим полную задержку общего числа работ. Применим эти действи- тельные (точные) вероятности типов заданий для получения более точных (менее изменчивых) оценок, нежели те, что будут получены, если просто взять среднее значение всех общих задержек работ независимо от их типа. Кроме того, использу- ем последовательные различия в массиве prob_distribjob_type, для того чтобы восстановить вероятности возникновения типов событий, поскольку этот массив содержит интегральные вероятности. (Техническая подробность: вышеупомяну- тое умножение среднего значения функции sampst на num_tasks[i] является не со- всем правильным.) Так как по завершении моделирования в системе могут оста- ваться работы, которые еще не прошли свои задержки во всех очередях, никакие задержки этих работ не должны регистрироваться в функции sampst. Однако, учи- тывая то, что продолжительность моделирования составляет 365 х 8 - 2920 ч, а каждый час ожидается поступление 4 работ (то есть всего 11 680 работ), такая погрешность, вероятно, будет незначительной. Альтернативный способ сбора со- вокупных задержек в очереди по типу работ, при котором можно избежать упомя- нутой проблемы, рассматривается в задаче 2.5. Функция завершается циклом for, в котором для каждого рабочего места j записываются: среднее по времени число работ в очереди, коэффициент использования рабочего места (вычисленный как среднее по времени число занятых станков, деленное на число станков на рабочем месте) и средняя задержка в очереди.
2.7. Производственная система 207 Листинг 2.26. Код на языке С для функции report (модель цеха) void report(void) /* Функция генератора отчетов. */ {• int 1: float overall_avg_job_tot_delay. avg_job_tot_delay. sum_probs; /* Вычисляем среднюю общую задержку в очереди для каждого типа работы и полную общую совокупную задержку работ. */ fprintfCoutfile. "\п\п\п\пТип задания Средняя общая задержка в очереди"); overall_avg_job_tot_delay - 0.0: sum_probs - 0.0; for (1 - 1; 1 <- numJob_types; ++i) { avg_job_tot_delay - sampst(0.0. -(num_stations + i)) * num_tasks[1]; fprintf(outf1le. "\n\nX4dX27.3f", 1, avg_job_tot_delay); overall_avg_job_tot_delay +- (prob_d1strib_job_type[i] - sum_probs) * avg_job_tot_delay; sum_probs - prob_distrib_job_type[ij; } fpr1ntf(outf1le. ”\п\пПолная средняя общая задержка работ -X10.3f\n". overall_avg_job_tot_delay): /* Вычисляем среднее число работ в очереди, средний коэффициент загрузки рабочего места и среднюю задержку в очереди для каждого рабочего места. */ fprintfCoutfile. "\n\n\n Рабочее Среднее число Средний Средняя задержка"); fprintfCoutfile. "\п место работ в очереди коэффициент загрузки в очереди"); for (j - 1; j <- num stations; ++J) fprintfCoutfile. "\n\nX4dX17.3«17.3f«17.3f". j. filest(j). timestCO.O. -j) / numjnachinestj). sampstCO.O. -j)): } Функция, генерирующая случайную переменную Эрланга ти-го порядка (лис- тинг 2.47 в приложении 2А), соответствует физической модели для распределения по закону Эрланга, описанной раньше (она является частью пакета simlib, а не этой модели). Обратите внимание на то, что необходимо разделить искомое мате- матическое ожидание окончательной случайной величины, распределенной по за- кону Эрланга на т, чтобы определить математическое ожидание составляющих экспоненциально распределенных случайных величин. Заданный пользователем номер потока stream принимается в данной модели как входной параметр и просто передается через экспоненциальный генератор (листинг 2.44 в приложении 2А), а затем и генератор случайных чисел legrand. 2.7.3. Выходные данные моделирования и их исследование В листинге 2.27 показан выходной файл (jobshop.out), полученный в результате моделирования производственной системы. С учетом весовых коэффициентов по типу работ среднее время, потраченное работами на ожидание в очереди, состав- ляло почти 11ч; это не среднее время в системе, поскольку в нем не учтено время
206 Глава 2. Моделирование сложных систем на обработку работ на рабочих местах (см.задачу 2.6). Можно добавить, что вы- полнение этой модели в различных компьютерных системах даст разные числен- ные результаты, что связано с продолжительностью моделирования и сложностью системы. В ней возможны существенные погрешности округления и изменения в порядке использования потока случайных чисел. Листинг 2.27. Отчет с выходными данными (модель цеха) Модель цеха Число рабочих мест 5 Число станков на каждом рабочем месте 3 2 4 3 1 Число типов работ 3 Число заданий для каждого типа работ 4 3 6 Функция распределения типов работ 0.300 0.800 1.000 Среднее значение интервала времени между поступлением работ ' 0.25 ч Длительность моделируемого периода 365.0 восьмичасовых дней Тип работы Рабочие места на маршруте 1 3 12 5 2 4 13 3 ,2 5 1 4 3, Тип работы Среднее время обслуживания, ч. для последовательных заданий 1 0.50 0.60 0.В5 0.50 2 1.10 0.В0 0.75 3 1.20 0.25 0.70 0.90' '1.00 • - •<« .‘Г j . • >,.1 Тип работы Средняя общая задержка в очереди и <: •:» ”. 1- ' 10.022 2 к ' ' 9 403 ' . . .. .v3 • 16.808 4, Полнаясредняя общая задержка работ - 10.870 Рабочее Среднее число Средний коэффициент Средняя задержка место работ в очереди загрузки в очереди 1 12.310 0.969 3.055 2 11.404 0.978 Н*. • /V’ *.» .5.^77 3 0.711 0.719 0.177 4 17.098 0.961 6.110 - 5 • 2.095 < ‘ 0.797 1.043
2.8. Эффективное управление списками событий 209 Статистические данные по рабочим местам показывают затруднения на рабо- чих местах 1, 2 и 4, хотя степень серьезности проблемы зависит от того, какие именно показатели рассматриваются: среднее число работ в очереди, коэффици- ент загрузки рабочего места или средняя задержка в очереди. Мы выполнили три дополнительных прогона имитационной модели, добавив станок на каждое из этих рабочих мест (как показало моделирование, рабочие места 3 и 5 практически не испытывают перегрузки, поэтому их работа с новым станком не рассматрива- лась), чтобы определить, какой тип станка окажет наибольшее влияние на эффек- тивность работы системы. Для полной средней общей задержки работ в качестве единственного показателя производительности в результате трех дополнитель- ных прогонов модели получены данные, приведенные в табл. 2.1. Исходя из этих результатов, станок следует добавить на рабочее место 4, чтобы обеспечить наи- большее уменьшение полной средней общей задержки работ. Как обычно, такой вывод считается ориентировочным, поскольку выполнено всего по одному прого- ну каждого варианта модели. Сказанное прежде всего относится к данному слу- чаю, так как результаты прогонов трех новых вариантов модели слишком близки. Таблица 2.1. Оценка ожидаемых полных средних общих задержек работ для текущей и предложенных конфигураций системы Число станков на рабочих местах Полная средняя общая задержка работ, ч 3,2,4,3,1 (текущая конфигурация) 10,9 4,2,4,3,1 (станок добавлен на рабочее место 1) 8,1 3,3,4,3,1 (станок добавлен на рабочее место 2) 7,6 3,2,4, 4,1 (станок добавлен на рабочее место 4) 7,5 2.8. Эффективное управление списками событий Во всех примерах динамического моделирования, приведенных в данной и преды- дущей главе, возникала необходимость тем или иным способом планировать буду- щие события и определять, какое из запланированных событий произойдет следу- ющим. Рассмотрены два способа обработки списка событий. В главе 1 речь шла о том, что такой список сохранялся последовательно; при этом порядковый номер ячейки соответствовал типу события, а следующее событие определялось путем поиска в списке событий, выполнявшегося сверху вниз, наименьшего времени возникновения события. В этой главе, имея возможность обработки связанных списков, предоставляемую пакетом программ simlib, мы сохраняем список собы- тий как двунаправленный список, составленный в порядке возрастания значений атрибута, содержащего время возникновения события, тогда как другой атрибут используется для типа события. Следующее событие определяется просто, потому что оно всегда находится в начале списка. При добавлении в список записи собы- тия нужно проделать больше работы, поскольку для нее требуется найти пра- вильное местоположение. В обоих случаях — и при удалении, и при добавлении за- писи — нельзя обойтись без просмотра списка.
210 Глава 2. Моделирование сложных систем Поскольку при моделирование невозможно избежать обработки списков собы- тий, некоторые исследователи попытались установить, не существует ли более быстрых способов обработки, которые подходили бы, по крайней мере, для неко- торых типов моделируемых систем. При моделировании сложных систем, содер- жащих большее число событий, существенная часть компьютерного времени тра- тится на обработку списка событий. В своей работе Комфорт [Comfort, 1981] отмечает, что для одного примера класса моделей операторы, необходимые для об- работки списка событий, могут составлять 40 % общего числа операторов, исполь- зующихся при моделировании. Мак-Кормак и Сарджент [McCormack and Sargent, 1981] сообщают о том, что выбор алгоритма для обработки событий может иметь большое влияние на время выполнения моделирования. Хенриксен [Henriksen, 1983] ввел выражение «неудачная постановка*, имея намерение описать простой поиск в списке событий (в случае с одной моделью-примером), выполняющийся сверху вниз, для добавления в него записи событий. Ривз [Reeves, 1984] утвержда- ет, что дальнейшее применение этого метода сохранения и управления списком событий можно считать неуместным. Метод поиска правильного местоположения для новой записи события, ис- пользуемый в пакете simlib, может быть ускорен путем применения более эффек- тивной технологии поиска. Хорошо известен алгоритм двоичного поиска, в кото- ром для списка событий вводится еще один указатель (в дополнение к указателям головы и хвоста), всегда указывающий на среднюю запись списка событий или на одну из двух средних записей, если в списке содержится четное число записей. При необходимости добавления в список новой записи события проверяется за- пись, находящаяся в середине (или рядом с серединой) списка, с целью устано- вить, в какую половину списка следует поместить новую запись. Затем соотве- тствующая половина списка просматривается последовательно и определяется местоположение новой записи. (Строго говоря, термин «двоичный поиск* пред- полагает, что выбранная половина списка, в свою очередь, будет поделена на две половины, затем делится выбранная из этих двух половина и т. д. Но если список событий сохраняется как связанный список, для такого деления понадобится мно- жество дополнительных указателей, которые будут идентифицировать места раз- дела). Если при моделировании системы список событий может стать очень длин- ным (например, в модели компьютерной системы с режимом разделения времени и с очень большим числом терминалов, описанной в разделе 2.5), такой метод мо- жет внести значительные изменения в общее время вычислений (см. задачу 2.35). Существует множество других алгоритмов для обработки списка событий: в одних используются структуры данных, отличные от списков (например, древо- видные схемы различных видов или частично упорядоченные полные бинарные деревья и кучи); об этом идет речь в работе Кнута [Knuth, 1998b]. Комфорт [Comfort, 1979] предоставляет систематику технологий управления списками, а книга Хен- риксена [Henriksen, 1983] является хорошим пособием по изучению некоторых из них и содержит ссылки на соответствующую литературу. Общую информацию по этому вопросу можно также найти в работах Девройи [Devroye, 1986, р. 735-748], Джонса [Jones, 1986, 1989], Джонса с соавторамии [Jones et al., 1986], Кингстона [Kingston, 1986] и Брауна [Brown, 1988], в каждой из которых есть дополнитель-
Приложение 2А 211 ные ссылки. В работе Пуга [Pugh, 1990] рассматривается алгоритм, именуемый пропускаемыми списками, который может применяться для моделирования спис- ков событий. Выбор алгоритма обработки списка событий зависит от типа моделируемой системы, используемых параметров и распределений, а также других факторов, влияющих на распределение событий в списке. Например, при моделировании системы, в которой время между моментом, когда событие планируется (то есть помещается в список событий), и моментом, когда оно происходит (то есть удаля- ется из списка событий), примерно одинаковое для всех событий, события преи- мущественно добавляются в направлении к концу списка в структуре данных в ви- де связанного списка. В этом случае список целесообразнее просматривать снизу вверх, поскольку в большинстве случаев такой поиск будет быстро завершен. Эффективные алгоритмы обработки списков событий [Henriksen, 1983] исполь- зуются в большинстве современных программных пакетов для моделирования (см. главу 3). Приложение 2А Код на языке С для пакета simlib В листингах 2.28-2.47 приведен код на языке С для функций пакета simlib. Заго- ловочный файл simlib.h (листинг 2.28), который должен обязательно вводиться в код с помощью оператора include, в свою очередь, включает (опять же с по- мощью оператора /include) файл simlibdefs.h (листинг 2.29). Код, приведенный в листингах 2.30 -2.47, а также генератор случайных чисел legrand (листинг 7.2 в приложении 7А) составляют файл simlib.c. Весь код, содержащийся в этом при- ложении, может быть загружен с сайта www.mhhe.com/lawkelton. В функции timest (листинг 2.38) вычитание выполняется в двух точках, при этом используется значение часов модельного времени sim time и время возникно- вения последнего события, для которого применяется переменная tlvc[]. При продолжительном моделировании обе переменные могут получить очень большие значения в сравнении с их разностью, поэтому для них следует задать тип double, чтобы избежать потерь точности при вычитании. Листинг 2.28. Заголовочный файл simlib.h /* Файл simlib.h. */ /* Включаем файлы. */ /Include <stdio.h> /Include <stdlib.h> /include <math.h> /include "simlibdefs.h” /♦Объявляем глобальные переменные simlib. */ extern int *list_rank. *list_size. next_event_type. maxatr. maxi1st: продолжение &
212 Глава 2. Моделирование сложных систем Листинг 2.28 (продолжение) extern float *transfer. sim_time. prob_d1strib[26]:* extern struct master { float *value; struct master *pr: struct master *sr: } **head. **ta1l: /* Объявляем функции simlib. */ extern void init_simlib(void): extern void UsCfllednt option, 1nt list): extern void Hst_remove(int option, int list); extern void timing(vold); extern void event_schedule(float time_of_event, int type_qf_event); extern int event_cancel(int event_type): extern float sampst(float value, int varibl): extern float timest(float value, int varibl): extern float filestdnt list): extern void out_sampst(FILE *unit. int lowvar, int highvar); extern void out_timest(FILE *unit, int lowvar. int highvar): extern void out_filest(FILE *unit. int lowlist. int highlist): extern float expon(float mean, int stream): extern 1nt random_1nteger(float'prob_d1strib[], 1nt stream); extern float uniform(float a, float b, int stream): extern float erlangdnt m, float mean, int stream); extern float legranddnt stream); extern void legrandstdong zset, int stream); extern long Icgrandgtdnt stream): Листинг 2.29. Включенный файл simlibdefs.h /* Файл simlibdefs.h. */ /* Определяем границы. */ fdefine MAX LIST 25 /* Максимальное число списков. */ fdefine MAX ATTR 10 /* Максимальное число атрибутов. */ fdefine MAXJVAR 25 /* Максимальное число переменных функции sampst. */ fdefine TIM VAR 25 /* Максимальное число переменных функции timest. *7 fdefine MAX TVAR 50 /* Максимальное число переменных функции timest + списки. */ fdefine EPSILON 0.001 /* Используется в функции event_cancel. */ /* Определяем размеры массивов. */ fdefine LIST SIZE 26 /* MAX_LIST + 1. */ fdefine ATTR_SIZE 11 /* MAX_ATTR + 1. */ fdefine SVAR_SIZE 26 /* MAX_SVAR + 1. */ fdefine TVAR_SIZE 51 /* MAXJVAR + 1. */ /* Определяем опции для функций list_file и list_remove. */ fdefine FIRST 1 /* Поместить в начало (удалить из начала) списка. */ fdefine LAST 2 /* Поместить в конец (удалить из конца) списка. */ fdefine INCREASING 3 /* Поместить в порядке возрастания. */
Приложение 2А 213 /define DECREASING 4 /* Поместить в порядке убывания. */ ; /* Определяем некоторые другие величины. */ /define LIST_EVENT 25 /* Номер списка событий. */ /define INFINITY 1.Е30 /* В действительности не бесконечность, а очень большое число. */ /* Предопределяем номера атрибутов для спйска‘ событий. */ /define EVENT_TIME 1 /* Атрибут 1 в списке событий - время возникновения события. */ /define EVENTJYPE 2 /* Атрибут 2 в списке событий - тип события. */ Листинг 2.30. Внешние определения пакета simlib /* Файл simlib.с (адаптирован на основе SUPERSIMLIB. описанного Грегори Глокнером (Gregory Glockner)). */ /* Включаем файлы. */ /include <stdio.h> /Include <stdlib.h> /include <math.h> /include "simlibdefs.h" /* Объявляем глобальные переменные simlib. */ 1nt *list_rank. *Hst_size. next_event_type, maxatr - 0. maxlist - 0: float *transfer. sim_time. prob_distrib[26]; struct master { float *value; struct master *pr; struct master *sr: } **head. **tail; /* Объявляем функции simlib. */ void init_simlib(void); void Hst_f1le(1nt option, int list); void list_remove(int option, int list); void timing(void); void event_schedule(float time_of_event, int type_of_event): int event_cancel(1nt event_type); float sampst(float value, int variable); float timest(float value, int variable); float filest(1nt list); void out_sampst(FILE *unit, int lowvar. int highvar); void Out_timest(FILE *unit. int lowvar. int highvar); void out_filest(FILE *unit. int lowlist. int highlist); void ppr1nt_out(FILE *unit. int 1); float expon(float mean, int stream): int random_integer(float prob_distrib[], int stream): float uniform(float a. float b. int stream); float erlang(int m. float mean, int stream): float lcgrand(int stream); void lcgrandst(long zset. int stream); long lcgrandgt(1nt stream);.
214 Глава 2. Моделирование сложных систем Листинг 2.31. Функция init_simlib пакета simlib void init_s1mlib() { /* Инициализируем simlib.с. Список LISTJtVENT зарезервирован для списка событий, упорядоченного по времени возникновения событий. Функция 1n1t_sim1ib должна вызываться пользователем из основной функции. */ int list, listsize: if (maxlist < 1) maxlist - MAX_LIST: listsize - maxlist + 1; /* Устанавливаем в исходное состояние атрибуты системы. */ sim_time - 0.0: if (maxatr < 4) maxatr - MAX_ATTR; /* Выделяем пространство для списков. */ list_rank - (int *) calloc(lists1ze. sizeof(int)): list~size - (int *) callocdistsize, sizeof(int)): head" - (struct master **) callocdistsize. s1zeof(struct master *)); tail - (struct master **) callocdistsize. sizeof(struct master *)): transfer - (float *) calloc(maxatr + 1. sizeof(float)): /* Устанавливаем в исходное состояние атрибуты списков. */ fordist - 1; list <- maxlist: ++list) { head [list] - NULL: tail [list] - NULL; list_s1ze[list] - 0: list_rank[list] - 0: } /* Задаем сортировку списка событий по времени возникновения событий. */ list_rank[LIST_EVENT] - EVENTTIME: /* Устанавливаем в исходное состояние статистические функции. */ sampst(0.0. 0): timest(0.0. 0): } Листинг 2.32. Функция 1 ist_fi 1е пакета simlib void list_file(int option, int list) { /* Помещаем запись из массива transfer в список list. Обновляем статистику функции timest для этого списка. option - FIRST помещаем в начало списка LAST помещаем в конец списка INCREASING помещаем в порядке возрастания значений атрибута list_rank(list)
Приложение 2А 215 DECREASING помекаем в порядке убывания значений атрибута listranKGlst) (для разрешения связей используется правило FIFO), */ struct master *row. *ahead. *behind. *ihead. *1tai-1: int item, postest; /* Если указано неправильное значение списка, прекращаем моделирование. */ 1f(! ((list >- 0) && (list <- MAX_LIST))) { ргШТ("\пУказан неправильный список Xd для функции list_file в момент времениХТХп". list. sim_t1me); exit(l): } /* Увеличиваем размер списка. */ list_size[list]++; /* Если указано неправильное значение опции, прекращаем моделирование. */ if(!((option >- 1) && (option <- DECREASING))) { printf( "\nXd - неправильная опция для функции list_f1le в списке Xd в момент времениХТХп". option, list. sim_time); exit(l): } /* Если это первая запись в списке, просто выделяем для нее пространство. */ if(list_size[list] — 1) { row - (struct master *) malloc(sizeof(struct master)); head[list] - row ; tail[list] - row : (*row).pr - KILL; (*row).sr - NULL; } else { /* В списке есть другие записи. */ /* Проверяем значение опции. */ if ((option ~ INCREASING) || (option — DECREASING)) { item - list_rank[list]; if(!((item >- 1) && (item <- maxatr))) { printf( "Xd - неправильное значение для сортировки списка Xd в момент времени Xf\n". item, list. sim_time) : exit(l); } row - head[list]; продолжение #
21 в Глава 2i Мода^йрование сложных систем Листинг 2.32 (продолжение) к:, ы behind - NULL; /* Фиктивное значение для первой итерации. *7 /* Поиск правильного местоположения. */ ч 1f (option — INCREASING) { postest - (transfers tern] >- (*row).value[item]); while (postest) { behind - row; row - (*row).sr; postest - (behind 1“ till[11 stJ); 1f (postest) ' ’ postest - (transfer[item] >- (*row).value[1tem]); } } else { postest - (transfer[1tem] <- (*row).value[1tem]): while (postest) { > behind - row; row - (*row).sr; postest - (behind 1- ta1l[11stl): 1f (postest) postest - (transfer[1ternl <- (*rcw).vaTue[ltem]); } ' ’ ‘ } /* Проверяем, является ли данная позиция местом первой или последней записи. Если да. используем это дальше. */ 1f (row — head[Hst]) option - FIRST; else 1f (behind — tail[11st]) option - LAST; else { /* Помещаем запись между предшествующей и последующей записями. */ ahead - (*beh1nd).sr; ... row - (struct master *) malloc(s1zeof(struct master)); (*row).pr -behind: (*beh1nd).sr - row; (*ahead).pr - row; (*row).sr - ahead; } } /* Завершаем программу, если запись добавлялась в порядке возрастания или убывания. */ if (option — FIRST) { row - (struct master *) malloc(s1zeof(struct master)); ihead - head[list];
г, - q Прилажение2А 217 (*1head).pr - row; .. >. ’ U " t -? (*row).sr - 1head: (*row).pr - NULL: head[Hst] - row; } 1f (option — LAST) { row ' - (struct «aster *) malloc(s1zeof(struct master)); 1ta11 - ta1l[1ist]; (*row).pr - 1ta11: < (*1tail).sr - row; (*row).sr “NULL; -- tail[11st] - row; } } /* Копируем данные. */ (*row).value - transfer; /* Создаем место для новой записи в массиве. */ transfer - (float *) calloc(maxatr + 1. slzeof(float)); /* Обновляем площадь под кривой числа записей в списке. */ timest((float)Hst s1ze[Hst]. TIM_VAR + 11st); } Листинг 2.33. Функция Hst_remove пакета simlib void 11st removednt option, int 11st) { /* Удаляем запись из списка 11st и копируемое атрибуты в массив transfer; Обновляем статистику функции timest для этого списка, option - FIRST удаляем первую запись в списке LAST удаляем последнюю запись в списке */ struct master *row. *1head. *1ta1l; /* Если указано неправильное значение списка, прекращаем моделирование. */ if(!((list >- 0) && (11st <- NAXJ.IST))). { , ргШТ("\пУказан неправильный список и для функции I1st_remove в момент времени Xf\n". 11st, s1m_t1me): exit(l); ) /* Если этот список пуст, прекращаем моделирование. */ 1f(l1st_s1ze[l1st] <- 0) { pr1ntf("\nCnncoK пуст Xd в момент времени Xf\n". 11st, s1m_t1me); ex1t(l>; } - продолжение &
21S Гпава 2. Моделирование сложных систем Листинг 2.33 (продолжение) /* Уменьшаем размер списка. */ I1st_s1ze[list]--; /* Если указано неправильное значение опции, прекращаем моделирование. */ 1f(!(option — FIRST || option — LAST)) { pr1ntf( "\nXd - неправильная опция для функции I1st_remove в списке Xd в момент времени Xf\n". option, list, simtime): ex1t(l); } 1f(l1st_s1ze[l1st] —• 0) { /* В списке всего одна запись, удаляем ее. */ row - head[list]: headClist] - NULL: tall[11st] - NULL: } else { /* В списке более одной записи, удаляем запись, на которую указывает заданная опция. */ swltch(option) { /* Удаляем первую запись в списке. */ case FIRST: row - head!11st]: ihead - (*row).sr: (*ihead).pr - NULL: headtlist] - Ihead: break; ; /* Удаляем последнюю запись в списке. */ case LAST: row - tall[11st]: 1ta1l - (*row).pr: (*1ta1l).sr - NULL; tall[11 st] - 1ta1l; break; } . } -1 . /* Копируем данные и освобождаем память. */ free((char *)transfer):
Приложение 2А 218 transfer - (*row).value: free((char *)row); /* Обновляем площадь под кривой числа записей в списке. */ t1mest((float)l1st_s1zeEl1st], TIM_VAR + 11st): } Листинг 2.34. Функция timing пакета simlib . void t1m1ng() { /* Удаляем запись следующего события из списка событий и помещаем ее атрибуты в массив transfer. Задаем для переменной s1m_tlme (модельное время) время возникновения события transfer[l]. Задаем для переменной next_event_type тип этого события transfer[2J. */ /* Удаляем запись следующего события из списка событий и помещаем ее в массив transfer[J. */ 11 stremove(FIRST. LISTJVENT); /* Проверяем изменение направления времени на обратное. */ if(transfer[EVENT_TIME] < s1m_t1me) { pr1ntf( "ХпПопытка планировать событие типа Xf на время Xf в момент времени Xf\n". transferEEVENTJYPE]. transfer[EVENT_TIME], s1m_t1me): ex1t(l): } /* Переводим часы модельного времени и устанавливаем тип следующего события. */ s1m_t1me - transfer[EVENT_TIME]: next_event_type - transfer[EVENT_TYPE]; } Листинг 2.35. Функция event_schedule пакета simlib void event_schedule(float t1me_of_event. 1nt type_of_event) { /* Планируем событие на время event_t1me и задаем его тип event_type. Если в списке событий кроме первых двух атрибутов (зарезервированных для времени возникновения события и типа события) используются и другие атрибуты, пользователь должен сам поместить их значения в массив transfer перед вызовом функции event_schedule. */ transfer[EVENT_TIME] - t1me_of_event: transferEEVENT TYPE] - type_of_event: Hst_f1le(INCREASING. LIST_EVENT): }
220 Глава 2. Моделирование сложных систем Листинг 2.36. Функция event_cancel пакета simlib 1nt event_cancel(1nt event type) { /* Удаляем первое событие типа event_type из списка событий, оставив его атрибуты в массиве transfer. Если событие удалено, функция event_cancel возвратит 1; если соответствующее событие не найдено, функция event_cancel возвратит 0. */ struct master *row, *ahead, *behind: static Tloat high. low. value: /* Если список событий пуст, ничего не делаем и возвращаем 0. */ 1f(l1st_s1ze[LIST_EVENT] — 0) return 0; /* Просматриваем список событий. */ row - head[LIST_EVENT]; low - event_type - EPSILON; high - event_type + EPSILON: value - (*row).value[EVENT_TYPEJ: while (((value <- low) || (value >- high)) && (row !- ta1l[LIST_EVENT])) { row - (*row).sr: value - (*row).value[EVENT_TYPEJ; } /* Проверяем, является ли эта запись концом списка событий. */ 1f (row — tail[LIST_EVENT]);{ /* Выполняем повторную проверку, чтобы убедиться, что это искомая запись. */ 1f ((value > low) && (value < high)) { list_remove(LAST. LISTJVENT): return 1: } else /* нет соответствующих записей */ return 0: } /* Проверяем, является ли эта запись головой списка. Если она является головой списка, то она ДОЛЖНА быть искомой записью. */ If (row — head[LIST_EVENTJ) { l1st_remove(FIRST. LIST_EVENT): return 1; } /* В противном случае переносим это событие куда-нибудь в середину списка событий. */ /* Обновляем указатели. */ ahead - (*row).sr; behind - (*row).pr; (*behind).sr - ahead;
Приложение 2А 221 (*ahead).pr - behind; /* Уменьшаем размер списка событий. */ l1st_sizeELIST_EVENT]--; /* Копируем данные и освобождаем память. */ free((char *)transfer); /* Освобождаем массив transfer. */ transfer - (*row).value; /* Переносим данные. */ free((char *)row); /* Освобождаем пространство, в котором хранилась запись. */ /* Обновляем площадь под кривой числа записей в списке. */ timest((float)list_sizeELIST_EVENT], TIM_VAR + LISTJEVENT); return 1; } Листинг 2.37. Функция sampst пакета simlib float sampst(float value, int variable) { /* Инициализируем и обновляем статистику, а также собираем итоговую статистику для дискретных процессов: сумма/среднее. максимум (по умолчанию -1Е30). минимум (по умолчанию 1Е30), число наблюдений для переменной variable функции sampst. если variable: - О счетчики устанавливаются в исходное положение: > 0 обновляются суима, счетчик, накопители максимального и минимального значений за счет новых наблюдений; < 0 собираются итоговые статистические данные по переменной variable и возвращаются в массив transfer; [1] - среднее значение наблюдений, [2] - число наблюдений,-' [3] - максимальное значение наблюдений, [4] - минимальное значение наблюдений */ static int ivar, num_observat1ons[SVAR SIZE]; static float maxESVARSIZE], min[SVAR_SIZE]. sum[SVAR_SIZE]; •?'7* Если указано неправильное значение переменной, прекращаем моделирование. */ if(!(variable >- -MAX_SVAR) && (variable <- MAX_SVAR)) { printf("\ntd - неправильное значение переменной функции.sampst в момент времени Xf\n", variable. s1m_time); exit(l); } /* Выполняем действия в соответствии с указанной опцией, */ invariable > 0) { /* Обновляем. */ sum[variable] +- value: if(value > max[variable]) maxEvariable] - value; 1f(value < m1nEvariable]) mlnEvariable] - value; num_observationsEvariable]++; продолжение &
222 Глава 2. Моделирование сложных систем Листинг 2.37 (продолжение) return 0.0; } 1f(var1able < 0) { /* Передаем в массив transfer итоговую статистику. */ 1var - -variable: transfer[2] - (float) num_observat1ons[1var]; transfer[3] - max[1var]; transfer[4] - m1n[1var]; 1f(num_observations[1var] — 0) transfer[l] * 0.0: else transfer[l] - sum[1var] / transfer[2J; return transferal]; } /* Устанавливаем в исходное состояние накопители. */ for(1var-l: Iyar <- MAX_SVAR: ++1var) { sum[1var]' - 0.0; max[1var] - -INFINITY: m1n[1var] - INFINITY; num_observat1ons[1var] - 0; } } Листинг 2.38. Функция timest пакета simlib float timest(float value. 1nt variable) { /* Инициализируем и обновляем статистику, а также собираем итоговую статистику для непрерывных процессов: полное/среднее, максимум (по умолчанию -1Е30), минимум (по умолчанию 1Е30) для переменной variable функции timest. если variable: - 0 счетчики устанавливаются в исходное состояние; > 0 обновляется площадь, накопители минимального и максимального значений в соответствии с новым уровнем переменной; < 0 собираются итоговые статистические данные по переменной variable и возвращаются в массив transfer: [1] - среднее по времени значение переменной, обновленной на время этого вызова: [2] - максимальное значение, достигнутое переменной: [3] - минимальное значение, достигнутое переменной. Обратите внииание. что переменные с TIM_VAR + 1 по TVAR_SIZE используются для автоматической записи длины списков“с 1 по MAX_LIST. */ 1nt 1var; static float area[TVAR SIZE], max[TVAR_SIZE]. min[TVAR SIZE], prevalETVAR_SIZE], tlvc[TVAR_SIZE], treset; /* Если указано неправильное значение переменной, прекращаем моделирование. */ 1f(! (variable >- -MAXTVAR) && (variable <- MAX_TVAR)) { pr1ntf("\nXd - неправильное значение переменной функции timest в момент времени Xf\n", variable, s1m_t1me): ex1t(l): }
Приложение 2А 223 /* Выполняем действия в соответствии с указанной опцией. */ invariable > 0) { /* Обновляем. */ area[var1able] +- (s1m_t1me - tlvc[variable]) * preval[variable]; 1f(va1ue > max[variable]) max[var1able] - value; 1f(value < m1n[var1able]) m1n[var1able] - value; preval[variable] - value: tlvc[var1able] - s1m_t1me: return 0.0: } invariable < 0) { /* Передаем в массив transfer итоговую статистику. */ 1var - -variable: area[ivar] +- (s1m_t1me - tlvc[1var]) * preval[1var]; tlvc[1var] - s1m_tiime; transfer[l] - area[ivar] / (s1m_t1me - treset); transfer[2] - max[1var]; transfer[3] - m1n[1var]; return transfer[lj; } /* Устанавливаем в исходное состояние накопители. */ for(1var - 1; 1var <- MAXJVAR; ++1var) { area[1var] - 0.0: max[1var] - -INFINITY: min[1var] - INFINITY: preval[1var] - 0.0: tlvc[ivar] - s1m_t1me; } treset - sim_t1me: } Листинг 2.39. Функция fllest пакета simlib float f1lest(1nt 11st) { /* Передаем статистику о длине списка 11st в массив transfer: [1] - среднее по времени значение длины списка, обновленное на время этого вызова; [2] - максимальная зарегистрированная длина списка: [3] - минимальная зарегистрированная длина списка. Для этого используется переменная функции timest TIM_VAR + 11st. */ return t1mest(0.0, -(TIM VAR + 11st)); } Листинг 2.40. Функция out_sampst пакета simlib void out sampstCFILE *un1t. 1nt lowvar. 1nt highvar) { /* Записываем статистику функции sampstдля переменных с lowvar по highvar в файл unit. */ 1nt 1var. iatrr; 1f(lowvar>h1ghvar || lowvar > MAX_SVAR || highvar > MAX_SVAR) return; продолжение &
«4 Глава 2. Моделирование сложных систем Листинг 2.40 (продолжение) fprintf(un1t. "\n sampst Число’);- fprintf(un1t, "\п переменной "); fprlntf(unit. “\п номер Среднее значение значений Максимум’); fprintf(unit. " Минимум"); fpr 1 ntf(un11. " \n_________________________________”); fpr1ntf(un1t. ’______________________________________*); for(1var - lowvar; 1var <- highvar; ++1var) { fprintf(unit, "\n\n*5d", ivar); sampst(0.OO. -iyar); for(1atrr - 1; iatrr <- 4; ++1atrr) ppr1nt_out(un1t. Jatrr); } fprintf(unit, *\n____________________________________’); . fprintf(unit, ’\n\n\n"); } Листинг 2.41. Функция out_timest пакета simlib void out_t1mest(FILE *un1t, 1nt lowvar. int highvar) { /* Записываем статистику функции timest для переменных variables с lowvar по highvar в файл unit. */ 1nt 1var. Iatrr; if(lowvar > highvar || lowvar > TIMVAR || highvar > TIMVAR ) return; fprintf(un1t. ”\n timest"); fpr1ntf(un1t. "\n переменной Среднее"); fprlntf(unit. ”\n номер по времени Максимум Минимум"); fpr1 ntf(uni t. " \n______________________________________________________________"); ford van - lowvar; 1var <- highvar; ++1var) { fprintf(un1t. "\n\nl5d”. Ivar)'; timest(0.00.- -ivar); fordatrr - 1; Iatrr <- 3; -н-iatrr) ppr1nt_out(unit, iatrr); ) - fpri ntf(un1t, ’\n________________________________________________________________’); fprlntf(unit, "\n\n\n"); } Листинг 2.42. Функция out_filest пакетаsimlib void out_f1lest(FILE *un1t. 1nt lowlist. 1 nt Highlist)’ { /* Записываем статистику по длине списков функции timest для списков с lowlist по highlist в файл unit. */ 1nt 11st. iatrrr, ifflowlist > highlist || lowlist > MAX.LIST || highlist > MAX_LIST) return;
Приложение 2А 225 fprintf(unit. "\n Нойер Среднее "); u fprintf(un1t. "\n файла по времени Максимум Минимум"); fpr1ntf(un1t. "\n"): for(list - lowllst; 11st <- h1gh!1st; ++I1st) { fprintf(un1t. "\n\nX5d", 11st); fllest(Hst); fordatrr - 1; 1atrr <- 3; ++iatrr) ppr1nt_out(un1t. 1atrr); } fprl ntf(un11, " \n: fpr1ntf(un1t. ”\n\n\n"); 1 Листинг 2.43. Функция ppr1nt_out пакета simlib void ppr1nt_out(FILE *un1t, 1nt 1) /* Записываем значение 1-го элемента в массиве transfer в файл unit. */ { if(transfer[1] — -1еЗО || transfer[i] — 1е30) fprintf(unit," X#15.6S ". 0.00); else fpr1ntf(un1t.* X#15.6G ". transfer^]); } Листинг 2.44. Функция expon пакета simlib float expon(float mean, 1nt stream) /* функция генерирования случайной экспоненциально распределенной величины. */ { return -mean * log(lcgrand(stream)); } Листинг 2.45. Функция random_1nteger пакета simlib int random_1nteger(float prob_d1str1b[J. 1nt stream) /* Функция генерирования случайной дискретной величины. */ { 1nt 1; float u: 1'. - г u - IcgrandCstream); for (1 - 1; u >- prob_distr1b[i]; ++1) return 1; } Листинг 2.46. Функция uniform пакета simlib float un1form(float a. float bv 1nt stream) ,/* Функция генерирования случайной равномерно распределенной величины. '*/ ( return а + lcgrand(stream) * (b - а); }
226 Глава 2. Моделирование сложных систем Листинг 2.47. Функция erlang пакета simlib float erlangdnt m. float mean, int stream) /* Функция генерирования случайной величины Эрланга. */ { int i; float mean_exponential. sum; mean_exponential - mean / m; sum - 0.0; for (i - 1; 1 <- m; ++i) sum +- expon(mean_exponential. stream); return sum; } Задачи Приведенные ниже задачи следует выполнять, используя simlib в каждом возмож- ном случае. 2.1. В модели системы массового обслуживания с одним устройством обслужива- ния из раздела 2.4 замените фиктивный список для устройства собственной переменной, представляющей состояние устройства (занято или свободно), и вместо функции fil est воспользуйтесь функцией timest, чтобы получить данные о занятости устройства. Если позволяет ваш компьютер, для сравне- ния определите продолжительность времени выполнения исходного и изме- ненного вариантов модели. 2.2. В модели компьютерной системы с режимом разделения времени (раздел 2.5) объедините событие завершения моделирования с событием завершения об- служивания задания ЦП. Переделайте диаграмму событий, измените про- грамму и выполните ее с упрощенной структурой событий. 2.3. Обратимся к модели компьютерной системы с режимом разделения времени из раздела 2.5. Предположим, что необходимо собрать данные о значении среднего времени ответа для каждого терминала в отдельности, а также об- щем времени ответа. Внесите соответствующие изменения в модель и выпол- ните прогон для варианта модели, когда число терминалов п = 10. (Подсказка: надо добавить еще один атрибут, представляющий терминал — источник задания, а также определить дополнительные переменные функции sampst.) 2.4. Рассмотрим модель банка с несколькими кассами из раздела 2.6. Предполо- жим, что требуется узнать максимальное число посетителей, которым ко- гда-либо приходилось ожидать обслуживания в очереди. Выполните следую- щие задания по порядку, то есть с учетом того, что каждый последующий пункт основывается на предыдущем. А. Объясните, почему для получения этого результата нельзя просто сло- жить максимальные значения для каждой отдельной очереди. Б. Измените программу, чтобы собрать эту статистику и записать ее. Вы- полните прогоны для вариантов модели, когда число касс п = 4, 5, 6, 7.
Задачи 227 В. Добавьте к этому дополнительный выходной показатель, определяющий ко- эффициент использования устройств обслуживания. Так как в системе ис- пользуется несколько устройств, коэффициент использования определяет- ся как среднее по времени число занятых устройств, деленное на число устройств. Учтите, что в результате будет получено число от 0 до 1. Г. Теперь предположим, что помещение банка может вмещать всего 25 кли- ентов в очередях. Если клиент прибывает в банк, когда там уже находит- ся 25 клиентов в очередях, он вынужден покинуть банк. Такая ситуация, называемая неприсоединением к очереди, естественно, для банка невыгод- на. Измените программу так, чтобы она отражала неприсоединение кли- ентов к очереди. В ней способность зала вместить 25 клиентов задается как входной параметр. В дополнение ко всем остальным выходным пока- зателям определите число клиентов, которые не присоединились к оче- реди в процессе моделирования. 2.5. В модели производственной системы из раздела 2.7 исправьте незначитель- ную ошибку, указанную при описании генератора отчетов и касающуюся определения общей задержки работ в очереди для отдельных типов работ. С этой целью добавьте для каждой работы атрибут, представляющий общую задержку в очереди до настоящего времени. Когда работа покинет систему, учтите это значение в функции sampst. Выполните моделирование такого ва- рианта системы с .«текущими конфигурациями» числа станков на каждом ра- бочем месте. 2.6. В модели производственной системы из раздела 2.7 оцените математическое ожидание полного среднего времени работы в системе, являющееся взвешен- ным средним математического ожидания времени в системе (задержка в оче- реди плюс время обработки) для каждой из трех типов работ. В качестве ве- сового коэффициента используйте вероятности возникновения типов работ. (Подсказка: для этого не понадобится компьютер.) 2.7. Выполните прогон модели производственной системы из раздела 2.7 для 100 8-часовых дней, но используйте данные только за последние 90 дней, чтобы оценить нужные показатели. В действительности состояние системы на мо- z мент времени 10 дней представляет начальные условия для моделирования. Идея «переходного периода» работы системы перед началом сбора данных, часто используемая в практике моделирования, рассматривается в разде- ле 9.5.1. (Просмотрите код для функции timest в листинге 2.38, обратив осо- бое внимание на переменную treset, чтобы понять, как вычисляется стати- стика непрерывного времени.) 2.8. Для модели производственной системы из раздела 2.7 предложите другое определение атрибутов, при котором код для этой модели станет проще. 2,9. Выполните задачу 1.15 с использованием библиотеки simlib. Поток 1 приме- ните, чтобы задать время между прибытиями, поток 2 — время обслуживания устройством 1, поток 3 — время обслуживания устройством 2 и поток 4 — время перехода.
228 Глава 2. Моделирование сложных систем 2.10. Выполните задачу 1.22 с использованием библиотеки simlib. Поток 1 приме- ните, чтобы задать время работы станков, а поток 2 — время ремонта. 2.11. Выполните задачу 1.24 с использованием библиотеки simlib. Поток 1 приме- ните, чтобы задать время между прибытиями, а поток 2 — время обслужива- ния. Обратите внимание, насколько проще моделировать эту систему, поль- зуясь инструментариями для обработки списков. 2.12. Выполните задачу 1.26 с использованием библиотеки simlib. Поток 1 приме- ните, чтобы задать время между прибытиями, поток 2 — определить тип кли- ентов, поток 3 — время обслуживания клиентов типа 1, а поток 4 — время об- служивания клиентов типа 2. 2.13. Выполните задачу 1.27 с использованием библиотеки simlib. Поток 1 или 2 примените, чтобы задать время между прибытиями и время обслуживания клиентов обычной кассы, а потоки 3 и 4 — время между прибытиями и время обслуживания клиентов срочной кассы. 2.14. Выполните задачу 1.28 с использованием библиотеки simlib. Поток 1 приме- ните, чтобы задать время между прибытиями обычных машин, а поток 2 - время обслуживания всех машин. 2.15. Выполните задачу 1.30 с использованием библиотеки simlib. Поток 1 приме- ните, чтобы задать время между прибытиями, поток 2 — для задания времени осмотра, поток 3 — чтобы определить необходимость ремонта для конкретно- го автобуса, а поток 4 — время ремонта. 2.16. Обратимся к примеру системы управления запасами из раздела 1.5. Пред- положим, что время доставки равномерно распределено между 1-м и 3-м ме- сяцами, поэтому в системе может быть от 0 до 3 неприобретенных заказов од- новременно. Решение о заказе товаров в начале каждого месяца компания принимает, исходя из суммы конечного уровня запасов (обозначенного в раз- деле 1.5 как /(£)) и количества заказанных товаров; эта сумма может иметь по- ложительное, нулевое или отрицательное значение. Выполните прогон ими- тационной модели для каждой из девяти стратегий управления запасами в течение 120 мес. и оцените ожидаемые средние общие расходы в месяц и долю времени существования отложенных поставок. Обратите внимание, что затраты на хранение и издержки, связанные с нехваткой товара, по-преж- нему основываются на конечном уровне запасов. Используйте поток 1, чтобы задать время между поступлениями, поток 2 — для объема спроса и поток 3 — для времени доставки. 2.17. В задаче 1.18 решался усложненный вариант системы управления запасами (раздел 1.5), так как товар был скоропортящимся. Выполните эту задачу с ис- пользованием simlib, а также дополнительно рассмотрите вариант обработки товаров в запасах с дисциплиной LIFO (а также FIFO). Используйте такое же распределение потоков, как в задаче 2.16, и поток 4 — для сроков хранения. 2.18. Возьмем модель компьютерной системы из раздела 2.5. Предположим, что при обработке заданий в очереди вместо циклической дисциплины обслужи- вания ЦП выбирает из очереди задания, которые совершили наименьшее ко- личество проходов ЦП. В этом случае, если возникают связи, используется
Задачи 229 правило FIFO (что эквивалентно применению для разрешения связей време- ни поступления задания в очередь). Выполните прогон имитационной моде- ли для п - 60 терминалов, пока не будет выполненоЮОО заданий. 2.19. Суда прибывают в гавань, и время между прибытиями, представленное неза- висимыми одинаково экспоненциально распределенными случайными вели- чинами со средним значением, равно 1,25 дня. В гавани имеется док с двумя якорными стоянками и двумя кранами для разгрузки судов. Корабли, при- бывшие тогда, когда обе якорные стоянки заняты, становятся в очередь с дис- циплиной обслуживания FIFO. Время, необходимое одному крану для раз- грузки судна, равномерно распределено между 0,5 и 1,5 дня. Если в гавани всего одно судно, разгрузкой занимаются оба крана, и время разгрузки (ос- тавшееся) уменьшается вдвое. Если в гавани два судна, то каждый из двух кранов работает с каждым судном. Если оба крана разгружают одно судно, то, по прибытии второго судна, один из кранов немедленно начинает его обслу- живание, а оставшееся время обслуживания первого судна увеличивается вдвое. Допустив, что в гавани на момент времени 0 нет судов, выполните мо- делирование работы системы в течение 90 дней и вычислите минимальное, максимальное и среднее время нахождения судов в гавани (включая их время пребывания на якорной стоянке). Оцените также ожидаемый коэффициент загрузки каждой якорной стоянки и кранов. Используйте поток 1 для време- ни между прибытиями и поток 2 — для времени разгрузки. (Эта задача при- ведена в качестве примера в работе Русселля [Russell, 1976, р. 134].) 2.20. Задания поступают в компьютерное устройство с одним ЦП с интервалами вре- мени, представленными независимыми одинаково экспоненциально распреде- ленными случайными величинами со средним значением 1 мин. Для каждого задания определяется максимальный период времени, необходимый для его об- работки; максимальное время для последовательных заданий представлено не- зависимыми одинаково экспоненциально распределенными случайными вели- чинами со средним значением 1,1 мин. Однако, если т — это установленное максимальное время обработки для определенного задания, то действительное время обработки будет равномерно распределено между 0,55 т и 1,05 т. При этом ЦП никогда не обрабатывает задание дольше установленного максималь- ного времени; задание, для которого необходимое время обслуживания превы- шает указанный максимум, покидает устройство, не завершив обслуживание. Выполните моделирование компьютерного устройства до момента, пока 1000 за- даний не покинут ЦП: в одном случае (а) задания в очереди обрабатываются в порядке FIFO, в другом (б) — задания в очереди выстраиваются в порядке возра- стания установленного для них максимального времени обработки. Для каждого случая вычислите среднюю и максимальную задержки заданий в очереди, часть заданий, которые испытывают задержку, превышающую 5 мин, и максималь- ное число заданий в очереди. Используйте поток 1 для времени между поступ- лениями, поток 2—для максимального времени обработки и поток 3—для фак- тического времени обработки. Какую рабочую стратегию вы бы посоветовали? 2.21. В карьере грузовики доставляют руду от трех экскаваторов к одной дробил- ке. Грузовики приписаны к определенным экскаваторам, так что конкретный
230 Глава 2. Моделирование сложных систем грузовик всегда возвращается к своему экскаватору, выгрузив руду у дробил- ки. Используются грузовик двух видов: грузоподъемностью 20 и 50 т. Грузо- подъемность влияет на время погрузки машин экскаватором, время переезда к дробилке, время разгрузки и время возвращения к экскаватору (все эти данные указаны в нижеприведенной таблице). Процесс 20-тонный грузовик 50-тонный грузовик Погрузка Экспоненциально распределенные величины со средним значением 5 мин Экспоненциально распределенные величины со средним значением 10 мин Переезд Постоянная величина 2,5 мин Постоянная величина 3 мин Разгрузка Экспоненциально распределенные величины со средним значением 2 мин Экспоненциально распределенные величины со средним значением 4 мин Возвращение Постоянная величина 1,5 мин Постоянная величина 2 мин К каждому экскаватору приписаны два грузовика: 20-тонный и 50-тонный. Все очереди к экскаваторам имеют дисциплину обслуживания FIFO, а оче- редь к дробилке выстраивается в порядке убывания грузоподъемности ма- шин; в случае возникновения связей используется правило FIFO. Допустим, в момент времени 0 все грузовики находятся у своих экскаваторов и только что началась погрузка 50-тонного грузовика. Выполните моделирование ра- боты системы в течение 8 ч и оцените ожидаемое среднее по времени число грузовиков в очереди у каждого экскаватора и у дробилки. Оцените также ожидаемые коэффициенты загрузки всех четырех устройств. Используйте потоки 1 и 2 для времени погрузки 20- и 50-тонных грузовиков, а потоки 3 и 4 — для времени разгрузки этих грузовиков соответственно. (Задача взята из работы Прицкера [Pritsker, 1995, р. 153-158].) 2.22. Вычислительный центр с одним ЦП, выполняющий пакетную обработку за- даний, открывается в 7.00 и закрывается в полночь, но продолжает свою ра- боту до тех пор, пока все задания,.имеющиеся в нем на 0.00 часов, не будут вы- полнены. Предположим, что время между поступлениями заданий в центр, представлено экспоненциально распределенными величинами со средним зна- чением 1,91 мин. Задания требуют срочного обслуживания (класс 4), обыч- ного (класс 3), с возможной отсрочкой (класс 2) и по мере возможности (класс 1); эти классы возникают с вероятностями 0,05; 0,50; 0,30 и 0,15 соот- ветственно. Когда ЦП освободится, он будет обрабатывать задание высшего (приоритетного) класса; для заданий одного класса действует дисциплина обслуживания FIFO. Время, необходимое ЦП для обработки заданий класса 4,3,2 и 1, представлено случайными величинами с распределением Эрланга 3-го порядка (см. раздел 2.7) с соответствующими средними значениями 0,25; 1,00; 1,50 и 3,00 мин. Создайте модель вычислительного центра для следую- щих случаев. А. Обработка задания ЦП не прерывается при поступлении задания более высокого класса.
Задачи 231 Б. Если обрабатывается задание класса i, когда поступает задание класса j (при этому > г), обработка задания класса i прерывается. Задание, обра- ботка которого прервалась, поступает в очередь и в своем классе получа- ет наивысший приоритет. В дальнейшем для его обслуживания потребу- ется только оставшееся время обслуживания. Оцените для каждого класса ожидаемое среднее по времени число заданий в очереди и ожидаемые средние задержки в очереди. Оцените также ожидае- мые доли времени, когда ЦП пребывает в состоянии занятости и когда ЦП занят обработкой каждого класса задания. Заметьте, удобнее использовать отдельный список для очереди заданий каждого класса, а также входной па- раметр, который устанавливается в 0 для случая А и в 1 для случая Б. Ис- пользуйте поток 1 для времени между поступлениями, поток 2 — для опреде- ления класса заданий и потоки 3,4, 5 и 6 — для времени обработки заданий классов соответственно 4, 3, 2, и 1. 2.23. В африканском порту танкеры загружаются сырой нефтью. Оборудование в порту позволяет загружать одновременно до трех танкеров. Танкеры, при- бывающие в порт каждые (11 ± 7) ч, могут быть трех различных типов. (Все значения времени, приведенные в этой задаче как интервал <±», равномерно распределены в указанном интервале.) Относительная частота появления танкеров различных типов и требования, относящиеся ко времени их погруз- ки приведены в таблице. Тип Относительная частота Время погрузки, ч 1 0,25 18 ±2 2 0,25 24 ±4 3 0,50 36 + 4 В порту имеется один буксир. Ни один тип танкеров не может обойтись без буксира, который отводит танкеры из гавани к причалу, а позднее уводит от причала в гавань. Когда буксир свободен, ему требуется около 1 ч, чтобы от- вести танкер к причалу или вывести его в гавань. Если буксир не тянет тан- кер, ему требуется 0,25 ч, чтобы преодолеть расстояние от причала до гавани (или наоборот). Когда буксир завершит буксировку к причалу, он приступа- ет к буксировке первого танкера из очереди у причала, если таковая имеется. Если в очереди у причала нет танкеров, буксир отправляется в гавань и при- ступает к буксировке первого танкера из очереди в гавань. (Если в обеих оче- редях нет танкеров, свободный буксир остается у причала.) Выполнив букси- ровку от причала в гавань, буксир берет первый танкер из очереди в гавани, если в ней есть танкеры, а у причала есть свободное место. В противном слу- чае буксир отправится к причалу, и если в очереди у причала есть танкеры, начнет буксировку первого танкера из этой очереди. Если очереди у причала нет, свободный буксир остается у причала. Ситуация может усложниться из-за того, что в этой зоне часто бывают штор- мы продолжительностью (4 ± 2) ч. Интервал времени между завершением
232 Глава 2. Моделирование сложных систем одного шторма и началом другого представлен экспоненциально распреде- ленной величиной со средним значением 48 ч. Буксир не начнет новую опе- рацию, пока бушует шторм, но всегда завершит уже начатую. (Загрузка тан- керов у причала продолжается и во время шторма.) Если на момент начала шторма буксир идет от причала в гавань без танкера, он развернется и возвра- тится к причалу. Выполните моделирование этой системы для периода времени, равного 1 го- ду (8760 ч) и оцените ожидаемые: а) доли времени, когда буксир свободен, перемещается без танкера и выпол- няет буксировку к причалу или в гавань; б) доли времени, когда каждое из мест у причала свободно, занято, но за- грузка не выполняется, и занято с выполнением загрузки; в) среднее по времени число танкеров в очереди у причала, а также в очере- ди в гавани; г) среднего времени пребывания в порту каждого типа танкеров. Используйте поток 1, чтобы задать интервал времени между прибытием тан- керов, поток 2 — для определения типа танкеров, поток 3 — для времени за- грузки, поток 4 — для продолжительности шторма и поток 5 — для интервала времени между завершением одного шторма и началом другого. Компания-перевозчик, рассматривающая контракт на транспортировку неф- ти из этого порта в Великобританию, определила, что для реализации этой задачи должно быть дополнительно выделено пять танкеров определенного типа, для того чтобы обеспечить выполнение условий контракта. Этим танке- рам понадобится (21 ± 3) ч на погрузку нефти в порту. После погрузки и букси- ровки от причала они идут в Великобританию, разгружают нефть, возвраща- ются в порт для дальнейшей погрузки и т. д. Переезд туда и обратно, включая разгрузку, занимает (240 ± 24) ч. Еще раз выполните моделирование этой сис- темы, кроме того, оцените ожидаемое среднее время пребывания в порту пред- ложенных дополнительных танкеров. Допустим, что на момент времени 0 все пять танкеров находятся в очереди в гавани. Используйте прежнее распределе- ние потоков случайных чисел плюс поток 6 для времени погрузки нефти в по- рту и поток 7 для времени переезда туда и обратно этих новых танкеров. (Зада- ча взята из работы Шрайбера [Schriber, 1974, р. 329].) 2.24. Вернемся к условию задачи 2.23. Предположим, что буксир оборудован при- емно-передающей радиоустановкой, с помощью которой на нем узнают о по- ложении и статусе всех танкеров в порту. В результате стратегия действий буксира меняется. Если буксир идет из гавани к причалу без танкера и еще не преодолел половины пути, когда прибывает новый танкер, он разворачивает- ся, возвращается и забирает этот танкер. Если буксир идет от причала в га- вань без танкера, и еще не преодолел половины пути, когда завершилась за- грузка танкера, он разворачивается, возвращается и забирает этот танкер. Выполните моделирование системы с прежними параметрами и распределе- нием потоков, но в условиях новой стратегии действий буксира.
Задачи 233 2.25. Предположим, что буксир из задачи 2.24 идет из гавани к причалу без танке- ра, а в очереди у причала танкеров нет. Когда прибывает новый танкер, бук- сир разворачивается, возвращается и забирает его, независимо от расстоя- ния, которое он преодолел. Выполните моделирование системы с прежними параметрами и распределением потоков, но в условиях этой новой стратегии действий буксира. 2.26. В химчистке выполняется обработка костюмов-двоек. Костюмы поступают в среднем с интервалом 10 мин. Все они сначала проходят обработку у опера- тора 1, возможно, подождав в очереди с дисциплиной обслуживания FIFO (рис. 2.20). По завершении обслуживания оператором 1 одна часть костюма (пиджак) поступает к оператору 2, а другая часть костюма (брюки) — к опера- тору 3. В ходе обработки пиджака оператором 2 вероятность его поврежде- ния равна 0,05, а вероятность повреждения брюк оператором 3 — 0,10. Поки- нув оператора 2, пиджаки поступают в одну очередь к оператору 4; а брюки от оператора 3 — в другую очередь к оператору 4. Оператор 4 собирает части костюма воедино. Процесс сборки начинается, когда оператор свободен и для него доступны обе части одного костюма. Если обе части собранного костюма не повреждены, костюм возвращается клиенту. Если одна из частей (или обе) повреждена, костюм поступает в отдел работы с клиентами (оператор 5). До- пустим, что все интервалы времени являются экспоненциально распределен- ными с приведенными в таблице средними значениями и для них выделены указанные потоки. Номер оператора Среднее время обслуживания, мин Поток 1 2 3 4 4 5 6 1 4 2 5 3 5 (неповрежденный костюм) 4 8 (поврежденный костюм) 5 12 6 Используйте поток 7 для интервалов времени между поступлением костю- мов и потоки 8 и 9 — для определения, будут ли части костюма повреждены операторами соответственно 2 и 3. В исходном состоянии в системе нет кос- тюмов; и она бездействует, система будет работать в течение 12 ч. Определите среднее и максимальное время пребывания в системе для каждого типа поки- нувших ее костюмов (поврежденных или нет) в отдельности, среднюю и мак- симальную длину каждой очереди, а также коэффициент загрузки каждого оператора. Что произойдет, если скорость поступления костюмов увеличит- ся вдвое (то есть среднее значение для интервалов времени между поступле- ниями станет равно 5 мин вместо 10)? Если бы в этом случае возникла воз- можность задействовать в любом месте системы еще одного оператора, чтобы помочь в выполнении одной из пяти операций, куда бы вы его определили?
234 Глава 2. Моделирование сложных систем Рис. 2.20. Схема обработки костюмов в химчистке 2.27. Система массового обслуживания имеет два последовательных устройства обслуживания (А и Б)и обслуживает два типа требований (1 и 2). Тип требо- вания-определяется немедленно по его поступлении. Поступившее требова- ние имеет тип 1 с вероятностью 0,6. Тем не менее оно может неирисоеди- ниться к очереди, то, есть покинуть систему, если очередь к устройству А слишком длинная. В частности, если требование поступает, когда в очереди к устройству А находится т требований, оно присоединяется к очере- ди с вероятностью l/(m+1) независимо От типа требования <1 или 2). Нап- ример, требование, поступившее, когда в очереди к устройству А нет других
Задачи 235 требований (то есть т = 0), наверняка останется в системе (вероятность поступления 1/(0 + 1) = 1). Требование, поступившее в момент, когда в оче- реди к устройству А находится пять других требований, останется в системе с вероятностью 1/6. Все требования обслуживаются устройством А. (Если в момент поступления требования устройство А занято, оно присоединяется к очереди с дисциплиной обслуживания FIFO). После завершения обслужи- вания устройством А требования типа 1 покидают систему, в то время как требования типа 2 еще должны пройти обслуживание устройством Б. (Если устройство Б занято, требования типа 2 ожидают в очереди с дисциплиной обслуживания FIFO.) Вычислите среднее общее время нахождения требова- ний каждого типа в системе, а также число требований, не присоединивших- ся к очереди. Вычислите также среднюю по времени и максимальную длину каждой очереди и коэффициент занятости обоих устройств. Допустим, что все интервалы между поступлениями и время обслуживания распределены экспоненциально со следующими параметрами: + среднее время между поступлениями (для любого типа требований) со- ставляет 1 мин; + среднее время обслуживания устройством А (независимо от типа требо- вания) составляет 0,8 мин; ♦ среднее время обслуживания устройством Б составляет 1,2 мин. Если изначально в системе нет требований и устройства свободны, прогоны модели должны выполняться, пока 1000 требований (любого типа) не поки- нет систему. Используйте поток 1 для определения типа требования, поток 2 — для определения, присоединится ли требование к очереди, поток 3 — что- бы задать интервалы времени между поступлениями, поток 4 — чтобы задать время обслуживания устройством А (для обоих типов требований) и поток 5 — время обслуживания устройством Б. 2.28. Устаревший компьютер работает в мультипротраммном режиме обработки пакетов, то есть одновременно компьютер начинает обработку нескольких (вплоть до установленного максимума k = 4) заданий, но не может начать об- работку новых заданий, пока не будет выполнен этот пакет. В пакете каждое задание имеет собственное время выполнения и покидает ЦП по его истече- нии. В системе существует три класса приоритетов: высший приоритет име- ют задания типа 1, средний — задания типа 2, низший — задания типа 3. Когда ЦП завершает выполнение последнего задания в пакете, он сначала обраща- ется к заданиям из очереди класса 1 и берет на выполнение как можно больше заданий, вплоть до указанного максимума k. Если в очереди класса 1 было меньше k заданий, ЦП принимает как можно больше заданий из очереди класса 2, чтобы сумма заданий класса 1 и класса 2 составила максимальный размер пакета k. Если в пакете еще остается место, ЦП переходит к очереди класса 3. Если же общее число заданий во всех очередях меньше k, ЦП соби- рает их все и начинает обработку такого частично заполненного пакета. Про- цессор не может начать обработку любых поступающих заданий, пока не за- вершит выполнение всех заданий в текущем пакете. Если в очередях вообще
236 Глава 2. Моделирование сложных систем нет заданий, ЦП переходит в состояние незанятости, и при поступлении сле- дующего задания начинает его обработку в пакете размером 1. Обратите вни- мание, что когда начинается обработка, в одном пакете могут быть задания различных классов. В рамках очереди данного класса задания могут обслуживаться либо в поряд- ке FIFO, либо SJF (Shortest Job First — самое короткое задание обрабатывает- ся первым). Программа моделирования должна быть написана так, чтобы любая из дисциплин обслуживания обрабатывалась с помощью изменения только одного входного параметра. (Итак, когда поступает задание, генери- руется установленное время его обслуживания, сохраняемое вместе со време- нем поступления задания в очередь. Для дисциплины обслуживания FIFO это не является такой уж необходимостью, однако упрощает программирова- ние вообще.) У становленное время обслуживания задания класса i равномер- но распределено между константами a(i) и b(i). Для каждого класса заданий действует отдельный процесс поступления, то есть интервалы времени меж- ду поступлениями двух последовательных заданий класса i экспоненциально распределены со средним значением r(i). Таким образом, в любой момент мо- делирования должно быть задано три отдельных события поступления зада- ний — по одному для каждого класса. Если задание поступает, когда ЦП за- нят, то оно присоединяется к очереди своего класса в месте, определяемом дисциплиной обслуживания (FIFO или SJF). Обслуживание задания, посту- пившего, когда ЦП свободен, начинается незамедлительно, при этом пакет имеет размер 1. Для заданий используются следующие параметры, мин. 1 К») a(t) 6(i) 1 0,2 0,05 0,11 2 1,6 0,94 1,83 3 5,4 4,00 8,00 В исходном состоянии в системе нет заданий и ЦП свободен. Выполняется моделирование работы системы в течение 720 мин. Для каждой очереди вы- числите среднюю, минимальную и максимальную задержки, а также сред- нюю по времени и максимальную длину. Вычислите также коэффициент ис- пользования ЦП, определяемый в этом случае как часть времени, когда ЦП занят, независимо от числа обрабатываемых заданий. Наконец, вычислите среднее по времени число заданий, выполняемых ЦП (при этом считается, что выполняется 0 заданий, когда процессор свободен). Используйте потоки 1,2 и 3, для того чтобы задать интервалы времени между поступлением зада- ний класса 1, 2 и 3 соответственно и потоки 4, 5 и 6 — для соответствующих установленных значений времени обслуживания. Предположим, что благо- даря модернизации оборудования размер пакета k можно увеличить до 6. Оправдает ли себя такое увеличение? 2.29. Рассмотрим систему массового обслуживания с заданным числом устройств обслуживания п = 5, действующих параллельно и использующих одну общую очередь. Интервалы времени между поступлениями требований экспоненци-
Задачи 237 ально распределены со средним значением 5 (все интервалы времени в этой задаче измеряются в минутах). Требование, поступившее, когда в системе есть свободное устройство, немедленно поступает на обслуживание, выбирая крайнее левое устройство, если таковых устройств несколько. Требование, поступившее, когда все устройства заняты, становится в очередь. Когда тре- бование (первый раз) попадает на обслуживание, время его обслуживания равномерно распределено между а “ 2 и b = 2,8. Но по завершении первого обслуживания может оказаться, что требование не удовлетворено (вероят- ность возникновения такой ситуации/? - 0,2). Если обслуживание было удов- летворительным, требование покидает систему, в противном случае обслу- живание будет продолжаться. Удовлетворено ли требование обслуживанием, следует определять по его завершении. Если требование не удовлетворено за- вершившимся обслуживанием и в очереди больше нет других требований, начинается повторное обслуживание этого требования на том же устройстве. Если же по завершении неудовлетворительного обслуживания в очереди еще имеются требования, неудовлетворенное требование должно присоединиться к очереди (при этом возможны два нижеописанных варианта развития ситуа- ции), а освободившееся устройство приступает к обслуживанию следующего требования из очереди. С каждым последующим поступлением требования на обслуживание время его обслуживания и вероятность неудовлетворен- ности обслуживанием уменьшаются. В частности, следующее время обслу- живания требования, которое уже i раз обслуживалось неудовлетворительно, будет равномерно распределено между a/(i + 1) и b/(i + 1), а вероятность то- го, что оно будет не удовлетворено обслуживанием, равна p/(i + 1). Теорети- чески ограничение на количество обслуживании одного требования отсутст- вует: требование обслуживается до тех пор, пока не будет удовлетворено. Существует два правила обслуживания неудовлетворенного требования, ко- гда в очереди ожидают другие требования. Программа должна быть написана таким образом, чтобы, повторно задавая отдельный входной параметр, мы могли заменить правило 1 правилом 2: ♦ Правило 1: требование, неудовлетворенное только что завершившимся об- служиванием, становится в конец очереди. ♦ Правило 2: требование, неудовлетворенное только что завершившимся об- служиванием, становится в очередь так, чтобы следующее, которое перей- дет из начала очереди на обслуживание, имело наибольшее число прохо- ждений обслуживания; используется принцип FIFO в случае разрешения связей. Данное правило является справедливым и эффективным с точки зрения производительности, так как требованиям, у которых было нес- колько случаев неудовлетворительного обслуживания, скорее всего, по- требуется кратчайшее время обслуживания и они, вероятно, будут удов- летворены качеством обслуживания. В исходном состоянии в системе нет требований и устройства являются свободными. Моделирование должно выполняться в течение 480 мин. Вы- числите среднее и максимальное общее время в системе (включая задержки
238 Глава 2. Моделирование сложных систем в очереди и время обслуживания требования) и число удовлетворенных об- служиванием требований, покинувших систему в процессе моделирования. Кроме того, вычислите среднюю и максимальную длину очереди, среднее по времени и максимальное число занятых устройств обслуживания. Исполь- зуйте поток 1 для интервалов времени между поступлениями, поток 2 — для времени обслуживания, поток 3 — чтобы определять, было ли обслуживание удовлетворительным. 2.30. Кафе студенческого центра в университете стремится улучшить качество об- служивания. Особенно большой наплыв клиентов наблюдается в обеденное время, с 11.30 до 13.00, когда они прибывают группами по 1,2,3 и 4 чел., с со- ответствующими вероятностями 0,5; 0,3; 0,1 и 0,1. Интервалы времени между прибытиями групп распределены экспоненциально со средним значением 30 с. Изначально в системе клиенты отсутствуют. Прогон модели должен соответ- ствовать 90 мин работы системы. Каждый клиент, не важно, прибыл он сам по себе или в группе, выбирает один из трех маршрутов по кафетерию: ♦ пункт выдачи горячих блюд, пункт выдачи напитков, касса; ♦ пункт выдачи холодных закусок, пункт выдачи напитков, касса; ♦ пункт выдачи только напитков, касса. Вероятности выбора таких маршрутов равны 0,80; 0,15 и 0,05 соответственно (рис. 2.21). На выдаче горячих блюд и холодных закусок клиентов обслужива- ют по одному (хотя там могут присутствовать один или два работника, о чем речь пойдет дальше). В пункте выдачи напитков организовано самообслужива- ние; допустим, что здесь никогда не бывает очереди, то есть можно считать, что выдачей напитков занимается бесконечное множество устройств. В системе может присутствовать две или три кассы (см. дальше), к каждой из которых выстраивается своя очередь; переход клиентов из одной очереди в другую невозможен. Клиенты, желающие рассчитаться, просто присоединя- ются к самой короткой очереди. Все очереди в системе имеют дисциплину об- служивания FIFO. На рис. 2.21 ВО — время обслуживания клиента на выдаче, НВО — накоп- ляемое (будущее) время оплаты, которое зависит от числа посещений пунк- тов выдачи, a -U(a, b) обозначает, что соответствующая величина равномер- но распределена между а и Ь, выраженными в секундах. Например, клиент, выбравший первый маршрут, сначала подходит к пункту выдачи горячих блюд, при необходимости становится в очередь, проходит обслуживание, вре- мя которого равномерно распределено между 50 и 120 с, для него «накапли- вается» часть (будущего) времени оплаты, которое равномерно распределено между 20 и 40 с. После этого данный клиент тратит время, равномерно рас- пределенное между 5 и 20 с, на получение напитка и накапливает дополните- льную часть (будущего) времени оплаты, равномерно распределенную меж- ду 5 и 10 с. Таким образом, время обслуживания этого клиента у кассы будет представлено суммой случайных величин U(20, 40) и U(5, 10), которые отражают время посещения клиентом пункта выдачи горячих блюд и пункта выдачи напитков.
Задачи 239 ВО - U(50,120) НВО - U(20,40) ВО - U(60,180) НВО - U(5,15) ВО - U(5,20) НВО - U(5,10) Рис. 2.21. Схема обслуживания в кафе: ВО — время обслуживания; НВО — накопляемое время оплаты Определите следующие оценки критериев работы системы: ♦ среднюю и максимальную задержку в очереди к пунктам выдачи горячих блюд, холодных закусок и кассе (любой); ♦ среднее по времени и максимальное число клиентов в очереди к пунктам выдачи горячих блюд и холодных закусок (отдельно), а также среднее по времени и максимальное общее число клиентов в очередях ко всем кассам; ♦ среднюю и максимальную общую задержку во всех очередях для каждого из трех типов клиентов (отдельно); ♦ суммарную среднюю общую задержку для всех клиентов, которая опре- деляется весовыми коэффициентами отдельных средних общих задержек по соответствующим вероятностям их возникновения; ♦ среднее по времени и максимальное общее число клиентов во всей систе- ме (для уведомления начальника пожарной охраны). Возникает несколько вопросов относительно работы системы. По соображени- ям безопасности в столовой необходимо наличие не менее двух и не более трех
240 Глава 2. Моделирование сложных систем касс. Кроме того, на выдаче горячих блюд и холодных закусок должно работать по крайней мере по одному человеку. Следовательно, минимальное число работ- ников равно четырем. Выполните прогон такой .«базовой ситуации» для модели. Рассмотрите работу системы с дополнительными работниками: а) пять работников, дополнительный работник задействован в следующих местах: ♦ как третий кассир; ♦ как помощник при выдаче горячих блюд, при этом клиентов по-преж- нему обслуживают по одному, однако время обслуживания сокращает- ся вдвое и равномерно распределено между 25 и 60 с; ♦ как помощник при выдаче холодных закусок, при этом клиентов по- прежнему обслуживают по одному, но время обслуживания равномер- но распределено между 30 и 90 с; б) шесть работников, которые задействованы следующим образом: ♦ два кассира, по два работника на выдаче горячих блюд и холодных за- кусок; ♦ три кассира, два работника на выдаче горячих блюд и один на выдаче холодных закусок; ♦ три кассира, один работник на выдаче горячих блюд и два на выдаче холодных закусок; в) семь работников: три кассира и по два работника на выдаче горячих блюд и холодных закусок. Выполните прогоны всех семи вариантов модели и дайте свои рекомендации относительно наилучшего распределения работников для каждой из них. Во всех случаях используйте поток 1 для интервалов времени между прибытия- ми групп, поток 2 — для определения размеров групп, поток 3 — для определе- ния маршрутов клиентов, потоки 4,5 и 6 — для времени обслуживания на вы- даче соответственно горячих блюд, холодных закусок и напитков, потоки 7,8 и 9 - для накопления времени оплаты на соответствующих местах. 2.31. Компания Consolidated Corkscrews (СС) является международным произво- дителем точных измерителей из углеродистой стали, предназначенных для работы в труднодоступных местах. Каждый пробник изготавливается на то- карном станке. Чтобы удовлетворить растущий спрос на данную продукцию, компания СС планирует создать новый завод с шестью станками. Однако она не знает, как лучше построить такой завод и оборудовать отдел технического обслуживания. У каждого станка есть свой оператор, который отвечает также за ремонт станка, если тот становится неисправным. Данные, касающиеся на- дежности работы станков указывают на то, что время исправной работы стан- ка распределено экспоненциально со средним значением 75 мин. Когда ста- нок становится неисправным, оператор немедленно обращается на склад, чтобы получить комплект инструментов, необходимых для ремонта. На заво- де имеется ограниченное число т комплектов инструментов, поэтому в нуж-
Задачи 241 ный момент их там может не оказаться. При отсутствии на складе комплек- тов инструментов механик, обратившийся за ними, становится в очередь по принципу FIFO. Когда освобождается комплект инструментов, он помещает- ся на конвейерную ленту и прибывает через мин к станку i; время t,- зависит от номера станка i, для которого запрошен комплект инструментов. Если комплект инструментов доступен, он незамедлительно помещается на кон- вейерную ленту и прибывает через t, мин к станку i; в данном случае задержка оператора в очереди равна 0. После того как оператор неисправного станка получает комплект инструментов, он производит ремонт в течение времени, представленного случайной величиной с распределением Эрланга 3-го по- рядка и средним значением 15 мин. После окончания ремонта станок вновь начинает работу, а комплект инструментов отправляется на склад, куда он прибывает через t, мин, если отправлен со станка i. Представим себе, что из- начально все станки работают, они только что отремонтированы и все т ком- плектов инструментов находятся на складе. Компании СС необходимо полу- чить следующие данные о 24-часовом рабочем дне проектируемого завода: ♦ доля времени, когда все шесть станков неисправны; * среднее по времени число неисправных станков; ♦ среднее по времени число неиспользуемых комплектов инструментов, на- ходящихся на складе; * средняя задержка в очереди операторов, которым требуется комплект ин- струментов. Нужно обратить внимание на два основных вопроса. А. Схема расположения станков на заводе. Рассматривается два варианта. * Линейная схема: станки расположены по прямой линии, на левом кон- це которой находится склад инструментов (рис. 2. 22); одна конвей- ерная лента может обслуживать все станки. В рассматриваемом здесь случае £, - 2i мин, для i - 1, 2,..., 6. * Круговая схема: станки размещены вокруг склада инструментов, к каж- дому станку идет своя конвейерная лента (рис. 2.23), в этом случае - 3 для всех станков L Строительство завода с такой схемой расположения станков обойдется дороже, но позволит сократить время подачи ком- плектов инструментов к станкам. Б. Требуемое число комплектов инструментов. Поскольку инструменты сто- ят дорого, компания приобретает лишь нужное число комплектов. Склад инструментов Рис. 2.22. Линейная схема расположения станков
242 Глава 2. Моделирование сложных систем Рис. 2.23. Круговая схема расположения станков Выполните необходимые прогоны имитационной модели завода и дайте свои рекомендации для компании СС по вопросам А и Б. Используйте поток 1 для периода исправной работы станков и поток 2 — для времени ремонта. 2.32. Двигатели реактивного самолета периодически должны подвергаться осмот- ру и в случае необходимости — ремонту. В большом аэропорту станции тех- нического обслуживания работают с семью различными типами реактивных самолетов, число двигателей для которых и другие данные приведены ниже в таблице. Тип самолета (i) Число двигателей «(») A(i) B(i) р(0 КО КО 1 4 8,1 0,7 2,1 0,30 2,1 2,1 2 3 2,9 0,9 1,8 0,26 1,8 1,7 3 2 3,6 0,8 1,6 0,18 1,6 1,0 4* 4 8,4 1,9 2,8 0,12 3,1 3,9 5 4 10,9 0,7 2,2 0,36 2,2 1,4 6 2 6,7 0,9 1,7 0,14 1,7 1,1 7* 3 3,0 1,6 2,0 0,21 2,8 3,7 * Широкофюзеляжный. Интервалы времени между последовательными прибытиями самолетов типа i (где i ~ 1,2,..., 7) распределены экспоненциально со средним значением a(i) (значения времени в таблице указаны в днях). Всего в аэропорту п парал- лельных станций обслуживания; каждая из них последовательно выполняет осмотр и ремонт всех двигателей самолета, но в определенный момент может работать только с одним двигателем. Так, у самолета типа 2 три двигателя, поэтому, когда он поступает на обслуживание, каждый двигатель должен пройти полный осмотр и ремонт (о чем будет сказано дальше), прежде чем начнется обслуживание следующего двигателя. Перед тем как самолет поки- нет станцию, должны быть проверены и отремонтированы (в случае необхо- димости) все три его двигателя. Каждая станция техобслуживания может ра- ботать с любым типом самолетов. Если самолет прибывает и есть свободная станция, он поступает на обслуживание немедленно, а если самолет, прибы- вает, когда все станции заняты, его необходимо поместить в конец очереди.
Задачи 243 Два из семи типов самолетов классифицируются как широкофюзеляжные, тогда как пять остальных считаются обычными. Нас интересуют две дисцип- лины обслуживания: ♦ простая дисциплина FIFO, при которой все типы самолетов формируют одну очередь; + дисциплина без прерывания обслуживания при поступлении широкофю- зеляжных самолетов, имеющих более высокий приоритет, а в рамках клас- са (широкофюзеляжные или обычные самолеты) действует порядок FIFO. Для каждого двигателя самолета выполняется следующий процесс обслужи- вания (i обозначает тип самолета). ♦ Вначале самолет проходит техосмотр, требующий преиода времени, рав- номерно распределенного между A(i) и B(i). ♦ Далее выясняется, нуждается ли двигатель в ремонте; вероятность необ- ходимости ремонта равна p(i). Если ремонт не требуется, начинается ос- мотр следующего двигателя; если же этот двигатель был последним в са- молете, самолет покидает станцию. ♦ Если двигателю необходим ремонт, выполняются соответствующие рабо- ты. Время ремонта представлено случайной величиной с распределением Эрланга 2-го порядка со средним значением г(г). ♦ После ремонта выполняется еще одна проверка, для которой нужен пери- од времени, равномерно распределенный между A(i)/2 и B(i)/2 (то есть продолжительность ремонта будет вдвое меньше, нежели продолжитель- ность первоначального осмотра, поскольку демонтаж агрегатов двигателя уже выполнен). Вероятность того, что для двигателя не потребуется даль- нейшего ремонта, равна p(i)/2. ♦ Работа с двигателем завершается при успешном первоначальном ремонте. Однако, если двигатель все еще не может пройти техосмотр, требуется дальнейший ремонт, продолжительность которого представлена случай- ной величиной с распределением Эрланга 2-го порядка со средним зна- чением r(i)/2. После этого двигатель снова проходит техосмотр, для чего требуется период времени, равномерно распределенный между А(г)/2 и B(i)/2. Вероятность того, что техосмотр не будет пройден, равна p(i)/2. Если двигателю снова нужен ремонт, его продолжительность будет пред- ставлена величиной с распределением Эрланга 2-го порядка со средним значением г(г)/2. Процесс длится до тех пор, пока двигатель не пройдет техосмотр. Среднее время ремонта и в дальнейшем имеет среднее зна- чение r(i)/2, вероятность необходимости дальнейшего ремонта — p(t)/2, а время осмотра — значение между A(i)/2 и B(i)/2. Каждый полный день простоя самолета (в очереди или на обслуживании) ве- дет к издержкам c(i) (измеряемым десятками тысяч долларов). Требуется изучить, каким образом общие (суммированные Для всех типов самолетов) средние дневные издержки, вызванные простоем, зависят от числа станций техобслуживания п. Изначально в системе нет самолетов, и станции свобод- ны. Выполните моделирование для 365 сут (полных). Определите среднюю
244 Глава 2. Моделирование сложных систем задержку в очереди для каждого типа самолетов и общую среднюю задержку в очереди для всех типов самолетов, среднее по времени число самолетов в очереди, среднее по времени число простаивающих самолетов для каждого типа отдельно и общие средние ежедневные издержки, вызванные простоем, суммированные для всех типов самолетов. Опробуйте различные значения я, чтобы понять поведение системы. Дайте свои рекомендации относительно оптимального с точки зрения рентабельности системы значения я, а также названных выше дисциплин обслуживания. Используйте потоки с 1-го по 7-й для интервалов времени между прибытиями самолетов типа 1-7 соответст- венно, потоки с 8-го по 14-й - для продолжительности их осмотра (первона- чального или последующего), потоки с 15-го по 21-й — чтобы определить, нуж- дается ли двигатель в дополнительном ремонте, и потоки с 22-го по 28-й - для продолжительности ремонта (первоначального или последующего). Как альтернативу приведенной выше схеме обслуживания рассмотрите от- дельное обслуживание широкофюзеляжных и обычных самолетов. Для этого выберите я2 из я станций и все широкофюзеляжные самолеты .«отправляйте» туда на обслуживание (одна очередь широкофюзеляжных самолетов ведет ко всем я2 станциям), а оставшиеся станции щ “ я - я2 будут обслуживать обыч- ные самолеты (рис. 2.24). Будет ли такая схема обслуживания более выгод- ной и почему? Используйте прежние параметры и распределение потоков. (nt+na-n) Рис. 2.24. Альтернативная схема обслуживания самолетов 2.33. Напишите функцию del ete на языке С, чтобы удалить (логически) первую запись из списка 11 st со значением val ue (представление целого числа в виде значения типа fl oat, например 5 в виде 5,0) атрибута attr 1 bute. Поместите ат- рибуты удаленной записи в массив transfer. Чтобы удалить нужную запись, должен быть выполнен оператор вида deleted 1st. value, attribute). Если возможна ошибка (скажем, в списке нет соответствующей записи), возвра- щается значение 0; в противном случае — 1. Обновите статистику для списка list, вызвав функцию timest (см. код функции remove в приложении 2А).
Задачи 245 2.34. Напишите функцию Insert на языке С, чтобы добавить новую запись собы- тия в список событий, используя алгоритм среднего указателя, рассмотрен- ный в разделе 2.8. Если две записи имеют одно и то же время возникновения событий, предпочтение отдается типу события с меньшим номером типа. 2.35. Для модели банка из раздела 2.6 предположим, что, прождав некоторое время в очереди, клиент может покинуть банк, не пройдя обслуживания. Такая си- туация называется бегством. Допустим, что период времени, который посе- титель проведет в очереди, прежде чем придет к мысли о возможности бегст- ва, равномерно распределен между 5 и 10 мин. Если это время пройдет, пока клиент находится в очереди, вероятность его ухода будет следующей. Место в очереди по истечении времени 1 2 3 >4 Вероятность бегства 0,00 0,25 0,50 1,00 Используя функцию del ete из задачи 2.33, выполните прогон имитационной модели с пятью кассами и оцените (вдобавок к прежним показателям) ожи- даемое число клиентов, которые предпочтут бегство, и ожидаемые задержки в очереди данных клиентов. Используйте прежнее распределение потоков, а также поток 3 — для времени ожидания клиента в очереди до того, как он начнет рассматривать возможность бегства, и поток 4 — чтобы определить, решится ли клиент на бегство по истечении этого времени. 2.36. Пятиэтажное офисное здание обслуживает один лифт. Интервалы времени между прибытием людей на первый этаж представлены независимыми экс- поненциально распределенными величинами со средним значением, равным 1 мин. Для каждого из верхних этажей вероятность того, что человек подни- мется именно сюда, равна 0,25. Чтобы переместиться на один этаж вверх или вниз, лифту нужно 15 с. Допустим, лифту не требуется времени на то, чтобы пассажиры вошли в него и вышли из него на каком-либо этаже. На опреде- ленном этаже человек будет оставаться в течение времени, которое равно- мерно распределено между 15 и 120 мин. Покинув этаж i (i = 2,3,4, 5), чело- век спускается на этаж 1 с вероятностью 0,7 или перемещается на каждый из трех других этажей с вероятностью 0,1. Лифт вмещает 6 чел. Он отправляется с этажа 1. Если все люди, ожидающие на определенном этаже, не помещаются в лифте, оставшиеся образуют очередь. Человек, спустившийся на этаж 1, не- медленно покидает здание. К лифту применяется такая логика управления. ♦ Когда лифт поднимается вверх, он будет продолжать движение в этом на- правлении, если следующий пассажир хочет попасть на верхний этаж или если на верхних этажах человек ожидает прибытия лифта. ♦ Когда лифт опускается вниз, он будет продолжать движение в этом на- правлении, если в нем есть хотя бы один пассажир, которому нужно по- пасть вниз, или если на нижних этажах кто-то ожидает прибытия лифта. ♦ Если лифт движется вверх (или вниз) мимо этажа i (i - 2, 3, 4) и пойдет вверх (вниз), он не возьмет пассажира, который ожидает на этом этаже и стремится попасть вниз (вверх).
246 Глава 2. Моделирование сложных систем ♦ Когда лифт свободен, он находится на этаже 1. ♦ На каждом этаже лифт определяет, на какой этаж поедет дальше. Между этажами лифт не меняет направление. Используйте следующее распределение потоков случайных чисел: ♦ 1 — интервалы времени между прибытиями людей в здание; ♦ 2 — определение следующего этажа (генерируется по прибытии на исход- ный этаж); ♦ 3 — длительность пребывания человека на определенном этаже (генери- руется по прибытии на этот этаж). Выполните моделирование работы системы в течение 20 ч и соберите сле- дующие статистические данные: а) среднюю задержку в очереди в каждом направлении (если их два) для каждого этажа; б) среднее значение индивидуальных задержек всех пассажиров во всех оче- редях на всех этажах; в) долю времени, когда лифт перевозит пассажиров, перемещается без пас- сажиров и находится в состоянии бездействия на этаже 1; г) среднее и максимальное число пассажиров в лифте; д) часть пассажиров, которые не могут сесть в лифт из-за его переполнен- ности, для каждого этажа. Выполните еще один прогон имитационной модели, сделав на этот раз базой лифта этаж 3. В каком случае наблюдается наименьшая средняя задержка в очереди, определенная в пункте б? 2.37. Интервалы между прибытиями составов с углем на разгрузочную станцию представлены независимыми экспоненциально распределенными величина- ми со средним значением 10 ч. Если состав прибывает в момент, когда систе- ма находится в состоянии незанятости, разгрузка начинается незамедлитель- но. Время разгрузки представлено независимыми величинами, равномерно распределенными между 3,5 и 4,5 ч. Если состав прибывает, когда система за- нята, он присоединяется к очереди с дисциплиной FIFO. Моделирование усложняется здесь так называемыми перерывами в разгруз- ке. В частности, бригада грузчиков может работать только в течение 12 ч, а при ее отсутствии разгрузка вестись не может. Когда состав прибывает на станцию, оставшееся время (из 12 ч) работы бригады представлено независи- мой величиной, равномерно распределенной между 6 и 11 ч. По истечении 12 ч работы бригада незамедлительно покидает поезд, и вызывается сменная бригада. Время между вызовом сменной бригады и ее прибытием представле- но независимой величиной, равномерно распределенной между 2,5 и 3,5 ч. В момент ухода первой бригады разгрузка состава прекращается до тех пор, пока не прибудет сменная бригада. Таким образом, разгрузочное оборудова- ние может находиться в состоянии незанятости, когда в очереди еще есть со- став (или составы) с углем.
Задачи 247 Выполните моделирование 720 ч (30 дней) работы системы и получите сле- дующие статистические данные: а) среднее и максимальное время пребывания состава в системе; б) часть времени, когда разгрузочное оборудование занято, свободно и ис- пытывает перерыв в разгрузке; в) среднее и максимальное число составов в очереди; г) часть составов, которые испытывают перерыв в разгрузке 0,1 и 2 раза. Обратите внимание, если состав находится в очереди, когда работа бригады завершается, необходимо получить доступ к записи этого состава (состав мо- жет находиться в любом месте очереди). Используйте функцию delete на языке С из задачи 2.33. 2.38. Рассмотрим систему проката автомобилей, показанную на рис. 2.25 (расстоя- ния приводятся в милях). Время между прибытиями клиентов к месту i (i “ - 1, 2, 3) представлено независимыми экспоненциально распределенными величинами, интенсивность прибытия составляет 14,10 и 24 чел./ч соответ- ственно. В каждом месте имеется очередь с дисциплиной FIFO, способная вмещать неограниченное количество человек. В системе действует один ав- тобус, в нем помещается 20 чел., его скорость 30 миль/ч. Рис. 2.25. Система проката автомобилей Изначально автобус находится у места 3 (прокат автомобилей), которое он покидает, двигаясь против часовой стрелки. Все те, кто прибыл на терминал аэропорта, имеют желание попасть к фирме по прокату автомобилей, а при- бывшие в нее хотят попасть на терминалы 1 и 2 с соответствующими вероят- ностями 0,583 и 0,417. Когда автобус прибывает к определенному месту, дей- ствуют такие правила. ♦ Вначале люди покидают автобус в порядке FIFO. Время, которое необхо- димо одному человеку, чтобы покинуть автобус, равномерно распределе- но между 16 и 24 с.
248 Глава 2. Моделирование сложных систем + Затем люди заходят в автобус. Время, необходимое для этого одному че- ловеку, равномерно распределено между 15 и 25 с. ♦ Автобус проводит у каждого места по меньшей мере 5 мин. Если по исте- чении этого времени процесс выгрузки и загрузки пассажиров прекраща- ется, автобус немедленно уезжает. Выполните моделирование 80 ч работы системы и получите такие статисти- ческие данные: а) среднее и максимальное число людей в каждой очереди; б) среднюю и максимальную задержку в каждой очереди; в) среднее и максимальное число пассажиров в автобусе; г) среднее максимальное и минимальное время, которое автобус стоит у каж- дого места; д) среднее максимальное и минимальное время, необходимое автобусу, что- бы сделать круг (начиная отправлением от здания фирмы по прокату ав- томобилей и заканчивая следующим таким отправлением); е) среднее максимальное и минимальное время пребывания одного человека в системе у места, к которому он прибыл. Используйте следующее распределение потоков случайных чисел: i интервалы времени между прибытием на место i (i - 1, 2, 3); 4 время, необходимое для того, чтобы покинуть автобус; 5 время, необходимое для посадки в автобус; 6 определение пункта назначения для прибывающих в помещение фир- мы по прокату автомобилей.
Глава 3 Программное обеспечение имитационного моделирования 4- Классификация программных средств имитационного моделирования 4- Необходимые свойства программных средств имитационного моделирования 4- Универсальные пакеты имитационного моделирования 4- Объектно-ориентированное моделирование 4- Предметно-ориентированные пакеты имитационного моделирования 3.1. Введение При изучении примеров моделирования систем в главах 1 и 2 читатель, вероятно, обратил внимание на некоторые функциональные возможности, необходимые для программирования большинства дискретно-событийных моделей. К таким воз- можностям относятся: ♦ генерирование случайных чисел, то есть значений с распределением веро- ятностей U(0, 1); ♦ генерирование случайных величин с заданным распределением вероятнос- тей (например, экспоненциального распределения); ♦ продвижение модельного времени; ♦ определение следующего события по списку событий и передача управле- ния соответствующему блоку кода; ♦ добавление записей в список или удаление записей из списка; ♦ сбор выходных статистических данных и создание отчета с результатами; ♦ определение сбойных ситуаций. В сущности, именно наличие этих и некоторых других общих функциональных возможностей в моделирующих программах привело к разработке специальных программных пакетов имитационного моделирования. Более того, дальнейшее усовершенствование таких пакетов и простота их применения способствовали росту популярности имитационного моделирования в последние годы. В разделе 3.2 рассмотрены преимущества использования пакетов имитацион- ного моделирования по сравнению с языками программирования С или C++. Раз- дел 3.3 знакомит с классификацией программ имитационного моделирования, а также универсальными и предметно-ориентированными пакетами имитационно- го моделирования. В разделе 3.4 говорится о том, какими возможностями должны
250 Глава 3. Программное обеспечение имитационного моделирования обладать пакеты моделирования. В разделе 3.5 дано краткое описание популяр- ных универсальных пакетов имитационного моделирования Arena и Extend и рас- смотрено моделирование небольшой производственной системы с помощью этих пакетов. В разделе 3.6 речь идет об объектно-ориентированном программном обеспечении имитационного моделирования, а также описаны пакет MODSIMIII и модель небольшой производственной системы, создаваемая в нем. И, наконец, в разделе 3.7 приведены сведения о предметно-ориентированных пакетах имита- ционного моделирования. Публикации, посвященные программному обеспечению имитационного моде- лирования, можно найти в изданиях НЕ Solutions и ORI/MS Today. 3.2. Сравнение пакетов имитационного моделирования и языков программирования Одно из наиболее важных решений, которые приходится принимать разработчи- кам моделей или аналитикам, касается выбора программного обеспечения. Если программное обеспечение недостаточно гибко или с ним сложно работать, то ими- тационное моделирование может дать неправильные результаты или оказаться вообще невыполнимым. Использование пакета имитационного моделирования в сравнении с примене- нием универсального языка программирования дает несколько преимуществ. + Пакеты имитационного моделирования автоматически предоставляют боль- шинство функциональных возможностей, требующихся для создания имита- ционной модели (см. разделы 3.1 и 3.4), что позволяет существенно сократить время, необходимое для программирования, и общую стоимость проекта. + Пакеты имитационного моделирования обеспечивают естественную среду для создания имитационных моделей. Их основные моделирующие конструкции больше подходят для имитационного моделирования, чем соответствующие конструкции в универсальных языках программирования, таких как С. ♦ Имитационные модели, которые созданы с помощью пакетов моделирования, как правило, проще модифицировать и использовать. + Пакеты имитационного моделирования обеспечивают более совершенные меха- низмы обнаружения ошибок, поскольку они выполняют автоматический поиск ошибок многих типов. И так как модель не требует большого числа структур- ных компонентов, уменьшаются шансы совершить какую-либо ошибку. (Но в новых версиях пакетов имитационного моделирования пользователю, веро- ятно, будет трудно искать ошибки, а само программное обеспечение может применяться неправильно, поскольку иногда к нему недостает документации.) Тем не менее некоторые имитационные модели (особенно относящиеся к обо- ронной сфере) по-прежнему создаются с помощью универсальных языков моде- лирования, которые тоже обладают некоторыми преимуществами. ♦ Языки программирования знает большинство разработчиков, чего нельзя ска- зать о пакетах имитационного моделирования.
3.3. Классификация программных средств имитационного моделирования 251 ♦ Скорость выполнения прогона имитационных моделей, написанных на языках С или C++, обычно выше, чем моделей, созданных с помощью пакетов имита- ционного моделирования (это связано с тем, что такие пакеты часто разраба- тываются для самых разнообразных систем посредством одного набора моде- лирующих конструкций, тогда как программа на языке С может быть более удачно написана под конкретную систему). Однако с появлением недорогих быстродействующих персональных компьютеров это преимущество несколь- ко утратило свою актуальность. ♦ При программировании универсальные языки обеспечивают большую гиб- кость, чем пакеты имитационного моделирования. ♦ Стоимость применяемого программного обеспечения обычно ниже (хотя об- щая стоимость проекта не всегда). Таким образом, использование обоих методов имеет свои преимущества, по- этому разработчику моделей следует очень обдуманно подходить к выбору каждо- го из них. Если выбор все же сделан в пользу пакетов имитационного моделиро- вания, критерии и характеристики, которые описываются в разделе 3.4, помогут решить, к какому конкретно пакету лучше обратиться. 3.3. Классификация программных средств имитационного моделирования В этом разделе рассмотрены различные характеристики пакетов имитационного моделирования. 3.3.1. Универсальные и предметно-ориентированные пакеты имитационного моделирования Исторически пакеты имитационного моделирования разделились на два основ- ных типа: языки имитационного моделирования и предметно-ориентированные программы моделирования. Языки имитационного моделирования по своей при- роде универсальны, разработка модели здесь подразумевает написание кода. В це- лом они предоставляют достаточно гибкие возможности моделирования, но часто трудны в использовании. Программы моделирования ориентированы на решение определенной задачи, в них модель разрабатывается с использованием графики, диалоговых окон и раскрывающихся меню. Программы моделирования иногда проще изучать и использовать, но при решении некоторых задач они не метут об- еспечить достаточную гибкость моделирования. В последние годы создатели языков имитационного моделирования попыта- лись сделать программное обеспечение более простым в употреблении. Для этого они использовали графический подход к построению моделей. Теперь типичный сценарий может быть снабжен панелью инструментов с пиктограммами для по- строения модели. Разработчик выбирает пиктограммы с помощью мыши и поме- щает их в рабочую область. Затем он соединяет пиктограммы, чтобы обозначить
252 Глава 3. Программное обеспечение имитационного моделирования именованные потоки в исследуемой системе. Двойным щелчком мышью на пик- тограмме можно вывести диалоговое окно, где уточняются параметры для добав- ляемых пиктограмм. Предположим, пиктограмма представляет устройство обслу- живания в какой-либо системе, в этом случае диалоговое окно позволяет уточнить информацию о числе параллельных устройств обслуживания, распределении вре- мени обслуживания для каждого из них, о том, может ли устройство прийти в не- исправность (если да, то каким образом). В то же время разработчики предметно- ориентированных программ моделирования сделали свои программные средства более гибкими, обеспечив в некоторых местах модели возможность программиро- вать с использованием псевдоязыка. По крайней мере, в одной программе моде- лирования сейчас можно изменять существующие моделирующие конструкции и создавать новые. Все это привело к тому, что отличия между языками имитацион- ного моделирования и программами моделирования стали менее заметными [Bow- den, 1998]. Таким образом, существует два типа пакетов имитационного моделирования. Универсальные пакеты имитационного моделирования предназначены для различ- ных целей, но они могут иметь специальные функции для решения одного кон- кретного вида задач (например, моделирования производственных систем, систем связи или модернизации технологий производства). Предметно-ориентирован- ные пакеты имитационного моделирования служат для решения специальных за- дач, таких как моделирование работы производственных систем, медицинских учреждений, центров выполнения заказов. В разделе 3.7 приведен список пред- метно-ориентированных пакетов имитационного моделирования. 3.3.2. Подходы к моделированию В программах, описанных в главах 1 и 2, использован подход с планированием со- бытий в дискретно-событийном имитационном моделировании. Система модели- руется путем прослеживания характерных событий в модельном времени, для каждого из которых создается ряд программ обработки событий. Эти программы подробно описывают изменения состояний, происходящих при возникновении каждого события. Развитие моделируемой системы во времени осуществляется путем выполнения программ обработки событий в порядке возрастания времени их возникновения. В данном случае основное свойство программы обработки собы- тий заключается в том, что при ее выполнении модельное время не продвигается. В то же время во многих пакетах имитационного моделирования применяется подход с использованием процессов. Процесс — это упорядоченная во времени последовательность взаимосвязан- ных событий, разделенных интервалами времени, отражающая «полный жизнен- ный путь» объекта по мере его продвижения в системе. Схема процесса, соответ- ствующего поступлению объекта в систему и его обслуживанию единственным устройством, показана на рис. 3.1. В системе или имитационной модели может быть несколько различных процессов. Каждому из них соответствует программа, в которой описывается вся «история существования» объекта по мере его переме- щения в данном процессе. Программа процесса обеспечивает продвижение мо- дельного времени и обычно имеет много точек входа.
3.3. Классификация программных средств имитационного моделирования 253 Поступление q объекта в систему I--------X-------- Событие Начало обслуживания объекта ---------х--------- Событие Завершение обслуживания объекта Время ---------X---------------—• Событие Вероятное время Продвижение времени пребывания в очереди обслуживания объекта Рис. 3.1. Схема процесса движения объекта в системе Для того чтобы продемонстрировать сущность подхода с использованием про- цессов, на рис. 3.2 приведена блок-схема прототипа программы, описывающей про- цесс обработки требования в модели системы массового обслуживания с одним устройством обслуживания. (Программа процесса раскрывает полный «жизнен- ный путь» такого объекта, пребывающего в системе, как требование.) В отличие от программы обработки событий в программе процесса может быть несколько точек входа. В данном случае они приходятся на блоки 1,5 и 9. Точка входа в программу в блоке 1 соответствует событию поступления требования, которое является пер- вым событием в списке событий. В блоке 1 запись для поступления следующего требования помещается в список событий. (Следующее требование поступит в мо- мент времени, равный времени поступления текущего требования плюс время ме- жду поступлениями.) Чтобы определить, может ли начаться обслуживание при- бывшего требования, в блоке 2 выполняется проверка, которая должна устано- вить, свободно ли устройство обслуживания. Если устройство занято, требование помещается в конец очереди (блок 3) и вынуждено ждать (блок 4), пока оно не бу- дет выбрано устройством обслуживания в некоторый момент времени в модель- ном будущем. (Такая ситуация называется условным ожиданием.) Затем управле- ние возвращается «синхронизирующей программе», чтобы определить, событие какого требования будет следующим на текущий момент. (Если схема, изобра- женная на рис. 3.2, существует для каждого требования в системе, то далее управ- ление будет передано точке входа блок-схемы, соответствующей ближайшему со- бытию для какого-либо другого требования.) Когда требование (переведенное в состояние ожидания в блоке 4) активизируется в какой-либо момент времени в модельном будущем (то есть когда требование станет первым в очереди, обслу- живание другого требования завершится, а устройство освободится), оно извлека- ется из очереди в блоке 5, а его обслуживание начинается незамедлительно, вслед- ствие чего устройство становится занятым (блок 6). Обслуживание требования, прибывшего, когда устройство свободно, также начинается немедленно (блок 6). В обоих случаях теперь следует перейти в блок 7. В нем определяется время ухода требования, обслуживание которого началось, и в список событий помещается соответствующая запись. Затем требование переводится в состояние ожидания (в блоке 8), пока не будет завершено его обслуживание. (В этом случае речь идет о безусловном ожидании, поскольку время активизации требования известно.) Да- лее управление возвращается в синхронизирующую программу, чтобы опреде- лить, какое требование будет обрабатываться следующим. Когда требование, пере- веденное в состояние ожидания в блоке 8, активизируется для завершения его
254 Глава 3. Программное обеспечение имитационного моделирования обслуживания, в блоке 9 устройство обслуживания переводится в состояние неза- нятости (теперь первое требование в очереди может быть активизировано немед- ленно), после чего это требование исключается из модели в блоке 10. Да 3 4 Рис. 3.2. Прототип программы процесса перемещения требования в модели системы массового обслуживания с одним устройством обслуживания Моделирование с использованием процессов развивается во времени также пу- тем управления событиями в порядке времени их возникновения. В сущности под- ходы с планированием событий и использованием процессов очень похожи (напри-
3.4. Возможности программ имитационного моделирования 255 мер, при обоих подходах применяются часы модельного времени, список событий, синхронизирующая программа и т. д.). Однако подход с использованием процессов в некотором смысле является более естественным, поскольку одна программа про- цесса описывает «полный жизненный путь» соответствующего объекта. 3.3.3. Общие элементы моделирования Пакеты имитационного моделирования, как правило, включают в себя объекты, свойства, ресурсы и очереди как часть модельной структуры (их примеры приве- дены в табл. 3.1). Объект создается, перемещается по какой-либо части моделиру- емой системы, а затем обычно исключается. Объекты отличаются друг от друга свойствами, которые представляют собой блоки информации, хранящиеся вместе с объектом. По мере продвижения объекта в моделируемой системе он запрашива- ет ресурсы. Если ресурсы, запрошенные объектом, являются не доступными, он помещается в очередь. Объекты в определенной очереди могут обслуживаться в порядке FIFO, LIFO или в порядке возрастания или убывания значений како- го-либо атрибута. Таблица 3.1. Объекты, атрибуты, ресурсы и очереди в некоторых типичных приложениях имитационного моделирования Тип системы Объект Атрибуты Ресурсы Очере ди/буфера Производство Деталь Номер детали, срок изготовления Станки, рабочие Очереди или буфера Система связи Сообщение Пункт назначения, длина сообщения Узлы, линии Буфера Аэропорт Самолет Номер рейса, масса Взлетно- посадочные полосы, выходы Очереди Страховое агентство Заявление, иск Имя, номер страхового полиса, сумма страхования Агенты, служащие Очереди 3.4. Возможности программ имитационного моделирования При выборе программных средств имитационного моделирования следует учиты- вать все возможности, предоставляемые ими, которые можно объединить в следу- ющие группы: .♦ основные характеристики; + совместимое оборудование и программное обеспечение; анимация; ♦ средства получения и обработки статистических данных; » услуги, предоставляемые заказчикам и документация; , + отчеты с выходными данными и графиками.
256 Глава 3. Программное обеспечение имитационного моделирования 3.4.1. Основные характеристики Самым важным свойством, которым должен обладать программный продукт ими- тационного моделирования, по нашему мнению, является гибкость при моделиро- вании, то есть возможность моделировать системы с различным уровнем сложнос- ти технологических операций. Учитывая то, что не существует двух полностью идентичных систем, пакет имитационного моделирования, где применяется фик- сированное число моделирующих конструкций и нет возможностей программиро- вания, обязательно окажется неподходящим для некоторых систем, встречающих- ся на практике. В идеале должна существовать возможность моделировать любую систему, используя исключительно конструкции программного пакета и не прибе- гая к программам, написанным на каком-либо языке, например на С. Далее пере- числены некоторые возможности, придающие гибкость программному продукту имитационного моделирования. ♦ Возможность определять и изменять атрибуты объектов и глобальных пере- менных, а также применять как тех, так и других в логике решений (напри- мер, конструкции 1 f...then...el se). ♦ Возможность использовать математические выражения и функции (логариф- мы, возведение в степень и т. п.). Пример 3.1. Иногда требуется сместить распределение вероятностей, например гамма- распределение (см. раздел 6.2.2), на с единиц вправо (так, чтобы теперь оно начиналось со значения с) и применить его для времени выполнения какой-либо задачи (скажем, времени обслуживания). Предположим, обозначением гамма-распределения в опреде- ленном пакете имитационного моделирования является gamma (alpha, beta), где alpha — параметр формы, a beta — параметр масштаба. Если программное обеспечение обладает достаточной гибкостью, в нем должна быть заложена возможность использовать выра- жение с + gamma (alpha, beta) в качестве искомого смещенного времени выполнения за- дачи. К сожалению, в некоторых пакетах имитационного моделирования такая возмож- ность отсутствует. ♦ Возможность создавать новые моделирующие конструкции и изменять уже существующие, а также применять новые и измененные моделирующие кон- струкции в данной и будущих моделях. Следующим важным свойством средств имитационного моделирования явля- ется простота в применении (и изучении), поэтому многие современные пакеты моделирования снабжены графическим интерфейсом пользователя. В такой про- грамме должны быть моделирующие конструктивные элементы (скажем, пикто- граммы или блоки), не слишком «примитивные», но и не слишком «изощренные». В первом случае понадобится очень много конструктивных элементов для моде- лирования даже достаточно простой ситуации; во втором — диалоговое окно каж- дого конструктивного элемента будет содержать чересчур большое число пара- метров, необходимых для обеспечения соответствующей гибкости программы. Управлять такими параметрами можно с помощью вкладок в диалоговых окнах. Для сложных систем может оказаться полезным иерархическое моделирование. Иерархия позволяет сгруппировать несколько конструктивных основных элемен- тов моделирования в новые структурные компоненты более высокого уровня. Эти
3.4. Возможности программ имитационного моделирования 257 новые структурные компоненты затем можно объединить в структурные компо- ненты еще более высокого уровня и т. д. Последние структурные компоненты по- мещают в библиотеку доступных структурных компонентов, и их можно повторно использовать в данной или будущих моделях (см. разделы 3.5.2 и 3.6). Повторное применение частей модели с расширением логических возможностей повышает эффективность моделирования. Иерархия является важной концепцией многих пакетов моделирования. Она также помогает избежать «неразберихи» на экране в графически ориентированных моделях, которые состоят из множества пикто- грамм и блоков. Программное обеспечение должно быть снабжено хорошими средствами от- ладки, такими как интерактивный отладчик. Мощный отладчик позволяет: ♦ отслеживать отдельные объекты по всей модели, чтобы убедиться в пра- вильности их обработки; ♦ проверять состояние модели при каждом возникновении определенного со- бытия (например, при поломке станка); ♦ устанавливать значения определенных атрибутов или переменных, для то- го чтобы заставить объект продвинуться до конца по логическому пути, ко- торый встречается с малой вероятностью. При моделировании некоторых систем очень важна высокая скорость работы модели. Это касается моделей военных систем и моделей, в которых требуется об- рабатывать большое количество объектов (например, модель быстродействующей сети связи). Мы моделировали простую производственную систему с помощью шести различных имитационных пакетов и обнаружили, что одна из моделей ра- ботала в 11 раз быстрее, чем самая медленная. Если имитационная модель будет использоваться кем-нибудь кроме самого разработчика, желательно, чтобы существовала возможность создавать удобный дружественный интерфейс, с помощью которого неспециалист будет легко вво- дить параметры моделирования, например среднее время обслуживания или про- должительность моделирования. Большинство производителей программного обеспечения имитационного мо- делирования предлагают рабочие версии [Banks, 1996] своей продукции, которые, например, позволяют посредством удобного интерфейса изменять данные моде- лирования, но не его логику. Рабочая версия может применяться в решении таких задач: ♦ выполнении нового или существующего сценариев для модели, созданной внутренним или внешним консультантом; ♦ выборе средств и методов реализации для поставки оборудования или для проектирования систем; ♦ обучении. Следует обратить внимание на то, что лицензия на рабочую версию, как прави- ло, стоит гораздо дешевле обычной лицензии. В настоящее время большой интерес вызывает возможность импортировать данные из других приложений или экспортировать данные в другие приложения (например, таблицы Excel или базы данных).
258 Глава 3. Программное обеспечение имитационного моделирования Желательно, чтобы пакет имитационного моделирования мог автоматически моделировать различные сценарии, которые повторяются с изменением какого- либо параметра моделирования (например, числа станков на производственном рабочем месте). Кроме того, должна существовать возможность построения гра- фика для какого-либо рабочего показателя (например, среднего времени пребыва- ния в производственной системе) в виде функции изменяемого параметра (см. раздел 3.4.6). В некоторых случаях при дискретно-событийном моделировании (например, в системах, связанных с литьем стали) могут понадобиться определенные средст- ва, используемые при непрерывном моделировании. Такое моделирование назы- вается комбинированным непрерывно-дискретным (см. раздел 1.8.2). Иногда возникает необходимость ввести в имитационную модель сложный блок программной логики, написанный на каком-либо языке программирования, поэтому желательно, чтобы в пакете имитационного моделирования можно было запускать внешние программы. В пакете имитационного моделирования полезной может оказаться возмож- ность инициализировать систему в состоянии занятости. Так, при моделирова- нии производственной системы бывает потребность инициализировать модель, когда все станки заняты, а все буфера наполовину заполнены, что сокращает вре- мя, необходимое для достижения моделью «установившегося состояния». Еще одна полезная возможность заключается в сохранении состояния модели в конце прогона и использовании сохраненных данных для того, чтобы позднее возобновить моделирование. Наконец, при покупке программных средств имитационного моделирования большое значение имеет их стоимость. На сегодняшний день стоимость различ- ных программных средств имитационного моделирования колеблется от 500 до 50 000 долларов США. Однако есть и другие расходы, на которые следует обра- тить внимание, а именно: затраты на эксплуатацию и обслуживание, затраты на модернизацию и стоимость любого дополнительного оборудования и программ- ного обеспечения, которое может понадобиться (см. раздел 3.4.2). 3.4.2. Оборудование и программное обеспечение При выборе программного средства имитационного моделирования необходимо обращать внимание на то, для какой компьютерной платформы оно предназначе- но. Почти все программные средства работают на персональных компьютерах с системой Windows, некоторые работают на рабочих станциях UNIX и компьюте- рах Apple. Если пакет может работать на разных платформах, тогда он должен обеспечивать совместимость с другими платформами. Кроме того, следует также учесть необходимый объем оперативной памяти. Нужно также помнить о том, ка- кие операционные системы поддерживает пакет. 3.4.3. Анимация и динамическая графика Наличие во многих пакетах встроенных средств анимации — одна из причин роста интереса к имитационному моделированию. При использовании анимации все
3.4. Возможности программ имитационного моделирования 259 ключевые элементы системы представлены на экране пиктограммами, которые динамически изменяют свое положение, цвет и форму по мере развития имитаци- онной модели во времени. Так, в производственной системе пиктограмма, изобра- жающая автопогрузчик, будет менять свое положение при возникновении соотве- тствующих изменений в модели, а пиктограмма, обозначающая станок, может менять цвет при переходе станка из одного состояния в другое (например, из со- стояния незанятости в состояние занятости) в модели. Анимацию обычно используют в таких случаях: ♦ для представления сути имитационной модели (или самого моделирования) руководителю или другим сотрудникам, которые не ознакомлены с техни- ческими подробностями ее работы (или ранее не интересовались ими); ♦ с целью отладки моделирующей компьютерной программы; ♦ если надо показать, что имитационная модель не правильна; ♦ чтобы предложить для системы более совершенный технологический про- цесс (не все можно определить только по численным результатам модели- рования); ♦ в обучении обслуживающего персонала; ♦ при обмене информацией между участниками проекта. Существует два основных типа анимации: совместная и раздельная (также име- нуемая воспроизведением). Совместная анимация осуществляется во время прого- на имитационной модели. Но следует иметь в виду, что обычно при выполнении рабочих прогонов анимация отключается, так как она замедляет их выполнение. При раздельной анимации изменения состояния системы сохраняются в файле на диске и применяются для управления графикой после завершения моделирова- ния. В некоторых программных средствах имитационного моделирования реали- зованы оба типа анимации. К средствам анимации также предъявляются определенные требования. Преж- де всего, необходимо, чтобы программное обеспечение имитационного моделиро- вания использовало анимацию по умолчанию как часть процесса создания модели. Поскольку в первую очередь средства анимации необходимы для визуализации работы системы и обмена информацией, должна существовать возможность соз- дания пиктограмм с высокой разрешающей способностью и сохранения их для по- следующего применения. Кроме того, нужно, чтобы поставляемые программные средства были оснащены библиотекой стандартных пиктограмм и обеспечивали плавное движение пиктограмм. Должен также существовать элемент управления для ускорения или замедления эффектов анимации. Необходима и возможность увеличения или уменьшения масштаба изображения, а также прокрутки изображе- ния для просмотра различных частей системы, если она полностью не помещается на экране. В некоторых программных средствах требуются именованные представ- ления анимации, соответствующие различным частям моделируемой системы и по- зволяющие создавать меню из представлений. Желательно, чтобы для анимации применялась векторная графика, а нерастровая. Первый вид графики обеспечива- ет вращение объектов (скажем, несущего винта вертолета) и сохранение направле- ния движения (например, транспортного средства, осуществляющего поворот).
260 Глава 3. Программное обеспечение имитационного моделирования Некоторые средства имитационного моделирования с совместной анимацией позволяют остановить моделирование «на ходу» при просмотре анимации, внести изменения в параметры моделирования (например, число станков на рабочем мес- те), а затем возобновить моделирование. Однако использование такой возможнос- ти может оказаться опасным для статистических данных, если состояние системы и статистические счетчики не будут переустановлены. Некоторые из пакетов имитационного моделирования обеспечивают объемную (трехмерную) анимацию (точка наблюдения поворачивается вокруг любой из трех осей). Такая анимация имеет большое значение при презентации модели и в си- туациях, когда особенно важно оценить вертикальные габариты. В пакетах с трех- мерной анимацией можно также предоставить зрителю возможность как бы пере- мещаться по системе на определенном объекте. Должна существовать и возможность применения в анимации импортируемых CAD-чертежей и графических объектов Clip Art. Часто может быть полезным вывод на экран динамической графики и стати- ческих данных по мере выполнения моделирования. В качестве динамической гра- фики обычно используются часы, круговая шкала, индикатор уровня (отображаю- щий, например, очередь) и динамически обновляемые гистограммы и графики временной зависимости (см. раздел 3.4.6). Как пример графика временной зависи- мости можно привести график числа заявок в некоторой очереди, обновляемый по мере продвижения модельного времени. 3.4.4. Статистические возможности Если имитационная модель не снабжена надежными средствами статистического анализа, невозможно будет получать достоверные данные о работе моделируемой системы. Прежде всего в программном средстве необходим хороший генератор случайных чисел (см. главу 7), то есть механизм для генерирования независимых значений, равномерно распределенных в интервале [0, 1]. Следует иметь в виду, что не все генераторы случайных чисел, которыми снабжены компьютеры или программное обеспечение, обладают удовлетворительными статистическими ха- рактеристиками. Генератор должен поддерживать по меньшей мере 100 потоков (а желательно и больше), которые можно назначать для различных случайных факторов, имею- щихся в имитационной модели, в частности для интервалов времени между по- ступлениями или времени обслуживания. Это позволит эффективно сравнивать проекты разных систем с помощью полученной статистики (см. раздел 11.2). В тех случаях, когда для разных потоков заданы начальные значения, которые используются по умолчанию, программное обеспечение имитационного модели1- рования должно давать одинаковые результаты при многократном моделирова- нии. Нежелательной является такая ситуация, когда начальные значения зависят от внутренних часов компьютера. У пользователя всегда должна быть возмож- ность, если есть такая необходимость, задавать начальные значения для всех пото- ков самостоятельно.
3.4. Возможности программ имитационного моделирования 261 В целом каждый фактор случайности системы должен быть представлен в ими- тационной модели распределением вероятностей (см. главу 6), а не только сред- ним значением. Если можно подобрать стандартное теоретическое распределение, позволяющее оптимально представить некоторый фактор случайности, то такое распределение следует использовать в модели системы. Программное обеспече- ние должно поддерживать следующие непрерывные распределения: экспоненци- альное, Вейбулла, логарифмически нормальное, нормальное, равномерное и треу- гольное, а также гамма- и бета-распределение. Треугольное и бета-распределение, как правило, используются в качестве модели фактора случайности, когда не дос- тупны никакие системные данные. Надо учитывать также, что очень немногие входные случайные переменные при моделировании реальных систем имеют нор- мальное распределение. Кроме непрерывных должны быть доступны еще и дис- кретные распределения: биномиальное, геометрическое и отрицательное биноми- альное, а также распределение Пуассона и дискретно-равномерное. Если нет возможности найти теоретическое распределение, удачно представ- ляющее некоторый фактор случайности, следует воспользоваться эмпирическим (или определенным пользователем) распределением, которое основывается на по- лученных данных. При этом случайные числа получают путем выборки значений случайной величины с функцией распределения, созданной по наблюдаемым сис- темным данным. Программа должна содержать команду, позволяющую выполнять независимые повторения (репликации) или прогоны имитационной модели. Это означает, что ♦ для каждого из прогонов используются отдельные наборы разных случай- ных чисел; ♦ для каждого прогона применяются одни и те же исходные условия; ♦ при каждом прогоне статистические счетчики переводятся в исходное со- стояние. Следует учитывать, что результаты, полученные при различных прогонах ими- тационной модели, независимы и в то же время являются вероятностными копия- ми друг друга. Это позволяет применять к таким результатам классические стати- стические процедуры (см. главу 9). Чтобы построить доверительный интервал для среднего значения (в частно- сти, среднего времени пребывания в системе для детали на заводе), необходим ста- тистически устойчивый метод. Он должен быть простым для понимания и обеспе- чивать надежные статистические результаты. В этом смысле метод повторения, ялярепликации (см. разделы 9.4.1 и 9.5.2), несомненно, является наиболее удачным. Если трудно определить длительный прогон или «установившийся режим» сис- темы, то желательно указать продолжитетельность переходного периода работы модели, необходимого для того, чтобы статистические счетчики сбрасывались в О (но состояние системы при этом не изменялось)1. В идеале программные средства имитационного моделирования должны иметь возможность определять продол- жительность переходного процесса работы модели на основе экспериментальных прогонов. В настоящее время существует, по крайней мере, один программный 1 Если учитывать данные переходного процесса (не сбрасывать счетчики в 0 по его окончании), то в ре- зультате полученные оценки будут смещенными. — Примеч. рвд.
262 Глава Э. Программное обеспечение имитационного моделирования продукт имитационного моделирования, в котором для определения продолжи- тельности переходного процесса работы модели используется графический под- ход Велча (см. раздел 9.5.1). Программные средства имитационного моделирования должны предоставлять возможность указывать, для оценивания каких критериев работы системы будут собираться выходные данные, а не просто выдавать сведения, вычисляемые по умолчанию и не представляющие для пользователя никакого интереса. Во всяком случае, известен один программный продукт имитационного моде- лирования, который дает возможность создавать планы проведения статистиче- ских экспериментов (см. главу 12), такие как полные факторные планы и дробные факторные планы. При имитационном моделировании необходимо знать входные факторы (искомые переменные), которые оказывают наибольшее влияние на ис- комые оценки критериев. План проведения экспериментов позволяет определить, как следует организовать имитационное моделирование (прогоны), чтобы оце- нить влияние каждого фактора на выход системы. С помощью некоторых планов можно оценить взаимное влияние факторов. В настоящее время разработчиков, желающих приобрести программные сред- ства имитационного моделирования, интересует еще вопрос оптимизации (см. раздел 12.6). Предположим, что существует некоторое число искомых перемен- ных (входных факторов), каждая из которых имеет свой ряд возможных значений. (Для искомых переменных также могут задаваться линейные ограничения.) Кро- ме того, существует целевая функция, которая должна быть максимизирована (или минимизирована), то есть функция одной или нескольких выходных случай- ных переменных имитационного моделирования (например, функция производи- тельности в производственной системе). Тогда цель оптимизации — выполнить прогоны имитационной модели (для каждого из прогонов используются опреде- ленные значения искомых переменных) с помощью интеллектуальных модулей оптимизации и найти в итоге комбинацию искомых переменных, дающих опти- мальное или близкое к нему решение. В таких модулях оптимизации применяют- ся следующие эвристические средства: генетические алгоритмы, моделированный «отжиг», нейронные сети, а также рассеивающий поиск и запрещающий поиск. 3.4.5. Работа с заказчиками и документация Производителям программных средств имитационного моделирования надо по- стоянно знакомить пользователей со своей продукцией. Кроме того, по заказу кли- ентов нужно проводить курсы обучения на местах. Для решения вопросов, которые связаны с использованием программного обеспечения или его отладкой в случае возникновения сбоев, очень важна надежная техническая поддержка. Техничес- кая поддержка, как правило, должна осуществляться таким образом, чтобы кли- ент получал ответ ив позже чем через день. Для успешной работы с программным обеспечением необходима качественная документация. По нашему мнению, пользователь должен иметь возможность изу- чить пакет имитационного моделирования, не прибегая к курсам обучения. Как правило, документация представлена руководством пользователя или справочки-
3.4. Возможности программ имитационного моделирования 263 ком. Желательно, чтобы в них содержалось много подробно описанных примеров. Часто пакеты снабжают контекстной интерактивной справочной системой, кото- рая бывает весьма необходимой. (Недостаточно просто получить документацию, поставляемую с программным обеспечением.) В некоторых программах имеются библиотеки с небольшими примерами, иллюстрирующими различные модельные структуры. В документации должна быть описана работа всех моделирующих конструк- ций, и обязательно конструкций со сложными операционными процедурами. На- пример, если в программе имитационного моделирования сетей связи использует- ся модуль для локальных сетей Ethernet, необходимо точно описать его логику, а также сделать любые упрощающие допущения в соответствии с установленным стандартом. К большинству средств имитационного моделирования предлагаются бесплат- ные диски с демонстрационной версией программы. Иногда рабочая версия про- граммного обеспечения может быть загружена с веб-узла его производителя, одна- ко в ней, как и в демонстрационной версии, невозможно сохранить модель или полученные результаты. Такие версии пригодны только для создания небольших примеров моделей. Если клиент тратит большую сумму денег на программное средство, ему может быть оказана такая услуга, как бесплатное тестирование программного обеспече- ния. Многие производители предоставляют бесплатное тестирование в течение 30, а некоторые даже 60 дней. Хорошо, если производители программного обеспечения издают информаци- онные бюллетени и проводят ежегодные конференции пользователей. Производи- тели также обязаны регулярно модернизировать программное обеспечение (напри- мер, дважды в год). 3.4.6. Отчеты с выходными данными и графика Для оценки показателей работы модели в программе должна быть заложена воз- можность создавать стандартные отчеты. При этом надо учитывать потребность в отчетах заданного формата, например, для представления данных руководству. Если программа имитационного моделирования достаточно гибкая, она обеспечи- вает вычисление оценок показателей работы, определенных пользователем, и пре- доставляет возможность записывать их в отчете заданного формата. Для каждого показателя работы модели (например, времени пребывания детали на заводе) обычно вычисляются среднее, максимальное и минимальное наблюдае- мые значения. Когда выдается стандартное отклонение (на основе одного прогона имитационной модели), пользователь должен быть уверен, что оно базируется на статистически допустимом методе (в частности, позволяющем за один прогон мо- дели оценить общее среднее с заданной точностью, как это делается, например, в методе подвыборок, о чем пойдет речь в разделе 9.5.3); в противном случае оно рассматривается как крайне сомнительное. Оценки дисперсии и стандартного от- клонения требуют независимых данных, которые редко получаются в результате одного прогона имитационной модели (см. раздел 4.4).
264 Глава 3. Программное обеспечение имитационного моделирования Кроме того, есть необходимость получать отчеты как в промежуточных точках прогона имитационной модели, так и по его завершении. Программа имитационного моделирования должна обеспечивать разнообраз- ную статическую графику. Прежде всего, необходимо иметь возможность созда- вать гистограммы (см. рис. 13.11) для некоторых наблюдаемых данных. Для не- прерывных данных гистограмма представляет собой оценку лежащей в ее основе функции плотности распределения вероятностей, для дискретных — оценку функ- ции суммарного их распределения. Также очень важными являются графики временной зависимости. На графике временной зависимости (см. рис. 13.9) значения одной или нескольких ключевых системных переменных (например, число требований в определенной очереди) изображаются в течение всего времени моделирования, обеспечивая таким обра- зом представление о динамическом поведении моделируемой системы за весь пе- риод моделирования (тогда как анимация обеспечивает представление о динами- ческом поведении системы в текущий момент времени). Некоторые программы имитационного моделирования позволяют выводить результаты в виде столбиковых или круговых диаграмм. Кроме того, желательно, чтобы результаты для различных моделируемых сценариев сохранялись в базе дан- ных и при необходимости могли быть изображены на одном графике. Наконец, полезным для определения зависимости в выходных данных, полу- чаемых в результате одного прогона имитационной модели, может быть график корреляционной функции (см. рис. 6.29). Должна также существовать возможность экспортировать результаты наблю- дений выходов отдельной модели (например, время пребывания в системе) в такие программные пакеты, как электронные таблицы, базы данных, статистические и графические пакеты, с целью проведения дальнейшего анализа. 3.5. Универсальные пакеты имитационного моделирования В разделах 3.5.1 и 3.5.2 дано краткое описание двух популярных универсальных пакетов имитационного моделирования Arena и Extend, а также продемонстриро- вано создание модели небольшой фабрики с помощью каждого из пакетов. В раз- деле 3.5.3 перечислены некоторые другие универсальные пакеты имитационного моделирования. 3.5.1. Пакет имитационного моделирования Arena Пакет имитационного моделирования Arena [Systems, 1999; Kelton et al., 1998] по- ставляется компанией Systems Modeling Corporation (Севикли, Пенсильвания). Моделирующие конструкции, именуемые в пакете Arena модулями, объединены в шаблоны Basic Process (Основной процесс), Advanced Process (Дополнительный процесс) и Advanced Transfer (Дополнительная передача). Шаблон Basic Process содержит модули, которые используются во многих моделях (скажем, для модели-
3.5. Универсальные пакеты имитационного моделирования 265 рования поступления, ухода и обслуживания заявок). Шаблон Advanced Process состоит из модулей, предназначенных для выполнения специальных логических функций, таких как выбор очереди при наличии в системе нескольких очередей или координации продвижения нескольких объектов в различных частях систе- мы. И, наконец, шаблон Advanced Transfer содержит модули (например, конвейе- ры и транспортеры), применяемые для описания передачи объектов из одной час- ти системы в другую. Для создания модели в пакете Arena модули сначала перетаскивают в окно мо- дели, а затем соединяют, чтобы обозначить движение объектов в моделируемой системе. Затем модули детализируют с помощью диалоговых окон или встроен- ных таблиц. В иерархии модели может быть неограниченное число уровней. Пакет Arena обеспечивает двухмерную анимацию и позволяет выводить на экран дина- мическую графику (гистограммы и графики временной зависимости). Число потоков случайных чисел (см. главу 7) в пакете не ограничено. Более то- го, пользователь имеет доступ к 12 стандартным теоретическим распределениям вероятностей, а также к эмпирическим распределениям. В пакет встроено средст- во моделирования нестационарных процессов Пуассона (см. раздел 6.12.2), пред- ставляющих собой модель поступления объектов с зависящей от времени скоро- стью поступления. В пакете Arena имеется простой способ выполнения независимых повторных прогонов моделируемой системы, а также построения точечных оценок и довери- тельных интервалов для показателей работы системы. В нем можно построить и доверительные интервалы для оценки разности между средними значениями двух систем. Пакет позволяет строить графики (гистограммы, столбиковые диаграм- мы, графики временной зависимости и корреляционные). Кроме того, для пакета имеется дополнительный модуль оптимизации (см. раздел 12.6). Пакет Arena содержит конструкции для моделирования нескольких видов по- грузочно-разгрузочных устройств, таких как конвейеры (транспортные конвейе- ры и конвейеры-накопители), автопогрузчики и автоматизированные управляе- мые транспортные системы (см. раздел 13.3). Данный пакет позволяет выполнять функционально-стоимостной анализ при использовании ABC-метода, благодаря чему можно учитывать дополнительные и обычные затраты, а также создавать временные отчеты. Результаты моделирова- ния сохраняются в базе данных и отображаются с помощью программы Crystal Reports, встроенной в пакет. Пакет Arena поддерживает язык Visual Basic for Application (VBA) компании Microsoft, что дает возможность считывать данные из других приложений и запи- сывать в другие приложения (например, Excel). Таким образом, можно создавать удобные интерфейсы для ввода параметров модели, генерирования отчетов задан- ного формата и т. д. Данная технология также применяется для интерфейса Arena с графическим пакетом Visio. Кроме того, существует поставляемая по отдельному заказу версия Professional Version пакета Arena, которая используется для создания настраиваемых модулей и сохранения их в качестве шаблонов. Эти модули формируют из стандартных мо- дулей пакета Arena или из других настраиваемых модулей.
266 Глава 3. Программное обеспечение имитационного моделирования Опишем разработку с помощью пакета Arena модели простой производствен- ной системы, которая состоит из станка и контролера (такая модель приведена в примере 9.25). В данном случае можно допустить, что станок никогда не ломает- ся. Продолжительность прогона имитационной модели составляет 100 000 мин. На рис. 3.3 показано шесть модулей и соединения, которые необходимы для того, чтобы можно было проследить за движением объектов. Рис. 3.3. Модель производственной системы в пакете Arena Модуль Create (Создать), диалоговое окно которого показано на рис. 3.4, ис- пользуется для генерирования поступлений деталей. Назовем данный модуль Ge- nerate Parts (Генерирование деталей) и укажем, что интервалы времени между по- ступлением деталей распределены экспоненциально (что обозначается как Random) со средним значением 1 мин. Рис. 3.4. Диалоговое окно модуля Create (Generate Parts) в пакете Arena
3.5. Универсальные пакеты имитационного моделирования 267 Модуль Create соединяется с модулем Process (рис. 3.5), предназначенным для моделирования процесса обработки детали на станке. Этот модуль обозначен как Machine Part (Обработка детали). В нем есть всего один ресурс, названный Machine (Станок), с одним станком, а время обработки равномерно распределено между 0,65 и 0,70 мин. Рис. 3.5. Диалоговое окно модуля Process (Machine Part) в пакете Arena Еще один модуль Process (рис. 3.6) используется для моделирования контроле- ра. Он именуется Inspect Part (Проверка деталей). Время проверки равномерно распределено между 0,75 и 0,80 мин. В модуле Decide (Решение), изображенном на рис. 3.7 и названном Passed Inspection (Результат проверки), указано, что проверка деталей может иметь два результата: True (в 90 % случаев) или False. Если деталь сделана качественно (ре- зультат True), она передается в модуль Depart (Уход), названный Good Part Fi ni shed (Изготовленные качественные детали), и исключается из модели. В противном случае (результат False) деталь отправляется обратно в модуль Machine для по- вторной обработки. Наконец, для того чтобы задать параметры моделирования, нужен модуль Simu- late (Моделирование), изображенный на рис. 3.8. Напомним, что требуется один прогон имитационной модели продолжительностью 100 000 мин. Следует обра-
268 Глава 3. Программное обеспечение имитационного моделирования тить внимание, что модуль Simul ate (на рис. 3.3 — Small Factory) не связан графиче- ски с другими модулями.. Результаты прогона имитационной модели показаны на рис. 3.9. Как видно, среднее время пребывания детали в системе равно 4,36 мин. Дополнительную ста- тистику можно получить, воспользовавшись панелью Preview, которая расположе- на в левой части экрана Рис. 3.6. Диалоговое окно модуля Process (Inspect Part) в пакете Arena Рис. 3.7. Диалоговое окно модуля Decide (Passed Inspection) в пакете Arena
3.5. Универсальные пакеты имитационного моделирования 269 Рис. 3.8. Диалоговое окно модуля Simulate в пакете Arena Рис. 3.9. Выходные данные для модели производственной системы в пакете Arena 3.5.2. Пакет имитационного моделирования Extend Универсальный пакет имитационного моделирования Extend [Imagine, 1997b] по- ставляется компанией Imagine That, Inc. (Сан-Хосе, Калифорния). Чтобы создать в нем модель, в библиотеке выбирают блоки (Discrete Event, Generic, Statistics и др.) и помещают в определенные места в окне модели, затем блоки связывают, чтобы обозначить движение объектов (или значений) в системе, после чего эти блоки детализируют с помощью диалоговых окон. Кроме того, в программе есть вспомогательные библиотеки Manufacturing и Business Process Reengineering.
270 Глава 3. Программное обеспечение имитационного моделирования Пакет Extend позволяет моделировать самые разнообразные конфигурации систем, поскольку он содержит внутренний язык ModL для настройки существу- ющих блоков и создания новых. Новые блоки помещают в новую библиотеку и применяют повторно как в данной, так и в других моделях. Чтобы наглядно представить связи между блоками, нужно дважды щелкнуть мышью на выбран- ном блоке, удерживая нажатой клавишу Alt. Иерархия модели может включать не- ограниченное число уровней (о чем будет сказано далее), здесь также может ис- пользоваться механизм наследования (см. раздел 3.6). В настоящее время пакет Extend обеспечивает двухмерную анимацию, при этом в качестве вспомогательно- го средства служит программа Proof Animation [Wolverine, 1996]. С каждой имитационной моделью в пакете Extend связана программа Note- book, в которой могут содержаться элементы диалоговых окон и результаты моде- лирования. Таким образом, Notebook может применяться как интерфейс для мо- дели или как средство для вывода на экран важных результатов моделирования во время прогона имитационной модели. Число потоков случайных чисел в пакете Extend не ограничено. Более того, имеется доступ к 18 стандартным теоретическим распределениям вероятностей, а также к эмпирическим распределениям. В пакете Extend существует простой способ выполнения независимых повтор- ных прогонов моделируемой системы, а также построения точечных оценок и до- верительных интервалов для показателей работы системы. Пакет позволяет стро- ить графики, в частности гистограммы, а также графики временной зависимости. В настоящее время разрабатывается модуль оптимизации (см. раздел 12.6). Библиотека Manufacturing содержит конструкции для моделирования ряда по- грузочно-разгрузочных устройств, в том числе конвейеров (транспортных конве- йеров и конвейеров-накопителей), автоматизированных управляемых транспорт- ных систем и кранов (см. раздел 13.3). Кроме того, в пакете Extend есть возможности для моделирования непрерыв- ных систем (см. раздел 1.8.1). Данный пакет позволяет выполнять функционально-стоимостной анализ с ис- пользованием ABC-метода, благодаря чему по мере продвижения объекта в систе- ме можно связывать с ним фиксированные и переменные затраты. Например, в производственной системе с деталью могут быть связаны фиксированные затраты на сырье, а переменные затраты будут зависеть от времени ожидания этой детали в очереди. Нужно обратить внимание и на то, что пакет Extend стоит в настоящее время намного меньше, чем большинство подобных пакетов имитационного моде- лирования. Теперь рассмотрим, как средствами пакета Extend создать модель произво- дственной системы, разработка которой с помощью названного пакета описана в разделе 3.5.1. На рис. 3.10 показаны блоки, необходимые для ее создания, и сое- динения между ними. Соединения, обозначенные двойными линиями, соответст- вуют движению объектов (в этой модели — деталей), а соединения, изображенные обычными тонкими линиями, используются для передачи значений (например, отправки наблюдений, полученных из распределения вероятностей, в блок). Под каждым блоком, о котором пойдет речь, помещено его описание.
Timer sensor Рис. 3.10. Модель производственной системы в пакете Extend 3.5. Универсальные пакеты имитационного моделирования м а»
272 Глава 3. Программное обеспечение имитационного моделирования Блок Executive (Исполнитель), не связанный графически ни с каким другим блоком, представляет собой список событий модели, разрабатываемой в пакете Extend, а блок Generator (Генератор) применяется для создания деталей (см. диа- логовое окно на рис. 3.11), время между поступлением которых распределено экс- поненциально со средним значением 1 (время неявно указывается в минутах). Вы- ходной разъем этого блока связан с входным разъемом блока Timer (Таймер), изображенного на рис. 3.12. Этот блок обеспечивает вычисление времени пребы- вания в системе каждой детали и среднее время пребывания в системе всех дета- лей, которые были обработаны. Время пребывания детали в системе определяется путем вычитания времени поступления каждой детали в блок Timer из времени достижения этой деталью блока Exit (Выход), показанного на рис. 3.10. Рис. 3.11. Диалоговое окно блока Generator в пакете Extend Затем в блоке Combine (Объединение) выход блока Timer и выход b блока Select (см. далее) объединяются в одно соединение, которое ведет к блоку Queue, FIFO (Очередь, FIFO), обозначенному как Maehl ne Q (Очередь к станку). В диалоговом окне для очереди (рис. 3.13) задают ее максимальный размер 1000. Блок Queue связан с блоком Machi ne (Станок), диалоговое окно которого изобра- жено на рис. 3.14. Этот блок получает необходимое время обработки из блока Input Random Number (Входное случайное число), названного Processing Time (Время обра- ботки). В диалоговом окне блока Processing Time (рис. 3.15) выбирают распределе- ние Real, uniform (Реальное, равномерно) и задают минимальное и максимальное значения времени обработки 0,65 и 0,70 соответственно.
3.5. Универсальные пакеты имитационного моделирования 273 Рис. 3.12. Диалоговое окно блока Timer в пакете Extend Рис. 3.13. Диалоговое окно блока Queue. FIFO (Machine 0) в пакете Extend Рис. 3.14. Диалоговое окно блока Machine в пакете Extend
274 Глава 3. Программное обеспечение имитационного моделирования Рис. 3.15. Диалоговое окно блока Input Random Number (Processing Time) в пакете Extend Блок Machine связан co вторым блоком Queue, именуемым Inspector Q (Очередь к контролеру), который, в свою очередь, объединен со вторым блоком Machi пе, обо- значенным как Inspector (Контролер). Упомянутый блок получает необходимое время проверки из блока Input Random Number, названного Inspection Time (Время проверки). Блок Machine также связан с блоком Select (Выбор), который используется для определения качества детали: хорошее (обозначается 0) или плохое (1). Блок Select получает входные данные из блока Input Random Number, обозначенного как Good or Bad (Хорошее или плохое), в котором генерируются значения 0 и 1 с веро- ятностями 0,9 и 0,1 соответственно. Если получено значение 1, деталь передается через выход b в блок Combi пе для повторной обработки. В случае же, если получено значение 0, деталь подается через выход а в блок Exit, где она исключается из моде- ли. Время ухода детали передается через вход sensor (датчик) в блок Timer. Продолжительность моделирования (100 000 в данном случае) и необходимое число прогонов (в данной ситуации — один) задаются с помощью команды Run > Simulation Setup. Результаты моделирования, которые приведены далее на рис. 3.16, показыва- ют, что среднее время пребывания в системе равно 4,50. На рис. 3.17 представлен вариант модели, созданной с помощью пакета Extend, в котором применены два уровня иерархии (см. раздел 3.4.1). Если дважды щелк- нуть на блоке Maehl пе, находящемся на первом уровне иерархии, можно попасть на второй уровень, где представлены блоки Machine, Machine Q и Processing Time, соот- ветствующие самому станку, очереди к нему и генератору времени обработки де- талей (рис. 3.18).
Extend Statistics Report - 6/27/99 3:30:54 PM Run #0 ACTIVITIES Block Label Number Name Depart J Arrive Av&eng AvgWait Preempt Util Cost Machine Inspector .2 Machine 5 Machine 111117 111114 111118 '"W/. 111115 0.74997 0.86112’ ’ QUEUES Block Label Number Name Depart i Я , ‘ s Arrive AvgLeng AvgWait MaxLendftaxWait Renege Util Cost Machine Q Inspector Q 2 FIFO 5 FIFO 111118 111115 111118 1.15696 1.Й412 17 10.9264 111117 1.73687 1.56312 24 18.2477 0.47327 0.56703 STATISTICS . Block Label Number Name Main Variant StdDev Observ# Compute Averag 14 Main & Varia 4.50163 12.5241 3.53894 100071 Pae. 3.16. Выходные данные, для модели производственной системы в пакете Extend
276 Глава 3. Программное обеспечение имитационного моделирования Рис. 3.17. Иерархическая модель производственной системы в пакете Extend Рис. 3.18. Компоненты иерархического блока Machine 3.5.3. Другие универсальные пакеты имитационного моделирования Среди универсальных пакетов имитационного моделирования также хорошо из- вестны: AweSim [Pritsker and O’Reilly, 1999; Symix, 1999], GPSS/H [Henriksen and Crain, 1994; Schriber, 1991], Micro Saint [(Micro, 1998], MODSIM III [Banks etal., 1996; CACI, 1997; Marti, 1999], SES/workbench [SES, 1998], SIMPLE++ [Tecno- matix, 1998], SIMUL8 [Visual, 1999], SLX [Henriksen, 1998] и Taylor Enterprise Dynamics [F&H, 1998]. 3.6. Объектно-ориентированное моделирование В последнее время существенно возрос интерес к объектно-ориентированному моделированию [Jones and Roberts, 1998; Levasseur, 1996]. Вероятно, это является следствием повышения внимания к объектно-ориентированному программирова- нию вообще. Фактически объектно-ориентированные моделирование и програм- мирование берут начало от объектно-ориентированного языка SIMULA, появив- шегося в 1960-х годах. 3.6.1. Основные понятия При объектно-ориентированном моделировании моделируемая система формиру- ется из объектов (например, устройств), которые взаимодействуют друг с другом
3.6. Объектно-ориентированное моделирование 277 по мере выполнения моделирования. Объекты содержат данные и снабжены ме- тодами (см. пример 3.2). Данные описывают состояние объекта в определенный момент времени, а методы — действия, которые может выполнять объект. Данные определенного экземпляра объекта можно изменять только его собственными ме- тодами. Другие объекты могут лишь просматривать данные этого экземпляра. Такая возможность называется инкапсуляцией. В качестве примеров пакетов объектно-ориентированного моделирования мож- но назвать MODSIM III и SIMPLE++. Основными отличительными свойствами таких пакетов имитационного моделирования являются: наследование, полимор- физм и инкапсуляция (которая определена выше). Наследование означает, что если новый тип объекта (иногда именуемого по- томком) определяется на основе уже существующего типа объекта (предка), то объект-потомок наследует все характеристики объекта-предка. По желанию неко- торые характеристики потомка можно изменять или добавлять к ним новые. Полиморфизм подразумевает, что различные типы объектов, объединенные об- щим происхождением, могут иметь методы с одинаковыми названиями, но при их активизации поведение разных объектов будет отличаться. Примеры наследова- ния и полиморфизма можно найти в работе Левассера [Levasseur, 1996]. Для объектно-ориентированного программирования часто выделяют еще одно характерное свойство — иерархию (см. раздел 3.4.1). Пример 3.2. В производственной системе цехи могут рассматриваться как объекты , (первый уровень иерархии). Эти цехи содержат такие объекты, как рабочие станки и ав- топогрузчики (второй уровень иерархии). Данные автопогрузчика включают характе- ристики его скорости и грузоподъемности. Методом автопогрузчика может быть поря- док, используемый им для выбора следующей работы. Многие производители утверждают, что их программное обеспечение имита- ционного моделирования является объектно-ориентированным, но иногда такие программные средства не обеспечивают наследование, полиморфизм или инкап- суляцию. Более того, некоторые из перечисленных свойств (как и иерархия) мо- гут определяться по-разному. Объектно-ориентированное моделирование имеет такие преимущества: ♦ обеспечивает возможность повторного использования объектов и удобный способ их изменения; ♦ помогает справиться со сложными системами благодаря делению их на раз- личные объекты; ♦ упрощает изменение моделей, поскольку изменения в объекте-предке ото- бражаются в объектах-потомках; ♦ предоставляет возможность нескольким программистам работать над одним большим проектом. К недостаткам объектно-ориентированного подхода в моделировании можно отнести следующее: * ♦ некоторые пакеты трудны для изучения; ♦ нужно выполнить множество проектов, многократно используя различные объекты для моделирования, чтобы осмыслить всю полноту преимуществ объектно-ориентированного подхода.
278 Глава 3. Программное обеспечение имитационного моделирования 3.6.2. Пакет имитационного моделирования MODSIM III Пакет объектно-ориентированного моделирования MODSIM III [Banks et al., 1996, p. 128-138; CACI, 1997; Marti, 1999] поставляется компанией CACI Products Com- pany (Ла-Джолла, Калифорния). Имитационная модель пакета MODSIM III вклю- чает один основной модуль MAIN и, как правило, модули определения DEFINITION и реализации IMPLEMENTATION для каждого необходимого типа объектов. В модуле MAIN определяют структуры данных модели и начинают моделирование. В модуле DEFINITION объявляют данные объекта (в MODSIM III именуемые полями) и его методы, а в модуле IMPLEMENTATION описывают поведение объекта с помощью мето- дов. Существует два типа методов — ASK и TELL. Метод ASK подобен процедуре в лю- бом другом языке программирования, однако связан с определенным типом объ- ектов, а метод TELL описывает поведение объекта с продвижением модельного времени и соответствует программе процесса, описанной в разделе 3.3.2. Модель MODSIM III компилируется в код на языке C++, который затем вы- полняется. Таким образом, одно из преимуществ пакета состоит в возможности переносить приложения на различные компьютерные платформы1 (персональный компьютер и рабочие станции) и взаимодействовать с другими приложениями, такими как Excel и базы данных с ODBC (Open DataBase Connectivity — откры- тый интерфейс доступа к базам данных). В пакете MODSIM III есть обширная библиотека объектов для создания графических интерфейсов, анимации (двух- и трехмерной) и графики для выходных результатов (гистограмм, графиков вре- менной зависимости, столбиковых и круговых диаграмм). Пакет MODSIM III предоставляет практически неограниченное количество потоков случайных чисел. Более того, в нем имеется доступ к 12 стандартным тео- ретическим распределениям вероятностей, а также эмпирическим распределени- ям. В пакете нет встроенных возможностей для выполнения независимых повтор- ных прогонов имитационной модели или построения доверительных интервалов, но их можно запрограммировать. Пакет MODSIM III соответствует [Johnson, 1999] стандарту HLA (High Level Architecture), который используется в оборонных ведомствах и регламентирует порядок взаимодействия имитационных моделей [Dahman et al., 1998]. Наиболее ощутимы преимущества объектно-ориентированного подхода, при- меняемого в пакете MODSIM III, при создании больших и сложных моделей. Далее рассмотрим, как в пакете MODSIM III можно построить модель произ- водственной системы, разработка которой с помощью других пакетов описана в разделах 3.5.1 и 3.5.2. Для этого потребуются модуль MAIN, модули определения (DEFINITION) и реализации (IMPLEMENTATION) генератора Generator, а также модули определения и реализации детали Part. Объект Generator используется для опреде- ления полей и методов объекта PartGenObj (в котором описывается создание новых деталей), а объект Part нужен, чтобы определить поля и методы объекта PartObj (в котором описывается движение деталей в производственной системе). Следует обратить внимание на то, что ключевые слова в MODSIM III пишутся прописны- ми буквами. 1 Так как компиляторы с языка C++ существуют для любых компьютерных платформ. — Примеч. ред.
3.6. Объектно-ориентированное моделирование 279 Начинают моделирование с основного модуля Small Factory (Небольшая фаб- рика), представленного в листинге 3.1. В строке 3 процедура StartSimulatlon (см. далее) импортируется из библиотеки программ времени выполнения SimMod, для того чтобы эта процедура стала доступна из основного модуля. В строке 4 проце- дура RStatObJ импортируется из библиотеки StatMod. Затем в строке 6 из модуля Part импортируются экземпляры объектов Random (Случайный), Machine (Станок) и Inspector (Контролер), а также глобальная переменная TimelnSystem (Время пре- бывания в системе) — их определение представлено в листинге 3.4. Экземпляр объекта (листинг 3.2) импортируется из модуля Generator в строке 7. В строках 9 и 10 объявляется вещественная переменная mon (для монитора ) как экземпляр библиотечного объекта RStatObJ, который используется для сбора статистических данных в дискретном времени (см. раздел 1.4.1). В строке 12 с помощью оператора NEW выделяется память для экземпляра объекта Random. Такую же функцию выпол- няет и строка 14. Метод TELL в строке 15 дает указание объекту PartGen назначить событию GenerateParts (Генерировать детали) в момент времени 0. В строке 16 объект PartGen назначает событию TermSim (Завершить моделирование) момент времени 100 000. (В этой модели время задается в минутах.) В строке 18 выделяет- ся память для экземпляра объекта Machi ne, а в строке 19 указывается, что в системе имеется один экземпляр данного объекта. В строках 20 и 21 методы ASK использу- ются с целью сбора статистики по коэффициенту использования и очередям для экземпляра объекта Machi ne. Строки 22-25 имеют такое же назначение. В строке 27 процедура StartSimulation начинает моделирование с вызова синхронизирующей процедуры. После завершения моделирования управление передается в строку 28. Строки 29-38 используются для печати заголовка отчета и результатов моделиро- вания. Например, в строке 31 указатель на объект monitor для времени пребывания в системе TimelnSystem (определяемого в строке 33 листинга 3.5) присваивается переменной mon, а в строке 32 mon .Mean вычисляет среднее время пребывания дета- ли в системе. Листинг 3.1. Модуль MAIN для модели в MODSIM III 1 MAIN MODULE SmallFactory ; FROM SimMod IMPORT Startsimulation ; FROM StatMod IMPORT RStatObj ; FROM Part IMPORT Random. Machine. Inspector. TimelnSystem ; FROM Generator IMPORT PartGen ; VAR 10 mon : RStatObj ; BEGIN NEW (Random) : NEW (PartGen) ; 15 TELL PartGen TO GenerateParts : TELL PartGen TO TermSim IN 100000.0 ; NEW (Machine) : продолжение &
280 Глава 3. Программное обеспечение имитационного моделирования Листинг 3.1 (продолжение) ASK Machine ТО Create (1) ; 20 ASK Machine TO SetAllocationStats (TRUE) ; ASK Machine TO SetPendStats (TRUE) : NEW (Inspector) ; ASK Inspector TO Create (1) : ASK Inspector TO SetAllocationStats (TRUE) ; 25 ASK Inspector TO SetPendStats (TRUE) ; Startsimulation : OUTPUT (" ОТЧЕТ для МОДЕЛИ НЕБОЛЬШОЙ ФАБРИКИ") : 30 OUTPUT (------------------------------------------------") ; mon GETMONITOR (TimelnSystem, RStatObj) ; OUTPUT ("Среднее время пребывания в системе - ". mon.MeanO) ; OUTPUT ("Коэффициент использования станка - ". Machine.AllocWtdMeanO) ; OUTPUT ("Среднее число деталей в очереди - ”. Machine.PendWtdMeanO) ; 35 OUTPUT ("Максимальное число деталей в очереди - ". Machine.PendingMaxImumO) ; OUTPUT ("Коэффициент использования контролера - ". Inspector.AllocWtdMeanO) ; OUTPUT ("Среднее число деталей^ очереди к котроллеру - ", Inspector.PendWtcMeanO) ; OUTPUT ("Максимальное число деталей в очереди к контролеру - ", Inspector.PendinsMaxinunO) ; END MODULE . Модуль определения для объекта Generator показан в листинге 3.2. В строке 4 объявляется объект PartGenObj. У этого объекта есть методы TELL GenerateParts и TermSIm, объявленные в строках соответственно 5 и 6. В строке 10 объявляется PartGen как экземпляр объекта PartGenObj. Листинг 3.2. Модуль определения объекта Generator в MODSIM III 1 DEFINITION MODULE Generator TYPE PartGenObj - OBJECT 5 TELL METHOD GenerateParts ; TELL METHOD TermSIm ; END OBJECT ; VAR 10 PartGen : PartGenObj ; END MODULE . Модуль реализации объекта Generator приведен в листинге 3.3. В строке 3 из библиотечного модуля SimMod импортируется процедура Stopsimulation (Завершить моделирование). Экземпляры объектов Random и PartObj импортируются из модуля Part в строке 5. В строках 8-19 описывается метод TELL GenerateParts для объекта PartGenObj. В строке 10 переменная part объявляется как локальный экземпляр объекта. В строках 12-18 описывается конструкция. В строке 13 используется оператор для присвоения событию SimTime значения времени (текущее значение часов модельного времени) плюс интервал времени между поступлением деталей, которое распределено экспоненциально со средним значением 1. Exponential - это метод экземпляра объекта Random. Когда время между поступлениями деталей про- ходит, управление передается оператору END WAIT в сроке 14, и в строке 15 выделя-
3.6. Объектно-ориентированное моделирование 281 ется память для экземпляра объекта part. Метод ASK в строке 16 дает указание объ- екту part выполнить метод SetArri valTime (Назначить время поступления). Метод TELL в строке 17 дает указание объекту part выполнить метод Sei zeMachi ne (Занять станок) (строка Ив листинге 3.5). Метод TELL TermSim (строки 21-24) завершает моделирование в момент времени 100 000, вызывая в строке 23 процедуру StopSi - mulation. Листинг 3.3. Модуль реализации объекта Generator в MODSIM III 1 IMPLEMENTATION MODULE Generator FROM SimMod IMPORT StopSimulation ; 5 FROM Part IMPORT Random. PartObj ; OBJECT PartGenObj TELL METHOD GenerateParts ; VAR 10 part : PartObj ; BEGIN LOOP WAIT DURATION Random.Exponential (1.0) ENO WAIT ; NEW (part) ; ASK part TO SetArr1valT1me : TELL part TO Se1zeMachine : END LOOP : END METHOD ; 20 TELL METHOD TermSim ; BEGIN StopSimulation ; ENO METHOD ; 25 END OBJECT ; END MODULE . Модуль определения объекта Part приведен в листинге 3.4. В строках 3-5 из библиотечных модулей ResMod, RandMod и StatMod импортируются объекты Resource- Obj, RandomObj и RStatObj. Объект ResourceObj используется для того, чтобы обеспе- чить обслуживание детали (например, на станке), и состоит из устройства обслу- живания и очереди. Объект PartObj объявляется в строке 8, а время поступления Arri valTime — в строке 9 как вещественное поле объекта PartObj. Для объекта Part- Obj в строках 10,11 и 12 объявляются методы SetArri valTime, SeizeMachine и Seize- Inspector (Захватить контролера). В строках 16,17 и 18 объявляются глобальные экземпляры объектов Random, Machine и Inspector. Наконец, в строке 19 объявляется глобальная вещественная переменная TimelnSystem. Она содержит значение време- ни пребывания детали в системе и контролируется объектом RStatObj, то есть объ- ект RStatObj собирает статистику переменной TimelnSystem, когда ей присваивается новое значение (см. строку 33 в листинге 3.5).
282 Глава 3. Программное обеспечение имитационного моделирования Листинг 3.4. Модуль определения объекта Part в MODSIM III 1 DEFINITION MODULE Part FROM ResMod FROM RandMod FROM StatMod IMPORT ResourceObj ; IMPORT RandomObj; IMPORT RstatObj: TYPE PartObj - OBGECT Arr1valT1me 10 ASK METHOD TELL METHOD TELL METHOD END OBGECT ; SetArrlvalTime : SeizeMachlne : Selzelnspector ; : REAL ; 15 VAR Random Machine Inspector TlmelnSystem 20 END MODULE . : RandomObj ; : ResourceObj ; : ResourceObj ; : LMONITORED REAL BY RstatObj ; Листинг 3.5. Модуль реализации объекта Part в MODSIM III 1 IMPLEMENTATION MODULE Part FROM SimMod IMPORT SlmTIme ; 5 OBJECT PartObj ASK METHOD SetArrlvalTime ; BEGIN ArrivalTIme SlmTIme ; END METHOD : 10 TELL METHOD SeizeMachlne BEGIN WAIT FOR Machine TO Give (SELF. 1) : END WAIT 15 WAIT DURATION Random.Un1formReal (0.65. 0.70) END WAIT ; ASK Machine TO TakeBack (SELF. 1) : 20 TELL SELF TO Selzelnspector ; END METHOD ; TELL METHOD Selzelnspector ; BEGIN 25 . WAIT FOR Inspector TO Give (SELF. 1) ; END WAIT : WAIT DURATION Random.UnlformReal (0.75, 0.80) END WAIT : 30 ASK Inspector TO TakeBack (SELF. 1) ;
3.6. Объектно-ориентированное моделирование 283 IF Random.Sample > 0.1 TimelnSystem SlmTime - ArrivalTime ; DISPOSE (SELF) ; 35 ELSE TELL SELF TO SelzeMachlne ; END IF : ENO METHOD ; f' END OBJECT : 40 END MODULE . Модуль реализации объекта Part приведен в листинге 3.5. В строке 8 перемен- ной ArrivalTime объекта part присваивается значение SlmTime (время поступления детали part). Метод TELL в строках 11-21 описывает момент поступления детали в станок Machi пе, попытку занять его, обработку детали станком и освобождение де- талью станка. В строке 13 деталь запрашивает один станок Machi пе, а указатель на эту деталь хранится в SELF. Экземпляр объекта использует зарезервированное сло- во, чтобы создать указатель на самого себя. (В методе GenerateParts (см. лис- тинг 3.3) ссылка на деталь выполняется с помощью переменной part, объект part ссылается на собственный экземпляр с помощью зарезервированного слова SELF.) Когда деталь действительно занимает станок (возможно, для этого ей придется подождать в очереди), с помощью оператора WAIT DURATION (строка 16) планируется событие завершения обработки end-of-machining, которое произойдет в момент времени SimTime плюс случайная величина, равномерно распределенная в интерва- ле [0,65; 0,70]. После обработки детали SELF один станок освобождается, для чего вызывается метод TakeBack. Та же логика действует и для объекта Inspector. В стро- ке 32 определяем, качественно ли изготовлена проверяемая деталь. В этой строке переменная Random является случайным числом из равномерного распределения в промежутке [0,1]. Это значение будет больше 0,1 (что соответствует хорошему качеству детали) с вероятностью 0,9. Если деталь выполнена качественно, ее вре- мя пребывания в системе TimelnSystem вычисляется в строке 33 как текущее моде- льное время Si mTi me минус время поступления детали Arr i va 1 Ti me, и деталь исклю- чается из модели, при этом освобождается выделенная память. Если же деталь оказывается некачественной, повторно активизируется метод Sei zeMachi пе. Стати- стические данные собираются автоматически по переменной TimelnSystem с помо- щью экземпляра объекта mon (см. строку 32 в листинге 3.1). Листинг 3.6. Выходные данные для модели производственной системы в MODSIM III ОТЧЕТ для МОДЕЛИ НЕБОЛЬШОЙ ФАБРИКИ Среднее время пребывания в системе Коэффициент использования станка Среднее число деталей в очереди к станку Максимальное число деталей в очереди к станку Коэффициент использования контролера Среднее число деталей в очереди к котроллеру Максимальное число деталей в очереди к контролеру - 38 - 4.664069 - 0.75013В - 1.153845 - 20 - 0.В61226 - 1.897636 Из результатов прогона имитационной модели MODSIM Ш (листинг 3.6) сле- дует, что среднее время пребывания объекта в системе равно 4,66 мин.
284 Глава 3. Программное обеспечение имитационного моделирования 3.7. Предметно-ориентированные пакеты имитационного моделирования В этом разделе дан список некоторых существующих предметно-ориентирован- ных пакетов имитационного моделирования. 4- Пакеты имитационного моделирования для производственных систем. Auto- Mod [AutoSimulations, 1999а], AutoSched АР [AutoSimulations, 1999b], Extend + Manufacturing [Imagine, 1997a], Arena Packaging Edition [Systems, 1999 b], ProModel [PROMODEL, 1999b], QUEST [Deneb, 1998], Taylor Enterprise Dy- namics [F&H, 1998] и WITNESS [Lanner, 1998b]; дополнительные сведения можно найти в разделе 13.3. -4 Пакеты имитационного моделирования для сетей связи. COMNET III [CACI, 1999], IT DecisionGuru [MIL 3,1999, а] и OPNET Modeler [MIL 3,1999 Ь]. 4- Пакеты имитационного моделирования для моделирования процессов модер- низации и обслуживания. Arena Business Edition [Systens, 1999d], Extend + BPR [Imagine, 1998], ProcessModel [ProcessModel, 1998], ServiceModel [PRO- MODEL, 1999c] й SIMPROCESS [CACI, 1998]. 4 Пакеты имитационного моделирования для медицинских учреждений. Med- Model [PROMODEL, 1999а]. 4- Пакеты имитационного моделирования для центров обработки заказов. Are- na Call Center Edition [Systems, 1999a], 4- Пакеты для анимации (самостоятельной). Proof Animation [Wolverine, 1996].
Глава 4 Основы теории вероятностей и статистики ♦ Термины и определения теории вероятностей и сатистики 4 Стохастические процессы в имитационном моделировании 4 Оценка средних значений, дисперсий и корреляций ♦ Центральная предельная теорема ♦ Усиленный закон больших чисел 4 Недопустимость замены распределения вероятностей его средним значением 4.1. Введение Для успешного исследования системы посредством имитационного моделирова- ния недостаточно просто создать блок-схему системы, преобразовать ее в компью- терную программу и выполнить один или несколько повторных прогонов для каж- дой из предложенных конфигураций. Такое исследование требует применения теории вероятностей и статистики, поэтому в каждом коллективе разработчиков имитационной модели должен быть хотя бы один специалист, владеющий знания- ми из этих областей. В частности, теория вероятностей и статистика нужны, что- бы понимать, как моделируется вероятностная система (см. раздел 4.7), проверять достоверность имитационной модели (глава 5), выбирать входные распределения вероятностей (глава 6), генерировать случайные выборки из этих распределений (главы 7 и 8), выполнять статистический анализ выходных данных моделирова- ния (главы 9 и 10) и планировать имитационные эксперименты (главы 11 и 12). В этой главе определены статистические понятия, используемые в книге, а также описаны основы теории вероятностей и статистики в применении к имитационно- му моделированию. Мы также показываем потенциальную опасность применения классических статистических методов, основанных на независимых наблюдениях, к выходным данным имитационного моделирования, которые редко являются не- зависимыми. 4.2. Случайные величины и их свойства Эксперимент — это процесс, результат которого точно не известен. Совокупность всех возможных результатов эксперимента называется пространством выборки
286 Глава 4. Основы теории вероятностей и статистики и обозначается 5. Сами результаты называются элементами выборки в простран- стве выборки. Пример 4.1. Если в ходе эксперимента подбросить монету, то пространство выборки S - {О, Р}, где символ {} означает «множество, состоящее из», а элементы О и Р — соответственно «орел» и «решка». Пример 4.2. Если в ходе эксперимента бросить игральную кость, то S - {1, 2.6}, где i (i - 1, 2,..., 6) означает число, которое выпало на игральной кости. Случайная величина — это функция (или правило), которая определяет вещест- венное число (любое число больше -оо и меньше со) каждому элементу в простран- стве выборки S. Пример 4.3. Если бросить две игральные кости, то 5-{(1,1), (1,2)..(6, 6)}, где (»,)) означает, что на первой и второй игральной костях выпали числа i nj. Примем, что X — случайная величина, соответствующая сумме выпавших значений, тогда X опре- деляет значение 7 результату (4, 3). Пример 4.4. Рассмотрите эксперимент с подбрасыванием двух монет. Если X — случай- ная величина, соответствующая числу выпадающего «орла», то Xопределяет значение 1 для результата (О, Р) или и результата (Р, О) обеих монет. Случайные величины обозначают прописными буквами X, Y, Z, а значения, ко- торые принимают случайные величины, строчными буквами х, у, г. Функция распределения вероятностей (иногда именуемая также интегральной функцией распределения вероятностей) F(x) случайной величины X определяется для каждого вещественного числа х следующим образом: F(x) - Р(Х < х) для -оо < х < оо, где Р(Х 5 х) — вероятность, связанная с событием {X S х}. Следовательно, F(x) — это вероятность того, что после выполнения экспери- мента случайная величина X получит значение, не превышающее число х. Функция распределения F(x) имеет такие свойства: 1)0^ F(x) <> 1 для всех значений х; 2) F(x) является неубывающей функцией; то есть, если xt < х2, тогда Ffa) < F(x2); 3) limF(x) - 1 и limF(x) - 0 (поскольку X принимает только конечные значения). X —>с0 X —>00 Случайная величина X считается дискретной, если она может принимать зна- чения из счетного множества, например: Xj.Xj,... (счетное множество — это множе- ство возможных значений переменной, взаимно однозначно соответствующих мно- жеству положительных целых чисел; примером несчетного множества являются вещественные числа между 0 и 1). Следовательно, случайная величина, прини- мающая только конечное число значений jq, х2,..., х„, является дискретной. Веро-
4,2. Случайные величины и их свойства 287 ятность, с которой дискретная случайная величина X принимает значение хь зада- ется как P(.xi) “ Р(Х “ xi) для 1 “ 2, и для нее должно выполняться равенство £р(х{) = 1. Все вероятностные характеристики величины X могут быть вычислены с помо- щью функции р(х), именуемой вероятностной мерой дискретной случайной вели- чины X. Если I = [а, fe], где аиЬ — вещественные числа, для которых а < Ь, то Р(Хе/)= X POO» a^xi^b где символ е обозначает «содержится в», а суммирование означает сложение всех величин р(х;), для которых а < х; < Ь. Функция распределения дискретной случай- ной величины X г(х) = X ) для всех -0° < х <00 • Пример 4.5. В примере системы управления запасами, приведенном в разделе 1.5, спрос на товар представлен дискретной случайной величиной X, которая принимает значения 1,2,3,4 с соответствующими вероятностями 1/6,1/3,1/3,1/6. Вероятностная мера и функ- ция распределения величины X показаны на рис. 4.1. и 4.2. Более того, 112 Р(2 £ X £ 3) = р(2) + Р(3) = з + з = j • Пример 4.6. Качество деталей, изготовляемых в производственной системе, должно проверяться. Предположим, что 90 % проверяемых деталей имеет хорошее качество (что обозначается как 1), а у 10 % деталей качество плохое (что обозначается как 0), и они должны быть превращены в лом. Если величина X обозначает результат проверки дета- ли, то она является дискретной случайной величиной с р(0) - 0,1 и р( 1) - 0,9. (См. ин- формацию о случайной величине Бернулли в разделе 6.2.3.) Рассмотрим случайные величины, которые могут принимать только несчет- но-бесконечное число различных значений (например, все неотрицательные ве- щественные числа). Случайная величина X считается непрерывной, если сущест- вует такая неотрицательная функция /(х), при которой для любого множества вещественных чисел В (например, В может включать все вещественные числа ме- жду 1 и 2) Р(Х еВ)= ^f(x)dx и j/(x)dr = 1. В —оо Таким образам, общая площадь под функцией/(х) равна 1. Если X — неотрица- тельная случайная величина, что часто встречается при моделировании, вторая область интегрирования будет в пределах от 0 до оо. Все вероятностные характери- стики величины X могут (в принципе) вычисляться с помощью функции/(х), ко- торая называется плотностью распределения вероятностей непрерывной случай- ной величины X.
28В Глава 4. Основы теории вероятностей и статистики Рис. 4.2. График функций F(x) случайной величины X, определяющей объем спроса Для дискретной случайной величины X функция р(х) — это действительная ве- роятность, связанная со значением X. Однако функция/(х) не является вероятно- стью того, что непрерывная случайная величина X равна х. Для любого веществен- ного числах Р(Х = х) = Р(Х е [х,х) = J/(z/)dy = 0. Так как вероятность, связанная с каждым значением х, равна 0, можно дать сле- дующую интерпретацию функции/(х). Если х * это любое число, а Аг > 0, тогда P(Xe[x,x + AxJ)~ \f(y)dyi что равно площади под функцией /(х) между х и х + Ах (рис. 4.3). Отсюда сле- дует, что с большей вероятностью непрерывная случайная величина X попадет
4.2. Случайные величины и их свойства 289 В интервал, где функция /(х) имеет большое значение, чем в интервал, где функ- ция /(х) имеет небольшое значение. Функция распределения непрерывной случайной величины X X F(x) = Р(Х е [-оо,х]) = ]f(y)dy для всех -оо < х < оо. Таким образом, с некоторыми формальными нестрогими допущениями/(х) - F'(x), где F'(x) — производная от функции F(x)). Кроме того, если I - [a, 6], где а и b — любые вещественные числа, для которых а < Ь, то Р(Х еГ) = ]f(y)dy = F(b)-F(a). Л Последнее равенство представляет применение фундаментальной теоремы вы- числений, поскольку F'(x) - /(х). Рис. 4.3. Интерпретация плотности распределения вероятностей/(х) - Пример 4.7. Случайная величина, равномерно распределенная в интервале [0,1], имеет плотность распределения вероятностей Л если 05x5 1; ' } |0 в противном случае. >>' •’ р- Белее того, при 0 £х£ 1 F(x) => |/(у) dy = jidy =х. fife 4. 0 0 Что представляет собой функция F(x), если х < 0 или х > 1? Графики функций /(х) , .;Ж F(x) приведены на рис. 4.4 и 4.5.
290 Глава 4. Основы теории вероятностей и статистики Рис. 4.4. График функции f(x) равномерно распределенной случайной величины в интервале [0,1] Рис. 4.5. График функции F(x) равномерно распределенной случайной величины в интервале [0,1] Наконец, если 0 $х< т+ Дх S 1, то Р(Х е [х,х + Дх) = J/(y)dy = F(x + Дх)-F(x) = (х + Дх)-х = Дх. X Отсюда следует, что случайная величина, равномерно распределенная в интервале [0,1], с одинаковой вероятностью попадет в любой интервал длиной Дх между 0 и 1, что объ- ясняет ее название «равномерно распределенная». Случайная величина, равномерно распределенная в интервале [0, 1], имеет очень большое значение для имитационного моделирования, поскольку она служит основой для генерирования компьютером любой случайной величины (см. главы 7 и 8). Пример 4.8. В главе 1 экспоненциально распределенная случайная величина использо- валась для интервалов времени между поступлениями требований и для времени обслу- живания в примере с системой массового обслуживания, а также для времени между возникновениями спроса в примере с системой управления запасами. Плотность рас- пределения вероятностей и функция распределения для экспоненциально распределен- ной величины со средним значением Р показаны на рис. 4.6 и 4.7. Рассмотренные в этой главе примеры содержат только по одной случайной ве- личине, но при моделировании обычно приходится иметь дело с п (я — положи- тельное целое число) случайными величинами Хь Х2......Х„ одновременно. Так,
4.2. Случайные величины и их свойства 291 в модели системы массового обслуживания, описанной в разделе 1.4, использова- ны входные случайные величины времени обслуживания 5t, S2.S„ и выходные случайные величины продолжительности задержки Db D2.D„. Далее, чтобы об- легчить объяснение, примем п - 2, то есть воспользуемся двумя случайными вели- Рис. 4.6. График функции /(х) экспоненциально распределенной случайной величины со средним значением р Рис. 4.7. График функции F(x) экспоненциально распределенной случайной величины со средним значением р Если X и Y являются дискретными случайными величинами, тогда р(х,у) = Р(Х = х, Y =у) для всех х, у, где р(х, у) называется совместной вероятностной мерой функции величин X и Y. При этом величины X и Y будут независимыми, если Р(*>!О = Рх(*)Ру(зО Для всех х, у, Где функции Рх(*)= Z £(*,!/)> всех у
292 Глава 4. Основы теории вероятностей и статистики всех* есть безусловные вероятностные меры величин X и Y. Пример 4.9. Предположим, что Хи Y — совместно дискретные случайные величины с Р(х,у) = '27 О для х - 1, 2 и у - 2, 3,4; в противном случае. Тогда £*(*)= = | Длях-1,2, Рг(У) = £^- = | дляу-2, 3,4. Поскольку р(х, у) - ху/П - Рх(х)ру(у) при всех х и у, то случайные величины X и У бу- дут независимыми. Пример 4.10. Предположим, что из колоды, состоящей из 52 карт, две карты сдаются без замены. Пусть величины X и У будут числом тузов и королей, которые могут быть сда- ны. Обе они могут иметь значения 0, 1, 2. Можно утверждать, что р(1,1) = 2 я) (я) и Поскольку то X и У не являются независимыми величинами (см. задачу 4.5). Случайные величины Хи У называются совместно непрерывными, если для них существует неотрицательная функция /(х, у), именуемая совместной функцией плотности распределения вероятностей величин X и У, определенная для всех множеств вещественных чисел А мВ Р(Х е А, У е В) = f $f(x,y)dx dy. ВЛ В этом случае величины X и У являются независимыми, если f(x,y) = fx (x)fY(у) для всех х, у, где функции /х(*) = /уО) = jf(x,y)dx представляют собой плотности безусловного распределения вероятностей соот- ветственно величин X и У.
4.2. Случайные величины и их свойства 293 Пример 4.11. Предположим, что X и Y — совместные непрерывные случайные величи- ны с функцией Л^у)={о^ для х £ О, у£0их + у£1; в противном случае. Тогда 1-* j. fx(x) = [24xV = 12лУ2 о о = 12х(1 - х)2 для 0 £ х £ 1, Поскольку Л(у)« 24ху dx = Мух2 = 12у(1 - у)2 для 0 5 у 5 1. 1-у о величины X и Y не являются независимыми. Иными словами, случайные величины X и У (как дискретные, так и непрерыв- ные) являются независимыми, если известное значение, которое может прини- мать одна величина, не сказывается на распределении другой величины. Также, если величины X и У не являются независимыми, их называют зависимыми. Рассмотрим еще раз случай с п случайными величинами Х„ Х2,..., Х„. В частно- сти, обратимся к некоторым характеристикам отдельной случайной величины Х; и некоторым показателям зависимости, которая может существовать между двумя случайными величинами X, и X,-. Среднее значение, или математическое ожидание, случайной величины X, (где i “ 1, 2,..., ri) обозначается или Г(Х;) и определяется как Mi м 09 JxA((x>£r если Xi — дискретная величина; если Xi — непрерывная величина. Среднее значение является мерой центральной тенденции в смысле, что она является центром тяжести [Billingsley и др., 1986, р. 42-43]. Пример 4.12. Для случайной величины, определяющей спрос из примера 4.5, среднее значение задается как . о Г1') х Г1') 5 И 1 Н + 2 1з] + 3[з] + 4[б] ~ 2‘ Пример 4.13. Для равномерно распределенной случайной величины из примера 4.7 среднее значение и = [xf(x)dx = jxtfc = 1 о о z
294 Глава 4. Основы теории вероятностей и статистики Средние значения обладают такими важными свойствами (с и с,- обозначают константу — вещественное число): 1)Е(сХ) - сЕ(Х); 2)£(JXi ci^i) = УТ-i ciE(Xi), даже если величины X, зависимые. Показателем, альтернативным среднему значению распределения, является ме- диана яь5 случайной величины Xit определяемая как наименьшее значение х, при котором Fx. (х)£ 0,5. Если Х{ — непрерывная случайная величина, тогда (x0,s) “ = 0,5 (рис. 4.8). Медиана может быть лучшей мерой стремления к центру распреде- ления, чем среднее, когда X, может принимать очень большие или очень маленькие значения, поскольку предельные значения могут существенно повлиять на сред- нее значение, даже если их возникновение маловероятно, тогда как к медиане это не относится. Рис. 4.8. Медиана непрерывной случайной величины Пример 4.14. Рассмотрим дискретную случайную величину X, принимающую значения 1,2,3,4 и 5 с вероятностью 0,2. Понятно, что среднее значение и медиана X равны 3. Те- перь рассмотрим случайную величину Y, которая принимает значения 1, 2, 3, 4 и 100 с вероятностью 0,2. Среднее значение и медиана У равны соответственно 22 и 3. Как вид- но из данного примера, изменение распределения не влияет на значение медианы. Дисперсия случайной величины Xt обозначается о2 или Var(Xf). Она определя- ется как о2=£[(Х,.-И<)2] = Е(Х2)-И2. Дисперсия является показателем рассеяния случайной величины по отноше- нию к ее среднему значению (рис. 4.9). Чем больше дисперсия, тем более вероятно, что случайная величина будет принимать значения, далекие от среднего.
4.2. Случайные величины и их свойства 295 Рис. 4.9. Функции плотности распределения вероятностей непрерывной случайной величины: а — с большой дисперсией; б — с малой дисперсией Пример 4.15. Дисперсия случайной величины, характеризующей спрос из примера 4.5, вычисляется в такой последовательности: £(Х2) = 12(£] + 22({| + 32(|] + 42ГП = \ру \oj \3) \vj о Пример 4.16. Дисперсия случайной величины, равномерно распределенной в интервале [0,1] (см. пример 4.7) вычисляется следующим образом: £(Х2) = jx2f(x)dx = jx2dx = 1, О о Дисперсия имеет такие свойства: l)Var(X) > 0; 2)Var(cX) = c2Var(X); 3) Var(£Xi X.) = X"=i Var(X,), если значения X, являются независимыми (или не- коррелированными, о чем будет сказано ниже). Стандартное отклонение случайной величины X, определяется как а,- = -Jo2". Йаиболее точное толкование стандартного отклонения может быть дано, когда X, имеет нормальное распределение (см. раздел 6.2.2). В частности, предположим, что величина X, имеет нормальное распределение со средним ц, и стандартным от- клонением ц,. В этом случае вероятность того, что X; попадает в интервал между ц,- -1,96а,. и ц - + 1,96с,- составляет 0,95. Теперь рассмотрим показатели зависимости между двумя случайными величи- нами. Показателем линейной зависимости между случайными величинами X,- и Х} (где i - 1,2.п; j - 1, 2.п) является ковариация, которая обозначается или Cov(X, и определяется как =£[(Х1-И1.)(Х>-И,.) = £(Х<Х>)^^. (4.1)
296 Глава 4. Основы теории вероятностей и статистики Обратите внимание, что ковариации симметричны, то есть Су = и что, если i -j, то Су - Сп = о?. Пример 4.17. Определим ковариацию совместно непрерывных случайных величин X и У из примера 4.1. Сначала вычислим Е(ХУ) = J fa/(x,y)dy dx = pr2| | dx = ]вг2(1 -xfdx = , oo о k о J о ° E(X) = jyfx(x)dx = jl2x2(l -x)2dx =B, E(T) = » J12y2(l-y)2dy = |. 0 0 Откуда Соу(Х,У) = Е(ХУ) - Е(Х)Е(У) = . При Су “ 0 случайные величины Xf и Xj считаются некоррелированными. Легко доказать, что если X, и Xj являются независимыми случайными величинами, то Су - О (см. задачу 4.8). Однако обратное утверждение не является справедливым (см. за- дачу 4.9). Тем не менее, если Xf и Xj являются совместно нормально распределен- ными случайными величинами с Су - 0, то они являются также и независимыми (см. пример 4.10). Приведем два определения, которые помотут уяснить значение ковариации Су. Если Су > 0, то Х{ и Xj считаются положительно коррелированными величинами. Тогда имеет место тенденция возникать совместно Xi>pinXj>pJ,a также Х,< ц ( и Х^ < (см. формулу (4.1)). Таким образом, если одна из положительно коррелирован- ных случайных величин имеет большое значение, другая, скорее всего, тоже будет иметь большое значение. Если Су < 0, то Х{ и Xj считаются отрицательно коррелированными величинами. В этом случае тенденцию возникать совместно имеют Х( > р( и Xj < pJt а также Xi < щ и Xj > ц,. Таким образом, если одна из отрицательно коррелированных слу- чайных величин имеет большое значение, другая, скорее всего, будет иметь ма- ленькое значение. Примеры положительно и отрицательно коррелированных слу- чайных величин приведены в следующем разделе. Если Хц Х2,..., Х„ представляют собой выходные данные моделирования (в ча- стности, X,- может быть задержкой Df в примере с моделью системы массового об- служивания из раздела 1.4), часто нужно знать не только среднее значение и дисперсию о2 при1= 1,2,..., и, но и показатель зависимости между Х, иХ^ при Однако сложность использования ковариации Су в качестве показателя зависимо- сти между Xf и Х} заключается в том, что она не является безразмерной величиной, что усложняет ее толкование. (Если Xf и Xj измеряются, например, в минутах, то ковариация Су будет измеряться в минутах в квадрате.)
4.3. Выходные данные и стохастические процессы моделирования 297 В связи с этим в качестве основного показателя линейной зависимости (см. за- дачу 4.11) между Xi и Xj. используется корреляция рв„ определяемая по формуле Ру = i = l,2, ...,п; 7 = 1,2, ...,п. (4.2) Корреляцию между Xt и Xj можно обозначать и как Сог(Хй Х}). Так как знамена- тель в формуле (4.2) имеет положительное значение, естественно, что корреля - ция Ру будет иметь тот же знак, что и ковариация Более того, можно доказать, что -1 < р,1 при всех i и j (см. задачу 4.12). Если р^имеет значение, близкое к +1, то Xi и Xj — сильно положительно коррелированные величины. Если ps близко к -1, то Х(и Xj — сильно отрицательно коррелированные величины. Пример 4.18. Можно доказать, что для случайных величин из примера 4.11 Var(X) = - Var(Y) - 1/25. Следовательно, 2 Сог(Х У) - „ _ 2 25 4.3. Выходные данные и стохастические процессы моделирования В большинстве имитационных моделей в качестве входных данных используются случайные величины, поэтому выходные данные имитационного моделирования также носят случайный характер. В связи с этим нужно осторожно делать выводы относительно действительных характеристик модели (например, об ожидаемой средней задержке требований в системе массового обслуживания, рассмотренной в разделе 1.4). Правильное проведение анализа выходных данных (описано в гла- вах 9 и 10) невозможно без ознакомления со стохастическими процессами. Стохастический процесс представляет совокупность «однородных» случайных величин, которые упорядочены во времени и определены в общем, выборочном пространстве. Множество всех возможных значений, которые могут принимать эти случайные величины, называется пространством состояний. Если совокуп- ность величин представлена как Хп Х2,..., то речь вдет о дискретном стохастиче- ском процессе, если же как {Х(£), t £ 0}, то о непрерывном. Пример 4.19. Рассмотрим систему массового обслуживания с одним устройством обслу- живания, например М/М/Х, с независимыми и одинаково распределенными интервала- ми времени между поступлениями Аь А2,..., независимым и одинаково распределенным временем обслуживания Sit 52, ••• и дисциплиной очереди FIFO. При генерировании слу- чайных величин Ai, А2,... и St, S2,... дискретный стохастический процесс для задержек в очереди (Z)1( Z>2,...) может быть определен как (см. задачу 4.14) Д =0, Di+i = тах{Д + - Д+1,0} для i = 1, 2.
298 Глава 4. Основы теории вероятностей и статистики Таким образом, моделирование отображает случайные входные величины (например, А,- и 5() в выходном стохастическом процессе Dt, Ь2,.... Здесь пространство состояний пред- ставлено множеством неотрицательных вещественных чисел. Обратим внимание, что Dt и Di+i являются положительно коррелированными. (Подумайте, почему?) Пример 4.20. Пусть в системе массового обслуживания (из примера 4.19) Q(t) обозна- чает количество требований в очереди в момент времени t. Тогда последовательность {Q(Z)> 0} представляет непрерывный стохастический процесс с пространством состоя- ний {0, 1, 2,...}. Пример 4.21. Допустим, что в системе управления запасами (из раздела 1.5) Q об- означает общую стоимость (то есть сумму затрат на приобретение заказа, затрат на хра- нение и издержек, связанных с нехваткой товаров) в месяц. В этом случае последова- тельность С1( С2,... отражает дискретный стохастический процесс с пространством состоя- ний, представленным неотрицательными вещественными числами. Иногда, для того чтобы сделать статистические выводы о стохастическом про- цессе по совокупности выходных данных, необходимо принять относительно него допущения, которые на практике не являются строго справедливыми. (Без таких допущений статистический анализ выходных данных может оказаться невыпол- нимым.) Например, можно допустить, что стохастический процесс является кова- риационно стационарным. Дискретный стохастический процесс Хь Х2,... считает- ся ковариационно стационарным, если Pi - ц для i - 1, 2,... и - оо < р < оо; о2 - ст2 для i- 1,2,... и о2 < оо, а Сц+j - Соу(Хй Xi+j) не зависит от i для j “1, 2,.... Таким образом, для ковариационно стационарного процесса среднее значение и дисперсия являются неизменными в течение всего времени (общее среднее зна- чение и общая дисперсия обозначаются соответственно как р и о2), а ковариация между двумя наблюдениями Х( и Xi+j зависит только от интервала j, а не от дейст- вительных значений времени ini +j. (Аналогично можно определить ковариаци- онно стационарный непрерывный стохастический процесс {X(t), t £ 0}.) Для ковариационно стационарного процесса ковариация и корреляция между Xj и Xj+> обозначаются соответственно как Q и р>, и имеют такую зависимость: для/ - 0, 1, 2,.... Пример 4.22. Рассмотрим выходной процесс Db D2,... в ковариационно стационарной системе (см. приложение 4А) массового обслуживания М/М/1 с коэффициентом за- грузки р = Х/ш < 1 (напомним, что Л. — это интенсивность поступления требований, а со — скорость обслуживания). Используя результаты некоторых работ [Daley, 1968], для этой системы можно вычислить корреляционную функцию р,, график которой при раз- ных значениях коэффициентов загрузки р (0,5 и 0,9) изображен на рис. 4.10. (Не путайте Р/ и р.) Из рисунка следует, что значения корреляции р, являются положительными и монотонно снижаются до нуля по мере увеличения/ В частности, pt - 0,99 при р - 0,9 и р! - 0,78 при р = 0,5. Более того, стремление р^к нулю происходит медленнее при р - 0,9.
4.3. Выходные данные и стохастические процессы моделирования 299 В действительности значение рм (как ни странно) равно 0,69. (В целом, как свидетельст- вует опыт, выходные процессы для систем массового обслуживания являются положи- тельно коррелированными.) Рис. 4.10. Корреляционная функция Pj процесса Dt, Dlt... для системы массового обслуживания М/М/1 Пример 4.23. Рассмотрим систему управления запасами (з, 5), где время задержки дос- тавки равно 0 и отсутствуют неприобретенные заказы. Для этой системы (ее упро- щенный вариант приведен в разделе 1.5) ожидаемые корреляции можно вычислить ана- литически. Пусть Ij mJi обозначают количество запасов соответственно до и после офор- мления заказа, a Q,- — спрос в i-м месяце. Допустим, что значения Q,- имеют распределе- ние Пуассона (см. раздел 6.2.3) со средним значением 25, то есть е~25(25У р(х) = P(Qj = х) = —* t ' для х - 0, 1, 2,.... В случае, если < s, заказывается 5 - единиц товара (Д - 5), и затраты в этом случае со- ставят К + i(S - /£), где К - 32, a i - 3. Если £ s, заказ не оформляется (Jf — I/), и затраты на выполнение заказа отсутствуют. После того как определено значение Ji, возникает спрос Qi- Если - 0,- i 0, вычисляются затраты на хранение Л(Д - Qi), где Л -1. Если Jt - Qi < 0, возникают издержки, связанные с нехваткой товара n(Q,- - J), где п - 5. В любом случае IM - Qi. Пусть С; обозначает общие расходы в течениег-го месяца. Допустим, что s — 17, S— 57, a I{ - S. Используя результаты исследовательских работ, приведенью в [Wagner, 1969, р. А19], можно вычислить корреляционную функцию р, для выходных процессов Cit С?,... (см. приложение 4А). График функции изображен на рис. 4.11. Обра- тим внимание, что корреляция р2 является положительной, поскольку для этой системы существует тенденция заказывать товар через месяц, что каждый раз вызывает сущес- твенные затраты. Корреляция pt является отрицательной, так как в случае заказа товара в определенном месяце (большие затраты), вероятно, в следующем месяце заказ не де- лают (незначительные затраты).
300 Глава 4. Основы теории вероятностей и статистики Рис. 4.11. Корреляционная функция ру процесса Cv Сг, ... для системы управления запасами (s, S) Если Xit Х2, ... — стохастический процесс, начавшийся в момент времени О, вполне вероятно, что такой процесс не является ковариационно стационарным (см. приложение 4А). Однако в некоторых имитационных моделях процесс Х^, ХИ2,... будет приблизительно ковариационно стационарным, если k имеет доста- точно большое значение; k — это продолжительность переходного периода работы системы (см. раздел 9.5.1). 4.4. Оценка средних значений, дисперсий и корреляций Предположим, что Xit Хг.Х„ являются независимыми и одинаково распределен- ными величинами (наблюдениями) с конечным математическим ожиданием ц и конечной дисперсией генеральной совокупности о2. В первую очередь необходи- мо оценить ц, а затем о2. В этом случае выборочное среднее t*. X(»)"=^j- (43) является несмещенной (точечной) оценкой ц; то есть Е[Х(п)] - ц (см. задачу 4.16). (Интуитивно, Х(п), будучи несмещенной оценкой р, означает, что при очень боль-
4.4. Оценка средних значений, дисперсий и корреляций 301 шом количестве независимых экспериментов, каждый из которых дает результат в значение Х(п), среднее значение Х(п) будет равно ц.) Аналогично выборочная дисперсия ±[Xt -Х(п)]2 52(п) = ^——---------- (4.4) представляет собой несмещенную оценку о2, поскольку Е[5*(п)] - о2 (см. зада- чу 4.16). Следует обратить внимание, что оценки Х(п) и ^(п) иногда обозначают- ся соответственно как ц и б2. _ Сложность использования Х(п) в качестве оценки ц без какой-либо дополни- тельной информации состоит в том, что невозможно определить, насколько близ- ко значение Х(п) к ц. Поскольку Х(п) является случайной величиной с дисперси- ей Var[X(n)], в одном эксперименте Х(п) может быть близко к ц, а в другом их значения могут существенно отличаться (см. рис. 4.12, для которого принято до- пущение, что величины X, являются непрерывными случайными величинами). Обычно, чтобы оценить точность Х(п) как оценки ц, необходимо построить дове- рительный интервал для ц (см. раздел 4.5). Первым шагом в построении довери- тельного интервала является оценка дисперсии Var[X(n)]. Поскольку величины X, являются независимыми, VaifX(n)] = Vaifltxjl = 4Vai{tX-'l = 4iVaI<Xi) = 4no2 <45> ) п kw ) п* <-1 п п Очевидным является то, что чем больше объем выборки п, тем ближе Х(п) бу- дет к ц (рис. 4.13). Кроме того, несмещенная оценка Var[X(w)] может быть получе- на путем замены о2 в формуле (4.5) на ^(п): V<¥(«)] = ^^ £[Х{ -Х(п)]2 и(«-1) Заметим, что в данном выражении для оценки дисперсии VaifX(л)] в знаменателе есть как п, так и п - 1, когда оно переписано в терминах величин Xt и [Х(п)].
302 Глава 4. Основы теории вероятностей и статистики Наконец, обратим внимание, что, если величины Xf являются независимыми, то они будут и некоррелированными, и, следовательно, р, - 0 для) “1,2,..., п-1. Как свидетельствует опыт, выходные данные моделирования практически всег- да являются коррелированными. Следовательно, вышеприведенные сведения о не- зависимых и одинаково распределенных наблюдениях не могут быть непосредст- венно применены к анализу выходных данных моделирования. Для того чтобы понять опасности обработки выходных данных моделирования, как будто они бы- ли независимы, воспользуемся ковариационно стационарной моделью, описанной в предыдущем разделе. Предположим, что случайные величины Х1( Х2,..., Х„ полу- чены из стационарного ковариационно стохастического процесса. Тогда выбороч- ное среднее Х(п) все еще остается несмещенной оценкой ц; однако выборочная дисперсия 5^(п) более не является несмещенной оценкой ст2. На самом деле можно доказать [Anderson, 1994, р. 448], что Е[52(п)] = о2 1-2^1______ п-1 (4-6) Таким образом, если Ру > 0 (положительная корреляция), как это часто бывает на практике, выборочная дисперсия 5®(п) будет иметь отрицательное смещение: £[5*(п)] < о2. Этот факт имеет большое значение, поскольку в некоторых про- граммных продуктах имитационного моделирования выборочная дисперсия 5^(п) используется для оценки дисперсии множества выходных данных моделирования, что может привести к существенным ошибкам при анализе. а б Рис. 4.13. Распределение Х(п): а — при малых значениях п; б — при больших значениях п Теперь рассмотрим вопрос оценки дисперсии выборочного среднего Var[X(n)] (которая в следующем разделе будет использоваться для построения доверитель- ного интервала для у), когда величины Хи Х2,..., Х„ получены из ковариационно стационарного процесса. Можно утверждать (см. задачу 4.17), что Var[X(n)] = о2 l + 2g(l-j7n)P> >-i п (4-7)
4.4. Оценка средних значений, дисперсий и корреляций 303 Следовательно, если оценивать Var[X(n)] по S®(n)/w (что правильно при неза- висимых и одинаково распределенных величинах), как это часто делалось ранее, существует два источника ошибки: смещение в оценке 5®(n), как и в оценке о2, и пренебрежение корреляцией в выражении (4.7). Фактически, если объединить формулы (4.6) и (4.7), получим Е п п-1 Var[X(n)], (4-8) где а(п) обозначает величину в квадратных скобках в выражении (4.7). Если р; > О, то a(n) > 1 и E[S?(n)/n] < Var[X(n)]. Пример 4.24. Предположим, что есть данные Dt, D2,.... D10 из процесса задержек Db D2,... для ковариационно стационарной системы массового обслуживания М/М/1 с р = 0,9. Тогда, заменив действительные корреляции р;- (где у - 1, 2,..., 9) в формулах (4.6) и (4.8), получим £[S2(10)] = 0,0328с2 и 52(10) 10 = 0,0034Var[D(10)], где £[Д-ДЮ)]2 c2=Vai(Di), Щ0) = 1^- и S2(10) = —------------§------. Таким образом, при усреднении S®(10)/10 возникает большое уменьшение дисперсии Var[D(10)], и, видимо, будет преувеличением считать, что значения .0(10) приближены кр-£(ОД Иногда может возникнуть необходимость оценить корреляцию р7 (или кова- риацию Cj) по данным Хь Х2,..., Х„. (Например, оценки р, можно подставить в вы- ражение (4.7), чтобы получить лучшую оценку Var[X(n)]; см. раздел 9.5.3.) В этом случае р; (для у - 1, 2,..., п - 1) может быть оценена как Л -X(n)][Xj+> -X(n)] р. = -Ь2_, Cj ;---------. (4.9) } 52(n) n-j Используются и другие оценки ру. Например, в выражении (4.9) для С j знаме- натель п -j можно заменить на п. Сложность с оценкой ру(или любой другой оцен- кой р?) состоит в том, что она: а) является смещенной, б) имеет большую диспер- сию, если п не принимает очень большие значения, и в) коррелированна с другими оценками корреляции, то есть Cov(p,, р*) * 0. (В частности, p„_t будет плохой оцен- кой р,,-!, поскольку она основана на единственном произведении - Х(п)][Хв - -Х(п)].) Следовательно, хорошие оценки р, трудно получить, если п не принимает очень большие значения и значение у мало по отношению к п.
304 Глава 4. Основы теории вероятностей и статистики Пример 4.25. Предположим, что имеются данные Db D2l.... D100 из процесса, рассмот- ренного в примере 4.24. На рис. 4.14 изображены графики оценки корреляции ру, вычис- ленной по формуле (4.9), и корреляции р? приУ -1,2 10. Следует обратить внимание, что качество оценок корреляции невысокое. Рис. 4.14. Графики корреляций р, и оценки корреляции р, процесса Di, D2, ... для системы массового обслуживания Л//Л//1 при р - 0,9 Заметьте, что оценки корреляции не обязательно будут равны нулю, если вели- чины являются независимыми, поскольку оценка fy —случайная величина. Таким образом, поскольку выходные данные моделирования являются корре- лированными, то формулы классической статистики, в основе которых лежат не- зависимые и одинаково распределенные наблюдения, не могут непосредственно использоваться для оценки дисперсий. Но, как предстоит узнать из главы 9, часто выходные данные моделирования группируют в новые наблюдения, к которым можно применять формулы, основанные на независимых одинаково распределен- ных наблюдениях. Следовательно, формулы из этого и двух следующих разделов, в основе которых лежат независимые одинаково распределенные наблюдения, мо- гут косвенно применяться при анализе выходных данных моделирования. 4.5. Доверительные интервалы и проверка гипотез о среднем значении Предположим, что Xit Х2,..., Х„ являются независимыми и одинаково распределен- ными случайными величинами со средним значением ц и конечной дисперсией о2. Допустим также, что о2 > 0, поэтому Х{ не являются случайными вырожденными величинами. Построим доверительный интервал для ц и получим дополнитель- ные сведения для критерия проверки гипотезы о том, что р - р0.
4.5. Доверительные интервалы и проверка гипотез о среднем значении 305 Начнем с формулировки самой важной в теории вероятностей центральной пре- дельной теоремы. Пусть Z„ будет случайной величиной [Х(п) - ц]7п2 a Fn(z) — функцией распределения Z„ для объема выборки п, то есть F„(z) - P(Z„ £ z) (здесь ц и ст2/» являются соответственно средним значением и дисперсией величины Х(п)). Тогда центральная предельная теорема [Chung, 1974, р. 169]) может быть сформу- лирована следующим образом. Теорема 4.1. Функция F„(z) -> Ф(з) при п -> <ю, где Ф(г) — функция распределения нор- мально распределенной случайной величины сц-Оист2-! (здесь и далее именуемой стандартной нормально распределенной случайной величиной — см. раздел 6.2.2), задает- ся таким образом Ф(г) = -А= )е-у2/2<^ м —OQ при -00 < Z < 00. Согласно теореме, если п — достаточно большое число, случайная величина Z„ будет приближенно распределена как стандартная нормально распределенная слу- чайная величина независимо от исходного распределения величин X? Можно также утверждать, что при больших значениях п выборочное среднее Х(п) приближенно распределено как нормально распределенная случайная величина со средним зна- чением ц и дисперсией ст2/». Сложность использования вышеприведенных результатов на практике состо- ит в том, что дисперсия ст2, как правило, не известна. Однако, поскольку выбороч- ная дисперсия 5®(п) стремится к ст2 по мере увеличения значений п, можно утвер- ждать, что теорема 4.1 останется справедливой, если заменить дисперсию ст2 на 5®(п) в выражении для случайной величины Z„. Учитывая эту замену, в соответст- вии_с теоремой, если п - достаточно большое число, случайная величина t„ “ - [Х(п) - ц]д/52(п)/п будет приближенно распределена как стандартная нор- мально распределенная случайная величина. Отсюда следует, что для больших значений п 1_а/2 /с-2/ ч , JS (п)/п J <;р <.X{n)+z{_a/2y X(n) z1_a/2 S2(n) п *1-а, (4.10) где zt_a/2 (при 0 < а < 1) является верхней критической точкой для стандартной нормально распределенной случайной величины (см. рис. 4.15 и последнюю стро- ку в табл. П.1 приложения в конце книги). Поэтому, если п — достаточно большое число, приблизительный 100(1 - а)-процентный доверительный интервал для ц задается как X(n)±zt_a/2^—^—. (4.11) Для определенного множества данных Xit Х^ Х„ нижняя конечная точка дове- рительного интервала 1(п, а), которая равна X(n) - z^a/2 y]S2(n)/n, и верхняя ко-
306 Глава 4. Основы теории вероятностей и статистики вечная точка доверительного интервала и(п, а), равная Х(п) + ^S2(n)/n, — это просто числа (фактически специальные реализации случайных величин), а до- верительный интервал [/(я, а), и(п, а)] либо содержит ц, либо нет. Таким образом, нет ничего вероятностного в отдельном доверительном интервале [/(п, а), и(п, а)] после того, как он получен, и конечным точкам интервала определены числовые значения. Правильной будет следующая интерпретация доверительного интервала в выражении (4.11): в ситуации, когда создается очень большое количество незави- симых 100(1 - а)-процентных доверительных интервалов, каждый из которых ос- новывается на п наблюдениях, где п — достаточно большое число, доля интерва- лов, которые содержат (покрывают) ц, будет равна 1 - а. Эта доля называется покрытием для доверительного интервала. Рис. 4.15. Функция плотности распределения вероятностей для стандартного нормального распределения Сложность использования выражения (4.11) при построении доверительного интервала для ц состоит в неопределенности «достаточно большого числа» п. Ока- зывается, что чем более асимметричным будет исходное распределение величин Хь тем большее значение п потребуется, чтобы распределение t„ было весьма близ- ко к Ф(г) (см. объяснения далее в этом разделе). Если взять слишком маленькое значение п, искомый 100(1 - а)-процентный доверительный интервал вообще бу- дет меньше 1 - а. Поэтому о доверительном интервале, определяемым выражени- ем (4.11), можо говорить, как о приблизительном. Учитывая вышеизложенное, разработаем альтернативное выражение для оп- ределения доверительного интервала. Если — это нормально распределенные случайные величины, случайная величина t„ = [Х(п) - p.]/j S2 (п) / п имеет t-рас- пределение с п - 1 степенями свободы (df - degrees of freedom) [Hogg and Craig, 1995, p. 181-182]), а точный (для любого n > 2) 100(1 - а)-процентный довери- тельный интервал для ц определяется как (4-12) где tn_t ^/2 —верхняя (1 -а/2)-я критическая точка для t-распределения с п - 1 сте- пенями свободы (эти критические точки приведены в табл. П.1 приложения в кон-
4.5. Доверительные интервалы и проверка гипотез о среднем значении 307 це книги). Графики плотности t-распределения с четырьмя степенями свободы и стандартного нормального распределения изображены на рис. 4.16. Следует за- метить, что кривая t-распределения меньше поднимается вверх и имеет более длинные хвосты, чем кривая нормального распределения, значит, для любого ко- нечного п справедливо tB4> > г^аГ1. Выражение (4.12) называется доверитель- ным интервалом t. Рис. 4.16. Функция плотности t-распределения с четырьмя степенями свободы и стандартного нормального распределения Величина, которая добавляется к Х(п) и вычитается из Х(п) в выражении (4.12), чтобы создать доверительный интервал, называется половиной длины дове- рительного интервала. Она является показателем того, насколько точно известно ц. Можно показать, что, если объем выборки в выражении (4.12) увеличить с п до 4п, то половина длины уменьшится приблизительно в два раза (см. задачу 4.20). На практике распределение величин Х( редко бывает нормальным и довери- тёйьный интервал, заданный выражением (4.12), также приблизителен в плане по- крытия. Поскольку t.a/2 > Zt.^, доверительный интервал, заданный выражени- ем (4.12), больше доверительного интервала, определенного по выражению (4.11), К имеет покрытие, более близкое к желательному уровню 1-а. По этой причине рекомендуется использовать выражение (4.12) при построении доверительного Интервала для ц. Заметим, что -> z^a/2 также, при п -> оо; в частности, t40.0>95 отличается от z0,9S менее чем на 3 %. Однако в большинстве случаев при примене- нии выражения (4.12) в главах 9,10 и 12 объем выборки п будет довольно неболь- шим числом, и разница между выражениями (4.11) и (4.12) станет ощутимой. Пример 4.26. Предположим, что 10 наблюдений 1,20; 1,50; 1,68; 1,89; 0,95; 1,49; 1,58; 1,55; 0,50 и 1,09 получены из нормального распределения с неизвестным средним значени - ем ц. Необходимо построить 90-процентный доверительный интервал для ц. Из этих данных имеем _ Х(10) - 1,34 и №(10) - 0,17. Доверительный интервал для ц Х(10) ± tg.0>95J^> = 1,34 ± 1,8зД^ = 1,34 ± 0,24.
308 Глава 4. Основы теории вероятностей и статистики Следует обратить внимание, что для построения доверительного интервала использова- лось выражение (4.12) и что значения tg.09S взяты из табл. П.1 приложения в конце кни- ги. Поэтому, учитывая вышеприведенные объяснения, можно утверждать, что значе - ние р. с 90-процентной вероятностью находится в интервале [1,10; 1,58]. Далее рассмотрим, каким образом распределение величин Х{ влияет на покры- тие доверительного интервала, заданного выражением (4.12). В табл. 4.1 представ- лена оценка покрытия для 90-процентных доверительных интервалов, основанная на 500 независимых экспериментах, при разных объемах выборки п (5,10,20 и 40) и таких распределениях: нормальном, экспоненциальном, «хи-квадрат» с одной степенью свободы (стандартная нормально распределенная случайная величина в квадрате — см. гамма-распределение в разделе 6.2.2), логнормальном (ег, где У — стандартная нормальная случайная величина — см. раздел 6.2.2), а также гиперэкс- поненциальном, функция распределения которого У(х) = 0,9Г1(х) + 0,1Г2(х), 1де fi(x) и F2{x) являются функциями распределения экспоненциальных случай- ных величин со средним значением соответственно 0,5 и 5,5. Таблица 4.1. Оценка покрытия на основании 500 экспериментов Распределение Асимметрия v «-5 и - 10 п-20 п - 40 Нормальное 0,00 0,910 0,902 0,898 0,900 Экспоненциальное 2,00 0,854 0,878 0,870 0,890 «Хи-квадрат» 2,83 0,810 0,830 0,848 0,890 Логнормальное 6,18 0,758 0,768 0,842 0,852 Г иперэкспоненциальное 6,43 0,584 0,586 0,682 0,774 Например, значение в ячейке табл. 4.1 для экспоненциального распределения и п - 10 получено следующим образом. Десять наблюдений сгенерировали по экс- поненциальному распределению с известным средним значением ц, а 90-процент- ный доверительный интервал построили с помощью выражения (4.12) и опреде- лили, содержит ли интервал среднее значение р (это один эксперимент). Затем всю процедуру повторили 500 раз, и доля интервалов, содержащих значение ц, в 500 доверительных интервалах составила 0,878. Заметим, что покрытие для нор- мального распределения и п - 10 составляет 0,902, а не ожидаемое 0,900, посколь- ку таблица создана на основании 500, а не бесконечного числа экспериментов. Как следует из табл. 4.1, для отдельного распределения, кроме экспоненциаль- ного, покрытие вообще становится ближе к 0,90 по мере возрастания и, что следу- ет из центральной предельной теоремы (см. задачу 4.22). (Результаты для экспо- ненциального распределения, вероятно, тоже отразили бы эту тенденцию, если бы было выполнено большее количество экспериментов.) Кроме того, для конкретно- го п покрытие уменьшается по мере увеличения асимметрии. Асимметрия определяется как £[(Х-ц)3] V = —-ПрИ -OO < V < оо. (а1)*
4.5. Доверительные интервалы и проверка гипотез о среднем значении 309 если|Г„| Асимметрия, которая является показателем симметрии, равна 0 при симмет- ричном распределении, подобном нормальному. На основании данных табл. 4.1 можно также заключить, что чем больше асимметрия распределения, тем больший объем выборки необходим для получения удовлетворительного (близкого к 0,90) покрытия. Допустим, что величины Xit Х2,..., Х„ являются нормально распределенными (или приближенно нормально распределенными) и что надо проверить нулевую гипотезу Но, согласно которой ц - Цо, где ggj- заданное, гипотетическое значение р. Интуитивно мы бы объяснили, что, если |X(n) - ml является большой величиной (напомним, что Х(п) — точечная оценка р.), гипотеза Но вряд ли окажется истин- ной. Однако, чтобы разработать критерий проверки гипотезы с известными стати- стическими свойствами, понадобится статистика (функция величины Хд, распре- деление которой известно, когда гипотеза Но истинна. Из вышесказанного вытекает, что если гипотеза Но истинна, статистика tn - - [Х(п) - Цо]/у]S2 (п) / п будет иметь ^-распределение с и - 1 степенями свободы. Таким образом, на основании интуитивного объяснения .«двусторонний» крите- рий проверки гипотезы р “ До может иметь следующую форму: >^-1.1-а/2 но опровергается; Ио принимается. Отрезок вещественной оси, соответствующий опровержению Но, а именно: множество всех х, для которых | х | > t„_t t_a/2, называется критической областью критерия, а вероятность попадания статистики t„ в критическую область при усло- вии, что гипотеза Но является истинной, естественно, равна а и называется уров- нем значимости (или размером) критерия. Как правило, выбирается уровень, рав- ный 0,05 или 0,10. Критерий проверки гипотезы, заданный в выражении (4.13), называется t-критерием. При проверке гипотезы встречается два типа ошибок. Если отрицать гипотезу Но, тогда как она верна, возникает ошибка первого рода. Вероятность ошибки пер- вого рода равна уровню а и, следовательно, находится под контролем эксперимен- татора. Если же принимать гипотезу Но, когда она ложна, появляется ошибка вто- рого рода. Для заданного уровня а и размера выборки п вероятность ошибки второго рода, которая обознается как р, зависит от того, что в действительности правильно (в сравнении с Но), и может быть неизвестна. Мы называем 5 — 1 - Р мощностью критерия; она равна вероятности опровержения гипотезы Но, когда она ложна. (Разумеется, желательно, чтобы критерий имел высокую мощность). При заданном а мощность критерия можно увеличить только путем увеличения п. Так как мощность проверки может быть невелика и неизвестна, далее, когда стати- стика tn не будет попадать в критическую область, будем считать, что гипотеза Но не опровергается (вместо «Но принимается»). Когда Но не опровергается, часто точно неизвестно, правильна Но или ложна, поскольку критерию, вероятно, недостает мощности, чтобы обнаружить различия между нулевой гипотезой Но и тем, что в действительности правильно.
310 Глава 4. Основы теории вероятностей и статистики Пример 4.27. Возьмем данные из примера 4.26. Предположим, что необходимо прове- рить нулевую гипотезу Но, согласно которой ц - 1 на уровне а = 0,10. Поскольку _ Х(10)-1 _ 0,34 ^5 (10)/10 да/io — 2,65 > 1,83 — ^о.95 > мы опровергаем Но. Пример 4.28. Для нулевой гипотезы Но, согласно которой ц = 1 в примере 4.27, можно оценить мощность критерия, когда величины X, на самом деле имеют нормальное рас- пределение со средним значением ц = 1,5 и стандартным отклонением а - 1. Сгенериро- вав 1000 независимых случайных наблюдений статистики Йо = [Х(10) - l]V52(10)/10 при допущении, что 1,5ио” 1 (величины Х{, конечно, нормально распределенные), получаем, что для 447 из 1000 наблюдений | tw | > 1,83, следовательно, оценка мощности 5 = 0,447. Таким образом, если ц - 1,5, а о = 1, можно опровергнуть нулевую гипотезу только приблизительно — в 45 % случаев для критерия на уровне а - 0,10. Чтобы опре- делить, как стандартное отклонение о влияет на мощность критерия, сгенерируем 1000 независимых случайных наблюдений статистики t10 при ц - 1,5 и о - 0,75 и 1000 наблю- дений статистики tw при ц - 1,5 и о = 0,5 (величины X, — нормально распределенные). Оценки мощности составляют соответственно 6 = 0,619 и 5 =0,900. Неудивительно, что мощность является убывающей функцией о, поскольку ожидается превышение разли- чия между действительным средним 1,5 и гипотетическим средним 1, когда а имеет не- большое значение. Следует обратить внимание, что при нормальной выборке, как, ска- жем, в этом примере, мощность критерия действительно может быть вычислена точно, поэтому необходимость моделирования, что было выполнено в данном случае, очевидна (см. работы по статистике [Bickel and Doksum, 1997)] со ссылкой на нецентральное t-распределение.) Следует отметить, что между доверительным интервалом, заданным выраже- нием (4.12), и критерием проверки гипотезы, заданным формулой (4ЛЗ), сущест- вует тесная связь. В частности, опровержение нулевой гипотезы Но, согласно ко- торой р - Цо, эквивалентно непопаданию ц0 в доверительный интервал для ц, при допущении, что одно и то же значение а используется для критерия проверки ги- потезы и доверительного интервала. 4.6. Усиленный закон больших чисел Вторым по важности в теории вероятностей (после центральной предельной тео- ремы) является усиленный закон больших чисел. Допустим, что Хь Х2,..., Х„ явля- ются независимыми и одинаково распределенными случайными величинами с ко- нечным средним ц, тогда усиленный закон больших чисел [Chung, 1974, р. 126] можно записать следующим образом. Теорема 4.2. Величины Х(п) —> ц с вероятностью 1 при п -> оо. Согласно теореме, при бесконечном количестве экспериментов, каждый из ко- торых завершается определением Х(п), а п является достаточно большим числом, значение Х(п) будет произвольно близко к р. почти во всех экспериментах.
4.7. Опасность замены распределения вероятностей его средним значением 311 Пример 4.29. Предположим, что Хь Х2 Х„ — независимые и одинаково распределен- ные случайные величины с ц = 1 и о2 = 0,01. На рис. 4.17 показан график значений Х(и) при различных п, полученных путем выборки из этого распределения. Следует обратить внимание, что при п £ 28 Х(п) отличается от ц менее чем на 1 %. Рис. 4.17. Величины X(ri) для различных пир, когда Xt являются нормально распределенными случайными величинами с ц - 1 и с2 - 0,01 4.7. Опасность замены распределения вероятностей его средним значением При выполнении имитационного моделирования аналитики иногда заменяют вход- ное распределение вероятностей его средним значением. Эта практика может быть вызвана недостаточным пониманием проблемы аналитиками или недостатком сведений о форме распределения (например, имеется информация только об оцен- ке его среднего значения). Приведенный ниже пример показывает, что такая заме- на может привести к неверным результатам. Пример 4.30. Рассмотрим производственную систему, состоящую из одного станка. Предположим, что заготовки деталей поступают на станок с интервалами, распределен- ными экспоненциально со средним значением 1 мин, и что время обработки на станке распределено экспоненциально со средним значением 0,99 мин. Следовательно, это сис- тема Л//Л//1 с коэффициентом занятости р - 0,99. Более того, можно утверждать, что средняя задержка детали в очереди при длительном прогоне составляет 98,01 мин (см. приложение 1Б или [Gross and Harris, 1998, р. 67]). Но если заменить распределе- ния соответствующими средними значениями (то есть, если детали поступают в момен- ты времени 1 мин, 2 мин,.... и время обработки каждой детали при этом составляет ровно 0,99 мин), ни одна деталь не будет ожидать в очереди. Обычно дисперсии, также как и средние значения входных распределений, влияют на выходные показатели систем, подобных системам массового обслуживания, о чем говорилось в приложении 1Б.
312 Глава 4. Основы теории вероятностей и статистики Приложение 4А Замечания по поводу ковариационно стационарных процессов Рассмотрим процесс {Dit i 1} для системы массового обслуживания Af/Af/l, в ко- торой на момент времени 0 нет требований. Разумеется, Dj == 0, но P(Di > 0) > 0 при i - 2,3,.... Следовательно, Еф^ - 0 и E(D?) > 0 при i - 2,3,..., это подразумевает, что процесс {Db i 1} не является ковариационно стационарным. Однако, если р < 1, можно утверждать, что при всех х 0 Р(£>; < х) -> (1 - р) + р(1 - е-(ш’х)х ), (4.14) как i -> оо. Из выражения (4.14) и равенства для Di+l в примере (4.19) следует, что, если удалить первые k наблюдений из процесса Dit D2.а значение k достаточно большое, процесс Л*+1, Л*+2, ... будет (приближенно) ковариационно стационар- ным. Поэтому, когда рассматривается процесс {Db i > 1} для ковариационно ста- ционарной системы массового обслуживания М/М/1, предполагается, что перед наблюдением первой задержки в очереди организован некоторый период .«разо- грева» системы. Рассмотрим процесс {Cb i 1} для системы управления запасами из приме- ра 4.23, если 1{ - 5. Поскольку Р(/{ = 5) * 1 при i - 2,3,..., то процесс {Cit i > 1} не яв- ляется ковариационно стационарным. Однако можно показать, что Р(С, 5х) стре- мится к функции предельного распределения при i —> оо [Wagner, 1969, р. А48]. Следовательно, процесс С*+1, С*+2,... будет (приближенно) ковариационно стацио- нарным при больших значениях k. Кроме того, корреляции, график которых изо- бражен на рис. 4.11, относятся к системе управления запасами, в которой перед на- блюдением первых расходов есть определенный переходный период. Задачи 4.1. Предположим, что X — дискретная случайная величина с вероятностной ме- рой, заданной как р(1) = 1/10, р(2) - 3/10, р(3) = 2/10, р(4) = 3/10 и р(5) - 1/10. А. Постройте график функции р(х). Б. Вычислите функцию F(x) и постройте для нее график. В. Вычислите вероятность Р(1,4 <, X <, 4,2), Е(Х) и Var(X). 4.2. Предположим, что X — непрерывная случайная величина с плотностью рас- пределения вероятностей заданной как 2 1 /(х) = х2+-х + - для 0 £х<, с. О о А. Определите, каким должно быть значение с. Приняв это значение с, вы- полните пункты Б, В и Г.
Задачи 313 х; Б. Постройте график функции /(х). В. Вычислите функцию Е(х) и постройте ее график. Г. Вычислите вероятность Р(1/3 <.Х<, 2/3), Е(Х) и Var(X). 4.3. Предположим, что X и Y — совместно дискретные случайные величины с 2 ~;---тг для х - 1, 2,..., п и у - 1, 2, Р(х,у) = < я(я + 1) ’ у • > 0 в противном случае. Вычислите вероятностир^х) тр-^у) и определите, являются ли величины X и Y независимыми. 4.4. Предположим, что X и Y — совместно дискретные случайные величины с х + у для х - О, 1, 2 и у - 0,1, 2, 3; в противном случае. РМ) = \ 30 .0 А. Вычислите и постройте графики функций Рх(х) и Рг(у). Б. Определите, являются ли величины X и Y независимыми? В. Вычислите функции Еж(х) и F/y) и постройте для них графики. Г. Вычислите математическое ожидание Е(Х), дисперсию Var(X), матема- тическое ожидание E(Y), дисперсию Уаг(У), а также ковариации Cov(X, У) и корреляции Сог(Х, У). 4.5. Являются ли величины Хи У из примера 4.10 независимыми, если осуществ- ляется выборка двух карт, выполненная с заменой? 4.6. Предположим, что X и У — совместно непрерывные случайные величины с дх>г/)_{32х3г/7, еслиО^х^! и 0^у<1; (0 в противном случае. Вычислите функции fax) и fay) и определите, являются ли величины X и У независимыми. 4.7. Предположим, что Хи У — совместно непрерывные случайные величины с если 0<х<1 и 1 < у < 2; в противном случае. А. Вычислите функции fx(x) я. fY (у) и постройте для них графики. Б. Определите, являются ли величины X и У независимыми. В. Вычислите функции F^x) и FJy) и постройте для них графики. Г. Вычислите математическое ожидание £(Х), дисперсию Var(X), математи- ческое ожидание £(У), дисперсию Уаг(У), ковариации Cov(X, Y) и корреля- ции Сог(Х, У). 4.8. Если Хи У — совместно непрерывные случайные величины с плотностью со- вместного распределения вероятностей / (х, у) и, кроме того, они независи- мы, докажите, что Cov(X, У) - 0. Следовательно, независимость величин X и У предполагает, что Е(Х,У) - Е(Х)£(У).
314 Глава 4, Основы теории вероятностей и статистики 4.9. Допустим, X — дискретная случайная величина с вероятностью Рх(х) - 0,25 при х - -2, -1, 1, 2. Пусть Y также будет дискретной случайной величиной, для которой У- X2. Разумеется, Хи У не являются независимыми. Тем не ме- нее покажите, что Cov(X, У) - 0. Следовательно, некоррелированные случай- ные величины не обязательно являются независимыми. 4.10. Предположим, что X, иХ2 — совместно нормально распределенные величины с плотностью совместного распределения вероятностей А1л2(^1>^2) =----/ 2z; , е'4'2 ДЛЯ-о0<Х!<00 и -00<Х2<«>, 2^4(1-р?2) где „ 1 Г(*1-Ц1)2 (*i -М1)(*2 -М2).(х2 -Мг)2 1-Р12|_ Ст1 °2 J Если р12 - 0, докажите, что X, и Х2 являются независимыми. 4.11. Допустим, что X и У — случайные величины, для которых У- аХ + Ь,лаиЬ — константы. Докажите, что r, Г+1 если а>0; Отсюда понятно, почему корреляцию определяют как показатель линейной зависимости. 4.12. Если X, и Х2 — случайные величины, то по неравенству Шварца E(X/)E(X22)2: £ [Е(ХЬ Х2)]2. Используя эти данные, докажите, что -1 < pj2 S 1. 4.13. Покажите, что для любых случайных величин Х„ Х2 и любых чисел аь а2 справедливо равенство Var(a1X1 + a^i^) = а/ Var(Xt) + 2afa2 Cov(X,, X2) + + a22Var(X2). 4.14. Докажите равенство для Di+l из примера 4.19. 4.15. Используя равенство для Di+i из примера 4.19, напишите программу на языке С или FORTRAN приблизительно с 15 строками кода, чтобы создать модель системы массового обслуживания М/М/1 со средним временем между по- ступлениями, равным 1, и средним временем обслуживания, равным 0,5. Выпол- няйте программу, пока не будет зарегистрировано 1000 задержек Д„ а также вычислите среднее значение задержки D (1000). Для написания программы требуются часы модельного времени, список событий или синхронизирующая программа. 4.16. Используя тот факт, что E(X"«i я,Х;) = Z"-i л,Е(Х; )для любых случайных ве- личин Хь Х2,..., Х„ и любых чисел аь а2,..., а„, покажите, что, если Х1( Х2,..., Х„ — независимые и одинаково распределенные величины со средним значе- нием ц и дисперсией ст2, тогда Е[(Х(п)] - р и Е[Х2(тг)] - ст2. Докажите, что пер- вый результат все еще имеет место, если величины Х(являются зависимыми. 4.17. Докажите, что равенство (4.7) справедливо.
Задачи 315 418. Для независимых и одинаково распределенных величин Хь Х2,.... со сред- ним значением р. и дисперсией о2 вычислите Cov[X(n), №(п)]. Когда эта кова- риация будет равна О? 419. Докажите, что равенство двух вероятностных утверждений в формуле (4.10) справедливо. 420. Докажите, что, если увеличить объем выборки с п до in для доверительного интервала, заданного выражением (4.12), половина длины уменьшится при- близительно в два раза. 4.21. Объясните, почему 90-процентный доверительный интервал в примере 4.26 содержит только 5 из 10 наблюдений. 4.22. Докажите, что для доверительного интервала, заданного выражением (4.12), покрытие стремится к 1 - а, если п —> °о. 4.23. Предположим, что 7,3; 6,1; 3,8; 8,4; 6,9; 7,1; 5,3; 8,2; 4,9 и 5,8 — это 10 наблюде- ний из распределения (не_очень асимметричного) с неизвестным средним значением ц. Вычислите Х(10), №(10) и приблизительный 95-процентный доверительный интервал для р. 4.24. Проверьте нулевую гипотезу Но для данных из задачи 4.23 с учетом того, что ц - 6 на уровне а - 0,05. 4.25. Предположим, что X и Y — случайные величины с неизвестной ковариацией Cov(X, У)- Если пары Xb Y{ (где i - 1,2,..., п) являются независимыми наблю- дениями X, Y, докажите, что £[X, -Х(П)][У; -У(п)] Cov(X,y) = -------------------- п-1 есть несмещенная оценка Cov(X, У). 426. Считается, что случайной величине X свойственно отсутствие последейст- вия, если Р(Х >t + s\X>t)- Р(Х > s) для всех t, s >0. Условная вероятность Р(Х > t + s | X> t) есть вероятностью события {X>t + s}, которое совершается при условии, что произошло событие {X > t} [Ross, 1997, chap. 3]. Докажите, что экспоненциальному распределению свойственно от- сутствие последействия. 4.27. Геометрическое распределение с параметром р (0 < р <1) имеет вероятност- ную меру р(х) - р(1 - р) для х - 0,1, 2. Докажите, что этому распределению свойственно отсутствие последействия.
Глава 5 Создание адекватных и детальных имитационных моделей 4 Понятие адекватности, верификации и валидации модели + Выбор оптимального уровня детализации модели 4- Методы отладки моделирующих компьютерных программ 4- Повышение валидации и доверия к модели 4- Функции руководителя при разработке модели 4 Статистические методы сравнения реальных наблюдений и выходных данных моделирования 5.1. Введение и определения Одна из наиболее сложных проблем, с которыми сталкивается аналитик имитаци- онного моделирования, состоит в определении, является ли имитационная модель точным представлением реальной системы, то есть адекватна ли модель системе. В этой главе рассмотрен вопрос о том, как создавать адекватные будущим систе- мам и достоверные модели. Кроме того, даны некоторые рекомендации относи- тельно выбора уровня детализации моделей сложных систем. Информация, при- веденная в этой главе, получена на основании данных существующей литературы, научных занятий, проводимых компанией Averill М. Law & Associates, а также опыта нескольких тысяч слушателей, посетивших с 1977 года впервые организован- ные автором курсы по имитационному моделированию. Для иллюстрации пред- ставленных концепций приведено более 30 примеров. Среди литературных источников можно выделить ряд работ, содержащих важ- ные сведения по валидации и верификации моделей [Balci, 1998; Banks, Carson and Nelson, 1996; Carson, 1986; Feltner and Weiner, 1985; Naylor and Finger, 1967; Sargent, 1996a; Shannon, 1975; Van Horn, 1971], а также по оценке существующих имитационных моделей [Fossett et al., 1991; Gass, 1983; Gass and Thompson, 1980; Knepell and Arangno, 1993]. Начнем с определения наиболее важных терминов, которые будут использова- ны в этой главе, включая верификацию, валидацию модели и доверие к модели. При верификации, то есть проверке достоверности модели, определяется, пра- вильно ли концептуальная имитационная модель (модельные допущения) преоб-
5.1. Введение и определения 317 разована в компьютерную программу, то есть выполняется отладка моделирующей компьютерной программы. Хотя само понятие верификации довольно простое, от- ладка большой моделирующей программы представляет собой трудную задачу, поскольку в ней может существовать множество логических путей. Методы про- верки моделирующей компьютерной программы рассмотрены в разделе 5.3. Валидация — это процесс, позволяющий установить, является ли имитацион- ная модель (не компьютерная программа) точным представлением системы для конкретных целей исследования. (Впервые определение было дано Фишманом и Кивиатом [Fishman and Kiviat, 1968].) Ниже приведены основные особенности проверки адекватности модели. ♦ Если имитационная модель «адекватна», ее можно использовать для приня- тия решений относительно системы, которую она представляет, как если бы они принимались на основании экспериментов с реальной системой. ♦ Сложность или простота проверки валидации моделируемой системы зависит от того, существует ли на данный момент версия этой системы (см. раздел 5.4.5). Например, модель находящегося недалеко банка оценивается относительно лег- ко, потому что можно непосредственно наблюдать за его функционировани- ем, тогда как адекватность модели эффективности системы морского оружия в 2025 году нельзя полностью исследовать, поскольку не известны место веде- ния боев и характер оружия противника. ♦ Имитационная модель сложной системы может только приблизительно соот- ветствовать оригиналу, независимо от того, сколько усилий потрачено на ее разработку, так как абсолютно адекватных моделей не существует. Чем боль- ше времени (а, значит, и денег) потрачено на разработку модели, тем более адекватной она должна быть. При этом наиболее адекватные модели не обяза- тельно оказываются самыми выгодными. Например, увеличение адекватности модели сверх определенного уровня может потребовать существенных денеж- ных затрат, поскольку для этого необходимо собрать множество данных, но не приведет к существенному улучшению понимания сути системы или прини- маемых решений. 4 Имитационная модель всегда должна разрабатываться для определенного мно- жества целей. В действительности модель, которая является адекватной для одной'цели, может не быть таковой для другой. ♦ Критерии оценки показателей, используемые при проверке валидации моде- ли, должны включать лиц, принимающих решения, которые будут фактиче- ски участвовать в оценке проектов системы. ♦ Валидация не нечто, что может предприниматься после разработки имитаци- ‘ онной модели, если на это останется время и деньги. Однако, как показывает опыт, на эту рекомендацию часто не обращают внимания. Пример 5.1. Некая организация заплатила консалтинговой компании 500 тыс. долларов за «исследование системы посредством имитационного моделирования». Когда иссле- дование предположительно было завершено, служащий из этой организации позвонил ипопросил рассказать ему за 5 мин, как проверить адекватность модели.
318 Глава 5. Создание адекватных и детальных имитационных моделей Имитационная модель и ее результаты достоверны, если менеджер и другие ру- ководители проекта признают их правильными. (Здесь и далее термин «менед- жер» применяется для обозначения руководителей, лиц, принимающих решения, и клиентов — в зависимости от контекста.) Следует обратить внимание, что адек- ватная модель не обязательно является достоверной, и наоборот. Модель может быть достоверной, но при этом не использоваться для принятия решений. Напри- мер, достоверная модель не может выступать в качестве адекватной по политичес- ким или экономическим причинам. Нижеперечисленные обстоятельства помога- ют установить доверие к модели: ♦ понимание менеджером допущений, принятых в модели, и его согласие с ни- ми (см. раздел 5.4.2); ♦ демонстрация проверки достоверности и правильности модели; ♦ право собственности и сопричастность менеджера к проекту; ♦ репутация разработчиков модели. Министерство обороны США часто пользуется имитационными моделями и в последние годы проявляет интерес к верификации, валидации, а также к кон- цепции, известной как аккредитация (W&A). Аккредитация [Defense Modeling and Simulation Office, 1996; Pace, 1998; Williams and Sikora, 1991] — это официаль- ное признание (возможно, спонсором проекта) того факта, что имитационная мо- дель подходит для определенных целей. Одна из причин, по которым Министе- рство обороны США считает аккредитацию необходимой, состоит в том, что во многих исследованиях посредством моделирования используются унаследован- ные модели, которые были разработаны с иными целями или другой военной орга- низацией. Проблемы, которые рассматриваются при решении об аккредитации, включают: ♦ проведенные верификацию и валидацию модели; + историю разработки и использования имитационной модели (в частности, кто является разработчиком модели и ее подобные применения); ♦ качество доступных данных; * качество документации; + некоторые известные проблемы или ограничения, связанные с имитацион- ной моделью. На рис. 5.1 показана схема координации и взаимосвязи верификации, валида- ции и установления доверия к модели. Прямоугольники представляют состояния модели или интересующей нас системы, сплошные горизонтальные стрелки соот- ветствуют действиям, необходимым, чтобы перейти от одного состояния к друго- му, а изогнутые пунктирные стрелки показывают, где лучше всего использовать три главные концепции. Цифры под каждой сплошной стрелкой соответствуют этапам изучения системы посредством моделирования (см. раздел 1.7). Стрелки обратной связи на рисунке не приведены. Валидацию можно противопоставить анализу выходных данных (что является темой глав 9-12), который представляет собой скорее статистическую задачу, свя- занную с оценкой истинности полученных показателей от имитационной модели
5.2. Рекомендации по определению уровня детализации модели 319 (не обязательно системы). При анализе выходных данных нас интересуют продол- жительность прогона имитационной модели, продолжительность переходного пе- риода (если такой есть) и число независимых прогонов имитационной модели (для которых используются разные случайные числа). Валидация Верификация Валидация Обеспечение доверия Анализ и данные Программирование Прогоны имитационной модели Представление результатов руководству проекта Рис. 5.1. Схема координации и взаимосвязи валидации, верификации и установления доверия к модели Чтобы лучше представлять различия между валидацией и анализом выходных данных, предположим, что требуется оценить среднее значение какой-либо сис- темы. Допустим, что создается имитационная модель, у которой соответствующее среднее значение равно Выполним прогон имитационной модели и получим оценку цм—Тогда ошибка в |3М как оценке Мм= 1Дм ~ Msl = ~ 1Ам ~ Мм + Мм ~ Msl = ~ 1Мм _ Мм1 + 1мм ~ Msl (по аксиоме треугольника). При валидации предпочтительнее сделать небольшим второе абсолютное зна- чение (в последней строке), тогда как при анализе выходных данных лучше сде- лать небольшим первое абсолютное значение. Таким образом, чтобы получить оп- тимальную оценку среднего значения системы, необходимо уделять внимание как валидации модели, так и анализу выходных результатов. 5.2. Рекомендации по определению уровня детализации модели При имитационном моделировании разработчику надо определить, какие аспекты реальных сложных систем нужно отразить в имитационной модели, какой уро- вень детализации при этом должен быть достигнут, а также какие аспекты можно пропустить. Как правило, только в редких случаях необходимо точное соответст- вие между всеми элементами системы и модели. Моделирование буквально всех аспектов системы часто не требуется, да оно и не достижимо из-за ограничений, связанных со временем, денежными расходами и возможностями компьютеров.
320 Глава 5. Создание адекватных и детальных имитационных моделей Пример 5.2. Предприятию, выпускающему корм для собак, консалтинговая компания разработала имитационную модель производственной линии с постоянной продуктив- ностью 1 млн консервных банок корма в день. В модели каждая консервная банка была представлена как отдельный объект. Прогон этой модели обошелся очень дорого, и она не принесла особой пользы. Через несколько лет модель переписали, при этом произ- водственный процесс рассматривался как «непрерывный поток» (см. раздел 1.2). Новая модель дала точные результаты, и ее прогон занял лишь небольшую часть того времени, которое понадобилось для прогона первоначального варианта модели. Пример 5.3. В 1985 году была создана имитационная модель фабрики длиной 1,5 мили (2,4 км). Стоимость этой модели составила 250 тыс. долларов. Однако она оказалась на- столько детально разработанной, что ни один ее прогон так и не удалось выполнить, так как для этого требовался слишком большой объем компьютерной памяти. Ниже приведены рекомендации по определению уровня детализации имитаци- онных моделей [Law, 1991; Robinson, 1994]. ♦ Тщательно определить проблемы, которые будут исследованы при анализе, и рабочие показатели, которые необходимо оценивать. Модели не бывают уни- версально адекватными, они разрабатываются для конкретных целей. Если про- блемы исследования не очерчены, невозможно определить нужный уровень детализации модели. Поскольку некоторые модели могут использоваться для точной оценки одного критерия работы, но совершенно не подходят для дру- гого, очень важно указать искомые критерии оценки работы. Так, простая мо- дель производственной системы может помочь точно прогнозировать ее про- изводительность (то есть сколько деталей будет изготовляться за один день), но окажется неадекватной при вычислении площади, необходимой для функ- ционирования производства (см. пример 13.4). Наконец, очень важно знать, что именно менеджеру нужно выяснить. Даже очень удачную модель нельзя будет применить, если она разработана для решения не той проблемы. Про- блема обычно формулируются на совещании в присутствии лиц, представляю- щих все ключевые аспекты системы. Пример 5.4. В США военный аналитик работал над имитационной моделью в течение 6 мес., не взаимодействуя с генералом, который подал на нее заявку. Генерал покинул брифинг по вопросу этого исследования, проводившийся в Пентагоне, через 5 мин после начала, заявив, что речь идет не о той проблеме, которая его интересует. ♦ Необходимо принимать во внимание, что объект, движущийся в имитацион- ной модели, не всегда полностью соответствует объекту системы, который она представляет (см. пример 5.5). Более того, часто нет необходимости детально моделировать каждый компонент системы (см. пример 5.26). Пример 5.5. Крупная компания по производству продуктов питания создала имитаци- онную модель производственной линии для изготовления крекера. Сначала разработчи- ки попытались представить каждую штуку крекера как отдельный объект, но ресурсы, необходимые при таком подходе для вычислений, сделали его неосуществимым. В ре- зультате компании пришлось в качестве объектов представить коробки с крекером, дви- жущиеся в модели. Адекватность такого подхода была определена с помощью анализа чувствительности (см. далее, а также пример 5.25).
5.2. Рекомендации по определению уровня детализации модели 321 4- Чтобы определить уровень детализации модели, надо обратиться к специали- стам по исследуемым вопросам и у тех из них, кто сталкивался с системами, подобными моделируемой, выяснить, какие компоненты предложенной сис- темы имеют наибольшее значение и, следовательно, должны быть тщательно смоделированы. Кроме того, необходимо прибегнуть к анализу чувствитель- ности (см. раздел 5.4.4), чтобы определить, какие факторы системы (например, параметры распределений) оказывают наибольшее влияние на искомые рабо- чие показатели. Если время разработки модели ограничено, особенно важно сосредоточиться на наиболее значимых факторах. ♦ Ошибка начинающих разработчиков имитационных моделей нередко состоит в том, что они включают в свои модели слишком много деталей. Поэтому ре- комендуется начинать со «среднего уровня детализации» модели, при необхо- димости такие модели можно впоследствии сделать более детальными. В не- которых случаях для определения адекватности модели ее представляют на рассмотрение специалистам по исследуемым в ней вопросам и менеджерам. Кроме того, постоянно взаимодействуя с упомянутыми лицами, можно под- держивать у них интерес к исследованию системы посредством имитационно- го моделирования. Пример 5.6. Нами была разработана имитационная модель системы по производству кормов для домашних животных, которая состояла из мясоперерабатывающего и кон- сервного цехов. В мясоперерабатывающем цехе мясо либо мелко рубилось, либо нареза- лось крупными кусками и помещалось в ведерки, после этого оно передавалось по под- весному конвейеру в консервный цех. В консервном цехе мясо выгружалось в миксеры, после обработки в которых оно распределялось в наполнители и закаточные машины. Пустые ведерки передавались обратно в мясоперерабатывающий цех для наполнения. Изначально мы решили, что система, производящая мясо, порезанное на куски, не имеет особого значения, поэтому она моделировалась упрощенно. Однако при структурном разборе модели (см. раздел 5.4.3) операторы машин заявили, что данная подсистема в действительности гораздо более сложная. Чтобы эти участники проекта подтвердили правдоподобие модели, пришлось учесть в модели поломки машин и соперничество за ресурсы. Более того, после прогонов первоначальной модели в нее потребовалось вне- сти дополнительные изменения, предложенные оператором миксера. 4 Не надо вводить в модель больше деталей, чем требуется для интересуемых проблем, однако нужно вносить дополнительные условия, чтобы модель была достаточно детальной и считалась правдоподобной. Исходя из валидации мо- дели в нее иногда приходится включать элементы, не являющиеся строго обя- зательными с точки зрения ее правдоподобия. 4- Уровень детализации модели должен согласовываться с видом исходных дан- ных. Так, модель, созданная для проектирования новой производственной сис- темы, будет не столь детально проработана, как модель, применяемая для ре- тулировки существующей системы, поскольку по новой системе может быть мало данных или не быть вообще. 4-- Практически все имитационные исследования связанны с ограничениями во времени и в денежных средствах, которые являются главными факторами при определении уровня детализации модели.
322 Глава 5. Создание адекватных и детальных имитационных моделей 4 Если при исследовании системы необходимо учесть множество факторов (ас- пектов), следует воспользоваться «грубой» имитационной моделью или ана- литической моделью, чтобы определить, какие факторы из всего множества будут иметь наибольшее влияние на системные показатели. Затем нужно соз- дать «подробную» имитационную модель, в которой делается ударение на ус- тановленные ранее факторы [Haider, Noller, Robey, 1986]. Надо также иметь в виду, что существуют коммерческие программные пакеты, предназначенные для проведения анализа с применением аналитической модели к производст- венным системам и сетям связи. Кроме того, определить факторы, важные для моделирования, можно с помощью статистических экспериментальных пла- нов (см. главу 12). 5.3. Верификация моделирующих компьютерных программ В этом разделе рассмотрены восемь методов, которые можно использовать при от- ладке компьютерной программы для имитационной модели. Одни из этих методов применимы к любым компьютерным программам, другие же предназначены ис- ключительно для имитационного моделирования. Метод 1 При разработке имитационной модели компьютерную программу лучше писать и отлаживать по модулям или подпрограммам. На примере имитационной модели, содержащей 10 тыс. операторов, не сложно убедиться, что не стоит писать сразу всю программу, перед тем как попытаться выполнить ее отладку. Если запустить такую большую программу непроверенной, она скорее всего не будет выполнять- ся, а определить, где в ней содержатся ошибки, будет чрезвычайно трудно. Поэто- му следует сначала написать и отладить основную программу, а также некоторые ключевые подпрограммы, возможно, представив остальные необходимые програм- мы как «фиктивные» или «заглушки». Затем нужно добавлять и последовательно отлаживать дополнительные подпрограммы или уровни детализации, до тех пор пока модель не станет удовлетворительно отображать исследуемую систему. Все- гда лучше начинать со «среднего уровня детализации» модели (который затем бу- дет постепенно усложняться до нужного уровня), нежели сразу приступить к раз- работке сложной модели. Иначе модель может получиться более сложной, чем необходимо, и чрезмерно дорогой при выполнении (дальнейшая информация по этому вопросу — в примере 5.25). Пример 5.7. При создании модели банка с несколькими кассами и возможностью пере- хода из одной очереди в другую лучше всего сначала написать и отладить программу, в которой клиенты не переходят из очереди в очередь. Метод 2 Когда разрабатываются крупные имитационные модели, желательно, чтобы ком- пьютерную программу проверяли несколько человек, так как разработчик может слишком свыкнуться со своей программой и не заметить ошибки. В некоторых ор- ганизациях этот подход осуществляется на практике. Он называется структур-
5.3. Верификация моделирующих компьютерных программ 323 ним разбором. Например, всех членов группы, работающей над созданием имита- ционной модели, то есть специалистов по системному анализу, программистов и других работников, собирают вместе и каждому выдают копии подпрограмм, ну- ждающихся в отладке. Затем разработчик проводит их проверку, но не переходит от одного оператора к другому, пока все не убедятся, что оператор правильный. Метод 3 Иногда, чтобы убедиться, что получены удовлетворительные результаты, доста- точно выполнить прогон имитационной модели с различными входными парамет- рами. В некоторых случаях можно точно вычислить простые рабочие показатели и воспользоваться ими для сравнения (см. раздел 13.6). Пример 5.8. Можно утверждать, что для многих систем массового обслуживания с 5 па- раллельными устройствами обслуживания средняя занятость устройств при продолжи- тельном периоде работы будет р - k/(sa) (обозначения см. в приложении 1Б). Таким об- разом, если средняя занятость, полученная в результате прогона имитационной модели, близка к коэффициенту использования р — система работает правильно. Метод 4 Одним из наиболее мощных методов, применяемых для отладки дискретно-собы- тийных имитационных программ, является трассировка. При трассировке состоя- ние моделируемой системы, то есть содержание списка событий, переменные со- стояния, некоторые статистические счетчики и другие данные, выводятся на экран после возникновения каждого события и сравниваются с вычислениями, получен- ными вручную, чтобы убедиться, что система функционирует так, как требуется. При трассировке желательно оценить все возможные ветви программ, а также способность программ обрабатывать «предельные» условия. Иногда при такой полной оценке может понадобиться, чтобы для модели были подготовлены специ- альные (возможно, детерминированные) входные данные. Большинство пакетов имитационного моделирования дают возможность проводить трассировку. Пакетная трассировка часто предоставляет большой объем выходных данных, которые должны быть проверены по событиям на ошибки. К сожалению, некото- рая ключевая информация при трассировке может быть упущена (то есть анали- тик может не запросить ее) или, что еще хуже, определенная ошибка может не произойти при «коротком» прогоне имитационной модели с целью отладки. Лю- бые затруднения потребуют повторного прогона имитационной модели. Поэтому обычно для поиска ошибок лучше использовать интерактивный отладчик. Интерактивный отладчик позволяет аналитику остановить прогон имитаци- онной модели в выбранный момент времени и изучить или изменить значения не- которых переменных. Последняя возможность может использоваться для того, чтобы вызвать возникновение некоторых типов ошибок. Интерактивными отлад- чиками снабжены многие современные пакеты имитационного моделирования. Пример 5.9. В табл. 5.1 показана трассировка для интуитивного объяснения работы сис- темы массового обслуживания с одним устройством, которую мы рассматривали в раз- деле 1.4.2. Первая строка таблицы описывает систему сразу после инициализации в мо- мент времени 0, вторая строка — после возникновения первого события (поступления требования) и т. д.
Таблица 5.1. Частичная трассировка системы массового обслуживания с одним устройством обслуживания Событие Часы * Состояние устройства Число требований в очереди Время поступления Список событий Число задержанных требований Общая задержка Площадь под функцией для определения числа требований t в очереди Площадь под функцией для определения занятости устройства Прибытие Уход Инициализация 0 0 0 0,4 0 0 0 0 Поступление 0,4 1 0 1,6 2,4 1 0 0 0 Поступление 1,6 1 1 1,6 2,1 2,4 1 0 0 1,2 Поступление 2,1 1 2 1,6; 2,1 3,8 2,4 1 0 0,5 1,7 Уход 2,4 1 1 2,1 3,8 3,1 2 0,8 1,1 2,0 Уход 3,1 1 0 3,8 3,3 3 1,8 1,8 2,7 Уход 33 0 0 3,8 3 1,8 1,8 2,9 324 Глава 5. Создание адекватных и детальных имитационных моделей
5.3. Верификация моделирующих компьютерных программ 325 Метод 5 Прогон имитационной модели по возможности должен быть выполнен при упро- щающих допущениях, для которых известны или могут быть легко вычислены ис- тинные характеристики модели. Пример 5.10. Для модели цеха, приведенной в разделе 2.7 нельзя аналитически вычис- лить искомые характеристики системы. Поэтому приходится прибегнуть к имитацион- ному моделированию. Для того чтобы устранить ошибки в имитационной модели, можно сначала прогнать об- щую модель, описанную в разделе 2.7.2, с одним рабочим местом, одним станком на этом месте и единственным типом работ (тип 1, для которого характерна интенсивность по- ступления 0,3/0,25 -1,2 работы в час). В результате мы должны получить модель систе- мы массового обслуживания, знакомую уже как M/E-Ji, характеристики переходного и установившегося состояний которой известны (см. работы [Kelton, 1985; Gross and Harris, 1998, p. 132]). В табл. 5.2 приведены теоретические значения установившегося состояния среднего числа требований в очереди, среднего коэффициента использования и средней задер- жки в очереди, а также оценки этих величин, полученные после прогона продолжитель- ностью 2 тыс. 8-часовых дней. Поскольку оценки очень близки к теоретическим значе- ниям, есть некоторая доля уверенности в правильности компьютерной программы. Таблица 5.2. Теоретические значения (Т) и оценки (О) для упрощенной модели цеха (система массового обслуживания M/E^/i) Среднее число в очереди Средний коэффициент использования Средняя задержка в очереди Т О т о Т О 0,676 0,685 0,600 0,604 0,563 0,565 Более точную проверку можно осуществить, если прогнать общую модель, рассмот- ренную в разделе 2.7.2, с пятью рабочими местами, первоначальным числом станков на каж- дом месте 3,2,4,3,1, единственным типом работ (тип 1) и экспоненциально распреде- ленным временем обслуживания (с тем же средним значением, которое было у соотве- тствующего времени обслуживания, распределенного по закону Эрланга 2-го порядка) на каждом рабочем месте. В итоге мы получим модель, которая по сути представляет собой четыре последователь- ные системы массового обслуживания с несколькими устройствами: первая система — 1И/1И/3, вторая —М/М/1 и т. д. Время между уходами работ из системы M/M/s (з — чис- ло устройств обслуживания), которая работала в течение длительного времени, являет- ся независимыми и одинаково экспоненциально распределенными случайными величи- нами [Gross and Harris, 1998, р. 167]. И более того, характеристики установившегося состояния для системы M/M/s известны [Gross and Harris, 1998, р. 69]. В табл. 5.3 для каждого рабочего места даны теоретические значения установившегося состояния среднего числа требований в очереди, среднего коэффициента использова- ния и средней задержки в очереди, а также оценки этих величин, полученные в результа- те прогона продолжительностью 2 тыс. 8-часовых дней. Полученные значения опять очень близки к теоретическим, что повышает уверенность в правильности программы.
326 Глава 5. Создание адекватных и детальных имитационных моделей Таблица 5.3. Теоретические значения (Т) и оценки (О) для упрощенной модели цеха (четыре последовательные системы массового обслуживания с несколькими устройствами) Рабочая станция Среднее число в очереди Средний коэффициент использования Средняя задержка в очереди т О Т О Т О 3 0,001 0,001 0,150 0,149 0,001 0,001 1 0,012 0,012 0,240 0,238 0,010 0,010 2 0,359 0,350 0,510 0,508 0,299 0,292 5 0,900 0,902 0,600 0,601 0,750 0,752 Пример 5.11. Для крупного провайдера мобильной связи нами разработана имитацион- ная модель с целью определения коэффициента готовности при длительной эксплуата- ции (доля времени, когда система исправна) нескольких альтернативных конфигураций сети. Сначала мы попытались вычислить коэффициент, используя аналитические сред- ства, в частности непрерывные цепи Маркова и условное математическое ожидание [Ross, 1997], но смогли получить результаты только для простых случаев, поэтому при- шлось прибегнуть к имитационному моделированию. После этого появилась возмож- ность частично проверить имитационную модель, сравнивая результаты моделирования и показатели, полученные в простых случаях аналитическим путем. Метод 6 В некоторых типах имитационных моделей бывает полезно просмотреть анима- цию выходных данных моделирования (см. раздел 3.4.3). Пример 5.12. Разработанная имитационная модель сети перекрестков потока автомоби- лей после отладки некоторое время использовалась для изучения влияния различных режимов регулировки движения с помощью светофоров. Однако анимация смоделиро- ванного движения машин показала, что в действительности они сталкиваются на пере- крестках. При проверке компьютерной программы обнаружили несколько ранее ненай- денных ошибок. Метод 7 Иногда для проверки достоверности программы требуется вычислить выборочное среднее значение и выборочную дисперсию для каждого входного распределения вероятностей и сравнить их с требуемым (например, за прошлое время) средним значением и дисперсией. Метод предполагает, что значения правильно сгенериро- ваны из этих распределений. Пример 5.13. Определение параметров гамма-распределения и распределения Вейбул- ла отличается в различных пакетах имитационного моделирования и книгах. Следова- тельно, в этом случае данный метод будет очень полезен. Метод 8 Чтобы меньше программировать, можно воспользоваться коммерческим пакетом имитационного моделирования. Однако применять его следует осторожно (осо- бенно, если он недавно появился), поскольку в нем могут быть неявные ошибки. Кроме того, пакеты имитационного моделирования содержат мощные макроопе- раторы высокого уровня, которые иногда могут быть плохо документированы.
5.4. Методы повышения валидации и доверия к модели 327 5.4. Методы повышения валидации и доверия к модели В этом разделе речь идет о шести классах методов повышения валидации и прав- доподобия имитационной модели. 5.4.1. Сбор высококачественной информации и данных о системе При разработке имитационной модели аналитик должен использовать всю дос- тупную информацию, которая может быть получена разными методами. Консультации со специалистами по теме Имитационная модель не есть абстракция, разработанная аналитиком, работаю- щим в изоляции. На самом деле разработчику нужно взаимодействовать со многи- ми людьми, знакомыми с самой системой. Один человек или документ не смогут дать всей информации, необходимой для создания модели. Поэтому аналитик должен проявить некоторую изобретательность, чтобы собрать полную и точную информацию о системе. Нужно очень осторожно подходить к выбору специали- стов, с которыми приходится консультироваться по каждой подсистеме, чтобы не получить данные, содержащие систематическую погрешность (см. пример 5.19). Процесс сбора информации очень ценен сам по себе, даже если изучение системы посредством моделирования не будет проведено. Следует обратить внимание на то, что, поскольку требования к системе могут изменяться в процессе ее изучения, разработчику модели может понадобиться постоянно консультироваться со спе- циалистами по исследуемым вопросам. Пример 5.14. Для моделирования производственной системы разработчики должны по- лучить информацию от операторов станков, инженеров-технологов, инженеров по орга- низации производства, от обслуживающего персонала, планировщиков, менеджеров и изучить проекты системы. Пример 5.15. При моделировании системы связи могут понадобиться советы пользова- телей, проектировщиков сетей, специалистов по технологиям связи (например, комму- тационной или спутниковой связи), системных администраторов, разработчиков, об- служивающего персонала и менеджеров. Наблюдение за системой Если система, подобная исследуемой, уже существует, то с ее помощью можно со- брать данные, которые будут использоваться при моделировании. Эти данные мо- гут быть получены по архивным записям или собраны путем анализа работы систе- мы. Поскольку данные могут предоставлять люди, не являющиеся разработчиками имитационных моделей, очень важно соблюдать два принципа: * разработчикам моделей необходимо убедиться, что требования к данным (тип, формат, количество, указание, зачем нужны эти данные, и т. д.) точно заданы лицам, которые должны их предоставить; ♦ разработчики моделей должны понимать процесс, в результате наблюдения за которым получены данные, а не просто рассматривать показатели как абстрактные цифры.
328 Глава 5. Создание адекватных и детальных имитационных моделей Ниже перечислены проблемы, которые могут возникать при работе с данными? ♦ Данные не представляют то, что в действительности необходимо моделировать. Пример 5.16. Данные, собранные во время военных испытаний в полевых условиях (см. раздел 5.4.5), не могут использоваться для реальных боевых ситуаций из-за разли- чий в поведении войск и недостаточной задымленности территории (см. задачу 5.1). ♦ Данные не имеют подходящего типа или формата. Пример 5.17. При моделировании производственной системы самый крупный источ- ник случайности обычно представлен случайным временем, когда станок неисправен. В идеале нам нужны данные о времени безотказной работы (в единицах времени заг нятости станка) и времени ремонта станка. Иногда доступны данные о поломках стан- ков, но часто они имеют неподходящий формат. Например, время безотказной работы может учитываться по настенным часам и включать периоды, когда станок был свободен или не работал в перерывах между сменами. . м ♦ В данных могут быть ошибки измерения, записи или округления. Пример 5.18. Рассмотрим набор данных, которые представляют время, необходимое для выполнения какой-либо задачи, при этом продолжительность ее выполнения явля- ется случайной величиной. Опыт показывает, что при записи такие данные нередко сильно округляют (возможно, до ближайших 5 мин), что усложняет подбор для них не- прерывного распределения (см. главу 6). ♦ Данные могут быть необъективными для собственной выгоды. Пример 5.19. Отдел технического обслуживания автомобильного завода указал более высокие показатели надежности некоторых машин, чем они были в действительности, чтобы эти машины казались лучше. ’ ‘ ♦ Данные могут быть представлены в несовместимых единицах. ,.,-j Пример 5.20. Управление по перевозкам США обеспечивает транспортировку военных грузов воздушным, наземным и морским транспортом. Иногда при создании имитаци- онных моделей возникает путаница, поскольку в Военно-воздушных силах США и Су- хопутных силах США масса груза измеряется в коротких тоннах (2000 фунтов, то есть 907,18 кг), а в Военно-морских силах пользуются длинными тоннами (2200 фунтов, или 1016,05 кг). Существующая теория Если, например, необходимо создать модель такой системы обслуживания, каК банк, в котором интенсивность прихода клиентов остается постоянной в течений некоторого времени, то, согласно теории, отрезки времени между приходами кли- ентов в такой модели, скорее всего, будут представлены независимыми и одинакО- во экспоненциально распределенными случайными величинами. Иными словами,- клиенты будут приходить в соответствии с процессом Пуассона (см. раздел 6.1ОД и пример 6.4). ч ' Результаты, полученные в ходе моделирования подобных систем Если разрабатывается имитационная модель, подобные которой создавались уже много раз (допустим, модель наземных боев), следует отыскать результаты изуче- ния подобных систем посредством имитационного моделирования и по возмож- ности их применить.
5.4. Методы повышения валидации и доверия к модели 329 Опыт и интуиция разработчика Разработчикам часто приходится использовать собственный опыт или интуицию, чтобы построить гипотезы о том, как будут действовать некоторые компоненты сложных систем, особенно, если система, подобная моделируемой, на данный мо- мент не существует. Надо надеяться, что в дальнейшем эти гипотезы будут под- тверждены. 5.4.2. Регулярное взаимодействие с менеджером В данном разделе рассмотрена одна из наиболее важных идей этой главы, исполь- зование которой позволит существенно увеличить вероятность того, что модель будет полностью использована в процессе принятия решения. Очень важно, что- бы разработчик модели регулярно взаимодействовал с менеджером входе исследо- вания системы посредством имитационного моделирования. Такой подход выго- ден по многим причинам. ♦ Когда начинается изучение системы путем моделирования, точного представ- ления о решаемом вопросе еще может и не быть. Когда же по мере изучения X этот вопрос становится яснее, соответствующая информация должна доводить- ся до сведения менеджера, который может переформулировать цели исследо- вания. Ведь даже самая лучшая модель, созданная при неправильной поста- новке задачи, будет неадекватной! ♦ Сотрудничество разработчика с менеджером поддерживает у менеджера инте- рес к проекту и ощущение сопричастности к нему. ♦ Знание менеджером системы способствует созданию модели, польностью аде- кватной системе. ♦ Модель будет более правдоподобной, когда менеджер понимает и поддержи- вает допущения, принятые в модели. Действительно, очень важно согласовать , принятые в модели ключевые допущения с менеджером (и другими специали- стами). Таким образом можно заставить его поверить, что разрабатываемая модель будет подходящей, поскольку он сам помог в ее разработке. 5.4.3. Документальная поддержка предположений и структурированный критический анализ В этом разделе уделено внимание еще двум очень важным идеям. Одна из них за- ключается в том, что полезно записывать предположения, принятые для имитаци- онной модели, в отчете, который можно назвать документом о допущениях (или концептуальной моделью). Его нужно составить так, чтобы с ним могли работать инженеры, менеджеры и др. В отчете должны быть представлены: ♦ обзорный раздел, в котором сформулированы общие цели проекта, конкрет- ные проблемы, которые будут рассматриваться при изучении системы по- средством моделирования, и рабочие показатели для вычислений; ♦ подробное описание каждой подсистемы в предварительном формате и опи- сание взаимодействия этих систем (предварительный формат, как на этой
330 Глава 5. Создание адекватных и детальных имитационных моделей странице, облегчает просмотр документа о допущениях и структурный раз- бор концептуальной модели, который будет описан далее); ♦ какие упрощения были сделаны и почему (помните, что имитационная мо- дель, как предполагается, является упрощением или абстракцией действи- тельности); + краткое изложение данных, таких как выборочное среднее значение и гис- тограмма набора данных; действительное распределение вероятностей, ко- торое лучше всего подходит к набору данных (см. главу 6), или другие тех- нические сведения (их лучше поместить в приложении к отчету); + источники важной или противоречивой информации. При составлении отчета надо помнить о том, что он должен быть понятен ме- неджерам. Что касается второй идеи, то, как уже говорилось ранее, разработчику имита- ционной модели приходится собирать информацию от разных людей. Более того, эти люди, как правило, заняты текущей работой в своей организации, поэтому они не могут уделить должного внимания вопросам, поставленным разработчиком. В результате разработчик модели может получить неполную или неточную инфор- мацию о системе. Один из способов решения этой проблемы состоит в проведении структурного разбора концептуальной модели, описанной в документе о допуще- ниях, в присутствии специалистов по изучаемым вопросам и менеджеров. Используя проектор, разработчик имитационной модели пункт за пунктом разбирает концептуальную модель, но не переходит от текущего пункта к новому, пока все присутствующие не подтвердят его правильность и достаточный уровень детализации. Структурный разбор повышает как валидацию имитационной моде- ли, так и доверие к ней. Лучше всего проводить структурный разбор в каком-либо удаленном от рабо- чих мест всех участников помещении (например, в зале для встреч гостиницы), чтобы присутствующие могли полностью посвятить свое внимание совещанию. Кроме того, его нужно организовать до начала программирования, если главные проблемы раскрываются на встрече. Документ о допущениях следует разослать участникам перед совещанием, и от них должны быть получены комментарии. Однако эти действия нельзя считать заменой структурированного критического анализа, поскольку людям может не хватить времени или мотивации для тщатель- ного самостоятельного изучения документа. Обмен информацией, который происходит непосредственно на совещании, име- ет очень большое значение. Структурированный критический анализ документа о допущениях можно назвать валидацией концептуальной модели. Далее приведе- ны два примера структурированного критического анализа, один из которых мож- но назвать очень успешным, а другой дал неожиданные, но, тем не менее, полезные результаты. Пример 5.21. При изучении системы путем моделирования, выполнявшемся для произ- водственной компании Fortune 500 (см. раздел 13.6), нами проведен структурирован- ный критический анализ концептуальной модели. На совещании присутствовало девять человек, из них — два разработчика моделей и семь представителей компании-клиента
5.4. Методы повышения валидации и доверия к модели 331 (старший оператор, три инженера, два представителя планового отдела и менеджер). Документ о допущениях состоял из 19 страниц и включал приблизительно 160 предва- рительных предположений. Каждое из 160 предположений было представлено и рас- смотрено; весь процесс занял 5,5 ч. В результате проведенного структурированного анализа было обнаружено и исправлено несколько неверных предположений, добав- лены некоторые новые предположения, а также решено ряд вопросов, которые касаются уровня детализации. Более того, по окончании собрания все девять человек имели такое ощущение, что они получили адекватную модель! Другими словами, они выбрали со- бственную модель! Пример 5.22. Специалисты, принявшие участие в проведении структурированного кри- тического анализа транспортной системы, признали неправильной существенную часть допущений, сделанных спонсором проекта. На первом совещании специалисты не смог- ли присутствовать из-за большого расстояния между местом их работы и главным офи- сом организации-спонсора. В результате разные люди получили задания подготовить информацию о различных частях системы. Однако собранную информацию использо- вали для обновления документа о допущениях, после чего успешно осуществили еще один структурированный критический анализ. 5.4.4. Валидация компонентов модели количественными методами Для проверки валидации различных компонентов всей модели аналитик имита- ционного моделирования должен по возможности выбирать количественные ме- тоды. Далее описаны методы, которые можно использовать для этой цели. Все представленные методы являются общеприменимыми. Если к набору наблюдаемых данных подобрано теоретическое распределение вероятностей, адекватность способа задания функции можно оценить с помощью графиков и критериев согласия, рассмотренных в главе 6. Как говорилось в разделе 5.4.1, при построении модели необходимо использо- вать соответствующие данные. Не менее важно осторожно подходить к структури- рованию этих данных. Например, если для нескольких наборов данных наблюда- лось идентичное случайное явление, правильность объединения таких данных можно оценить по критерию однородности совокупности Крускал~Уаллиса (Krus- kal-Wallis) (см. раздел 6.13). Если наборы данных окажутся однородными, их можно объединить и использовать комбинированный набор данных в имитацион- ной модели. Пример 5.23. В производственной системе, описанной в разделе 13.6, данные о времени безотказной работы, а также данные о времени ремонта были собраны для двух «иден- тичных» станков, изготовленных одним производителем. Однако проверка по критерию Крускал-Уаллиса показала, что два распределения в действительности оказались раз- личными для двух станков. Исходя из этого в создаваемой имитационной модели каж- дый станок получил свое собственное распределение для времени безотказной работы и времени ремонта. При определении факторов, имеющих наибольшее влияние на критерии оцен- ки работы, очень важным является анализ чувствительности. Если какой-то фак- тор окажется существенным, его необходимо моделировать особенно тщательно.
332 Глава 5. Создание адекватных и детальных имитационных моделей Ниже приведены примеры факторов, которые можно изучать с помощью анализа чувствительности: «• установление значения параметра (пример 5.24); «• выбор распределения; ♦ определение объекта, движущегося в моделируемой системе (пример 5.25); ♦ детализация подсистемы (см. пример 5.26); ♦ подбор наиболее важных данных (используя «грубую» модель системы). Пример 5.24. Предположим, что для изучения новой системы с помощью моделирова- ния значение параметра после консультаций со специалистами было оценено как 0,75. Точность этого значения параметра можно определить при прогоне имитационной мо- дели со значением параметра 0,75, а также при дополнительных прогонах со значениями 0,70 и 0,80. Если в результате трех прогонов будут получены приблизительно одинако- вые результаты, значит, выходные данные не чувствительны к выбору параметра в диа- пазоне от 0,70 до 0,80. В противном случае нужно точнее определить параметр. Пример 5.25. При разработке имитационной модели линии по производству конфет в качестве основного объекта, движущегося в модели, сначала выбрали конфету, но при этом получение результата занимало слишком много компьютерного времени. После проведения анализа чувствительности установили, что, используя четверть коробки конфет (150 конфет), можно получить практически те же результаты для искомого ра- бочего показателя — количества коробок конфет, изготовляемых за смену, а время вы- полнения при этом существенно сократится. Пример 5.26. Нами разработана имитационная модель для сборочного и контрольного участков компании, производящей персональные компьютеры. Позднее менеджеры ком- пании пожелали выполнять прогоны модели на собственных компьютерах, однако для нее требовалась слишком большая память. Поэтому нам пришлось существенно упро- стить модель сборочного участка, чтобы сэкономить компьютерную память. (Основная задача имитационного моделирования заключалась в установлении требуемой произво- дительности контрольного участка.) После прогона упрощенной имитационной модели сборочного участка (модель контрольного участка при этом осталась без изменений) выяснилось, что искомый рабочий показатель — суточная производительность — отли- чается от полученного в исходной модели только на 2 %. Следовательно, для сборочного участка не требовалось большой детализации модели. В этом случае не было необходи- мости моделировать контрольный участок. Однако заметим, что упрощенная модель ока- залась непригодной для изучения улучшения производительности сборочного участка При анализе чувствительности важно использовать метод общих случайных чисел (см. раздел 11.2), чтобы управлять случайностями при моделировании. Иначе эффект изменения одного фактора может быть нарушен другими изменениями (например, разные случайные значения, полученные из входных распределений), которые возникают непреднамеренно. Если нужно определить чувствительность выходных данных моделирования к изменениям двух или более факторов, не следует изменять факторы по одному, устанавливая для других некоторые произвольные значения. Более правильный подход состоит в использовании статистических экспериментальных планов, о ко- торых будет рассказано в главе 12. Влияние каждого фактора можно оценить фор- мально; и, если число факторов не слишком велико, может быть выявлено взаимо- действие между ними.
5.4. Методы повышения валидации и доверия к модели 333 5.4.5. Валидация выходных данных всей имитационной модели Самая окончательная проверка адекватности имитационной модели подтвержда- ется, если установлено, что ее выходные данные идентичны выходным данным, которые можно ожидать от реальной (предлагаемой) системы. Если система, ана- логичная предложенной, существует в настоящий момент времени, тогда разраба- тывают имитационную модель существующей системы и сравнивают выходные данные модели и этой системы. В том случае, когда два набора данных оказываются подобными, модель существующей системы считается адекватной. (Точность, тре- буемая от модели, зависит от ее назначения.) Затем модель модифицируют так, чтобы она представляла предложенную систему. Чем больше общего между суще- ствующей и предложенной системой, тем больше уверенность в правильности мо- дели предложенной системы. Абсолютно точного метода определения адекватно- сти модели предлагаемой системе нет. При его существовании, в первую очередь, не нужна была бы имитационная модель. Если вышеописанное сравнение было успешным, значит, оно имеет дополнительное преимущество, обеспечивая досто- верность использования моделирования (см. примеры 5.27 и 5.28). Понятие срав- нения модельных и системных выходных данных существующей системы можно назвать валидацией результатов. Пример 5.27. Мы проводили изучение путем моделирования для корпорации, произво- дящей бумагу. На заводе этой компании эксплуатировалось две машины определенного типа, и руководство предприятия намеревалось приобрести третью машину. Цель моде- лирования заключалась в том, чтобы определить, действительно ли заводу нужна допол- нительная машина. Чтобы проверить адекватность модели, мы сначала создали модель существующей системы с двумя машинами. Производительность в модели и в системе двух машин отличалась на 0,4 и 1,1 %, тогда как занятость машин отличалась соответ- ственно на 1,7 и 11 %. (Относительно большая ошибка в 11 % вызвана тем, что оператор второй машины не придерживался методики фирмы.) Используя имитационную мо- дель, адекватность которой подтвердилась, мы разработали модель системы с тремя ма- шинами и установили, что в дополнительной машине нет необходимости. На основании достоверных результатов моделирования вице-президент корпорации отклонил запрос руководства завода на приобретение новой машины, что позволило избежать расходов на сумму 1,4 млн долларов. Пример 5.28. Агентство испытаний Военно-воздушных сил США с помощью моделиро- вания изучало крыло бомбардировщиков. При этом использовалась Logistics Composite Model (LCOM). Основная цель изучения заключалась в оценке влияния различных предложенных режимов материально-технического обеспечения на готовность бомбар- дировщиков, то есть на долю времени, когда бомбардировщики могут выполнять вылеты. Данные для модели были получены по реальным операциям крыла бомбардировщиков в течение 9 мес. В них входили данные как о поломках различных деталей самолетов, так и о готовности крыла бомбардировщиков. Для того чтобы проверить правильность мо- дели, агентство сначала выполнило модель 9-месячного периода работы системы при существующем режиме материально-технического обеспечения. Готовность к полетам в модели отличалась от данных, зафиксированных в прошлом, менее чем на 3 %, что яви- лось надежным подтверждением адекватности модели.
334 Глава 5. Создание адекватных и детальных имитационныхмоделей Пример 5.29. В лаборатории крупного производителя телекоммуникационных комму- таторов провели испытание опытного образца при потоке искусственной нагрузки (на- пример, при экспоненциально распределенном времени между поступлениями), затем такому же потоку нагрузки подвергли имитационную модель коммутатора и сравнили сопоставимые показатели измерений модели и системы. Близкие значения соответст- вующих показателей подтвердили адекватность модели. Некоторые менеджеры отказываются от создания имитационной модели су- ществующей системы, поскольку на первый взгляд это может показаться напрас- ной тратой времени и денег. Однако, если адекватность модели не подтверждена, любые ее результаты имеют сомнительную ценность, какой бы дешевой она ни оказалась. Важность создания модели существующей системы подтверждается та- кими факторами: ♦ модель существующей системы может «подсказать» какие-нибудь усовер- шенствования для системы; * модель существующей системы часто нужна для более точного сравнения существующей и предлагаемой систем, поскольку существующая система может предоставить незначительное количество данных (см. методы срав- нения систем в главе 10). В литературе по валидации моделей предложен ряд статистических критериев для сравнения выходных данных, полученных с помощью имитационной модели, с выходными данными, полученными от соответствующей реальной системы [Shan- non, 1975, р. 208]. Однако выполнять сравнения не так просто, как может показать- ся, поскольку выходные процессы большинства реальных систем и имитационно- го моделирования являются нестационарными (распределения последовательных наблюдений меняются со временем) и автокоррелированными (наблюдения в про- цессе коррелированны друг с другом). Следовательно, классические статистичес- кие критерии, основанные на независимых и одинаково распределенных наблюде- ниях, не могут применяться к ним непосредственно. Более того, есть сомнение, что критерии проверки гипотез по сравнению с построением доверительных интерва- лов для разностей являются приемлемым подходом. Поскольку модель представ- ляет собой только приближение к действительной системе, нулевая гипотеза о том, что система и модель — это одно и то же, явно будет ложной. Полезнее опреде- лить, являются ли различия между системой и моделью достаточно значительны- ми, чтобы повлиять на любые выводы, сделанные на основе модели. В разделе 5.6 рассмотрены статистические процедуры, которые можно использовать для срав- нения модельных и системных выходных данных. Кроме статистических операций с этой целью можно использовать тест Тью- ринга [Turing, 1950; Carson, 1986]. Данный тест заключается в том, что специалис- там, хорошо знакомым с системой (например, инженеры или менеджеры), пред- оставляется возможность изучить одну или несколько групп системных данных, а также одну или несколько групп модельных данных без указания, какие из них к чему относятся. При этом все группы данных должны быть представлены на от- дельных листах бумаги в одинаковом формате. Если специалисты смогут отли- чить системные данные от модельных и объяснить, как они это сделали, их разъяс- нения помогут найти пути усовершенствования модели.
5.4. Методы повышения валидации и доверия к модели 335 Пример 5.30. Тест Тьюринга использовали при изучении посредством моделирования завода по производству деталей к автомобилям [Schruben, 1980]. Данные, полученные на заводе и при моделировании, рассматривались на совещании тремя менеджерами, тремя инженерами по организации производства и двумя рабочими завода. Эти люди не смогли прийти к согласию, какие данные реальные, а какие получены при моделирова- нии, что позволило незамедлительно принять разработанную имитационную модель. Пример 5.31. Анимационная версия теста Тьюринга применялась для проверки адек- ватности имитационной модели потока машин на автомагистрали. Анимация транспорт- ного потока, осуществляемая при моделировании, выводилась на экран одновременно с анимацией по данным, собранным на реальной автомагистрали. На автомагистрали сведения получали с помощью видеокамеры, смонтированной на самолете. Независимо от того, существует система или нет, специалисты должны рас- смотреть результаты моделирования, чтобы проверить их обоснованность. (Одна- ко при этом нужно проявлять осторожность, потому что, если бы специалист точно знал, каких результатов следует ожидать, не было бы необходимости создавать мо- дель.) Если результаты моделирования согласуются с поведением системы, счита- ется, что модели свойственна внешняя адекватность. Пример 5.32. Вышеизложенную идею использовали при разработке имитационной мо- дели кадровой системы Военно-воздушных сил (ВВС) США. (Эта модель разрабатыва- лась, чтобы предоставить возможность аналитикам ВВС рассматривать влияние раз- личных кадровых политик в масштабе системы.) Прогон модели выполнили для основ- ной кадровой политики, после чего результаты показали аналитикам ВВС и лицам, при- нимающим решения. Они выявили некоторые расхождения между моделью и системой. Эту информацию использовали, чтобы усовершенствовать модель. После нескольких дополнительных проверок и модернизаций получили модель, максимально приближен- ную к текущей кадровой политике ВВС. Таким образом, удалось улучшить не только адекватность модели, но и ее достоверность. Если решения, которые будут приниматься на основе имитационной модели, имеют особое значение, иногда прибегают к испытаниям в нолевых условиях (осо- бенно это касается военной сферы), чтобы получить системные выходные данные для версии предлагаемой системы (или подсистем) с целью проверки правильности модели. Допустим, что некая военная организация обдумывает вопрос приобрете- ния системы вооружений, проведение оценочных испытаний для которой невоз- можно или слишком дорого стоит. Тогда в качестве альтернативы разрабатывается имитационная модель системы, а затем проводятся испытания опытного образца реальной системы в полевых условиях по одному или нескольким сценариям. Если модельные и системные выходные данные подобны для каждого из выбран- ных сценариев, имитационная модель, проверенная на адекватность, использует- ся, чтобы оценить функционирование системы в соответствии со сценариями, по которым нельзя провести полевые испытания. Дополнительные сведения о поле- вых испытаниях можно найти в работе [Shannon, 1975, р. 231]. До настоящего момента рассматривалась оценка достоверности имитационной модели относительно выходных данных, полученных по имевшейся в прошлом или существующей в настоящий момент системе. Но более точная проверка моде- ли, скорее всего, состоит в определении ее способности прогнозировать поведение будущей системы. Так как модели часто развиваются во времени и используются
336 Глава 5. Создание адекватных и детальных имитационных моделей для разных целей (особенно в министерстве обороны), всегда существует возмож- ность такой предполагаемой валидации. Если модель применяется, чтобы решить, какой вариант предлагаемой системы следует реализовать, то, после того как бу- дет создана система и пройдет время, необходимое для сбора ее выходных данных, эти данные можно сравнить с прогнозированными, полученными с помощью мо- дели. Если есть разумное соответствие, увеличивается доверие к обоснованности модели. Расхождения между двумя наборами данных подскажут направление мо- дернизации модели. Независимо от точности прогнозов, полученных посредством модели, перед каждым новым ее приложением модель следует тщательно исследо- вать, поскольку изменение цели или прохождение времени могут сделать некото- рые аспекты существующей модели недостоверными. При этом вновь вырисовы- вается необходимость обеспечения модели хорошей документацией. Предположим, что нужно сравнить выходные данные существующей системы с выходными данными, полученными из имитационной модели этой системы, и выявить значительные расхождения. Если эти расхождения или другая инфор- мация объективно показывают, как улучшить модель, значит, изменения необхо- димо внести, а затем повторно прогнать имитационную модель. Если выходные данные, полученные с помощью имитационной модели, близки к выходным дан- ным существующей системы, модель считается адекватной. Допустим, что между системными и модельными выходными данными сущест- вуют серьезные расхождения, но изменения, внесенные в модель, несколько не оп- равдали ожиданий (скажем, «тонкая настройка» параметра), тогда полученные в результате выходные данные опять сравнивают с системными выходными дан- ными. Процедура, которая называется калибровкой модели, продолжается до тех пор, пока два набора данных не приобретут близкие значения. Однако следует ус- тановить, получится ли в результате этой процедуры адекватная модель системы в целом, или модель будет всего лишь представлением конкретного набора вход- ных данных. Чтобы ответить на этот вопрос (то есть установить адекватность мо- дели), можно использовать полностью независимые наборы системных входных и выходных данных. Калибруемая модель может быть исполнена с другим набо- ром входных данных (как описано в разделе 5.6.1), а полученные в результате вы- ходные данные сравнены с другим набором системных выходных данных. Исполь- зование одного набора данных для калибрбвки, а другого, независимого, набора — для проверки адекватности модели часто встречается в экономических и биологи- ческих исследованиях. В частности, этот метод применялся корпорацией Crown Zellerbach Corporation при разработке имитационной модели роста деревьев. Сис- темные данные в этом случае предоставила Служба охраны лесов США. 5.4.6. Анимация Выявить в модели ложные допущения или повысить ее достоверность весьма эф- фективно может помочь анимация. Пример 5.33. Для системы упаковки конфет разработали имитационную модель. Ново- назначенный менеджер по эксплуатации, который не был знаком с имитационной моде- лью, увидев в ней элементы анимации, заявил: «Это моя система!», признав тем самым модель достоверной.
5.6. Процедуры для сравнения модельных и системных выходных данных 337 5.5. Роль руководства в процессе моделирования системы Менеджер изучаемой системы должен иметь представление об имитационном мо- делировании и осознавать, что для успешного исхода моделирования необходимо, чтобы он посвятил ему свое время и усилия. В обязанности менеджера входит: ♦ формулирование целей задачи; > выдача распоряжения персоналу предоставить информацию и данные раз- работчику имитационной модели, а также участие в структурированном кри- тическом анализе; ♦ регулярное взаимодействие с разработчиком имитационной модели; ♦ применение результатов моделирования для принятия решения. Изучение систем путем моделирования требует привлечения на некоторый период технического персонала. Если изучение выполняется на месте, то можно в течение нескольких месяцев задействовать несколько работников компании на полный рабочий день. У этих людей могут быть и другие обязанности, скажем, контроль работы производственной системы. Даже если изучение проводит кон- сультант, персонал компании должен привлекаться к процессу моделирования и сбору данных. 5.6. Процедуры для сравнения модельных и системных выходных данных В этом разделе описаны статистические процедуры, предназначенные для сравне- ния реальных наблюдений и выходных данных моделирования (см. раздел 5.4.5). Допустим, что Rit R2,R* — реальные наблюдения, а Мь М2,..., — выходные данные соответствующей имитационной модели (см. пример 5.34). Чтобы устано- вить, является ли модель точным представлением реальной системы, надо сравнить эти наборы данных. В первую очередь приходит на ум воспользоваться одним из критериев классической статистики (t-критерий, критерий Манна-Уитни, дву- сторонний критерий «хи-квадрат», двусторонний критерий Колмогорова-Смир- нова и т. д.) и определить, можно ли считать распределения, лежащие в основе двух наборов данных, одинаковыми. (Эти критерии, предназначенные для незави- симых и одинаково распределенных данных, подробно описаны в других работах [Breiman, 1973].) Но, как уже говорилось ранее, выходные процессы практически всех реальных систем и имитационных моделей являются нестационарными и ав- токоррелированными, поэтому ни один иэ этих критериев невозможно применить к ним непосредственно. Проблема решается с помощью методов: проверки, дове- рительного интервала и временного ряда, рассмотренных в разделах 5.6.1-5.6.3. 5.6.1. Метод проверки Метод, которым, кажется, пользуется большинство специалистов имитационного моделирования, предполагает вычисление статистических данных по реальным
338 Глава 5. Создание адекватных и детальных имитационных моделей наблюдениям и соответствующих статистических данных по выходным данйым моделирования с последующим сравнением этих двух статистических рядов без использования формальных статистических процедур. Примерами статистических данных, которые при этом могут применяться, являются выборочное среднее зна- чение, выборочная дисперсия (см. в разделе 4.4 замечания об опасности использо- вания выборочной дисперсии, полученной из автокоррелированных данных), функ- ция выборочной корреляции и «гистограммы» (слово гистограммы взято в кавычки, поскольку гистограммы обычно получаются из независимых и одинаково распре- деленных данных). (В работе [Sargent, 1996b] подробно рассмотрены графики, применение которых, если оно возможно, кажется нам хорошей идеей.) Недоста- ток метода проверки, проиллюстрированный в примере 5.34, заключается в том, что в нем все статистические данные по существу являются выборками объемом 1 из какой-либо лежащей в основе их совокупности, и это делает сам метод чрезвы- чайно зависимым от неизбежной случайности как наблюдений, полученных из ре- альной системы, так и выходных данных имитационной модели. Пример 5.34. Чтобы продемонстрировать, в чем заключается опасность использования метода проверки, предположим, что исследуется реальная система массового обслужи- вания М/М/\ ср- 0,6; а соответствующая ей имитационная модель является системой массового обслуживания M/M/i ср- 0,5. В обоих случаях интенсивность прибытия требований равна 1. Допустим, что нас интересует выходной процесс Db D2,... (где £>,- — задержка в очереди требования i) и что 200 £д X = -Azy. для системы £ЛЛ) И 200 Ед У = для модели. (Таким образом, число наблюдений для системы k и число наблюдений для модели Z равны 200.) Попытаемся определить, насколько хорошим представлением системы яв- ляется модель, сравнив оценку - E(Y) - 0,49 (для модели ожидаемая средняя задерж- ка в очереди первых 200 требований; сведения о том, как вычислить E(Y) изложены в ра- боте [Heathcote and Winer, 1969]) с оценкой - Е(Х) - 0,87. В табл. 5.4 приведены результаты трех независимых экспериментов имитационного моделирования, каждый из которых соответствует возможному применению метода проверки. Таблица 5.4. Результаты трех экспериментов методом проверки Эксперимент Их Му Мх"Му 1-й 0,90 0,70 0,20 2-й 0,70 0,71 -0,01 3-й 1,08 0,35 0,73 Для каждого эксперимента величины jlx и jiy представляют собой выборочные средние значения 200 задержек соответственно для системы и модели, а разность - ц у — оцен- ку Их “ Мт " 0,38, которую мы и пытаемся определить. Обратите внимание, что значения
5.6. Процедуры для сравнения модельных и системных выходных данных 339 Рх -11 у существенно отличаются в разных экспериментах. Кроме того, следует заметить, что во втором эксперименте |1х ~ Иг “ -0,01. Такой результат может ввести в заблужде- ние, поскольку модель кажется хорошим представлением системы. Однако мы считаем, что модель в действительности является плохим представлением для оценки, ожидае- мой средней задержки в реальной системе, так как Цу почти на 44 % меньше Цх- Поскольку при использовании основного метода проверки, описанного выше, существует риск получения неточных результатов, опишем более удачный метод сравнения системных и модельных выходных данных, который может применяться, если системные данные достаточно исчерпывающие и представлены в соотве- тствующем формате. В частности, рекомендуется для сравнения системы и моде- ли осуществлять «запуск» модели с входными данными системы за прошлое время (например, с реальными наблюдаемыми интервалами времени между прибытия- ми и продолжительностью обслуживания), а не выборками из входных распреде- лений вероятностей, а затем сопоставлять модельные и системные выходные дан- ные (рис. 5.2). (При этом надо брать те системные выходные данные, которые соответствуют прошлым системным входным данным). Таким образом, систему и модель исследуют совершенно одинаковыми наблюдениями из входных случайных величин, при этом статистические сравнения будут гораздо более точными. Этот способ обрел называние метода коррелированной проверки, поскольку в результа- те, как правило, мы получаем сопоставимые модельные и системные выходные статистические данные, которые коррелированны положительно. Такой метод дает более точную оценку допущений имитационной модели, за исключением распреде- ления вероятностей, достоверность которых проверяется методами, описанными в главе 6. (Стоит обратить внимание, что моделирование, в котором используются входные данные за прошлое время, иногда называется моделированием с управляе- мым блоком слежения.) Рис. 5.2. Схема метода коррелированной проверки Пример 5.35. Чтобы продемонстрировать преимущества метода коррелированной про- верки, предположим, что система — это банк с пятью кассами, описанными в разделе 2.6, и с возможностью перехода клиентов из одной очереди в другую, а модель — такой же банк, но в ней клиенты не переходят из одной очереди в другую (то есть не покидают очередь, в которую стали изначально). Допустим, что среднее время обслуживания со- ставляет 4 мин. Пусть X — средняя задержка в очереди для системы, а У — средняя за- держка в очереди для модели.
340 Глава 5. Создание адекватных и детальных имитационных моделей Попробуем определить точность модели, сравнив оценку ожидаемой средней задержки в очереди для модели цу - £( Y) с оценкой средней задержки в очереди для системы - —Е(Х). Результаты первых 10 из 500 независимых экспериментов, каждый из которых соответствует возможному применению метода коррелированных проверок, собраны в табл. 5.5. Здесь Xj и Yj—соответственно средняя задержка для системы и модели в экспе- рименте j, a Xj - Yj — оценка разности - |1У, которую мы в действительности пытаемся определить. (Следует учесть, что для Xj и Yj используется одно и то же время между при- бытиями и время обслуживания; они отличаются только наличием или отсутствием пе- рехода клиентов из одной очереди в другую.) В таблице также приведены значения Yj - средней задержки для модели в эксперименте j, когда для генерирования времени между прибытиями и времени обслуживания используются независимые случайные числа, и разность Xj - Yj, среднее значение которой тоже равно - цу. (Следует заметить, что величины Xj и Yj основаны на независимых (и, следовательно, различных) реализациях тех же входных распределений вероятностей.) Сравнение Y} и Xj приблизительно соот- ветствует основному методу проверки. (При реальном применении основного метода проверки входные распределения вероятностей не известны и должны оцениваться по системным входным данным.) Наконец, в двух последних строках таблицы указаны вы- борочное среднее и выборочная дисперсия для каждого столбца, вычисленные по всем 500 экспериментам. Таблица 5.5. Результаты первых 10 из 500 экспериментов методом коррелированной проверки и основным методом проверки, а также итоговые результаты для 500 экспериментов 3KCt№ipMMemj 3 Ъ 1-й 3,06 3,81 2,62 -0,75 0,44 2-й 2,79 3,37 2,05 -0,58 0,74 3-й 2,21 2,61 4,56 -0,40 -2,35 4-й 2,54 3,59 1,86 -1,05 0,68 5-й 9,27 11,02 2,41 -1,75 6,86 6-й 3,09 3,75 1,85 -0,66 1,24 7-й 2,50 2,84 1,13 -0,34 1,37 8-й 0,31 0,71 3,12 -0,40 -2,81 9-й 3,17 3,94 5,09 -0,77 -1,92 10-й 0,98 1,18 1,25 -0,20 -0,27 Выборочное среднее значение для всех 500 экспериментов 2,10 2,85 2,70 -0,75 -0,60 Выборочная дисперсия для всех 500 экспериментов 2,02 2,28 2,12 0,08 4,08 Отметим, что Xj - Yj является гораздо лучшей оценкой - цу, чем Xj - Yj, поскольку в первом случае значение дисперсии гораздо меньше (0,08 против 4,08). Следовательно, разность X - Yпри конкретном применении метода коррелированной проверки, вероятно, будет гораздо ближе к разности - цу, чем разность X - Y в случае конкретного приме- нения основного метода проверки. Теперь более подробно объясним, почему Var(X - Y) меньше Var(X - Y). В частности, если А и В — случайные переменные, можно показать (см. задачу 4.13), что Var(A - В) = Var(A) + Var(B) - 2Cov(A В).
5.6. Процедуры для сравнения модельных и системных выходных данных 341 Тогда при основном методе проверки А - X, В — У, Cov(X, У) — 0 (оценка составляла 0,03; см. задачу 4.25), следовательно, Var(X - У”) = Var(X) + Уаг(У') При методе коррелированной проверки А - X, В - У, Cov(X, У) - 2,11 (Сог(Х, У) - 0,99), значит, Var(X - У) = Var(X) + Var(F) - 2Соу(Х,У) = = Var(X) + VarO") - 2Соу(Х,У) = <Уаг(Х-У'), допуская, что знак у истинной ковариации такой же, как и у ее оценки. Сравнение модели и соответствующей системы при тех же статистических ус- ловиях подобно использованию метода понижения дисперсии, известного в моде- лировании как метод общих случайных чисел (см. раздел 11.2), и применению объединения в блоки в статистических экспериментальных планах. Тем не менее мы не рекомендуем использовать системные входные данные за прошлое время для управления моделью при рабочих прогонах модели (см. раздел 6.1). Пример 5.36. Метод коррелированной проверки применялся при оценке адекватности имитационной модели производственного процесса по изготовлению сигарет для ком- пании Brown & Williamson Tobacco Company [Carson, 1986; Carson et al., 1981]. Данная система состояла из сигаретной машины, емкости (накопителя) для сигарет, а также упаковочного и фасовочного аппаратов. Из-за того, что сигаретная бумага часто рвется, сигаретная машина и упаковочный аппарат подвергались частым сбоям в работе. Поэто- му основная задача исследования заключалась в определении оптимального объема ем- кости, который позволил бы снизить влияние сбоев. В течение 4-часового наблюдения за существующей системой были собраны данные о времени безотказной работы и времени ремонта сигаретной машины и упаковочного аппарата, а также об общем объеме производства сигарет. Показатели времени безотказ- ной работы и времени ремонта использовали при управлении имитационной моделью в течение ее 4-часового прогона, после чего тоже зарегистрировали общий объем произ- водства сигарет. Разница между объемами производства в модели и в системе, составила всего 1 %, что дало возможность убедить руководство в адекватности модели. Пример 5.37. При моделировании автомагистрали, упоминавшемся в примере 5.31, для сравнения среднего времени перемещения в имитационной модели и системе примени- ли метод коррелированной проверки. В модели использовали время входа, скорости ма- шин, полосы движения и другие данные, соответствующие наблюдавшимся в реальной системе. Уверены, что в некоторых случаях метод проверки помогает проникнуть в суть адекватности имитационной модели (особенно, когда можно использовать метод коррелированной проверки). В большинстве же случаев фактически единствен- ным подходящим статистическим методом является изучение систем путем моде- лирования, что объясняется сильной ограниченностью данных, которые можно получить о функционировании реальных систем. Хотя при толковании результа- тов применения этого метода, как показано в примере 5.34, нужно быть очень осторожным.
342 Глава 5. Создание адекватных и детальных имитационных моделей 5.6.2. Метод доверительного интервала, основанный на независимых данных Далее рассмотрим более надежный подход к сравнению модели с соответствую- щей системой, если можно собрать большой объем данных как по модели, так и по самой системе, например в случае с существующей сетью связи, для которой легко получить большой объем данных при помощи какого-либо анализатора. Однако для большинства военных и производственных систем такой метод не подходит из-за нехватки реальных данных. Во время имитационного моделирования в переходном режиме (см. разделы 9.3 и 9.4, а также главу 10) собираем т независимых наборов данных из системы и п независимых наборов данных из модели. Пусть Xj будет средним значением на- блюдений в наборе системных данных j, a Yj — средним значением наблюдений в наборе модельных данных/ Кроме того, Xj — независимые и одинаково распреде- ленные величины (предполагаем, что т групп системных данных являются одно- родными) со средним значением = E(Xj), a Yj — независимые и одинаково рас- пределенные величины (допускаем, что п наборов данных для модели получены в результате независимых репликаций) со средним значением ру = E(Yj). Попробу- ем сравнить модель с системой, создав доверительный интервал для £ = цх ~ Мы считаем, что создание доверительного интервала для С, предпочтительнее про- верки нулевой гипотезы Но (рх = цу) по двум причинам. ♦ Поскольку модель является всего лишь приближением к системе, нулевая ги- потеза Но, разумеется, будет ложной практически во всех случаях. ♦ Доверительный интервал предоставляет больше информации, чем соответст- вующий критерий проверки гипотезы. Если критерий проверки гипотезы по- казывает, что цх * то доверительный интервал тоже даст эту информацию, а также подскажет значение, на которое цх отличается от ру. Создание дове- рительного интервала для £ — это особый случай задачи сравнения двух систем при помощи доверительного интервала, о чем будет рассказано в разделе 10.2. Следовательно, можно создать доверительный интервал для С, либо с помо- щью метода двустороннего t-критерия, либо с помощью метода Велча. (Со- гласно системе обозначений из раздела 10.2, nr= т, п2 = п, Ху = XjW X2j = Yj.) Метод двустороннего t-критерия требует, чтобы т - п, но допускает корреля- цию Xj с Yj, которая возникнет в случае использования идеи, лежащей в осно- ве метода коррелированной проверки (см. раздел 5.6.1). Метод Велча может использоваться для любых значений т S 2 и п > 2, но для него требуется, что- бы величины Xj не зависели от величин Yj. Метод двустороннего t-критерия применялся при оценке адекватности модели подземной добычи полезных ископаемых [Runciman, Vagenas, Corkal, 1997]. Для этой модели величина Xj — среднее количество тонн руды, добываемой за смену Bj-M месяце (j - 1, 2, 3). Предположим, построен 100(1 - а)-процентный доверительный интервал для С с помощью метода двустороннего t-критерия или метода Велча. Пусть 1(a) и и(а) будут соответственно верхней и нижней конечными точками доверительного ин-
5.6. Процедуры для сравнения модельных и системных выходных данных 343 тервала. Если 0 й [/(а), м(а)], наблюдаемая разность цх и цг, то есть Х(т) - У(п), считается статистически значимой на уровне оь Это эквивалентно отклонению нулевой гипотезы Но (цх - цг) в пользу двусторонней альтернативной гипотезы Hi( Их* Рг) на том же уровне а. Если 0 е [/(а), н(а)], любая наблюдаемая разность рхи Цу не будет статистически значимой на уровне а и может быть объяснена вы- борочными флуктуациями. Даже если наблюдаемая разность рх и цу окажется ста- тистически значимой, это необязательно будет означать, что модель для практи- ческих задач явится <неадекватным» представлением системы. Например, если С, = 1, но рх = 1000 и Цу - 999, то различия, существующие между моделью и системой, вероятно, не будут иметь практической значимости, независимо от того, устано- вим ли мы статистическую значимость. Разницу между моделью и системой мож- но считать практически значимой, если «значение» этих различий настолько су- щественно, что делает неадекватными любые выводы о системе, выполненные на основе модели. Разумеется, решение о практической значимости различий между моделью и системой является субъективным и зависит от таких факторов, как це- ли модели и функция полезности, определяемая специалистом, который эту мо- дель применяет. Если длина доверительного интервала для С, не настолько мала, чтобы опреде- лить практическую значимость, понадобится получить дополнительные значения Xj или Yj (или оба сразу). Однако следует учитывать, что при использовании мето- да Велча нельзя сделать доверительный интервал условно небольшим, добавив к нему только значения Xj или Yj. Следовательно, если число наборов системных данных т нельзя увеличить, определение практической значимости путем допол- нительных репликаций может оказаться невозможным. Пример 5.38. Предположим, что Xj и Yj определены, как в примере 5.35, а требуется по- строить 90-процентный доверительный интервал для 4 “ Их ~ Ру с помощью метода дву- стороннего t-критерия, чтобы выяснить, является ли модель (без перехода клиентов из очереди в очередь) точным представлением системы (с переходом клиентов из очереди в очередь). Пусть Wj - Xj - Yj, а т - п -10, тогда из первых 10 строк табл. 5.5 получаем 1У(10) = Х(10) - У(10) = 2,99 - 3,68 = -0,69 (точечная оценка для Q, £[% - w=(io)]2 vlr[IP(10)] = ^ (1б)(9) " =0'02’ а 90-процентный интервал для £ составляет W(10) ± t9;0.95JvaitW(10)] = -0,69 ± 0,26, или [-0,95; -0,43]. Так как 0 не входит в интервал, наблюдаемая разность цхи Цу будет статистически значимой. Остается определить практическую значимость такой разности. Болки и Сарджент [Balci and Sargent, 1984] представили методологию использо- вания доверительного интервала, которая позволяет выполнять анализ компро- миссных решений для объемов выборок (т и и), доверительного уровня (скажем, 90 %) и половины длины доверительного интервала. Их подход также применим
344 Глава 5. Создание адекватных и детальных имитационных моделей в случаях, когда для проверки адекватности модели используется несколько оце- нок критериев функционирования системы [Balci and Sargent, 1981, 1983]. Недостатки вышеописанного подхода с использованием репликаций состоят в том, что для него может понадобиться слишком большое количество данных (каждый набор выходных данных дает только одно наблюдение), и в том, что при его применении нельзя получить никакой информации об автокоррелируемых структурах двух выходных процессов (если они нас интересуют). 5.6.3. Методы временного ряда В этом разделе кратко описаны три метода временного ряда, применяемые для сравнения модельных и системных выходных данных. {Временной ряд представ- ляет собой конечную реализацию стохастического процесса. Например, задержки Db D2,..., Z>2ooиз модели системы массового обслуживания (см. пример 5.34) или самой системы образуют временной ряд.) Для этих методов требуется только один набор выходных данных каждого типа, они также могут давать информацию об ав- токоррелированных структурах двух выходных процессов. Таким образом, у них отсутствуют недостатки метода с использованием репликаций. Однако им свойст- венны свои собственные недочеты. При использовании метода спектрального анализа [Fishman and Kiviat, 1967; Naylor, 1971, p. 247] сначала вычисляют выборочный спектр (то есть выполняют косинус-преобразование Фурье оценки автоковариационной функции) каждого выходного процесса, а затем, опираясь на существующую теорию, строят довери- тельный интервал для разности логарифмов двух спектров. Этот доверительный интервал может быть потенциально применен для оценки степени подобное™ двух автокорреляционных функций. Данному методу присущи два изъяна. Для него требуется, чтобы выходные процессы были ковариационно стационарными (такое допущение, как правило, не осуществляется на практике), и нужно выпол- нить сложные математические расчеты высокого уровня. Этот тип доверительно- го интервала также трудно связать с адекватностью имитационной модели. Спектральный анализ является непараметрическим методом, так как при его использовании не делается никаких допущений о распределениях наблюдений во временном ряде. Альтернативный метод [Hsu and Hunter, 1977] состоит в сравне- нии параметрической модели временного ряда [Box, Jenlins and Reinsei, 1994] с ка- ждым набором выходных данных и в последующем применении критерия проверки гипотезы, чтобы узнать, являются ли две модели одинаковыми. Как уже говори- лось, мы уверены, что подход, основанный на применении доверительного интер- вала, предпочтительнее подхода с использованием критерия проверки гипотезы. Чен и Сарджент [Chen and Sargent, 1987] предлагают метод создания довери- тельного интервала для разности между статическим средним значением системы и соответствующим статическим средним значением имитационной модели, осно- ванный на нормированном методе временного ряда Шрубена (см. раздел 9.5.3). В этом методе привлекает то, что (в отличие от метода, описанного в разделе 5.6.2) для него требуется только один набор выходных данных, полученных из системы, и один набор данных, полученных из модели. Однако эти наборы данных должны быть независимыми и соответствовать ряду других допущений.
Задачи 345 Задачи 15.1. Как сказано в разделе 5.4.1, сбор данных надо проводить внимательно, чтобы данные, полученные из системы, представляли именно те аспекты, которые требуется моделировать. Рассмотрите эту возможную проблему в отношении изучения системы, когда ведется наблюдение за производительностью рабо- чих на сборочном конвейере с целью создания имитационной модели. 15.2. Объясните, почему может оказаться проще оценить адекватность модели компьютерной системы, чем модель боя. При этом допускаем, что рассматри- ваемая компьютерная система подобна уже существующей системе. 15.3. Если вы создаете доверительный интервал для - цу, прибегнув к методу с использованием доверительного интервала, описанному в разделе 5.6.2, ка- кой из Нижеприведенных результатов будет правильным? Статистически значимый Практически значимый А. Да Да Б. Да Нет В. Да ? Г. Нет Да д. Нет Нет Е. Нет ? 5.4. Используя метод Велча с т - 5 и п = 10, создайте 90-процентный доверитель- ный интервал для С, - - цу при: 0,92; 0,91; 0,57; 0,86; 0,90; Yj 0,28; 0,32; 0,48; 0,49; 0,70; 0,51; 0,39; 0,28; 0,45; 0,57. Будет ли доверительный интервал статистически значимым? 5.5. Предположим, что вы моделируете систему массового обслуживания с од- ним устройством (см. раздел 1.4) и с экспоненциально распределенными ин- тервалами времени между поступлениями. Вам требуется выполнить анализ чувствительности, чтобы определить влияние использования гамма-распре- деления вместо логнормального распределения для времени обслуживания , (см. раздел 6.2.2). Объясните, как вы будете использовать метод общих слу- чайных чисел (см. раздел 11.2), чтобы сделать анализ статистически более ,, точным. Как соотносится ваш метод с методом коррелированной проверки? 5j6. Повторите анализ примера 5.38, если переменные У? являются замещенными .: переменными Yj из табл. 5.5. Прокомментируйте эффективность двух довери- о , тельных интервалов. 5.7. Предположим, что имитационная модель создается для производственной системы, состоящей из большого количества последовательно работающих станков, разделенных буферами (очередями). Поскольку для ее выполнения ь -требуется слишком много компьютерного времени, было решено разделить модель на две подмодели. Выполняя прогон первой подмодели, время ухода каждой детали (и все остальные необходимые сведения) записывали в файл. ; По информации, сохраненной в файле, выполнили вторую подмодель. Рас- смотрите правомерность такого подхода.
Глава 6 Выбор входных распределений вероятностей 4- Свойства распределений в имитационном моделировании + Способы определения независимости 4- Получение теоретического распределения на основе данных наблюдений 4 Программа подбора распределений ExpertFit 4- Оценка многомерных распределений и стохастических процессов 6.1. Введение Чтобы осуществить моделирование с использованием таких случайных входных данных, как интервалы времени между поступлениями требований или объем спроса, необходимо определить распределения вероятностей. Например, при мо- делировании системы массового обслуживания с одним устройством, описанной в разделе 1.4.3, интервалы времени между поступлениями требований были пред- ставлены в виде независимых и одинаково распределенных случайных величин со средним значением, равным 1 мин; объем спроса при моделировании системы управления запасами, приведенной в разделе 1.5, составляла 1,2,3 и 4 с вероятно- стью соответственно 1/6,1/3,1/3 и 1/6. Если входные случайные величины соот- ветствуют каким-то определенным распределениям, моделирование осуществляет- ся во времени благодаря генерированию случайных величин из этих распределе- ний. В главах 7 и 8 рассматриваются методы генерирования случайных величин из различных распределений и процессов. В этой главе мы остановимся на том, как аналитик может подойти к определению входных распределений вероятностей. Практически все реальные системы содержат один или несколько факторов случайности; они приведены в табл. 6.1. Кроме того, на рис. 6.1-6.4 показаны гис- тограммы для четырех наборов данных, взятых из реальных проектов имитацион- ного моделирования. Гистограмма, которая представлена на рис. 6.1, соответству- ет 890 интервалам времени обработки деталей на станках, смоделированным для производства автомобилей. Вы можете убедиться, что правый конец — более длин- ный (положительная асимметрия) и что минимальное значение приблизительно равно 25 мин. На рис. 6.2 приведена гистограмма для 219 интервалов времени ме- жду посещениями клиентами банка (см. пример 6.4).
6.1. Введение 347 Таблица 6.1. Факторы случайности при использовании имитационного моделирования Тип системы_____________ Факторы случайности_________________________________ Производственная система Время обработки, безотказной работы и ремонта станка Военная система Время прибытия и полезная нагрузка ракет н самолетов, исход -боя, дистанция промахов для оружия Система связи t, Время между поступлениями сообщений, типы сообщений, длина сообщений Транспортная система Время погрузки судна, интервалы времени между прибытиями пассажиров в метро Рис. 6.1. Гистограмма 890 интервалов времени, мин, обработки деталей Рис. 6.2. Гистограмма 219 интервалов времени, мин, между посещениями клиентами банка
348 Глава 6. Выбор входных распределений вероятностей На рис. 6.3 показана гистограмма для 865 интервалов времени, в течение кото- рых происходит погрузка судов, а на рис. 6.4 — гистограмма длины 1000 больших рулонов бумаги, необходимых для изготовления салфеток. В этом случае левый конец гистограммы — более длинный (отрицательная асимметрия). Заметьте, что ни одна из четырех гистограмм не имеет симметричной формы, как у гистограмм, соответствующих нормальному распределению, несмотря на то что в имитацион- ных моделях многих разработчиков и во многих книгах по имитационному моде- лированию часто используются нормальные входные распределения. Рис. 6.3. Гистограмма 865 интервалов времени, дней, в течение которых происходит погрузка судов Рис. 6.4. Гистограмма длины, ярдов, 1000 больших рулонов бумаги, использующихся для производства хозяйственных товаров
6.1. Введение 349 В разделе 4.7 отмечалось, что в имитационной модели требуется представлять каждый источник случайности распределением вероятностей (вместо использо- вания его среднего значения). В следующем примере показано, как неправильный выбор распределения может повлиять на точность результатов моделирования. Пример 6.1. В системе массового обслуживания с одним устройством (например, один станок на фабрике) интервалы времени между поступлениями распределены экспонен- циально со средним значением, равным 1 мин. Предположим, что в системе может быть получено 200 интервалов времени обслуживания, но лежащее в их основе распределе- ние вероятностей не известно. Используя метод, который будет рассмотрен в разделе 6.5, мы «подобрали» экспоненциальное распределение, гамма-распределение, распреде- ление Вейбулла, логнормальное и нормальное распределения (их описание см. в разде- ле 6.2.2) к данным наблюдений за временем обслуживания. (В случае с экспоненциаль- ным распределением мы выбрали среднее значение Р, чтобы полученное в результате распределение как можно точнее отображало имеющиеся данные.) Затем мы выполни- ли по 100 независимых прогонов имитационной модели системы массового обслужива- ния (то есть для каждого прогона выбирали разные случайные числа, о чем будет рас- сказано в разделе 7.2), используя каждое из пяти подобранных распределений. Прогоны имитационной модели (всего их было 500) продолжались до тех пор, пока не было заре- гистрировано 1000 задержек в очереди. Итоги этих прогонов приведены в табл. 6.2. Об- ратите внимание на то, что во втором столбце таблицы среднее значение 100 000 задер- жек дано для каждого из распределений времени обслуживания. Как станет ясно из раздела 6.7, распределение Вейбулла представляет наиболее подходящую модель дан- ных для времени обслуживания. Поэтому средняя задержка для реальной системы дол- жна быть близка к 4,36 мин. Средние задержки для нормального и логнормального рас- пределений составляют соответственно 6,04 и 7,19 мин, что отвечает погрешностям модельных выходных величин, равным 39 и 65 %. Особенно неожиданным является та- кой результат для логнормального распределения, так как оно имеет ту же общую фор- му (с положительной асимметрией), что и распределение Вейбулла. Однако оказывает- ся, что у гистограммы, соответствующей логнормальному распределению, правый конец более «толстый» и поэтому вероятно возникновение более длительных интервалов вре- мени обслуживания и задержек. Таким образом, разница между «вероятностями боль- ших отклонений», размещенных в четвертом столбце таблицы, еще более значительна. Выбор распределения вероятностей может оказать существенное влияние на выходные данные моделирования и, следовательно, качество решений, принимаемых на основе этих данных. Таблица 6.2. Результаты моделирования для пяти распределений времени обслуживания Распределение времени обслуживания Средняя задержка в очереди, мин Среднее число требований в очереди Доля задержек > 20 Экспоненциальное распределение 6,71 6,78 0,064 Гамма-распределение 4,54 4,60 0,019 Распределение Вейбулла 4,36 4,41 0,013 Логнормальное распределение 7,19 7,30 0,078 Нормальное распределение 6,04 6,13 0,045
350 Глава 6. Выбор входных распределений вероятностей Если имеется возможность собрать данные по требующимся случайным пере- менным, их можно применить в одном из следующих методов, для того чтобы определить распределение (методы расположены в порядке предпочтения): 1. Значения данных используются непосредственно при моделировании. Напри- мер, если данные представляют собой время обслуживания, тогда выбирается одно из значений, когда оно понадобится при моделировании. Такое моделиро- вание иногда называется моделированием, управляемым блоком слежения. 2. Значения данных используются для определения функции эмпирического рас- пределения (см. раздел 6.2.4). Если эти данные представляют время обслужива- ния, мы сделаем выборку из указанного распределения, когда при моделирова- нии понадобится значение времени обслуживания. 3. Стандартные методы статистического вывода используются для того, чтобы подобрать форму теоретического распределения (см. пример 6.1), скажем, экс- поненциального или распределения Пуассона, к данным и выполнить провер- ки гипотезы с целью определения, насколько хорошо осуществлен подбор. Ес- ли отдельное теоретическое распределение с конкретными значениями для его параметров является хорошей моделью данных о времени обслуживания, то мы сделаем выборку из этого распределения, когда при моделировании пона- добится значение времени обслуживания. Метод 1 имеет два недостатка. При его применении в моделировании может воспроизводиться только то, что уже происходило ранее, и редко бывает достаточ- но данных для выполнения всех необходимых прогонов имитационной модели. Метод 2 лишен этих недостатков, поскольку, по крайней мере в случае непрерыв- ных данных, может быть сгенерировано любое значение между точками минимума и максимума данных наблюдений (см. раздел 8.3.16). Таким образом, предпочти- тельнее использовать метод 2. Однако иногда можно применять и метод 1. Напри- мер, для распределительного центра необходимо сравнить предложенную систему транспортировки товаров с существующей системой. Для каждого заказа имеются следующие данные: время поступления, список требующихся товаров, количество единиц товара. Трудно, а то и невозможно, смоделировать поток заказов для опре- деленного периода времени (например, 1 месяц) с помощью методов 2 и 3. Таким образом, в этом случае существующая и предложенная системы часто будут моде- лироваться с использованием ранее зарегистрированного потока заказов. Метод 1 также рекомендуется применять для проверки адекватности модели, когда мо- дельные выходные данные для существующей системы сравниваются с выходны- ми данными, полученными из самой системы (см. описание метода коррелирован- ной проверки в разделе 5.6.1). Если для данных наблюдений можно правильно подобрать теоретическое рас- пределение (метод 3), тогда часто удобнее использовать его, а не эмпирическое распределение (метод 2). Для этого имеется ряд причин. ♦ У функции эмпирического распределения могут быть определенные .«искаже- ния», особенно если доступно лишь небольшое количество данных, тогда как теоретическое распределение «сглаживает» данные и предоставляет инфор- мацию об общем распределении, лежащем в их основе.
6.1. Введение 351 ♦ Если эмпирические распределения применяются обычным способом (см. раз- дел 6.2.4), при моделировании невозможно сгенерировать значения вне облас- ти данных наблюдений (см. раздел 8.3.16). Это не совсем удобно, поскольку многие рабочие показатели моделируемых систем в большой степени зависят от вероятности возникновения «предельных» событий, то есть генерирования очень большого времени обслуживания. Используя же теоретическое распре- деление, можно генерировать значения вне области данных наблюдений. ♦ В некоторых ситуациях может существовать веская «физическая» причина для применения определенной формы теоретического распределения в каче- стве модели отдельной входной случайной переменной (см., например, раз- дел 6.12.1). Даже если нам посчастливится получить такую информацию, все равно было бы неплохо обращаться к данным наблюдений, чтобы обеспечить эмпирическую поддержку использования определенного распределения. ♦ Теоретическое распределение — это оптимальный способ представления на- бора значений данных. В случае, если из непрерывного распределения может быть получено п значений данных, то 2п значений (например, данные и соот- ветствующие интегральные вероятности) должны быть введены в компьютер и сохранены, чтобы представить эмпирическое распределение в пакетах ими- тационного моделирования. Поэтому очень неудобно использовать эмпириче- ское распределение, когда набор данных имеет большой объем. ♦ Теоретическое распределение проще изменять. Предположим, что для моде- лирования набора интервалов времени между прибытиями хорошо подходит экспоненциальное распределение со средним значением, равным 1 мин. Если : мы хотим определить, как повлияет на моделируемую систему увеличение ин- тенсивности прибытия на 10 %, нам всего лишь нужно изменить среднее зна- чение экспоненциального распределения на 0,909. Естественно, существуют ситуации, в которых ни одно теоретическое распре- деление не будет адекватно данным наблюдений. В таких случаях рекомендуется использовать эмпирическое распределение. Еще один недостаток теоретических распределений (например, логнормальных) заключается в том, что из них мотут генерироваться сколько угодно большие значения, хотя и с очень малой вероят- ностью. Предположим, что случайная величина никогда не сможет принять значе- ние больше Ь, тогда желательно усечь подобранное теоретическое распределение в точке b (см. раздел 6.8). Например, может быть известно, что время обслужива- ния в банке вряд ли будет превышать 15 мин. В остальной части главы 6 рассматриваются различные темы, связанные с вы- бором входных распределений. В разделе 6.2 речь пойдет о том, каким образом можно параметризировать теоретические распределения, как собирать важные факты, касающиеся большинства из наиболее часто применяемых непрерывных и дискретных распределений, а также о том, как находить эмпирические распреде- ления. В разделе 6.3 представлены методы, с помощью которых можно опреде- лить, являются ли данные независимыми наблюдениями, полученными из некото- рых лежащих в их основе распределений; именно такие данные требуются для многих статистических процедур в этой главе. В разделах 6.4-6.6 описываются
352 Глава 6. Выбор входных распределений вероятностей три основных действия, выполняемых с целью определить теоретическое распре- деление на основе данных наблюдений. В разделе 6.7 рассматривается программа подбора распределений ExpertFit и соответствующий пример. В разделе 6.8 будет рассказано, как можно сместить с 0 некоторые теоретические распределения (на- пример, гамма-распределение, распределение Вейбулла и логнормальное распре- деление), чтобы лучше подогнать их к данным наблюдений. Кроме того, в ней бу- дут рассмотрены усеченные распределения. Раздел 6.9 посвящен распределениям Безье, которые представляют четвертый способ выбора распределения на основе данных наблюдений. В разделе 6.10 рассказывается, как определить и оценить многомерное распределение, когда доступны данные наблюдений. В разделе 6.11 описаны возможные методы, позволяющие определить входные распределения в том случае, если у нас вообще отсутствуют данные. В разделе 6.12 представлены некоторые вероятностные модели, с помощью которых можно описать способ по- ступления требований в систему, а в разделе 6.13 речь идет о методах, применяе- мых с целью определения, являются ли наблюдения, полученные из различных источников, однородными и могут ли они быть объединены. Графики и критерии согласия, приведенные в данной главе, разработаны с по- мощью программы подбора распределений ExpertFit (см. раздел 6.7). 6.2. Наиболее часто используемые распределения вероятностей В этой главе мы ставили перед собой задачу рассмотреть различные распределе- ния, применяемые в имитационном моделировании, и создать унифицированный список важных свойств данных распределений [Johnson, Kotz and Kemp, 1992; Evans, Hastings and Peacock, 1993; Johnson, Kotz and Balakrishnan, 1994, 1995]. В разделе 6.2.1 дан краткий обзор общих методов, посредством которых опреде- ляются или параметризируются непрерывные распределения, а в разделах 6.2.2 и 6.2.3 содержатся характеристики некоторых непрерывных и дискретных распре- делений. И наконец, в разделе 6.2.4 показано, как данные могут использоваться для определения эмпирического распределения. 6.2.1. Параметризация непрерывных распределений Для заданного семейства непрерывных распределений, в том числе нормальных или гамма-распределений, обычно существует несколько альтернативных спосо- бов определения, или параметризации, плотности распределения вероятностей. Если параметры определены правильно, они могут быть отнесены к одному из трех главных типов параметров на основании их физической или геометрической интерпретации, а именно: параметрам положения, масштабным параметрам и па- раметрам формы. Параметр положения у определяет положение области значений распределе- ния на оси абсцисс (оси х); обычно у — это средняя (среднее значение ц для нор- мального распределения) или нижняя конечная точка (см. раздел 6.8) области
6.2. Наиболее часто используемые распределения вероятностей 353 распределения. (В последнем случае параметры положения иногда называют па- раметрами сдвига.) При изменении параметра у соответствующее ему распределе- ние просто сдвигается влево или вправо без каких-либо иных изменений. Кроме того, если распределение случайной величины X имеет параметр положения 0, то распределение случайной величины Y - X + у имеет параметр положения у. Масштабный параметр р определяет масштаб (или единицы) измерения зна- чений в диапазоне распределения. (Стандартное отклонение ст — это масштабный параметр для нормального распределения.) Изменяя параметр р, соответствую- щее распределение можно сократить или увеличить без изменения его основной формы. Кроме того, если распределение случайной величины X имеет масштаб- ный параметр 1, то распределение случайной величины У- рХ— масштабный па- раметр р. Параметр формы а в отличие от параметра положения и масштабного пара- метра определяет основную форму распределения в общем семействе распределе- ний. Изменение параметра а, как правило, приводит к более фундаментальному изменению свойств распределения, чем изменение параметра положения или мас- штабного параметра. Некоторые распределения (в частности, экспоненциальное и нормальное) не имеют параметра формы, тогда как другие (например, бета-рас- пределение) могут иметь два таких параметра. 6.2.2. Непрерывные распределения В табл. 6.3 представлена информация, касающаяся использования в имитацион- ном моделировании тринадцати непрерывных распределений. Сначала показаны возможные варианты (конечно, не все) применения распределений (другие вари- анты применения распределений вы найдете в литературе [Lawless, 1982; Hahn, Shapiro and Hahn, 1994]. Затем приведены плотность распределения вероятностей и функция распределения (если она существует в простой конечной форме). Да- лее следует краткое описание параметров, включая их возможные значения. Об- ласть — это интервал, значения из которого может принимать соответствующая случайная величина. В таблице также приведены среднее (ожидаемое значение), дисперсия и мода, то есть значение, в котором плотность распределения вероятно- стей достигает максимума. Оценка максимального правдоподобия относится к оценке (оценкам) парамет- ра (параметров), о которой пойдет речь в разделе 6.5. Примечания касаются соот- ношения между рассматриваемым распределением и другими распределениями. Для каждого распределения даны графики плотности распределения вероятно- стей. Обозначение, следующее за названием распределения, состоит из предлагае- мой нами аббревиатуры для этого распределения и параметров. Символ «-» озна- чает «распределен как». Обратите внимание на то, что в таблицу включены менее известные распреде- ления: Джонсона SB, Джонсона Sv, лог-логистическое, Пирсона типа V и Пирсона типа VI, поскольку мы выяснили, что эти распределения обычно больше подходят для наборов данных, чем стандартные, такие как гамма-распределение, логнор- мальное распределение или распределение Вейбулла.
354 Глава 6. Выбор входных распределений вероятностей Таблица 6.3. Непрерывные распределения Равномерное распределение U(e, 6) Варианты применения Используется как «первая» модель величины, которая случайно изменяется между а и Ь, но о которой больше почти . ничего не известно. Распределение U(l, 0) универсально при генерировании случайных значений из любых других распределений (см. главы 7 и 8) Плотность (рис. 6.5) 1 /(х) = • если а х S А; 0 в противном случае 0 еслих < а; Распределение f(x) = если а £ х £ Ь; 1 если А <х Параметры a lib — вещественные числа, для которых а < Ь; а — параметр положения, b — масштабный параметр Область [«.*] Среднее а+ Ь 2 Дисперсия (Ъ-а)2 12 Мода Конкретной величины не существует Оценка максимального а = min X,, b = max Xt правдоподобия Примечания 1. Распределение U(l, 0) — особый случай бета-распределения (когда cq - а2 - 1). 2. Если X ~ U(l, 0), а [х, х + Дх] — подынтервал [0,1] с Дх £ 0, то х+Лх Р(Х е[х,х + Дх]) = = (х + Дх)-х = Дх, что оправдывает название «равномерное» /(х) 1/(Ь-а)~ ------------1_____________________I______________________ О а b_х Рис. 6.5. Функция плотности распределения вероятностей U(a, b)
6.2. Наиболее часто используемые распределения вероятностей 355 Экспоненциальное распределение ехро(р Варианты применения Плотность (рис. 6.6) Распределение Интерв в систе время б /(*) = Е(х) = ал времени между поступлениями требований му, происходящими с постоянной интенсивностью; езотказной работы устройства 1е-ж/₽ еслих^О; р 0 в противном случае 1 - е“*/₽ если х £ 0; 0 в противном случае Масштабный параметр ₽ > О [О, 00) Параметры Область Среднее Дисперсия Мода Оценка максимального правдоподобия Примечания Э-ВД 1. Распределение ехро(Р) — особый случай гамма- распределения и распределения Вейбулла (для масштабных параметров cq - 1 и ₽ в обоих случаях). 2. Если Xit Х2,.... — независимые случайные величины с распределением ехро(₽), то Xt + Х2 +... + Х„ ~ gamma(m, р), именуемое также распределением Эрланга т-го порядка. 3. Экспоненциальное распределение — это единственное непрерывное распределение с отсутствием последействия (См. задачу 4.26) Рис. 6.6. Функция плотности распределения вероятностей ехро(1) продолжение #
356 Глава 6. Выбор входных распределений вероятностей Таблица 6.3 (продолжение) Гамма-распределение gamma(a, р) Варианты применения Время выполнения какой-либо задачи, например обслуживания клиента или ремонта машины Плотность (рис. 6.7) /(*)== Г(а) еслихХ); 0 в противном случае, где Г(а) — гамма-функция, определяемая как Г(г) - t^e^dt для любого вещественного числа z > 0. Свойства гамма- функции: Г(г + 1) - zT(z) для любого 2 > 0; Г(Л + 1) - Л! для любого неотрицательного целого числа k; Г(Л + 1/2) - - л/л • 1 • 3 • 5 — (2 k - 1)/2*для любого положительного целого числа k, Г(1/2) - -Jn Распределение Если а не является целым числом, конечной формы не существует. Если a — положительное целое число, тогда F(x)=1 еЖ/₽§(ЯУ еслих>0; 0 в противном случае Параметры Область Среднее Дисперсия Мода Оценка максимального правдоподобия Параметр формы a > 0, масштабный параметр р > 0 [0,оо) «Р, сф2 Р(а - 1), если а £ 1; 0, если а < 1 Должны выполняться два следующих равенства: SlnX, lng + 4<&)«J=l—, dp = X(n) которые могут быть решены численно. CP(d) - Г'(а)/Г(а) и называется дигамма-функцией; Г' — производная от Г.) Альтернатива_получения приближенных значений аир: пусть Т- [lnX(n) -Ei-ilnXj/n]-1, с помощью табл. 6.20 получаем а как функцию Т, пусть р - Х(п)/а (об этих процедурах и табл. 6.20 см. в книге [Choi and Wette, 1969]) Примечания 1. Распределения ехро(Р) и gamma(l, Р) одинаковы. 2. Для положительного целого числа m gamma(m, Р) называется распределением Эрланга(Р) zn-го порядка. 3. Распределение «хи-квадрат» с k степенями свободы — это то же, что и gamma(&/2, 2). 4. Если Xit Х2,..., Хт — независимые случайные величины с Xt ~ ~ gamma(aj, Р), то Х2 + Х2 +... + Хт ~ gamma(a1 + a2 +...+ % р). 5. Если Xi н Х2 — независимые случайные величины с Х{ ~ ~gamma(aj, Р), то Xi/(Xx+ Х2) ~ beta(at, сс2)- 6. Тогда и только тогда X ~ gamma(a, Р), когда Y - 1/Х имеет распределение Пирсона типа V с параметром формы a и масштабным параметром 1/р, обозначаемое как РТ5 (a, 1/Р). 7. °0 если а < 1; lim /СО - ‘ р если а = 1; 0 если а > 1
6.2. Наиболее часто используемые распределения вероятностей 367 Распределение Вейбулла Вариант применения Плотность (рис. 6.8) Распределение Параметры Область Среднее Дисперсия Мода Оценка максимального правдоподобия Weibull(g, Р) ____________________________________ Время выполнения какой-либо задачи, время безотказной работы устройства еслих >0; в противном случае еслих >0; в противном случае Параметр формы а > 0, масштабный параметр Р > 0 [0,оо) ₽Г а /(х) в7«₽'вх<”*е-°'/ю !_£-(«/₽)• 0 Г(х) ' Га-П1/а В----- если а £ 1; V « J 0 если а < 1 Должны выполняться два следующих равенства: продолжение &
358 Глава 6. Выбор входных распределений вероятностей Таблица 6.3 (продолжение) Распределение Вейбулла WeibuU(a, р) Первое равенство может быть численно решено для a с помощью метода Ньютона, а второе непосредственно дает р. Общий рекурсивный шаг для итераций Ньютона a - а + * 1/а*2+(В*Я*-С*2)/В*2' где А = & , С* = £Xf* 1пХ, п i-i <-1 и Я* = £х“*(ЬХ<)2- (Эти формулы, а также доверительный интервал для истинных а и р см. в работе Томана, Бейна и Антля [Thoman, Bain and Antle, 1969].) В качестве отправной точки для этих итераций может использоваться оценка Г" (- V/1Т1/2 (б/л2) £(1пХ{)2-^£1пХ^ fn а°4 n-1 J [Menon, 1963; Thoman, Bain and Antle, 1969]. В работе Томана, Бейна и Антля [Thoman, Bain and Antle, 1969] сообщалось, что при таком выборе Оо с точностью до четырех разрядов требовалось среднее только 3,5 итераций Ньютона. Примечания 1. Распределения ехро(р) и Weibull(l, р) одинаковы. 2. Тогда и только тогда X - Weibull(a, р), когда Xя ~ ехро(р“) (см. задачу 6.2). 3. Логарифм (натуральный) случайной величины с распределением Вейбулла имеет распределение известное как распределение экстремального значения или распределение Гумбеля ([Lawless, 1982; Averill М. Law & Associates, 1999], задача 8.1, б). 4. Распределение Weibull(2, р) также называется распределением Рэлея с параметром р и обозначается как Rayleigh(P). Если У и Z — независимые нормально распределенные величины со средним значением 0 и дисперсией р2 (см. нормальное распределение), тогда X - (У2 + Z*)1/2 ~ Rayleigh(21/2p). 5. При а -> оо распределение Вейбулла становится вырожденным в точке р. Следовательно, плотности распределений Вейбулла для больших значений а имеют резкий подъем в моде. 6. Распределение Вейбулла имеет отрицательную асимметрию, когда а > 3,6 (см. рис. 6.8, б). 7. 00 если а < 1; lim f(x) = • если а = 1; Х-ИГ' ' р 0 если а > 1
6.2. Наиболее часто используемые распредаления вероятностей 359 Рис. 6.8. Функции плотностей распределения вероятностей Weibull(a, 1): а — положительная асимметрия; б — отрицательная асимметрия продолжение
360 Глава 6. Выбор входных распределений вероятностей Таблица 6.3 (продолжение) Нормальное распределение N(h,ct*) Варианты применения Ошибки различного типа, например точка попадания бомбы; величины, представляющие собой сумму большого количества других величин (на основании центральной предельной теоремы) Плотность (рис. 6.9) f(x) - * е-(^-й2)/(2<г2) ддд всех вещественных чисел х Распределение Параметры Конечная форма отсутствует Параметр положения ц е (-оо, оо), масштабный параметр Область Среднее Дисперсия Мода Оценка максимального правдоподобия Примечания (—оо, оо) И ст2 ц Г 4 р=Х(п), а=^^-152(п) 1. Если две совместно нормально распределенные случайные величины являются некоррелированными, они также являются независимыми. К распределениям, отличным от нормального, этот вывод не относится. 2. Предположим, что Xj, Х2,..., Хт имеют совместное многомерное нормальное распределение. Пусть ц, — - E(Xj) и Q - Cov(Xj, Xj). Тогда для любых вещественных чисел а, Ьь Ь2,Ьт случайная величина а + ijXj + Ь^Х2 + ... + Ь„Хт имеет нормальное распределение со средним ц - JXi и дисперсией м j-i Заметьте, нам не требуется допускать независимость величин Х{. Если величины Х{ являются независимыми, о2 =£#Уаг(ХД 3. Распределение N(0, 1) называют стандартным или единичным нормальным распределением. 4. Если Xit Х2 X* — независимые случайные величины, имеющие стандартное нормальное распределение, величины Х/, Х2,..., X*2 имеют распределение «хи-квадрат> с k степенями свободы, которое также является gamma-распределением (Л/2, 2). 5. Если X ~ N(p, ст2), ех имеет логнормальное распределение с параметрами цист, обозначаемое как LN(p, о2). 6. Если X ~ N(0,1), У имеет распределение <хи-квадрат» с k степенями свободы, а X и У — независимые величины, то хД/У/£ имеет t-распределение с k степенями свободы (иногда именуемое распределением Стьюдента)
6.2. Наиболее часто используемые распределения вероятностей 361 Нормальное распределение N(p, о2)____________________________________________ 7. Если нормальное распределение используется, чтобы представить неотрицательную величину (скажем, время), его плотность должна быть усечена в точке х - О (см. раздел 6.8). 8. При о -> 0 нормальное распределение становится вырожденным в точке ц Рис. 6.9. Функция плотности распределения вероятностей N(0,1) Логнормальное распределение LN(p, о1) Варианты применения Время выполнения какой-либо задачи (график функции плотности принимает форму, как у графиков плотности gamma(a, ₽) и распределений Weibull(a, В) для a > 1, но может иметь большой острый «выступ» ближе к х - 0, что бывает полезно); величины, являющиеся произведением большого числа других величин (на основании центральной предельной теоремы) 1 —(lux—ц)2 Плотность (рис. 6.10) . —j exp s—— еслих>0; 0 в противном случае Распределение Параметры Конечная форма отсутствует Параметр формы о > 0, масштабный параметр ц е (-оо, оо), Область Среднее Дисперсия Мода [О,») еН+а2/2 е2и+«2(е<>2 -1) ен-п2 продолжение &
362 Глава 6. Выбор входных распределений вероятностей Таблица 6.3 (продолжение) Логнормальное распределение LN(p, о2) Оценка максимального правдоподобия £1пХ,- Ц - ----- и п Примечания Г п -|‘/2 £(1пХ;-й)2 i-1 П 1. Тогда и только тогда X - LN(p, о2), когда In X- N(p, о2). Поэтому, если считается, что данные Xlt Х2,Х„ имеют логнормальное распределение, логарифмы точек данных In Xit In Х2,In Х„ могут рассматриваться как нормально распределенные данные для построения гипотез относительно распределения, оценки параметров и проверки по критерию согласия. 2. При а -> 0 логнормальное распределение становится вырожденным в точке е*1. Плотности логнормального распределения для небольших значений а имеют Рис. 6.10. Функция плотности распределения вероятностей LN(0, о2) Бета-распределение beta(alt a,) Варианты применения Используется как приблизительная модель при отсутствии данных (см. раздел 6.11); распределение случайной доли (доли бракованных товаров в партии); время выполнения задачи, скажем, в сетевом графике Плотность (рис. 6.11) /(*)=• - B(ata2) если0<х<1, 0 в противном случае, где B(alf a2) — бета-функция, определяемая как 1 B(z„z2)= [^-'(l-ty^dt 0 для любых вещественных чисел Z\ > 0, z2 > 0.
6.2. Наиболее часто используемые распределения вероятностей 363 Бета-распределение beta(a„ a2) Некоторые свойства бета-функции: B&.z^B&.Zi), Распределение В целом конечная форма отсутствует. Если at или а2 является положительным целым числом, можно воспользоваться биномиальным разложением, чтобы получить- Е(х), которая будет многочленом в точке х, а степени х, как правило, будут положительными вещественными числами от 0 до aj + a2 - 1 Параметры Область Параметры формы at > 0 и а2 > 0 [0,1] Среднее а1 а2 + а2 Дисперсия aia2 (а, + a2)2(at + а2 + 1) Мода оц -1 at + <х2 -2 Он 1 0 1 если а, > 1, а2 > 1; если at < 1, а2 < 1; если at < 1, а2 £ 1 или а2 = 1, а2 > 1; если а2 £ 1, а2 < 1 или at > 1, а2 = 1; однозначной величины не существует если а4 = а2 = Оценка максимального правдоподобия Должны выполняться два следующих равенства: 'Р(а1) - Ч^сц + а2) = InGj, '¥(а2') ~ ^(«i + “2) = lnG2, где 'Р — дигамма-функция; Gt - (П"-1 и G2 - (см. [Gnanadesikan, Pinkham, and Hughes, 1967]); заметьте, что G, + G2 S 1. Найти оценку максимального правдоподобия можно, решив эти уравнения [Beckman and Tietjen, 1978] или подобрав с помощью табл. 6.21 (см. приложение 6А) приближенные значения at и а2, вычисленные для определенных пар (Gt, G2) модификацией методов из работы Бекмана и Тьетжена [Beckman and Tietjen, 1978]. Примечания 1. Распределения U(0,1) и beta(l, 1) одинаковы. 2. Если Xt и Х2 — независимые случайные величины с Xi - gamma(<Xi, Р), то XJQLx+ Х2) ~ beta(a1, a2). 3. Для случайной величины X с бета-распределением в интервале [0,1] можно изменить масштаб и размещение, чтобы получить случайную величину X с бета-распределением в интервале [а, Ь] с той же формой путем трансформации а + (b - а)Х. 4, Тогда и только тогда X ~ beta(at, a2), когда 1 - X ~ ~ beta(a2, 04). продолжение &
364 Глава 6. Выбор входных распределений вероятностей Таблица 6.3 (продолжение) __________________________ Бета-распределение beta(gt> <Хд)______________________________________________ 5. Тогда и только тогда X ~ beta(<xt, a2), когда Y - X/(l - X) имеет распределение Пирсона типа VI с теми же параметрами формы cq, a2 и масштабным параметром 1, обозначаемое как РТ6 (оц, 1). 6. Плотность beta(l, 2) — левый треугольник, а плотность beta(2,1) — правый треугольник. 00 если eq < 1; а-2 если «.j = 1; 0 если «Xj > 1 00 если а2 < 1; «1 если а2 = 1; О если а2 > 1 8. Тогда и только тогда плотность симметрична х ~ 1/2, когда cq “ - a2. Среднее и мода равны тогда и только тогда, когда oq - a2 7. lim/(x) = Bm/(x) = в г Рис. 6.11. Функции плотностей распределения вероятностей beta(at, сц): а-г — при разных значениях а, и сц Распределение Пирсона типа V РТ5(а, 0)_____________________________________ Варианты применения Время выполнения какой-либо задачи (график функции плотности принимает форму, подобную форме графика плотности логнормального распределения, но может иметь большой острый «выступ» ближе к х - 0)
6.2. Наиболее часто используемые распределения вероятностей 365 Распределение Пирсона типа V PT5(a, Р) Плотность (рис. 6.12) /(*) = x-(a+Dg-ifr р-*Г(а) еслих >0; Распределение F(x) = з* । >£ । О, , ТН в противном случае еслих >0; 10 в противном случае, Параметры Область Среднее Дисперсия Мода Оценка максимального правдоподобия Примечания где F(^x) — функция распределения случайной величины с распределением gamma(a, 1/р) Параметр формы a > 0, масштабный параметр р > О [О, "О) Р для a > 1 _Р_ a +1 При наличии данных Xit Х2>..., Х„ подборка распределения gamma(aG, pG) к i/Xlt i/X2,.... i/X„ в результате дает оценки по методу максимального правдоподобия ас и pG. Оценки максимального правдоподобия для РТ5(а, р) составляют a = aG и р - 1/рс (см. примечание 1). 1. Тогда и только тогда X ~ PT5(a, Р), когда У - 1/Х ~ ~ gamma(a, 1/р). Поэтому распределение Пирсона типа V называют обращенным гамма-распределением. 2. Заметьте, среднее и дисперсия существуют только для определенных значений параметра формы Рис. 6.12. Функции плотностей распределения вероятностей PT5(a, 1) продолжение #
зев Глава 6. Выбор входных распределений вероятностей Таблица 6.3 (продолжение) Распределение Пирсона типа VI PT6(at <*а, ₽) Варианты применения Время выполнения какой-либо задачи <*/₽)“*-1 Плотность (рис. 6.13) /(х) =' pB(a1,a2)[l +(r/p)]a,+“2 ’ 0 в противном случае Распределение F(x) = • FR| —* 'я 1 если х > 0; BVx + pj 0 в противном случае, где FB(x) — функция распределения случайной величины с распределением beta(a1> a2) Параметры Параметры формы а, > 0 и <х2 > 0, масштабный параметр р > 0 Область [0, оо) Среднее Pai a, -1 для a2 > 1 Дисперсия 52а.(а. + а2-1) _ -—« для а2 > 2 (а2 -1)2(а2 -2) [₽(«!-!) -ели а 1- Мода Оценка максимального правдоподобия Примечания а2 +1 1 0 в противном случае 1ри наличии данных Хр Х2,.... Х„ имеющих распределение ?Т6(а!, а2,1), подборка распределения beta(ai> «2) к Xj/(i + Х;) для i - 1, 2 п в результате даст оценки максимального правдоподобия оц и а2. Оценки по методу максимального правдоподобия для PT6(a1, а2,1) (заметьте, J - 1) также равны 64 и а2 (см. примечание 1) 1. Тогда и только тогда X - PT6(alt a2,1), когда У - Х/(1 + X) 1/X - beta(aj, a2). 2. Если Х2 и Х2 — независимые случайные величины с Xi - gamma(a1, р), а Х2 - gamma(a2,1), то У - Xt/X2 - PT6(aP a2, р) (см. задачу 6.3). 3. Обратите внимание, что среднее и дисперсия существуют только для определенных значений параметра формы а2 Рис. 6.13. Функции плотностей распределения вероятностей РТ6(сц, a2, 1): а — а, - 1/2; б — at - 1
6.2. Наиболее часто используемые распределения вероятностей 387 Рис. 6.13. Функции плотностей распределения вероятностей РТ6(а1т 1) (продолжение): в — а( - 2; г — а( - 4 Лог-логистическое распределение LL(a, ₽) Варианты применения Время выполнения какой-либо задачи Плотность (рис. 6.14) /(*) = ₽[! + х/Р)“]2 СЪ71И Л ' °’ 0 в противном случае 1 Распределение F(x) = 1 + (x/P)-a если х > 0; 0 в противном случае Параметры Параметр формы a > 0, масштабный параметр р > 0 Область [0, со) Среднее Р0 csc(0) для a > 1, где 0 - я/а Дисперсия Р20{2 csc(20) - 0[csc(0)]2} для а > 2 (а - Мода - Ча + lJ если а >1; 0 в противном случае Оценка максимального Допустим, что Yj — In X* Решите два следующих правдоподобия уравнения для а и Ь : £(1 + е«-*>/‘г*=2; (6.1) SI b + ( 2) Тогда оценки максимального правдоподобия для лог-логистического распределения будут а = 1/а и |3 = е4. Джонсон, Коц и Балакршпнан [Johnson, Kotz and Balakrishnan, 1995, chap. 23] предлагают решать уравнения (6.1) и (6.2) с помощью метода Ньютона продолжение &
368 Глава 6. Выбор входных распределений вероятностей Таблица 6.3 {продолжение) Лог-логистическое распределение LL(a, ₽) Примечания Тогда и только тогда X - LL(a, Р), когда In X имеет логистическое распределение (см. задачу 8.1) с параметром положения In р и масштабным параметром 1/а. Следовательно, если есть данные Xit Х2,..., Х„ с лог-логистическим распределением, то при построении гипотез относительно распределения, оценке параметров и проверке по критерию согласия, логарифмы точек данных In Xlt In Х2,.... In Х„ могут рассматриваться как такие, которые имеют логистическое распределение Рис. 6.14. Функции плотностей распределения вероятностей LL(a, 1) Распределение Джонсона Se_______JSB(at, д,, а, Ъ)___________________________________ Плотность (рис. 6.15) ь_ Лв1+ааЬГ^)]2 f(x) ~ е L 1 Л если а <х <Ь‘, {x-d){b-xyJ2n .0 в противном случае Распределение Г(х) = если а < х <Ь; в противном случае, где Ф(х) — функция нормального распределения случайных величин сц=0ис?=1
6.2. Наиболее часто используемые распределения вероятностей 369 Распределение Джонсона St Параметры Область Среднее Мода Примечания JSB(ctlt а,, а, Ь)_______________________________________ Параметр положения а е (-оо, оо), масштабный параметр Ъ - а (Ь > а), параметры формы 04 6 (-оо, оо) и <х2 > О М Все моменты существуют, но они чрезвычайно сложны [Johnson, Kotz, Balakrishnan, 1994, р. 35] Плотность бимодальна, когда а, < -j= и V2 |at| < a^a2 _2a2 tanh~*( д/1— 2a2j (tanh*1 — это обратный гиперболический тангенс); в противном случае плотность будет унимодальной. При любой моде х, кроме конечных точек области, будет выполняться равенства 2(х - а) . 2 . fx - гА -т------ = 1 + а,а2 + а2 ш -- Ь-а 1 1 1 \.b-xj 1. Тогда и только тогда X - JSB(c4, <х2, а, Ъ), когда at + a2 ln^y£y) ~N(O,1). 2. Функция плотности смещена влево, симметрична или смещена вправо, когда соответственно 04 > 0, 04 - 0 и 04 < 0. 3. lim /(х) = lin^/(x) = 0 для всех значений а, и а2. 4. Четыре параметра можно оценить с помощью ряда методов [Slifker and Shapiro, 1980; Swain, Venkatraman, Wilson, 1988] Рис. 6.15. Функции плотностей распределения вероятностей JSB(a„ a2,1): а, б — при разных значениях at и о. продолжение &
370 Глава 6. Выбор входных распределений вероятностей Рис. 6.15. Функции плотностей распределения вероятностей JSB(a„ cij, 1) {продолжение)', а, б— при разных значениях а, и а. Распределение Джонсона SD JSU(a1( a2, у, р) Плотность (рис. 6.16) ^(х-у)2 ~ aj+ajln e + P2 2 Б2 г-Ат) - JJ ДЛЯ -оо < х < оо Распределение F(x) = Ф at + a2 In x-y . I(x-y ₽ К P \2 1 + 1 • ДЛЯ —оо < X < СО Параметры Область Параметр положения у е (-оо, оо), масштабный параметр ₽ > 0, параметры формы aj е (-оо, оо) и а2 > 0 (-оо, оо) Среднее Y-peVV^sinhl^ ka2. , где sinh — гиперболический синус Мода Мода, не равная конечным точкам области, справедлива выражению у + Ру, где у удовлетворяет уравнению у + ata2y(y2 + 1 + а2у/у2 + 1 ln(y + y/у2 + 1) = 0 Примечания 1. Тогда и только тогда X - JSU(a!, , X-у 1(Х-у}2 . сц + a2 In —g-J- + —p-i-1 + 1 х2, У, Р). когда ~N(O,1). 2. Функция плотности смещена влево, симметрична или смещена вправо, когда соответственно а( > 0, а( - 0 и а, < 0. 3. Четыре параметра можно оценить с помощью ряда методов [Slifker and Shapiro, 1980; Swain, Venkatraman, Wilson, 1988]
6.2. Наиболее часто используемые распределения вероятностей 371 Треугольное распределение______ Варианты применения Плотность (рис. 6.17) triang(n, Ь, с)_____________________________________ Используется как приблизительная модель в отсутствие данных (см. раздел 6.11) 2(х - а) (Ь - а)(с - а) 2(Ь-х) (b-a)(b-c) если а £ х £ с; /(*) = если с < х £ Ь; .0 в противном случае продолжение &
372 Глава 6. Выбор входных распределений вероятностей Таблица 6.3 (продолжение) Треугольное распределение triang(g, Ъ, с) Распределение 0 (х - а)2 еслих < а; f(x) = (Ъ-а)(с-а) 1 <Ь-*)2 (Ъ-а)(Ь-с) 1 если а 5 х 5 с; если с < х £ Ь; еслиЬ <х Параметры Область Среднее Дисперсия Мода Оценка максимального правдоподобия Примечания Вещественные числа а, b и с, для которых а < с < Ь; а — параметр положения, Ъ - а — масштабный параметр, с — параметр формы М] а + Ь+ с 3 а2 + Ь2 + с2 - ab - ас - Ьс 18 с Треугольное распределение мы используем так, как описано в разделе 6.11, в качестве грубой модели при отсутствии данных. Следовательно, оценки максимального правдоподобия в этом случае не имеют смысла Предельные случаи распределения, как-то: при с -> Ъ и при с -> а, — называются соответственно правое треугольное распределение и левое треугольное распределение и рассматриваются в задаче 8.7. Для а - 0 и Ь - 1 как левое, так и правое треугольные распределения являются специальными случаями бета-распределения Рис. 6.17. Функция плотности треугольного распределения вероятностей triang(a, b, с) 6.2.3. Дискретные распределения Шесть дискретных распределений описаны в табл. 6.4 по тому же образцу, что и непрерывные распределения в табл. 6.3.
6.2. Наиболее часто используемые распределения вероятностей 373 Таблица 6.4. Дискретные распределения Распределение Бернулли Bernoulli (р) Варианты применения Случайное событие с двумя возможными результатами; используется для генерирования других случайных дискретных величин, например, с биномиальным, геометрическим или отрицательным биномиальным распределением 1 - Р еслих = 0; Вероятностная мера (рис. 6.18) р(х) = • р если х = 1; 0 в противном случае 0 если х < 0; Распределение Е(х) = • 1 - р если 0 £ х < 1; 1 если 1 £ х Параметры Область Среднее р е (0, 1) {0,1} Р Дисперсия Мода Оценка максимального Р(1 -Р) 0 если р < 1/2; 0 и 1 если р = 1/2; 1 если р > 1/2 правдоподобия Примечания р=Х(п) 1. Случайная величина X с распределением Bernoulli(p) может считаться результатом эксперимента, который завершается либо успешно, либо неуспешно. Если вероятность успеха равна р и X “ 0, когда эксперимент завершается неуспешно, или X - 1 при успешном завершении эксперимента, то X ~ Bernoulli(p). Такой эксперимент, часто именуемый испытанием Бернулли, обеспечивает удобную возможность для соотнесения нескольких дискретных распределений с распределением Бернулли. 2. Если t — положительное целое число, а Хь Хг,..., Xt — независимые случайные величины с распределением Bernoulli(p), то + Х2 + ... + Xt имеет биномиальное распределение с параметрами t и р. Случайная величина с биномиальным распределением, может рассматриваться как число успешных экспериментов в определенном количестве испытаний Бернулли. 3. Допустим, мы начали выполнять независимые репликации испытаний Бернулли с вероятностью успеха каждого испытания р. Тогда число неудач перёд регистрацией первого успешного испытания будет иметь геометрическое распределение с параметром р. Для положительного целого числа s число неудач перед регистрацией х-го успешного испытания имеет отрицательное биномиальное распределение с параметрами s и р. 4. Распределение Bernoulli(p) является особым случаем биномиального распределения (с t— 1 и тем же значением р) продолжение &
374 Глава 6. Выбор входных распределений вероятностей Таблица 6.4 (продолжение) Р(*)| ! р - 1-р 0 х Рис. 6.18. Вероятностная мера распределения Bernoulli(p) (р > 0,5) Дискретное равномерное распределение DU(i,/) Варианты применения Случайное событие, имеющее несколько возможных результатов с одинаковой вероятностью успеха; используется как «первая» модель величины, изменяющейся среди целых чисел от i до j, но о которых мало что известно Вероятностная мера р(х) - № “ * + * еслих е {i,i + 1,..., /}; (рис. 6.19) 19 в противном случае 0 если х < i; Распределение f(*) = 7_l + i ecflHtSxij; 1 если/ <х, где |_х J — наибольшее целое число £ х Параметры inj — целые числа, для которых i ^j;i — параметр положения,/ -» — масштабный параметр Область {», i + 1,...,/} Среднее «+ j 2 Дисперсия (j-i+l)2 -1 12 Мода Конкретной величины не существует Оценка максимального А А правдоподобия Примечания Распределенйя DU(0,1) и Bemoulli(l/2) одинаковы Рис. 6.19. Вероятностная мера распределения DU(i, J)
6.2. Наиболее часто используемые распределения вероятностей 37S Биномиальное распределение bin(t, р) Варианты применения Число успешных экспериментов в t независимых испытаниях Бернулли, вероятность успеха каждого из которых равна р; количество «поврежденных* товаров в партии размером V, число объектов в группе случайного размера (например, в группе людей); число товаров, затребованных из запасов Вероятностная мера (рис. 6.20) ₽U)=- ~P)‘ z еслих е{0,1,.... t}; 0 в противном случае, ГДЧУ — биномиальный коэффициент, определенный как t _ Н х xl(t-x)l Распределение F(x) = 0 если х < 0; ~ ' еслм 0 5 х S 1 если г <х Параметры Область Среднее Дисперсия Мода t — положительное целое число, р е (0,1) {0.1 4 tp tp(i-p) (p(t + 1) -1 и p(t+ 1) если p(t + 1) — целое число; U_p(t+l)J в противном случае Оценка максимального Если известно t, р - X(ri)/t. Если ни t, ни р не известны, i правдоподобия *-Лл,*К* Iff XAfJLll *1X1 iff ПХ1 XIV J EllUj Ь Ж1 существуют тогда и только тогда, когда Х(п) > (п - 1)5®(п)/п - - V(n). Тогда используется следующий метод. Пусть М = max Хг и fk будет числом Х( Z k для k - 0, 1,..., М. ls's" Таким образом, можно доказать, что t и р — значения для t и р, максимизирующие функцию S(t, р) = fh h(t - k + 1) + nt ln(l - p) + nX(n) In с учетом ограничений: t e {M, M+ 1,...} и 0 < p < 1. Легко убедиться, что для определенного значения Х,_например t^, значение^, максимизирующее^^, р), равно X(n)/t0. Таким образом 1 и р — значения t и X(ri)/t, ведущие к наибольшему значению g[t, X(n)/t] для t е {М, М + 1,..., ЛГ}, где ЛГ задано как [DeRiggi, 1983] М'= Х(п)(М-Г) Ll-[V(n)/X(n)]J- Обратите внимание, что g[t, X(ri)/t] — унимодальная функция t Примечания 1. Если Yit Y2,.... Yt— независимые случайные величины с распределением Bemoulli(p), то Yt+ Y2 + ... + Yt~ bin(t, p). 2. Если Xlf X2,..., Xm — независимые случайные величины, a Xt ~ ~ bin(t„ p), то X, + X2 + ... + Xm ~ Ьт(<! +12 + ... + tn, p) продолжение &
376 Глава 6. Выбор входных распределений вероятностей Таблица 6.4 (продолжение) ___________________________________________________ Биномиальное распределение________bin(t, р)_________________________________ ' 3. Распределение bin(t, р) симметрично тогда и только тогда, когда р—1/2. 4. Тогда и только тогда X - bm(£, р), когда t - X - bin(t, 1- р). 5. Распределения bin(l, р) и Bernoulli(p) одинаковы Рис. 6.20. Вероятностные меры распределений Ып(Г, р): а — при t - 5,р - 0,1; б — при t - 10, р - 0,1; в — при t-5,р - 0,5; г — npnt- 10,р-0,5 Геометрическое распределение geom(p) < • Варианты применения Число неудачных экспериментов до первого успешного в последовательности независимых испытаний Бернулли, вероятность успеха каждого из которых равна р; число изделий, осмотренных до того, как было найдено первое поврежденное изделие; число объектов в группе случайного размера; число товаров, затребованных из запасов Вероятностная мера (рис. 6.21) = |р(1 -Р)х еслих е{0,1,...}; [0 в противном случае Распределение Wx)=jl-(1-p/xJ+1 еслих^О; [0 в противном случае Параметры Область Среднее р е (0,1) {0,1,...} (1-P)/P
6.2. Наиболее часто используемыераспределения вероятностей 377 Геометрическое распределение_______geom(p) Дисперсия (1 - р)/ р2 Мода 0 Оценка максимального р - правдоподобия Примечания __ 1 Х(п)+1 1. Если Yt, Y2, ... — последовательность независимых случайных величин с распределением Bemoulli(p), а X - min{i: Y{ - 1} - 1, то X - geom(p). 2. Если Xlt Х2, ..., Xs — независимые случайные величины с распределением geom(p), то + Х2 + ... + Xs имеет отрицательное биномиальное распределение с параметрами s и р. 3. Геометрическое распределение является дискретным аналогом экспоненциального распределения, в смысле что это единственное дискретное распределение с отсутствием последействия (см. задачу 4.27). 4. Распределение geom(p) — особый случай отрицательного биномиального распределения (с з - 1 и одинаковыми значениями параметра р). (к МО.21. Вероятностные меры распределений geom(p): а — при р - 0,25; б — при р - 0,50 продолжение &
378 Глава 6. Выбор входных распределений вероятностей Таблица 6.4 (продолжение) Отрицательно биномиальное распределение negbin(«, р) Варианты применения Число неудачных экспериментов до s-го успешного эксперимента в последовательности независимых испытаний Бернулли с вероятностью успеха р; число качественных изделий, осмотренных до того, как было найдено з-е поврежденное изделие; число объектов в группе случайного размера; число товаров из запасов Вероятностная мера (рис. 6.22) р(х)=. (S+x еслих g{0, 1,...}; [О в противном случае Распределение Р(х)= ^(5+|_1)р^1-рУ еслих 2:0; 0 в противном случае Параметры з — положительное целое число, р е (0,1) Область Среднее Дисперсия {0,1,...} s(l ~ Р) Р s(i-p) р2 Мода Пусть у - [з( 1 - р) - 1]/р; тогда мода fy и у +1 если у — целое число; J + 1 в противном случае Оценка максимального Если известно з, то р - s/[X(n) + з]. Если ни з, ни р правдоподобия не известны, то sup существуют тогда и только тогда, когда V(n) - (п - \)&(п)/п > Х(п). Пусть М = шахХ{ и/* — число Х{ 2 k для k - 0,1,.... М. Is,s” Тогда можно доказать, что sup — значения для з и р, максимизирующие функцию Л(з,р) = ^/41п(з + &-!)+ nslnp + nX(n)ln(l -р) с учетом ограничений: s е {1, 2,...} и 0 < р < 1. Для какого-то определенного значения з, например з0, значение р, максимизирующее функцию Л(з0, р) равно s0/[X(n) + з0], следовательно, мы можем рассматривать Л(1,1/[Х(п) + 1]), Л(2, 2/[Х(п) + 2]) Тогда з и р выбраны как значения з и s/[X(n) + з], ведущие к наибольшему зарегистрированному значению Л(з, s/[X(ri) + з]). Однако поскольку Л(з, s/[X(n) + з]) — унимодальная функция s [Levin and Reeds, 1977], становится ясно, когда следует прервать поиск Примечания 1. Если У„ У2,..., УЛ — независимые случайные величины с распределением geom(p), то тогда У, + У2 +...+ УЛ ~ ~ negbin(s, р). 2. Если У,, У2, - — РВД независимых случайных величин с распределением Bemoulli(p), а X - min{i: Е,_1У,“ з} - - з, то X - negbin(s, р).
6.2. Наиболее часто используемыераспредапения вероятностей 370 Отрицательно биномиальное распределение______________negbin(s, р)___________________________________ ‘ 3. Если Xit Х2,.... Хт — независимые случайные величины, aXi~ negbinfo р), то Xt+ Х2 + ... + Хт - Л. . - negbinfo + s2 + ... + sm, р). 4. Распределения negbin(l, р) и geom(p) одинаковы Рис. 6.22. Вероятностные меры распределений negbin(s,p): а — при з - 2; б — при з - 5 Распределение Пуассона Poisson(l) Варианты применения Число событи. (см. ра: размера событий, возникающих в интервале времени, когда я происходят с постоянной интенсивностью дел 6.12); число объектов в группе случайного г, число товаров, затребованных из запасов Вероятностная мера (рис. 6.23) р(х) = е К х! 0 если* е{0,1,...}; в противном случае Распределение Е(х) = 0 i-0 11 если* <0; если* i0 продолжение &
380 Глава 6. Выбор входных распределений вероятностей Таблица 6.4 (продолжение) Распределение Пуассона Poisson(X) Параметры Х>0 Область {0,1,...} Среднее X Дисперсия X Мода ГХ -1 и X если х — целое число; ILVl в противном, случае Оценка максимального правдоподобия £=х(и) Примечания 1. Пусть Tj, Y-2, ... будет последовательностью неотрицательных независимых и одинаково распределенных случайных величин, а X - - max{i: £ 1). Распределением У; будет распределение ехро(1Д) тогда и только тогда, когда X - Poisson(X). Также если X - ,max{i: Е} _1Уу £ Л.}, то Y{ имеют распределение ехро(1) тогда и только тогда, когда X - Poisson(X) (см. раздел 6.12). 2. Если Xv Х2, ..., Хт — независимые случайные величины, a Xi - Poisson(X,), то Xt + Х2 + ... + Хт - Poisson^ + Х2 + +... + Х„) Рис. 6.23. Вероятностные меры распределений Poisson(X): а — при X “ 0,5; б — при X — 1; е — при X — 2; г — при X 6
6.2. Наиболее часто используемые распределения вероятностей 381 6.2.4. Эмпирические распределения В некоторых ситуациях нам может понадобиться использовать сами данные на- блюдений, чтобы непосредственно указать распределение, именуемое эмпириче- ским распределением, из которого в ходе моделирования будут генерироваться Значения. Например, может случиться, что мы просто не сможем найти теоретиче- ское распределение, адекватное данным (см. разделы 6.4-6.6). В этом разделе рас- сматриваются способы определения эмпирических наблюдений. Для непрерывных случайных величин тип эмпирических наблюдений, кото- рый может быть определен, больше зависит от того, есть ли у нас действительные значения отдельных исходных наблюдений Xit Х2,.... Х„, а не от того, сколько вели- чин Х{ попадает в каждый из нескольких указанных интервалов. (Последний слу- чай называется сгруппированными данными или данными в форме гистограммы.') Если исходные данные доступны, можно определить непрерывную кусочно-ли- нейную функцию распределения F, сначала отсортировав величины Xt в порядке возрастания. Пусть X® обозначает i-e наименьшее значение величин Xs так, чтобы Х(1) £ Х(2) £ ... £ Х(в). Тогда F задается как О t-1 x~X(i) п-1 (n-l)(X(i+1)-X(i)) 1 еслих <Х(1); еслиХ(<) <х <Х(1+1) для »= 1,2,..., п-1; если Х(в) < х. На рис. 6.24 показан график функции распределения для п = 6. Вы видите, что Дх) возрастает наиболее интенсивно в той области значений х, где величины X; распределены наиболее плотно, что и требовалось. Хотя для каждого i справедлива формула ДХЮ) = (i - 1)/(п - 1); это (для больших значений п) приближенно со- ставляет долю величин X,, которые меньше Хй; желательно, чтобы функция непре- рывного распределения «вела себя» именно таким образом. (Другой способ опре- деления Двы найдете в задаче 6.5.) Рис. 6.24. Функция непрерывного кусочно-линейного эмпирического распределения, полученного из исходных данных
382 Глава 6. Выбор входных распределений вероятностей Один очевидный недостаток определения такого эмпирического распределе- ния состоит в том, что случайные значения, сгенерированные из него в ходе прого- на имитационной модели, никогда не могут быть меньше Х(1) или больше Х(п) (см. раздел 8.3.16). Кроме того, среднее F(x) не равно выборочному среднему Х(п) ве- личин Х{ (см. задачу 6.6). Если данные сгруппированы, тогда должен использоваться другой подход, по- скольку мы не знаем значений отдельных величин Х{. Предположим, что п вели- чин Xf сгруппированы в k смежных интервалов [я0, яД [яь а2),.... [Яц, а*), так что- бы j-й интервал содержал П; наблюдений, где nt + п2 + ... + п* - п. (В основном Оу будут равноотстоящими, но здесь нет необходимости делать такое допущение.) Имеется возможность определить подходящую функцию кусочно-линейного эм- пирического распределения G. Для этого пусть С(я0) - 0 и G(aj) - (nt + п2 + ... + + п-)/п кяя j - 1, 2.k. Тогда, выполнив линейную интерполяцию между Яу, мы определяем ГО G(x) = - G(fly_i) + 1 aj ~aj-i Rfly)-^.,)] если x < a0\ если Gy_i <1x<aj для a = 1,2,..., k, если ak < x. На рис. 6.25 показано это определение эмпирического распределения для k - 4. В данном случае G(fly) — доля величин Xit которые меньше Яу, a G(x) возрастает наиболее интенсивно в области значений х, где наблюдения имеют наибольшую плотность. Тем не менее случайные величины, сгенерированные из этого распре- деления, все еще будут ограничены нижним (я0) и верхним (я*) пределом (см. раз- дел 8.3.16). Рис. 6.25. Функция непрерывного кусочно-линейного эмпирического распределения, полученного из сгруппированных данных Обычно многим непрерывным распределениям свойственна правая асиммет- рия, а их плотность подобна плотности, график которой изображен на рис. 6.26. Следовательно, если объем выборки п не слишком велик, скорее всего, у нас будет
6.3. Методы оценки для выборочной независимости 383 мало наблюдений (если будут вообще), попадающих в правый конец настоящего распределения, лежащего в основе данных (так как вероятности попадания вели- чин в этот конец обычно очень малы). Более того, вышеупомянутые эмпирические распределения не позволяют генерировать случайные величины, значения кото- рых превышают наибольшее значение наблюдаемой величины. Но очень большие занчения сгенерированных величин могут оказать существенное влияние на про- гон имитационной модели. Так, продолжительное время обслуживания может привести к образованию существенного затора в системе массового обслужива- ния. Чтобы генерировать значения, превышающие Хм, Бретли, Фокс и Шрейдж [Bratley, Fox and Schrage, 1987, p. 131-133,150-151] предлагают прибавить экспо- ненциальное распределение к правой стороне эмпирического распределения. Для дискретных данных определить эмпирическое распределение очень про- сто, если доступны значения исходных данных Хи Х2,..., Хп. Каждому возможному значению х можно определить эмпирическую вероятностную меру, р(х), как долю величин Xit равных х. Сгруппированным дискретным данным вероятностную меру можно определить как сумму значений р(х) для всех возможных значений х в ин- тервале, равном долям величин Xt в данном интервале. Размещение отдельных значений р(х) для возможных значений х в интервале, по сути, произвольно. Рис. 6.26. Типичная функция плотности распределения, получаемая на практике 6.3. Методы оценки для выборочной независимости Одно из важных допущений, принимаемых во многих статистических методах, рассматриваемых в этой главе, состоит в том, что наблюдения Хь Х2,..., Хп являют- ся независимой (или случайной) выборкой из какого-либо распределения, лежа- щего в их основе. В частности, оценка по методу максимального правдоподобия
384 Глава 6. Выбор входных распределений вероятностей (см. раздел 6.5) или проверки по критерию «хи-квадрат» (см. раздел 6.6.2) предпо- лагают независимость наблюдений. Если допущение о независимости не выпол- няется, тогда эти статистические методы не являются адекватными. Однако, даже если данные не являются независимыми, можно использовать такие эвристиче- ские методы, как гистограммы. Иногда наблюдения, собранные в течение какого-то периода времени, являют- ся зависимыми. Например, предположим, что Xit Х2,... представляют ежечасную температуру в определенном городе, начиная с полудня определенного дня. Мы не можем рассчитывать, что эти данные будут независимыми, поскольку значения температуры, близкие по времени, будут положительно коррелированны. Другим примером может служить система массового обслуживания с одним устройством из раздела 1.4. Пусть Хь Х2,... будут последовательными задержками в очереди требований, поступивших в систему. Если интенсивность поступления близка к скорости обслуживания, система будет испытывать перегрузку и значения Х{ будут сильно положительно коррелированными (см. раздел 4.3). Теперь перейдем к рассмотрению двух графических методов для неформаль- ной оценки независимости данных Хь Х2,..., Х„ (которые упорядочены по времени их сбора). Корреляционный график — это графическое представление выборочной корреляции pj (см. раздел 4.4) для j =1,2 1(1— положительное целое число). Выборочная корреляция р> — это оценка истинной корреляции р,- между двумя наблюдениями, разделенными во времени j наблюдениями. (Обратите внимание, что -1 < р, < 1.) Если наблюдения Xlt Х2,..., Х„ независимы, р, = 0 дляу = 1,2,..., я -1. Однако значение р, не будет точно равно 0, даже когда величины Х{ независимы, поскольку pj — это наблюдение случайной величины, среднее которой не равно О (см. раздел 4.4). Из того, что значение pj существенно отличается от 0, явно следу- ет, что величины X; не являются независимыми. Диаграмма разброса наблюдений Хь Х2,..., Хп — это график пар (Xit Xi+1) для i = =1, 2, ..., я - 1. Для простоты предположим, что величины Xt неотрицательные. Если величины Х{ независимы, можно ожидать, что точки (Х„ Xi+1) будут случайно разбросаны по первому квадранту плоскости (Х;, Х£+1). Характер разброса будет зависеть от распределения, лежащего в основе величин Xt. Если величины X, поло- жительно коррелированны, тогда точки будут стремиться расположиться вдоль линии с положительным уклоном в первом квадранте. Если же величины X, отри- цательно коррелированны, точки будут стремиться расположиться вдоль линии с отрицательным уклоном в первом квадранте. Пример 6.2. На рис. 6.27 и 6.28 показаны корреляционный график и диаграмма разброса 100 независимых наблюдений, которые получены из экспоненциального распределения со средним значением 1. Обратите внимание, что на рис. 6.27 выборочные корреляции близки к 0, а их абсолютные значения достигают 0,16. Разброс точек на рис. 6.28 под- тверждает независимость экспоненциальных данных. Пример 6.3. На рис. 6.29 и 6.30 показаны корреляционный график и диаграмма разброса 100 задержек в очереди для системы массового обслуживания М/М/1 (см. раздел 1.4.3) с коэффициентом занятости р - 0,8. Заметьте, что значения р,- являются большими для малых значений j, и точки в диаграмме разброса стремятся расположиться вдоль линии с положительным уклоном. Эти факты согласуются с нашим утверждением о том, что задержки в очереди являются положительно коррелированными.
Й^. Методы оценкидая выборочной независимости 38В $ 1 - « . . */ Максимальная г корреляция -О, 1--I ы Г I ! Т М * f 4 1 4 ИН I» 5 . • W 15 * 2QJ Минимальная корреляция 0,129 > Рис. 6.27. Корреляционный график для независимых экспоненциально распределенных данных Рис. 6.28, Диаграмма разброса для независимых экспокенциальнораспределенныхданных
386 Главаб. Выбор вводных распределений вероятностей 1 - 0,5 Максимальная ( корреляция 0,781 0 +.I I 5 V 4 1 I 15 10 j -0,5 Минимальная корреляция -0,186 -1 Рис. 6.29. Корреляционный график доя коррелированных данных, подученных в системе массового обслуживания
6.4. Действие I: гипотеза относительно семейства распределений 387 Существует также несколько непараметрических статистических критериев (то есть таких, для которых не делаются допущения относительно распределения величин Х{), чтобы формально проверить независимость Xt, Х2, ..., Х„. Бартелс [Bartels, 1982] предлагает ранговую версию фон-неймановского коэффициента в качестве проверочной статистики на независимость и указывает критические значения, необходимые для его выполнения. Один из потенциальных недостатков такой проверки состоит в том, что она предполагает отсутствие «связей» между данными, причем «связь» означает = Х} при i *j. Это требование большей частью не будет выполняться для дискретных данных и может даже не выполняться ста- тистически для непрерывных данных, если они записаны с точностью всего до нескольких десятичных разрядов (см. интервалы между прибытиями в табл. 6.7). Бартелс утверждает, что критические значения все еще могут быть достаточно точными, если число связей невелико. Существует несколько версий критерия серий (см., например, раздел 7.4.1 и [Gibbon S., 1985]), которые также можно использовать при оценке независимо- сти величин Xj. В них должно быть меньше проблем в отношении связей, чем в фон- неймановском критерии, поскольку критерии серий требуют только, чтобы Xj*Xj.n для i- 1,2,.... п - 1. С другой стороны, Бартелс эмпирически показал, что ранговый фон-неймановский критерий значительно мощнее одного из критериев серий для определенного типа альтернатив независимости величин 6.4. Действие I: гипотеза относительно семейства распределений На первом этапе выбора конкретного входного распределения нужно найти подхо- дящие общие семейства (экспоненциальное, нормальное распределения или рас- пределение Пуассона) на основании их форм, не заботясь пока о специальных зна- чениях параметров. В данном разделе рассматриваются общие методы, которые можно применять для построения гипотез относительно семейств распределений (например, для представления входной случайной величины модели). В отдельных ситуациях можно воспользоваться предварительными сведениями о роли определенной случайной величины в системе, чтобы выбрать моделирую- щее распределение или, по крайней мере, исключить некоторые распределения. Это обосновывается теоретически и не требует вообще никаких данных. Например, предположим, клиенты прибывают в систему обслуживания по одному, с постоян- ной интенсивностью; число клиентов, прибывших в непересекающиеся интерва- лы времени, соответственно, является независимым. Таким образом, у нас есть теоретические обоснование (см. раздел 6.12.1) для выдвижения постулата о том, что интервалы времени между прибытиями являются независимыми и одинаково экспоненциально распределенными случайными величинами. Вспомните также, что несколько дискретных распределений — биномиальное, геометрическое и от- рицательное биномиальное — разработаны на основе физической модели. Часто область распределения исключает возможность его использования в качестве мо- делирующего распределения. Так, время обслуживания не следует генерировать
388 Глава 6. Выбор входных распределений вероятностей непосредственно из нормального распределения (по крайней мере в принципе), поскольку случайное значение, полученное из любого нормального распределения может быть отрицательным. Не следует допускать, что доля дефектных изделий в большой партии может иметь гамма-распределение, поскольку доля значений должна находиться между 0 и 1, тогда как случайные величины с гамма-распреде- лением не имеют верхнего предела. Предварительную информацию нужно ис- пользовать тогда, когда она доступна, но мы также рекомендуем подтверждать выбранное распределение данными. На практике редко бывает достаточно предварительной теоретической инфор- мации, чтобы выбрать одно единственное распределение, и задача построения гипотезы относительно семейства распределений по данным наблюдений менее структурирована. Далее мы рассмотрим разные эвристические методы, или подхо- ды, с помощью которых можно подобрать подходящие семейства распределений. 6.4.1. Итоговая статистика Некоторые распределения характеризуются, по крайней мере частично, функция- ми их истинных параметров. В табл. 6.5 приведен ряд функций и формул, предна- значенных для оценки (итоговой статистики) этих функций на основе независи- мых и одинаково распределенных данных Хь Х2,.... Х„. Таблица 6.5. Полезная итоговая статистика Функция Выборочная оценка (итоговая статистика) Примечание Минимум, хт< [Х(1), Х(п)] — приблизительная максимум оценка интервала. Для непрерывных или дискретных данных Среднее ц Х(п) Показатель среднего значения. Для непрерывных или дискретных данных Медиана xBS • . . _ J-^((n+i)/2) если п нечетное; х°,5 п |[Х(я/2) + Х((я/2)+1)]/2 если п четное Альтернативный показатель среднего значения. Для непрерывных или дискретных данных Дисперсия о2 Показатель изменчивости. Для непрерывных или дискретных данных Коэффициент Альтернативный показатель вариации изменчивости. Для непрерывных данных CV = ц Коэффициент Лексиса X(n) Альтернативный показатель изменчивости. о2 Т = Для дискретных данных н Асимметрия £[(Х-р)3] (о2)3'2 ДХ,-Х(п)]3/п V(W) (An)]3'2 Показатель симметрии Для непрерывных или дискретных данных
6.4. Действие I: гипотеза относительно семейства распределений 389 , Кроме того в таблице предложены интерпретации и использование функций и указано, к каким данным применимы формулы — непрерывным или дискрет- ным. (Мы включили выборочный минимум и максимум, поскольку они могут быть очень полезны, даже если и не являются прямой функцией параметров рас- пределения.) Многие из этих функций подробно рассмотрены в главе 4. С помощью указанных функций в некоторых случаях можно выдвинуть пред- положение относительно семейства распределений. Для симметричного непре- рывного распределения (например, нормального), среднее р. равно медиане х05. (Для симметричного дискретного распределения математическое ожидание и ме- диана часто бывают лишь приближенно равны; см. определение медианы в разде- ле 4.2.) Следовательно, если оценки Х(п) и j?OiS(n) «почти равны*, можно предпо- ложить, что лежащее в их основе распределение симметрично. Нужно помнить: X(n)nf0,5(n) являются наблюдениями случайных величин, следовательно, отно- шения между ними не всегда отражают определенную информацию об истинных отношениях между р. и х0 5. Иногда информацию о форме непрерывного распределения можно получить с помощью коэффициента вариации cv. В частности, cv = 1 для экспоненциально- го распределения независимо от масштабного параметра ₽. Следовательно, если вариация cv(n) близка к 1, предполагается, что лежащее в основе данных распреде- ление является экспоненциальным. Для гамма-распределения и распределения Вейбулла значение cv больше 1, равно 1 или меньше 1, когда параметр формы а со- ответственно меньше 1, равен 1 или больше 1. Эти распределения будут иметь форму, подобную графику плотности распределения вероятностей, представлен- ному на рис. 6.26, когда а > 1 и, соответственно, cv < 1. Логнормальное распределе- ние всегда имеет плотность, форма которой подобна графику, изображенному на рис. 6.26, но его коэффициент cv может быть любым положительным веществен- ным числом. Следовательно, если лежащее в основе данных распределение (гисто- грамма наблюдений) имеет такую форму, a cv > 1, то тогда логнормальное распре- деление может оказаться более удачной моделью, чем гамма-распределение или распределение Вейбулла. Для остальных распределений содержащийся в табл. 6.3 коэффициент cv не очень пригоден. (Фактически cv не очень хорошо определен даже для таких распределений, как U(-c, с) (если с > 0) или N(0, ст2), поскольку среднее р. равно 0.) Для дискретного распределения коэффициент Лексиса (lexis ratio) т выполня- ет ту же роль, что и коэффициент вариации для непрерывного распределения. Мы убедились, что коэффициент Лексиса целесообразно использовать при определе- нии распределений Пуассона, биномиального и отрицательного биномиального. Для этих распределений т - 1, т<1ит>1 соответственно. (Обратите внимание, что геометрическое распределение — это особый случай отрицательного биноми- ального распределения.) Асимметрия v — показатель симметрии распределения. В случае симметрично- го распределения, подобного нормальному, v = 0. Если v > 0 (для экспоненциаль- ного распределения v = 2), распределение смещено вправо, а если v < 0, оно смеще- но влево. Следовательно, оценка асимметрии v(n) может использоваться для того,
390 Глава 6. Выбор входных распределений вероятностей чтобы выяснить, какую форму имеет лежащее в основе распределение. Опыт пока- зывает, что многие распределения, встречающиеся на практике, смещены вправо, и, кроме того, |v(n)| несколько меньше |v| для большинства выборок [Johnson and Lowe, 1979]. Можно определить еще одну функцию параметров распределения, именуемую эксцессом. Она является показателем «хвостового удельного веса» (tail weight) распределения [Kendall, Stuart and Ord, 1987, p. 107-108]. Однако эксцесс не пока- зался нам очень полезным при нахождении распределения. 6.4.2. Гистограммы В отношении набора непрерывных данных гистограмма является по существу гра- фической оценкой (см. дальше) графика плотности распределения вероятностей, соответствующей распределению данных Xit Х2.Хп. Плотности распределения вероятностей, показанные на рис. 6.5-6.16, во многих случаях стремятся к узна- ваемым формам. Поэтому графическая оценка плотности может быть хорошей подсказкой в выборе распределений, которые можно попробовать использовать как модель данных. Для того чтобы создать гистограмму, разобьем область значений, которая пере- крывается данными, на k непересекающихся интервалов [Ло, АД [fei, bi), -, ^*)- Все интервалы должны иметь одинаковую ширину, например ЛЬ - fc, - Ьм; для это- го может возникнуть необходимость выбросить несколько крайне больших или крайне малых величин Xit чтобы избежать получения громоздкой гистограммы. Пусть hj будет долей величин Хь которые входят в j-й интервал [^_р bj), для j - 1, 2,..., k. Теперь определим функцию 0 А(х) = .0 еслих <Ь0; если <,х <b- дляj=l, 2,..., k; если bk < х, которую мы изобразили на графике как функцию х (см. пример 6.4). Затем кусоч- но-постоянный график функции Л сравним с графиками плотностей различных распределений только на основании их форм (расположение и различия масшта- бов не учитываются) — это позволит увидеть, какие распределения имеют графи- ки плотности, напоминающие гистограмму Л. Чтобы понять, почему форма Л должна напоминать истинную плотность дан- ных/, допустим, что X — случайная величина с плотностью /, при этом X распреде- лена как величины Тогда для любого постоянного} (j = 1, 2,..., k) bi Р(Ь,_1 <,X <b}) = jf(x)dx = bbf(y) bi-t для некоторого числа у &(bhb bj). (Первое уравнение выводится по определению непрерывной случайной величины, а второе — из теоремы о среднем значении.) С другой стороны, вероятность того, что X попадает в интервал/ приблизительно определяется hj, которая является значением А(у). Следовательно, h(y) = hj »bbf(y),
6.4. Действие I: гипотеза относительно семейства распределений 391 так что Л(у) приблизительно пропорционально /(у); то есть h и f имеют одинако- вую форму. (В действительности оценка /получается при делении функции h на константу Ai.) Гистограммы применимы к любым непрерывным распределениям и обеспечи- вают легко интерпретируемый визуальный обзор данных. Более того, визуально достаточно просто отнести гистограмму к определенной плотности распределе- ния вероятностей. Однако у этого подхода есть недостатки. Наиболее серьезный Состоит в отсутствии четких указаний относительно выбора числа интервалов k (или, что то же самое, их ширины Ai). Для выбора числа интервалов k предложено несколько практических правил, например правило Стерджеса (Sturges) [Hoaglin, Mosteller and Tukey, 1983, p. 23-24) или аппроксимация нормальным распределением [Scott, 1979]. Наиболее известным является, вероятно, правило Стерджеса, согласно которому k должно выбираться по следующей формуле: k =|_l + log2 nJ =|_1 + 3322log 10 nJ. Но в целом мы не уверены, что данные правила полностью пригодны (см. при- мер 6.4), поэтому рекомендуем попробовать использовать несколько различных значений Ai и выбрать наименьшее, при котором гистограмма наиболее «ровная». Конечно, это несколько субъективный подход, его применение для гистограмм проблематично. Если выбрано слишком маленькое значение Ai, гистограмма бу- дет иметь «изломанную» форму, поскольку дисперсии hj будут большими. Если выбрано слишком большое значение Ai, гистограмма будет иметь «блочную» фор- му. а истинная форма лежащей в основе функции плотности будет скрыта, по- скольку данные слишком укрупнены. В частности, высокий пик плотности рас- пределения вероятностей около точки х - 0 или в другом месте (см. рис. 6.12) может быть пропущен, если Ai имеет слишком большое значение. Как мы уже отмечали, гистограмма является одним из средств оценки (за ис- ключением изменения масштаба) плотности распределения вероятностей. Суще- ствует множество иных способов ее оценки по данным; некоторые из них доволь- но сложны. Если читатель ими заинтересуется, советуем ему обратиться к статье Вегмана [Wegman, 1982, р. 309-315] и книге Сильвермана [Silverman, 1986]. Вероятностная мера, соответствующая набору дискретных данных, также мо- жет быть оценена с помощью гистограммы. Пусть для каждого возможного значе- ния Xj, которое можно принять на основе данных, hj будет долей величин Xit рав- ных Xj. Теперь вертикальные блоки высотой hj надо изобразить на графике по отношению к Xj и затем сравнить по форме с вероятностными мерами дискретных распределений, описанных в разделе 6.2.3. Для набора дискретных данных случайная величина hj представляет несмещен- ную оценку р(х}), для которой р(х) — истинная (неизвестная) вероятностная мера данных (см. задачу 6.7). Однако в этом случае нам не нужно принимать произволь- ных субъективных решений относительно ширины и размещения интервалов. Существуют определенные ситуации, когда гистограммы имеют несколько ло- кальных мод («пиков»), в таком случае ни одно из стандартных распределений, рассмотренных в разделе 6.2, не сможет обеспечить адекватное представление
392 Глава 6. Выбор входных распределений вероятностей данных. На рис. 6.31 показан такой пример, который может представлять данные об интервалах времени, в течение которых происходит ремонт машины (непре- рывные данные), собранные в течение года. Поломки машин бывают двух типов. Большинство поломок носят не очень серьезный характер, а значит, и время ре- монта для них невелико; такой случай соответствует левому пику на рис. 6.31. Не- большая же часть поломок имеет более серьезный характер, и время, необходимое для их устранения, более продолжительно, поскольку для ремонта приходится за- казывать детали. На это указывает правый пик гистограммы. Если наблюдаемые интервалы времени, в течение которых происходит ремонт, разделить в соответст- вии с двумя случаями (мелкий или сложный ремонт) — при этом р} будет долей на- блюдений для случая j (j = 1, 2), — то плотность ffac) следует подбирать к классу наблюдений j (j = 1,2) с помощью методов, рассмотренных в разделах 6.4-6.6. Та- ким образом, общую плотность интервалов времени, в течение которых происхо- дит ремонт /(х) надо задать как а при моделировании случайные интервалы времени, в течение которых происхо- дит ремонт, можно генерировать из f(x) с помощью метода композиции (см. раз- дел 8.2.2). Информацию об альтернативных методах моделирования гистограммы с несколькими модами вы найдете в разделе 6.9 и задаче 6.8. Л(х) Рис. 6.31. Гистограмма, соответствующая плотности распределения вероятностей с двумя локальными модами 6.4.3. Сводные квантили и блоковые графики Сводная квантиль [Tukey, 1970] — это краткая выборка, которая применяется, что- бы определить, является ли плотность либо вероятностная мера распределения, лежащего в основе данных, симметричной или смещенной вправо или влево. Сводные квантили применимы как к непрерывным, так и к дискретным данным. Однако мы объясним их использование только на примере непрерывных данных.
6.4. Действие I: гипотеза относительно семейства распределений 393 Предположим, что F(x) — функция распределения случайной непрерывной ве- личины, которая является непрерывной и строго возрастающей функцией, когда О < F(x) < 1 (то есть если хх < х2 и 0 < F(x,) F(x2) < 1, тогда фактически F(x,) < < F(X;)). Для 0 < q < 1 q-квантиль функции F(х) — это такое число хд, при котором F(x,) - q. Если F~1 обозначает функцию, обратную к функции F(x), то хч - F^q). (F — зто такая функция, при которой F[F*(x)] = F‘[F(x)] = х.) В данном случае нас, в частности, интересует медиана х0 5, нижняя и верхняя квартили, х025и хо,75> а также нижняя и верхняя октили, х0Д25 и х0 875. Сводные квантили для выборки Хь Х2..Х„ показаны в табл. 6.6. Таблица 6.6. Структура сводных квантилей для выборки Х1( Х2,..., Х„ Квантиль Центр Значение (значения) выборки Средняя точка Медиана Квартили i - (и + 1)/2 у- (LiJ + 1)/2 *<0 Х(я-;+1) Хед [Х0) + Х(п_Л1)]/2 Октили *-(LjJ + 1)/2 x(i) Х(„_*+1) [Хда+х^уг Крайние члены 1 х(1) *(п) [Х(1)+ Х(„)]/2 Если в табл. 6.6 центр I (I равно i,j или k) находится на одинаковом расстоянии от целых чисел т и т’ - т +1, то X(Z) определяется как среднее Х(и) и Х(т>). Значение X(i) — это оценка медианы, Xw и X(„^+t) — оценки квартилей, a X(i) и Х^,.*^ — оцен- ки октилей. Если распределение, лежащее в основе величин Хь симметрично, то- гда значения четырех средних точек должны быть приблизительно равны. Если распределение, лежащее в основе величин Xf, смещено вправо (влево), тогда четы- ре средние точки (по таблице сверху вниз) должны возрастать (убывать). Блоковый график — это графическое представление сводных квантилей (см. рис. 6.33). В горизонтальные границы прямоугольника [х0>25, х0>75] попадают 50 % наблюдений. В двух следующих примерах показано, как используются методы, рассмотрен- ные в разделе 6.4. Пример 6.4. Для разработанной имитационной модели банка, в котором операции мож- но выполнять, не покидая автомобиля, собирали данные о прибытии автомобилей. В те- чение 90 мин прибыло 220 автомобилей, и мы зарегистрировали интервалы времени (непрерывные данные) между прибытиями (в минутах) X,- автомобилей i и i +1 для i -1, 2,..., 219. В табл. 6.7 приведены все п •= 219 интервалов времени между прибытиями, от- сортированны в порядке возрастания. Было подсчитано число автомобилей, прибывших в течение шести последовательных 15-минутных интервалов, и установлено, что оно приблизительно одинаково; значит, можно предположить, что интенсивность прибытия будет до некоторой степени постоянной в течение этого 90-минутного интервала. Кроме того, автомобили прибывают по одному, и поэтому мы полагаем, что количество прибы- тий в непересекающиеся интервалы времени является независимым. Следовательно, у нас есть теоретические основания для выдвижения постулата о том, что время между прибытиями распределено экспоненциально. Для подтверждения этой гипотезы снача- ла посмотрим на представленную в табл. 6.8 итоговую статистику. Так как Х(219) - - 0,399 > 0,270 - х0 5(219) и v(219) -1,458, то предполагается, что лежащее в основе дан- ных распределение не симметрично, а смещено вправо. И более того, cv(219) - 0,953, что близко к теоретическому значению 1 для экспоненциального распределения. Были
394 Глава 6. Выбор входных распределений вероятностей построены три различные гистограммы данных с использованием значения Ьо - 0 в каж- дом случае и значения Дй, равного 0,050,0,075 и 0,100, как показано на рис. 6.32 (см. так- же рис. 6.2). Наиболее ровная диаграмма получена для Дй - 0,100, ее форма напоминает форму графика плотности экспоненциального распределения вероятностей. (Обратите внимание, что по правилу Стерджеса мы получаем k - 8 и Дй - 0,250; это приводит к из- лишнему укрупнению данных.) Таблица 6.7. Интервалы времени п - 219 между прибытиями, мин, отсортированные в порядке возрастания 0,01 0,06 0,12 0,23 0,38 0,53 0,88 0,01 0,07 0,12 0,23 0,38 0,53 0,88 0,01 0,07 0,12 0,24 0,38 0,54 0,90 0,01 0,07 0,13 0,25 0,39 0,54 0,93 0,01 0,07 0,13 0,25 0,40 0,55 0,93 0,01 0,07 0,14 0,25 0,40 0,55 0,95 0,01 0,07 0,14 0,25 0,41 0,56 0,97 0,01 0,07 0,14 0,25 0,41 0,57 1,03 0,02 0,07 0,14 0,26 0,43 0,57 1,05 0,02 0,07 0,15 0,26 0,43 0,60 1,05 0,03 0,07 0,15 0,26 0,43 0,61 1,06 0,03 0,08 0,15 0,26 0,44 0,61 1,09 0,03 0,08 0,15 0,26 0,45 0,63 1,10 0,04 0,08 0,15 0,27 0,45 0,63 1,11 0,04 0,08 0,15 0,28 0,46 0,64 1,12 0,04 0,09 0,17 0,28 0,47 0,65 1,17 0,04 0,09 0,18 0,29 0,47 0,65 1,18 0,04 0,10 0,19 0,29 0,47 0,65 1,24 0,04 0,10 0,19 0,30 0,48 0,69 1,24 0,05 0,10 0,19 0,31 0,49 0,69 1,28 0,05 0,10 0,20 0,31 0,49 0,70 1,33 0,05 0,10 0,21 0,32 0,49 0,72 1,38 0,05 0,10 0,21 0,35 0,49 0,72 1,44 0,05 0,10 0,21 0,35 0,50 0,72 1,51 0,05 0,10 0,21 0,35 0,50 0,74 1,72 0,05 0,10 0,21 0,36 0,50 0,75 1,83 0,05 0,11 0,22 0,36 0,51 0,76 1,96 0,05 0,11 0,22 0,36 0,51 0,77 0,05 0,11 0,22 0,37 0,51 0,79 0,06 0,11 0,23 0,37 0,52 0,84 0,06 0,11 0,23 0,38 0,52 0,86 0,06 0,12 0,23 0,38 0,53 0,87 Таблица 6.8. Итоговая статистика для данных об интервалах времени между прибытиями Итоговая статистика Значение Минимум 0,010 Максимум 1,960 Среднее 0,399 Медиана 0,270 Дисперсия 0,144 Коэффициент вариации 0,953 Асимметрия 1,458
6.4. Действие I: гипотеза относительно семейства распределений 395 Рис. 6.32. Гистограмма данных для интервалов времени между прибытиями, приведенных в табл. 6.7: а — Дй - 0,050; б — ДЬ - 0,075
396 Глава 6. Выбор входных распределений вероятностей Рис. 6.32. Гистограмма данных для интервалов времени между прибытиями, приведенных в табл. 6.7 (продолжение): в — ДЬ- 0,100 Наконец, на рис. 6.33 показаны сводные квантили и блоковый график для интервалов времени между прибытиями. Возрастающие значения средних точек и вытянутая пра- вая сторона блокового графика подтверждают, что в основе данных лежит экспоненци- альное распределение. Итак, у нас есть теоретические и эмпирические основания вы- двинуть гипотезу о том, что время между прибытиями распределено экспоненциально. Квантиль Центр Значение (значения) выборки Средняя точка Медиана 110 0,270 0,270 Квартили 55,5 0,100 0,545 0,323 Октили 28 0,050 0,870 0,460 Крайние члены 1 0,010 1,960 0,985 Рис. 6.33. Сводные квантили и блоковый график для данных об интервалах времени между прибытиями Пример 6.5. В табл. 6.9 указаны значения и число этих значений для п - 156 наблюде- ний, касающихся количества изделий (дискретные данные), затребованных в течение недели из запасов за 3-летний период. Наблюдения отсортированы в порядке возраста- ния. Вместо того, чтобы указывать каждое значение отдельно, мы указали частоту, с ко-
6.4. Действие I: гипотеза относительно семейства распределений 397 торой оно встречается: значения 59 величин Xt были равны 0, значения 26 величин X; — 1 и т. д. Итоговая статистика для этих данных приведена в табл. 6.10, а гистограмма — на рис. 6.34. Поскольку коэффициент Лексиса т( 156) - 2,795, биномиальное распределе- ние и распределение Пуассона не представляются подходящими моделями. Более того, большое положительное значение асимметрии v(156) -1,655, очевидно, исключает дис- 5 кретное равномерное распределение, которое является симметричным. Следовательно, вероятными дискретными моделями (из тех, что рассмотрены в книге) будут геометри- ческое и отрицательное биномиальное распределения, причем первое является особым случаем второго, когда s - 1. А поскольку гистограмма на рис. 6.34 монотонно убывает (как и вероятностная мера на рис. 6.21), можно предположить, что данные о спросе по- лучены из геометрического распределения. Таблица 6.9. Значения (и их число) для наблюдений п ~ 156, касающихся объемов спроса, отсортированные в порядке возрастания 0(59), 1(26), 2(24)’ 3(18), 4(12), 5(5), 6(4), 7(3), 9(3), 11(2) Таблица 6.10. Итоговая статистика для данных об объеме спроса Итоговая статистика Значение Минимум 0,000 Максимум 11,000 Среднее 1,891 Медиана 1,000 Дисперсия 5,285 Коэффициент Лексиса 2,795 Асимметрия 1,655 Рис. 6.34. Гистограмма данных о размере спроса, приведенных в табл. 6.9
398 Глава 6. Выбор входных распределений вероятностей 6.5. Действие II: оценка параметров Определив в действии I одну или несколько кандидатур семейств распределений, мы должны задать значения их параметров, чтобы распределения были полностью определены и могли применяться при моделировании. Для выдвижения гипотезы о распределениях использовались независимые и одинаково распределенные дан- ные Хь Х2,Х„, эти же данные можно использовать, чтобы получить оценки их параметров. Когда данные применяются непосредственно для определения чис- ленного значения неизвестного параметра, считается, что мы оцениваем этот пара- метр по данным. Оценочная функция является числовой функцией данных. Существует множе- ство способов, с помощью которых можно определить форму оценочной функции для конкретного параметра заданного распределения, а также множество альтер- нативных возможностей определить качество оценочной функции. Мы подробно рассмотрим только один тип оценок — оценки максимального правдоподобия — по трем причинам: во-первых, у оценок этого типа есть ряд хороших качеств, кото- рых часто не хватает альтернативным методам оценки, например методу наимень- ших квадратов, несмещенным оценкам и методу моментов; во-вторых, необходимо использовать оценки максимального правдоподобия при обосновании проверки по критерию согласия «хи-квадрат» (см. раздел 6.6.2); в-третьих, основная идея метода оценки максимального правдоподобия интуитивно кажется очень привле- кательной. Суть оценок описываемого типа легче всего понять на дискретном примере. Допустим, мы выдвинули предположение о дискретном распределении данных, в котором есть один неизвестный параметр 0. Пусть рв(х) обозначает меру вероят- ности для этого распределения, чтобы параметр 0 был частью обозначения. Если независимые и одинаково распределенные данные Хь Х2,..., Х„ уже зарегистриро- ваны, функцию правдоподобия 1(0) можно определить следующим образом: 1(0) = Ре(^)Ре(^) ...рв(Х„). Теперь 1(0), которая всего лишь является совместной вероятностной мерой, поскольку данные независимы (см. раздел 4.2), указывает вероятность (правдопо- добность) получения данных наших наблюдений, если 0 является значением неиз- вестного параметра. Затем оценка максимального правдоподобия неизвестного значения 0, которую мы обозначим 0, определяется как значение 0, максимизирую- щее 1(0); то есть 1,(0) i £(0) для всех возможных значений 0. Следовательно, 0 «лучше всего объясняет» собранные данные. В случае с непрерывными данными оценки максимального правдоподобия не имеют такого простого интуитивного объяснения, поскольку вероятность того, что непрерывная случайная величина равна любому постоянному числу, всегда равна 0 (обоснование использования оценок максимального правдоподобия в случае с непрерывными данными см. в за- даче 6.26 и работе Бреймана [Breiman, 1973, р. 67-68)]. Тем не менее оценки мак- симального правдоподобия для непрерывных распределений определяются так же, как и для дискретных данных. Если fa(x) обозначает предполагаемую плот-
6.5. Действие II: оценка параметров 399 иость распределения вероятностей (мы вновь допускаем, что существует всего один неизвестный параметр 6), функция правдоподобия задается как Z(0) = /e(X,)/e(X2) -UXn). Оценка максимального правдоподобия 0 параметра 0 определяется как значение 0, максимизирующее £(0) для всех допустимых значений 0. Следующие два примера показывают, как вычислить оценки максимального правдоподобия для распреде- лений, гипотезы относительно которых были выдвинуты в примерах 6.4 и 6.5. Пример 6.6. Для экспоненциального распределения 0 " ₽ (₽ > 0) и /р(х) - (1/Р)е“х/₽ для » х £ 0. Функция правдоподобия ц»=йе’Х1/₽)йе’Х2/О - (1е’Хп/0=₽_я expf~|iXi} и мы ищем значение 0, максимизирующее 2.(0) для всех 0 > 0. Подобную задачу легче выполнить, если вместо того чтобы непосредственно работать с £(₽), мы будем иметь де- ’’ ло с ее логарифмом. Таким образом, определяем логарифмическую функцию правдоподо- бия кж /(Р) = 1пК₽) = -п1пр-|£х{. Поскольку логарифмическая функция является строго возрастающей, максимизация 1(0) эквивалентна максимизации 2(0), что выполнить гораздо проще; то есть 0 тогда и только тогда максимизирует Z(0), когда 0 максимизирует Z(0). Стандартное дифферен- циальное исчисление можно использовать, чтобы максимизировать Z(0), присвоив ее производной значение 0 и решив уравнение для 0. Таким образом, равно нулю тогда и только тогда, когда 0 - Х"ж1 XJn - X(ri). Для того чтобы убедиться, что 0 “ Х(п) — максимизатор Z(0) (в отличие от минимизатора или точки перегиба кри- вой), достаточно того (это условие будет обязательным), что значение d2l/d$2, опреде- ленное по р ” Х(п), является отрицательным. Но d2! п 2 у в отрицательном значении которого легко убедиться, когда 0 ” Х(п), поскольку величи- ны^ являются положительными. Оценкой максимального правдоподобия 0 является В - Х(п). Заметьте, что оценка максимального правдоподобия здесь вполне естественна, поскольку 0 — среднее предполагаемого распределения, а оценка максимального прав- доподобия — выборочное среднее. Для данных из примера 6.4 0 - Х(219) - 0,399. Пример 6.7. Была выдвинута гипотеза, что дискретные данные в примере 6.5 получены изгеометрическогораспределения.Вэтомслучае0-р(О<р<1)ирр(х)-р(1 -р)хдля ? х - 0,1..Функция правдоподобия 2(р) = р"(1-р)^-‘х\
400 Глава 6. Выбор входных распределений вероятностей Эту формулу опять можно подвергнуть логарифмическому преобразованию, для того чтобы получить 1(р) = lnZ(p) = п 1пр + ^Х{ 1п(1 - р). м Дифференцируя /(р), находим dp р 1 - р’ равное 0 тогда и только тогда, когда р — 1/[Х(п) + 1]. Чтобы убедиться, чтор является максимизатором, обратите внимание: для любого действительного р. Таким образом, оценка максимального правдоподобия р составляет р — 1/[Х(п) +1], что интуитивно кажется правильным (см. задачу 6.9). Для данных о размере спроса р - 0,346 из примера 6.5. В вышеприведенных примерах продемонстрированы два практических средст- ва получения оценок максимального правдоподобия, а именно, применение лога- рифмической функции правдоподобия и приравнивание ее производной (в отно- шении оцениваемого параметра) к 0. Несмотря на то что эти инструменты часто используются при определении оценок максимального правдоподобия, нельзя по- лагать, будто бы для определения максимальной оценки правдоподобия всегда до- статочно просто приравнять производную к 0 и решить уравнение для 0. Для неко- торых распределений не подходят ни логарифмическая функция правдоподобия, ни дифференцирование. Вероятно, наиболее известный пример такой ситуации — равномерное распределение (см. задачу 6.10). Для других распределений оба сред- ства вполне подходят, однако, чтобы решить уравнение dl/dft - 0, не достаточно алгебраических методов, при этом должны использоваться численные методы. Многопараметрическими примерами такой ситуации могут служить гамма-рас- пределение, распределение Вейбулла и бета-распределение. О методах, применяе- мых для определения оценок максимального правдоподобия для различных рас- пределений, читатель может узнать из работы Бреймана [Breiman, 1973, р. 65-84]. Оценки максимального правдоподобия имеют несколько полезных статисти- ческих свойств [Breiman, 1973, р. 85-88; Kendall and Stuart, 1979, chap. 18]. 1. Для большинства обычных распределений оценка максимального правдоподо- бия уникальна, то есть 1(0) строго больше 1(0) для любого другого значения 0. 2. Хотя оценки максимального правдоподобия не обязательно должны быть не- смещенными, в целом, асимптотическое распределение (при п —> со) 0 имеет среднее, равное 0 (см. свойство 4). 3. Оценки максимального правдоподобия инвариантны; то есть если <р - Л(0) для некоторой функции Л, тогда оценка максимального правдоподобия <р - Л(0). (Несмещенность не является инвариантной.) Например, дисперсия случайной
6.5. Действие II: оценка параметров 401 величины с распределением ехро(Р) равна 02, поэтому оценка максимального правдоподобия этой дисперсии будет [Х(л)]2. 4. Оценки максимального правдоподобия асимптотически нормально распреде- лены, следовательно, Vn(0-0)—£-->N(0,8(0))t где 8(0) - -n/E{d4/dQ2) (ма- тематическое ожидание относится к и допускается, что имеет предпола- гаемое распределение), а —-—> обозначает сходимость по распределению. И более того, если 0 — это любая другая оценочная функция, при которой Vn(0 - 0)—-—>N(Q, с2) тогда 8(0) < ст2. (Таким образом, максимальные оцен- ки правдоподобия можно назвать наиболее асимптотически нормальными.') 5. Оценки максимального правдоподобия строго последовательны, lim^^ 0-0 (с вероятностью 1). Доказательства этих и других свойств иногда требуют дополнительных мягких «регулирующих» допущений {Kendall and Stuart, 1979]. Особый интерес представляет свойство 4, поскольку оно позволяет нам уста- новить приблизительный доверительный интервал для 0. Если мы определим 8(0) как в свойстве 4, можно доказать, что _®_>N(ai), л/8(0)/п при п -> оо. Следовательно, при больших значениях п приближенный 100(1 - а)- процентный доверительный интервал для 0 составляет Пример 6.8. Создадим 90-процентный доверительный интервал для параметра р гео- метрического распределения и приспособим его к данным из примера 6.5. Легко дока- зать, что £Г ^1 = -2L _ ~ рУ/р = ” [ф2] р2 (1-р)2 “ Р2(1-Р)' такчто8(р)-р2(1 -р), и при больших значениях л приближенный 90-процентный дове- рительный интервал для р определяется как р ± 1б45л|?--^~^. r V п Для данных из примера 6.5 получаем 0,346 ± 0,037. Этот пример подсказывает способ проверки чувствительности выходных пока- зателей моделирования к определенному входному параметру. Моделирование может выполняться для параметра 0, установленного, скажем, на левую конечную точку, центральную точку (0) и правую конечную точку доверительного интерва- ла в уравнении (6.3). Если рабочий показатель оказывается нечувствительным к значениям 0 в этой области, можно быть уверенными, что для наших целей полу- чена адекватная оценка 0. Однако, если моделирование кажется чувствительным ?0> можно поискать более подходящую оценку 0; для этого потребуется сбор до- полнительных данных.
402 Глава 6. Выбор входных распределений вероятностей До сих пор мы подробно рассматривали только распределения с одним неиз- вестным параметром. Если у распределения есть несколько параметров, мы мо- жем определить оценки максимального правдоподобия этих параметров обычным способом. Например, у гамма-распределения, имеющего два параметра (а и р), функция правдоподобия определяется как p-fftx.Y 1 exp[-(V₽)S^ ____\ i-gj J_____j.____i«l ” [Г(а)Г Z(a,P) = Оценки максимального правдоподобия а и р неизвестных значений аир опреде- ляются как значения аир, которые (совместно) максимизируют Z(a, Р). (При на- хождении аир мы обычно допускаем, что /(a, 0) = In Z(a, 0), и пытаемся решить уравнения 5//5а - 0 и Э//50 - 0 одновременно для а и р.) При наличии нескольких параметров свойства, аналогичные вышеописанным, сохраняются. Процесс опре- деления оценок максимального правдоподобия в случае с несколькими парамет- рами обычно очень сложен (исключение составляет нормальное распределение). Для каждого распределения из раздела 6.2.2 (кроме распределений Джонсона SB, Джонсона Sv и треугольного распределения) и 6.2.3 мы записали либо форму- лы оценок максимального правдоподобия, либо метод их численного получения. Для оценок максимального правдоподобия гамма-распределения можно исполь- зовать табл. 6.20 со стандартной линейной интерполяцией, а для оценок макси- мального правдоподобия бета-распределенйя — табл. 6.21. Можно просто выбрать (db da), соответствующие ближайшим табличным значениям и С2или разрабо- тать схему для двухмерной интерполяции. 6.6. Действие III: определение наиболее подходящего распределения Подобрав в действиях I и II одно или несколько распределений к данным наблю- дений, следует досконально изучить эти распределения, для того чтобы убедиться, насколько хорошо они представляют истинное распределение, лежащее в основе этих данных. Если таких распределений несколько, из них следует выбрать наибо- лее подходящее. В целом ни одно из подобранных распределений не будет полно- стью правильным. Мы всего лишь пытаемся найти распределение, которое доста- точно точно подходит для решения поставленной задачи. Далее в этом разделе описываются эвристические процедуры и критерии согласия для проверки гипотез, применяемые при определении «качества» подобранных распределений. 6.6.1. Эвристические процедуры Рассмотрим пять эвристических или графических процедур, применимых для сравнения подобранных распределений с истинным распределением, лежащим в основе данных [Averill М. Law & Associates, 1999].
6.6. Действие III: определение наиболее подходящего распределения 403 Графики плотности поверх гистограммы и частотные сравнения Для непрерывных данных можно построить график плотности поверх гистограм- мы, изобразив ДЬ /(х) поверх гистограммы h(x), и поискать сходство между ними. (Вспомните, что площадь под Л(х) равна ДЬ.) Частотное сравнение — это альтер- нативное графическое сравнение гистограммы данных с функцией плотности }(х) подобранного распределения вероятностей. Пусть [fe0, fej, [fe1( b2).[йц, fej) будет набором k интервалов гистограммы, ширина каждого из которых составляет ДЬ - “ ~ fy-i> величина Л, будет зарегистрированной долей п наблюдений, которые по- падают bj-й интервал [iy.,, Zy), a rj будет ожидаемой долей п наблюдений, которые попадают в ;-й интервал, если подобранное распределение оказывается истинным, то есть (см. задачу 6.13) ri = (6-4) bj-t Затем выполняется частотное сравнение; с этой целью и Tj изображаются в у-м интервале гистограммы дляу - 1, 2,..., k. Применительно к дискретным данным частотное сравнение — это графическое сравнение гистограммы данных с вероятностной мерой Р(х) подобранного распре- деления вероятностей. Пусть будет наблюдаемой долей величин Х(, ~Xj,h пусть г} будет ожидаемой долей п наблюдений, которые равны xjt если подобранное распределение оказывается истинным, то есть - Р(хр. Затем выполняется час- тотное сравнение; с этой целью изображаются графики Лу и rjt которые сравнива- ются с графиком Xj для всех соответствующих значений лу. Если подобранное распределение соответствует истинному распределению, ле- жащему в основе данных (и если объем выборки п достаточно велик), между hj и rj должно наблюдаться соответствие как в случае с непрерывными данными, так и в случае с дискретными данными. Пример 6.9. Для данных об интервалах времени между прибытиями, представленных в примере 6.4, мы выдвинули гипотезу об экспоненциальном распределении и получили в примере 6.6 оценку максимальной правдоподобности р - 0,399. Следовательно, плот- ность подобранного распределения _ (ЗДОбе”^0’399 если х £ 0; (0 в противном случае. Для гистограммы, изображенной на рис. 6.32, в, мы построили график плотности поверх гистограммы (см. рис. 6.35). Пример 6.10. Выдвинув гипотезу о том, что данные о размере спроса, приведенные в примере 6.5, получены из геометрического распределения, мы определили оценку мак- симальной правдоподобности параметрар в примере 6.7; она равнялась р - 0,346. Следо- вательно, вероятностная мера подобранного распределения р(х) = |0>346(0.654)* если х = 0,1,2, ...; (0 в противном случае. Для гистограммы, изображенной на рис. 6.34, rf - p(xt) - p(j - !);_/ -1,2,.... 12. Частртное сравнение показано на рис. 6.36, где hj представлены белыми вертикальными столбйка- < ми, а г} — серыми. И в этом случае соответствие является удовлетворительным, за ис- ключением, пожалуй, х2 - 1.
404 Глава 6. Выбор входных распределений вероятностей Рис. 6.35. График плотности поверх гистограммы для подобранного экспоненциального распределения и данных об интервалах времени между прибытиями Рис. 6.36. Частотное сравнение для подобранного геометрического распределения и данных об объеме спроса Графики различий между функциями распределения График плотности поверх гистограммы можно рассматривать как сравнение от- дельных вероятностей подобранного распределения и отдельных вероятностей истинного распределения, лежащего в основе данных. Мы также можем выпол-
6.6. Действие III: определение наиболее подходящего распределения 405 нить графическое сравнение интегральных вероятностей (функций распределе- ния). Определим (новую) функцию эмпирического распределения F„(x) следую- щим образом: -, ч число величин X, < х ,с F„(x)------------------5---. (6.5) п Функция является частью наблюдений, значения которых меньше или равны х. Тогда на одном рисунке можно изобразить графики F(x) (функции распределе- ния подобранного распределения) и Fn(x) и поискать между ними сходство. Одна- ко графики функций распределения, как правило, имеют не столь характерный вид, как графики плотностей распределения вероятностей или вероятностных мер. На самом деле многие функции распределения имеют s-образную форму, и определить на глаз различие или сходство s-образных кривых затруднительно. Поэтому мы определяем график разности между функциями распределения как 1рафик разности £(х) и Fn(x) в области данных. Если подобранное распределение идеально походит для данных, а объем выборки бесконечен, график будет пред- ставлять собой горизонтальную линию на высоте 0. Следовательно, чем больше вертикальные отклонения от этой линии, тем меньше распределение подходит для данных. Многие подобранные распределения, которые в абсолютном смысле не- удовлетворительны, имеют большие отклонения в нижнем конце области данных. Пример 6.11. График разности между функциями распределения для данных об интер- валах времени между прибытиями из примера 6.4 и подобранного экспоненциального распределения приведен на рис. 6.37. Этот график показывает, что распределение по- добрано хорошо, за исключением нижнего конца области данных наблюдений. (Пунк- тирные горизонтальные линии — это пределы погрешности, которые зависят от объема выборки п. Если график разности пересекает указанные линии, это явно свидетельству- ет о том, что распределение подобрано плохо. Пределы погрешности определены по раз- ности для каждого из 35 000 наборов данных, рассмотренных в разделе 6.7.) Рис. 6.37. График разности между функциями распределения для подобранного экспоненциального распределения и данных об интервалах времени между прибытиями
406 Глава 6. Выбор входных распределений вероятностей Пример 6.12. График различий между функциями распределения для данных о размере спроса из примера 6.5 и подобранного геометрического распределения приведен на рис. 6.38. Этот график показывает, что распределение подобрано хорошо, за исключени- ем нижнего конца области данных наблюдений. Рис. 6.38. График разности между функциями распределения для подобранного геометрического распределения и данных об объеме спроса Вероятностные графики Вероятностные графики можно рассматривать как еще одно графическое сравне- ние оценки истинного распределения данных Xit Х2,.... Хп с функцией распреде- ления из подобранного распределения. Существует множество типов (и способов применения) графиков распределения вероятностей, из которых в этом разделе мы опишем всего два [Wilk and Gnanadesikan, 1968; Barnett, 1975; Hahn, Shapiro and Hahn, 1994]. Пусть (как в разделе 6.2.4) X(j) будет i-й наименьшей величиной из величин Xj, иногда именуемой i-й порядковой статистикой величин Xj. Приемлемой оценкой функции распределения F(x) случайной величины X является Fn(x), определенная в уравнении (6.5). Обратите внимание, что F„(X(0) - i/n. Неудобно, когда при создании графика Fn(Xw) - 1, то есть когда функция эмпирического распределе- ния равна 1 для конечного значения х (см. задачу 6.14). Поэтому в данном случае мы воспользуемся следующей функцией эмпирического распределения: для i - 1,2,..., п. (Разумеется, для умеренно больших значений п такой корректи- ровки не достаточно. Предлагались и другие корректировки, например i/(n + 1)). Далее будет довольно просто создать график п точек (Х(1), 0,5/п), (Х(2), 1,5/п). (Х(п), (” - 0,5)/п), сравнить результат с графиком функции распределения, избран- ным в качестве модели для данных, и определить сходство между ними. Однако,
6.6. Действие III: определение наиболее подходящего распределения 407 как уже сообщалось, многие функции распределения имеют s-образную форму, а определить на глаз различие или сходство s-образных кривых затруднительно. Тем не менее большинство из вас сможет определить, лежат ли точки на графике приблизительно вдоль прямой линии, а методы представления вероятностных графиков сведут проблему сравнения функций распределения к простому поиску прямой линии. Пусть (г - 0,5)/п для i - 1,2,..., и, при этом 0 < qt < 1. Для любого набора не- прерывных данных (см. задачу 6.15) график квантиль-квантиль (Q-Q) (определе- ние квантили см. в разделе 6.4.3) — это графическое представление дгквазтиш. функции подобранного (модельного) распределения $<х), то есть х^ =г£-1 (<?,) которое сравнивается с ^-квантилью функции распределения выборки F„(x), то есть xs4i = F~' (q,) = Х(1) для i - 1, 2, Определение графика Q-Q показано на рис. 6.39, где Fn(x) для удобства представлена как гладкая кривая. Каждому значе- нию q по оси ординат соответствуют две квантили — х^ и xsq. Если /(х) — то же распределение, что и истинное распределение F(x), лежащее в основе данных, и размер выборки п достаточно велик, тогда Р(х) и Fn(x) будут близки, а график Q-Q будет приблизительно линеен с отрезком, пересекающим на координатной оси 0 и наклоном 1. Даже если Р(х) — правильное распределение, отклонения от линейности будут при небольшом и среднем объеме выборки.
408 Глава 6. Выбор входных распределений вероятностей График вероятность-вероятность (Р-Р) — это графическое представление мо- дельной вероятности F(X(i)) в сравнении с выборочной вероятностью F„(X(i)) - - q{ для i -1,2,п. График подходит как для непрерывных, так и для дискретных данных. Его определение также показано на рис. 6.39. Каждому значению р по оси абсцисс соответствуют две вероятности — Р(р) и Р„(р). Если Р(х) и Fn(x) имеют близкие значения, график Р-Р также будет приблизительно линеен на отрезке, где он совпадает с осью х, и на отрезке, параллельном оси х, при вероятности, равной 1. График Q-Q отражает различия, существующие на хвостах модельной функ- ции распределения Р(х) и выборочной функции распределения Fn(x), тогда как график Р-Р отражает различия в средней части Р(х) и Fn(x). Различие на правых хвостах функций распределения, представленных на рис. 6.40, более выражено на графике Q-Q, но не на графике Р-Р. Однако разница в средней части обеих функ- ций более выражено на графике Р-Р (см. рис. 6.41). Рис. 6.40. Различие на правых хвостах функций F(x) и F„(x), более выраженное на графике Q-Q: а — функции распределения; б — график Q-Q; в — график Р-Р
6.6. Действие III: определение наиболее подходящего распределения 409 Рис. 6.41. Различие в средней части функций £(х) и Рп(х), более выраженное на трафике Р—Р: а — функции распределения; о — график Q-Q; е — трафик Р—Р Вышеприведенные формулировки для графиков Q-Q и Р-Р неявно допускают, что величины X, обособлены (между ними не существует связей); конечно, это условие не всегда выполняется. Чтобы изменить определения для необособлен- йых величин Xit допустим, что Ylt У2,..., Yt — обособленные значения в выборке Х1( Хг,Х„, упорядоченные по возрастанию; для них I п. (Если величины X, обособ- лены, то Y{ - X(i) для i- 1,2,..., п.) Пусть 05 q\ = (для значений Xt<. У() —— . Иными словами, gj - Ё„(У). Тогда £ заменит Yb a Yt будет вместо Xw в определе- ниях графиков Q-Q и Р-Р. Для создания графика Q-Q требуется вычислить модельную квантиль P~\qi). Это не сложно сделать для нормального, экспоненциального, лог-логистического распределений и распределения Вейбулла, поскольку для существует выраже- ние в конечной форме. Для других непрерывных распределений, представленных
410 Глава 6. Выбор входных распределений вероятностей в табл. 6.11, даны либо преобразования, которые помогут решить эту проблему, либо ссылки на численную аппроксимацию для /•*. Кроме того, в табл. 6.11 приве- дены подобные предписания, касающиеся вычисления модельной вероятности £(Х(0), которая требуется для графика Р-Р. Функции для вычисления F или А1 также есть в статистической библиотеке IMSL Statistical Library [Visual Numerics, Inc., 1997], а в пакете программ обработки статистических данных ExpertFit (см. раздел 6.7) графики Q-Q и Р-Р выполняются автоматически [Kennedy and Gentle, 1980, chap. 5]. Таблица 6.11. Методы определения Р или Р~* для распределений, в которых их трудно вычислить математически Распределение Р F-1 Гамма См. [Bhattachaijee, 1970] См. [Best and Roberts, 1975] Нормальное См. [Milton and Hotchkiss, 1969] См. [Odeh and Evans, 1974] Логнормальное Подбираем нормальное распределение для Y. - 1пХ.; i - 1, 2,..., л (см. раздел 6.2.2) To же, что и для F Бета См. [Bosten and Battiste, 1974] См. [Cran, Martin, Thomas, 1977] Пирсона типа V Подбираем гамма-распределение для Y. - i/X.; i - 1, 2 л (см. раздел 6.2.2) To же, что и для F Пирсона типа VI Подбираем бета-распределение для Y. - ХД1 + X); i - 1, 2 л (см. раздел 6.2.2) То же, что и для F Джонсона SB См. нормальное распределение То же, что и для F Джонсона Sv См. нормальное распределение То же, что и для F Пример 6.13. На рис. 6.42 показан график Q-Сдля подобранного экспоненциального распределения и данных об интервалах времени между прибытиями. График достаточно близок к линейной форме, за исключением больших значений Такая форма не яв- ляется чем-то необычным, поскольку график Q-Q отражает незначительную разницу между /’(х) и Р„(х), когда обе функции близки к 1. Соответствующий график Р-Р пока- зан на рис. 6.43. Его линейность указывает на то, что средняя часть подобранного экспо- ненциального распределения приблизительно соответствует средней части истинного распределения, лежащего в основе данных. Пример 6.14. На рис. 6.44 приведен график Р-Р для подобранного геометрического рас- пределения и данных о размере спроса. Мы вновь видим, что график Р-Р имеет почти линейную форму, что указывает на соответствие между геометрическим и истинным распределениями.
6.6. Действие Пкелределениб пибаяее подходящего распределения 411 -Е Рис. 6.43. График Р—Р для экспоненциального распределения и данных ' об интервалах времени между прибытиями
412 Глава 6. Выбор входных распределений вероятностей Рис. 6.44. График Р-Р для геометрического распределения и данных’об объеме спроса 6.6.2. Критерий согласия Критерий согласия — это статистический критерий для проверки гипотезы (см. раз- дел 4.5), применяемый, чтобы формально оценить, являются ли наблюдения Xit Х2,..., Х„ независимой выборкой из определенного распределения с функцией рас- пределения F. То есть критерий согласия можно использовать для проверки сле- дующей нулевой гипотезы: Но: Х{ — независимые и одинаково распределенные случайные величины с функцией распределения F. Перед тем как перейти к обсуждению нескольких специальных критериев согла- сия, нам необходимо остановиться на формальной структуре и свойствах этих критериев. С одной стороны, если мы не смогли доказать ложность гипотезы Но, не следует считать, что «принимаемая гипотеза Но является истинной». Эти кри- терии часто имеют недостаточную мощность при небольшом или умеренном объеме выборки п; то есть они не очень чувствительны к незначительной несогласованно- сти данных и подобранного распределения. Их следует рассматривать как систе- матический метод для определения относительно крупных различий. С другой стороны, если п имеет очень большое значение, эти критерии почти всегда будут указывать на ложность Но [Gibbons, 1985, р. 76]. Поскольку Но в действительности никогда не бывает полностью истинной, для больших значений п устанавливается даже малейшее отклонение от предполагаемого распределения. В этом заключает-
6.6. Действие III: определение наиболее подходящего распределения 413 ся недостаток критериев согласия, поскольку часто для моделирования достаточ- но распределения, которое является «почти» правильным. Критерий «хи-квадрат» Наиболее старый критерий согласия — это критерий оси-квадрата, который опи- сан еще в работе К. Пирсона [К. Pearson, 1900]. Как нам предстоит убедиться, кри- терий «хи-квадрат» может считаться более формальным сопоставлением гисто- граммы с плотностью или с вероятностной мерой подобранного распределения вероятностей (см. частотное сравнение в разделе 6.6.1). Чтобы вычислить статистику критерия «хи-квадрат» как для непрерывных, так и для дискретных данных, следует сначала поделить всю область подобранно- го распределения на k прилежащих интервалов [а0, at), [аь а2),..., [а* ,, а*), где а0 может равняться -со - в этом случае первый интервал будет (-со, aj - или ak может равняться +<», или возможно и то и другое одновременно. Тогда мы получаем Nj = число величин Х{ в j-м интервале ау) для j = 1,2 k. (Обратите внимание, что N} = п.) Затем мы вычисляем ожи- даемую долю pj величин Хь которые попадают в j-й интервал, если мы делали вы- борку из подобранного распределения. Для непрерывных данных °? Pj = J7(*)<&, °/-i где 7 — плотность подобранного распределения. Для дискретных данных Pj = О/-1 где р — вероятностная мера подобранного распределения. Статистика критерия составляет Поскольку npj — ожидаемое число величин Хь попадающих в;-й интервал, если гипотеза Но истинна (см. задачу 6.17), можно ожидать, что критерий %2 будет не- большим при хорошо подобранном распределении. Поэтому мы отклоняем Но, ес- ли %2 имеет слишком большое значение. Форма критерия зависит от того, какие параметры подобранного распределения мы оценили по нашим данным. Во-первых, предположим, что все параметры подобранного распределения из- вестны; то есть определены подходящие распределения без использования дан- ных. (Может показаться, что случай, когда все параметры известны, не очень часто применяется на практике, но существует, по крайней мере, две возможности его использования при моделировании: первая - когда при проверке по критерию пу- ассоновского процесса (который будет рассматриваться дальше в этом разделе) мн определяем, можно ли интервалы времени между прибытиями рассматривать как независимые и одинаково распределенные случайные величины U(0, Т), где Т - константа, не зависящая от данных; вторая - когда при эмпирической провер- ке ^генераторов случайных чисел мы проверяем распределение U(0, 1).) Затем,
41» Глава 6. Выбор входных распределений вероятностей если гипотеза Но является истинной, критерий %2 стремится к распределению «хи-квадрат» с k - 1 степенями свободы (при п —> оо); это то же самое, что и распре- деление gamma[(& - 1)/2, 2]. Таким образом, для больших значений п критерий с приближенным уровнем а получен посредством опровержения Но, если х2 > > х2*-м-а (см. рис. 6.45), где x2t-i.i-a ~ верхняя критическая точка 1-а для распреде- ления «хи-квадрат» с k - 1 степенями свободы. (Значения x2*-i,i-a можно опреде- лить, обратившись к табл. П.2, которая помещена в конце книги.) Обратите вни- мание, что критерий «хи-квадрат» действителен, то есть имеет уровень а только асимптотически при п -> со. Рис. 6.45. Критерий «хи-квадрат», когда известны все параметры Во-вторых, предположим: чтобы определить подходящее распределение, нам требуется получить оценки т параметров (т £ 1) по данным. Когда используются оценки максимального правдоподобия, как показали Чернофф и Леманн [Cher- noff and Lehmann, 1954], если Ho истинна, то при п -> <ю функция распределения х2 стремится к функции распределения, которая лежит между функциями распреде- ления для распределений «хи-квадрат» сй-1иЛ-ги-1 степенями свободы. (На рис. 6.46 Fk _ 1 и Fk _ „ _ j показаны функции распределения для распределений «хи-квадрат» сА~1иА-т-1 степенями свободы соответственно, а функция рас- пределения, обозначенная пунктиром, является той функцией, к которой стремит-
6.6. Действие III: определение наиболее подходящего распределения 415 ся функция распределения х2 при п -> оо.) Если x2i-a будет верхней критической точкой 1-а для асимптотического распределения х2» то Xj-m-l,l-« Xl-a ^Xt-l,l-a> как показано на рис. 6.46. К сожалению, значение x2i-a не будет известно вообще. Ясно, что мы не должны принимать Но, если х2 > X2*-i,i-a! если же х2 < X2*-n- i,i-a> ги- потеза Но не будет опровергнута. Неоднозначная ситуация возникает, когда X*-m-l,l-a ^ Х ^Х*-1,1-а' ‘ Часто рекомендуется не принимать Но только тогда, когда х2 > x2*-i, i-a> потому что так безопаснее, то есть действительная вероятность а' возникновения ошибки ти- па I (непринятия Но, когда она на самом деле является истинной; см. раздел 4.5) по крайней мере так же мала, как и установленная вероятность а (см. рис. 6.46). Та- кой выбор, однако, повлечет за собой потерю мощности критерия (вероятность непринятия ложной гипотезы Но). Как правило, т будет больше 2, и если k имеет достаточно большое значение, разница между х2 * - m -1, i-a и x2*-i, i-a не будет очень значительной. Следовательно, мы опровергаем Но тогда (и только тогда), когда X2 > Х2*-т-1, i-a.как и в случае, когда известны все Параметры. Область непринятия гипотезы для х2 указана на рис. 6.46. Рис. 6.46. Критерий «хи-квадрат», когда т параметров оцениваются по их оценкам максимальной правдоподобности ^Наибольшую проблему при проверке по критерию «хи-квадрат» вызывает вы- брр числа и размеров интервалов. Сложность проблемы заключается в отсутствии четкой инструкции, действуя согласно которой, можно было бы гарантированно
416 Глава 6. Выбор входных распределений вероятностей получить достоверные результаты (чтобы действительный уровень критерия был близок к искомому уровню а) и высокую мощность критерия для всех предпола- гаемых распределений и всех объемов выборки. Однако существует несколько правил, которые часто выполняются. Прежде всего, некоторая неоднозначность в выборе интервалов устраняется, если выбирать интервалы так, чтобы соблюда- лось следующее условие: р{ - р2 - ... - р*; такой подход называется равновероят- ным подходом. В случае с непрерывными данными может быть неудобно исполь- зовать его с некоторыми распределениями, поскольку функция распределения подобранного распределения должна быть обращена (см. пример 6.15). Более то- го, для дискретных распределений значения pjt как правило, могут быть только приблизительно равными (см. пример 6.16). Дальше вы узнаете, как выбирать интервалы, чтобы обеспечить достоверность критерия. Пусть а = шп^пр, и пусть у(5) будет числом пр* < 5. Исходя из результа- тов всесторонних теоретических и эмпирических исследований (для случая, когда известны все параметры) Ярнольд [Yamold, 1970] утверждает, что критерий би- квадрат» является приближенно достоверным, если k 2:3 и a 2: 5у(5)Д. При равно- вероятных интервалах эти условия выполняются, если k 3 и пр}2: 5 для всех j. Далее обратим внимание на мощность критерия -«хи-квадрат». Критерий счи- тается несмещенным, если более вероятно, что в соответствии с ним гипотеза Но не будет принята, когда она ложна, а не когда она истинна, иными словами, когда мощность критерия больше вероятности возникновения ошибки типа I. Критерий без этого свойства, конечно же, не может быть подходящим. Можно доказать, что критерий «хи-квадрат» всегда будет несмещенным для равновероятного подхода [Kendall and Stuart, 1979, р. 455-461]. Если значения ^ неравны (и многие из них являются небольшими), можно получить достоверный критерий, который значи- тельно смещен [Haberman, 1988]. В целом не существует правила такого выбора интервалов, чтобы высокая мощность критерия была получена для всех альтернативных распределений. Для отдельного распределения, соответствующего нулевой гипотезе, заданному объе- му выборки п и равновероятному подходу, Калленберг, Оостерхофф и Шривер [Kallenberg, Oosterhoff, and Schriever, 1985] доказали эмпирическим путем, что мощность критерия — это возрастающая функция числа интервалов k для некото- рых альтернативных распределений и убывающая функция k для других альтер- нативных распределений. Они также установили, что, как ни странно, в опреде- ленных случаях мощность критерия больше, когда значения npj меньше на хвостах (см. задачу 6.18). В условиях отсутствия четкой инструкции при выборе интервалов мы совету- ем использовать равновероятный подход и значения пр} 5 для всех j в случае с непрерывными данными. Таким образом, вы получите гарантию, что у вас будет достоверный и несмещенный критерий. В случае с дискретными данными мы предлагаем сделать так, чтобы значения npj были приблизительно равны и чтобы все они были не меньше 5. Именно отсутствие четкой инструкции по выбору ин- тервалов является основным недостатком критерия «хи-квадрат». В некоторых ситуациях для одного и того же набора данных можно получить совершенно раз- ные выводы; это зависит от способа определения интервалов. Критерий «хи-квад-
6.6. Действие III: определение наиболее подходящего распределения 417 рат», тем не менее, продолжает широко использоваться, поскольку ои подходит к Любому предполагаемому распределению; как мы убедимся дальше, другие кри- терии согласия не имеют столь широкого применения. Пример 6.15. Воспользуемся критерием «хи-квадрат», чтобы сравнить п - 219 интерва- лов времени между прибытиями (см. табл. 6.7) с подобранным экспоненциальным рас- пределением, функция распределения которого F(x) - 1 - е"*''0,399 для X £ 0. Если сфор- W жировать, скажем, k - 20 интервалов с pi\.fk - 0,05 для j - 1, 2, ..., 20, тогда пр;- - (219)(0,05) - 10,950, так что выполняется правило, согласно которому интервалы > должны выбираться с равными значениями pj и npj 2 5. В этом случае легко определить ар так как F может быть обращена. То есть мы задаем я0 - 0 и а2о “ °°>и хотим, чтобы cij ’ удовлетворяла выражению F(ay) “ J /20 для j -1,2 19; эквивалентный вариант — за- дать а/ - -0,399 In (1 - J /20) для j - 1,2.19, поскольку ^=.F_1(; /20). (Для непрерыв- 9 ных распределений, а именно: нормального распределения, гамма- и бета-распределе- ниЙ - обращение функции распределения не имеет простой конечной формы. В этих случаях F1 можно оценить с помощью численных методов; см. ссылки в табл. 6.11.) Вы- кладки для критерия показаны в табл. 6.12, а значение статистики критерия составляет ’'ЛХ2 - 22,188. Таблица 6.12. Проверка по критерию «хи-квадрат» для данных об интервалах времени между прибытиями j Интервал NJ «Р, W-пр,)2 ”Pi 1 [0; 0,020) 8 10,950 0,795 2 [0,020; 0,042) И 10,950 0,000 3 [0,042; 0,065) 14 10,950 0,895 4 [0,065; 0,089) 14 10,950 0,895 5 [0,089; 0,115) 16 10,950 2,329 6 [0,115; 0,142) 10 10,950 0,082 7 [0,142; 0,172) 7 10,950 1,495 " 8 [0,172; 0,204) 5 10,950 3,233 9 [0,204; 0,239) 13 10,950 0,384 10 [0,239; 0,277) 12 10,950 0,101 И [0,277; 0,319) 7 10,950 1,425 12 [0,319; 0,366) 7 10,950 1,425 13 [0,366; 0,419) 12 10,950 0,101 14 [0,419; 0,480) 10 10,950 0,082 15 [0,480; 0,553) 20 10,950 7,480 16 [0,553; 0,642) 9 10,950 0,347 17 [0,642; 0,757) И 10,950 0,000 . 18 [0,757; 0,919) 9 10,950 0,347 18 [0,919; 1,195) 14 10,950 0,850 20 [1,195; оо) 10 10,950 0,082 X2 =22,188
418 Глава 6. Выбор входных распределений вероятностей Обратившись к табл. П.2, мы увидим, что х219Д90 “ 27,204, то есть х2 не превышает это значение, следовательно, мы не опровергаем Но на уровне а — 0,10. (Обратите внимание, что мы бы также не опровергли Но для определенных больших значений а, например 0,25.) Итак, величина критерия не дает нам оснований считать, что распределение ех- ро(0,399) плохо подходит к данным. Пример 6.16. Чтобы продемонстрировать использование критерия «хи-квадрат» с дис- кретными данными, проверим, насколько хорошо подобранное распределение geom(0,346) согласуется с данными о размере спроса, представленными в табл. 6.9. Как обычно, в случаях с дискретными распределениями мы не можем сделать так, чтобы значения были одинаковыми, но, сгруппировав смежные точки, по которым определена вероятно- стная мера р(х) (в этом случае неотрицательные целые числа), вычислим интервалы, при которых значения pj будут приблизительно одинаковыми. Это можно осуществить таким способом: указать, что мода подобранного распределения равна 0; следовательно, р(0) - 0,346 — наибольшее значение вероятностной меры. Если значение моды велико, выбор интервалов будет ограничен; в итоге мы получаем три интервала, показанные в табл. 6.13, где также представлены выкладки для критерия «хи-квадрат». В частности, X2 ” 1,930, что меньше критического значения Х22;о,эо “ 4,605. Следовательно, мы не опро- вергаем Но на уровне а - 0,10, и у нас нет оснований полагать, что распределение geom(0,346) не подходит для данных о размере спроса. Таблица 6.13. Проверка по критерию «хи-квадрат» для данных об объеме спроса j Интервал NJ ”Pj OS- -”Pj? ”Pj 1 {0} 59 53,960 2 {1.2} 50 58,382 1,203 3 {3, 4,...} 47 43,658 0,256 X2 “ 1,930 Критерий Колмогорова-Смирнова Мы уже говорили, что критерий «хи-квадрат» можно рассматривать как более формальное сравнение гистограммы данных с плотностью или вероятностной ме- рой подобранного распределения. Мы также указали, в чем состоит трудность при- менения критерия «хи-квадрат» в случае с непрерывными данными, а именно - в определении интервалов. В отличие от вышеуказанного критерия критерий Кол- могорова-Смирнова для проверки степени согласия позволяет сравнить функцию эмпирического распределения с функцией предполагаемого распределения Р. Как нам еще предстоит убедиться, для этого критерия не требуется каким- либо обра- зом группировать данные, поэтому никакая информация не теряется; определение интервалов также не вызывает сложности. Еще одно преимущество критерия со- стоит в том, что он точно достоверен для любого объема выборки п (если известны все параметры), тогда как критерий «хи-квадрат» достоверен только асимптотиче- ски. Наконец, данный критерий кажется более мощным, чем критерий «хи-квад- рат», для многих альтернативных распределений [Stephens, 1974]. Тем не менее критерий Колмогорова-Смирнова имеет свои недостатки, по крайней мере на сегодняшний день. Наиболее серьезный состоит в том, что об- ласть его применения гораздо более ограниченна, чем область применения крите-
6.6. Действие III: определение наиболее подходящего распределения 419 рия <хи-квадрат». Во-первых, при работе с дискретными данными нет готовых критических значений, они должны вычисляться с помощью сложных наборов формул [Pettitt and Stephens, 1977; Conover, 1980, p. 350-352; Gleser, 1985]. Во- вторых, исходная форма критерия достоверна только в том случае, если известны все параметры предполагаемого распределения и распределение является непре- рывным, то есть параметры не могут оцениваться по данным. В последнее время область применения этого критерия несколько расширилась: появилась возмож- ность оценивать параметры с его помощью в случаях нормального (логнормально- го), экспоненциального, лог-логистичного распределений и распределения Вей- булла. Хотя критерий Колмогорова-Смирнова в своей исходной форме (когда известны все параметры) часто применялся непосредственно к любым непрерыв- ным распределениям с оценками параметров и к дискретным распределениям, зто на самом деле является причиной завышенного критерия [Conover, 1980, р. 347, 357], то есть вероятность ошибки типа I будет меньше, чем точно установленная. Чтобы определить статистику, лежащую в основе критерия Колмогорова- Смирнова, мы будем использовать функцию эмпирического распределения F„(x), определенную в уравнении (6.5), которая является (непрерывной справа) ступен- чатой функцией, для которой Fn(X^) - i/n для i - 1,2.п (см. задачу 6.19). Если Дх) — подобранная функция распределения, естественная оценка степени согла- сия - это своего рода показатель соответствия между функциями F„ и F. Стати- стика этого критерия D„ — это просто наибольшее (вертикальное) расстояние меж- ду F„(x) и F(x) для всех значений х; формально она определяется как D„ =sup{|E„(x)-F(x)|}. (Супремум (sup) набора чисел А — это наименьшее значение, которое больше, чем все члены А или равно им. Супремум используется вместо более знакомого макси- мума (шах), поскольку в некоторых случаях максимум может быть не вполне оп- ределен. Например, еслиЛ - (0,1), максимума нет, а супремум равен 1.) Статисти- ку D„ можно определить, вычислив D+n = шах/ - - F(Xm )l, D~ = max{ F(Xm ) - —I и допустив, что D„ =max{D„+,Dn-}. На рис. 6.47 для n - 4 показан пример, когда Dn - D„+. (Внимание! Для D„ часто за- даются неправильные вычислительные формулы. В частности, D' =шах< " ISiSn ^ногда рассматривается как формула для Dn. В ситуации, представленной на рис. 6.47, D' действительно равно D„. Рассмотрим рис. 6.48, где D' - Г(Х(2)) - 2/4, но правильное значение D„ равно Дх(2)) -1/4; оно возникает прямо перед х — Х(2). Разумеется, в этом случае D' * D„.)
420 Глава 6. Выбор входных распределений вероятностей Рис. 6.47. Геометрическое значение статистики критерия Колмогорова-Смирнова D„ для п - 4 Рис. 6.48. Пример, в котором статистика критерия Колмогорова-Смирнова D„ не равна D'n Для непосредственного вычисления Dn+ и D„~ требуется сортировка данных, чтобы получить Х(0. Однако Гонзалез, Сахни и Франта [Gonzalez, Sahni, Franta, 1977] приводят алгоритм для вычисления D„+ и D~ без сортировки. Разумеется, большое значение D„ указывает на неудовлетворительное согла- сие, так что форма критерия должна опровергать Но, если D„ превышает некото- рую константу где а — указанный уровень критерия. Численное значение критической точки зависит от того, как было определено предполагаемое распределение; мы должны выделить несколько случаев. Случай 1 Если известны есе параметры F, то есть ни один из параметров Р не оценивался каким-либо образом по данным, распределение D„ не зависит от Р, конечно, при предположении, что функция Р является непрерывной. Этот весьма знаменатель- ный факт означает, что при всех формах непрерывных распределений достаточно
6.6. Действие III: определение наиболее подходящего распределения 421 одной таблицы значений для dnA_a; такие таблицы широкодоступны [Owen, 1962]. Стефенс [Stephens, 1974] разработал точное приближение, которое сводит все к одной совсем маленькой таблице; вместо того чтобы проверять, будет ли Dn > > <4,i-a>мы не принимаем Но, если л/й + 0,12 +-yJl >Cj_n. Значения для (которые не зависят от я) приведены в строке «Все парамет- ры известны» табл. 6.14. Случай, когда известны все параметры, — это исходная форма проверки по критерию Колмогорова-Смирнова. Таблица 6.14. Модифицированные критические значения c'f_a и с''^а для выверенной статистики критерия Колмогорова-Смирнова Выверенная 1 — a 0,900 0,950 0,975 0,990 Случай । статистика критерия 0,850 Все параметры 1 известны ' fVn + 0,12 + ^11 1 у/п ) \Dn U38 1,224 1,358 1,480 1,628 н^яхЛю) I ( г~ пм 0,85> vn + 0,01 + —р=- 1 -Jn J |Д, °>775 0,819 0,895 0,955 1,035 ехро(Х(п)) | |Ъ„-—YVn+ 026 + ^1 °’926 1 «Д W 0,990 1,094 1,190 1,308 Случай 2 Допустим, предполагаемое распределение — это распределение N(p, ст^), для кото- рого ц и «^неизвестны. Оценки ц и о2 можно найти соответственно по Х(п) и 5®(п), а функцию f можно определить как функцию распределения N(X(n), ^(я)), то есть пусть F = Ф{[х - Х(п)]/S2 (п)}, где Ф — функция стандартного нормального распределения. При использовании функции Ф (у которой есть оценки парамет- ров) Dn вычисляется так же, но с использованием других критических точек. Лиллифорс [Lilliefors, 1967] оценил (посредством моделирования методом Мон- те-Карло) критические точки D„ как функцию п и 1-а. Стефенс [Stephens, 1974] выполнил дальнейшие моделирования методом Монте-Карло и предоставил точ- ное приближение, которое делает очевидной необходимость в больших таблицах; а именно, мы не принимаем Но, если fVn-0,01 + ^p.D >с'. ' / I п 1—a К Vn) Значения для с\_а приведены в строке <N(X(n), ^(п))» табл. 6.14. (Здесь включе- на проверка по критерию Колмогорова-Смирнова для логнормального распреде- ления, если Х( являются логарифмами основных точек данных, которые, как мы предположили, имеют распределение указанного типа, см. раздел 6.2.2).
422 Глава 6. Выбор входных распределений вероятностей Случай 3 Допустим, что предполагаемое распределение является распределением ехро(Р) с неизвестным р. Теперь р оценивается по ее оценке максимального правдопо- добия Х(п), и F определяется как функция распределения ехро(Х(п)), то есть F(x) = 1 - е~х^х (я) для х > 0. Для этого случая критические точки для Dn изначально оценены Лиллифорсом [Lilliefors, 1969] посредством моделирования методом Мон- те-Карло, а точные таблицы позднее получены Дурбином [Durbin, 1975; Margolin and Maurer, 1976]. В данном случае согласно приближению Стефенса [Stephens, 1974] Но не принимается, если f 02 V г „„„ 05’) „ Dn —— II Vn + 0J26 + —I > с”_а. к yJn) Значения для c"_a приведены в строке «ехро(Х(п))> табл. 6.14. Случай 4 Допустим, что предполагаемое распределение является распределением Вейбул- ла, параметр формы а и масштабный параметр р которого неизвестны; мы оцени- ваем эти параметры по соответствующим оценкам максимального правдоподобия аир (см. раздел 6.2.2). В этом случае Р определяется как функция распределения Вейбулла Weibull(a, Р), а именно f(x) = ехр[-(х/р)“ ] для х > 0, а D„ вычисляется, как обычно. Гипотеза Но не принимается, если выверенная статистика критерия Колмогорова-Смирнова -JnDn оказывается больше модифицированного критиче- ского значения с*_а [Chandra, Singpurwalla, Stephens, 1981], которое можно найти в табл. 6.15. Обратите внимание, что критические значения, доступны только для определенных объемов выборки п и что критические значения для п, равных 50 и то (предельно большой объем выборки), к счастью, подобны. Критические значе- ния для остальных значений п, которые меньше 50, можно найти в работе Литтел- ла, Мак-Клейва и Оффена [Littell, McClave, Offen, 1979]. Таблица 6.15. Модифицированные критические значения с*_а для проверки по критерию Колмогорова-Смирнова при распределении Вейбулла N 1—а 0,900 0,950 0,975 0,990 10 0,760 0,819 0,880 0,944 20 0,779 0,843 0,907 0,973 50 0,790 0,856 0,922 0,988 ОО 0,803 0,874 0,939 1,007 Случай 5 Допустим теперь, что предполагаемое распределение является лог-логисгическим распределением, параметр формы а и масштабный параметр р которого неизвест- ны. Пусть в этом случае величины Xt будут логарифмами основных точек данных. Оценим параметры по соответствующим оценкам максимального правдоподобия
6.6. Действие Ш: определение наиболее подходящего распределения 423 а и Р, основанным на величинах X, (см. раздел 6.2.2). Теперь F(x) также принима- ется как функция логистического распределения /(х) = (1 + е1-(*'ь Р)1а )-1 для -оо < х < оо, a D„ вычисляется, как обычно. Гипотеза Но не принимается, если выверенная ста- тистика критерия Колмогорова-Смирнова yfnDn больше модифицированного кри- тического значения с,_а [Stephens, 1979], которое можно найти в табл. 6.16. Обра- тите внимание, что критические значения доступны только для определенных объемов выборки п и что критические значения для п, равных 50 и оо (предельно большой объем выборки), к счастью, подобны. Таблица 6.16. Модифицированные критические значения с^_а для проверки по критерию Колмогорова-Смирнова при лог-логисгическОм распределении N 1 - а 0,900 0,950 0,975 0,990 10 0,679 0,730 0,774 0,823 20 0,698 0,755 0,800 0,854 50 0,708 0,770 0,817 0,873 00 0,715 0,780 0,827 0,886 Пример 6.17. В примере 6.15 мы использовали критерий «хи-квадрат», чтобы прове- рить согласованность подобранного распределения ехро(0,399) и данных об интервалах времени между прибытиями, приведенных в табл. 6.7. Мы также можем применить кри- терий Колмогорова-Смирнова с Р(х) - 1 - е^да для х £ 0, используя случай 3 выше. С помощью формул для B+2i9 и £> 219 мы устанавливаем, что D219 “ 0,047, а статистика критерия составляет (Дмэ " Йй1р219 + О-26 + "гУ = 0.696. V 219 219Д * J219J Поскольку 0,696 меньше 0,990 - (см. последнюю строку табл. 6.14), мы не опровер- гаем Но на уровне а - 0,10. Критерий Андерсона-Дарлинга1 Один из вероятных недостатков проверок по критерию Колмогорова-Смирнова состоит в том, что они придают одинаковый вес разности |fn(x) -F(x)| для всех зна- чений х, тогда как многие распределения отличаются в первую очередь своими хвостами. Критерий Андерсона-Дарлинга [Anderson and Darling, 1954] разработан с целью определения различий в хвостах распределений и имеет большую мощ- ность, чем применяющийся ко многим распределениям критерий Колмогорова- Смирнова [Stephens, 1974]. Статистика, лежащая в основе критерия Андерсо- на-Дарлинга, определяется по формуле А« = ” (х) ~ A*)]2 V(x)f(x)dx, 1 Пропустите этот раздел при первом прочтении.
424 Глава 6. Выбор входных распределений вероятностей где весовая функция у(х) = l/{F(x) [1 -F(x)]}. Следовательно, А2„ — это всего лишь средневзвешенное квадрата разности [F„(x) ~F(x)}2, а вес имеет наибольшие значе- ния для F(x), близких к 1 (правый хвост), и F(x), близких к 0 (левый хвост). Если допустить, что Z, = F(X^ для i = 1, 2,.... п, тогда можно показать, что Ап =^-{£(2/-1)Рп2, +1п(1-2я+1.£)]|/^-п. Это выражение представляет собой форму статистики, применяемой для действи- тельных вычислений. Поскольку А2„ — «взвешенное расстояние», форма критерия должна опровергать нулевую гипотезу Но, если А2Я превышает некоторое критиче- ское значение ап где а является уровнем критерия. Критерию Андерсона-Дарлинга, как и критерию Колмогорова-Смирнова, до- ступны критические значения ап для тех же пяти непрерывных распределений [Stephens, 1974,1976,1977,1979]. Случай с дискретными данными рассматривает- ся в работе Глесера [Gleser, 1985]. Кроме того, г(х) вычисляется так же, как и ра- нее (см. пример 6.18). Выполнение проверок по критерию Андерсона-Дарлинга обеспечивается с помощью выверенной статистики критерия (за исключением случаев, когда известны все параметры) и модифицированных критических значе- ний, которые можно найти в табл. 6.17. Если выверенная статистика превышает модифицированное критическое значение, тогда Но не принимается. Д’Агостино и Стефенс [D’Agostino and Stephens, 1986, р. 151-156] предлагают процедуру для выполнения проверки по критерию Андерсона-Дарлинга для гам- ма-распределения, где критические значения получаются путем интерполирова- ния в таблице. Критерий Андерсона-Дарлинга можно также применять к распре- делению Пирсона типа V исходя из того, что если X имеет распределение Пирсона типа V, то 1/Х имеет гамма-распределение (см. раздел 6.2.2). Таблица 6.17. Модифицированные критические значения для выверенной статистики критерия Андерсона-Дарлинга Случай Выверенная статистика критерия 1 -a 0,900 0,950 0,975 0,990 Все параметры известны для п i 5 1,933 2,492 3,070 3,857 N(Y(n), ^(п)) 4 25) Л2 1 + 5- Ми \ п п2) 0,632 0,751 0,870 1,029 ехро(Х(п)) °-6V 1 + — Ии 1 п ) 1,070 1,326 1,587 1,943 Weibull (a, Р) 1+хК! 0,637 0,757 0,877 1,038 LL(a,P) (1+^К2 \ у nJ 0,563 0,660 0,769 0,906 Пример 6.18. Мы можем использовать случай 3 для критерия Андерсона-Дарлин- га, для того чтобы проверить, обеспечивает ли подобранное экспоненциальное распре- деление с F(x) - 1 - е"ч/0’399 подходящую модель для данных об интервалах времени
6.6. Действие III: определение наиболее подходящего распределения 425 между прибытиями на уровне а - 0,10. Мы определили, что Л2219 - 0,558, так что выве- ренная статистика составляет (1+^419= озм- Поскольку 0,560 меньше модифицированного критического значения 1,070 (см. третью строку табл. 6.17), мы не опровергаем Но на уровне а - 0,10. Критерий пуассоновского процесса1 Предположим, что вы наблюдаете пуассоновский процесс (см. раздел 6.12.1) для постоянных интервалов времени [0, 7], где Т— константа, которая выбирается пе- ред началом наблюдений. Пусть п будет числом событий, наблюдаемых в интерва- ле [0,7], a tt — временем i-го события для i - 1,2,..., п. (Следовательно, 0 < tt < t2 < ... S t„ <, T Если t„ < Т, то в интервале (tn, 7] события не происходили.) Тогда совмест- ное распределение tb t2,.... t„ соотносится с распределением U(0, Т) следующим об- разом. Допустим, что Yit Y2,..., Y„ (п представляет собой то же, что и раньше) — не- зависимые и одинаково распределенные случайные величины с распределением U(0, Т), а У(1), У(2), ..., У(я) — соответствующая порядковая статистика (см. раз- дел 6.2.4). Тогда свойство пуассоновского процесса состоит в том, что tu t2,..., tn имеют то же совместное распределение, что и У(1), У(2),..., У(п) [Ross, 1997, р. 265]. Одна из интерпретаций этого свойства состоит в следующем: если кто-то про- сто показывает нам значения tb t2,..., t„, не сообщая, что tt было получено как время :-го события в какой-либо последовательности событий, может показаться (с точ- ки зрения статистики), что эти п чисел были получены путем выборки п независи- мых и одинаково распределенных случайных величин из распределения U(0, Т) с последующей сортировкой их по возрастанию. Данное свойство можно рассмат- ривать и таким образом: если мы определим t1( t2, ..., t„ как неупорядоченные случайные величины, они будут независимыми и одинаково распределенными с распределением U(0, Т). Вот почему мы иногда рассматриваем пуассоновский процесс в качестве такого, где события возникают «случайным образом», поскольку интервалы, через которые они происходят, равномерно распределены во времени. В любом случае благодаря наличию данного свойства у нас есть возможность использовать еще один способ проверки нулевой гипотезы о том, что наблюдаемая последовательность событий была сгенерирована в результате пуассоновского про- цесса. (Мы описывали способ проверки этой гипотезы, позволяющий определить, представлены ли интервалы времени между событиями независимыми и одинако- во распределенными величинами; см. раздел 6.12.1 и примеры 6.15, 6.17 и 6.18.) Мы просто выясняем с помощью соответствующих процедур, представлено ли время событий t2,..., t„ независимыми и одинаково распределенными величина- ми с распределением U(0, Т). Пример 6.19. Данные об интервалах времени между прибытиями, приведенные в табл. 6.7, собраны в течение 90-минутного периода, в это время также зарегистрировано п - 200 прибытий. (Заранее было решено начать наблюдение за процессом ровно в 17.00, а не в тот момент времени после 17.00, когда произойдет прибытие. Кроме того, сбор данных 1 Если представленный здесь материал покажется вам непонятным, вы сможете вернуться к этому раз- делу позднее.
426 Глава 6. Выбор входных распределений вероятностей был прекращен ровно в 18.30 несмотря на то, что события происходили и позже. Чтобы проверка по этому критерию была достоверной, сбор данных следовало организовать именно таким образом, то есть независимо от действительного времени событий.) Было получено следующее время прибытий: tx — 1,53; t2 —1,98;...; t220 - 88,91 (в минутах после 17.00). Для проверки того, можно ли считать эти числа независимыми с распределением U(0, 90), использовались обстоятельства, когда известны все параметры, критериев «хи-квадрат* и Колмогорова-Смирнова. (Плотность и функции подобранного распре- деления соответственно равны /(х) -1/90 и F(x) — х/90 для 0 5 х £ 90, а наши «информа- ционные* точки уже отсортированы.) Проверку выполнили по критерию «хи-квадрат» с k - 17 равновеликими интервалами [0; 5,294), [5,294; 10,588], ..., [84,706; 90]; пр} - - 220/17 - 12,941 для/ - 1, 2,..., 17. Полученное значение %2 равно 13,827, а поскольку %216, о.9о ~ 23,542, мы не можем опровергнуть нулевую гипотезу о том, что прибытия про- исходят в соответствии с пуассоновским процессом, на уровне 0,10. В результате про- верки по критерию Колмогорова- Смирнова получено Dn - 0,045, а значение статистики, лежащей в основе критерия, приведено в строке «Все параметры известны* табл. 6.14, равно 0,673. Поскольку это значение гораздо меньше с090 - 1,224, мы опять-таки не мо- жем опровергнуть нулевую гипотезу на уровне 0,10. 6.7. Программа ExpertFit и пример ее использования В некоторых случаях статистические процедуры, рассмотренные в этой главе, ока- зываются сложными, выполняющимися в течение продолжительного времени, и при этом могут возникнуть ошибки. Например, для проверки по критерию «хи- квадрат» с равновероятными интервалами требуется наличие обратной функции распределения, которая для некоторых распределений недоступна в конечной форме (например, для нормального распределения и гамма-распределения). Сле- довательно, в этих случаях должно быть получено и запрограммировано числен- ное приближение к обратной функции распределения. Кроме того, проверки по критерию Колмогорова-Смирнова часто неверно формулируются в учебниках и неправильно применяются в пакетах программного обеспечения. Указанные об- стоятельства привели к созданию программы ExpertFit (и ее предшественницы UniFit) для подбора распределений. Программа ExpertFit [Averill М. Law & Assiciates, 1999] автоматически и точно определяет, какое из 39 распределений вероятностей лучше всего представляет набор данных. Выбранное распределение затем переводится в соответствующий формат, предназначенный для прямого ввода во многие пакеты имитационного моделирования. В ExpertFit есть четыре модуля, которые используются последо- вательно, чтобы найти наилучшее распределение. ♦ В модуле Data (Данные) считываются данные и импортируются в программу ExpertFit, отображается итоговая статистика и строятся гистограммы; создают- ся корреляционные графики и диаграммы разброса; выполняются проверки од- нородности наборов данных по критерию Крускал-Уаллиса (см. раздел 6.13). ♦ В модуле Models (Модели) к данным подбирается распределение с помощью метода максимального правдоподобия, распределения сортируются по степени
6.7. Программа ExpertFit и пример ее использования 427 их соответствия данным, определяется, действительно ли «наилучшее» рас- пределение подходит для использования в имитационной модели (в против- ном случае рекомендуется использовать эмпирическое распределение). ♦ В модуле Comparisons (Сравнение) с целью проведения дальнейшей проверки степени соответствия наилучшее распределение (распределения) сравнивает- ся с данными посредством графиков плотности, расположенных поверх гис- тограммы, графиков различий между функциями распределения, вероятност- ных графиков, критериев согласия и т. д. ♦ В модуле Applications (Применение) вычисляются и выводятся на экран ха- рактеристики подобранного распределения, и в частности функция плотно- сти, моменты, вероятности и квантили; выбранное распределение переводит- ся в соответствующий формат, предназначенный для определенного пакета имитационного моделирования. Воспользуемся программой ExpertFit и выполним сравнительный анализ п - - 200 значений времени обслуживания, приведенных в примере 6.1. Для упроще- ния проводимой операции ограничимся анализом нормального и экспоненциаль- ного распределений, гамма-распределения, распределения Вейбулла, логнормаль- ного и лог-логистического распределений, распределений Пирсона типов V и VI. В табл. 6.18 представлена итоговая статистика для времени обслуживания, а на рис. 6.49 - соответствующая гистограмма, основанная на k = 12 интервалах шири- ной Дй = 0,2. Форма гистограммы явно указывает на смещение истинного распре- деления, лежащего в основе данных, вправо, следовательно, распределение не мо- жет быть нормальным. Этот вывод подтверждается и тем, что Х(200) = 0,888 > > 0,849 = £о5(2ОО), v(200) = 0,506 > 0, и формой блокового графика (рис. 6.50). Бо- лее того, cv(200) = 0,515 позволяет заключить, что истинное распределение едва ли будет экспоненциальным, с коэффициентом вариации, равным 1; об этом сви- детельствует и форма гистограммы. Таблица 6.18. Итоговая статистика для данных времени обслуживания Выборочная характеристика Значение Исходный файл SERVTIME.DAT Тип наблюдений Вещественные Число наблюдений 200 Минимальное зарегистрированное значение 0,05395 Максимальное зарегистрированное значение 2,13060 Среднее 0,88837 Медиана 0,84913 Дисперсия 0,20963 Коэффициент вариации 0,51539 Асимметрия 0,50552 Затем для автоматической подборки, сортировки и оценки оставшихся шести распределений нами была использована опция Automated Fitting (Автоматическая подборка) в модуле Model s. Результаты, выданные программой ExpertFit, показа-
428 Глава 6. Выбор входных распределений вероятностей ны на рис. 6.51. Из пункта меню «Относительная оценка вариантов моделей» сле- дует, что распределение Вейбулла занимает первое место и имеет относительный балл 100,00; за ним следуют гамма-распределение и лог-логистическое распреде- ление с относительными баллами 80,00 и 55,00 соответственно. Рис. 6.49. Гистограмма 200 значений времени обслуживания с ЛЬ - 0,2 -0,154 0,096 0Д46 0,596 0,846 1,096 1,346 1,596 1,846 2,096 Рис. 6.50. Блоковый график для данных о времени обслуживания Даже если распределение занимает первое место, это вовсе не означает, что оно подходит для моделирования. Как свидетельствует абсолютная оценка модели (рис. 6.51), противопоказаний к использованию распределения Вейбулла на теку- щий момент нет. Однако рекомендуется поискать дальнейшее подтверждение.
6.7. Программа ExpertFit и пример ее использования 429 Если распределение, получившее наивысшую оценку, не подходит для примене- ния в имитационной модели, ExpertFit предложит применить эмпирическое рас- пределение. Относительная оценка вариантов моделей Модель Относительный балл Область модели 1 — распределение Вейбулла 100.00 Больше 0 2 — гамма-распределение 80.00 Больше 0 3 — лог-логистическое распределение 55.00 Больше 0 6 моделей оценены по баллам от 0.00 до 100.00 Абсолютная оценка модели 1 — распределение Вейбулла Исходя из оценки посредством эвристических методов на данный момент противопоказаний к использованию основной модели нет. Если вы выполняете моделирование, основная модель, вероятно, будет хорошим представлением ваших данных. Однако мы рекомендуем получить дополнительное подтверждение для основной модели. Дополнительная информация относительно модели 1 — распределение Вейбулла Результаты проверки по критерию Андерсона-Дарлинга на уровне 0.1 Не опровергается «Погрешность» в среднем модели по сравнению с выборочным средним -5.839 е-4 - 0.07% Рис. 6.51. Результаты, выданные программой ExpertFit, для данных о времени обслуживания Алгоритм сортировки и оценки в ExpertFit мы разработали следующим обра- зом. У нас было 15 эвристических методов, которые, как считалось, позволяют различать хорошо и плохо подходящие распределения. (Критерий «хи-квадрат» здесь не рассматривался, поскольку он зависит от произвольного выбора интерва- лов.) Для того чтобы определить наилучший среди этих эвристических методов, из известного теоретического распределения сгенерировали случайную выборку с объемом п; каждый из 15 методов опробовали, чтобы проверить, можно ли с их помощью выбрать правильное распределение. После выполнения этой процедуры повторно для 200 независимых выборок получили оценку вероятности, с которой каждый эвристический метод даст возможность найти нужное теоретическое рас- пределение для указанного объема выборки. Весь процесс повторно выполнили
430 Глава 6. Выбор входных распределений вероятностей для 175 пар теоретических распределений и соответствующих объемов выбор- ки, в результате чего удалось определить несколько наиболее эффективных эври- стических методов. Эти методы были скомбинированы, чтобы получить общий алгоритм сортировки распределений и вычисления относительного балла. Кроме того, 35 000 сгенерированных наборов данных использовались для разработки правила, позволяющего получать абсолютную оценку. Результат выполнения проверки по критерию Андерсона-Дарлинга для рас- пределения Вейбулла на уровне а - 0,10 также показан на рис. 6.51, и он не дает повода отвергнуть распределение Вейбулла. Наконец, можно увидеть, что погреш- ность в среднем значении подобранного распределения Вейбулла по сравнению с выборочным средним составляет всего 0,07 %. В соответствии с рекомендациями, приведенными в части рисунка «Абсолют- ная оценка», попробуем получить дополнительное подтверждение для распре- деления Вейбулла с помощью графиков и проверок по критерию согласия. На рис. 6.52 показан график плотности, расположенный поверх гистограммы, для распределения Вейбулла и гамма-распределения. Можно убедиться, что распреде- ление Вейбулла хорошо подходит к гистограмме, а гамма-распределение подходит к ней значительно хуже. На рис. 6.53 показан график различий между функциями этих двух распределений, и опять мы видим превосходство распределения Вей- булла. Графики Q-Q и Р-Р на рис. 6.54 и 6.55 также свидетельствуют, что пред- почтительнее использовать распределение Вейбулла. Рис. 6.52. Графики плотности, расположенные поверх гистограммы данных о времени обслуживания, для распределения Вейбулла и гамма-распределения
6.7. nporpaMMa ExpertFit и пример ее использования 481 Рис. 6.53. Графики различий между функциями распределения данных о времени обслуживания Для распределения Вейбулла и гамма-распределения 1,0 ' 0,9 0,8 <.4W йг* g 0,6 й I °-5 я? | м Ж 0,3 0,2 0,1 0,0 0,0 0,1 0,2 0,3 0,4. 0,5 0,6 0,7 0,8 0,9 1,0 Выборочное значение Рис. 6.54. Графики Р-Р данных о времени обслуживания для распределения Вейбулла ,,. . и гамма-распределения
432 Глава 6. Выбор входных распределений вероятностей Рис. 6.55. Графики Q-Q данных о времени обслуживания для распределения Вейбулла и гамма-распределения Затем мы выполнили равновероятностную проверку по критерию «хи-квад- рат» для распределения Вейбулла на уровне а - 0,10 с использованием k - 20 интервалов. Статистика критерия «хи-квадрат» составила 15,6, что меньше крити- ческого значения 27,204; следовательно, критерий «хи-квадрат» не дает нам пово- да отвергнуть распределение Вейбулла. Выверенная статистика критерия Колмо- горова-Смирнова составила 0,428, что меньше, чем критическое значение 0,803 на уровне а - 0,10. У нас опять-таки нет оснований отвергнуть распределение Вей- булла. (В результате предварительной проверки по критерию Андерсона-Дар- линга на уровне а - 0,10 распределение Вейбулла отвергнуто не было.) Следовательно, исходя из абсолютной оценки графиков и критериев согласия, у нас нет оснований полагать, что распределение Вейбулла будет неудачным пред- ставлением данных о времени обслуживания. 6.8. Смещенные и усеченные распределения Экспоненциальное распределение, гамма-распределение, распределение Вейбул- ла, логнормальное распределение, распределения Пирсона типов V и VI, а также лог-логистическое распределение, рассмотренные в разделе 6.2.2, имеют область [0, оо). Таким образом, если случайная величина X имеет одно из этих распределе- ний, она может произвольно принимать малые положительные значения. Однако, если X представляет время выполнения какой-либо задачи (например, обслужи- вания клиента), невозможно, чтобы X было меньше некоторого заданного положи- тельного числа. Например, в банке, скорее всего, невозможно обслужить клиента
6.8. Смещенные и усеченные распределения 433 0-“(х-у)“-1е-(^)/₽ Г(а) f(x) = 0 меньше чем за 30 с; это отразится в собранных нами данных о времени обслужива- ния в банке. Итак, в действительности Р(Х < 30 с) - 0. Однако, например, для подобранного гамма-распределения, существует положительная вероятность ге- нерирования случайной величиной, которая будет меньше 30 с. Вероятно, в неко- торых случаях модификация формы конкретных распределений могла бы обеспе- чить более полное их соответствие данным. Изменить форму можно, сместив распределение на некоторое расстояние впра- во. В действительности параметр положения включается в плотность рассматри- ваемого распределения (см. раздел 6.2.1). Например, гамма-распределение, сме- щенное вправо на величину у > 0, имеет плотность еслих > у; в противном случае. Оно имеет ту же форму и масштабные параметры, что и распределение gamma(a, 0), но смещено на у единиц вправо. (Такое распределение часто называют трехпара- метрическим гамма-распределением.') Смещенные версии других упомянутых вы- ше распределений определяются точно так же; для них в функции плотности рас- пределения вероятностей и области определения X заменяется на х - у. Размах таких смещенных распределений составляет [у, °о). При наличии подобных смещенных распределений нам понадобится опреде- лить оценку у, как и оценки всех остальных параметров. Теоретически это можно сделать, определив оценку максимального правдоподобия для у в дополнение к оценкам максимального правдоподобия исходных параметров. Для смещенного экспоненциального распределения определить 0 и у относительно просто (см. за- дачу 6.12). А вот найти оценки максимального правдоподобия для трехпараметри- ческих распределений гораздо сложнее. Например, в случаях с гамма-распределе- нием, распределением Вейбулла и логнормальным распределением известно, что (глобальные) оценки максимального правдоподобия не очень хорошо определены [Zanakis, 1979а; Cohen and Whitten, 1980; Cheng and Amin, 1983]. To есть функцию правдоподобия L можно сделать бесконечно большой, выбрав у - Х(1) (наименьшее наблюдение в выборке), что приводит к получению недопустимых значений для других параметров. Простой подход к решению проблемы с трехпараметрически- ми распределениями состоит в следующем. Сначала мы определяем оценку пара- метра у по формуле Х^Х^-Х^ У"Х(1)+Х(я)-2Х(4)’ где k — наименьшее целое число в {2, 3,..., п - 1}, для которого [Dubey, 1967]. Можно показать, что у < Х(1) тогда и только тогда, когда X(i) < [Х(1) + Х(я)]/2; возникновение такой ситуации весьма вероятно (см. задачу 6.23). Занакис [Zana- kis, 1979b] определил эмпирическим путем точность у для распределения Вейбул- ла. При известном значении у величина Х'{ вычисляется по формуле X; = Х{ - у >0 для i - 1, 2,..., п.
434 Глава 6. Выбор входных распределений вероятностей Оценки максимального правдоподобия масштабного параметра и параметра формы получаются посредством применения двух параметрических процедур мак- симального правдоподобия к наблюдениям Х[, Х'2,..., Х'„. Пример 6.20. На рис. 6.56 показана гистограмма (с А₽ - 0,2) времени (в часах) разгруз- ки п - 808 составов с углем, каждый из которых состоит приблизительно из 110 вагонов. (Точнее, на рис. 6.56 изображен график плотности, расположенный поверх гистограм- мы.) Форма гистограммы предполагает, что для подобранного распределения понадо- бится положительный параметр положения. Поскольку - 3,37, Х(2) - 3,68, аХ(ю) - - 6,32, получается, что у - 3,329. Затем значения X- - Xf - 3,329 для i -1,2,..., 808 исполь- зовались, чтобы получить оценки максимального правдоподобия d - 7,451 и Р “ 1,271 для лог-логистического распределения, график плотности которого также показан на рис. 6.56. В целом соответствие между графиком плотности лог-логистического распре- деления и гистограммой кажется вполне удовлетворительным. В некоторых ситуациях подобранное распределение в целом представляет хо- рошую модель данных наблюдений, но имеется информация о том, что, например, ни одно значение не может быть больше некоторой конечной постоянной b > 0. Если область плотности подобранного распределения /составляет [0, оо), она не- совместима с верхним пределом Ь, поэтому нам придется использовать плотность усеченного распределения/*(х) - f(x)/F(b) для 0 £ х <, b (и в противном случае 0), гдеГ(Ь) - £f(x)dx< 1. Метод генерирования случайных значений из/* будет рас- смотрен в разделе 8.2.1. Рис. 6.56. График плотности подобранного лог-логистического распределения, расположенный поверх гистограммы данных о времени разгрузки составов Пример 6.21. Если было установлено, что гамма-распределение обеспечивает хорошую модель времени обслуживания в банке, его плотность может быть усечена от значения Ь -15 мин, если возникновение больших значений крайне мало вероятно.
6.10. Многомерные распределения, корреляции и стохастические процессы 435 6.9. Распределения Безье Существует четвертый метод определения [Wagner and Wilson, 1996а, Ь] распре- деления вероятностей, моделирующего набор наблюдаемых данных Хь Х2,.... Х„ (три других метода описаны в разделе 6.1). Если X — непрерывная случайная ве- личина с конечной областью [a, i] и функцией распределения Е(х) любой формы, то F(x) может быть приближенно выражена функцией распределения Безье с дос- таточно большой степенью т. Пусть {р0, р1(р„} будет набором контрольных то- чек, где р,-(у,-, z,)(i- 1,2, ...,т- 1),р0-(а, 0) ирт-(Ь, 1). Функция распределения Безье Р(Г) параметрически задается как ЛО = х в« i (Op i для t 6 [0, 1], (6.6) j-0 где Пусть у будет вектором yb a z — вектором zt Кроме того, пусть Е„(х) будет функ- цией эмпирического распределения, определенной с помощью уравнения (6.5), a F(x, т, у, z) — функцией распределения Безье, определенной с помощью уравне- ния (6.6). При заданном т функция F(x, т, у, z) подбирается к величинам Xj с по- мощью подходящего метода оптимизации (например, оценки методом наимень- ших квадратов), чтобы определить минимальное расстояние между jF„(x) и F(x, т, у, z) для всех возможных значений у и z, и в соответствии с некоторыми ограниче- ниями. (Методом оптимизации определяется р, для i- 1,2,..., т - 1.) Распределение Безье является альтернативой эмпирическому распределению для моделирования набора данных, который не удается хорошо представить с по- мощью стандартного теоретического распределения. Более того, Вагнер и Виль- сон разработали пакет программ для подбора распределений Безье. Тем не менее при использовании распределений данного типа возникает одна трудность. Рас- пределения Безье не реализованы в большинстве пакетов имитационного модели- рования, и их самостоятельное применение также может оказаться затруднитель- ным в некоторых программах. 6.10. Многомерные распределения, корреляции и стохастические процессы До сих пор в этой главе мы рассматривали лишь описания и оценки распределе- ния единственной одномерной переменной. Если для имитационной модели тре- буется ввод только таких скалярных случайных переменных и если они не зависят одна от другой по всей модели, тогда будет достаточно многократного применения ко всем входным данным методов, рассмотренных в этой главе. В большинстве проектов моделирования это стандартный подход, и его поддерживают большин- ство пакетов имитационного моделирования.
436 Глава 6. Выбор входных распределений вероятностей Однако существуют системы, в которых входные случайные величины каким- либо образом статистически связаны друг с другом. ♦ Некоторые входные случайные величины вместе образуют случайный вектор с многомерным (или совместным) распределением вероятностей (см. раз- дел 4.2), заданным разработчиком модели. ♦ В ряде случаев мы можем не захотеть (или у нас не будет возможности) захо- дить так далеко и указывать полное многомерное распределение. Тем не ме- нее не зная или не имея определения полного многомерного распределения, мы подозреваем, что может существовать корреляция между различными вход- ными случайными величинами, имеющими свои собственные индивидуаль- ные или частные распределения. Нам потребуется, чтобы входные данные отражали эту корреляцию, даже если мы не сможем определить полностью многомерное распределение. ♦ В других случаях нам может понадобиться определить весь входной стохасти- ческий процесс (см. раздел 4.3), в котором должно быть определено частное распределение составляющих его индивидуальных случайных величин, а так- же автокорреляции между ними на протяжении некоторого искомого интер- вала. Этот процесс можно рассматривать как бесконечномерный входной слу- чайный вектор. Легко представить физическую ситуацию, в которой могут встречаться подоб- ные входные данные. + Рассмотрим ремонтный цех, который можно смоделировать как систему пооче- редного обслуживания с двумя станциями технического обслуживания. На пер- вой станции осматриваются поступающие детали и отмечаются найденные де- фекты, которые должны быть устранены на второй станции. Поскольку как для осмотра, так и для ремонта значительно поврежденной детали, вероятно, по- требуются интервалы времени больше среднего, мы можем ожидать, что эти два интервала времени для данной детали будут положительно коррелирован- ны. В работе Митчелла с соавторами [Mitchell et al., 1977] утверждается, что игнорирование такой корреляции при моделировании системы может привес- ти к серьезным неточностям в результатах моделирования. ♦ В модели систем связи размеры поступающих сообщений (и, вероятно, интер- валы времени между их прибытиями) могут образовать стохастический про- цесс с неким стационарным частным одномерным распределением размера сообщения, а также некоторой корреляцией на протяжении нескольких ин- тервалов. Например, большие сообщения метут иметь тенденцию к поступле- нию группами так же, как и маленькие сообщения, что приводит к положи- тельной автокорреляции в пределах размера сообщения во входном процессе. В работе Ливни с соавторами [Livny et al., 1993] показано, что автокорреля- ция в процессах времени обслуживания или интервалах времени между по- ступлениями простой системы массового обслуживания М/М/1 может иметь существенное влияние на выходные оценки критериев работы. ♦ В модели системы управления запасами или производственной системы в по- токе поступающих заказов может наблюдаться отрицательная автокорреля-
6.10. Многомерные распределения, корреляции и стохастические процессы 437 ция в одном интервале, если за крупным заказом в одном периоде поступает небольшой заказ в следующем периоде и наоборот. Поэтому если разработчик модели имеет сведения о каких-либо статистиче- ских отношениях между различными скалярными входными случайными величи- нами имитационного моделирования или если входной поток — это процесс во времени, в котором проявляется автокорреляция, то следует уделить внимание моделированию таких отношений и генерированию их в ходе моделирования, что- бы избежать проблем с адекватностью модели. В оставшейся части главы мы рассмотрим некоторые из вопросов, касающихся определения и оценки, а в разделе 8.5 речь пойдет о генерировании соответствую- щих наблюдений как входных данных для выполнения прогона имитационной мо- дели. Раздел 6.12 посвящен моделированию процессов прибытия, а раздел 8.6 — методам генерирования наблюдений для таких процессов. Многие из этих тем освещены в работе Лимиса [Leemis, 1997] и в разделе 5 работы Нельсона, Карио н др. [Nelson, Carlo et al., 1995]. 6.10.1 . Определение многомерных распределений Пусть X - (Хц Х2 Xd)T будет входным случайным вектором размерностью d (Ат обозначает транспонированный вектор или матрицу А, так что X является векто- ром-столбцом dx 1). В примере с ремонтным цехом d == 2 (в этом случае вектор X называется двухмерным), Xt — время осмотра детали, а Х2 — время ремонта той же детали. Допустим, X* - (Xlt, Хи,..., Хл)т — k-e наблюдение из п независимых и оди- наково распределенных наблюдений в J-мерном случайном векторе; в ремонтном цехе будет п пар данных наблюдений, соответствующих периодам осмотра и ремонта п различных деталей. Мы бы хотели и дальше иметь возможность генерировать такую последо- вательность двух векторов в качестве входных данных для моделирования. Обратите внимание на то, что допуская корреляцию в компонентах определен- ного вектора X*, мы считаем, что составляющие случайные величины независимы в различных векторах X*, то есть случайные векторы Х2, Х2,..., Х„ не зависят друг от друга. Когда речь идет о ремонтном цехе, это означает, что в то время как период осмотра и парный период ремонта могут быть соотнесены между собой, для раз- личных деталей не существует соотношений между периодом осмотра и периодом ремонта — предполагается, что операции над деталями выполняются независимо друг от друга. (В разделе 6.10.3 допускается автокорреляция в последовательно- сти {Хь Х2,...}, но только в случае с одномерными (скалярными) величинами, ко- гда d - 1.) Функция многомерного (или совместного) распределения Случайного вектора X определяется как F(x) = Р(Х<х) = Р(Х, <,xitX2 <х2......Xd £xd)
438 Глава 6. Выбор входных распределений вероятностей для любого неизменного J-вектора х - (хи х2,..., xd)T. Это относится ко всем случа- ям непрерывных, дискретных или смешанных индивидуальных безусловных рас- пределений. Кроме того что функция многомерного распределения предполагает безусловные распределения, в ней заключается вся информация об отношениях между отдельными составляющими случайных величин, включая их корреляции. Существуют различные многомерные распределения, которые разрабатыва- лись и параметризировались различными способами и в различных семействах [Devroye, 1986, chap. 11; Johnson, 1987]. Однако бывает трудно или практически невыгодно оценивать все многомерное распределение случайного вектора по дан- ным наблюдений, в особенности если объем выборки п невелик. Поэтому в этом разделе мы ограничимся некоторыми особыми случаями оценки многомерных распределений, которые используются в моделировании. В разделе 6.10.2 расска- зано, что можно сделать, если задачи определения оценок не распространяются на все многомерное распределение. Поскольку нас интересуют исключительно вход- ные данные моделирования, мы должны обратить внимание на то, как можно гене- рировать реализации таких случайных векторов; об этом речь пойдет в разделе 8.5. Многомерное нормальное распределение Многомерное нормальное распределение, вероятно, наиболее известный особый случай многомерного распределения. Это распределение мржет иметь несколько ограниченное непосредственное применение в качестве входной модели, посколь- ку все его безусловные распределения симметричны и бесконечны в обоих направ- лениях, однако оно служит основой для других, более подходящих, входных рас- пределений. Функция многомерного нормального распределения (см. раздел 4.2) определя- ется как /(х) = (2л)"я/2 |Е|~1/2 ехр для любого вектора х в «/-мерном вещественном пространстве. В этом случае д - = (Pi, Рг.М<«)г~ вектор средних значений, Е — ковариационная матрица с (i,J)-M элементом - Cov(Xf, Xj) (следовательно, Е является симметрично и поло- жительно определенной), |Е| — определитель Е, а Е"1 — матрица, обратная Е. Безус- ловным распределением X будет N(pjt сгй). Многомерное нормальное распределе- ние обозначается как NdQx, Е). Коэффициент корреляции между Хги Xj составляет = Pjt, данное значение всегда находится между -1 и +1. Значит, так как стй - с* = р# , альтернативная параметризация многомерного нормального распределения мо- жет заключаться в замене Е параметрами стйи р* для i-1,2,.... dwj-i +1, i + 2,..., d. Обратите внимание, что в случае с многомерным нормальным распределением все совместные распределения однозначно определяются безусловными распре- делениями и коэффициентами корреляции. Как правило, такая ситуация не выпол- няется в отношении других многомерных распределений, отличных от нормально- го; то есть может существовать несколько различных совместных распределений,
6.10. Многомерные распределения, корреляции и стохастические процессы 439 для которых мы в результате получим тот же набор безусловных распределений и корреляций. Чтобы подобрать многомерное нормальное распределение к J-мерным данным наблюдений Xt, Х2,Х„, дается оценка вектора средних значений д по оценкам максимального правдоподобия: Д = Х = (Х1,Х2,...,Ха)Г, (6.7) где Xt = y.L< Xik/n, а ковариационная матрица Е, которая имеет размер dx d, оце- нивается по матрице Е, (i, /)-й элемент которой равен Х(ХЙ-Х,.)(ХД-ХУ) ------------------• (6.8) Оценка коэффициента корреляции: р~ определяется по оценке максимального правдоподобия: <6-9) у CT«CTi' Для генерирования данных из многомерного нормального распределения, оценки которого были получены таким образом, используются методы, описан- ные в разделе 8.5.2. Многомерное логнормальное распределение Многомерное логнормальное распределение предоставляет разработчику модели безусловные распределения с положительной асимметрией в области [0, °о) и воз- можностью корреляции между ними. Вместо того чтобы давать четкое определение его полной совместной плотно- сти распределения вероятностей, для моделирования будет полезнее, если мы опишем многомерное логнормальное распределение с точки зрения его трансфор- мационных отношений с многомерным нормальным распределением. Считается, что тогда и только тогда X - (Xt, Х2,..., Xd)r имеет логнормальное распределение, когда ¥=(ад.........Yd)T = (1пХ1;1пХ2.lnXd)r имеет многомерное нормальное распределение Nd(M, Е) (Jones and Miller, 1966; Johnson and Ramberg, 1978]. Иными словами, случайный вектор многомерного логнормального распределения может быть представлен как Х = (ег* ,ег’.ег9г, где Y имеет многомерное нормальное распределение Е). Безусловное рас- пределение Xf будет одномерным логнормальным распределением I N(pI( сгй), где — i-й элемент д, а сгй — i-й диагональный элемент Е. Поскольку вектор многомерного нормального распределения Y в вышепри- веденном логарифмическом преобразовании X имеет вектор средних значений
440 Глава 6. Выбор входных распределений вероятностей р - (ц1( ц2,и ковариационную матрицу Е с (i, j)-m элементом (следова- тельно, коэффициенты корреляции составляют р ), получается, что E(Xj) = e'*i+o«/2, (6.10) Var(X,) = e2t‘i+o“ (е°й -1) (6.11) и Cov(XpXy) = (e°g -l)expL + Ц;- + j. (6.12) Это означает, что коэффициент корреляции между и Xj составляет е» -1 CortX^Xj ) = -. Л- =Л- = 7(е°” -1)(е°А -1) (6.13) Обратите внимание, что д и Е не являются вектором средних значений и ковариа- ционной матрицей многомерного логнормального случайного вектора X, а ско- рее — средним и ковариацией -«логарифмированного» многомерного нормального вектора Y. Вектор средних значений и ковариационная матрица (и корреляции) X заданы уравнениями (6.10) - (6.13). Чтобы подобрать многомерное логнормальное распределение к выборке Xt, Х2,..., Х„ J-мерных векторов, берется натуральный логарифм каждой составляющей скалярного наблюдения в каждом векторе данных наблюдений для получения век- торов данных Yj, Y2,..., Y„; эти Y* рассматриваются как многомерные нормальные величины с неизвестными вектором средних значений ц и ковариационной матри- цей Е; оценки ц и Е определяются по уравнениям (6.7) и (6.8). Генерирование данных из подобранного многомерного логнормального рас- пределения рассматривается в разделе 8.5.2. Многомерная система преобразования Джонсона Одномерная система преобразования Джонсона, которая включает нормальное и логнормальное распределения, а также распределения Джонсона SB и Sv, обеспе- чивает ощутимую гибкость в том, что касается области и формы подбираемых рас- пределений. Это семейство распределений было расширено до многомерных рас- пределений [Johnson, 1987, chap. 5; Stanfield et al., 1996; Вильсон, 1997]. Как и в случае с одномерными распределениями, многомерная система преоб- разования Джонсона предоставляет гибкие возможности, что касается области размаха и формы распределений, а это позволяет удачно подобрать распределения к самым разнообразным векторам данных наблюдений. У системы, конечно, более гибкие возможности, чем у вышеприведенных многомерного нормального и мно- гомерного логнормального распределений. В частности, в методе, разработанном Стенфилдом и др. [Stanfield et al., 1996], первые четыре момента безусловных рас- пределений из подобранного многомерного распределения соответствуют распре- делениям данных наблюдений, а структура корреляции, в свою очередь, в подобран- ном распределении соответствует эмпирическим корреляциям. Предполагается,
6.10. Многомерные распределения, корреляции и стохастические процессы 441 что подбор такого распределения к данным наблюдений проходит в несколько этапов; при этом используются методы для подбора одномерных распределений Джонсона. Подробное описание процедуры подбора, а также генерирования слу- чайных векторов из многомерного распределения Джонсона вы найдете в работе Стенфилда и др. [Stanfield et al., 1996]. Двухмерное распределение Безье Одномерные распределения Безье, описанные в разделе 6.9, расширены Вагнером и Вильсоном [Wagner and Wilson, 1995] до двухмерных случаев (J == 2). В их рабо- те описано программное обеспечение, позволяющее производить графическую интерактивную настройку подбираемого распределения, а также генерирование случайных векторов. Дополнительные результаты и методы, касающиеся двух- мерных распределений Безье, можно найти в другой работе Вагнера и Вильсона [Wagner and Wilson, 1996а]. Расширение распределений Безье до трехмерных случаев и далее Вагнер и Виль- сон [Wagner and Wilson, 1995] считают возможным, но очень сложным. 6.10.2 . Определение произвольных безусловных распределений и корреляций В разделе 6.10.1 рассматривалось несколько случаев, в которых можно было полу- чить полное многомерное распределение, чтобы смоделировать совместное пове- дение d случайных величин, вероятно, связанных между собой, которые все вместе составляют входной случайный вектор. В каждом из этих случаев подобранный член задействованного семейства многомерных распределений (нормальное, лог- нормальное распределения, а также распределения Джонсона или Безье) опре- делял корреляцию между парами составляющих случайных величин в векторе, а также их безусловные распределения. Он также предоставлял более общее и полное описание совместного изменения составляющих случайных величин, как оно реализовано в плотности совместного распределения вероятностей. Иногда требуются более широкие возможности. Например нам может понадо- биться предусмотреть для имитационной модели возможность корреляции между различными парами входных случайных величин, но не устанавливать для нее об- щее многомерное распределение, принуждающие все подобранные безусловные распределения стать членами одного семейства. Иными словами, мы хотим иметь возможность свободно определять произвольные одномерные распределения, чтобы отдельно моделировать входные случайные величины, как описывалось в разделах 6.1-6.9, а также оценивать корреляцию между ними независимо от их безусловных распределений. На самом деле нам может даже понадобиться, чтобы одни составляющие входные случайные величины были непрерывными, другие — дискретными, а третьи имели смешанный непрерывно-дискретный тип, и все же между ними должна быть предусмотрена корреляция. Для этого применяется очень простая и вполне очевидная процедура: к каждой из задействованных одномерных случайных переменных распределения подбира- ются по одному и отдельно от других. Затем по уравнению (6.9) находят оценки
442 Глава 6. Выбор входных распределений вероятностей предполагаемых корреляций между парами входных случайных величин. Эти случайные переменные собираются во входной вектор, который в своем составе имеет искомые одномерные безусловные распределения и искомую структуру корреляций. Следует отметить, что эта процедура не определяет или не «контролирует» полученное в результате совместное распределение случайного вектора целиком; на самом деле мы даже не будем знать, что собой представляет это совместное распределение. Итак, предложенная процедура обеспечивает более гибкие воз- можности для безусловных распределений и корреляций, но обладает меньшими возможностями управления. Еще одно предупреждение касается формы и пара- метров безусловных распределений, которые могут налагать ограничения на воз- можные корреляции [Whitt, 1976]. Определение такой ситуации кажется, по крайней мере теоретически, доволь- но простым, однако нам следует убедиться, что все, определяемое нами, может быть сгенерировано в ходе моделирования. Об этом пойдет речь в разделе 8.5.5; информация, представленная в нем, взята из работ Хилла и Рейлли [Hill and Reilly, 1994], а также Карио и Нельсона [Cario and Nelson, 1997]. 6.10.3 Определение стохастического процесса Как уже говорилось ранее, существуют ситуации, в которых последовательность входных случайных величин для конкретного явления моделируется как получен- ная из одного и того же (одномерного, безусловного) распределения, но может де- монстрировать некоторую автокорреляцию между величинами этой последова- тельности. Например, если величины {Хь Х2, ...} обозначают размеры последовательных сообщений, поступающих в центр связи, величины Х{ могут быть получены из од- ного и того же (стационарного) распределения, но Cor(X„ Xi+1) может быть нену- левой для интервалов I - 1, 2.р, где наибольший автокорреляционный интер- вал р определяется при моделировании. В этом случае X,- — одинаково распреде- ленные случайные величины, но они не являются независимыми, поэтому образу- ют стационарный стохастический процесс с возможной автокорреляцией в интер- вале р. Как уже говорилось ранее, такая автокорреляция во входном потоке может оказывать существенное влияние на результаты моделирования, на что указано в работе Ливни [Livny et al., 1993]. В этом разделе кратко описаны некоторые модели такой ситуации, а в разде- ле 8.5.6 речь пойдет о том, как можно генерировать реализации таких моделей в качестве входных данных при моделировании. Мы рассмотрим только случай, когда точки X, в процессе являются одномерными (скалярными) случайными ве- личинами, а не многомерными случайными векторами. AR- и ARMA-процессы При моделировании входных временных рядов можно использовать стандартные авторегрессионные модели (AutoRegressive, AR) или авторегрессионные модели со скользящим средним (AutoRegressive Moving Average, ARMA), разработанные
6.10. Многомерные распределения, корреляции и стохастические процессы 443 Боксом [Box et al., 1994] для анализа данных временных рядов. В литературе вы найдете различные способы оценки параметров этих процессов, одна из версий стационарной модели AR(p) со средним ц такова: х( =ц + -р)+ ф2(Х,_2 -р)+...+ ФР(Х,._Р -Р) + е4, (6.14) где е, — независимые и одинаково распределенные случайные величины со сред- ним 0 и дисперсией, выбранной для управления Var(Xj), а ф{ — константы, которые должны соответствовать условию, что имеют стационарное безусловное рас- пределение. В определении модели ARM А к вышеприведенной рекурсии добавля- ются взвешенные доли предыдущих значений е, [Box et al., 1994]. Чтобы подобрать такие модели к данным наблюдений, для оценки неизвестных параметров процесса используется линейная регрессия. Безусловное распределе- ние Xit как правило, ограничено нормальным распределением, что делает ограни- ченным непосредственное применение этой модели для входных данных, так как ее область бесконечна в обоих направлениях. AR-процессы используются в каче- стве базовых для моделей ARTA, которые будут рассматриваться дальше; упомя- нутые модели являются более гибкими и хорошо подходят для моделирования входных процессов. Гамма-процессы Гамма-процессы, разработанные Левисом [Lewis et al., 1989], дают частные распре- деления, имеющие гамма-распределение, а также автокорреляцию между точками в процессе. Для их создания используется так называемая операция авторегрес- сии, подобная по сути нормальным авторегрессионным процессам, описанным с помощью уравнения (6.14). К ним относится случай с экспоненциальными марги- налиями, известными как экспоненциальные авторегрессионные процессы (Expo- nential AutoRegressive, EAR). TES-процессы Меламед и Джагерман [Melamed, 1991; Jagerman and Melamed, 1992a,b) описали процессы преобразования и расширения выборки (Transform-Expand-Sample, TES), которые позволяют согласовать безусловное распределение подобранного про- цесса с эмпирическим безусловным распределением наблюдений, а также приб- лизительно подобрать структуру автокорреляции к эмпирическим наблюдениям (гарантируется соответствие автокорреляции с запаздыванием 1). Последователь- ность независимых и одинаково распределенных величин U(0, 1) преобразуется в процесс, где безусловным распределением все еще является U(0, 1), но в нем проявляется автокорреляция; в разделе 8.5.6 описано, как этот процесс в дальней- шем преобразуется в другой процесс с искомым неравномерным безусловным рас- пределением. Для определения процессов преобразования и расширения выбор- ки, представляющих данные наблюдений, применяется программное обеспечение, предложенное Меламедом с соавторами [Melamed et al., 1992]; для этого также по- требуется выполнять вручную некоторые интерактивные визуальные манипуля- ции и осуществлять последовательное взаимодействие до тех пор, пока представ- ление данных не будет признано адекватным.
444 Глава 6. Выбор входных распределений вероятностей ARTA-процессы Карио и Нельсон [Cario and Nelson, 1996] создали авторегрессионные процессы для моделирования любого распределения (AutoRegressive-To- Anything, ART А), ко- торые подобно процессам преобразования и расширения выборки используются для моделирования стационарного безусловного распределения и структуры ав- токорреляции. Процессы ART А могут точно соответствовать искомой структуре автокорреляции до указанного интервала р, а также искомому стационарному без- условному распределению. Кроме того, они определяются с помощью автоматизи- рованной процедуры, для выполнения которой не требуется никаких субъектив- ных интерактивных манипуляций. Чтобы получить процесс ART А, начинаем с нахождения стандартного стацио- нарного авторегрессионного процесса {ZJ со стационарным безусловным распре- делением N(0,1) ({ZJ именуется базовым процессом). Затем вычисляется оконча- тельный входной процесс моделирования как X. =F-1[<D(Zj)], (6.15) где F1 — это функция, обратная функции искомого стационарного безусловного распределения F, а Ф — функция распределения N(0, 1). Поскольку O(Z;) имеет распределение U(0, 1) (по основному результату, известному как интегральное преобразование вероятности; об этом говорится в работе Муда, Грейбилла и Боеса [Mood, Graybill, Boes, 1974, р. 202-203]), применение F4 к этой случайной величи- не с распределением U(0, 1) завершается получением величины с функцией рас- пределения F. Ясно, что безусловным распределением X, будет искомое F. Основная работа при определении искомого процесса ARTA сводится к нахож- дению структуры автокорреляции базового процесса {ZJ, чтобы в полученном окончательном процессе {XJ проявлялась искомая структура автокорреляции. Ка- рио и Нельсон [Cario and Nelson, 1996,1998] разработали для этого численные ме- тоды, а также пакет программного обеспечения для определения описываемого процесса и полной подгонки процесса ART А к данным наблюдений. 6.11. Выбор распределения при отсутствии данных При изучении посредством имитационного моделирования некоторых систем нет возможности собрать данные по интересующим случайным величинам, поэтому методы, рассмотренные в разделах 6.4-6.6, не могут применяться для выбора рас- пределений вероятностей. Например, если на текущий момент не существует ка- кой-либо разновидности, соответствующей изучаемой системе, тогда, естествен- но, сбор данных невозможен. С такой проблемой мы сталкиваемся и в отношении существующих систем, если количество требующихся распределений вероятно- сти велико, а время, отведенное на моделирование, не позволяет обеспечить сбор и анализ нужных данных. В этом разделе нами будут рассмотрены две эвристиче- ские процедуры выбора распределения при отсутствии данных, которые, как мы
6.11. Выбор распределения при отсутствии данных 445 выяснили, используются многими разработчиками, выполняющими имитацион- ное моделирование. Допустим, что некоторая случайная величина является непрерывной случай- ной переменной X. Эту случайную переменную также удобно представить как вре- мя, требующееся для выполнения конкретной задачи, например время, необходи- мое для ремонта неисправного оборудования. Первый этап использования любой из двух эвристических процедур состоит в определении интервала [a, Z>] (где а и b - вещественные числа, для которых а < Ъ), в который X будет попадать с вероят- ностью, близкой к 1; то есть Р(Х < а или X > Ь) » 0. Чтобы получить субъективные оценки а и Ъ, у специалистов запрашиваются соответственно наиболее оптими- стичные и наиболее пессимистичные оценки времени выполнения задачи. Когда субъективный интервал [a, i] будет установлен, на следующем этапе плотность распределения вероятностей должна быть помещена в интервал [a, i], который считается представлением X. При использовании метода треугольного распределения у экспертов также за- прашиваются их субъективные оценки наиболее вероятного периода времени, не- обходимого для выполнения задачи. Это наиболее вероятное значение времени с является модой распределения X. При заданных а, Ъ и с считается, что случайная величина имеет треугольное распределение X (см. раздел 6.2.2) в интервале [a, i] с модой с. График плотности треугольного распределения вероятностей показан на рис. 6.17. Алгоритм генерирования случайной величины с треугольным распре- делением приведен в разделе 8.3.15. С методом треугольного распределения связана одна трудность — для него тре- буются субъективные оценки абсолютных минимальных и максимальных воз- можных величин а и Ь, получение которых может быть проблематично (например, понадобится узнать, является величина b максимальной в течение следующих Змее, или на протяжении всего срока службы оборудования). В результате в неко- торых случаях нужно будет рассмотреть альтернативные треугольные распределе- ния, представленные Кифером и Водили [Keefer and Bodily, 1983], для которых требуются субъективные оценки квантилей 0,05 и 0,95, вместо оценок а и Ъ. Веро- ятно, легче оценить значение, превышаемое только в 5 % случаев, чем абсолютную максимальную величину Ь. Другой метод, с помощью которого функция плотности помещается в интервал [в, 6], основан на допущении, что случайная величина X имеет в этом интервале бета-распределение (см. раздел 6.2.2) с параметрами формы сц и а2. С одной сто- роны, этот метод предоставляет более гибкие возможности моделирования, по- скольку плотность бета-распределения может принимать разнообразные формы (см. рис. 6.11). С другой стороны, не совсем понятно, как выбрать значения пара- метров cq и а2, чтобы полностью определить распределение. Существует несколь- ко возможных вариантов. Если вы готовы допустить, что X с одинаковой вероят- ностью может принять любое значение между а и Ъ, выберите cq “ “ 1, в ре- зультате чего будет получено распределение U(a, Ъ), как на рис. 6.11. (Эту модель можно использовать, если о случайной величине практически ничего не известно, кроме ее области [a, i].) Более подходящим нам кажется следующий вариант. Допустим, функция плотности X скошена вправо. (Опыт работы с реальными
446 Глава 6. Выбор входных распределений вероятностей данными показывает, что у функций плотности, соответствующих времени вы- полнения какой-либо задачи, часто бывает подобная форма.) Такая форма плот- ности соответствует отношению а2 > cq > 1 в бета-распределении (см. рис. 6.11). Среднее р и мода с такого бета-распределения задаются формулами а<(Ь-а) (а. -1)(Ь-а) ц = а + ——--- и с = а + at + а2 0ц + а2 -2 При наличии субъективных оценок рис эти уравнения можно решить, чтобы получить следующие оценки и а2: (p-a)(2c-a-fe) 1 (c-p)(fe-a) 2 p-а ' Обратите внимание: р должно быть больше с, для того чтобы плотность была скошена вправо; если р < с, она будет скошена влево. Кифер и Водили [Keefer and Bodily, 1983] предлагают альтернативный способ определения параметров бета- распределения. Алгоритм генерирования случайной величины с бета-распределе- нием вы найдете в разделе 8.3.8. Иногда треугольное распределение или бета-распределение используется для моделирования источника случайности, даже когда есть возможность собрать и проанализировать необходимые данные. Это делается в том случае, если аналитик не хочет заниматься сбором данных. В следующем примере показано, как неоправ- данное использование треугольного распределения (или бета-распределения) мо- жет привести к получению ошибочных результатов. Пример 6.22. Рассмотрим систему массового обслуживания с одним устройством об- служивания, экспоненциально распределенными интервалами времен между поступле- ниями со средним значением 1 и логарифмически нормально распределенным време- нем обслуживания со средним 0,9 и дисперсией 1,39 (ц - -0,605 ист2-!) (рис. 6.57). В действительности аналитику неизвестно распределение времени обслуживания, и он сначала пытается приближенно представить его с помощью треугольного распределе- ния с а - 0, с - 0,2 и b - - 1,97 (квантиль 0,9 для логнормального распределения). Обра- тите внимание, что а и с были угаданы правильно. Используя формулу для статической средней задержки в очереди d в системе массового обслуживания М/G/l, представлен- ной в приложении 1Б, можно показать, что для логнормального распределения d - -11,02, а для треугольного распределения d -1,30. Следовательно, приближенное пред- ставление логнормального распределения через треугольное распределение приводит к погрешности 88,2 % (см. табл. 6.19 и рис. 6.57). Допустим, что аналитик попытается приближенно представить неизвестное логнор- мальное распределение с помощью треугольного распределения с а - 0, с - 0,2 и сред- ним 0,9 (правильное значение), в итоге b - 2,5. (Среднее треугольного распределения равно (а + b + с)/3.) В этом случае d - 5,66 и погрешность все еще составляет 48,7 %. Наконец, предположим, что аналитик попытается приближенно представить логнор- мальное распределение с помощью бета-распределения а - 0, b - 2,5, ц — 0,9 и с - 0,2 (все параметры имеют правильные значения), в результате а, - 1,08 и а2 - 1,92. В этом слу- чае d - 5,85, а погрешность составляет 46,7 %.
6.12. Модели процессов поступления требований 447 Рис. 6.57. Приближенное представление логнормального распределения с помощью треугольного распределения и бета-распределения Таблица 6.19. Приближенное представление логнормального распределения с помощью треугольного распределения и бета-распределения Распределение времени обслуживания Статическая средняя задержка в очереди d Погрешность, % LN (- 0,605; 1) 11,02 0 traing (0; 1,97; 0,2) 1,30 88,2 traing (0; 2,5; 0,2) 5,66 48,7 beta 2,5 (1,08; 1,92) 5,85 46,9 г Итак, мы убедились, что приближенное представление неизвестного распределения с помощью треугольного распределения или бета-распределения приводит к серьезной погрешности в результатах моделирования. Следовательно, крайне важно собрать дан- .. ные по случайной переменной, если это возможно. 6.12. Модели процессов поступления требований При моделировании часто приходится генерировать последовательность случай- ных точек во времени 0 = t0 51, ..., в которой i-e событие некоторого типа про- исходит в момент времени t( (i «* 1,2,...), а распределение времени возникновения событий {tj соответствует какому-либо заданному виду. Пусть N(t) - max{i: t, 5 t} будет числом событий, возникающих в момент времени/ или до этого момента для 0. Стохастический процесс {N(f), 0} называется процессом поступления, так как в рассматриваемых случаях интересующими нас событиями обычно являются
448 Глава 6. Выбор входных распределений вероятностей поступления требований в систему обслуживания. Далее Л,- -1( - (где i -1,2,...) называется временем между поступлениями (г - 1)-го и i-ro требований. В разделе 6.12.1 рассматривается пуассоновский процесс, который представля- ет процесс поступления, в котором величины Л; являются независимыми и одина- ково экспоненциально распределенными величинами. Пуассоновский процесс - это, вероятно, наиболее часто применяемая модель процесса поступления тре- бований в систему массового обслуживания. В разделе 6.12.2 речь идет о неста- ционарном пуассоновском процессе, который обычно используется как модель процесса поступления требований в систему, где интенсивность поступления из- меняется со временем. Наконец, в разделе 6.12.3 описан подход к моделированию процесса поступления, в котором каждое поступление в действительности являет- ся поступлением группы требований. Информацию по вопросам, изложенным в разделе 6.12, можно найти в работе Цинлара pQinlar, 1975, chap. 4]. 6.12.1. Пуассоновские процессы В этом разделе мы определим пуассоновский процесс, рассмотрим некоторые его свойства, а также объясним, почему время между поступлениями в большинстве реальных систем подобно независимым и одинаково распределенным случайным величинам. Стохастический процесс t к 0} считается пуассоновским, если характери- зуется определенными свойствами. 1. Требования поступают по одному в данный момент времени. 2. N(t + s) - N(t) (число поступлений требований в интервале времени (t, t + s]) не зависит от {N(u), Q <u<,t}. 3. Распределение N(t + s') - N(t) не зависит от t для всех t, s k 0. Свойства 1 и 2 являются характеристиками многих реальных процессов поступле- ния требований. Свойство 1 не сохраняется, если требования прибывают груп- пами (см. раздел 6.12.3). Согласно свойству 2, число поступлений в интервале (t, t + s] не зависит от числа поступлений в предыдущем интервале [0, t], а также от моментов времени, когда поступления происходят. Это свойство нарушается, ес- ли, например, из-за большого количества поступлений в интервале [0, t] некото- рые требования, прибывшие в интервал (t, t + s], не присоединились к очереди, то есть сразу же покинули систему, не дожидаясь обслуживания, поскольку система в момент их поступления была очень загружена. Свойство 3 будет нарушаться во многих реальных процессах поступления, так как оно предполагает, что интенсив- ность поступления требований не зависит от времени дня и т. п. Например, нас ин- тересует относительно короткий период работы системы, скажем, 1 или 2-часовой период работы при максимальной нагрузке системы. Установлено, что в большин- стве систем (конечно, не во всех) интенсивность поступлений в этот интервал бу- дет практически постоянной, а пуассоновский процесс может послужить хорошей моделью процесса в течение такого интервала (см. теорему 6.2 и пример 6.4). Следующая теорема, доказанная Цинларом [Qinlar, 1975, р. 74-76], позволяет понять, почему пуассоновский процесс получил свое название.
6.12. Модели процессов поступления требований 449 / Теорема 6.1. Если 10} — пуассоновский процесс, то количество поступлений в любой интервал времени, продолжительность которого равна s, является случайной величиной с распределением Пуассона, имеющим параметр Xs (где X — положительное вещественное число), то есть P[N(t+ s) - N(f) = k]= e для k - 0,1, 2,... и t,s > 0. u й jСледовательно, E[N(s)] - Xs (см. раздел 6.2.3), и в частности £[М(1)] - X. Зна- чит, 1 — ожидаемое число поступлений требований в любой интервал времени, Продолжительность которого равна 1. Величина X — это интенсивность процесса. Как видим, время между поступлениями для процесса Пуассона представлено независимыми и одинаково экспоненциально распределенными случайными ве- личинами [Qinlar, 1975, р. 79-80]. ,, Теорема 6.2. Если t £ 0} — пуассоновский процесс с интенсивностью X, тогда соот- ветствующие ему интервалы времени между поступлениями требований At, А2,... явля- , ются независимыми и одинаково экспоненциально распределенными случайными ве- личинами со средним 1/Х. , Полученный результат, а также приведенная выше информация позволяют по- нять, почему интервалы времени между поступлениями в течение ограниченного периода часто приближенно представлены независимыми и одинаково экспонен- ^иально распределенными случайными величинами. Например, вспомним, что время между прибытиями машин к банку в примере 6.4 в течение 90-минутного периода было приближенно распределено по экспоненциальному закону. Обратная теорема 6.2 также справедлива, то есть если время между поступле- виями требований At, А2,... для процесса поступления t £ 0} представлено независимыми и одинаково экспоненциально распределенными случайными ве- личинами со средним 1/Х, тогда t £ 0} — это пуассоновский процесс с ин- тенсивностью X [Qinlar, 1975, р. 80]. ( • $.12.2. Нестационарный пуассоновский процесс Пусть X(t) будет интенсивностью поступления требований в некоторую систему в момент времени t. (Дальше вы найдете более подробную информацию о значе- нии X(t).) Если требования прибывают в систему в соответствии с пуассоновским процессом с постоянной интенсивностью X, то X(t) - X для всех t £ 0. Однако для большинства реальных систем Х(0 в действительности является функцией t. На- пример, интенсивность прибытия клиентов в ресторан быстрого питания будет выше в полуденные часы пик, чем в середине второй половины дня. Движение на автомагистрали будет более интенсивным утром и вечером в часы пик. Если ин- тенсивность прибытия X(t) в действительности изменяется со временем, тогда ин- тервалы времени между поступлениями требований Аь А2,... не являются одина- ково распределенными, поэтому не следует подбирать отдельное распределение вероятностей к величинам А; с помощью методов, описанных в разделах 6.4-6.6. В данном разделе мы рассмотрим наиболее часто используемую модель процессов поступления, в которых интенсивность поступления изменяется во времени.
450 Глава 6. Выбор входных распределений вероятностей Стохастический процесс {N(t), t £ 0} считается нестационарным пуассонов- ским процессом при определенных свойствах. 1 .Требования поступают по одному в данный момент времени. 2 .N(t + s) - N(t) не зависит от {N(u), 0 <u<t}. Следовательно, для нестационарного пуассоновского процесса клиенты все еще должны поступать по одному в данный момент времени, и число поступлений в непересекающиеся интервалы времени должно быть независимым, но на этот раз допускается, чтобы интенсивность поступления X(t) была функцией времени. Пусть A(t) ~ £[N(t)] для всех t 0. Если A(t) может дифференцироваться для отдельного значения t, то формально ЦГ)Дл(0. at Интуитивно, X,(t) будет больше в интервалах, для которых ожидаемое число прибытий велико. Величины A(t) и X(t) называются соответственно математиче- ским ожиданием и функцией интенсивности для нестационарного пуассоновского процесса. Из следующей теоремы видно, что число поступлений в интервале (t, t + s] для нестационарного пуассоновского процесса представлено случайной величиной с распределением Пуассона, параметры которого зависят как от t, так и от s. Теорема 6.3. Если 12 0} — нестационарный пуассоновский процесс с непрерыв- ным математическим ожиданием Л(0, то P[N(t+s)-N(f) = Л[ = е для k - 0,1, 2,... и t,s > 0, где b(t, s) - K(t + s) - A(t) - f+s X(y)Jy, последнее уравнение сохраняется, если dA(t)/dt ограничено интервалом [t, t + s] и если dK(t)/dt существует и является непрерывным почти для всего конечного множества точек в интервале [t, t + s] (см. задачу 6.25). До сих пор мы еще не рассмотрели вопрос о том, как определить оценки X.(t), или Л(Г), по набору данных наблюдений, касающихся интересующего нас процес- са поступления. В следующем примере показан эвристический, но практический подход, а после примера дано краткое описание остальных походов. Пример 6.23. Для отдела ксерографического копирования была разработана имитаци- онная модель; при этом собраны данные по времени прибытия клиентов между 11.00 и 13.00 в течение восьми произвольных дней. По характеристикам прибытия клиентовус- тановлено, что в этом случае применимы свойства 1 и 2 нестационарного пуассоновско- го процесса, кроме того, X(t) изменялась в течение 2-часового интервала. Чтобы полу- чить оценки >.(£), 2-часовой интервал был поделен на 12 следующих подынтервалов: [11.00,11.10), [11.10,11.20).[12.40,12.50), [12.50, 13.00). Для каждого дня определено число прибытий в каждый подынтервал. Затем вычислено среднее число прибытий в каждый подынтервал в течение 8 дней. Эти 12 средних значе- ний являются оценками ожидаемого числа прибытий в соответствующий подынтервал. Наконец, среднее число прибытий в подынтервал было поделено на продолжительность подынтервала, то есть на 10 мин, для того чтобы получить оценку интенсивности прибы- тия для подынтервала. График оценки интенсивности прибытия 1(0 клиентов в минуту
6.12. Модели процессов поступления требований 451 .. изображен на рис. 6.58. Обратите внимание, оценка интенсивности прибытия сущест- венно изменяется в течение 2-часового периода. Может возникнуть вопрос, как определилась продолжительность подынтервалов. В дей- ‘‘ ствительности таким образом мы вычислили оценки 1(0 для подынтервалов продолжи- 4 тельностыо 5,10 и 15 мин. Оценки 1(0, полученные на основании подынтервалов про- ' должительностью 5 мин, были отклонены, поскольку оказалось, что соответствующий ? график £(t) слишком изломан; то есть подынтервал продолжительностью 5 мин был слишком мал. Мы также не выбрали оценки 1(0, полученные на основании подынтерва- лов продолжительностью 15 мин, поскольку соответствующий график оказался слиш- ком «ровным», что означало потерю информации об истинном характере 1(0. В целом Проблема выбора продолжительности подынтервалов подобна проблеме выбора шири- ны интервалов для гистограммы (см. раздел 6.4.2). Рис. 6.58. График оценки функции интенсивности £(0, клиентов в минуту, для процесса прибытия в отдел ксерокопирования с 11.00 по 13.00 Кусочно-постоянный метод нахождения 1(0 в примере 6.23 достаточно прост И Предоставляет широкие возможности, однако для него требуется не вполне про- извольное определение границ и ширины временных интервалов с постоянной Интенсивностью. Были разработаны и другие методы определения и оценки 1(0 или, альтернативно, А(0. ♦ Несколькими авторами [Lewis and Shedler, 1976; Klein and Roberts, 1984; Kao and Chang, 1988] были предложены процедуры, в которых оценка функции интенсивности 1(0 определялась как обобщение результата, полученного нами
452 Глава 6. Выбор входных распределений вероятностей в примере 6.23, с точки зрения допущения кусочно-линейных или кусочно- полиномиальных форм. ♦ Лимис [Leemis, 1991] разработал интуитивный и простой непараметрический метод кусочно-линейной оценки A(t), в котором точки прерывания находятся по зарегистрированному времени поступления при наложении нескольких реплицированных наблюдений процесса. Он показал, что эта оценка стремит- ся с вероятностью 1 к истинной функции интенсивности по мере увеличения количества данных наблюдений, а также получил доверительную область во- круг истинного A(t), которая может понадобиться при анализе чувствитель- ности входных параметров. Поскольку оценка A(t) — кусочно-линейная, гене- рирование наблюдений (см. раздел 8.6.2) является простым и эффективным. + Отличающийся подход к определению и оценке функции интенсивности X(t) состоит в допущении, что у нее есть особая функциональная форма с вполне общей структурой и достаточным числом параметров, что позволяет хорошо ее подогнать к данным наблюдений. Функциональная форма должна пре- дусматривать тренды и циклы, а также обеспечивать точные статистические методы для оценки параметров, например методы максимального правдоподо- бия. Такие функции вместе с программным обеспечением для оценки и гене- рации разрабатывались Ли [Lee et al., 1991], Джонсоном [Johnson et al., 1994a, 1994b], Кулем [Kuhl et al., 1997a,b]. 6.12.3. Групповые поступления В некоторых реальных системах требования поступают группами, поэтому в них свойство 1 пуассоновского процесса и нестационарного пуассоновского процесса нарушается. Например, люди, прибывающие на спортивные соревнования или в кафетерий, часто появляются группами. В этом разделе мы рассмотрим, как можно смоделировать такой процесс. Пусть N(t) будет числом групп, состоящих из отдельных требований, которые поступили к моменту времени t. Применив методы, рассмотренные ранее в этой главе ко времени поступления последовательно появляющихся групп, можно раз- работать модель для процесса {N(t), t £ 0}. Например, если время между поступле- ниями групп приближенно представлено независимыми и одинаково экспоненци- ально распределенными случайными величинами, процесс {N(t), t S 0} можно моделировать как пуассоновский. Затем подбирается дискретное распределение к размерам последовательных групп; размеры групп будут положительными целы- ми числами. Итак, для исходного процесса поступления допускается, что группы требований поступают в соответствии с процессом поступления {A(t), t S 0} и что число требований в каждой группе является случайной величиной с подобранным к ней дискретным распределением. Вышеприведенные неформальные рассуждения можно сделать более точными. Если X(t) — это общее число отдельных требований, которые поступят в течение времени t, а В, — число требований в i-й группе, то X(t) задается как NO) X(t) = X для 0- i=»l
6.13. Оценка однородности различных наборов данных 453 Если допускается, что В; — независимые и одинаково распределенные случайные величины, которые также не зависят от {N(t), t £ 0}, и если {N(t), t S 0} — пуассонов- ский процесс, тогда стохастический процесс {X(t), t £ 0} считается сложным пуас- соновским процессом. 6.13. Оценка однородности различных наборов данных Иногда аналитик независимо собирает k наборов данных наблюдений относительно случайного явления, и ему нужно определить, являются ли эти наборы данных од- нородными и можно ли их объединять. Например, может понадобиться устано- вить, являются ли данные о времени обслуживания клиентов в банке, собранные в разные дни, однородными. Если да, то эти данные о времени обслуживания, по- лученные в разные дни, можно объединить и использовать комбинированную вы- борку, чтобы определить распределение времени обслуживания. В противном случае понадобится установить несколько распределений времени обслуживания. В этом разделе рассматривается гипотеза Крускал-Уаллиса относительно одно- родности данных. Это непараметрический критерий, поскольку не делается ника- ких допущений относительно распределений данных. Допустим, что у нас есть k независимых выборок, объемы которых, вероятно, отличаются, и что сами по себе выборки независимы. Обозначим i-ю выборку объе- мом и, как Xilt Ха,..., Х^ для i = 1,2,..., k, а общее число наблюдений — как п, тогда г 1=1 Затем проверим нулевую гипотезу Но: все функции распределения совокупностей одинаковы, относительно альтернативной гипотезы Hf по крайней мере одна из совокупностей стремится дать больший объем данных наблюдений, чем одна из остальных совокупностей. Для того чтобы создать статистику Крускал-Уаллиса, присвоим ранг 1 наи- меньшему из п наблюдений, ранг 2 — следующему по величине наблюдению и так далее до наибольшего из п наблюдений, которому присваивается ранг k. Пусть R(X^ представляет ранг, присвоенный X# а Д- будет суммой рангов, присвоенных i-й выборке, то есть Д.= £/?(Х#)для£-1,2.....k. Статистика, лежащая в основе критерия Крускал-Уаллиса, определяется как т 12 -Д Д2 .. Т = - --3(П+1). п(п+1)м п{ Опровергаем нулевую гипотезу Но на уровне а, если Т > i-«> где X2*-i. t-а — верхнее критическое значение 1 - а для распределения «хи-квадрат» с k - 1 степе- нями свободы. Выражение для вычисления Т, приведенное выше, допускает, что
454 Глава 6. Выбор входных распределений вероятностей среди наблюдений нет двух таких, которые были бы равны. Если это условие не выполняется, тогда для вычисления Т следует использовать другое выражение [Conover, 1980, р. 229-231]. Пример 6.24. Чтобы определить необходимое количество разгрузочного оборудования,- разработана имитационная модель работы центра службы ночной авиадоставки. В моде- ли учтен тот факт, что самолеты могут прибывать раньше или позже назначенного вре- мени. Получены данные о действительном времени прибытия самолетов двух разных рейсов (самолеты этих рейсов вылетали из двух различных городов) в течение произ- вольных 57 дней. (Самолеты каждого рейса прибывают 1 раз в день, 5 дней в неделю.) Пусть Ху равно времени прибытия по расписанию минус действительное время прибы- тия (в минутах) самолета рейса i в день j для i - 1,2 nj - 1,2,..., 57. Если Ху < 0, значит, самолет рейса i в день j опоздал. Нам надо выполнить проверку по критерию Крускал- Уаллиса, чтобы установить являются ли величины Хц и величины Х% однородными, то есть одинаковы ли модели прибытия самолетов двух рейсов. Мы вычислили статистику, лежащую в основе критерия Крускал-Уаллиса, и получили Г- 4,317, что больше крити- ческого значения 2,706 - х21;0>90. Следовательно, мы не принимаем нулевую гипотезу на уровне а — 0,10, и модели прибытия самолетов двух рейсов должны разрабатываться от- дельно. Зарегистрированные отличия в большей степени определяются различными по- годными условиями в городах, откуда вылетают самолеты. Приложение 6А Таблицы оценок максимального правдоподобия для гамма- и бета-распределений Таблица 6.20. а как функция Т для гамма-распределения т & Т & Т а Т & 0,01 0,010 1,40 0,827 5,00 2,655 13,00 6,662 0,02 0,019 1,50 0,879 5,20 2,755 13,50 6,912 0,03 0,027 1,60 0,931 5,40 2,856 14,00 7,163 0,04 0,036 1,70 0,983 5,60 2,956 14,50 7,413 0,05 0,044 1,80 1,035 5,80 3,057 15,00 7,663 0,06 0,052 1,90 1,086 6,00 3,157 15,50 7,913 0,07 0,060 2,00 1,138 6,20 3,257 16,00 8,163 0,08 0,068 2,10 1,189 6,40 3,357 16,50 8,413 0,09 0,076 2,20 1,240 6,60 3,458 17,00 8,663 0,10 0,083 2,30 1,291 6,80 3,558 17,50 8,913 0,11 0,090 2,40 1,342 7,00 3,658 18,00 9,163 0,12 0,098 2,50 1,393 7,20 •3,759 18,50 9,414 0,13 0,105 2,60 1,444 7,40 3,859 19,00 9,664 0,14 0,112 2,70 1,495 7,60 3,959 19,50 9,914 0,15 0,119 2,80 1,546 7,80 4,059 20,00 10,164 0,16 0,126 2,90 1,596 8,00 4,159 20,50 10,414 0,17 0,133 3,00 1,647 8,20 4,260 21,00 10,664 0,18 0,140 3,10 1,698 8,40 4,360 21,50 10,914 0,19 0,147 3,20 1,748 8,60 4,460 22,00 11,164 0,20 0,153 3,30 1,799 8,80 4,560 22,50 11,414
Приложение 6А 455 0.30 0,218 3,40 1,849 9,00 4,660 23,00 11,664 0,40 0,279 3,50 1,900 9,20 4,760 23,50 11,914 0,50 0,338 3,60 1,950 9,40 4,860 24,00 12,164 0,60 0,396 3,70 2,001 9,60 4,961 24,50 12,414 0,70 0,452 3,80 2,051 9,80 5,061 25,00 12,664 0,80 0,507 3,90 2,101 10,00 5,161 30,00 15,165 0,90 0,562 4,00 2,152 10,50 5,411 35,00 17,665 1,00 0,616 4,20 2,253 11,00 5,661 40,00 20,165 1,10 0,669 4,40 2,353 11,50 5,912 45,00 22,665 1,20 0,722 4,60 2,454 12,00 6,162 50,00 25,166 1,30 0,775 4,80 2,554 12,50 6,412 Таблица 6.21. at и a2 как функции Gt и G2 для бета-распределения Если G{ G2, используйте первую строку обозначений; если G2 Gt, используйте вторую строку обозначений Gi Сг “2 Q “2 Ь “2 G2 Q “2 0,01 0,01 0,112 0,112 0,15 035 0,405 0363 0,01 0,05 0,126 0,157 0,15 0,40 0,432 0,653 0,01 0,10 0,135 0,192 0,15 045 0464 0,762 0,01 0,15 0,141 0323 0,15 030 0302 0,903 0,01 0,20 0,147 0354 0,15 035 0350 1,090 0,01 0,25 0,152 0385 0,15 0,60 0,612 1353 0,01 озо 0,157 0318 0,15 0,65 0,701 1,752 0,01 035 0,163 0354 0,15 0,70 0342 2,429 0,01 0,40 0,168 0395 0,15 0,75 1,111 3310 0,01 0,45 0,173 0Д41 0,15 0,80 1384 8,026 0,01 озо 0,179 0,495 0,15 0,84 7,908 42,014 0,01 035 0,185 0359 0,20 0,20 0395 0395 0,01 0,60 0,192 0,639 030 035 0,424 0,461 0,01 0,65 0300 0,741 0,20 030 0,456 0337 0,01 0,70 озю 0377 030 035 0491 0,626 0,01 0,75 0321 1,072 0,20 0,40 0331 0,735 0,01 0,80 0337 1376 030 0,45 0379 0373 0,01 035 0359 1320 030 0,50 0,640 1,057 0,01 0,90 0399 3,162 0,20 035 0,720 1314 0,01 035 0,407 8332 0,20 0,60 0,834 1,701 0,01 038 0350 42,126 0,20 0,65 1,016 2352 0,05 0,05 0,180 0,180 030 0,70 1367 3,669 0,05 0,10 0,195 0323 0,20 0,75 2388 7,654 0,05 0,15 0307 0363 030 0,79 10407 39,649 продолжение #
456 Глава 6. Выбор входных распределений вероятностей Таблица 6.21 (продолжение) <4 “1 «2 «1 «2 Gj «2 “1 g2 «2 О» 0,05 0,20 0317 0,302 035 035 0,500 0,500 0,05 0,25 0328 0343 035 озо 0343 0388 0,05 030 0338 0387 035 035 0392 0,695 0,05 035 0348 0,437 035 0,40 0,651 0,830 0,05 0,40 0359 0,494 035 0,45 0,724 1,007 0,05 0,45 0371 0360 035 030 0,822 1354 0,05 озо 0384 0,640 035 035 0,962 1,624 0,05 035 0399 0,739 035 0,60 1,186 2343 0,05 0,60 0317 0,867 035 0,65 1,620 3,486 0,05 0,65 0338 1,037 035 0,70 2389 7330 0,05 0,70 0366 1380 035 0,74 12305 37329 0,05 0,75 ОДОЗ 1,655 030 030 0,647 0,647 0,05 0,80 0,461 2305 озо 035 0,717 0,777 0,05 035 0366 3,682 030 0,40 0,804 0,947 0,05 0,90 0,849 8,130 030 0,45 0,920 1,182 0,05 0,94 2398 45301 030 озо 1,086 1332 0,10 0,10 0345 0345 030 035 1352 2,115 0,10 0,15 0362 0391 030 0,60 1369 3380 0,10 озо 0378 0337 030 0,65 3387 6,779 0,10 035 0394 0,386 0,30 0,69 15,402 34,780 0,10 озо 0310 0,441 035 035 0379 0379 0,10 035 0327 озоз 035 0,40 1,013 1,101 0,10 0,40 0345 0376 035 0,45 1305 1,430 0,10 0,45 0365 0,663 035 030 1314 1375 0,10 озо 0389 0,770 035 035 2,115 3,060 0,10 035 0,417 0,909 035 0,60 3383 6313 0,10 озо 0,451 1,093 035 0,64 17397 32315 0,10 0,65 0,497 1356 0,40 0,40 1,320 1320 0,10 0,70 0360 1,756 0,40 0,45 1,673 1,827 0,10 0,75 0,660 2,443 0,40 030 2358 2332 0,10 0,80 0,846 3,864 0,40 035 4,376 5,837 0,10 035 1374 8377 0,40 039 20391 29341 0,10 0,89 5,406 44,239 0,45 0,45 2397 2397 0,15 0,15 0314 0,314 0,45 озо 4,867 5354 0,15 0,20 0335 0367 0,45 034 22,882 27359 0,15 035 0357 0,424 0,49 0,49 12,620 12,620 0,15 озо 0,380 0,489 0,49 030 24373 25371
Задачи 457 Задачи 6.1. Предположим, что рабочий должен установить 98 заклепок на правом крыле собираемого самолета. Если случайная величина Т — это общее время, тре- бующееся для сборки одного самолета, каким будет аппроксимирующее рас- пределение 7? 6.2. Докажите, что примечание 2 в табл. 6.3 верно для распределения Вейбулла. 6.3. Докажите, что примечание 2 в табл. 6.3 верно для распределения Пирсона ти- па VI. 6.4. Рассмотрим четырехпараметрическое распределение Пирсона типа VI с па- раметрами формы а, и аг, масштабным параметром ₽ и параметром положе- ния у. Если а) = 1,у=;Р”С>0, то в результате получаем плотность /(х) = а2х'(а2+1>с“2 длях>с. Это функция плотности распределения Парето с параметрами с и а2, обозна- чаемого как Pareto(c, а2). Покажите, что X - Pareto(c, а2) тогда и только то- гда, когда У ~ In X- ехро(1п с, 1/а2) экспоненциальное распределение с пара- метром положения In с и масштабным параметром l/ct2. 6.5. Для эмпирического распределения, заданного функцией F(x) в разделе 6.2.4, поясните преимущества определения E(X(i)) - i/n для i — 1,2,..., п, которое кажется интуитивным. Как бы вы определили F(x) д ля 0 £х<.Хт в этом случае? 6.6. Вычислите математическое ожидание эмпирического распределения, задан- ного F(x) в разделе 6.2.4. 6.7. Докажите, что гистограмма (раздел 6.4.2) является несмещенной оценкой (неизвестной) вероятностной меры для дискретного распределения; то есть покажите, что E(hj) - p(Xj) для всех). Подсказка: для заданного j и i -1,2,..., п определите У _ (1 если Xf = х}; 1 [0 в противном случае. 6.8. Предположим, что у гистограммы данных наблюдений есть несколько мод (см. рис. 6.31), но мы не можем разбить данные на естественные группы так, чтобы всем группам подходили разные распределения вероятностей. Опи- шите альтернативный метод моделирования этих данных. 6.9. Поясните, почему оценка максимального правдоподобия р =» l/[X(n) + 1] яв- ляется интуитивной для геометрического распределения с параметром р. 6.10. Выведите формулы оценок максимального правдоподобия указанных пара- метров для каждого из следующих распределений. Допустим, что независи- мые и одинаково распределенные данные Хь Х2,...»Хп происходят из рассмат- риваемого распределения: a) U(0, b), оценка максимального правдоподобия для Ь; б) U(a, 0), оценка максимального правдоподобия для а; в) U(a, b), совместные оценки максимального правдоподобия для а и Ь;
458 Глава 6. Выбор входных распределений вероятностей г) N(p, о2), совместные оценки максимального правдоподобия для р. и о; д) LN(p, ст2), совместные оценки максимального правдоподобия для цист; е) Bemoulli(p), оценка максимального правдоподобия для р; ж) DU(i, f), совместные оценки максимального правдоподобия для i vtj; з) bin(t, р), оценка максимального правдоподобия для р, допускается, что параметр t известен; и) negbin(s, р), оценка максимального правдоподобия для р, предполагает- ся, что параметр s известен; к) U(0 - 0,5; 0 + 0,5) оценка максимального правдоподобия для 0. 6.11. Для распределения Пуассона с параметром X выведите приблизительный 100(1 - а)-процентный доверительный интервал для X при наличии данных Xit Х2, Х„. Используйте асимптотическую нормальность оценки макси- мального правдоподобия X 6.12. Возьмем смещенное (двухпараметрическое) экспоненциальное распределе- ние, функция плотности которого для р > 0 и любого вещественного числа у Р /(*) = .0 если х > у; в противном случае. При наличии выборки Хь Х2,..., Хп независимых и одинаково распределен- ных величин, полученной из этого распределения, найдите формулы для со- вместных оценок у и Р Подсказка: у не может быть больше ни одной из вели- чин Х^ 6.13. Для частотного сравнения покажите, что rjt заданное уравнением (6.4), в дей- ствительности является ожидаемой долей п наблюдений, которые попадают в j-й интервал, если подобранное распределение является истинным. 6.14. Почему для графика Q-Q неудобно использовать функцию эмпирического распределения Fn(x), для которой F„(X„) - 1? 6.15. С какой трудностью мы сталкиваемся, пытаясь определить график Q-Q для дискретного распределения? 6.16. Допустим, что функция истинного распределения F(x) и функция подобран- ного распределения F(x) одинаковы. Для какого распределения F(х) графи- ки Q-Q и Р-Р будут одинаковыми, если выборка имеет большой объем и? 6.17. Предположим, что случайная величина Mj является числом п величин Хь ко- торые попадут в j-й интервал [а^, а]) для проверки по критерию «хи-квад- рат», если подобранное распределение является истинным. Определите рас- пределение и среднее М}. 6.18. Объясните, почему Калленберг, Оостерхофф и Шривер [Kallenberg, Oos- terhoff and Schriever, 1985] установили, что мощность критерия «хи-квадрат» в определенных случаях была больше, когда значения пр} были меньшими на хвостах распределений, а не тогда, когда все они были приблизительно оди- наковыми.
Задачи 459 6.19. Пусть F„(x) будет функцией эмпирического распределения, используемой для проверки по критерию Колмогорова-Смирнова. Покажите, что Fn(x) -» F(x) при п -> оо (с вероятностью 1) для всех х, где F(x) — это функция истин- ного распределения. 6.20. Допустим, что данные, представленные в табл. 6.22, являются независимы- ми наблюдениями относительно времени обслуживания в системе массового обслуживания с одним устройством. Используйте все подходящие методы, описанные в разделах 6.4-6.6, чтобы построить гипотезу относительно фор- мы распределения, определить оценки его параметра (параметров) с помо- щью оценок максимального правдоподобия и определить степень согласия. Таблица 6.22. Данные о времени обслуживания, мин 0,02 4,04 037 435 822 3,14 2,19 139 435 2,66 239 1,04 135 1,65 5,02 4,75 0,99 4,06 327 2,13 1,52 3,04 16Д4 233 5,03 2,66 234 3,67 3,45 6,71 4,45 1131 2,14 1,58 5,49 1,85 132 3,78 237 723 3,19 0,71 озз 228 7,66 139 3,43 6,88 3,46 439 230 6,03 1029 3,07 7,12 3,26 439 334 3,41 4,73 738 0,94 832 7,78 3,79 1,16 5,00 0,86 7,02 4,95 2,66 6,03 431 4,19 5,08 3,29 3,57 337 2,80 2,82 1,03 5,16 335 5,83 5,97 436 4,05 5,79 234 0,72 2,10 7,15 6,64 136 10,79 0,89 2,82 5,08 2,12 031 3,23 злз 347 2,07 2,93 4,46 2,08 433 3,09 034 5,12 6,36 1,15 6.21. Предположим, что данные, представленные в табл. 6.23, являются независи- мыми наблюдениями относительно отклонений от требуемого диаметра ша- рикоподшипников, изготовляемых на новом высокоскоростном станке. Ис- пользуйте все подходящие методы, описанные в разделах 6.4-6.6, для того чтобы построить гипотезу относительно формы распределения, определить оценки его параметра (параметров) с помощью оценок максимального прав- доподобия и степень согласия. 6.22. Допустим, что число товаров, на которые в течение дня поступает запрос, яв- ляются независимыми и одинаково распределенными величинами, и что дан- ные, приведенные в табл. 6.24, отражают размеры спроса за 76 произвольных дней. Используйте все подходящие методы, описанные в разделах 6.4-6.6, чтобы построить гипотезу относительно формы распределения, определите оценки его параметра (параметров) с помощью оценок максимального прав- доподобия и степень согласия.
460 Глава 6. Выбор входных распределений вероятностей Таблица 6.23. Данные о погрешностях в диаметре шарикоподшипников 2,31 0,94 1,55 1,10 1,68 -0,16 0,48 1,49 1,20 1,48 0,85 3,21 1,71 4,01 2,10 0,26 1,97 1,09 2,72 1,18 0,28 0,30 1,40 0,59 1,99 2,14 1,59 1,50 0,48 2,12 1,15 2,54 0,70 1,63 1,47 1.71 1,41 0,95 1,55 1,28 0,44 -1,72 0,19 2,73 0,45 0,49 1,23 2,44 -1,62 0,00 1,33 -0,51 1,62 0,06 2,20 1,87 0,66 0,26 2,36 2,40 1,00 2,30 1,74 -1,27 3,11 1,03 0,59 1,37 1,30 0,78 1,01 0,99 0,24 2,18 2,24 0,22 1,01 -0,54 0,24 2,66 1,14 1,06 1,09 1,63 1,70 1,35 1,00 1,21 1,75 3,27 1,62 2,58 0,60 0,19 1,43 2,21 0,49 0,46 0,56 1,17 2,28 2,02 1,71 1,08 2,08 0,38 1,12 0,01 1,82 1,96 0,77 1,70 0,77 2,79 0,31 1,11 1,69 1,23 2,05 2,29 0,17 -0,12 2,69 1,78 2,26 0,02 1,55 0,44 0,89 1,51 -0,67 1,06 -0,05 0,27 0,78 0,60 1,06 2,29 1,13 1,85 1,62 1,50 0,21 2,04 1,26 1,98 1,50 0,94 0,17 1,90 1,64 1,12 0,89 0,49 Таблица 6.24. Данные об объеме спроса 2 7 1 3 6 1 3 2 0 1 5 И 5 3 2 8 1 7 4 8 4 4 0 2 20 0 2 5 1 6 12 7 0 5 И 8. 6 2 0 4 2 4 8 10 6 6 5 2 6 3 6 5 0 1 3 1 0 2 1 8 5 6 1 0 1 9 4 1 4 2 2 1 1 2 1 4 6.23. Для оценки у из раздела 6.8 покажите, что у < Ха) тогда и только тогда, когда + *<я))/2. 6.24. Пусть LN(y, ц, ст2) обозначает смещенное (трехпараметрическое) логнормаль- ное распределение, плотность которого равна 1 _-[Ь1(х-у)-р] 2 /(*) =. ьлр (х-у)\/2лст2 2ст2 А, у, [о в противном случае для о > 0 и любых вещественных чисел у и ц. Таким образом, LN(0, р, с2) — это исходное распределение LN(ji, о2).
Задачи 461 А. Подтвердите, что X - LN(y, р, о2) тогда и только тогда, когда X - у - - LN(p, о2). Б. Покажите, что при неизменном известном значении у оценки максималь- ного правдоподобия ц и ст в распределении LN(y, ц, ст2) составляют „ Г „ 11/2 п п * £(1пОч -г)-Д]' >»1'i п £1п(х, -у) то есть мы просто смещаем данные на величину - у, а затем рассматрива- ем их как данные с несмещенным логнормальным распределением. 6.25. Для теоремы 6.3 в разделе 6.12.2 дайте интуитивное объяснение, почему ожи- даемое число поступлений требований в интервале (t, t + s], b(t, s) должно быть равно ^y)dy. 6.26. Предоставьте интуитивную мотивировку определения оценок максимально- го правдоподобия в случае с непрерывными данными (см. раздел 6.5), выпол- нив действия, описанные ниже в пунктах A-В. Как и прежде, данные наблю- дений Xit Х2, ..., Х„ являются независимыми и одинаково распределенными реализациями величины X с плотностью /0. Помните, что величины Х{ уже были зарегистрированы, поэтому их следует рассматривать, скорее, как по- стоянные значения, а не как переменные. А. Пусть е будет небольшим (но строго положительным) вещественным числом, определите фразу «получение значения X, близкого к Х> как со- бытие {Х{ - в < X < Xi + е}. Используйте теорему о среднем, чтобы дока- зать, что Р (получение значения X, близкого XJ « 2е/в(Х;) для любого i - 1, 2,..., п. Б. Определите фразу «получение выборки п независимых и одинаково рас- пределенных величин X, близких к данным наблюдений» в качестве со- бытия (получение значения X, близкого к Хь получение значения X, близкого к Х2,..., получение значения X, близкого к Х„). Докажите, что Р (получение выборки п независимых и одинаково распределенных вели- чин X, близких к данным наблюдений) » (2Eyf0(Xt)f0(X2-) .../е(Хп) и об- ратите внимание, что это выражение пропорционально функции правдо- подобия i(6). В. Докажите, что оценка максимального правдоподобия 0 — это значение, максимально увеличивающее приближенную вероятность получения вы- борки п независимых и одинаково распределенных величин X, близких к данным наблюдений, и что в этом смысле она «лучше всего объясняет» данные, которые в действительности были зарегистрированы в процессе наблюдения.
Глава 7 Генераторы случайных чисел 4- Методология генерирования случайных чисел ♦ Типы генераторов 4 Принципы действия генераторов разных типов 4- Методики тестирования генераторов 7.1. Введение Моделирование любой системы или процесса, содержащих случайные компонен- ты, предполагает использование метода генерирования чисел, которые в опреде- ленном смысле являются случайными. Например, для моделей системы массового обслуживания и управления запасами, описанных в главах 1 и 2, требовались зна- чения интервалов времени между поступлениями, времени обслуживания, вели- чина спроса и т. д. Для их получения мы использовали какое-либо распределение (экспоненциальное распределение или распределение Эрланга). Из этой и сле- дующей глав вы узнаете, как можно генерировать случайные значения из нужного распределения вероятностей для их использования в имитационном моделирова- нии. Мы будем применять выражение «генерирование случайных величин* вместо выражения «генерирование случайных переменных», поскольку случайная пере- менная определяется в математической теории вероятностей как функция, удов- летворяющая определенным условиям. Настоящая глава посвящена методам генерирования случайных величин из равномерного распределения в интервале [0, 1], которое в главе 6 обозначалось как U(0,1). Случайные величины, генерируемые из распределения U(0,1), мы бу- дем называть случайными числами. Хотя это распределение является наиболее простым из непрерывных распределений, существенным моментом здесь являет- ся возможность получать из него независимые случайные числа. Столь важное значение распределения U(0,1) объясняется тем, что случайные величины из всех других распределений (нормального, биноминального, гамма-распределения и т. д.) и реализаций различных случайных процессов (в частности, нестационарного пу- ассоновского процесса) могут быть получены путем преобразования независимых случайных чисел, одинаково распределенных некоторым способом, определяемым искомым распределением или процессом. В этой главе рассматриваются способы
7.1. Введение 463 получения независимых случайных чисел, а в следующей — методы их преобразо- вания для применения случайных величин из других распределений и реализаций различных процессов. Методология генерирования случайных чисел имеет долгую и интересную ис- торию [Hull and Dobell, 1962; Morgan, 1984, p. 51-56; Dudewicz, 1975]. Самые ран- ние методы генерирования выполнялись вручную, например: вытягивание жре- бия, бросание игральных костей, сдача карт или вытаскивание пронумерованных шариков из урны, в которой они предварительно были «тщательно перемешаны». Многие лотереи до сих пор функционируют таким образом. В начале XX века специалисты по статистике также проявили интерес к случайным числам. Были созданы механизированные устройства для более быстрого генерирования слу- чайных чисел: в конце 1930-х годов Кендалл и Бабингтон-Смит [Kendall and Ва- bington-Smith, 1938] использовали быстро вращающийся диск для подготовки таблицы, содержащей 100 000 случайных однозначных чисел. Позднее разработа- ны электрические схемы, основанные на произвольно пульсирующих электрон- ных лампах, которые выдавали до 50 случайных чисел в секунду. Одна из таких схем реализована в электронном индикаторном устройстве для получения слу- чайных чисел (Electronic Random Number Indicator Equipment, ERNIE), исполь- зовавшемся Британским почтовым ведомством для выбора победителей в лотерее [Thomson, 1959]. Другое электронное устройство применялось компанией Rand Corporation [Rand Corporation, 1955] для генерирования таблицы, содержащей 1 000 000 случайных цифр. Было изобретено и множество других схем, таких как произвольный выбор чисел из телефонных книг, результатов переписи населения или использование цифр в числе л до 100 000 десятичных разрядов. В последние годы также проявляется интерес к созданию и использованию физических уст- ройств для получения случайных чисел, например, Миятаке [Miyatake et al., 1983] описывает устройство, основанное на подсчете гамма-излучения. С распространением компьютеров (и моделирования) все более пристальное внимание стало уделяться методам генерирования, или генераторам, случайных чисел, совместимых со способом работы компьютеров. Одна возможность состоит в прямом подключении к компьютеру электронных устройств генерирования слу- чайных чисел, таких как ERNIE. У этого метода есть несколько недостатков, ос- новной заключается в том, что точно воспроизвести ранее сгенерированный поток случайных чисел невозможно. (Необходимость такого воспроизведения рассмат- ривается далее в этой главе.) Альтернативный способ реализации указанного ме- тода — считывание таблицы, подобной таблице, полученной Rand Corporation, од- нако он требует либо значительного объема памяти, либо большого количества времени для выполнения относительно медленных операций ввода. (Хотя в совре- менных масштабных проектах моделирования не так уж редко используется более 1 000 000 случайных чисел и для каждого из них требуется несколько отдельных случайных цифр.) Поэтому в исследованиях 1940-1950-х годов ученые обрати- лись к численным, или арифметическим, способам генерирования «случайных» чисел. Эти методы являются последовательными, каждое новое число определяет- ся одним или несколькими предшествующими числами в соответствии с заданной математической формулой. Первый такой арифметический генератор, который
464 Глава 7. Генераторы случайных чисел был предложен фон Нейманом и Метрополисом в 1940-х годах, известен как ме- тод срединных квадратов. Далее приведен пример его использования. Пример 7.1. Возведем в квадрат положительное четырехзначное целое число 70и полу- чим целое число из восьми цифр. Если понадобится, добавим нули в левую часть, чтобы в числе было ровно восемь цифр. Возьмем средние четыре цифры из этого восьмизначно- го числа в качестве следующего четырехзначного числа Zt. Поместим десятичную запя- тую слева от числа Zt, чтобы получить первое случайное число с распределением U(0,1), а именно 1\. Затем число Zj представим средними четырьмя цифрами Z?, а второе слу- чайное число U2 получим, разместив десятичную запятую слева от цифр числа Zj, и т. д. В табл. 7.1 собраны несколько первых значений Zi и U{ для Zo = 7182 (первые четыре циф- ры справа от десятичной запятой в числе е). Таблица 7.1. Метод срединных квадратов i zi 0 7182 — 51 581 124 1 5811 0,5811 33 767 721 2 7677 0,7677 58 936 329 3 9363 0,9363 87 665 769 4 6657 0,6657 44 315 649 5 3156 0,3156 09 960 336 Может показаться, что метод срединных квадратов обеспечивает хорошую пе- рестановку элементов одного числа для получения следующего и такое случайное правило обеспечивает хороший способ генерирования случайных чисел. В действи- тельности это не совсем так. Одна из серьезных проблем состоит в том, что данный метод имеет стойкую тенденцию возвращать значения, которые стремятся к нулю. (Продолжите еще немного табл. 7.1 или назначьте Zo -1009, первые четыре цифры из таблицы Rand Corporation.) Таким образом, нельзя рассчитывать на то, что хо- роший генератор случайных чисел можно создать, производя манипуляции с ка- ким-либо одним числом для получения следующего. Метод срединных квадратов вовсе не является случайным, то есть непред- сказуемым (это наиболее существенный его недостаток). На самом деле, если мы знаем одно число, следующее число является полностью предопределенным, по- скольку правило его получения неизменно. Фактически, когда задается Zo, предо- пределяется вся последовательность чисел Zt и Ut. Это замечание касается всех арифметических генераторов (далее в главе мы будем рассматривать только дан- ный тип), при его рассмотрении можно быстро прийти к мистическим рассужде- ниям относительно истинной природы действительно случайных чисел. (Иногда арифметические генераторы именуются псевдослучайными, но мы избегаем упот- реблять этот термин, хотя, вероятно, он является более точным.) Часто цитирует- ся следующее замечание Джона фон Неймана [John von Neumann, 1951]: «Любой, кто рассматривает арифметические методы получения случайных цифр, впада- ет в грех. Поскольку уже множество раз отмечалось, что не существует такой вещи, как случайное число — существуют только методы получения случайных чисел, и строгая
7.1. Введение 465 арифметическая процедура, конечно, к таким методам не относится... Здесь мы имеем дело с обычными «кулинарными рецептами» по созданию цифр...» Но почему-то редко отмечается, что дальше фон Нейман уже не столь саркастиче- ски говорит, что эти рецепты «... вероятно... не могут быть оправданы, но должны просто оцениваться по их резуль- татам. Статистическое исследование цифр, сгенерированных по указанному рецепту, должно выполняться, а вот всесторонние, тщательные исследования в этом случае бес- полезны. Если цифры хорошо справляются с одной задачей, они, как правило, могут ус- пешно использоваться и для решения других задач такого же типа». Такой более практический подход поддерживает и Лемер [Lehmer, 1951], кото- рый разработал, наверное, наиболее широко используемый класс методов генери- рования случайных чисел (см. раздел 7.2); он рассматривает идею арифметиче- ских генераторов случайных чисел как «... нечеткое понятие, выражающее идею последовательности, в которой каждый эле- мент непредсказуем для непосвященных и цифры которой проходят какое-то число тра- диционных статистических проверок, зависящих в некоторой степени от назначения этой последовательности». Более формальное определение «случайности» цитируется в работе Рипли [Ripley, 1987, р. 19]. Как утверждает Нидеррейтер [Niederreiter, 1978а], статисти- ческая случайность может даже быть нежелательна, и другие свойства генериру- емых чисел, а именно «равномерность» распределения значений, более важны во многих случаях, например при интегрировании по методу Монте-Карло. Мы со- гласны с большинством авторов в том, что арифметические генераторы, если они тщательно разработаны, могут генерировать числа, которые представляются не- зависимыми выборками из распределения U(0, 1), поскольку они проходят ряд статистических проверок (см. раздел 7.4). На наш взгляд, это подходящее опреде- ление «случайных чисел». Хороший арифметический генератор случайных чисел должен обладать следу- ющими свойствами. 1. Получаемые числа должны быть равномерно распределены в интервале [0,1] и не должны иметь корреляции друг с другом, в противном случае результаты моделирования могут оказаться полностью недействительными. 2. Чтобы генератор можно было использовать на практике, он должен обладать быстродействием и не требовать больших затрат памяти. 3. Генератор должен обеспечивать возможность точно воспроизводить заданный поток случайных чисел. Во-первых, это позволяет упростить отладку компью- терной программы и проверить, правильно ли она работает. Во-вторых, что го- раздо важнее, вы можете использовать идентичные случайные числа при моде- лировании различных систем и выполнить их более точное сравнение (речь об этом пойдет в разделе 11.2). 4. В генераторе должен быть предусмотрен простой способ получения отдель- ных потоков случайных чисел. Как вы узнаете в дальнейшем, поток — это про- , сто часть последовательности случайных чисел, производимых генератором, очередной поток начинается в том месте, где заканчивается предыдущий. Мы
466 Глава 7. Генераторы случайных чисел можем рассматривать различные потоки как отдельные и независимые генера- торы (при условии, что весь поток, который, как правило, имеет длину 100 000 или более чисел, не применяется). Таким образом, пользователь может выде- лить определенный поток для конкретного источника случайности при моде- лировании. Мы так делали в модели системы массового обслуживания с одним устройством в разделе 2.4, где поток 1 применялся для генерирования значе- ний интервалов между прибытиями, а поток 2 — для генерирования значений времени обслуживания. Использование отдельных потоков для различных за- дач позволяет обеспечить воспроизводимость и сравнимость результатов мо- делирования. Поскольку данный метод имеет очевидные преимущества, необ- ходимо, чтобы генератор его поддерживал (об этом рассказано в разделе 11.2, в других разделах главы 11 рассматриваются остальные преимущества нали- чия доступных потоков). Большинство используемых генераторов работают довольно быстро, требуют мало памяти и позволяют легко воспроизводить определенную последователь- ность случайных чисел, так что пункты 2 и 3 выполняются. Более того, во многих генераторах теперь предусмотрено множество потоков, особенно это касается ге- нераторов, входящих в современные пакеты имитационного моделирования, сле- довательно, пункт 4 тоже выполняется. К сожалению, существует много генерато- ров (отдельные из них поставляются с компьютерными системами и применяются на практике), не удовлетворяющих критериям равномерности и независимости (пункт 1); их выполнение, безусловно, необходимо, если.вы надеетесь получить точные результаты моделирования. О распространенности таких неприемлемых с точки зрения статистики генераторов свидетельствует даже само название работы Савитски [Sawitzki, 1985] «Другие генераторы случайных чисел, которых надо ос- терегаться». Парк и Миллер [Park and Miller, 1988] приводят несколько примеров генераторов, которые давали очень плохие результаты, в том числе и такого, кото- рый все время повторял одно и то же случайное число. В разделе 7.2 рассматриваются генераторы общего типа, а в разделе 7.3 — аль- тернативные генераторы. В разделе 7.4 описана проверка генераторов случайных чисел на наличие у них необходимых свойств. И, наконец, в приложениях 7А и 7Б содержатся компьютерные программы для приемлемых генераторов на языках FORTRAN и С. Тема генераторов случайных чисел довольно сложна, она связана с такими дис- циплинами, как абстрактная алгебра и теория чисел, с одной стороны, а также сис- темное программирование и разработка компьютерного оборудования — с другой. Список литературы по данной теме вы найдете в работах Совейя [Sowey, 1986], Нансе и Оверстрита [Nance and Overstreet, 1972]; обзор проводимых исследова- ний — в работах Л’Экьюэра [L’Ecuyer, 1990b, 1994b, 1997]; практическую инфор- мацию и код нескольких полезных программ на языке С - в книге Пресса [Press et al., 1992], можно обратиться также к журналу ACM Transactions on Modeling and Computer Simulation [January 1998, Vol. 8, №1; October 2003, Vol. 13, №4]. Данной теме уделяется столь пристальное внимание потому, что генераторы случайных чисел лежат в самой основе стохастического моделирования.
7.2. Линейные конгруэнтные генераторы 467 (mod т), 7.2. Линейные конгруэнтные генераторы Сегодня очень часто применяются линейные конгруэнтные генераторы (ЛКГ), созданные Лемером [Lehmer, 1951]. В них последовательность целых чисел Zb Z^, ... определяется по рекурсивной формуле Zt - (aZt.1 + c)(mod ni), (7.1) где m (модуль), а (множитель), с (приращение) и Zo (начальное число или зна- чение) являются неотрицательными целыми числами. Таким образом, согласно формуле (7.1), для получения Z, нужно разделить aZ^t + с на т, то есть Z-t будет ос- татком этого деления. Поэтому O^ZjSm-l.a чтобы получить искомые случайные числа Ut (при i - 1,2,...) в интервале [0,1], примем Ut - ZJm. Мы концентрируем внимание главным образом на 2^, хотя следует иметь в виду и точный характер де- ления Z( на т в связи с различиями в способах обработки разными компьютерами и компиляторами чисел с плавающей запятой. Об этом говорится в работах Фиш- мана [Fishman, 1978, р. 348-349], а также Марсе и Робертса [Marse and Roberts, 1983]. Кроме того, что целые числа т, а, с и Zo должны быть неотрицательными, они должны удовлетворять неравенствам 0 < т, а < т, с < т и Zo < т. Против использования ЛКГ можно высказать следующие соображения. Во-пер- вых, значения Zt, определенные по формуле (7.1), вовсе не являются случайными; это касается всех генераторов псевдослучайных чисел. В самом деле, с помощью математической индукции можно доказать, что при i - 1, 2, ... Z<"[°Z° а-1 то есть каждое значение Z, полностью предопределено значениями т, а, с и Zo. Од- нако, тщательно подбирая эти четыре параметра, мы стараемся вызвать такое по- ведение величин Zb при котором соответствующие величины U{ представляются как независимые и равномерно распределенные случайные величины с распреде- лением U(0, 1), когда они проверяются с помощью ряда тестов (см. раздел 7.4). Во-вторых, при использовании ЛКГ Ut могут принимать лишь рациональные значения 0,1/ти, 2/гп (т - 1)/т. В действительности Ut могут принимать только значения мантисс этих величин в зависимости от определения констант т, а, с и Zo, а также от характера деления с плавающей запятой на т. Поэтому у нас нет возможности получить значение Uf между, например, 0,1/т и 0,9/т, в то время как такая возможность должна возникать с вероятностью 0,8/пг > 0. Нам предстоит убедиться, что для модуля т обычно выбирается очень большое значение, скажем, 109 или больше, при котором точки в интервале [0,1], куда могут попадать значе- ния иь располагаются очень плотно. Для т ;> 109 существует по меньшей мере 1 млрд возможных значений. Мы должны получить точное приближение к реаль- ному непрерывному распределению U(0, 1), достаточному для решения многих задач, однако Монахан [Monahan, 1985] отмечает, что <с уменьшением стоимости вычислений возникает вероятность астрономического числа воспроизведений», а, следовательно, ограничение значений Ц дискретными дробями может привести к существенной погрешности в оценках при моделировании Автор предлагает
468 Глава 7. Генераторы случайных чисел способы для вычисления связанной с этим погрешности и альтернативные средст- ва преобразования псевдослучайных целых чисел в непрерывный интервал [0,1]. Пример 7.2. Рассмотрим ЛКГ, определенный параметрами т “ 16, а — 5, с ~ 3 и Za - 7. В табл. 7.2 приведены значения Z; и U{ (с точностью до трех знаков после запятой) для i - -1,2,..., 19. Заметьте, что Z17—-= 6, Z1B — Z^ -1 и т. д. То есть для i-17... 32 получим та- кие же значения Z; (а следовательно, и Ц), которые были получены для i -1... 16, и в том же порядке. (Мы не предполагаем, что кто-то использует этот генератор, поскольку зна- чение т слишком мало; с его помощью мы просто продемонстрировали вычисления, вы- полняемые для ЛКГ.) Таблица 7.2. ЛКГ, определяемый по формуле Zf - (5ZM + 3)(modl6), где Zo - 7 i Z. Ц i Z£ Vi i zi Ut i _A_ Vi 0 7 5 10 0,625 10 9 0,563 15 4 0,250 1 6 0,375 6 5 0,313 11 0 0,000 16 7 0,438 2 1 0,063 7 12 0,750 12 3 0,188 17 6 0,375 3 8 0,500 8 15 0,938 13 2 0,125 18 1 0,063 4 11 0,688 9 14 0,875 14 13 0,813 19 8 0,500 Цикличность, продемонстрированная в примере 7.2, неизбежна. Согласно фор- муле (7.1), как только Zt получает значение, которое у нее уже было, сгенерируется та же самая последовательность величин, и этот цикл повторяется бесконечно. Длина цикла называется периодом генератора. Для ЛКГ значение Zf зависит толь- ко от предыдущего целого числа Z^, а поскольку 0 £ т - 1, период генератора не превышает величину т. Если период действительно равен т, считается, что ЛКГ имеет полный период (как в примере 7.2) Разумеется, если генератор имеет полный период, какое бы ни было выбрано начальное число Zo из последователь- ности {0,1 т - 1}, весь цикл будет воспроизведен в некотором порядке. Если же период генератора меньше полного, длина цикла будет зависеть от выбора опреде- ленного значения Zo, в этом случае мы будем говорить о периоде начального значе- ния для этого генератора. Поскольку в широкомасштабных проектах имитационного моделирования мо- гут использоваться сотни тысяч случайных чисел, очевидно, что для них требуются ЛКГ с длинными периодами. Более того, лучше всего иметь ЛКГ с полным перио- дом, поскольку тогда у нас есть уверенность, что каждое целое число в интервале от 0 до т - 1 возникнет в каждом цикле только один раз, а это способствует равно- мерности распределения значений и* (Даже ЛКГ с полным периодом на некото- рых участках цикла могут иметь неравномерное распределение. Например, если мы сгенерируем только т/2 последовательных значений Zit могут остаться боль- шие пробелы в последовательности возможных значений 0,1,..., т - 1.) Таким об- разом, полезно знать, как выбирать значения т, а и с так, чтобы у соответствующе- го ЛКГ был полный период. Следующая теорема, доказанная Халлом и Добеллом [Hull and Dobell, 1962], дает нам определение параметров. Теорема 7.1. ЛКГ, определенный по формуле (7.1), имеет полный период тогда и только тогда, когда выполняются три следующих условия: а) единственное положительное целое число, на которое без остатка делятся как т, так и с, равно 1;
7.2. Линейные конгруэнтные генераторы 469 6) если q является простым числом (делится только само на себя и на 1), на которое делится т, то а - 1 делится на д; в) если т делится на 4, то а - 1 тоже делится на 4. (Первое условие из теоремы 7.1 часто формулируется следующим образом: «с яв- ляется взаимно простым по отношению к т».) Достижение полного (или, по крайней мере, длинного) периода - это лишь од- но из желательных свойств хорошего ЛКГ. Как уже отмечалось в разделе 7.1, нам нужны хорошие статистические свойства (такие, как кажущаяся независимость), эффективность вычислений и сохранения, воспроизводимость, а также средства для отдельных потоков. Достигнуть воспроизводимости достаточно просто, для этого нужно всего-навсего запомнить начальное число Zo и вновь активизировать генератор с этим значением, чтобы получить ту же самую последовательность зна- чений U{. Обратите внимание: можно также легко возобновить генерирование зна- чений Z,b любой точке последовательности, сохранив последнее полученное перед тем значение Z,n использовав его в качестве нового начального числа. Таким спо- собом, как правило, получают непересекающиеся «независимые» последователь- ности случайных чисел. Потоки обычно задаются в ЛКГ посредством определения начального числа для каждого потока. Например, если нам нужны потоки длиной 100 000 чисел каждый, для начального числа Zo первого потока мы задаем некоторое значение, затем возьмем значение Z100 ооо как начальное число для второго потока, Z2Oo ооо — как начальное число для третьего потока и т. д. Таким образом, мы видим, что по- токи — это в действительности непересекающиеся смежные последовательности одной генерируемой последовательности случайных чисел. Если бы нам понадо- билось более 100 000 случайных чисел из одного потока в вышерассмотренном примере, пришлось бы вторгнуться в начало следующего потока, который уже применялся для каких-либо иных целей; это привело бы к возникновению неже- лательной корреляции. В остальной части данного раздела объясняется, как выбирать параметры для получения хороших ЛКГ, а также рассматриваются некоторые исключительно плохие ЛКГ, которые все же могут использоваться. Из-за первого условия теоре- мы 7.1 ЛКГ работают по-разному с параметром с > 0 (смешанные ЛКГ) и с пара- метром с = 0 (мультипликативные ЛКГ). 7.2.1. Смешанные генераторы При с > 0 выполнение первого условия теоремы 7.1 возможно, следовательно, мы можем получить полный период т. Сначала выберем значение т. Чтобы получить длинный период и высокую плотность величин lit в интервале [0,1], величина т должна иметь большое значение. Кроме того, деление на т для получения остатка в формуле (7.1) — довольно длительная арифметическая опе- рация, поэтому желательно избежать явного выполнения- такого деления. Выбор т, который является удачным во всех этих отношениях - т - 2Ь, где Ь — число битов (двоичных знаков) в слове задействованного компьютера, которые дейст- вительно доступны для хранения данных. В частности, во многих компьютерах
470 Глава 7. Генераторы случайных чисел и компиляторах используются 32-битовые слова, при этом крайний левый бит яв- ляется знаковым, следовательно, 6 = 31. Если b имеет достаточно большое значе- ние, например, b > 31, тогда тп > 231 > 2,1-109. Кроме того, выбирая т = 2Ь, мы дейст- вительно избегаем явного деления на т для большинства компьютеров, поскольку можно воспользоваться переполнением целых чисел. Наибольшее целое число, ко- торое может быть представлено, равно 2b - 1, и любая попытка сохранить большее целое число W (имеющее, например, h>b двоичных знаков) завершится потерей левых (наиболее значимых) h - b двоичных знаков целого числа, превысившего допустимый размер. Оставшиеся b двоичных знаков составляют ровно W(mod 2*). В следующем примере показано деление по модулю посредством переполнения для т - 2Ь. Пример 7.3. Предположим, что ЛКГ из примера 7.2 выполняется на воображаемом ком- пьютере, для которого b = 4 бита в слове, доступных для хранения данных; соответствен- но т -1€ - 2Ь. Как можно использовать переполнение целых чисел, чтобы получить Z7 - “12otZ6“5?B этом случае двоичным представлением для выражения 5Z6 + 3 - 28 яв- ляется число 11100. Поскольку на 4-битовом компьютере можно сохранить только че- тыре двоичных знака, крайний левый знак двоичного числа 11100 опускается, и остается двоичное число 1100, которое является двоичным представлением 12 - Z7. Мы предупреждаем читателя, что необходимо проверять точность способа об- работки переполнения целых чисел, поскольку, например, знаковый бит может включаться в операции, что вызовет потребность корректировки, которая может зависеть от архитектуры компьютера, формата представления целых чисел и при- меняемого языка. Таким образом, значение т - 2Ь кажется хорошим выбором для модуля. При та- ком выборе согласно теореме 7.1 мы получим полный период, если с будет иметь нечетное значение, а а - 1 будет делиться на 4. Для такого генератора с полным пе- риодом Zo может быть равно любому целому числу от 0 до т - 1, и это не будет вли- ять на период генератора. Далее рассматривается выбор множителя а. В ранних работах по ЛКГ акцентировалось внимание на эффективности умно- жения Zj-j на а, которое приводит к множителям а - 2' + 1 (7.2) для некоторого положительного целого числа I. Следовательно, aZi_1 « 2IZi.l + Zi.p Это означает, что aZ^i можно получить путем «сдвига» двоичного представле- ния Zj.t влево на Iбит и прибавления Z;-i- Таким образом, явное умножение можно заменить операциями сдвига и сложения. Однако в дальнейшем выяснилось, что следует избегать множителей, представленных выражением (7.2), поскольку в ре- зультате их использования получались генераторы с плохими статистическими свойствами [Knuth, 1998а, р. 24]. Как же в таком случае следует выбирать значения а и с, когда.т = 2Ь, чтобы по- лучить хороший смешанный ЛКГ? Исходя из собственного опыта, в качестве ре- шения мы можем предложить рассмотреть возможность отказа от использования смешанного ЛКГ вообще. Более простые и понятные мультипликативные ЛКГ
7.2. Линейные конгруэнтные генераторы 471 (которые будут рассмотрены в разделе 7.2.2) зарекомендовали себя не хуже сме- шанных и применяются гораздо чаще. 7.2.2. Мультипликативные генераторы Мультипликативные ЛКГ выгодно применять, так как для них не требуется опре- делять параметр с, но у них не может быть полного периода, потому что первое ус- ловие теоремы 7.1 для них выполняться не будет (поскольку, например, т являет- ся положительным числом и как т, так и с “ 0 делятся на него без остатка). Однако вы сможете убедиться, что можно получить период т - 1, если осторожно подби- рать значения т и а. Мультипликативные ЛКГ появились еще до смешанных и ис- следовались более интенсивно. Большинство ЛКГ, применяемых сегодня, являют- ся мультипликативными, поскольку факт улучшения эффективности, на которое возлагались надежды в связи с введением смешанных генераторов, окончательно не доказан. Как и при использовании смешанных ЛКГ, для вычислений по-прежнему под- ходит выбор т - 24, таким образом мы избегаем явного деления. Однако можно до- казать [Knuth, 1998а, р. 20], что в этом случае период составляет самое большее 24-2, то есть лишь четвертая часть целых чисел от 0 до т - 1 может быть получена в качестве значений переменных Zf. (Фактически период составляет 24'2, если зна- чение Zo является нечетным, а параметр а имеет вид 8^ + 3 или 8k + 5 для некото- рых значений k - 0,1,....) Кроме того, нам, как правило, неизвестно, куда попадут эти пг/4 целых числа, то есть между полученными переменными Z; могут быть не- допустимо большие промежутки. К тому же, если для параметра а мы выбираем вид 2l + j (так что умножение на а заменяется смещением и прибавлением ]), можно получить неудовлетворительные статистические свойства. Известен, на- пример, генератор RANDU, который имеет такие значения параметров: т - 231, а ~ - 216 + 3 « 65 539, с - 0 — и, как оказалось, очень неподходящие статистические свойства (см. раздел 7.4), поэтому следует избегать его применения. Даже отка- заться от выбора а “ 2‘ +j, используя т - 2Ь, — тоже не самый подходящий вариант параметра для мультипликативных ЛКГ, хотя бы потому что период щ/4 короче и по этой причине возникает вероятность появления пропусков в значениях Z(. Из-за трудностей, возникавших в связи с выбором т - 2Ь в мультипликативных ЛКГ, основное внимание уделялось поиску других способов определения значе- ния т. Метод, оказавшийся довольно успешным, был представлен Хатчинсоном [Hutchison, 1966], который приписывает авторство идеи Лемеру. Вместо того что- бы использовать т - 2Ь, было предложено определять значение т как наибольшее простое число, которое меньше 2Ь. Например, если b - 31, то наибольшее простое число, которое меньше 231, соответственно будет составлять 231 - 1 - 2 147 483 647. Теперь для простого числа т можно показать, что период составляет т - 1, если а — это первообразный элемент по модулю т, то есть наименьшее целое число /, для которого а* - 1 делится на т, составляет Z~ т - 1 [Knuth, 1998а, р. 20]. Если таким образом выбрать значения т и а, то можно получить каждое целое число 1, 2. т - 1 один раз в каждом цикле, так что Zo может быть любым целым числом от 1 до т -1, а в результате все равно будет получен период т -1. Такие генераторы на- зываются мультипликативными ЛКГ с простым модулем.
472 Глава 7. Генераторы случайных чисел Возникают сразу две проблемы в связи с применением мультипликативных ЛКГ с простым модулем. Первая касается способа получения примитивного эле- мента по модулю т. Хотя в своей работе Кнут [Knuth, 1998а, р. 20-21] приводит некоторые определения параметров, задача является весьма сложной с точки зре- ния выполнения вычислений. В конце данного раздела приводятся несколько хо- рошо зарекомендовавших себя на практике мультипликативных ЛКГ с простым модулем. Вторая проблема связана с тем, что механизм переполнения не может быть использован д ля прямого влияния на модуль деления т, поскольку мы не вы- бираем т “ 2Ь. Для этого случая Пейн, Рабунг и Богио [Payne, Rabung and Bogyo, 1969] предложили метод под названием имитированное деление, позволяющий из- бежать явного деления. (Рекомендуем также обратиться к работам других авторов [Fishman, 1973а, р. 179-180; Fishman, 1978, р. 357; Schrage, 1979; Marse and Roberts, 1983].) В мультипликативных ЛКГ с простым модулем для параметра т использу- ется выражение 2Ь - q для некоторого положительного целого числа q. Для того чтобы получить Z, - (aZi_1)(mod 2Ь - q) из ZM, допустим, что Z\ — (aZ;_i)(mod 2Ь), а это значение можно получить с помощью механизма переполнения без явного деления. И если k — наибольшее целое число, которое меньше aZ^/2b или равно ему, тогда 2 _ f Z\ + kq если Z\ + kq < 2Ь - q-, ' (Z- + kq-(2b—q) если Z' + kq>2b -q. В В доступном генераторе Марсе и Робертса на языке FORTRAN, который будет рассмотрен дальше, используется имитированное деление. Альтернативный ме- тод выполнения деления можно найти в работе Л’Экьюэра [L’Ecuyer, 1988]. В завершение данного раздела приведем примеры специальных мультиплика- тивных ЛКГ с простым модулем т* = 231 - 1, а также множителей, являющихся первообразными элементами по модулю т* и хорошо себя зарекомендовавших. Для многих компьютеров и компиляторов, применяющихся в настоящее время, подходит вариант, когда b = 31. Более того, использование вычислительной маши- ны с длиной слова больше 32 бит, конечно, не исключает применение генераторов с модулем 231 - 1. По указанным причинам много усилий было направлено на определение хоро- ших множителей а для мультипликативных ЛКГ с простым модулем т*; поиск ог- раничивался значениями а, которые являются первообразными элементами по модулю т*, чтобы получить период т* - 1. Хоглин [Hoaglin, 1976] изучил эффек- тивность 50 таких множителей с помощью специальных спектральных и решетча- тых тестов (см. раздел 7.4.2) и определил несколько подходящих значений а, а так- же их неудачные варианты. В своих работах Фишман и Мур [Fishman and Moore, 1981, 1982, 1986] оценили все эти множители а, являющиеся примитивными эле- ментами по модулю т" (их число доходило до 534 млн), посредством эмпириче- ских и теоретических тестов (см. раздел 7.4). Они определили несколько множи- телей, которые весьма хорошо производят случайные числа, удовлетворяющие ряду достаточно строгих критериев. Для модуля т" широко использовались два отдельных значения множителя а, а именно: а, - 75 -16 807 и “ 630 360 016. Оба являются примитивными элемен-
7.2. Линейные конгруэнтные генераторы 473 теми по модулю т* (хотя ни одно из упомянутых значений не было отнесено Фишманом и Муром к лучшим). Множитель а, изначально был предложен Льюи- сом, Гудманом и Миллером [Lewis, Goodman and Miller, 1969], представившими программу на языке ассемблера IBM, которая явно использует аппаратные сред- ства для деления, а не имитированное деление. Множитель at применяется в паке- те LLRANDOM Лирмонта и Льюиса [Learmonth and Lewis, 1973], а также, по умолчанию, в генераторе RNUN на языке FORTRAN Международной математи- ческой библиотеки подпрограмм (International Mathematical Subroutine Library, IMSL) [Visual Numerics, Inc., 1997]. Шрейдж [Schrage, 1979] к тому же использо- вал множитель at в программе на языке FORTRAN, где применялось имитирован- ное деление. Его программа предназначалась для работы на любом компьютере с компилятором FORTRAN, правильно вычисляющим и сохраняющим целочис- ленные значения в диапазоне от - 231 + 1 до 231 - 1 включительно, фактически эта программа подходит для всех компьютеров (в том числе и микрокомпьютеров). Шрейдж также представил вариант с удвоенной точностью, который можно ис- пользовать, если указанный выше диапазон целых чисел недоступен. Программа Шрейджа интересна тем, что в ней был реализован весьма удовлетворительный машинонезависимый генератор случайных чисел, который может быть выполнен на языке FORTRAN практически на любом компьютере. Парк и Миллер [Park and Miller, 1988] предложили программы на языке Паскаль с применением парамет- ра а^; отдельные из упомянутых программ действительны даже без диапазона це- лых чисел, который требуется для кода Шрейджа, если вместо этого используется арифметические операции над числами с плавающей запятой. Фишман и Мур выяснили, что множитель а2, изначально предложенный Пей- ном, Рабунгом и Богио [Payne, Rabung and Bogyo, 1969], дает значительно лучшие статистические характеристики, чем множитель аь а Марсе и Робертс [Marse and Roberts, 1983] для этого случая разработали программу на языке FORTRAN с ши- рокими возможностями переносимости (она работает при тех же условиях, что и программа Шрейджа). Ее код приводится в приложении 7А вместе с версией для языка С. Это генератор, который мы использовали для всех примеров в главах 1 и 2, он же встроен в пакет simlib из главы 2. В программе Марсе и Робертса также предусмотрено преобразование целых чисел Zt в значения И, в интервале [0, 1], чтобы избежать искажения и изменений, зависящих от используемой вычисли- тельной машины. Код этой программы, приведенный в приложении 7А.1, дает одинаковые значения с обычной точностью на любой вычислительной машине, в которой есть, по меньшей мере, 23 бита для мантисс с плавающей запятой без знака — данное условие выполняется во всех реализациях FORTRAN. (Код Шрей- джа дает одинаковую последовательность Zt на любой вычислительной машине, на которой он может применяться, последовательность значений U{ при этом может варьироваться, что связано с прямым делением Z, на т* при получении U{.) И хотя программа Шрейджа работает вдвое быстрее программы Марсе и Робертса, пре- восходство множителя а2 над ах в плане статистических характеристик говорит в пользу последней. Как указали Марсе и Робертс, генерирование случайных чисел фактически может занять лишь небольшую часть (они сообщают о 2-3 % для па- кета имитационного моделирования INSIGHT) общего времени выполнения при
474 Глава 7. Генераторы случайных чисел динамическом моделировании сложных, крупномасштабных систем. Если же ско- рость генерирования случайных чисел имеет решающее значение, следует отдать предпочтение программе Шрейджа. Учтите, что в программах Шрейджа или Мар- се и Робертса нельзя применить большие множители, поскольку из-за этого воз- никнут проблемы с механизмом переполнения. Для многих ситуаций мы можем с полным основанием рекомендовать использовать мультипликативный ЛКГ с простым модулем и параметрами т - т* - 231 - 1 и а = аг - 630 360 016 в одной из версий приложения 7 А, так как это проверенный, вполне приемлемый генератор, который должен работать правильно (и последовательно) практически на любом компьютере. Если нужны большие периоды генераторов, можно подумать об ис- пользовании генераторов, которые рассматриваются в следующем разделе. 7.3. Генераторы других типов Наряду с генераторами ЛКГ, которые нашли широкое применение и являются наиболее понятными, существует много альтернативных типов. (Речь об одном из них шла в разделе 7.1 — это метод срединных квадратов, который использовать не рекомендуется.) Большинство генераторов были разработаны с целью получения более длинных периодов и лучших статистических свойств. Однако часто простой ЛКГ с тщательно подобранными параметрами может работать почти так же хоро- шо (а иногда даже лучше), как эти более сложные альтернативные типы. Мы не стремимся рассмотреть все типы генераторов, а лишь рассказываем об основных альтернативах ЛКГ. 7.3.1. Конгруэнтные генераторы общего типа ЛКГ можно рассматривать как особый тип генераторов, определяемый формулой Z, - g{Zi _1( Zi-2, ...)(mod т), (7.3) где g — постоянная детерминированная функция предыдущих значений Zj. Как и для ЛКГ, значения Zb определяемые по формуле (7.3), лежат в диапазоне от 0 до т - 1, а случайные числа с распределением U(0,1) задаются формулой L7f - Zjm. (Для ЛКГ функция g составляет g(Zi_1, Z^2,...) - aZ^ + с.) В этом разделе мы крат- ко рассмотрим некоторые из генераторов данного типа, а более подробное их описание можно найти в работах Кнута (Knuth, 1998а, р. 26-36) и Л’Экьюэра (L’Ecuyer, 1990b, 1994b). Сделаем одно из наиболее очевидных обобщений для ЛКГ — допустим, что g(Zi_1, Zi.2,...) - a'Z2^, + aZi-i + с. В результате получаем квадратичный конгруэнт- ный генератор. Особый случай, заслуживающий внимания, имеет место, когда па- раметры принимают значения а'=-а = 1, с==0ит является показателем степени 2. Хотя такой генератор сродни методу срединных квадратов (см. раздел 7.1), его статистические свойства лучше. Поскольку Z, все еще зависит от Zix (а не от более ранних значений Zj) и 0 <, Z, <, т -1, максимальный период квадратичных конгру- энтных генераторов т такой же, как и у ЛКГ.
7.3. Генераторы других типов 475 Особый выбор функции g состоит в сохранении линейности при использова- нии предыдущих значений Zjt в результате чего получаем многократные рекурсив- ные генераторы (МРГ), определяемые по формуле r g(^f-il —) = + a2^i~2 + ••• (7.4) 1ДеО1, аъ..., ая - константы. Получение огромных периодов (достигающих т9 - 1) становится возможным, если соответствующим образом выбираются параметры. Исследуя подобные генераторы, Л’Экьюэр и Блуин [L’Ecuyer and Blouin, 1988] и Л’Экьюэр, Блуин и Кутюр [L’Ecuyer, Blouin and Couture, 1993] применяют для их оценки обобщение спектральных тестов (см. раздел 7.4.2). Ими также определены несколько хорошо работающих специальных генераторов данного типа и пред- ставлены их переносимые реализации. Дополнительное исследование генерато- ров с функцией g в уравнении (7.4), использовавшейся в уравнении (7.3), сосредо- точилось на определении g как. + Z^q, что включает в себя старый генератор Фибоначчи Z, “ (Zj_t + Zj_2)(mod т). Этот генератор может иметь период, превышающий т, но он совершенно не- приемлем с точки зрения статистики (см. задачу 7.12). Разного рода обобщения для ЛКГ были представлены Хаасом [Haas, 1987], который предложил в основной формуле ЛКГ (7.1), перед тем как генерировать каждое новое значение Z„ изменять множитель а и приращение с в соответствии с конгруэнтными формулами. Результаты статистических проверок данного типа генераторов (см. раздел 7.4.1) оказались обнадеживающими, и для него была раз- работана доступная программа на языке FORTRAN. Анализ показал, что можно без труда получать очень большие периоды, в одном примере достигнут период 800 триллионов. 7.3.2. Сложные генераторы Исследователи разработали методы, при использовании которых один или не- сколько отдельных генераторов комбинируются определенным образом для гене- рирования конечных случайных чисел. Казалось бы, у такого сложного генератора период должен быть длиннее, а статистическое поведение лучше, чем у любого из составляющих его простых генераторов. На самом деле Браун и Соломон [Brown and Solomon, 1979] показали, что в некотором абстрактном смысле числа из слож- ного генератора, по меньшей мере, также близки к «истинной» равномерности, как и у любого из составляющих его генераторов. Недостаток сложного генерато- ра состоит в том, что затраты на получение каждого значения превышают затра- ты, существующие при использовании отдельного простого генератора. В наиболее раннем типе сложных генераторов второй ЛКГ применялся, чтобы перетасовать данные, полученные от первого ЛКГ. Такие генераторы были разра- ботаны Мак-Лареном и Марсальей [MacLaren and Marsaglia, 1965] и усовершенст- вованы Марсальей и Брейем [Marsaglia and Bray, 1968], Гросенбаухом [Grosenbau- ch, 1969], а также Нансе и Оверстритом [Nance and Overstreet, 1975]. Сначала
476 Глава 7. Генераторы случайных чисел вектор V = (Vt, V2,..., V*) последовательно заполняется первыми k значениями U{ из первого ЛКГ (изначально было предложено k - 128). Затем второй ЛКГ использу- ется для того, чтобы получить случайное целое число I, равномерно распределен- ное между целыми числами 1,2,k (см. раздел 8.4.2) и V, возвращается как первая величина с распределением U(0,1); затем первый ЛКГ заменяет этот Г-й элемент в векторе V следующим значением Ц, а второй ЛКГ произвольно выбирает следую- щее возвращаемое случайное число из этого обновленного вектора V и т. д. Пере- тасовка сама по себе очень привлекательна, поскольку можно ожидать, что она на- рушит любую корреляцию и значительно увеличит период генератора. Мак-Ларен и Марсалья действительно получили генератор с очень хорошими статистически- ми характеристиками, хотя в отдельности оба ЛКГ работали довольно плохо. Дальнейшие исследования Нансе и Оверстрита [Nance and Overstreet, 1978] под- твердили, что при перетасовке результатов, сгенерированных одним плохим ЛКГ, с помощью другого плохого ЛКГ можно получить хороший сложный генератор, например, увеличив период генераторов на компьютерах с короткой длиной слова. Однако нельзя достигнуть чего-то особенного при перетасовке результатов, сгене- рированных хорошим ЛКГ. Кроме того, они выяснили, что вектор длиной k = 2 ра- ботает так же, как и более длинные векторы. Было предложено несколько вариантов перетасовки. Бейз и Дурхем [Bays and Durham, 1976] и Гебхардт [Gebhardt, 1967] попробовали перетасовать результаты, полученные от одного генератора, с его же помощью. Аткинсон [Atkinson, 1980] сообщает, что путем применения заданной перестановки (а не случайной перета- совки) результатов, сгенерированных ЛКГ, можно «избавиться от влияния, ока- зываемого практически всеми, кроме самых плохих, генераторами, и существенно смягчить вред, наносимый даже совершенно безнадежными генераторами». Несмотря на явные преимущества, полученные от простого генератора при пе- рестановке результатов, о перемешивающих генераторах известно не так уж мно- го. Вы, в частности, не можете перейти к произвольной точке в последовательнос- ти результатов, полученных от перемешивающего генератора, не сгенерировав перед тем все промежуточные значения, тогда как ЛКГ обеспечивают такую воз- можность. (См. программу NXSEED в работе Марсе и Робертса [Marse and Ro- berts, 1983] и приложении 7А.З.) Еще один способ объединения двух генераторов рассматривается в работе Л’Экьюэра [L’Ecuyer, 1988]. Идея состоит в том, чтобы обозначить последователь- ности целых чисел, генерируемые двумя различными ЛКГ с различными модуля- ми, как {Zu} и {Z^,}, а затем допустить, что Zt = (Zu - Z2i)(mod т) для некоторого це- лого числа т, и, наконец, установить U{ = ZJm. Естественно, данный способ может быть применен и болеё чем к двум генераторам. Он имеет несколько преимуществ. У этого сложного генератора очень длинный период (по меньшей мере 1018 в при- мере, представленном Л’Экьюэром), множители в каждом из входящих в его состав генераторов могут быть небольшими (таким образом обеспечивается переноси- мость и возможность использования практически на любом компьютере), гене- ратор действует довольно быстро и имеет хорошие статистические качества. Л’Экьюэр и Коте [L’Ecuyer and Cote, 1991] описали переносимый пакет программ для генераторов такого типа.
7.3. Генераторы других типов 477 Очень хороший результат можно получить, объединив МРГ (о которых гово- рилось шла в разделе 7.3.1). Разработку и изучение генераторов этого класса осу- ществил Л’Экьюэр [L’Ecuyer, 1996,1999]. В целом/различных МРГ (с использо- ванием функции g из уравнения (7.4) в рекурсии формулы (7.3)) выполняются одновременно для получения последовательностей {Zlt}, {Z2f}, ...,{Z^}. Пусть m, бу- дет модулем т из уравнения (7.3), используемым в первом из МРГ, а 8,, 32,..., 37 — указанными константами. Определим Yi =(5izi,< + М24 +...+ 8/Zy<)(modmi) и окончательно возвратим U{ - У(/т( как i-e случайное число, использующееся при моделировании. Хотя параметры для генератора такого типа должны подбираться очень осторожно, у него могут быть очень длинные периоды и исключительно хо- рошие статистические свойства. Л’Экьюэр [L’Ecuyer, 1999] провел масштабные исследования и выявил подходящие значения параметров, а также представил не- большую переносимую и быструю программу на языке С для некоторых рекомен- дуемых случаев применения такого типа генераторов. Самый простой и быстро- действующий генератор для этих случаев — объединенный, где J “ 2 МРГ, задан следующим образом: Z1( = (1403 580Z, (_2 -810 728ZU_3 )[mod(232 -209)]; Z2>j =(527 61272я -1370 589Z2j_3)[mod(232 -22 853)]; У, =(Z13 -г^Мпюсф32 -209)]; V- =——. 232 -209 Рассматриваемый генератор имеет период приблизительно 2191 (что составляет около 3,1 х 10=7), а также прекрасные статистические свойства, вплоть до размер- ности 32 (см. раздел 7.4.2). Обратите внимание, что для этого генератора началь- ное число фактически представлено 6-мерным вектором (Z1>0, Zw, Z12, Z2fi, Z21, Zw), и первое возвращенное случайное число будет индексировано как U3. В приложе- нии 7Б приведен код на языке С переносимой программы для такого генератора, который поддерживает множество потоков с большими интервалами между ними. Вичманн и Хилл [Wichmann and Hill, 1982] предложили следующую идею для объединения трех генераторов, опять-таки с целью получения длинного периода, достижения переносимости, высокой скорости работы и возможности примене- ния на небольших компьютерах (а также статистической адекватности). Если Uu, Uv и U3i — это i-e случайные числа, произведенные тремя отдельными генератора- ми, тогда положим, что Ц будет дробной частью (то есть мы будем игнорировать любые цифры слева от десятичной запятой) величины Uu + (72j + U3i (см. зада- чу 7.13). Таким образом действительно можно получить очень длинный период (хотя и не настолько длинный, как сообщалось в первой работе Вичманна и Хилла [Wichmann and Hill, 1984]), а также переносимый и эффективный генератор. Позднее Мак-Леод [McLeod, 1985] указал, что в такой программе при выполнении ее на некоторых компьютерах могут возникать числовые проблемы. Зейсель [Zeisel,
478 Глава 7. Генераторы случайных чисел 1986] доказал, что такого рода генератор идентичен мультипликативному ЛКГ, но в нем используется очень большие модуль и множитель. Оказалось, что генера- тор Вичманна и Хилла представляет собой способ реализации мультипликатив- ного ЛКГ с очень большими параметрами на очень маленьких компьютерах. Кроме тех способов объединения отдельных генераторов случайных чисел, ко- торые мы только что рассмотрели, существует множество других. Информацию о них можно найти в работах Кеннеди и Джентла [Kennedy and Gentle, 1980, р. 162-165], Рипли [Ripley, 1987, р. 42-43], Братли, Фокса и Шрейджа [Bratley, Fox and Schrage, 1987, p. 203-205], Л’Экьюэра [L’Ecuyer, 1994b]. 7.3.3. Генератор Таусворта и связанные с ним другие генераторы Несколько интересных типов генераторов было разработано на основе работы Таусворта [Tausworthe, 1965]. Эти генераторы, связанные с криптографическими методами, работают непосредственно с битами для получения случайных чисел. Определим последовательность Ьи Ь2,... бинарных знаков с помощью рекуррен- тного соотношения bi “ (Cjfei-i + cjjf.2 + ... +c9fej^)(mod 2). (7.5) Здесь q, c2 с, являются константами, равными либо 0, либо 1. Обратите вни- мание на то, что рекуррентное соотношение для Ь{ подобно уравнению (7.4); мак- симальный период в этом случае составляет 2? -1. Практически во всех приложе- ниях генераторов Таусворта только два из коэффициентов с?не равны нулю, в этом случае уравнение (7.5) приобретает следующий вид: ^ = (^ + М(тоб2) (7.6) для целых чисел гид, удовлетворяющих неравенству 0 < г < q. Выполнение урав- нения (7.6) ускоряется за счет того, что сложение по модулю 2 эквивалентно при- менению к битам оператора исключающего ИЛИ, то есть уравнение (7.6) можно выразить как [0 если bt_r - bt_q; 1 [1 если b{_r * b{_q. Чтобы инициализировать последовательность {£»,}, первые д значений Ь, долж- ны быть каким-либо образом определены; как и при определении начального чис- ла Zo для ЛКГ. Пример 7.4. Пусть г-3и^-5в уравнении (7.6), и bt - b2 -...- b5 - 1. (Пример приво- дится в работе Льюиса и Пейна [Lewis and Payne, 1973]). Таким образом, для i 2: 6 fe, — это «исключающее ИЛИ» от Ь^3 кроме if_5. Тогда первые 42 значения bt будут составлять 111110001101110101000010010110011111000110 Обратите внимание, что период (битов) составляет 31 - 2 9 - 1. Кеннеди и Джентл [Kennedy and Gentle, 1980, р. 150-163] рассматривают ряд вопросов, связанных с реализацией генераторов Таусворта, в том числе метод «ре-
7.3. Генераторы других типов 479 гистра сдвига с обратными связями»; код соответствующей программы на языке FORTRAN вы найдете в работе Пейна [Payne, 1970]. При такой последовательности {fej возникает вопрос, каким образом она может быть преобразована в случайные числа с распределением U(0,1). Одна естествен- ная возможность состоит в объединении I последовательных значений чтобы создать /-битовое целое число от 0 до 2' - 1, которое затем будет делиться на 2'. (В примере 7.4 при I = 4 была получена последовательность случайных чисел 15/16,8/16,13/16,13/16,4/16, 2/16,5/16,9/16,15/16,1/16..) Однако значение / не должно превышать размер слова на компьютере. Существуют разногласия от- носительно того, насколько хорошо работает такой метод, поэтому есть и другая возможность, согласно которой I последовательных битов используются для пер- вого целого числа, далее определенное количество следующих за ними значений пропускается, затем очередные I битов используются для второго целого числа и т. д. Гораздо более сложный алгоритм выбора битов был предложен Льюисом и Пейном [Lewis and Payne, 1973] и дополнительно изучен Брайтом и Энисоном [Bright and Enison, 1979]. Вопрос об определении значений г и q рассматривался Таусвортом [Tausworthe, 1965], Тутиллом, Робинсоном и Адамсом [Totill, Robins- on and Adams, 1971], а также Тутиллом, Робинсоном и Иглом [Totill, Robinson and Eagle, 1973]. В этих работах также представлены различные проверки нескольких генераторов Таусворта. Генераторы Таусворта имеют ряд преимуществ по сравнению с ЛКГ. Они не за- висят от возможностей компьютера и размера слова в нем. С их помощью легко получать невероятно длинные периоды (например, 2521 - 1 > 10156 и более). Кроме того, они имеют привлекательные теоретические свойства [Tausworthe, 1965; To- till, Robinson and Eagle, 1973; Kennedy and Gentle, 1980, p. 151-152; Fishimi and Tezuka, 1983; Fushimi, 1988]. Исходя из этого Джонсон [Johnson, 1987, р. 41-42] рекомендует использовать их как основу для генерирования многомерных случай- ных векторов. Однако эмпирические данные в отношении генераторов Таусворта могут быть не столь убедительными [Totill, Robinson and Adams, 1971]. Более того, в действительности генераторы Таусворта не имеют широкого применения. На- пример, для управления потоком пакет имитационного моделирования GPSS/H был вновь приспособлен к использованию ЛКГ. Неотъемлемой составляющей генераторов Таусворта является генерируемая некоторым образом последовательность битов. Для этого был предложен еще один метод, который также применяется в криптографии [Blum, Blum and Shub, 1986]. Пусть puq будут большими простыми числами, для которых р - 3 и q - 3 делятся на 4. Таким образом определяется модуль т = pq, из которого посредством квадра- тичного конгруэнтного рекуррентного соотношения = XV^mod т) генерирует- ся последовательность целых чисел {XJ. Затем определяется последовательность битов bfc помощью контроля по четности (крайний правый бит) Х„ равная 0, если Xt имеет четное значение, и 1 — в противном случае. В статье Блума, Блума и Шуба [Blum, Blum and Shub, 1986] показано, что такая последовательность битов прак- тически непредсказуема, поскольку обнаружение в ней неслучайности (например, точное заполнение отсутствующих битов), являющееся в вычислительном отно- шении эквивалентным разложению модуля т на множители pq, задача, которая,
480 Глава 7. Генераторы случайных чисел как полагают, требует огромных компьютерых ресурсов. Такая теоретическая под- держка генератора, конечно, очень привлекательна, поэтому данному методу было уделено много внимания, в том числе ему была посвящена статья в New York Times [Gleick, 1988] под многообещающим заголовком «Поиски настоящей случайности величин наконец дают успешные результаты». Л’Экьюэр и Проулкс [L’Ecuyer and Proulx, 1989] оценили некоторые практические вопросы реализации этого типа ге- нераторов. В заключение следует отметить, что не остались без внимания исследователей методы для одновременного генерирования множества случайных последователь- ностей битов при параллельной обработке. Информацию о них можно найти в ра- ботах Де Маттеиса и Пагнутти [De Matteis and Pagnutti, 1988] и Рейфа и Тигара [Reif and Tygar, 1988]. 7.4. Тестирование генераторов случайных чисел Как было показано в разделах 7.1-7.3, все генераторы случайных чисел, которые на сегодняшний день применяются в компьютерном моделировании, являются полностью детерминированными. Поэтому мы можем только надеяться, что сге- нерированные значения Ц- появляются, как будто они были независимые и равно- мерно распределенные случайные величины с распределением U(0,1). В этом раз- деле мы рассматриваем несколько тестов, которые могут быть использованы для генератора случайных чисел, чтобы узнать, насколько хорошо сгенерированные значения Ц отображают (или могут отображать) значения действительно незави- симых и равномерно распределенных случайных величин с распределением U(0,1). В программное обеспечение большинства компьютеров входит «встроенный» генератор случайных чисел. Настоятельно рекомендуем перед применением этого генератора для моделирования определить его точность и какой это генератор, каковы его числовые параметры. Если генератор не является одним из тех «надеж- ных» (и проверенных) генераторов, которые описаны в литературе (или не отно- сится к одному из вышеописанных типов генераторов), он должен быть подвер- гнут тестированию с помощью эмпирических тестов. Существуют тесты двух типов. Эмпирические тесты — это обычный тип статис- тических тестов, они основаны на действительных значениях Uit выдаваемых гене- ратором. Теоретические тесты не являются тестами в том смысле, в каком они предусматриваются в статистике. Однако в них используются числовые парамет- ры, чтобы оценить генератор глобально без фактического генерирования некото- рых или всех значений U{. 7.4.1. Эмпирические тесты Вероятно, наиболее эффективный способ проверки генератора состоит в примене- нии его для генерирования некоторых значений Uit которые затем исследуются в статистическом плане. Цель проверки — определить, насколько они имеют сход- ство с независимыми и равномерно распределенными случайными величинами с распределением U(0, 1). В этом разделе рассматриваются четыре таких теста;
7.4. Тестирование генераторов случайных чисел 481 описание других можно найти в статьях Бенкса, Карсона и Нельсона [Banks, Car- son and Nelson, 1998a, p. 297-316], Фишмана [Fishman, 1978, p. 371-386] и Кнута [Knuth, 1998a, pp. 41-75]. Первый тест разработан, чтобы установить, являются ли значения Ц равномер- но распределенными между 0 и 1. Это особая проверка, с которой мы уже сталки- вались ранее (в разделе 6.6.2), проверка по критерию -«хи-квадрат», когда извест- ны все параметры. Мы делим интервал [0, 1] на k подынтервалов одинаковой длины и генерируем случайные величины Ub U2,..., Un. (Как правило, в этом случае значение п должно равняться, по меньшей мере, 100, а величина n/k должна со- ставлять хотя бы 5.) Предположим, что у = 1, 2,..., k a fj будет числом значений Uit попадающих в j-й подынтервал, а также 9(fe-1) + 21-а \ 9(k-1) Для больших значений п величина %2 будет иметь приближенное распределе- ние -«хи-квадрат» с k - 1 степенями свободы по нулевой гипотезе, согласно кото- рой U{ — независимые и равномерно распределенные случайные величины с рас- пределением U(0, 1). Таким образом, мы опровергаем эту гипотезу на уровне доверительной вероятности а, если %2 > х2ц, где Х2*-и-а — верхняя критическая точка уровня доверительной вероятности 1 - а распределения «хи-квадрат» с k - 1 степенями свободы. (Для больших значений k, которые могут встретиться в этом случае, можно использовать приближение X*-u-a «(*-!) где 2,-ц — верхняя критическая точка уровня доверительной вероятности 1 - а рас- пределения N(0, 1).) Пример 7.5. Мы применим проверку равномерности распределения по критерию «хи- квадрат» к мультипликативному ЛКГ с простым модулем Z, - 630 360 016 Zi_l (mod 231 - - 1), приведенному в приложении 7А, использовав поток 1 с начальным числом, уста- новленным по умолчанию. Для этого взяли значение k - 212 - 4096 (на равномерность распределения проверяются наиболее значимые 12 бит значений i/f) и определили, что и - 215 - 32 768. В результате получили величину х2 “ 4141,0. Применив вышеприведен- ное приближение для критической точки, установим, что х2«095;о,9о “4211,4; следователь- но, нулевая гипотеза о равномерности распределения не опровергается на уровне дове- рительной вероятности a - 0,10. Поэтому поведение этих 32 768 значений Uit выданных генератором, существенно не отличается от поведения, которое могли бы иметь истин- ные независимые и одинаково распределенные случайные переменные с распределени- ем U(0, 1), насколько это можно установить с помощью критерия «хи-квадрат». Второй эмпирический тест — проверка по критерию серий. В действительности это всего лишь обобщение проверки по критерию «хи-квадрат» до высших изме- рений. Если значения Ц на самом деле являются независимыми и одинаково рас- пределенными случайными величинами с распределением U(0, 1), непересекаю- щиеся J-мерные кортежи ц = (ВД......Ud), U2 ~(Ud+l,Ud+2.....U2d),...
482 Глава 7. Генераторы случайных чисел должны представлять собой независимые и одинаково распределенные случайные векторы, равномерно распределенные в d-мерном единичном гиперкубе [О, I]*'. Разделим интервал [0, 1] на k одинаковых подынтервалов и сгенерируем случай- ные величины иъ U2 U„ (для которых требуется nd значений £7(). Пусть Д >2.. ,}i будет числом Ц, содержащим первый компонент в подынтервале второй компо- нент в подынтервале ]2 и т. д. вычислить легче, чем это может показаться; см. задачу 7.7). Если допустить, что к к к ( „\2 ,-4b я Л=1>2=1 Ji-lk k J то x2(d) будет иметь приближенное распределение «хи-квадрат» с kd - 1 степенями свободы. (Опять же, желательно, чтобы n/kd> 5.) Проверка d-мерной равномерно- сти распределения выполняется точно так же, как и вышеописанная проверка по одномерному критерию «хи-квадрат». Пример 7.6. Мы проверили нулевую гипотезу о том, что пары (Ub U2), (U3, U^),.... (t^«-i> 7/2„) являются независимыми и одинаково распределенными случайными векторами, равномерно распределенными в единичном квадрате для размерности d — 2. С этой це- лью применим генератор из приложения 7А, но начали с потока 2 и сгенерировали п - 32 768 пар значений 17,. Мы приняли k - 64, поэтому у нас снова было 4095 - 642 -1 сте- пеней свободы и то же самое критическое значение 4211,4 на уровне вероятности а - 0,10. Значение х2(2) равнялось 4016,5, что указывало на приемлемую равномерность в двух измерениях для первых двух третей потока 2 (как вы помните, потоки имеют длину 100 000 значений U{, а в этом примере взято 2п - 65 536 из них). Для размерности d - 3 мы использовали поток 3, приняли k - 16 (оставив 4095 - 163 - 1 степеней свободы и критическое значение на уровне вероятности а - 0,10, равное 4211,4) и сгенерировали п -= 32 768 непересекающихся тройственных значений Uy В результате значение х2(3) составило 4174,5, что вновь указывает на приемлемую равномерность распределения в трех измерениях. Такой тип равномерности распределения в высших размерностях нам интере- сен по следующим причинам. Если отдельные значения U{ коррелированны, рас- пределение d-мерных векторов U, будет отклоняться от равномерности d-мерного распределения; таким образом, критерий серий позволяет косвенно проверить до- пущение о том, что отдельные значения Ut являются независимыми. Например, в случае, если смежные значения 17( стремятся к положительной корреляции, пары (Ц, Uj+1) имеют тенденцию собираться вдоль нисходящей диагонали единичного квадрата, и величина х2(2) должна на это указать. Наконец, следует учитывать, что для проверки по критерию серий для размерности d > 3 потребуется много памя- ти, для того чтобы вычислить kd значений числа /у ...у. (Выбирая k - 16 в приме- ре 7.6, когда значение d = 3, является, вероятно, не достаточно частым делением интервала [0, 1].) Третий рассматриваемый нами эмпирический тест — проверка по критерию се- рий (или восходящих серий). Она представляет собой более прямую проверку допущения о независимости. (По этому критерию выполняется только проверка независимости, то есть равномерность распределения мы не проверяем.) Рассмот- рим последовательность значений Ut (или, что тоже самое, последовательность
7.4. Тестирование генераторов случайных чисел 483 значений Zi) для непрерывных последовательностей с максимальной длиной, в ко- торых значения U( монотонно возрастают. Такая последовательность называется восходящей серией. Например, рассмотрим последовательность Uit U2,.... Ui0:0,86; 0,11; 0,23; 0,03; 0,13; 0,06; 0,55; 0,64; 0,87; 0,10. Она начинается с восходящей серии длиной 1 (0,86), за ней следует восходящая серия длиной 2 (0,11; 0,23), затем еще одна серия длиной 2 (0,03; 0,13), после нее серия длиной 4 (0,06; 0,55; 0,64; 0,87) и, наконец, еще одна серия длиной 1 (0,10). В последовательности из п значений Ц определяем число восходящих серий длиной 1,2,3,4,5 и > 6, а затем вычисляем г _ [число восходящих серий длиной i для i =1, 2,..., 5; [число восходящих серий длиной > 6 для г - 6. (Алгоритм для вычисления значений г, можно найти в задаче 7.8. Для десяти вы- шеприведенных значений Ut получаем т\ - 2, г2 - 2, г3 = 0, г4 -1, rs = 0 и г6 - 0.) Зна- чит, статистический критерий составляет •tee Я = - Ё S Oi। )<rj ~ > i-1 j-l где — элемент (i, j) матрицы 45294 9044,9 13568 18 091 22 617 27 892' 9044,9 18 097 27 139 36187 45 234 55 789 13568 27 139 40 721 54281 67 852 83685 18 091 38187 54 281 72 414 90 470 111580 22 615 45 234 67 852 90 470 113262 139 476 27 892 55 789 83685 111580 139 476 172 860 a bt определяется по формуле (Ъ h h Ч-Г1 5 11 19 29 1 A 2”"’ 6? <6’24’ 120’720 ’ 5040’840J' Информацию о происхождении этих констант вы найдете в работе Кнута [Knuth, 1998а, р. 66-69]’. Вышеприведенные значения имеют точность до пяти знача- щих разрядов. Для больших значений п (Кнут рекомендует использовать п > 4000) статистический критерий R будет иметь приближенное распределение -«хи-квад- рат» с 6 степенями свободы при нулевой гипотезе о том, что значения U, являются независимыми и одинаково распределенными случайными переменными. Пример 7.7. Мы подвергли поток 4 генератора из приложения 7А проверке по критерию серий, использовав п - 5000, и получили значения (rlt г2,.... г6) - (808,1026,448,139,43, 4), приводящее к значению критерия R - 9,3. Поскольку значение Х^о.эо “ 10,6, мы не оп- ровергаем гипотезу о независимости величин на уровне v “ 0,10. Проверку по критерию восходящих серий можно перевести в проверку по кри- терию нисходящих серий; при этом константы а# и Ь{ будут теми же. Программы на языке FORTRAN для проверок по критериям восходящих и нисходящих серий приведены в работе Графтона [Grafton, 1981]. Существует и ряд других проверок * Knuth D. Е. The Art of Computer Programmin. — 3d ed. — S.Addison Wesley Longman, 1998. — Vol. 2. - p. 66-69.
484 Глава 7. Генераторы случайных чисел по критерию серий, например подсчет количества значений в восходящих или нисходящих сериях одной последовательности или просто подсчет числа серий без учета их длины; сведения по этим вопросам можно найти в работах Бенкса, Карсона и Нельсона (Banks, Carson and Nelson, 1996, p. 303-311], а также Фишма- на [Fishman, 1978, p. 373-376]. Кроме того, вспомните обзор критериев серий в разделе 6.3. Исходя из того, что критерии серий позволяют установить только не- зависимость величин (но не равномерность распределения), имеет смысл исполь- зовать проверки по критерию серий перед проверками по критерию «хи-квадрат» или критерию серий, поскольку два последних теста неявно предполагают незави- симость величин. Кнут считает, что критерий серий имеет большую мощность, чем критерии «хи-квадрат», так как многие генераторы проходят проверки по критерию «хи-квадрат» и критерию серий, но не по критерию серий. Он объясняет это тем, что ЛКГ с небольшими множителями и приращениями имеют тенденцию к генерированию более длинных серий, чем это вероятно для истинно независи- мых и равномерно распределенных величин U{. Последний тип эмпирических тестов, который мы рассмотрим, является пря- мым способом, чтобы определить, показывают ли сгенерированные U{ заметную корреляцию. При этом просто вычисляется оценка корреляции в интервалах) -1, 2,..., Z для некоторого значения Z. Как уже говорилось в разделе 4.3, корреляция в интервале j последовательности Xit Х2,... случайных переменных определяется как р, - Cj/Co, где G - Cov(Xj, xity) - ад, Ху+>) - ад)ад+>) представляет собой ковариацию между элементами последовательности, разде- ленными интервалом); учтите: Со = Уаг(Ху). Тогда мы допускаем, что процесс яв- ляется ковариационно-стационарным (см. раздел 4.3). При таких условиях нас интересует Xt - Ut и другие гипотезы о том, что является равномерно распреде- ленной величиной в интервале [0, 1] и имеет математическое ожидание E(U{) - = 1/2 и дисперсию УагЩ) “ 1/12, а значит, ковариацию Q - E(U{, Ui+}) - 1/4 и ко- вариацию Со-1/12. В данном случае значение р, - 12E(Uit Ui+j) - 3. Следовательно, из последовательности сгенерированных значений Ub U2,..., Un можно получить оценку ру с помощью оценки Е( Uit Ui+j) непосредственно по Uu Ul+j, Ul+V и т. д., что- бы затем найти 19 * ~3' «т 1 >=о где h - L(n - 1 )/jJ - 1. Если допустить, что величины ^ являются независимыми, окажется [Banks, Carson and Nelson, 1996, p. 312], что ,7 „ . 13/i + 7 Var(p. ) =----- 1 (Л + 1) По нулевой гипотезе р,- - 0, и, предполагая, что величина п имеет большое зна- чение, можно показать, что статистический критерий А - J’ 1
7.4. Тестирование генераторов случайных чисел 485 имеет приближенное стандартное нормальное распределение. Таким образом, мы получаем проверку корреляции нулевого интервала j на уровне а, опровергая дан- ную гипотезу, если |Aj > Проверка должна быть выполнена для нескольких значений j, поскольку может случиться, что, например, в интервалах 1 или 2, нет ощутимой корреляции, но существует зависимость между значениями Цв интер- вале 3 из-за некоторой аномалии генератора. Пример 7.8. Мы проверили потоки 5-10 генератора из приложения 7А на наличие кор- реляции соответственно в интервалах 1-6 при п - 5000 в каждом случае, то есть мы про- верили поток 5 на наличие корреляции в интервале 1, поток 6 на наличие корреляции в интервале 2 и т. д. Значения Аи А2,..., А6 составили соответственно 0,90; -1,03; -0,12; -1,32; 0,39 и 0,76. Ни одно из них существенно не отличается от 0 в сравнении с распре- делением N(0,1) на уровне а - 0,10 (или меньшем). Следовательно, среди первых 5000 значений в этих потоках не проявляется автокорреляция в указанных интервалах. Вы уже знаете, что с помощью этого теста специально проверяется корреляция отрезка j начиная со значения 1\; таким же образом можно было бы проверить кор- реляцию отрезка; начиная с U2 (при использовании величин U2, U2^, U2+y,... в оп- ределении pj), то же можно выполнить для других начальных значений в последо- вательности. Как уже говорилось выше, мы рассмотрели лишь четыре из множества возмож- ных проверок. Например, проверка по критерию Колмогорова-Смирнова, опи- санная в разделе 6.6.2 (для случая, когда известны параметры), может применять- ся вместо проверки по критерию «хи-квадрат» для тестирования равномерности одномерного распределения. Было разработано несколько эмпирических тестов в связи с тем, что предполагалось использовать проверяемый генератор для моде- лирования относительно простой стохастической системы с известными (сово- купными) критериями качества, которые будут оцениваться при моделировании. Результаты моделирования сравниваются некоторым образом с известными точ- ными «ответами», возможно, при помощи критерия «хи-квадрат». Простой слу- чай использования генератора подобным образом представлен в задаче 7.10. Ру- дольф и Хокинс [Rudolf and Hawkins, 1976] проверили несколько генераторов, моделируя с их помощью процессы Маркова. Дудевич и Рейлли [Dudewicz and Ralley, 1981] разработали пакет под названием TESTRAND, состоящий из 20 раз- личных генераторов и 14 тестов. В заключение отметим, что следует проводить максимально возможное количество эмпирических проверок. Эмпирические тесты, описанные в данном разделе, имеют ряд отличительных свойств. Чтобы читатель мог убедиться в этом, мы подвергли имеющий плохую ре- путацию генератор RANDU (определяемый по Zt - 65 539Z,_i(mod 231) с начальным значением Zo - 123 456 789) тем же проверкам, которые были представлены в при- мерах 7.5-7.8. В результате получена следующая статистика. Критерий «хи-квадрат» х2 “ 4202,0 Критерий серий Х2(2) - 4202,3 Х2(3)-= 16 252,3 Критерий восходящих серий R - 6,3 Проверка корреляции Все А} были незначительными
486 Глава 7. Генераторы случайных чисел Если в интервале [0,1] и в единичном квадрате равномерность распределения представляется приемлемой, то огромное значение статистического критерия се- рий указывает на отсутствие у данного генератора равномерности распределения в единичном кубе. Некорректная работа генератора RANDU в первую очередь связана с его неспособностью справиться с тремя измерениями (о причине вы уз- наете из раздела 7.4.2). К сожалению, RANDU может оказаться встроенной внут- ренней функцией. Поэтому ни при каких обстоятельствах не следует использовать данный генератор, особенно теперь, когда доступны надежные и легко переноси- мые программы вполне приемлемых генераторов (см. приложения 7А и 7Б). Один из потенциальных недостатков эмпирических тестов состоит в том, что они имеют локальный характер, то есть в них исследуется лишь та часть цикла (на- пример, для ЛКГ), которая действительно применялась для генерирования значе- ний Uf при проверке. Поэтому о том, как работает генератор в остальных частях цикла, неизвестно. Однако локальный характер эмпирических проверок имеет свои преимущества, он позволяет исследовать случайные числа, которые позднее будут использоваться при моделировании. (Часто мы можем заранее вычислить, сколько случайных чисел будет использоваться при моделировании или, по край- ней мере, дать завышенную оценку этого числа, посредством анализа модельных операций и методов, применяемых для генерирования необходимых случайных величин.) К тому же весь поток случайных чисел можно проверить эмпирически, как можно надеяться, без существенных затрат. (Все проверки в примерах 7.5-7.8 производились с помощью одной программы на языке FORTRAN, что заняло на старом компьютере с ограниченными возможностями всего несколько секунд). Более глобальные эмпирические проверки можно осуществить, повторяя полное испытание несколько раз и статистически сравнивая получаемые значения стати- стических критериев с распределением по нулевой гипотезе; такой подход предло- жен в работе Фишмана [Fishman, 1978, р. 371-372]. Скажем, проверку по крите- рию восходящих серий в примере 7.7 можно выполнить 100 раз с использованием 100 отдельных потоков случайных чисел одного и того же генератора, каждый из которых имеет длину 5000. В результате будет получено 100 независимых значе- ний R, которые можно сравнить с распределением «хи-квадрат», имеющим шесть степеней свободы, используя, например, критерий Колмогорова-Смирнова со все- ми известными параметрами. Подход, предложенный Фишманом, можно исполь- зовать для определения «плохих» частей в пределах цикла ЛКГ. Подобная провер- ка проведена для мультипликативного ЛКГ с простым модулем т - 231 - 1 и а - - 630 360 016 и такая «плохая» часть цикла обнаружена и исключена из програм- мы SIMSCRIPT П.5 [Fishman, 1973а, р. 183]. Отметим, что в программе GPSS/H в стандартные выходные данные включены результаты проверки равномерности распределения случайных чисел по критерию «хи-квадрат», которые действи- тельно использовались при моделировании. Однако следует ожидать того, что да- же «безупречный» генератор случайных чисел иногда может давать «неприемле- мую» статистику, лежащую в основе критерия: фактически это должно случиться с уровнем вероятности а, заданным для выполняемой проверки. Следовательно, можно утверждать, что подобный поиск «плохих» частей в цикле — не очень удач- ная идея.
7.4. Тестирование генераторов случайных чисел 487 7.4.2. Теоретические тесты В этом разделе кратко рассмотрим теоретические тесты для генераторов случай- ных чисел. Поскольку подобные тесты довольно сложны и требуют много матема- тических вычислений, просто охарактеризуем их. Подробное описание таких тес- тов содержится в работах Фишмана [Fishman, 1978, р. 358-371], Кнута [Knuth, 1998а, р. 80-115] и Л’Экьюэра [L’Ecuyer, 1990b, 1994b]. Как упомянуто ранее, тео- ретические тесты не требуют генерирования значений Uit они применяются априо- ри, то есть позволяют определить, насколько хорошо будет работать генератор исходя из его структуры и значений констант. Теоретические тесты также отлича- ются от эмпирических тем, что они являются глобальными, то есть с их помощью исследуется поведение генератора по его полному циклу. И как уже говорилось в разделе 7.4.1, вопрос о том, какие проверки предпочтительнее — локальные или глобальные, — остается спорным. Глобальные проверки представляются более подходящими, но вообще не указывают, насколько хорошо будет вести себя от- дельная часть цикла. Иногда можно вычислить «выборочное» среднее, дисперсию и корреляции по всему циклу непосредственно из констант, определяющих генератор. Многие из полученных таким образом результатов приводятся в работе Кеннеди и Джентла [Kennedy and Gentle, 1980, р. 139-143]. Например, в ЛКГ с полным периодом сред- нее значение Uit взятое по полному циклу, составляет 1/2 - 1/(2т), то есть оно приближается к желательной величине 1/2, если используются очень большие (исчисляющиеся в миллиардах) значения т (см. задачу 7.14). Таким же способом можно найти «выборочную» дисперсию значений L7; по всему циклу и получить 1/12 - 1/(12m2), что близко к 1/12, дисперсии распределения U(0, 1). Кеннеди и Джентл также рассматривают «выборочные» корреляции для ЛКГ. Эти форму- лы кажутся удобными для применения, но могут вводить в заблуждение. Напри- мер, с целью минимизации значения, полученного в результате вычисления «вы- борочной» корреляции с запаздыванием 1 для ЛКГ с полным периодом, значение а выбирается близким к Vm, а исходя из других соображений статистики этот вы- бор оказывается неудачным. В работе Нидеррейтера [Niederreiter, 1977, 1978b] приводятся скрупулезные исследования независимых качеств ЛКГ. Марсалья [Marsaglia, 1968] пришел к довольно неожиданному выводу. Соглас- но его наблюдениям, наиболее известные теоретические тесты основываются на том, что «случайные числа попадают в основном на плоскости». Другими словами, если значения Uit U2,... представляют последовательность случайных чисел, сгене- рированных ЛКГ, то все перекрывающиеся «/-мерные кортежи (Ц, U2.Ud), (U2, U3,.... 17j+1),... будут попадать на относительно немногочисленные («/ - 1)-мерные гиперплоскости, проходящие через «/-мерный единичный гиперкуб [0, l]rf. Напри- мер, если d - 2, пары (Ц, U2), (U2, U3),... разместятся в форме «кристаллической структуры» или «кристаллической решетки» семейством параллельных прямых, проходящих через один и тот же единичный квадрат. (Прямые различных се- мейств, в отличие от прямых одного семейства, не являются параллельными друг другу.) На рис. 7.1 показаны все пары (Ц, t/i+1) для ЛКГ с полным периодом, опре- деленным как Zt - (372/j + 1) (mod 64). Явная регулярность расположения, ко- нечно, не кажется «случайной», пары заполняют единичный квадрат довольно
488 Глава 7. Генераторы случайных чисел хорошо (по крайней мере, большего ожидать при таком малом модуле трудной Однако, изменив лишь множитель о с 37 на 21, имея при этом все тот же генератор с полным периодом, мы получаем пары, изображенные на рис. 7.2, в этом случае есть участки единичного квадрата, где никогда не будет получена пара значений Uit что должно настораживать. Моделирование с использованием такого генерато- ра почти наверняка даст недостоверные результаты. В статьях Рипли [Ripley, 1987, р. 23-40] и Л’Экьюэра [L’Ecuyer, 1987,1988] приведено несколько интерес- ных графиков такого типа для различных генераторов. Рис. 7.1. Двухмерная решетчатая структура для ЛКГ с полным периодом и параметрами т - 64, а - 37, с - 1 Рис. 7.2. Двухмерная решетчатая структура для ЛКГ с полным периодом и параметрами т - 64, а - 21, с - 1
7.4. Тестирование генераторов случайных чисел 489 Для трех измерений тройки (Ц, L7j+1, Ц+2), которые получены с помощью гене- ратора (см. рис. 7.1), показаны на рис. 7.3, так как они видимы с определенной точ- ки вне единичного куба. В этом случае явно видны плоскости, проходящие через куб. Наличие такой проблемы характерно для ЛКГ RANDU (т = 231, а = 216 + 3 = - 65 539, с = 0), который производит тройки значений Ц (из них около полумил- лиарда значений в периоде допускают перекрытие), попадающие только на 15 па- раллельных плоскостей, проходящих через единичный куб. Подобная ситуация продемонстрирована для 2000 троек значений, на рис. 7.4 ясно видны 15 плоско- стей. Таким образом, становится понятно, почему генератор RANDU при провер- ке серий по трем измерениям, о которой говорилось в конце раздела 7.4.1, дает плохие характеристики. Как спектральный тест, изначально разработанный Ковейю и Мак-Ферсоном [Coveyou and MacPherson, 1967], так и структурный тест, который независимо друг от друга предложили Бейер, Руфф и Уилльямсон [Beyer, Roof and William- son, 1971], а также Марсалья [Marsaglia, 1972], призваны оказать помощь в опреде- лении плотности заполнения единичного гиперкуба [0, l]rf «/-мерными кортежами значений Ub выданных определенным ЛКГ. Под этим мы подразумеваем следую- щее: поскольку все возможные «/-мерные кортежи ограничены размещением в се- мействах параллельных плоскостей, они не могут попадать на любое пространство между смежными плоскостями в одном семействе. Если две такие плоскости нахо- дятся далеко друг от друга, генератор будет оставлять большие промежутки в этом пространстве, а значит, он будет плохо работать. Два указанных теста по-разному определяют размер таких пробелов. Когда один из них или они оба указывают на наличие в единичном гиперкубе [0, 1]J больших пробелов, в которых не может быть «/-мерных кортежей, мы делаем вывод, что проверяемый ЛКГ будет плохо ра- ботать, по крайней мере, в d измерениях. Например, генератор, представленный на рис. 7.1, покажет лучшие результаты по спектральному и структурному тестам в двух измерениях, чем генератор, изображенный на рис. 7.2 (хотя ни один из них не является надежным генератором). Генератор RANDU, как можно предполо- жить, взглянув на рис. 7.3, плохо работает в трех измерениях. Обычно эти тесты применяются в отдельности для каждого измерения, начиная от d=2 и заканчивая d- 32. В своих работах Хоглин [Hoaglin, 1976], Ковейю и Мак-Ферсон [Coveyou and MacPherson, 1967], а также Фишман и Мур [Fishman and Moore, 1986] показа- ли, что один и тот же ЛКГ может безупречно проходить тесты в одних измерениях и иметь недостатки в других. Поэтому результаты описываемых тестов следует рассматривать в аспекте предполагаемого использования и тот же ЛКГ. Часто по обоим тестам, как указано в работе Рипли [Ripley, 1983b], бывает получена одина- ковая информация. Хоглин и Кинг [Hoaglin and King, 1978], а также Аткинсон [Atkinson, 1980] утверждают, что оригинальная версия спектрального теста долж- на применяться только к ЛКГ с полным периодом (подразумевается рассмотрение лишь смешанных генераторов согласно теореме 7.1). Аткинсон изменил тест для мультипликативных генераторов (у них не может быть полного периода). В статье Хопкинса [Hopkins, 1983] приведена предназначенная для выполнения спектраль- ного теста программа на языке FORTRAN, комментарии к которой вы найдете в статье Хилла [Hill, 1985].
490 Глава 7. Генераторы случайных чисел Рис. 7.3. Трехмерная решетчатая структура для ЛКГ с полным периодом и параметрами т “ 64, а - 37, с “ 1 Рис. 7.4. Трехмерная решетчатая структура для 2000 троек значений, полученных от ЛКГ RANDU с параметрами т - 231, а -216 + 3 - 65 539, с-0 7.4.3. Некоторые общие замечания по тестированию Число, разнообразие и диапазон сложности тестов для генераторов случайных чи- сел в полном смысле слова ставит в тупик. Что еще хуже, не существует (и, навер- ное, не будет существовать) единого мнения относительного того, какие тесты лучше. Однако, невзирая на любые проверки, даже если они проводятся в огром- ном количестве, полностью убедить кого-либо в том, что какой-то из генераторов
Приложение 7А 491 является «наилучшим», нельзя. Однако можно посоветовать подбирать тесты для генератора согласно замыслу его использования. Это приведет, например, к изуче- нию поведения пар значений U{ (вероятно, с помощью проверки по двухмерному сериальному критерию), если случайные числа действительно используются па- рами при моделировании. В более широком смысле, этот совет подразумевает, что нужно быть более осторожными в выборе и тестировании генератора случайных чисел, если моделирование, в котором он будет использоваться, является очень дорогостоящим, требует результатов высокой точности или же представляет со- бой важную составляющую крупных исследований. Приложение 7А Компьютерные программы для мультипликативного ЛКГ с простым модулем В приложении приведены компьютерные программы на языках FORTRAN и С для мультипликативного ЛКГ с простым модулем т - т* = 231 - 1 “ 2 147 483 647 и множителем а “ а2 = 630 360 016 (см. раздел 7.2.2). Коды этих программ можно загрузить с сайта по такому адресу: www.mhhe.com/engcs/industrial/lawkelton/stu- dent/code.mhtmL В основе всех этих программ лежит программа на языке FOR- TRAN, разработанная Марсе и Робертсом [Marse and Roberts, 1983]. Целые числа в интервале от -т* до т* должны быть представлены корректно и требуют пра- вильной обработки — часто так и бывает при реализации языков FORTRAN и С на большинстве компьютеров. В настоящем приложении продемонстрирована функ- ция NXSEED языка FORTRAN из работы Марсе и Робертса [Marse and Roberts, 1983], которая возвращает начальное число для любого потока; предполагается, что все потоки имеют длину 100 000. Если такой диапазон целых чисел недоступен, есть несколько реализаций гене- ратора с тем же самым модулем т*, но с (менее подходящим) множителем at - -16 807 (см. версию программы с удвоенной точностью DOUBLE PRECISION на языке FORTRAN в работе Шрейджа [Schrage, 1979] и несколько реализаций на языке Паскаль в работе Парка и Миллера [Park and Miller, 1988]). Поскольку в указан- ных программах используется скорее арифметика чисел с плавающей запятой, а не целых чисел, они работают медленнее. С этой точки зрения более привлека- тельной является 16-битовая программа на языке Паскаль, приведенная в работе Л’Экьюэра [L’Ecuyer, 1988]; она реализует сложный генератор, о котором расска- зывалось в разделе 7.3.2. 7А.1. Программа на языке FORTRAN В листинге 7.1 показан код на языке FORTRAN программы Марсе и Робертса [Marse and Roberts, 1983]; он слегка изменен, для того чтобы обеспечить управле- ние начальными числами с помощью точек входа ENTRY, а также применяемыми по умолчанию встроенными начальными числами для 100 потоков, которые распола- гаются с промежутками в 100 000 значений. В комментариях, приведенных в коде,
492 Глава 7. Генераторы случайных чисел сообщаются подробности относительно его использования. Мы опробовали эту программу на различных компьютерах и компиляторах, она применялась в приме- рах на языке FORTRAN из глав 1 и 2. Листинг 7.1. Код на языке FORTRAN для мультипликативного ЛКГ с простым модулем и параметрами т - 231 - 1 и а - 630 360 016 [Marse and Roberts, 1983] * Мультипликативный линейный конгруэнтный генератор с простым модулем * ZU) - (630360016 * Z(I - 1)) (M0D(2**31 - 1)). создан на основании * доступного генератора случайных чисел UNIRAN Марсе и Робертса. * Поддерживает множественные потоки (100) с начальными числами. * располагающимися с промежутками в 100 000 значений. * Повсюду входной аргумент ISTRM, определяющий номер нужного потока. * должен иметь тип INTEGER. * Применение: (Три варианта) * * 1. Чтобы получить следующее случайное число с распределением U(0.1) * из потока ISTRM, выполняем * U - RAND(ISTRM) * Переменная U типа REAL будет содержать следующее случайное число. * 2. Чтобы присвоить начальному числу потока ISTRM нужное значение IZSET, * выполняем * CALL RANDST(IZSET.ISTRM) * IZSET должно быть константой или переменной типа INTEGER, которой * присвоено нужное начальное число от 1 до 2147483646 (включительно). * Начальные числа по умолчанию для всех 100 потоков указаны в коде. * 3. Чтобы передать текущее (последнее применявшееся) целое число * в последовательности, генерируемой из потока ISTRM. в переменную IZGET * типа INTEGER, выполняем * IZGET - IRANDG(ISTRM) INTEGER B2E15.B2E16.HI15.HI31,ISTRM.IZSET.L0W15.L0WPRD.M0DLUS. & MULTI.MULT2.0VFLDW.ZI.ZRNG(100) INTEGER IRANDG.RANDST * Принудительно сохраняем ZRNG между обращениями. SAVE ZRNG * Определяем константы. DATA MULTI.MULT2/24112.26143/ DATA B2E15.B2E16.MODLUS/32768.65536.2147483647/ * Устанавливаем начальные числа для всех 100 потоков. DATA ZRNG/1973272912. 2В1629770. 20006270.12В06В9831.2096730329. & 1933576050. 913566091. 246780520.1363774876. 604901985. & 1511192140.1259851944, В24064364, 150493284. 24270В531. & 75253171.1964472944.1202299975. 233217322.1911216000. & 726370533. 403498145. 993232223.1103205531. 762430696.
Приложение 7А 493 йо0ойоео0©йойойойойойо0ой»0ой» 1922803170.1385516923. 76271663. 413682397. 726466604. 336157058.14326503В1,1120463904. 595778810. В77722В90, 1046574445, 68911991.2088367019. 748545416, 622401386. 2122378830, 640690903.1774806513.2132545692,2079249579. 7В130110. 852776735.1187867272.1351423507.1645973084. 1997049139, 922510944,2045512870, 898585771. 243649545. 1004818771, 773686062, 403188473. 372279877.1901633463. 498067494.2087759558. 493157915. 597104727.1530940798. 1В14496276, 536444882.1663153658. 855503735. 67784357. 1432404475, 6196910ВВ. 119025595, 880802310, 176192644. 1116780070, 277854671,1366580350.1142483975.2026948561. 1053920743, 786262391.1792203830.1494667770.1923011392. 1433700034.1244184613.1147297105. 5397127В0,1545929719, 190641742,1645390429. 264907697, 6203В9253.1502074852. 927711160, 364849192.2049576050. 638580085. 547070247/ Генерируем следующее случайное число. ZI - ZRNG(ISTRM) HI15 - ZI / В2Е16 LOWPRD - (ZI - HI15 * 82Е16) * MULTI LOW15 - LOWPRD / B2E16 HI31 - HI15 * MULTI + L0W15 OVFLOW - HI31 / B2E15 ZI - (((LOWPRD - L0W15 * B2E16) - MODLUS) + & (HI31 - OVFLOW * B2E15) * B2E16) + OVFLOW IF (ZI .LT. 0) ZI - ZI + MODLUS HI15 - ZI / B2E16 LOWPRD - (ZI - HI15 * B2E16) * MULT2 L0W15 - LOWPRD / B2E16 HI31 - HI15 * MULT2 + L0W15 OVFLOW - HI31 / B2E15 ZI - (((LOWPRD - L0W15 * B2E16) - MODLUS) + & (HI31 - OVFLOW * B2E15) * B2E16) + OVFLOW IF (ZI .LT. 0) ZI - ZI + MODLUS ZRNG(ISTRM) - ZI RAND - (2 * (ZI / 256) + 1) / 16777216.0 RETURN Присваиваем текущей переменной ZRNG для потока ISTRM значение IZSET. ENTRY RANDST(IZSET.ISTRM) ZRNG(ISTRM) - IZSET RETURN Возвращаем текущее значение ZRNG для потока ISTRM. ENTRY IRANDG(ISTRM) IRANDG - ZRNG(ISTRM) RETURN END
494 Глава 7. Генераторы случайных чисел 7А.2. Программа на языке С В листинге 7.2 показана программа для версии того же генератора на языке С стан- дарта ANSI (с использованием прототипов функций). В коде присутствуют три функции, что отражено в комментариях. В листинге 7.3 приведен заголовочный файл (Legrand.h), который пользователь должен включить в программу с помощью инструкции #include, чтобы объявить функции. Мы использовали эту программу в примерах для языка С из глав 1 и 2. Листинг 7.2. Код на языке С для мультипликативного ЛКГ с простым модулем и параметрами я=231 - 1 и а ° 630 360 016 [Marse and Roberts, 1983] /* Мультипликативный линейный конгруэнтный генератор с простым модулем ZCi) - (630360016 * Z[i - 1]) (mod(pow(2.31) - 1)) создан на основании доступного генератора случайных чисел UNIRAN Марсе и Робертса. Поддерживает множественные потоки (100) с начальными значениями, располагающимися с промежутками в 100 000 значений. Повсюду входной аргумент stream, определяющий номер нужного потока, должен иметь тип int. Заголовочный файл legrand.h должен быть включен в вызывающую программу (include "legrand.h") перед использованием следующих функций. Применение: (Три варианта) 1. Чтобы получить следующее случайное число с распределением 1X0.1) из потока stream, выполняем и - lcgrand(stream): где legrand - функция типа float. Переменная и типа float будет содержать следующее случайное число. 2. Чтобы присвоить начальному числу потока stream нужное значение zset. выполняем lcgrandst(zset. stream); где legrandst - функция типа void, a zset должна быть переменной типа long, которой присвоено нужное начальное число от 1 до 2147483646 (включительно). Начальные числа по умолчанию для всех 100 потоков указаны в коде. 3. Чтобы передать текущее (последнее применявшееся) целое число в последовательности, генерируемой из потока stream, в переменную zget типа long, выполняем zget - lcgrandgt(stream); где legrandgt - функция типа long. */ /* Определяем константы. */ #define M0DLUS 2147483647 tfdefine MULTI 24112 #define MULT2 26143 /* Устанавливаем начальные числа для всех 100 потоков. */ static long zrng[] - { 1. 1973272912. 281629770. 20006270. 913566091. 2467В0520.1363774876. 824064364. 150493284. 242708531. 233217322.1911216000. 726370533. 762430696.1922803170.1385516923. 336157058,1432650381.1120463904. 68911991.2088367019. 748545416. 12В0689831.2096730329.1933576050. 604901985.1511192140.1259851944. 75253171.1964472944.1202299975. 40349В145. 993232223,1103205531. 76271663. 413682397. 726466604. 595778810. В77722В90,1046574445. 622401386,2122378830. 640690903.
Приложение 7А 495 1774806513.2132545692.2079249579. 78130110. 852776735.1187867272. 1351423507.1645973084,1997049139. 922510944,2045512870. В9В5В5771, 243649545.1004818771. 773686062. 403188473. 372279877.1901633463. 498067494.20В775955В. 493157915. 597104727.1530940798.1814496276, 536444882.1663153658. 855503735. 67784357.1432404475. 619691088. ,;‘119025595. 880802310. 176192644.1116780070. 277854671.1366580350. '/1142483975.2026948561,1053920743. 786262391.1792203830.1494667770. <1923011392.1433700034.1244184613.1147297105. 539712780.1545929719, 190641742.1645390429. 264907697. 6203В9253.1502074852, 927711160. 364849192.2049576050. 638580085. 547070247 }; /* Генерируем следующее случайное число. */ float lcgrand(int stream) { long zi. lowprd. hi31; z1 - zrngfstream]: lowprd - (zi & 65535) * MULTI; Ы31 - (zi > 16) * MULTI + (lowprd > 16); z1 - ((lowprd & 65535) - MODLUS) + ((hi31 & 32767) < 16) + (hi31 > 15); if (zi < 0) z1 +- MODLUS; lowprd - (zi & 65535) * MULT2; М31 - (zi > 16) * MULT2 + (lowprd > 16): zi - ((lowprd & 65535) - MODLUS) + ((hi31 & 32767) < 16) + (hi31 > 15); if (zi < 0) Zi +- MODLUS; zrngfstream] - zi; j return (zi > 7 | 1) / 16777216.0; void legrandst (long zset. int stream) 7* Присваиваем текущей переменной zrng для потока stream значение zset. */ { zrngfstream] - zset; ) long legrandgt (int stream) /* Возвращаем текущее значение zrng для потока stream. */ { return zrngfstream]; ) Листинг 7.3. Заголовочный файл на языке С (legrand.h) для программы, приведенной в листинге 7.2 /* Следующие три объявления используются для генератора случайных чисел legrand и связанных с ним функций legrandst и legrandgt, предназначенных для управления начальными значениями. Этот файл (под названием legrand.h) должен быть включен во все программы, где эти функции используются, при помощи инструкции #include “legrand.h“ перед тем. как вы укажете функции. */ float lcgrand(int stream): void Icgrandstdong zset, int stream); long legrandgtdnt stream):
496 Глава 7. Генераторы случайных чисел 7А.З. Получение начальных значений для потоков В листинге 7.4 показана функция FORTRAN NXSEED из работы Марсе и Робертса [Marse and Roberts, 1983], которая в качестве входного значения принимает нуж- ный номер потока ISTRM (значение типа INTEGER) и возвращает начальное число этого потока. Предполагается, что потоки — это смежные отрезки длиной 100 000 случайных чисел каждый. Таким образом, например, NXSEEDO) вернет значение 20 006 270. Предполагается, что начальным значением для потока 1 является 1 973 272 912. Поскольку длина цикла составляет 231 - 1 - 2 147 483 647, всего су- ществует 21 474 потока, и функция NXSEED находит для них начальные числа. Как уже говорилось, NXSEED определяет начальные числа для каждого потока 1, 2, ISTRM, но возвращает только последнее из них; конечно, ее можно написать так, чтобы она возвращала их все в векторе типа INTEGER в списке аргументов. Листинг 7.4. Функция FORTRAN NXSEED, возвращающая начальное значение для любого из потоков (длиной 100 000 значений) генератора, представленного в листингах 7.1 и 7.2 [Marse and Roberts, 1983] INTEGER FUNCTION NXSEED!ISTRM) * Функция из работы Марсе и Робертса, возвращающая начальное значение * для потока ISTRM в генераторе, представленной в листингах 7.1 и 7.2. * Допускается, что все потоки имеют длину 100 000 случайных чисел. * Применение: Чтобы передать начальное значение ISTRM в переменную ISEED * типа INTEGER, выполняем * ISEED - NXSEED!ISTRM) * Входной аргумент ISTRM типа INTEGER с 1 по 21 474. INTEGER I.SEED,ISTRM DOUBLE PRECISION Z Z - 1973272912 DO 10 I - 1. ISTRM Z - DMOD! 715.D0*Z. 2147483647.00) Z - DMOD!105B.DO*Z. 2147483647.DO) Z - DMOD!1385.DO*Z. 21474B3647.D0) 10 CONTINUE NXSEED - IDINT(Z) RETURN END Приложение 7Б Машинонезависимая программа на языке С для комбинированного ЛКГ В этом приложении будет представлена функция mrand языка С стандарта ANSI, посредством которой реализуется комбинированный ЛКГ, описанный в разде- ле 7.3.2 (из работы Л’Экьюэра [L’Ecuyer, 1999]). Указанный генератор поддержи- вает множественные потоки (до 10 000) с начальными векторами, расположенны-
Приложение 7Б 497 ми с интервалами 1016. Для этой программы требуется, чтобы все целые числа от -253 до 253 были представлены в форме с плавающей запятой, что обычно выполня- ется при использовании машин с длиной слова, равной 32 битам, и компиляторов языка С, которые соответствуют стандарту IEEE, регламентирующему хранение чисел с плавающей запятой и выполнение вычислений с ними. Коды всех про- грамм можно загрузить с сайта по адресу: www.mhhe.com/engcs/industrial/Lawkelton/ student/code.mhtmL В листинге 7.5 приведена программа для этого генератора, состоящая из трех функций, что отражено в комментариях к коду. В листинге 7.6 показан заголовоч- ный файл (mrand.h), который должен быть включен в вызывающую программу пе- ред основной функцией с помощью инструкции #1 ncl ude. В листинге 7.7 представ- лены 23 первые и 4 последние строки (в них показаны начальные векторы для потоков 1-20 и 9998-10 000) из файла mrand_seeds.h, где содержатся начальные векторы для 10 000 потоков, расположенных с интервалами 1016. Эти программы применялись на разных компьютерах и компиляторах, хотя некоторые компиля- торы выдавали предупреждения о размере чисел в файле mrand.h (появление по- добных предупреждений обычно можно отключить с помощью переключателя компилятора, такого как -w в некоторых компиляторах языка С UNIX). Хотя мо- жет понадобиться, чтобы вызывающая программа загрузила математическую биб- лиотеку (с помощью переключателя -1m на компиляторах языка С UNIX). Листинг 7.5. Программа на языке С для комбинированного ЛКГ, определенного в разделе 7.3.2 на основании работы [L’Ecuyer, 1999] /* Комбинированный ЛКГ, описанный в разделе 7.3.2 (из работы Л’Экыоэра [L’Ecuyer. 1999]). Поддерживает множественные потоки (10 000) с начальными векторами, располагающимися с промежутками в 10 000 000 000 000 000 значений. Повсюду входной аргумент stream, определяющий номер нужного потока, должен иметь тип int. 8 код включается заголовочный файл mrand_seeds.h, поэтому он должен находиться в соответствующем каталоге. Заголовочный файл mrand.h должен быть включен в вызывающую программу (#include "mrand.h'*) перед использованием следующих функций. Применение: (Три варианта) 1. Чтобы получить следующее случайное число с распределением U(0.1) из потока stream, выполняем u - mrand(stream); где mrand - функция типа double. Переменная и типа double будет содержать следующее случайное число. 2. Чтобы присвоить начальному вектору потока stream нужный 6-мерный вектор, выполняем mrandst(zset. stream): где mrandst - функция типа void, a zset должна быть вектором типа double, позиции с 0 по 5 которого содержат нужный 6-мерный вектор потока (см. раздел 7.3.2). 3 * * * * * 3. Чтобы передать текущий (последний применявшийся) 6-мерный вектор из целых чисел в последовательности (для использования, например, в качестве начального вектора для последовательных независимых воспроизведений) позициям с 0 по 5 вектора zset типа double, выполняем mrandgt(zget. stream): где mrandgt - функция типа void. */ продолжение &
498 Глава 7. Генераторы случайных чисел Листинг 7.5 (продолжение) include "mrand_Seeds.h“ ♦define norm 2.3283066492957286-10 /* 1.0/(ml+l) */ ♦define norm2 2.328318825240738e-10 /* 1.0/(m2+l) *7 ♦define ini 4294967087.0 ♦define m2 4294944443.0 /* Генерируем следующее случайное число. */ double mranddnt stream) { long n; double p, • - S10 - dmg[stream][0]. sll - drng[stream][l]. s!2 - drng[stream3E2]. . s20 - drng[stream][3]. s21 - drng[stream][4], s22 r drng[stream][5]: p - 1403580.0 * sll - 810728.0 * S10; n - p / ml: pk*ml; if (p < 0.0) p +- ml; S10 - sll; sll - S12; S12 - p: p - 527612.0 * s22 - 1370589.0 * s20; n - p / m2; p — k*m2; if (p < 0.0) p +- m2; s20 - $21: s21 - s22; $22 - p: drng[stream][0] - slO; drng[stream][l] - sll; drng[stream][3] - s20; dmg[stream][4] - s21; drng[stream][2] - sl2; drng[stream][5] - s22; 1f (sl2 <- s22) return ((sl2 - s22 + ml) * norm); else return ((sl2 - s22) * norm); } /* Устанавливаем начальный вектор для потока stream. */ void mrandst(double* seed, int stream) { int i; for (1 - 0; i <- 5; ++i) drng[stream][i] - seed[i]; ) /* Получаем начальный вектор для потока stream. */ void mrandgtldouble* seed. 1nt stream) { int i; for (1 - 0; 1 <- 5: ++1) seed[i] - drng[stream][i]; ) Листинг 7.6. Заголовочный файл на языке С (mrand.h) для программы, представленной в листинге 7.5 /* Заголовочный файл mrand.h должен быть включен в программы, где используется функция mrand.c */ double mranddnt stream); void mrandst(double* seed, int stream); void mrandgt(double* seed. 1nt stream):
Задачи 499 Листинг 7.7. Фрагмент файла с начальными векторами (mrand_seeds.h) для программ из листингов 7.5 и 7.6 (полностью файл можно загрузить с сайта www.mhhe.com/engcs/industrial/lawkelton/student/code.mhtml) /* Заголовочный файл mrand_seeds.h. включенный в mrand.c */ static double drng[][6] - { 0. 0. 1, 0. 0. 1. 1772212344, 1374954571. 2377447708. 540628578. 1843308759. 549575061. 2602294560, 1764491502. 3872775590. 4089362440. 2683806282. 437563332. 376810349, 1545165407. 3443838735. 3650079346, 1898051052. 2606578666. 1847817841, 3038743716. 2014183350. 2883836363, 3242147124, 1955620878. 1075987441. 3468627582. 2694529948. 368150488. 2026479331. 2067041056. 134547324. 4246812979. 1700384422. 2358888058, 83616724. 3045736624. 2816844169, 885735878. 1824365395, 2629582008, 3405363962. 1835381773, 675808621. 434584068. 4021752986. 3831444678. 4193349505. 2833414845. 2876117643. 1466108979. 163986545. 1530526354. 68578399, 1111539974. 411040508, 544377427, 2887694751, 702892456, 758163486. 2462939166. 3631741414, 3388407961. 1205439229. 581001230, 3728119407. 94602786. 4267066799. 3221182590. 2432930550. 813784585, 1980232156. 2376040999. 1601564418, 2988901653. 4114588926. 2447029331. 4071707675. 3696447685. 3878417653, 2549122180. 1351098226. 3888036970, 1344540382. 2430069028. 197118588, 1885407936, 576504243. 439732583. 103559440. 3361573194, 4024454184. 2530169746. 2135879297. 2516366026, 260078159. 2905856966. 2331743881. 2059737664, 186644977. 401315249. 72328980. 1082588425. 694808921. 2851138195. 1756125381. 1738505503, 2662188364. 3598740668, 2834735415, 2017577369, 3257393066. 3823680297, 2315410613. 637316697. 4132025555. 3700940887. 838767760. 28185)4268, 1375004287. 2172829019. 560024289, 1830276631. 144885590, 1556615741. 1597610225. 1856413969. 1031792556, 1844191084. 1441357589. 3147919604, 199001354, 2555043119, 2023049680. 4184669824, 4074523931. 252765086. 3328098427. 1480103038 }: Если вышеприведенных начальных значений, потоков или интервалов недоста- точно, можно вычислить начальные векторы, разделенные любыми интервалами, перед данными начальными векторами, о чем говорится в работе Чена, Л’Экыоэра и Кельтона [Chen, L’Ecuyer and Kelton, 1999]. Если для вас важна скорость выпол- нения, в упомянутой работе также приводится программа на языке п и более быст- рые реализации программы, которые явно не передают номер потока в функцию генерирования случайных чисел. Задачи 7.1. Определите Z5M для ЛКГ из примера 7.2 с помощью ручки и бумаги. 7.2. Вычислите Z{ для такого количества значений i St 1, чтобы они покрывали весь цикл, для следующих мультипликативных ЛКГ: a) Zi - (HZM)(mod 16), Zo - 1; 6)Zf - (HZ^Xmod 16), Zo - 2; в) Zt - (2Zi„1)(niod 13), Zo - 1; r) Zi - (3Z^)(mod 13), Zo - 1.
500 Глава 7. Генераторы случайных чисел Обратите внимание, что в пунктах а и б величина т имеет форму 2Ь; пункт в касается мультипликативного ЛКГ с простым модулем, для которого а “ - 2 — это первообразный элемент по модулю т - 13. 7.3. Не вычисляя Zjr определите, какие из ЛКГ будут иметь полный период: a)Z, - (13ZM+ 13)(mod 16); 6)Z, - (12ZM+ 13)(mod 16); в) Zi - (13ZM + 12)(mod 16); r) Z, - (ZM + 12)(mod 13). 7.4. Для четырех смешанных ЛКГ из задачи 7.3 вычислите Zt для такого количест- ва значений i й1, чтобы они покрывали весь цикл; пусть Zo - 1 в каждом слу- чае. Прокомментируйте полученные результаты. 7.5. А. Выполните на одном из языков мультипликативный ЛКГ с простым мо- дулем при Zi - 630 360 016Z,_ j (mod 231 - 1) на своем компьютере с помо- щью программы Марсе и Робертса из приложения 7А. Б. Повторите эмпирические тесты из примеров 7.5-7.8 для этого генератора и сравните ваши результаты с результатами, полученными в примерах. 7.6. Используйте мультипликативный ЛКГ из пункта а задачи 7.2, чтобы перета- совать результаты, выданные смешанным ЛКГ из пункта г задачи 7.3, исполь- зуя вектор V длиной 2. Пусть начальным значением для обоих ЛКГ будет 1. Запишите первые 100 значений V, /и Vj. Определите период генератора, про- комментируйте полученные результаты. 7.7. Проверьте следующий алгоритм вычисления fbf2.....для проверки равно- мерности распределения по критерию «хи-квадрат»: Задаем Г, - 0 для J - 1. 2.п Для 7 - 1....л цикл Генерируем Ц, Задаем J - Гк/1, 1 Заменяем Г, на fj + 1 Конец цикла (Для вещественного числа х обозначим с помощью [х"] наименьшее целое число, которое больше, чем х, или равно ему.) Обобщите этот алгоритм, что- бы вычислить статистику для общего J-мерного критерия серий. 7.8. Докажите, что следующий алгоритм позволяет правильно вычислить rlt г2,..., г6 для критерия восходящих серий по сгенерированным числам Ub U2,Un: Задаем г,- 0 для J - 1, 2....6 Для 1/р задаем А - 14 и задаем J - 1 Для 1-2.... п цикл Генерируем (/, и задаем В - (/, Если А £ В тогда Задаем J - hrin(J, 6) Заменяем на + 1 Задаем J - 1 Иначе Заменяем J на J + 1 Конец если
Задачи 501 Заменяем Д на В Конец цикла Задаем J - min(J. 6) Заменяем г, на + 1 7.9. Подвергните генератор случайных чисел, предусмотренный на вашем компь- ютере, проверке по критерию «хи-квадрат», тестам по двух- и трехмерному критерию серий, тесту по критерию восходящих серий и тесту на корреля- цию в интервалах 1,2,..., 5. Используйте для п, k и а те же значения, что при- менялись в примерах 7.5-7.8. (Если ваш генератор не пройдет этих проверок, советуем проявлять осторожность при его использовании до тех пор, пока вы не сможете получить по нему больше информации — из литературы либо с помощью дальнейших проверок.) 7.10. Общий подход к проверке генератора случайных чисел эмпирическим путем состоит в использовании его для моделирования простой стохастической системы и получения оценок известных параметров. Затем стандартный тест применяется для сравнения оценок с известными параметрами. Например, нам известно, что при метании двух правильных (геометрически) игральных костей, сумма двух исходов будет 2,3.....12 с вероятностями соответственно 1/36, 1/18, 1/12, 1/9, 5/36, 1/6, 5/36, 1/9, 1/12, 1/18 и 1/36. Смоделируйте 1000 независимых бросков пары независимых правильных игральных костей и сравните полученные доли наблюдений «1», «2», ..., «12» с известными вероятностями с помощью соответствующего метода проверки, описанного в главе 6. Воспользуйтесь генератором вашего компьютера или одним из ге- нераторов, приведенных в приложениях 7А и 7Б. 7.11. Для ЛКГ из задачи 7.3, г изобразите на графике пары ( Uit U^), ( U2, U3),... и по- смотрите на полученную решетчатую структуру. Обратите внимание, что ЛКГ имеет полный период. 7.12. Рассмотрим генератор Фибоначчи, описанный в разделе 7.3.1. А. Докажите, что этот генератор никогда не сможет дать следующий поря- док трех последовательных выходных значений и^2 < U{< U^. Б. Докажите, что порядок значений в пункте А должен встречаться с веро- ятностью 1/6 у «хорошего» генератора случайных чисел. Это указывает на серьезный недостаток генератора Фибоначчи, о чем гово- рили Брэтли, Фокс и Шрейдж [Bratley, Foxn and Schrage, 1987]. 7.13. Предположим, что Uit U2,..., Uk — независимые и одинаково распределенные случайные переменные с распределением U(0, 1). Докажите, что дробная часть (игнорируются цифры слева от десятичной запятой) Ut + U2 + ... + Uk так же равномерно распределена в интервале [0,1]. Это свойство послужило основой сложного генератора Вичманна и Хилла [Witchmann and Hill, 1982]. 7.14. Докажите, что среднее значений Ub взятых по всему циклу ЛКГ с полным пе- риодом, составляет 1/2 - 1/(2т). Подсказка: согласно формуле Эйлера 1 + 2 + + ... + k “ k(k + 1)/2 для положительного целого числа k.
Глава 8 Г енерирование случайных величин 4 Различные подходы к генерированию случайных величин, их достоинства и недостатки 4 Алгоритмы генерирования случайных величин 4- Генерирование коррелированных случайных величин с помощью различных распределений 4 Генерирование реализаций стационарных и нестационарных процессов 8.1. Введение При возникновении в процессе моделирования каких-либо случайных факторов следует прибегнуть к выборке, или генерированию, случайных величин из распре- делений вероятностей. Как и в главе 7, выражение «генерирование случайных ве- личин» мы используем для обозначения действий, направленных на получение наблюдений по случайным переменным (или для реализации случайных величин) из искомого распределения. Форма распределения подбирается специально, в ре- зультате для сбора данных могут использоваться, например, экспоненциальное распределение, гамма-распределение или распределение Пуассона (см. главу 6). В данной главе мы склонны допустить, что распределение уже было некоторым образом определено (в том числе и значения его параметров), и рассматриваем только вопрос о возможности генерировать случайные величины с этим распреде- лением для выполнения прогона имитационной модели. Например, для моделей систем массового обслуживания (см. раздел 1.4 и главу 2) требуется генерировать время между поступлениями и время обслуживания для обеспечения продвиже- ния модельного времени, а для модели системы управления запасами (из разде- ла 1.5) нужно генерировать объем спроса в моменты его возникновения. Как мы убедимся, ознакомившись с этой главой, основной составляющей, необходимой для каждого метода генерирования случайных величин из любого распределения или случайного процесса, является источник независимых и одина- ково распределенных случайных величин с распределением U(0, 1). Вот почему очень важно наличие надежного генератора случайных чисел с распределением U(0, 1). В большинстве компьютерных программ и пакетов имитационного моде- лирования имеются удобные генераторы случайных чисел, но некоторые из них (особенно старые версии) не адекватны уровню современных требований (см. гла- ву 7). Без надлежащего генератора случайных чисел невозможно правильно гене- рировать случайные величины из любого распределения. Поэтому будем исходить из предположения, что у нас имеется надежный источник случайных чисел.
8.1. Введение 503 Существует несколько альтернативных алгоритмов, которые можно использо- вать для генерирования случайных величин из заданного распределения. При выборе такого алгоритма нужно учитывать несколько факторов (хотя они часто противоречат друг другу, и потому нужен разумный компромисс). Постараемся осветить некоторые вопросы, связанные с процессом выбора алгоритма. Первый вопрос касается точности. Мы полагаем, что по возможности следует использовать алгоритм, с помощью которого можно получить случайные величины с требуемым распределением, с учетом неизбежных внешних ограничений, свя- занных с точностью вычислений компьютера и генератора случайных чисел с рас- пределением U(0, 1). Эффективные и точные алгоритмы сейчас доступны для всех применяемых распределений, что избавляет от необходимости использовать устаревшие приближенные методы. (Многие из таких методов, в том числе хоро- шо известный метод получения нормально распределенной случайной величины как суммы от 6 до 12 случайных величин с распределением U(0,1), основываются на центральной предельной теореме.) Специалисты метут возразить, что опреде- ленное распределение является всего лишь приближенным отражением реально- сти, поэтому можно ограничиться приближенным методом генерирования. Все за- висит от ситуации, иногда трудно даже установить требуемую точность, но тем не менее мы все же склонны использовать точные методы. При наличии выбора из точных альтернативных алгоритмов предпочтение от- дается более эффективному, то есть такому, который требует меньше памяти и выполняется быстрее. Для некоторых алгоритмов необходимо сохранение значи- тельного количества констант или больших таблиц, что может оказаться пробле- матичным или, по меньшей мере, неудобным. Что касается времени выполнения, то здесь следует учитывать два фактора. Во-первых, мы надеемся выполнить гене- рирование каждой случайной величины за небольшое количество времени; оно называется предельным временем выполнения. Во-вторых, для некоторых алгорит- мов нужны некоторые предварительные вычисления для определения констант или таблиц, зависящих от конкретного распределения и его параметров. Время, затрачиваемое на эти вычисления, называется временем подготовки к работе. В большинстве случаев мы будем при моделировании генерировать большое чис- ло случайных величин из заданного распределения, поэтому предельное время выполнения, вероятно, примет большее значение, нежели время подготовки к ра- боте. Значение времени подготовки к работе зависит от того, как часто по ходу мо- делирования будут меняться параметры распределения. Выбор алгоритма зависит от его общей сложности и соответственно от его кон- цепции и реализации. Следует определить, окажется ли выгодной эффективность выполнения при использовании сложного алгоритма, требующего дополнитель- ных усилий, связанных с его осмыслением и реализацией. Этот вопрос рассматри- вается в связи с применением метода генерирования случайных величин. Более эффективный и сложный алгоритм может подойти для постоянно используемого программного обеспечения, но не для «одноразовой» имитационной модели. При выборе алгоритма неизбежно возникают вопросы технических решений. Прежде всего, некоторые алгоритмы опираются на источник случайных величин, полученных из распределения, отличающегося от U(0,1), а это нежелательно при
504 Глава 8. Генерирование случайных величин прочих равных условиях. Кроме того определенный алгоритм может быть эффек- тивен при одних значениях параметров и требовать больших затрат при других. Мы бы отдали предпочтение алгоритмам, эффективно работающим при всех зна- чениях параметров (иногда определяем такое свойство, как устойчивость алго- ритма) [Devroye, 1988]. И еще один вопрос возникает при необходимости исполь- зовать определенные виды методов понижения дисперсии для получения более качественной (менее изменчивой) оценки (см. главу 11, а также главы 10 и 12). Два обычно применяемых метода уменьшения дисперсии (методы общих случай- ных чисел и несовместных случайных величин) требуют синхронизации на основе входных случайных величин с распределением U(0,1), используемых для модели- рования изучаемых систем. Такой синхронизации легче достичь, если прибегнуть к определенным типам алгоритмов генерирования случайных величин. В частно- сти, общий метод обратного преобразования может помочь в обеспечении необхо- димой синхронизации и уменьшении дисперсии (см. раздел 8.2.1). По вопросу генерирования случайных величин существует много литературы, в том числе несколько сравнительных работ. Наиболее полным справочником мож- но считать книгу Девроя [Devroye, 1986], полностью посвященную теме генериро- вания величин. Детальное освещение этого вопроса также дано в работах Дагпуна- ра [Dagpunar, 1988], Кеннеди и Джентла [Kennedy and Gentle, 1980, р. 176-264]. Джонсон [Johnson, 1987] написал о моделировании и генерировании случайных ве- личин из многомерных распределений (см. раздел 8.5). Создан и ряд общих обуча- ющих работ по генерированию случайных величин [Schmeiser, 1980b; Leemis and Schmeiser, 1985; Ripley, 1983a], включающих, как правило, солидную библиографию. Ряд книг освещают более специальные вопросы: Шмейсер и Лал [Schmeiser and Lal, 1980а] рассматривают многомерные модели и генерирование величин; Качит- вичанукул [Kachitvichyanukul, 1983] и Шмейсер [Schmeiser, 1983] - генерирование случайных величин из дискретных распределений; Деврой [Devroye, 1996] — «по- строчные» алгоритмы. Существует также несколько библиографий по этой теме [Sowey, 1986]. Наконец, некоторые пакеты компьютерных программ включают хо- рошие устройства для генерирования случайных величин из различных распреде- лений, в том числе и программы библиотеки IMSL [Visual Numerics, Inc., 1997], программы на языке С из разделов 7.2 и 7.3 работы Пресса [Press et al., 1992]. Эта глава имеет следующую структуру. В разделе 8.2 дан обзор наиболее важ- ных общих подходов к генерированию случайных величин, приведены соотве- тствующие примеры и информация о достоинствах и недостатках различных под- ходов. В разделах 8.3 и 8.4 представлены алгоритмы генерирования случайных величин из конкретных непрерывных и дискретных распределений, в разделах 8.5 и 8.6 рассмотрены вопросы генерирования коррелированных случайных величин и генерирования реализаций стационарных и нестационарных процессов. 8.2. Общие подходы к генерированию случайных величин Существует множество методов генерирования случайных величин, здесь описа- ны общие подходы к данному процессу. Применяемый для этого конкретный
8.2. Общие подходы к генерированию случайных величин 505 алгоритм должен зависеть от распределения, из которого мы собираемся генери- ровать случайные величины. Почти все методы можно классифицировать, исходя из теоретических предпосылок. 8.2.1. Обратное преобразование Предположим, нам необходимо генерировать случайную величину X, являющую- ся непрерывной (см. раздел 4.2) и имеющую функцию распределения F — непре- рывную и строго возрастающую, когда 0 <Е(х) <1. (Из этого следует, что если^ < < х2 и 0 < F(Xj) F(х2) < 1, то F(xj < f(x2).) Примем, что F1 — это обратная функ- ция F. Тогда алгоритм для генерирования случайной величины X с функцией рас- пределения F будет следующим (символ - обозначает «имеет распределение»). сгенерируем U - U(0,1). 2.Возвращаем X ~ Г1(Ц). Обратите внимание, F\U) всегда будет определено, поскольку 0 < U< 1, а об- ластью функции Fявляется [0,1]. На рис. 8.1 этот алгоритм изображен графичес- ки, на нем случайная величина, соответствующая этой функции распределения, может принимать либо положительные, либо отрицательные значения; это зави- сит от конкретного значения U. На рис. 8.1 случайное число в результате дает положительную случайную величину тогда как случайное число U2 в результа- те дает отрицательную случайную величину Х2. Рис. 8.1. Использование метода обратного преобразования для генерирования непрерывных случайных величин Если величина X, возвращаемая вышеприведенным алгоритмом, именуемым методом обратного преобразования, имеет нужную функцию распределения F, то мы должны доказать, что для любого вещественного числа х справедлива формула Р(Х < х) - Е(х). Поскольку функция F обратима, получаем Р(Х <х) - P(F'(U) <x)-P(U< Е(х)) - F (х), где последнее равенство было выведено, поскольку U ~ U(0, 1) и 0 < Е(х) < 1 (см. раздел 6.2.2).
506 Глава 8. Генерирование случайных величин Пример 8.1. Пусть у величины X будет экспоненциальное распределение со средним значением ₽ (см. раздел 6.2.2). Функция распределения х _ fl - е~х/$ если х 0; в противном случае, поэтому задаем и = F(x), чтобы найти К1, и решаем уравнение для х, желая получить F\u) - -₽ In (1 - и). Следовательно, для генерирования искомой случайной величины сначала генерируем U - U(0,1), а затем определяем X - - р In U. (В этом случае можно использовать U вме- сто 1 - U, поскольку 1 - Un Uимеют одно и то же распределение U(0,1). Таким образом мы избавляемся от вычитания.) В приведенном выше примере мы заменили 1 - U на U ради незначительного выигрыша в производительности. Однако такая замена в подобной ситуации при- водит к отрицательной, а не к положительной корреляции величин X со значения- ми U. Кроме того, нельзя с полной уверенностью утверждать, что где бы в алгорит- ме генерирования случайных величин ни появилась величина 1 - U, ее можно заменить на U (см. раздел 8.3.15). Таким образом, продемонстрирована достоверность метода обратного преоб- разования в случае с непрерывными величинами, однако этот метод кажется так- же интуитивно подходящим. Функцию плотности f(x) непрерывной случайной величины можно интерпретировать как относительную возможность наблюдения значений величины в различных частях диапазона. Мы ожидаем, что будет возни- кать множество значений величины в тех областях, где f(x) значительно поднима- ется над осью х, а там, где /(х) поднимается незначительно, должно быть отмечено только несколько значений. Например, на рис. 8.2, б показана функция плотности для распределения Вейбулла с параметром формы а - 1,5 и масштабным парамет- ром ₽ “ 6 (определение этого распределения вы найдете в разделе 6.2.2). Мы мо- жем ожидать, что много сгенерированных значений попадает, например, в область между х = 2их--5, ав области между х-13их-16их будет гораздо меньше. На рис. 8.2, а показана соответствующая функция распределения F(x). Поскольку плотность распределения является производной от функции распределения, ины- ми словами /(х) “F'(x), мы можем рассматривать /(х) как «крутизну функции» Г(х), то есть /(х) является крутизной функции F в х. Следовательно, функция F возрастает более резко для значений х, имеющих большие значения /(х) (напри- мер, для х от 2 до 5), и наоборот — F будет относительно ровной там, где/(х) имеет небольшие значения (например, для хот 13 до 16). Теперь, согласно методу обрат- ного преобразования, следует взять случайное число U, которое должно быть рав- номерно распределено в интервале [0, 1] по вертикальной оси графика функции Г(х), и находить значения X, «двигаясь» перпендикулярно вертикальной оси до пересечения с кривой и затем вниз от нее. На крутые части кривой F(x) попадет больше значений величины U, нежели на относительно ровные ее части. Таким об- разом, значения величины X сконцентрируются в тех областях, где кривая F(x) имеет резкий уклон, в этих же областях кривая /(х) поднимается значительно. Ин- тервал [0,25; 0,30] по вертикальной оси на рис. 8.2, а должен содержать 5 % значе-
8.2. Общие подходы к генерированию случайных величин S07 ний U, что ведет к получению значений^ в относительно узкой области [2,6; 3,0] по оси х. Следовательно, в этой области будет около 5 % значений X. Интервал [0,93; 0,98] по вертикальной оси имеет такой же размер, как и интервал [0,25; 0,30], и следовательно, в ней также содержится 5 % величин U, ио он приводит к получе- нию большого интервала [11,5; 14,9] по оси х. В этой области также будет 5 % зна- чений X, но разбросанных по гораздо большему интервалу.
508 Глава 8. Генерирование случайных величин На рис. 8.3 показано действие алгоритма, когда генерируется 50 значений X (для этого используется генератор случайных чисел с потоком 1 из приложе- ния 7А). Значения U отмечаем на вертикальной оси рис 8.3, а, а соответствующие им значения X получаем при проведении пунктирных линий перпендикулярно вертикальной и горизонтальной осям. Рис. 8.3. Графики функций распределения Wejbull (1Д 6): а — обратное преобразование; б — плотность распределения
8.2. Общие подходы к генерированию случайных величин 509 Обратите внимание, что значения величины U на вертикальной оси распреде- лены довольно равномерно, а вот значения величины X на горизонтальной оси действительно располагаются гораздо более плотно там, где/(х) поднимается вы- ше, а там, где /(Допускается ниже, они встречаются гораздо реже. Следовательно, метод обратного преобразования действительно деформирует равномерное рас- пределение величины U, и в результате мы получаем распределение величины X в соответствии с необходимой плотностью распределения. Метод обратного преобразования можно также использовать, если величина X является дискретной. В этом случае функция распределения Г(Д-Р(Х^Д- Ер(х.), Xi^X где р(х() является вероятностной мерой р(я)-Р(Х- Xi). (Допускается, что величина X может иметь только такие значения xlt х2,..., для ко- торых хх < х2 <....) Тогда алгоритм будет иметь следующий вид. 1. Генерируем U - U(0,1). 2. Определяем положительное наименьшее целое число I, для которого U < и возвращаем X “ хг. На рис. 8.4 показан метод, с помощью которого в данном случае мы генерируем X “ х4. Хотя может показаться, что методы обратного преобразования для непре- рывных и дискретных случайных величин различны, рис. 8.1 и 8.4 свидетельству- ют об их сходстве. I X Рис. 8.4. Использование метода обратного преобразования для дискретных случайных величин Чтобы убедиться в достоверности метода обратного преобразования для дис- кретных величин, необходимо доказать, что Р(Х - х{) - р(х,) для всех значений I. Для i - 1 тогда и только тогда мы получаем X - xit когда U 5 F(Xi) - p(xi), так как мы расположили величины х( в порядке возрастания. Так как U - U(0,1), то
510 Глава 8. Генерирование случайных величин Р(Х “ xt) ==р(х1), что и требовалось доказать. Для i £ 2 алгоритм устанавливает X= -х, тогда и только тогда, когда F(xlX) <U< F(£), поскольку значение i, выбираемое алгоритмом, является положительным наименьшим целым числом, для которого U <. F(Xi). Более того, поскольку U - U(0, 1) и 0 < F(xM) < F(x,) <. 1, то Р(Х - х,) - P[F(Xi -d<U< F(x,)] - F(Xi) - F(x, _.) - p(x,). Пример 8.2. Вспомните пример с системой управления запасами из раздела 1.5, где слу- чайная величина X, определяющая объем спроса, являлась дискретной и принимала значения 1,2,3,4 с вероятностями соответственно 1/6,1/3,1/3,1/6. Функция распреде- ления Г показана на рис. 4.2. Чтобы генерировать X, сначала генерируем U - U(0,1) и присваиваем Xзначения 1,2,3,4 в зависимости от подынтервала в интервале [0,1], в ко- торый попадает величина U. Если U S 1/6, тогда пусть X - 1; если 1/6 < U £ 1/2, тогда X - 2; если 1/2 < U 5 5/6, тогда X == 3; если 5/6 < U, тогда X - 4. Хотя как на рис. 8.4, так и в примере 8.2 мы имеем дело с дискретными случай- ными величинами, принимающими конечное множество значений, метод обрат- ного преобразования для дискретных величин можно также непосредственно применять вышеуказанным образом для генерирования бесконечного множества случайных величин, например с распределением Пуассона, геометрическим или отрицательным биномиальным распределениями. Используя метод обратного преобразования для дискретных величин, как это было в примере 8.2, мы убедились, что он в достаточной мере основан на интуи- ции. Мы делим интервал на смежные подынтервалы ширинойр(х1),р(х2),... и при- сваиваем значение X в зависимости от того, в каком из этих подынтервалов нахо- дится сгенерированное значение U. Например, U попадет во второй подынтервал с вероятностью р(х2), тогда X = х2. Эффективность работы алгоритма зависит от того, каким способом мы нахо- дим подынтервал, содержащий U. Самый простой подход — начать движение с ле- вого подынтервала, а затем двигаться дальше. Вначале проверяем, будет ли U <• 5p(xt), в случае выполнения этого неравенства возвращаем X -= х,. Если U > p(xt), проверяем U < < р(х,) + р(х2), в случае выполнения этого неравенства мы возвра- щаем значение X=х2, и т. д. Таким образом, число сравнений, которые необходимо выполнить, зависит от значений U и р(х,). Так, если первые несколько значений р(х;) очень малы, высока вероятность того, что нам придется провести множество сравнений величин, пока выполнение алгоритма завершится. Следовательно, есть все основания для выполнения поиска интервала иным способом, с помощью соот- ветствующих методов сортировки и поиска, применяемых в вычислительной тех- нике [Knuth, 1998b], Можно предложить простой путь улучшения описанного метода. Вначале про- веряем, находится ли Св самом длинном подынтервале (наиболее вероятный слу- чай). Если это не так, проверяем следующий по длине подынтервал и т. д. Данный метод особенно полезен, когда некоторые значения p(xf) намного превышают ос- тальные и существует множество значений хг (см. задачу 8.2). Очень эффективные методы поиска, использующие идею индексирования, описаны в работах Чена и Ассау [Chen and Asau, 1974], а также Фишмана и Мура [Fishman and Moore, 1984].
8.2. Общие подходы к генерированию случайных величин 511 Общая характеристика! достоинства и недостатки метода обратного преобразования Обе версии метода обратного преобразования для непрерывных и дискретных ве- личин можно, по крайней мере формально, объединить в одну общую формулу X - min{x: F(x) 2: U}, которая будет верна и для смешанных распределений (то есть содержащих и не- прерывные, и дискретные компоненты), и для функций непрерывного распределе- ния с ровными участками. Чтобы убедиться, что приведенная выше формула вер- на для непрерывных величин, посмотрите на рис. 8.1 и увидите, что {х. F(x) ^Ui} — это интервал [Xlt оо) с минимумом При дискретных величинах мы видим (рис. 8.4), что {х F(xj > “ [х4, со) с минимумом х4. На рис. 8.5 показано смешан- ное распределение с двумя конечными скачками и ровным участком; в этом случае соответствующая случайная величина X должна удовлетворять условиям Р(Х - =xj “и{ - щ (скачок в точкеxt), Р(Х ^x2)^u'2-U2 (скачок в точкех2) и Р(х0 X £ х'о) “ 0 (ровный участок между и х’о ). Обратите внимание, для непрерывного компонента, как и ожидалось, X - min{x: Дх) 2: Uc} - min{X0oo} - Хс. Для конечного скачка в точке х4 при щ < U < и\ получаем X = min{x: Дх) > L7J - min{x!,oo} == xt. Рис. 8.5. Использование метода обратного преобразования для смешанного распределения Такая величина X будет возникать с вероятностью и[ - щ (это и требовалось доказать). То же самре касается скачка в точке х2. Для ровного участка генерируем
512 Глава 8. Г оперирование случайных величин величину X в интервале (х0, х'о), только если мы генерируем случайное число U, равное ий. Поскольку U представляет непрерывную величину, подобная ситуация возникает с вероятностью 0, хотя на практике конечная точность сгенерированно- го случайного числа U может в результате дать U - и0. Следовательно, такая, более общая формулировка метода обратного преобразования позволяет работать с лю- бым непрерывным, дискретным или смешанным распределением. Его же действи- тельная реализация, безусловно, зависит от искомого распределения. Теперь рассмотрим некоторые общие достоинства и недостатки метода обрат- ного преобразования в случаях как с непрерывными, так и дискретными данными. Одно из возможных препятствий к использованию метода обратного преобразо- вания для непрерывных величин состоит в необходимости оценивать Fl(U). По- скольку не всегда возможно написать формулу F1 в конечной форме для искомого распределения, например нормального или гамма-распределения, такое простое использование метода, как описано в примере 8.1, может оказаться невозможным. Но, даже если F1 не имеет простого выражения в конечной форме, мы можем вос- пользоваться численными методами, скажем разложением в степенной ряд, для оценки Р1 (см., например, информацию о генерировании случайных величин с нормальным, гамма- и бета-распределением в разделе 8.3). Такие численные мето- ды имеют произвольную точность, поэтому могут зависеть от ошибки округления компьютера; в этом смысле они точны для всех практических зада4. Однако Дев- рой [Devroye, 1986, р. 31-35] указывает на возможность возникновения трудно- стей с определением приемлемого правила останова для некоторых распределений, особенно распределений с бесконечной областью. Кеннеди и Джентл [Kennedey and Gentle, 1980] предоставляют сравнительный обзор численных методов для на- хождения функций непрерывного распределения и соответствующих обратных функций [Abramowitz and Stegun, 1964; Press et al., 1992]. В библиотеке IMSL [Visual Numerics, Inc., 1997] имеется программа для вычисления наиболее общих функций распределения и соответствующих обратных функций с помощью тща- тельно подобранных алгоритмов. В качестве альтернативного варианта для при- ближенного определения F1 с помощью численных методов Марсалья (Marsaglia, 1984] предлагает находить функцию g, «близкую» к F\ которую легко оценить. Тогда X генерируется, как g(Y), где Y имеет определенное распределение, «близ- кое» к U(0, 1). Второй потенциальный недостаток состоит в том, что метод обратного преоб- разования не всегда может оказаться самым быстрым способом генерирования случайных величин для заданного распределения. В разделе 8.3 и 8.4 речь пойдет об эффективности работы альтернативных алгоритмов для каждого из рассматри- ваемых распределений. Несмотря на возможные недостатки, в использовании метода обратного преоб- разования есть и свои преимущества. Прежде всего, он упрощает применение ме- тодов понижения дисперсии (см. главу И), основанных на возникновении кор- реляции между случайными величинами; примерами таких методов являются методы общих случайных чисел и несовместных величин. Если F и F2 — две функ- ции распределения, то Xt - Fi-1(t4) и Х2 = Р2^(и2) будут случайными величинами с соответствующими функциями распределений fi и F2, где и U2 являются
8.2. Общие подходы к генерированию случайных величин 513 случайными числами. Если и U2 — независимые величины, то, бесспорно, Xt и Х2 также будут независимыми. Однако, если допустить, что U2 - Uit то корреля- ция между Хх и Х2 становится настолько положительной, насколько возможно, а если взять 14-1-14 (припомните, такая величина также имеет равномерное распределение в интервале [0, 1]), то корреляция между Xt и Х2 становится на- столько отрицательной, насколько возможно. Таким образом, метод обратного преобразования вызывает сильнейшую корреляцию (как положительную, так и отрицательную) у генерируемых случайных величин, которая, как можно наде- яться, сохранится в ходе моделирования, что вызовет сильнейшую корреляцию выходных данных, а это, в свою очередь, будет способствовать успешной работе метода понижения дисперсии. (Тем не менее, можно вызвать корреляцию и у слу- чайных величин, генерируемых с помощью иных методов [Schmeiser and Kachit- cichyanukul, 1986.] ) Еще одно прагматическое соображение: обратное преобразо- вание упрощает применение методов понижения дисперсии, поскольку нам всегда нужно ровно одно случайное число для получения одного значения искомого X. (Другим методам — они будут описаны далее — может понадобиться несколько случайных чисел для получения одного значения X, или же количество случайных чисел, в свою очередь, может оказаться случайной величиной, как в методе приня- тия-отклонения.) Это немаловажное наблюдение, поскольку правильное выпол- нение многих методов понижения дисперсии требует некоторого рода синхрони- зации входных случайных чисел при различных прогонах имитационной модели. Если используется метод обратного преобразования, синхронизации достигнуть намного проще. Второе преимущество метода состоит в том, что он позволяет лег- ко генерировать величины из усеченных распределений (см. раздел 6.8). Предпо- ложим, что у нас есть плотность распределения f с соответствующей функцией распределения F в случае непрерывных величин. Для а<Ь (возможно, что а - - оо или Ь - + со) определяем плотность усеченного распределения по формуле f(x) f*(x) - ад-ад о в противном случае, если a S х S Ь; и соответствующую функцию усеченного распределения как О если х < а; F(x')-F(a) , ; если a£x<b; F(b)-F(a) 1 если Ь < х. (Аналогично обстоит дело и с дискретными величинами.) Таким образом, алго- ритм для генерирования X с функцией распределения Е* будет следующим. 1. Генерируем U - U(0, 1). 2. Допускаем V- F(a) + (F(h) - F(a)]U. 3. Возвращаем X - Г*(У).
514 Глава 8. Генерирование случайных величин В упражнениях (задача 8.3) надо доказать, что величинах, определенная этим алгоритмом, действительно имеет функцию распределения F*. Заметьте, идея об- ратного преобразования действительно используется дважды: вначале на шаге 2 для равномерного распределения V между F(a) и F(b), а затем — на шаге 3 для по- лучения величины X. (Другой способ генерирования X содержит задача 8.3, а за- дача 8.4 — еще один способ усечения, в результате которого получается функция распределения, отличная от Е*.) Наконец, метод обратного преобразования может быть очень полезен для гене- рирования порядковой статистики. Предположим, Yb Y2,..., Y„ являются незави- симыми и одинаково распределенными величинами с общей функцией распреде- ления F, что для i - 1,2,..., п Уда обозначает i-ю наименьшую порядковую статистику значений Yj. Как шла речь в главе 6, У(0 называется i-й наименьшей порядковой статистикой из выборки размером и. (Порядковая статистика используется в мо- делировании, когда речь идет о периоде безотказной работы или сроке службы не- которых компонентов системы, подверженных поломкам. Если Yj — срок службы j-ro компонента, то У(1) — срок службы системы, состоящей из п таких компонен- тов, объединенных последовательно, У(в) — срок службы системы, при условии, что компоненты работают параллельно.) При прямом способе генерирования X = “ Y(i) вначале генерируются п независимых и одинаково распределенных величин Yit У2,..., У„с функцией распределения F, затем они сортируются в порядке возрас- тания и, наконец, X присваивается i-e значение Yj после сортировки. Для этого ме- тода, однако, требуется генерировать п отдельных величин с функцией распреде- ления F, а затем отсортировать их, что может занять много времени, если значение п велико. В качестве альтернативы для генерирования X ~ Yi() можно использовать следующий алгоритм. 1. Генерируем V ~ beta(i, п - i + 1). 2. Возвращаем X - F'(V). Правильность такого алгоритма устанавливается в задаче 8.5. Заметьте, что со- гласно шагу 1, величины следует генерировать из бета-распределения (см. раз- дел 8.3.8). Сортировка при этом не нужна, а функцию К1 необходимо оценить один раз; это особенно удобно, если п имеет большое значение или оценка Е-1 выполня- ется медленно. Два особо важных случая касаются генерирования минимальной и максимальной величин Yjt в них шаг 1 выполняется очень просто. Для мини- мальной величины i = 1, а Уна шаге 1 может быть определено как У = 1 - lF/n, тр,е U - U(0,1). Для максимальной величины i - п, а Уна шаге 1 может быть определено как У- U1/n (подтверждение обоих этих случаев вы найдете в задаче 8.5). Дополни- тельная информация о генерировании порядковой статистики содержится в кни- гах Рамберга и Тадикамалла [Ramberg and Tadikamalla, 1978], Шмейсера [Schmei- ser, 1978a, 1978b] и Шукани [Schucany, 1972]. 8.2.2. Композиция Метод композиции применяется, если функция распределения F, по которой мы собираемся генерировать величины, может быть выражена как выпуклая комби-
8.2. Общие подходы к генерированию случайных величин 515 нация других функций распределений Fb F2,.... При этом мы рассчитываем, что выборки будет легче делать из распределений функций fj, нежели из исходного распределения функции F. В частности, допускаем, что для всех х функцию F(x) можно записать как при pj £ 0 имеем ^."-1 Pj" 1» а каждая функция F} является функцией распределе- ния. (Хотя мы записали эту комбинацию как бесконечную сумму, может сущест- вовать величина k, для которой рк > 0, нор, = 0 при j > k, в рассматриваемом случае сумма действительно является конечной.) Соответственно, если X имеет плот- ность распределения /, ее можно определить по формуле /<*)=$>>/>(*). где fj являются другими плотностями распределения, метод композиции все еще применяется; ситуация с дискретными величинами аналогична. Тогда общий ал- горитм композиции примет следующий вид. 1. Генерируем положительное целое число J, для которого P(J -j) ~Pj JUixj ” 1. 2... 2. Возвращаем X с функцией распределения fj. Шаг 1 можно рассматривать как выбор функции распределения Fj с вероятно- стью Pj, его можно выполнить, например, с помощью метода обратного преобразо- вания для дискретных величин. При условии, что J - j, генерирование на шаге 2 должно выполняться независимо от J. Определившись со значением J, генерируе- мым на шаге 1, можем легко убедиться, что величина X, возвращаемая алгорит- мом, будет иметь функцию распределения F [Ross, 1997]: Р(Х <х) = £р(Х £х IJ = j)P(J = j) = t Fj (x)Pj = F(x). У-l J-l Можно также дать геометрическую интерпретацию метода композиции. Напри- мер, для непрерывной случайной величины X с плотностью распределения f сле- дует разделить площадь под функцией /на участки площадью рк,р2,..., соответст- вующие декомпозиции /ее представлением выпуклой комбинацией. После этого шаг 1 можно рассматривать как выбор участка, а шаг 2 — как генерирование вели- чины из распределения, соответствующего выбранному участку. В следующих двух примерах предусматривается такой вид геометрической интерпретации. Пример 8.3. Двойное экспоненциальное распределение (или распределение Лапласа) име- ет плотность /(х) -0,5е^ для всех вещественных значений х. График плотности распре- деления изображен на рис. 8.6. По графику можно увидеть, что/(х) представляет собой две плотности экспоненциального распределения (за исключением нормализующего множителя 0,5), расположившиеся вплотную, что предполагает использование метода композиции. На самом деле плотность распределения можно выразить как /(*) = О.бе’Т^о) + О,5е~х7[0оо)(х),
516 Глава 8. Генерирование случайных величин где 1Л обозначает индикаторную функцию множества А, определенную формулой 4(x)-fl если хе А; [О в противном случае. Таким образом, /(х) является выпуклой комбинацией /t(x) “ ех1(_ и0)(х) и /2(х) - = е~х1(о,«)(х), обе функции представляют собой функции плотности, а pf р2 - 0,5. Сле- довательно, мы можем генерировать величину X с плотностью распределения /с помо- щью метода композиции. Вначале генерируем Ux и U2 как независимые и одинаково рас- пределенные величины с распределением U(0,1). Если £ 0,5, возвращаем X = In U2. Если же Ui > 0,5, возвращаем X = -In U2. Обратите внимание, что мы вначале генериру- ем экспоненциальную случайную величину со средним значением 1, а затем меняем ее знак с вероятностью 0,5. При альтернативном варианте мы генерируем величину из ле- вой половины графика плотности распределения (рис. 8.6) с вероятностью, равной соот- ветствующей площади (0,5), и из правой половины — с вероятностью 0,5. Рис. 8.6. Плотность двойного экспоненциального распределения Заметим, что в примере 8.3 шаг 2 алгоритма выполнялся с помощью метода обратного преобразования для экспоненциально распределенной случайной вели- чины. Таким же образом можно комбинировать различные общие методы генери- рования случайных величин. Кроме того, мы видим, что в этом примере для гене- рирования одной величины X необходимо два случайных числа. Нам понадобится как минимум два случайных числа, чтобы использовать метод композиций. (Если вызовет интерес сравнение метода композиции из примера 8.3 с методом обратно- го преобразования для генерирования случайной величины с двойным экспонен- циальным распределением, можно обратиться к задаче 8.6.) В примере 8.3 представление плотности распределения/получено путем деле- ния площади под функцией плотности вертикальной линией, а точнее — осью ор- динат. В следующем примере для деления используется горизонтальная линия. Пример 8.4. В случае, когда 0 < а < 1 распределение в форме прямоугольной трапеции имеет плотность f( } = 1а + ~ есЛЗЛ 0 5 х 5 1’ ' [0 в противном случае. Как показано на рис. 8.7, площадь под функцией/можно разделить пунктирными линия- ми на прямоугольник с площадью а и прямоугольный треугольник с площадью 1 - а. Те- перь /(х) можно представить как /(х) - aZIOil] + (1 - а)2х/10д](х) ,
8.2. Общие подходы к генерированию случайных величин 517 откуда /i(x) = 7[o.i](x), что просто является плотностью распределения U(0,1), a f2(x) “ - 2х7[01](х) — плотностью правого треугольного распределения. Разумеется, pt -а,ар2- -1 - а. Следовательно, метод композиции предусматривает генерирование Ut - U(0,1) и проверку того, является ли 171 £ а. Если это так, генерируется независимая величина U2 - U(0,1) и возвращается X - U2. Если 17, > а, мы должны генерировать величину из правого треугольного распределения. Для этого можно либо генерировать U2 - U(0, 1) и возвратить X = либо генерировать U2 и [73 как независимые и одинаково распреде- ленные величины с распределением U(0,1) и возвратить X- шах {172, U3} (см. задачу 8.7). Поскольку извлечение квадратного корня, вероятно, занимает больше времени, чем не- обходимо для генерирования случайной лишней величины с распределением U(0, 1) и выполнения сравнения, последний метод, очевидно, будет наиболее быстрым спосо- бом генерирования X с плотностью распределения f2. Рис. 8.7. Плотность распределения в форме прямоугольной трапеции Теперь вы можете разработать метод обратного преобразования для генериро- вания случайной величины из распределения в форме прямоугольной трапеции, приведенного в примере 8.4. Заметьте — особенно в тех случаях, когда а имеет большое значение, метод композиции будет работать быстрее, нежели метод об- ратного преобразования, поскольку для последнего всегда требуется извлекать квадратный корень, тогда как вполне вероятно (вероятность равна а), что метод композиции просто возвратит X - U2 - U(0,1). Принимая во внимание выигрыш во времени, следует также учитывать, что, возможно, придется генерировать два или три случайных числа для получения одного значения X. Трапециевидные рас- пределения (подобные использованным в примере 8.4) играют важную роль в эф- фективных методах, разработанных для генерирования случайных величин с гам- ма-распределением [Schmeiser and Lal, 1980b] и с бета-распределением [Schmeiser and Babu, 1980]. Методы композиции (именуемые также методами смешивания) анализируют- ся в работе Петерсона и Кронмаля [Peterson and Kronmal, 1982], которые показа- ли, что многие специальные методы генерирования величин можно выразить как своего рода методы композиции. С методом композиции тесно связан метод при- нятия-дополнения, предложенный Кронмалем и Петерсоном [Kronmal and Peter- son, 1981,1982]; этот и другие связанные с ним методы рассматриваются в работе Девроя [Devroye, 1986, р. 75-81].
518 Глава 8. Генерирование случайных величин 8.2.3. Свертка Для некоторых распределений искомую случайную величину X можно выразить как сумму других независимых и одинаково распределенных случайных величин, которые проще генерировать, чем саму величину X. Допускается, что существуют независимые и одинаково распределенные случайные величины yt, У2, —> Уп (для заданного значения т), их сумма У + У2 + ... + Ут имеет то же распределение, что и величина X. Поэтому записываем X - У, + У2 + ... + У_ . Этот метод называется сверткой. Название происходит из терминологии, при- меняющейся по отношению к стохастическим процессам, где распределение вели- чины X называется т-кратной сверткой распределения Yj. Не следует путать с ме- тодом композиции! Здесь мы допускаем, что случайная величина X может быть представлена суммой других случайных величин, тогда как в основе метода компо- зиции лежит допущение о том, что функция распределения X является (взвешен- ной) суммой других функций распределений. Это совершенно разные ситуации. Алгоритм генерирования случайной искомой величины X легко вывести инту- итивно (пусть F будет функцией распределения величины X, a G — функцией рас- пределения величины У<). 1. Генерируем Yt, У2 Ym как независимые и одинаково распределенные случай- ные величины с функцией распределения G каждая. 2. Возвращаем X - Yt + У2 + ... + Ут. Чтобы доказать обоснованность этого алгоритма, вспомните: мы допустили, что X и Yi + У2 +... + Ym имеют одну и ту же функцию распределения — функцию F. Следовательно, Р(Х <. х) = Р(У, + У2 + ... + Ym £ х) - F(x) . Пример 8.5. Случайная величина X с распределением Эрланга тл-го порядка и средним значением ₽ может быть определена как сумма т независимых и одинаково экспоненци- ально распределенных случайных величин с общим средним р/wi. Значит, чтобы генери- ровать величину X, можно генерировать У,, У2,..., Y„ как независимые и одинаково экспо- ненциально распределенные случайные величины со сред ним р/тл (см. пример 8.1), а затем возвратить X— Yt + У2 +... + У„. (В разделе 8.3.3 приводится улучшенный вариант этого алгоритма.) Метод свертки, если им можно воспользоваться, очень прост для выполнения при условии, что величины Yj легко генерируются. Однако в зависимости от опре- деленных параметров распределения величины X он может оказаться не самым эффективным методом генерирования. Например, генерирование случайной ве- личины с распределением Эрланга m-го порядка с помощью метода свертки (как в примере 8.5), когда т имеет большое значение, может потребовать много време- ни. В такой ситуации лучше использовать общий метод генерирования случайных величин с гамма-распределением (см. раздел 8.3.4), учитывая тот факт, что рас- пределение Эрланга m-го порядка является особым случаем гамма-распределения (см. раздел 6.2.2). Об этом также идет речь в работе Девроя [Devroye, 1988].
8.2. Общие подходы к генерированию случайных величин 519 Свертка является более общим примером идеи о преобразовании некоторых промежуточных случайных величин в конечную величину с искомым распреде- лением. Преобразование, происходящее при свертке, это всего лишь сложение про- межуточных величин, являющихся независимыми и одинаково распределенными. Существует много других способов для преобразования промежуточных величин, некоторые из них рассматриваются в разделе 8.2.5, а также в разделах 8.3 и 8.4. 8.2.4. Принятие-отклонение Три рассмотренных общих метода генерирования случайных величин (методы об- ратного преобразования, композиции и свертки) можно назвать прямыми, так как они обращаются непосредственно к искомому распределению или случайной ве- личине. Подход, используемый в методе принятия-отклонения, не настолько прямой. Он может оказаться полезным, если прямые методы нельзя применить в силу тех или иных причин или если они неэффективны. Мы остановимся на слу- чае с непрерывными величинами, когда нам необходимо генерировать величину X с функцией распределения Ги плотностью распределения f (случай с дискретны- ми величинами абсолютно аналогичен, он рассматривается в задаче 8.9). Автором идеи, лежащей в основе метода, выступил фон Нейман [von Neumann, 1951]. Для метода принятия-отклонения требуется определить функцию t, которая оценивает сверху плотность распределения/; то есть t(x) k/(x) для всех х. Теперь функция t не будет выступать плотностью распределения, поскольку с = °jt(x)dx > j/(x)dx = 1, а плотностью будет функция r(x) - t(x)/c. (Допускается, что t имеет такое значе- ние, при котором с < оо.) Нам необходимо иметь возможность генерировать (надо надеяться, быстро и просто) случайную величину У с плотностью распределения г. Общий алгоритм получаем при такой последовательности действий. 1. Генерируем У с плотностью распределения г. 2. Генерируем V - U(0, 1) независимо от У. З.Если (7^/(У)/Г(У), возвращаем X - У. В противном случае возвращаемся к ша- гу 1 и начинаем все сначала. Алгоритм продолжает возвращаться к шагу 1 до тех пор, пока на шагах 1 и 2 не будет сгенерирована пара (У, U), для которой U < f(Y)/t(Y), и тогда мы «примем» значение У в качестве X. Поскольку доказать обоснованность этого алгоритма не- сколько сложнее, нежели в случаях с тремя предыдущими методами, мы сошлемся на приложение 8А. Пример 8.6. Бета-распределение Р(4, 3) в единичном интервале имеет плотность _ Гб0х3(1 - х)2 если 0 £ х <. 1; [О в противном случае. (Так как функция распределения F(x) является многочленом в шестой степени, будет сложно использовать метод обратного преобразования, поскольку для него потребует- ся применить численные методы определения полиномиальных корней.) С помощью
520 Глава 8. Генерирование случайных величин стандартного дифференциального исчисления, то есть приравняв df/dx к 0, устанавли- ваем, что максимальное значение/(х) возникает в точке х = 0,6, где/(0,6) - 2,0736 (точ- но). Следовательно, определяем . _ (2,0736 если 0£х£1; " ' ~ |0 в противном случае. Функция t оценивает сверху плотность/. Далее, с = £ 2,0736 dx- 2,0736, так что г(х) яв- ляется всего лишь плотностью распределения U(0, 1). Функции f,tvir показаны на рис. 8.8. Согласно алгоритму, У и (/генерируются как независимые и одинаково распре- деленные случайные величины. На шагах 1 и 2, а затем на шаге 3 проверяем, будет ли 60У3(1-У)2 2,0736 ’ Если это так, возвращаем X = У. В противном случае отказываемся от величины У и сно- ва возвращаемся к шагу 1. Рис. 8.8. Графики функций /(х), t(x) и г(х) для метода принятия-отклонения с распределением beta(4, 3) Обратите внимание — в предыдущем примере величинах привязана к интерва- лу (в данном случае к единичному интервалу), и мы можем выбрать t как констан- ту в названном интервале. Это, в свою очередь, приводит к тому, что функция г является плотностью равномерного распределения. Метод принятия-отклонения часто предлагается использовать только для таких связанных случайных величин
8.2. Общие подходы к генерированию случайных величин 521 X я только для такого равномерного выбора функции г. Мы даем его более общую трактовку. Приведенный выше алгоритм принятия-отклонения может показаться курьез- ным, а доказательство его обоснованности из приложения 8А не вносит нужной ясности относительно его внутреннего.механизма. Однако интуитивно он кажется обоснованным. На рис. 8.9 снова представлены графики функций f(x) и t(x) из примера 8.6, этот рисунок демонстрирует также функционирование алгоритма. Рис. 8.9. Выборка из 50 значений X (по горизонтальной оси) и необходимые значения Y, взятые по графику t(x) для метода принятия-отклонения с распределением beta(4,3) Было сгенерировано 50 значений X из распределения beta(4,3) с помощью метода принятия-отклонения (с использованием потока 2 генератора случайных чисел из приложения 7А), они отмечены крестиками на оси х. На графике t(x) в верхней части рисунка мы также отметили все значения У, сгенерированные на шаге 1 ал- горитма, независимо от того, были ли они приняты в качестве значений X. Из этих значений У принято 50 значений, отмеченных на оси х. Равномерность распреде- ления значений У по графику t(x) очевидна, как очевидно и то, что более высокая концентрация значений X на оси х наблюдается там, где график f(x) поднимается высоко. Для значений У, попадающих в область, где график/(х) проходит низко (когда х около 0 или 1), /(У)Д(У) имеет небольшое значение, поэтому невелика
522 Глава 8. Генерирование случайных величин и вероятность того, что значения У будут приняты в качестве значений X, большая часть значений У будет отклонена. На рис. 8.9 видно, что такая ситуация верна для небольших (около 0) и больших (около 1) значений У, где график f(x) проходит низко. Тогда как значения У там, где график f(x) поднимается высоко, скорее все- го, сохранятся, поскольку f(Y)/t(Y) почти равно 1; значит, большинство значений У около х - 0,6 принимаются как значения X и отмечаются на оси х. Таким обра- зом, алгоритм отбрасывает те значения У с плотностью распределения г(х), для ко- торых t(x) значительно больше f(x), но сохраняет большинство значений У, для которых t(x) лишь немного превышает f(x). В результате концентрация значений У с плотностью распределения г(х) изменяется в соответствии с искомой плотно- стью распределения /(х). Принцип «принятия-отклонения» является достаточно общим. Несколько ина- че взглянув на приведенный выше алгоритм, можно понять, как его можно расши- рить для генерирования случайных точек в пространствах с высшими измерения- ми. Это важно, например, при оценке кратных интегралов по методу Монте-Карло (см. раздел 1.8.3). Условие приема на шаге 3 алгоритма можно сформулировать как Ut{Y) геометрическом плане это означает, что значение У можно при- нять как значениеX, если точка (У, 1А(У)) попадает под кривую плотности распре- деления /. На рис. 8.10 показаны те же значения У, что и на рис. 8.9, при этом точки имеют координаты (У, Ut(Y)), а 50 принятых значений Xвновь отмечены крести- ками на оси х. Поскольку мы принимаем те значения У, для которых точки (У, Ut(Y)) попадают под кривую плотности распределения/(х), становится оче- видным, что значения X будут располагаться плотнее на оси х там, где/(х) подни- мается высоко, поскольку более вероятно, что равномерно распределенные точки будут попадать под кривую плотности распределения f(x) именно в данном месте. В этом конкретном примере прямоугольная область под графиком t(x) делает равномерность распределения точек (У, Ut(Y)) очевидной, то же самое касается областей любой формы и в любых измерениях. Основная задача состоит в нахож- дении способа эффективного генерирования равномерно распределенных точек в произвольной непрямоугольной области (эту проблему рассматривает Смит [Smith, 1984], предлагая более эффективную альтернативу, нежели метод приня- тия-отклонения в пространствах большой размерности). Хотя с помощью метода принятия-отклонения генерируются значения X с нуж- ным распределением независимо от выбора оценивающей сверху функции £, этот выбор сказывается на эффективности его работы. Во-первых, поскольку на шаге 1 требуется генерировать значение У с плотностью распределения t(x)/c, нужно вы- брать такую функцию t, при которой генерирование осуществляется быстро (та- кой является равномерная функция t, приведенная в примере 8.6). Во-вторых, мы полагаем, что вероятность отказа на шаге 3 можно сделать небольшой, поскольку в случае отказа приходится начинать выполнение алгоритма сначала. В приложе- нии 8А показано, что при любом повторении алгоритма вероятность принятия на шаге 3 составляет 1/с; поэтому желательно выбрать такую функцию t, чтобы зна- чение с было небольшим. Таким образом, мы хотим определить функцию t, график для которой подходил бы близко к/, а это сделало бы значение с близким к 1, его нижней границе. Интуитивно определяем, что функция t, которая находится лишь
8.2. Общие подходы к генерированию случайных величин 523 незначительно выше /, приводит к получению плотности распределения г, и она будет близка к /, так что значения Y, генерируемые из распределения с плотностью г на шаге 1, происходят из практически правильного распределения, поэтому мы принимаем большинство из них. (С этой точки зрения можно убедиться, что рав- номерный выбор t в примере 8.6 не самый разумный подход, так как при нем функ- ция t не очень близка к /. Поскольку с - 2,0736, вероятность принятия составляет только 0,48, а это меньше, чем нам бы хотелось.) Такие цели, как простота гене- рирования из распределения плотностью t(x)/c и небольшие значения с, могут противоречить друг другу, поэтому выбор t не очень четок и требует тщательного рассмотрения. Проведено немало исследований с целью определить подходящий выбор функции t для заданного распределения [Ahrens and Dieter, 1972, 1974; Atkinson, 1979b; Atkinson and Whittaker, 1976; Schmeiser, 1980a, 1980b; Schmeiser and Babu, 1980; Schmeiser and Lal, 1980b; Schmeiser and Shalaby, 1980; Tadikamalla, 1978]. Популярный метод определения подходящей функции t — сначала опреде- лить г(х) как некоторую общую плотность распределения, например как плот- ность нормального или двойного экспоненциального распределения, а затем най- ти наименьшее значение с, чтобы t(x) - cr(x) £ f(x) для всех х. Рис. 8.10. Выборка из 50 величин X (по горизонтальной оси) и необходимые пары величин (У, t7t(P)) Для метода принятия-отклонения с распределением beta(4,3) Пример 8.7. Снова рассмотрим распределение beta(4,3) из примера 8.6, но теперь с более тщательно подобранной оценивающей сверху функцией, с помощью которой мы поста- раемся увеличить вероятность принятия величин, не усложнив при этом генерирование
524 Глава 8. Генерирование случайных величин значений Y из распределения с плотностью г(х); мы делаем это, опираясь на данные из работы Шмейсера и Шалаби [Schmeiser and Shalaby, 1980]. Для такой плотности суще- ствует две точки перегиба кривой (то есть значения х, в которых/(х) становится из вы- пуклой впалой, или наоборот), которые можно найти, решив уравнение f"(x) - 0 для значений х между 0 и 1; в результате получаем х - 0,36 их - 0,84 (два десятичных числа). Проверив знаки/"(х) в трех областях интервала [0,1], созданных этими двумя точками перегиба кривой, мы узнаем, что/(х) является выпуклой в интервале [0; 0,36], впалой в интервале [0,36; 0,84] и снова выпуклой в интервале [0,84; 1]. По определению выпукло- сти линия от точки (0,0) до точки (0,36; /(0,36)) будет проходить над/(х); точно также линия, соединяющая точки (0,84; /(0,84)) и (1, 0), будет находиться над/(х). В той об- ласти, где /(х) будет впалой, мы просто помещаем горизонтальную линию на высоте 2,0736 — это максимальная высота, которой достигает /(х). В результате получаем ку- сочно-линейную оценивающую сверху функцию t(x), показанную на рис. 8.11. Рис. 8.11. Функция /(х) и кусочно-линейная оценивающая сверху функция t(x) для метода принятия-отклонения с распределением beta(4,3) Сложив площади двух треугольников и прямоугольника, получаем с — 1,28, так что ве- роятность принятия значений в алгоритме равна 0,78, что значительно лучше, чем веро- ятность принятия 0,48 (полученная при использовании простой равномерной оцени- вающей сверху функции в примере 8.6). Однако теперь будет сложнее генерировать значения из плотности г(х) (ее график изображен на рис. 8.12). Как следует из рис. 8.12, генерирование величин из плотности г(х) можно осуществить с помощью метода компо- зиции, при этом площадь под функцией г(х) делится на три участка, каждый соответст- вует плотности распределения, из которого легче генерировать величины (см. зада- чу 8.16). Таким образом, в рассматриваемом примере мы объединили три различных
8.2. Общие подходы к генерированию случайных величин 525 метода генерирования величин: метод обратного преобразования (для генерирования случайных величин из плотностей составляющих функцию г(х)), метод композиции (для г(х)) и, наконец, метод принятия-отклонения (для /(х)). Не ясно, оправдывает ли высокая вероятность принятия величин, по сравнению с примером 8.6, увеличение объ- ема работы, необходимой для генерирования значения Y, это может зависеть от несколь- ких факторов, а именно: определенных параметров, эффективности выполнения кода, а также языка программирования, компилятора, компьютерного оборудования. Рис. 8.12. Функция г(х), соответствующая кусочно-линейной оценивающей сверху функции t(x), приведенной на рис. 8.11 Для метода принятия-отклонения было предложено множество изменений, на- правленных в основном на ускорение его работы. Например, Хорманн и Дерфлин- гер [Нцппапп and Derflinger, 1996] предлагают версию метода для генерирования случайных величин из дискретных распределений (в том числе стремящихся к бес- конечности), где используется непрерывная оценивающая сверху функция и не происходит генерирование отдельного случайного числа, определяющего приня- тие или отклонение величины. 8.2.5. Специальные свойства Хотя большинство методов генерирования случайных величин можно отнести к одному из четырех ранее описанных в разделе 8.2 подходов, но известны также методы, которые основываются на каком-либо специальном свойстве функции распределения Гили случайной величины X. Часто специальное свойство — это
526 Глава 8. Генерирование случайных величин форма представления величины X в виде других случайных величин (их проще ге- нерировать); в этом смысле метод свертки является «специальным» со специаль- ным свойством. Поскольку общей формы для этих методов не существует, проде- монстрируем на примерах, что возможно сделать с их помощью. (Дополнительные примеры имеются в разделах 8.3 и 8.4.) Пример 8.8. Если У - N(0, 1) (стандартное нормальное распределение), то У2 будет иметь распределение «хи-квадрат» с одной степенью свободы. (Запись X - х* означает, что X имеет распределение «хи-квадрат» с k степенями свободы.) Таким образом, чтобы генерировать X - х?» генерируем У - N(0, 1) (см. раздел 8.3.6) и возвращаем X - У 2. Пример 8.9. Если Zt, Z2,..., Zk являются независимыми и одинаково распределенными величинами с распределением Хр тоХ= Zj + Z2 +...+ Z* - х*- Таким образом, чтобы гене- рировать X- х*, сначала генерируем Yu У2,..., У* как независимые и одинаково распреде- ленные случайные величины с распределением N(0, 1), а затем возвращаем X - У/ + + У22 +...+ У*2 (см. пример 8.8). Поскольку для больших значений k такой процесс может занимать довольно много времени, может возникнуть необходимость воспользоваться тем фактом, что распределение х* является гамма-распределением с параметром формы а - Л/2 и масштабным параметром ₽ - 2. Тогда величину X можно получить непосредст- венно с помощью методов генерирования гамма-распределений, которые используются в разделе 8.3.4. Пример 8.10. Если У- N(0,1), Z- х*, а УиZявляютcя независимыми, то считается, что X - Y/yjZ/k имеет распределение Стпьюдента с k степенями свободы, что обозначается как X - tk. Таким образом, чтобы генерировать X - tk, мы генерируем У - N(0,1) и Z - х* независимо друг от друга и возвращаем (см. пример 8.9) X = Y/^Z/k. Пример 8.11. Если Zt - х^, Z2 - х*2, a Zt и Z2 являются независимыми, то считается, что у .... ZJK Z2/k2 имеет распределение F с (й1я k2) степенями свободы, что обозначается как X- Та- ким образом, мы генерируем Z, - х*. и Z2 ~ х! независимо друг от друга и возвращаем X - (Z^/^^). Хотя все примеры (с 8.8 по 8.11) связаны с теорией нормально-распределенных случайных величин, эти разновидности наблюдений можно использовать для ге- нерирования случайных величин, не имеющих ничего общего с нормальным рас- пределением (см. бета-распределение в разделе 8.3.8). 8.3. Генерирование непрерывных случайных величин В этом разделе рассматриваются конкретные алгоритмы генерирования случай- ных величин с несколькими обычно встречающимися непрерывными распределе- ниями. В разделе 8.4 показаны алгоритмы для генерирования дискретных случай- ных величин. Хотя для генерирования величин из некоторого распределения может существовать несколько различных алгоритмов, в каждом случае мы под- робно рассказываем только об одном методе и даем некоторую информацию о дру- гих алгоритмах, имеющих свои преимущества, например скорость их выполнения
8.3. Генерирование непрерывных случайных величин 527 будет быстрее за счет увеличения стоимости наладки и сложности алгоритма. При выборе алгоритмов, представленных в этих разделах, мы отдавали предпочте- ние тем, которые проще описать и реализовать, но при этом они достаточно эф- фективно выполняются. Мы приводим только точные (вплоть до точности ма- шинных вычислений) методы, избегая приближенных. Если основное значение имеет скорость выполнения, мы советуем рассмотреть другие алгоритмы для гене- рирования величин из требуемого распределения (о них мы даем справочную ин- формацию). Определения функций плотности, вероятностных мер и функций распределения вы найдете в разделах 6.2.2 и 6.2.3. 8.3.1. Равномерное распределение Функцию распределения случайной величины U(a, Ъ) легко обратить, решив уравнение и - F(x), чтобы получить х для 0 £ и £ 1, х = F -1(и) “ а + (Ь - а)и. Таким образом, мы можем воспользоваться методом обратного преобразова- ния для генерирования X. 1-Генерируем U - U(0, 1). 2.Возвращаем X - а + (b - a)U. Если нужно генерировать много значений X, константа Ъ - а должна быть вы- числена заранее и сохранена для использования в этом алгоритме. 8.3.2. Экспоненциальное распределение В примере 8.1. рассматривалась экспоненциально распределенная случайная ве- личина со средним р > 0, в нем мы вывели следующий алгоритм обратного преоб- разования. сгенерируем U - U(0, 1). 2. Возвращаем X - ~р In U. (Вспомните, что U на шаге 2 равно 1 - U, если мы хотим получить буквальную вер- сию X - F‘( U), чтобы добиться положительной корреляции между значениями X и U.) Этот простой метод, обладающий всеми преимуществами метода обратного преобразования (рассматривался в разделе 8.2.1), работает достаточно быстро, большая часть времени идет на оценку логарифма. Опыты, проведенные Аренсом и Дитером [Ahrens and Dieter, 1972], показали, что метод является самым быст- рым из четырех рассматривавшихся алгоритмов, если программировать на языке FORTARN, при этом 72 % времени заняла оценка логарифма. Если вы хотите про- граммировать на языке низкого уровня, существуют другие методы, с помощью которых можно избежать использования логарифма, действуют они быстрее, хотя являются гораздо более сложными и требуют предварительной подготовки [von Neumann, 1951; Marsaglia, 1961; MacLaren, Marsaglia and Bray, 1964]. Дополни- тельную информацию можно получить в работах Аренса и Дитера [Ahrens and Dieter, 1972], а также Фишмана [Fishman, 1978, р. 402-410].
528 Глава 8. Генерирование случайных величин 8.3.3. Распределение Эрланга т-го порядка Как мы видели в примере 8.5, если X — случайная переменная с распределением Эрланга m-го порядка со средним р, можно записать, что X - Yi + У2 + + I'm, гДе Yj — независимые и одинаково экспоненциально распределенные случайные пере- менные со средним р/m каждая. Так был получен алгоритм свертки, описанный в примере 8.5. Однако его эффективность можно улучшить следующим образом. Если мы воспользуемся методом обратного преобразования из раздела 8.3.2 для генерирования экспоненциально распределенных величин У • [ Yf = (~P/m) In L7;, где [7i, U2, .... Um — независимые и одинаково распределенные случайные величины с распределением U(0, 1)], то получим т т _П f m \ [nr, I, i=i ы m m ^(=1 J так что нам понадобится оценить только один логарифм (а не т логарифмов). Тог- да формулировку этого алгоритма получим следующим образом. 1. Генерируем Uu U2,Um как независимые и одинаково распределенные величи- ны с распределением U(0, 1). 2. Возвращаем X = — Inf П [7 А m v=i J (В данном случае снова нужно заранее вычислить р/m и сохранить его для повтор- ного использования.) Этот алгоритм действительно является комбинацией мето- дов композиции и обратного преобразования. Поскольку мы должны генерировать m случайных чисел и выполнить т умно- жений, время выполнения алгоритма приблизительно пропорционально т. По- этому можно поискать альтернативный метод генерирования при большом зна- чении т. Распределение Эрланга m-го порядка как раз и является специальным вариантом гамма-распределения (с параметром формы а, равным целому числу т), и мы также можем воспользоваться одним из методов генерирования случайных величин с гамма-распределением (см. генерирование величин с гамма-распределе- нием в разделе 8.3.4). Точное значение порога, при превышении которого с помо- щью значения т следует переключаться на генерирование величин с гамма-рас- пределением, будет зависеть от метода, который применяется для генерирования случайной величины с гамма-распределением, а также от языка, компилятора и компьютерного оборудования. Для каждой конкретной ситуации стоит провес- ти предварительные испытания. Опыты Ченга [Cheng, 1977] с учетом времени вы- полнения для генератора случайных величин с гамма-распределением в случае, когда а > 1, показали, что такой генератор работает быстрее алгоритма для распре- деления Эрланга m-го порядка, когда приблизительно m й 10. Другая проблема, связанная с использованием вышеприведенного алгоритма, особенно при боль- ших значениях т, состоит в том, чтоП« может приближаться к 0, а это приво- дит к возникновению численных проблем при получении логарифма.
6.3. Генерирование непрерывных случайных величин 529 8.3.4. Гамма-распределение Случайные величины с гамма-распределением сложнее генерировать, нежели три типа случайных величин (о них шла речь в этом разделе), поскольку функция рас- пределения для них не имеет конечной формы, для которой мы могли бы попро- бовать найти обратную функцию. Во-первых, при заданном X ~ gamma(a, Р) для любого р > 0 можно получить случайную величину X', задав X' - 0Х, так что достаточно ограничить рассмотрение генерированием величин из распределения gamma(a,l). Во-вторых, вспомните, что распределение gamma(l, 1) является экс- поненциальным распределением со средним 1, то есть нам понадобится рассмат- ривать только 0 < а < 1 иа> 1.Поскольку алгоритмы для генерирования случай- ных величин с гамма-распределением, как правило, действительны только в одной из этих областей значений а, мы будем рассматривать их отдельно. В работе Тади- камаллы и Джонсона [Tadikamalla and Johnson, 1981] содержится всесторонний обзор методов генерирования величин с гамма-распределением, доступных на дан- ный момент. Сначала рассмотрим случай, когда 0 < а < 1. (Заметьте, что, если а - 0,5, мы имеем дело с распределением %,2 с измененным масштабом и что X можно просто генерировать, используя пример 8.8, тем не менее, нижеприведенный алгоритм действителен и для а - 0,5.) Аткинсон и Пирс [Atkinson and Pearce, 1976] для это- го случая проверили три альтернативных алгоритма (представляем один из них, опираясь на исследования Аренса и Дитера [Ahrens and Dieter, 1974]). Алгоритм Форсита [Forsythe, 1972] работает гораздо быстрее алгоритмов Аткинсона и Пир- са [Atkinson and Pearce, 1976], но он гораздо сложнее. Рассматриваемый нами ал- горитм, обозначенный в работе Аренса и Дитера [Ahrens and Dieter, 1974] как GS, представляет собой метод принятия-отклонения с оцениваемой сверху функцией [°, если х £0; *(*) = • х“-‘ Г(а) если 0 <х £ 1; е-* [Г(а) если 1 <х. Таким образом, с — JJ° t(x)dx = Ь/[аГ(а)], где b — (е + а)/е > 1, в результате по- лучаем плотность r(x) - t(x)/c как 0, ах°-1 b ае1 Ф0 = если х £0; если 0 <х < 1; если 1 <х. Случайную величину Y с плотностью г(х) можно генерировать с помощью ме- тода обратного преобразования; при этом функция распределения, соответствую- щая г, будет иметь вид
830 Глава 8. Генерирование случайных величин -R(x) = \r(y)dy = b 1_ае^ если 0 £ х < 1; если 1 < х. Ъ Ее можно обратить, чтобы получить (Ьи)1/а а если и («) = в ном случае. Таким образом, чтобы генерировать Y с плотностью г, сначала генерируем 17, - ~U(0,1). Если Ui <. i/b, устанавливаем У- (bUt)l/a-, тогда Y<, 1. В противном слу- чае, если Ui > 1/b, устанавливаем Y = -In [fe(l - С4)/а], что будет больше 1. Учитывая, что /(У) _ f е~г если 0 < Y < 1; Г(У) [У”1 если1<У, получаем конечный алгоритм (Ь = (е + а)/е должно быть определено заранее). 1. Генерируем Ui - U(0,1), ипустьР-б^. ЕслиР> 1, переходим к шагу 3. В про- тивном случае переходим к шагу 2. 2. Допускаем У - Р*/о, генерируем U2 - U(0, 1). Если U2 £ еу, возвращаем X- У. В противном случае возвращаемся к шагу 1. 3. Допускаем У- -In [(i - Р)/а], генерируем U2 - U(0,1). Если U2 У“-1, возвра- щаем X - У. В противном случае возвращаемся к шагу 1. Далее рассмотрим случай, когда а > 1, для которого существует несколько хо- роших алгоритмов. Принимая во внимание опыты с учетом времени Шмейсера и Лала [Schmeiser and Lal, 1980b], Ченга и Фиета [Cheng and Feast, 1979], мы пред- ставляем модифицированный метод принятия-отклонения, встречающийся в ра- боте Ченга [Cheng, 1977], автор называет его алгоритмом GB. Время выполнения этого алгоритма связано с а ->оо, он работает быстрее по мере увеличения значе- ния а. (Модификация метода принятия-отклонения заключается в добавлении более быстрой предварительной проверки на принятие.) Для того чтобы получить оцениваемую сверху функцию t(.r), сначала определим X ~ -72а-1, ц - а* и с = - 4а“е-в/[ХГ(а)]. Затем определяем t(x) - сг(х), где К*) = Хцхх~* ‘ (ц+хх)2 0 если х > 0; в противном случае. Функция распределения, соответствующая плотности г(х), составляет Я(х) = ц +х1 0 если х £ 0; в противном случае.
8.3. Генерирование непрерывных случайных величин 531 Ее легко инвертировать, чтобы получить ( У/к 7Г1(ы) = | ~~ I для0<и<1. Ченг [Cheng, 1977] в своей работе доказал, что Цх) — действительно оценивае- мая сверху функция /(х). Это пример получения оцениваемой сверху функции, когда сначала задается известное распределение (7?(х) на самом деле является функцией лог-логистического распределения (см. раздел 8.3.11) с параметром формы 1, масштабным параметром ц1Л и параметром положения 0), а затем изме- няется масштаб плотности г[х), чтобы оценивать сверху функцию/(х). Следова- тельно, мы используем метод обратного преобразования для генерирования ве- личины Y с плотностью г. После добавления эффективного предварительного испытания на принятие и упрощение для вычислительной эффективности Ченг [Cheng, 1977] представил следующий алгоритм (предварительно определяемые константы составляют а ~ -72а -1, Ъ - а - In 4, q - а + 1/а, 0 - 4,5 и d -1 + In б). 1. Генерируем Ut и U2 как независимые и одинаково распределенные случайные величины с распределением U(0, 1). 2. Допускаем V - a In [14/(1 - С4)], Y = aev, Z - U2U2 nW = b + qV-Y. 3. Если W+d - 6Z^ 0, возвращаем X - Y. В противном случае переходим к шагу 4. 4. Если W^lnZ, возвращаем X - Y. В противном случае переходим к шагу 1. Шаг 3 — это добавленная предварительная проверка, в случае прохождения ко- торой можно избежать вычисления логарифма на шаге 4 обычного метода приня- тия-отклонения. (Если шаг 3 удалить, алгоритм все еще будет действительным, он просто превратится в метод принятия-отклонения.) Как уже говорилось раньше, существует несколько других алгоритмов, кото- рые можно использовать, когда a > 1. Шмейсер и Лал [Schmeiser and Lal, 1980b] представили другой метод принятия-отклонения, в котором функция t(x) явля- лась кусочно-линейной в «теле» функции /(х) и экспоненциальной на концах. Их алгоритм работал вдвое быстрее приведенного выше алгоритма для значений а от 1,0001 до 1000. Однако их алгоритм более сложный, и при его использовании тре- буется дополнительное время, чтобы определить необходимые константы для за- данного значения а. Это типичная ситуация, когда специалисту приходится ис- кать компромиссное решение между различными факторами при выборе между альтернативными алгоритмами генерирования случайных величин. Мы снова обратимся к рассмотрению прямого использования метода обратно- го преобразования для генерирования случайных величин с гамма-распределени- ем. Поскольку ни функция гамма-распределения, ни ее обратная функция не име- ют простой конечной формы, придется прибегнуть к численным методам. Бест и Робертс [Best and Roberts, 1975] предлагают численную процедуру для обращения функции распределения случайной величины с распределением «хи-квадрат» со степенями свободы, которые могут не быть целыми числами, поэтому она при- менима для генерирования случайных величин с гамма-распределением при любом значении а > 0. (Если У ~ Хс> где необязательно, чтобы v > 0 было целым
532 Глава 8. Генерирование случайных величин числом, то У - gamma(r/2,2). Если нам нужно, чтобы X - gamma(a, 1), сначала ге- нерируем У ~ xL> а затем возвращаемX = У/2.) Бест и Робертс [Best and Roberts, 1975] также представили подпрограмму на языке FORTRAN для этой процедуры. Существует еще программа IMSL [Visual Numerics, Inc., 1997] для инвертирова- ния функции распределения «хи-квадрат». Пресс [Press et al., 1992, sect. 6.2] дает программу на языке С для оценки функции распределения «хи-квадрат» (повтор- ная параметризация функции, известной как неполная функция гамма-распреде- ления), которая затем должна быть численно обращена с помощью алгоритма на- хождения корня (рассматривается в главе 9 их книги). 8.3.5. Распределение Вейбулла Функцию распределения Вейбулла легко обратить, чтобы найти F‘(«) = ₽[- 1п(1- ы)]1/а, что ведет к получению следующего алгоритма обратного преобразования, сгенерируем U - U(0, 1). 2. Возвращаем X - ₽(-ln U)i/a. Мы снова используем тот факт, что Uh 1 - U имеют одно и то же распределение U(0, 1), поэтому на шаге 2 U можно заменить на 1 - 17, если нужен буквальный метод обратного преобразования. Этот алгоритм можно также обосновать, отме- тив, что если У имеет экспоненциальное распределение со средним Р“, то У*/а - - Weibull(a, 0)( см. раздел 6.2.2). 8.3.6. Нормальное распределение Прежде всего обратите внимание, что при X - N(0,1) можно получить X’ - N(p, 52), задав X' - р + 5Х, поэтому мы можем ограничиться генерированием стандартных нормально распределенных случайных величин. В этой ситуации очень большое значение имеет эффективность алгоритма, поскольку плотность нормального рас- пределения часто применяется для определения оцениваемой сверху функции в методе принятия-отклонения при генерировании случайных величин из других распределений, например генерировании случайных величин из гамма- и бета- распределений Аренса и Дитера [Ahrens and Dieter, 1974]. Нормально распреде- ленные случайные величины также можно прямо преобразовать в случайные ве- личины, которые можно получить из других распределений, например логнор- мального. Кроме того, специалистам по статистике, стремящимся эмпирически оценить при изучении по методу Монте-Карло распределение, соответствующее нулевой гипотезе статистической проверки на нормальность, понадобится эффек- тивный источник нормальных случайных величин [Filliben, 1975; Lilliefors, 1967; Shapiro and Wilk, 1965]. Сегодня все еще применяется один из ранних методов генерирования случай- ных величин с распределением N(0,1), представленный Боксом и Мюллером [Box and Muller, 1958], несмотря на наличие гораздо более быстро работающих алго-
8.3. Генерирование непрерывных случайных величин 533 ритмов. Однако у него есть то преимущество, что в нем сохраняется однозначное соответствие между примененными случайными числами и полученными случай- ными величинами с распределением N(0, 1); это может оказаться полезным для поддержания синхронизации при использовании общих случайных чисел или несовместных величин для уменьшения дисперсии (см. разделы 11.2 и 11.3). Согласно этому методу нужно просто генерировать независимые и одинаково распределенные величины Г\и Ц2 с распределением U(0, 1), затем определить - y]-2\nU1 cos 2nU2 и X2 - J-2 lnL\ sin 2л U2. Тогда X2 и X2 будут независимыми и одинаково распределенными случайными величинами с распределением N(0,1). Поскольку мы получили пары случайных искомых величин, можем вызвать под- программы с нечетным номером, вычислить Xt и Х2 так, как только что было опи- сано, но вернуть только Хь сохранив Х2 для немедленного возвращения при сле- дующем (четном) вызове. Таким образом, мы используем два случайных числа для получения двух случайных величин с распределением N(0,1). В принципе та- кой метод действителен, если и U2 являются действительно независимыми и одинаково распределенными случайными величинами с распределением U(0,1), однако могут возникнуть сложности, если на практике окажется, что Z7t и U2 явля- ются фактически смежными случайными числами, полученными с помощью ли- нейного конгруэнтного генератора (см. раздел 7.2). В связи с тем, что U2 будет зависеть от из-за рекурсии в уравнении (7.1) из раздела 7.2, можно утвер- ждать, что сгенерированные величины Хг и Х2 попадут на спираль в пространстве (Х„ Х2), вместо того чтобы представлять действительно независимое нормальное распределение [Bratley, Fox and Schrage, 1987, p. 223-224]. Из этого следует, что метод Бокса и Мюллера не должен использоваться с одним потоком линейного конгруэнтного генератора. Взамен этого можно было бы применять отдельные по- токи сложного генератора, например комбинированный генератор из приложе- ния 7Б, но, вероятно, нужно все же прибегнуть к одному из методов для генериро- вания нормально распределенных величин, описанных ниже. Усовершенствованный метод Бокса и Маллера, в котором упразднены триго- нометрические вычисления, был описан Марсальи и Бреем [Marsaglia and Bray, 1964] и стал известен как метод полярных координат. Метод основывается на специальном свойстве нормального распределения. Согласно данным Аткинсона и Пирса [Atkinson and Pearce, 1976], его быстродействие по сравнению с методом Бокса и Маллера составляет от 9 до 31 % при программировании на языке FORTRAN — в зависимости от того, какая вычислительная машина используется. Аренс и Дитер [Ahrens and Dieter, 1972] зарегистрировали сокращение времени выполнения на 27 %. Метод полярных координат, при котором случайные величи- ны с распределением N(0,1) также генерируются парами, имеет следующий вид. 1. Генерируем U2 и U2 как независимые и одинаково распределенные случайные величины с распределением U(0, 1); пусть Ц - 2Ut - 1 для i -1, 2 и пусть W + V22. 2. В случае, если W > 1, возвращаемся к шагу 1, иначе пусть У - -7(-21п1У) / W, Х{ — V2Yи Х2 — V2Y. Тогда Xt и Х2 являются независимыми и одинаково распре- деленными случайными величинами с распределением N(0, 1).
534 Глава 8. Генерирование случайных величин Поскольку «отклонение» значений t/j и U2 может произойти на шаге 2 (с ве- роятностью 1 - л/4, см. задачу 8.12), для метода полярных координат требуется случайное количество случайных величин с распределением U(0, 1), чтобы гене- рировать каждую пару случайных величин с распределением N(0,1). Следующий очень быстрый алгоритм для генерирования пар случайных величин с распределе- нием N(0,1) разработали Киндерман и Рамадж [Kinderman and Ramage, 1976], это сложный алгоритм, но его реализация занимает на 30 % меньше времени, чем вы- полнение метода полярных координат с использованием языка FORTRAN. При прямом применении метода обратного преобразования для генерирования нормально распределенных случайных величин нужно обращаться к численному методу, потому что ни функция нормального распределения, ни ее обратная функ- ция не имеют простого замкнутого вида. Такой метод с соответствующей подпрог- раммой на языке FORTRAN приводится Оде и Эвансом [Odeh and Evans, 1974]. В библиотеке IMSL [Visual Numerics, Inc., 1997] также есть программа для обрат- ной функции стандартного нормального распределения. 8.3.7. Логнормальное распределение Специальное свойство логнормального распределения — если Y - N(p,82), то ег - - LN(p, 82) - используется, чтобы получить следующий алгоритм. сгенерируем У - N(p,82). 2. Возвращаем X - еу. Для выполнения шага 1 можно взять любой из методов генерирования нор- мально распределенных случайных величин, рассмотренных в разделе 8.3.6. Помните о том, что ц и 82 не являются средним и дисперсией распределения LN(p,82). В действительности, если X - LN(p,82), и мы определяем р'=Е(Х) и S'2 - = Var(X), то получается, что ц' =ер+о /2 ио'2 =е2и+о (е^ -1) Следовательно, ес- ли мы намерены генерировать логнормально распределенную случайную величи- ну X с заданным средним р.' = Е(Х) и заданной дисперсией 8'2 “ Var(A), необходимо сначала определить ц и 82 в исчислении ц' и 8'2, перед тем как генерировать проме- жуточную нормально распределенную случайную величину У. Получаем следую- щие формулы: p=E(Y) = л/ц71 +о'2 I гг'2 I о2 = Уаг(У) = In 1 + —- . I » ) 8.3.8. Бета-распределение Вначале обратите внимание, что мы можем получить X' - beta(at, a2) в интервале [а, д] для а < Ь, установив X' “ а + (Ь - а)Х, где X - beta(a1; 02) в интервале [0,1]. Так что достаточно рассмотреть последний случай, который мы дальше будем на- зывать распределением beta(alr a2).
8.3. Генерирование непрерывных случайных величин 535 Некоторые свойства распределения beta(aj, а2) для определенных комбинаций (04, <х2) обеспечивают генерирование случайных величин с бета-распределением. Во-первых, еслиХ- beta(ab a2), то 1 - X- beta(a2, cq), так что мы можем без труда генерировать случайную величину с pacпpeдeлeниeм•beta(a2, аД если удается легко получить случайную величину с распределением beta(at, a2). Такая ситуа- ция возникает, когда или alt или а2 равно 1. Если = 1, мы получаем f(x) - ар: для OSxS 1, так что функция распределения F(x) = xai, и мы можем без труда генери- ровать X ~ beta(ab 1) с помощью метода обратного преобразования, то есть воз- вратив Х“ U1/a' для U- U(0,1). Наконец, распределение beta(l, 1) - это распре- деление U(0, 1). Общий метод генерирования случайных величин с распределением beta(a„ a2) для любых значений а, > 0 и а2 > 0 основывается на том факте, что если У, - ~ gamma(a1,1), У2 - gamma(a2,1), a Yj и У2 являются независимыми величинами, то У1/(У1 + У2) ~ beta(ai, 04). Таким образом, мы получаем следующий алгоритм: 1. Независимо генерируем Kj - gamma(a1, 1) и У2 - gamma(a2, 1). 2.Возвращаем X » Y1/(Yj + У2). Две случайные величины Yt и У2 с гамма-распределением можно генерировать по соответствующему алгоритму генерирования случайных величин с гамма-рас- пределением (см. раздел 8.3.4), так что нам нужно проверить, когда at и а2 будут меньше или больше 1. Этот метод достаточно удобен, поскольку он, по сути, выполняется для всех значений a > 0 при условии, что у нас есть генераторы случайных величин с рас- пределением Г(аь 1). Эффективность его выполнения зависит от скорости рабо- ты выбранных генераторов случайных величин с гамма-распределением. Однако существуют и более быстрые (и, конечно, более сложные) алгоритмы для прямо- го генерирования случайных величин с бета-распределением. Шмейсер и Бабу [Schmeiser and Babu, 1980] представили очень быстрый метод принятия-отклоне- ния для at > 1 и а2 > 1, где оценивающая сверху функция является кусочно-л иней- ной в центре/(х) и экспоненциальной на концах. В нем кусочно-линейная функ- ция £>(х), минорирующая (то есть всегда находящаяся ниже) /(х), обеспечивает быструю предварительную проверку. Аткинсон и Виттакер [Atkinson and Whit- taker, 1976,1979], Ченг [Cheng, 1978] и Джонк [Jijhnk, 1964] дают алгоритмы для прямого генерирования случайных величин с распределением beta(aj, a2), когда Oj < 1 или a2 < 1 (или обе эти величины меньше 1). Метод ВА, предложенный Чен- гом [Cheng, 1978], довольно прост и подходит для любых комбинаций значений Oj > 0 и а2 > 0; то же касается алгоритмов Аткинсона [Atkinson, 1979а] и Джонка [Johnk, 1964]. Метод обратного преобразования для генерирования случайных величин с бета- распределением должен основываться на численных методах, как и в случаях с гамма-распределением и нормальным распределением. Этот метод вместе с соот- ветствующей программой FORTRAN приводится в работе Крана, Мартина и То- маса [Сгап, Martin, and Thomas, 1977], доступны также соответствующие про- граммы библиотеки IMSL [Visual Numerics, Inc., 1997]. Пресс [Press et al., 1992,
536 Глава 8. Генерирование случайных величин sect. 6.4] приводит программу на языке С для оценки функции бета-распределе- ния (она также известна как неполная функция бетпа-распределения), которая за- тем должна быть численно инвертирована с помощью алгоритма нахождения кор- ня (в его книге она рассматривается в главе 9). 8.3.9. Распределение Пирсона типа V Как уже отмечалось в разделе 6.2.2, тогда и только тогда X - РТ5(а, Р), когда 1/Х ~ - gamma(a, 1/р). Таким образом, мы получаем следующий алгоритм, основанный на специальном свойстве этого распределения. сгенерируем У - gamma(a, 1/Р). 2. Возвращаем X - 1/У. Можно использовать любой метод из раздела 8.3.4 для генерирования случай- ных величин с гамма-распределением, только необходимо учитывать, будет ли a < 1, a = 1 или a > 1. Применяя метод обратного преобразования следует иметь в виду (см. раздел 6.2.2), что функция распределения PT5(a, Р) есть функция F(x) = =1 -_FG(l/x) длях>0, гдеГс — функция распределения gamma(a, 1/Р). Установив, что F(x) = U, получаем X = 1/FC-1(1 - U), как в буквальном методе обратного пре- образования, или X - l/fG*1(l/)> если 1-UhUимеют одно и то же распределение U(0, 1). В любом случае нам обычно следует применять численный метод для оценки fc'1, как это описано в разделе 8.3.4. 8.3.10. Распределение Пирсона типа VI В разделе 6.2.2 отмечалось, что У1/У2 - PT6(a1( а2, Р), если Yt - gamma(a1( Р), У2 - - gamma(a2,1), a и У2 являются независимыми величинами. Таким образом, по- лучаем следующий алгоритм. 1. Независимо генерируем Yt - gamma(a1, Р) и У2 - gamma(a2, 1). 2. Возвращаем X = YJY2. Можно применять любой метод из раздела 8.3.4 для генерирования случайных величин с гамма-распределением, необходимо лишь проверить, будет ли a < 1, a = 1 или a > 1. При использовании метода обратного преобразования учтите (см. раз- дел 6.2.2), что функция распределения PT6(au a2, Р) равна F(x) - FB(x/(x + Р) для х > 0, где FB — это функция распределения beta(at, <х2)- Установив, что F(x) = U, по- лучаем X - pfB'1(U)/[l - FB~l(U)], где FBl(U) обычно следует оценивать с помо- щью численного метода, как это описано в разделе 8.3.8. 8.3.11. Лог-логистическое распределение Функцию лог-логистического распределения можно обратить, чтобы получить F“1(w) = Y + ₽ и ] 1—U J
8.3. Генерирование непрерывных случайных величин 537 и в результате вывести алгоритм, используемый для обратного преобразования. 1. Генерируем U - U(0, 1). 2. Возвращаем X = у + р[ 17/(1 - t7)]1/ct. 8.3.12. Связанное распределение Джонсона Случайная величина X ~ JSB(ab a2, a, b), тогда и только тогда, когда Z - a, + a2ln [(X - a)/(b - X)] - N(0, 1). Мы можем решить это уравнение для X в исчислении Z, чтобы получить сле- дующий алгоритм, основанный на специальном свойстве. 1. Генерируем Z - N(0, 1). 2. Пусть Y - exp [(Z - aj)/a2]. 3. Возвращаем X - (а + bY)/(Y + 1). Можно применить любой метод генерирования случайных величин со стандарт- ным нормальным распределением из раздела 8.3.6, чтобы получить Z на шаге 1. 8.3.13. Несвязанное распределение Джонсона Случайная величина X - JSU(a„ a2, а, b), тогда и только тогда, когда Z = at + a2 - N(0,1). Решаем это уравнение для X в исчислении Z, чтобы получить следующий алго- ритм, основанный на специальном свойстве распределения. сгенерируем Z - N(0, 1). 2.Допускаем, что У” exp [(Z- а()/а2]. З.Возвращаем X - у+ (Р/2)(У- 1/У). Можно использовать любой метод генерирования случайных величин со стан- дартным нормальным распределением из раздела 8.3.6, чтобы получить Z на шаге 1. Существует следующая альтернативная формулировка алгоритма X = у + р х х sinh[(Z - ai)/a2], где величина Z такая же, как и на шаге 1. 8.3.14. Распределение Безье Случайные величины из подобранных распределений Безье (см. раздел 6.9) мож- но генерировать с помощью численного метода обратного преобразования, кото- рый приводится в работе Вагнера и Вильсона [Wagner and Wilson, 1996b]. Для его выполнения требуется алгоритм нахождения корня. 8.3.15. Треугольное распределение Заметим, что если X- triang[0,1, (с - а)/(6 - а)], то Х'= а + (Ь - а) X- triang(a, b, с). Поэтому можно ограничиться рассмотрением случайных величин с распределени- ем triang(0,1, с), где 0 < с < 1. (В предельных случаях с - 0 или с -1 возникают пра-
538 Глава 8. Генерирование случайных величин F~'(u) = вый и левый треугольники, см. задачу 8.7.) Эту функцию распределения легко об- ратить, чтобы получить для 0 <, и 5 1 Jeu если 0 <,и 5 с; 1 -7(1-с)(1-м) еСЛИ с < ы S 1. Поэтому мы можем сформулировать следующий алгоритм обратного преобра- зования для генерирования X - triang(0, 1, с). 1. Генерируем U - U(0, 1). 2. Если U 5 с, возвращаем X = Jeu. В противном случае возвращаем X- 1-7(1-с)(1-П). (На шаге 2 U> с мы не можем заменить 1 - 17на 17 в формуле для X. Почему?) Аль- тернативный метод генерирования случайных величин с треугольным распреде- лением (с помощью метода композиции) вы найдете в задаче 8.13. 8.3.16. Эмпирические распределения В этом разделе дается алгоритм для генерирования случайных величин из функ- ций непрерывных эмпирических распределений F и G, определенных в разде- ле 6.2.4. В обоих случаях можно использовать метод обратного преобразования. Допустим, что у нас есть исходные отдельные наблюдения, и мы их используем для определения функции эмпирического распределения F(x), приведенной в раз- деле 6.2.4 (см. рис. 6.24). Хотя вначале может показаться, что для алгоритма обрат- ного преобразования требуется поиск, тот факт, что -«углы» функции F приходят- ся точно на уровни 0,1/(л - 1), 2/(п - 1),..., (n - 2)/(п - 1) и 1, позволяет избежать явного поиска. Докажите самостоятельно, что следующий алгоритм представля- ет метод обратного преобразования: 1. Генерируем U - U(0, 1), пусть Р - (п - 1) U и пусть I - |_Pj + 1. 2. Возвращаем X = Xw + (Р - I + 1)( Х(/+1) - Xw). Не забывайте, что значения X{i) должны сохраняться и что, сохраняя отдель- ный массив со значениями Х(/+1) - Х(/), мы можем избежать вычитания на шаге 2. Кроме того, генерируемые значения X всегда будут находиться в области от Х(1) до Х(п); такое ограничение является одним из недостатков определения эмпирическо- го распределения с помощью этого метода. Отсутствие поиска делает предельное время выполнения этого алгоритма независимым от значения п, хотя для больших значений п требуется больше памяти и времени на сортировку величин Х{. Теперь предположим, что наши данные сгруппированы, то есть у нас есть k смежных интервалов [о0> ai). [«i, «z)>...» [ац> а*] и в j-m интервале содержится п,- данных наблюдений с nt + пг + ... + пк = п. В данной ситуации, учитывая функцию эмпирического распределения G(x), определенную в разделе 6.2.4 (см. рис. 6.25), случайную величину с соответствующим распределением можно генерировать с помощью следующего алгоритма обратного преобразования. 1. Генерируем U - U(0, 1). 2. Определяем неотрицательное целое число J(O^J^fe-l), так что G(aj) £U< < G(aJ+i), и возвращаем X- af+ [U - G(aJ')](aJ+l - aJ')/[G(aJ+ij - G(aj)].
8.4. Генерирование дискретных случайных величин 539 Помните, что для величины J, определяемой на шаге 2, выполняется неравен- ство G(flj) < G(aJ+i), так что в интервале, для которого ц - 0, не могут генериро- ваться значения X. (К тому же, очевидно, что а0 <, X < а*.) Величину J на шаге 2 можно определять путем простого поиска слева направо или поиска, начинающе- гося со значения j, для которого G(aJ+1) - G(a7) имеет наибольшее значение, затем берется следующее наибольшее значение и т. д. Существует альтернативный ва- риант, позволяющий совершенно избежать поиска (за счет дополнительной памя- ти): изначально мы могли бы определить вектор (т^ mi.т„), присвоив первым щ величинам т, значение 0, следующим п2 величинам т, —значение 1 и т. д., пос- ледним пк величинам т, присваивается значение k - 1. (Если некоторая величина rij равна 0, ни одной величине тп, не присваивается значение у - 1. Так, если k > 3 и nt > 0, п2 = 0 и п3 > 0, первым пг величинам присваивается значение 0, а следую- щим п3 величинам ш, — значение 2.) Тогда значениеJ на шаге 2 можно определить, установив, что L = LnJ + 1, a J - mL. Стоит ли прибегать к такому варианту, зависит от конкретных характеристик данных и от того, насколько важно увеличение ско- рости вычислений, которое может быть получено за счет выделения дополнитель- ной памяти и потраченных усилий на программирование. Чен и Асау [Chen and Asau, 1974] дают другой метод определения J на шаге 2, основанный на предвари- тельных вычислениях, которые уменьшают область поиска для данного U; для не- го требуется лишь 10 дополнительных ячеек памяти. (Их метод рассматривается в применении к функции дискретного эмпирического распределения, но он может использоваться и нашем случае.) Эмпирическое экспоненциальное распределение, коротко упомянутое в разде- ле 6.2.4, также можно обратить, чтобы использовать метод обратного преобразова- ния. Братии, Фокс и Шрейдж [Bratley, Fox and Schrage, 1987, p. 151] дают для этого явный алгоритм. 8.4. Генерирование дискретных случайных величин В этом разделе рассматриваются алгоритмы для генерирования случайных вели- чин из различных дискретных распределений, которые могут применяться при имитационном моделировании. Как и в разделе 8.3, мы, как правило, приводим один алгоритм, его достаточно просто реализовать, и он при этом эффективно ра- ботает. Мы также даем информацию и ссылки по альтернативным алгоритмам, которые могут работать быстрее благодаря их усложнению. Метод обратного преобразования для дискретных случайных величин в том виде, в каком он был описан в разделе 8.2.1, может применяться для генерирования случайных величин из любого дискретного распределения, независимо от того, является ли область возможных значений конечной или бесконечной (счетной). Многие алгоритмы, приведенные в этом разделе, представляют метод обратного преобразования для дискретных случайных величин, хотя в некоторых случаях этот факт не просто определить в связи с конкретным способом выполнения необ- ходимого поиска, в котором часто используется специальная форма вероятностной
540 Глава 8. Генерирование случайных величин меры. Как и в случае с непрерывными случайными величинами, метод обратного преобразования может оказаться не самым эффективным для генерирования слу- чайной величины из заданного распределения. Следует упомянуть еще один общий подход, который можно использовать для генерирования случайных величин из любых дискретных распределений с конеч- ной областью значений. Речь идет о методе замещений, разработанном Уокером [Walker, 1977] и усовершенствованном Кронмалем и Петерсоном [Kronmal and Peterson, 1979]. Этот метод очень эффективен, но требует предварительной подго- товки и дополнительной памяти. Подробнее мы рассмотрим этот метод в разде- ле 8.4.3, но не надо забывать, что он применим к любым дискретным распределени- ям с конечной областью значений (например, к биномиальному распределению). Для дискретных распределений с бесконечной областью значений метод может использоваться в сочетании с общим композиционным методом (см. раздел 8.2.2); об этом также пойдет речь в разделе 8.4.3. Кроме метода замещений существуют и другие общие подходы к генерирова- нию дискретных случайных величин, описанные в [Shanthikumar, 1985, Peterson and Kronmal, 1983]. И, наконец, последнее замечание касается видимой потери общей формы при рассмотрении только распределений, имеющих область значений Sn = {0,1,2,..., п} или S - {0,1,2,...}. Такой поход может показаться более ограниченным, нежели на- ше исходное определение дискретной случайной величины с общей областью зна- чений Т„ - {хь х2,х„} или Г - {хь х2,...}. Но на самом деле такая общая форма не теряется. Если нам действительно необходима случайная величина X с функцией мерыр(х;) и общей областью значений Т„ (или Т), мы можем вначале генерировать случайную величину с областью значений S„_t (или 5), для которой P(I - i - 1) - ” p(xj для г-1,2,..., п (или 1, 2,...). Затем возвращается случайная величина X = “ хм, она имеет нужное распределение. (При заданном / значение х1+1 может быть определено по сохраненной таблице значений х,- или по формуле для вычисления Xi как функции z.) 8.4.1. Распределение Бернулли Следующий алгоритм можно определить интуитивно, он эквивалентен методу об- ратного преобразования (если U и 1 - U поменять местами). Сгенерируем U - U(0, 1). 2. Если U<p, возвращаем X - 1. В противном случае возвращаем X - 0. 8.4.2. Дискретное равномерное распределение Снова простой алгоритм точно представляет метод обратного преобразования. Сгенерируем U- U(0, 1). 2. Возвращаем X - i + [(/ - i + 1) tZJ. Поиск в этом случае не нужен. Константа / - i + 1 должна вычисляться заранее и сохраняться.
8.4. Генерирование дискретных случайных величин 541 8.4.3. Произвольное дискретное распределение Рассмотрим наиболее общую ситуацию, когда мы имеем любую функцию вероят- ностной меры р(0), р(1), р(2),... для неотрицательных целых чисел S, а требуется генерировать дискретную случайную величину X с соответствующим распределе- нием. Вероятностные меры p(i) можно определить теоретически по какой-либо форме распределения или эмпирически по набору данных. Случай с конечной об- ластью S„ используется, если мы устанавливаем р(г) - 0 для всех i £ п + 1. (Эта формулировка включает все специальные формы дискретных распределений.) Прямой метод обратного преобразования как для случаев с конечной областью значений, так и для случаев с бесконечной областью значений выглядит следую- щим образом (пустая сумма определяется как 0). ^Генерируем U~ U(0, 1). 2. Возвращаем неотрицательное целое число X - I, удовлетворяющее неравенству £гО) < XpU) j=0 j=0 Заметьте, этот алгоритм никогда не будет возвращать значение X в i, для кото- рого p(i) - 0, поскольку в противном случае строгое неравенство между двумя суммами на шаге 2 станет невозможным. На шаге 2 необходимо выполнить поиск, и он может занять много времени. При альтернативном варианте следует изна- чально отсортировать p(i) в порядке убывания, чтобы поиск мог завершаться пос- ле выполнения небольшого количества сравнений (пример найдете в задаче 8.2). В связи с распространенностью приведенной ситуации мы представляем три других метода, которые можно использовать, если искомая случайная величина имеет конечную область значений S„. В первом из этих методов допускается, что каждая функция вероятностной мерыр(г) точно равна числу с q десятичными раз- рядами; в качестве примера рассмотрим случай, когда q - 2, так что у нас есть p(i), имеющая форму 0,01^; для некоторого целого числа k{ е {0,1,..., 100} (г = 0,1,2,..., п) и =100. Мы инициализируем вектор (mit т2 mi00), присвоив первым k0 ве- личинам т?-значение 0, следующим k2 величинам значение 1 и т. д., последним k„ величинам т, мы присваиваем значение п. (Если k( = 0 для некоторого значения i, ни одной величине не присваивается значение i.) Таким образом, алгоритм ге- нерирования случайной искомой величины X будет иметь следующий вид. 1. Генерируем J ~ DU(0, 100). 2. Возвращаем X = т,. Чтобы выполнить шаг 1, нужно обратиться к разделу 8.4.2. Для этого метода требуется 10е дополнительных ячеек памяти и ссылка на массив на шаге 2. Однако он представляет метод обратного преобразования при условии, чтоJ генерируется с помощью алгоритма из раздела 8.4.2. Если для того, чтобы точно указать функ- цию p(t), нужно три или четыре десятичных разряда, значение 100 на шаге 1 будет заменено на 1000 или 10 000 соответственно, а число необходимых ячеек памяти также возрастет на один или два порядка величины. Даже если p(i) не являются числами точно с q десятичными разрядами для некоторого небольшого значения
542 Глма & Генерирование случайных величин q, достаточной точности можно добиться, округлив р(0 до ближайшей сотой или тысячной. Это хорошая альтернатива, особенно для случаев, когда функции p(i) представляют собой доли, полученные по данным, и не могут дать точность, боль- шую, нежели два или три Десятичных разряда. При округлении p(i) важно пом- нить, что их сумма должна быть равной точно 1. Описанный метод работает быстро, но для него могут понадобиться большие таблицы, если мы имеем целью получить высокую точность вероятностей. Мар- салья [Marsaglia, 1963] предложил другой вид алгоритма с использованием таб- лиц, для него требуется меньше памяти, а время его выполнения увеличивается незначительно. Рассмотрим распределение р(0) - 0,15; р(1) = 0,20; р(2) = 0,37; р(3) - 0,28. Чтобы использовать метод Марсальи, понадобится вектор длиной 100 для хра- нения 15 значений 0 и 20 значений 1, а так же 37 значений 2 и 28 значений 3. Мы же определим два вектора - один для разряда «десятых» (1-й разряд после запя- той), а другой для разряда «сотых» (2-й разряд после запятой). Чтобы заполнить вектор с разрядами «десятых», достаточно взглянуть на 1-й десятичный разряд после запятой в вероятностях и вставить соответствующее количество копий свя- занного с ним значения i (для i — 0,1,2,3), поэтому возьмем одно значение 0, два значения 1, три значения 2 и два значения 3, чтобы получить 0 1 1 2 2 2 3 3. Вектор с разрядами «сотых» будет иметь следующий вид: 0000022222223333333 3, что соответствует разряду сотых - 2-му десятичному разряду после запятой в ве- роятностях. Таким образом, всего требуется 28 ячеек памяти (в отличие от 100 ячеек в предыдущем табличном методе). Чтобы генерировать величину X, выбе- рите вектор с разрядами «десятых» с вероятностью, равной одной десятой суммы цифр, находящихся в 1-м десятичном разряде вероятностей, то есть с вероятностью 1 + 2 + 34-2 по 10 ’ ’ а потом произвольно (с равной вероятностью) выберите один из восьми элемен- тов вектора с разрядами «десятых», чтобы вернуть его как X. Вектор с разрядами «сотых» выбирается с вероятностью, равной 1/100 суммы цифр в разрядах сотых исходных вероятностей, то есть с вероятностью 1+о±7+8=о,2о. 100 Затем выберите один из 20 элементов вектора с разрядами «сотых», чтобы вер- нуть его как X. Легко убедиться в достоверности этого метода, например: Р(Х - 2) - Р(Х = 2 | выбираем вектор с разрядами «десятых») х х Р(выбираем вектор с разрядами «десятых») + + Р(Х = 2 | выбираем вектор с разрядами «сотых») х х Р(выбираем вектор с разрядами «сотых») = - (3/8)(0,8) + (7/20)(0,20) - - 0,37,
8.4. Генерирование дискретных случайных величин 543 что и требовалось доказать. Преимущество таблиц Марсальи в плане объема тре- бующейся памяти становится еще более очевидным по мере увеличения количест- ва десятичных разрядов в вероятностях. В его примере использовались числа с тремя десятичными разрядами, при этом для прямого метода с использованием таблиц из предыдущего абзаца требовалась 1000 ячеек памяти, а для трех векторов (с разрядами «десятых», «сотых» и «тысячных») в этом примере потребуется все- го 91 ячейка. Третий метод, который можно использовать, когда X имеет область значений S„, — это ранее упоминавшийся метод замещения. Для метода требуется изначаль- но вычислить два массива длиной п + 1 каждый по заданным функциям р(г). В первом массиве находятся так называемые граничные значения Д е [0, 1] для i" 0,1,..., п, а во втором массиве даются замещающие Д е 5„ для i - 0,1,..., п. В при- ложении 8Б приведено два алгоритма вычисления граничных значений и заме- щающих для функций p(i). (Граничные значения и замещающие не являются уникальными, в действительности два алгоритма из приложения 8Б могут давать различные результаты для одного и того же распределения, но оба являются обоснованными алгоритмами генерирования случайных величин). Значит, метод замещений можно сформулировать следующим образом. сгенерируем I ~ DU(0, и) и, независимо от 1, генерируем U - U(0, 1). 2. Если U Fj, возвращаем X - I. В противном случае возвращаем X - Lj. Таким образом, на шаге 2 присутствует своего рода «отклонение», но, отклонив величину I, нам не нужно начинать выполнение алгоритма заново, достаточно просто возвратить вместо величины I ее замещающую Д. Граничные значения рас- сматриваются как вероятности, с которыми мы возвращаем величину I, а не ее за- мещающую. Чтобы генерировать каждое значение X, следует выполнить только одно сравнение, и нам понадобится ровно два случайных числа для получения каждого значения X, если I генерируется по алгоритму из раздела 8.4.2. (Как вы- полнить шаг 1 всего лишь с одним случайным числом, вы узнаете из задачи 8.17.) Хотя подготовка к выполнению алгоритма не сложна, хранение граничных вели- чин и замещений требует 2(п + 1) дополнительных ячеек памяти; Кронмаль и Пе- терсон [Kronmal and Peterson, 1979] предложили способ сокращения объема тре- бующейся памяти в два раза (см. задачу 8.18). В любом случае объем требующейся памяти имеет порядок п, что считается основным недостатком метода замещений, если п может принимать очень большие значения. Пример 8.12. Рассмотрим случайную величину с областью значений 5з “ {О, Г 2, 3} и функцией вероятностной меры р(0) - 0,1; р(1) - 0,4 р(2) - 0,2; р(3) ~ 0,3. Применив первый алгоритм из приложения 8Б, получим следующую таблицу. i 0 1 2 3 P(i) о,1 0,4 0,2 0,3 F. 0,4 0,0 0,8 0,0 Li 1 1 3 3 Так, если на шаге 1 алгоритма окажется, что I - 2, то либо сохраним X “ I - 2 с вероятно- стью F2 •= 0,8, либо возвратим X - L2 “ 3 с вероятностью 1 - Д “ 0,2. Таким образом,
544 Глава 8. Генерирование случайных величин поскольку 2 не является заменой чего-либо (то есть ни одно из значений Lt не равно 2), алгоритм возвращает X - 2 тогда и только тогда, когда I - 2 на шаге 1, а V S 0,8 на шаге 2, так что Р(Х-2) - Р(1-2 и 0,8) - -Р(Г-2) Р(С/<:0,8)“ - 0,25 х 0,8 - “0,2. Это значение р(2) нам и требовалось получить. (Второе равенство в вышеприведенной формуле выведено потому, что I и U генерируются независимо.) Алгоритм может воз- вратить X - 3 двумя различными (взаимоисключающимися) способами. Если I “ 3, то, поскольку F3 “ 0, мы всегда будем возвращать X = L3 - 3, и если I “ 2, будем возвращать X - £2 “ 3 с вероятностью 1 - F2 “ 0,2. Таким образом, Р(Х“ 3) - Р(1-3) + Р(1-2 и U> F2) - - 0,25 + (0,25 х 0,2) - “0,3. Это и есть значениер(З). Существует также возможность проверить правильность алго- ритма для i “ 0 и 1. Обоснуем метод с помощью рис. 8.13. На рис. 8.13, а показаны стол- бики, (общая) высота каждого из которых составляет l/(n + 1) “ 0,25, и, следовательно, является функцией вероятностной меры величины I, генерируемой на шаге 1. Заштри- хованная область в столбиках представляет вероятностную меру, перемещаемую мето- дом замещения, а число в заштрихованной области представляет значение Lb которое будет возвращено как X. Таким образом, если на шаге 1 генерируется величина 1 “ 0, для возвращаемого значения X она будет заменена ее замещениями £0 “ 1 с вероятностью 1 - Fo “ 0,6; высота заштрихованной области в столбике над 0 равна 0,6 х 0,25 “0,15, или 60 % от общей высоты столбика. Точно также часть 1 - F2 “ 0,2 столбика высотой 0,25 (в результате получаем высоту заштрихованной области 0,2 х 0,25 “ 0,05) над 2 пред- ставляет вероятность того, что сгенерированная величина I “ 2 будет заменена на X - “ L2 “ 3. Заметьте, что столбики над 1 и 3 заштрихованы полностью, поскольку Ft и F3 равны 0; тем не менее, указанные значения являются их собственными замещениями, поэтому они в действительности не перемещаются. На рис. 8.13, б показана функция ве- роятностной меры возвращенного значения X после того, как заштрихованные области (вероятности) переместились на назначенные значения; как видно, они равны искомым вероятностям p(i). Хотя метод замещений и ограничен дискретными случайными величинами с конечной областью значений, его можно косвенно использовать для распреде- лений с бесконечной областью значений, например геометрического, отрица- тельного биномиального распределений или распределения Пуассона, скомби- нировав его с общим композиционным методом. Допустим, если X может быть любым неотрицательным целым числом, можно исследовать функции p(i), чтобы определить п, для которого q = "=о p(i) близко к 1, поэтому велика вероятность то- го, что X е S„. Поскольку для любого значения i можно записать равенство р(0 = 9 + (<)]},
8.4. Генерирование дискретных случайных величин 545 получаем следующий основной алгоритм с применением распределения с беско- нечной областью значений. 1. Генерируем U~ U(0,1). Если U<,q, переходим к шагу 2. В противном случае пе- реходим к шагу 3. 2. Используем метод замещений, для того чтобы вернуть X в области значений S„ с функцией вероятностной меры p(i)/q для i = 0, 1,..., п. 3. Используем любой другой метод, чтобы вернуть X в области значений {п + 1, п + 2,...} с функцией вероятностной мерыр(г)/(1 - q) для i - п + 1, п + 2. На шаге 3 можно, например, использовать метод обратного преобразования. Поскольку п было выбрано так, чтобы сделать q близким 1, можно ожидать, что нам не придется выполнять шаг 3. Рис. 8.13. Функции вероятностной меры I - 0,1,2,3 для метода замещений из примера 8.12: а — до перемещения; б — после перемещения
S46 Глава 8. Генерирование случайных величин Отметим, что все описанные выше методы, основанные на использовании таб- лиц, а также метод замещений требуют некоторых усилий на предварительную подготовку. В результате они могут оказаться не самыми подходящими, если функция вероятностной меры часто изменяется по мере выполнения моделирова- ния. Эффективный метод генерирования дискретных величин для такого случая был разработан Раджасекараном и Россом [Rajasekaran and Ross, 1993]. 8.4.4. Биномиальное распределение Чтобы генерировать случайную величину с распределением bin(t, р), вспомним (см. раздел 6.2.3), что сумма t независимых и одинаково распределенных величин с распределением Bernoulli(p) имеет распределение bin(t, р). Таким образом, мы можем вывести следующий алгоритм. 1. Генерируем Yit Y2,..., Yt как независимые и одинаково распределенные случай- ные величины с распределением Bernoulli(p). 2.Возвращаем X - Yt + У2 + ••• + It- Поскольку время выполнения этого алгоритма пропорционально величине t, может понадобиться найти ему альтернативу для больших значений t. Один из ва- риантов — это прямой метод обратного преобразования с эффективным поиском. Другой альтернативой является метод замещений (см. раздел 8.4.3), поскольку область значений X является конечной. Алгоритмы специально для биномиально- го распределения, эффективно выполняемые при больших значениях t, рассмат- риваются в работах Аренса и Дитера [Ahrens and Dieter, 1974] и Качитвичанукула и Шмейсера [Kachitvichyanukul and Schmeiser, 1988]. 8.4.5. Геометрическое распределение Следующий алгоритм эквивалентен методу обратного преобразования, если заме- нить U на шаге 2 на 1 - U (см. задачу 8.14). 1. Генерируем U ~ U(0, 1). 2. Возвращаем X - Lin V/ In £7(1 - p)J. Константа In (1 - р) должна быть вычислена заранее. Если значение/? близко к 0, In (1 -р) также будет близко к нулю, поэтому следует подумать об арифмети- ческих вычислениях с двойной точностью, чтобы избежать чрезмерной ошибки округления при делении на шаге 2. Для значения р, близкого к 1, In (1 -р) будет большим отрицательным числом, что может вызвать трудности вычислений; для больших значений р эффективнее использовать другой алгоритм, основанный на соотношении между случайными величинами с геометрическим распределением и распределением Бернулли, описанный в разделе 6.2.3 (см. задачу 8.14). 8.4.6. Отрицательное биномиальное распределение Соотношение между распределением negbin(s.p) и geom(p) (см. раздел 6.2.3) по- зволяет вывести алгоритм.
8.4. Генерирование дискретных случайных величин 547 1. Генерируем Yu Y2.Y, как независимые и одинаково распределенные случай- ные величины с распределением geom(p). 2. Возвращаем X - + У2 + ... + Ys. Этот алгоритм довольно прост, но время его выполнения пропорционально величине з. При больших значениях з следует обратить внимание на альтерна- тивный метод, рассмотренный Фишманом [Fishman, 1978], который позволяет использовать специальные соотношения между отрицательным биномиальным распределением, гамма-распределением и распределением Пуассона. Эффектив- ность этого алгоритма зависит от возможности быстро генерировать величины из гамма-распределения и распределения Пуассона. Другие альтернативные методы рассматриваются в работе Аренса и Дитера [Ahrens and Dieter, 1974]. 8.4.7. Распределение Пуассона Рассматриваемый нами алгоритм для генерирования случайных величин с рас- пределением Poisson(l) основывается на соотношении между распределением Poisson(l) и ехро(1/1) (см. раздел 6.2.3). Он имеет следующий вид. 1 . Принимаем а = е~\ b - 1 и г “ 0. 2 .Генерируем Ui+l ~ U(0,1) и заменяем b на bUi+i. Если b < а, возвращаем X - i. В противном случае переходим к шагу 3. 3. Заменяем i на i + 1 и возвращаемся к шагу 2. Алгоритм будет доказан, если иметь в виду, что X = i только тогда, когда slsgr,, J=1 J=1 где Yj - (-1/1) In Ц ~ expo(l/l), а величины ^ являются независимыми, то есть X - max{i: 'L'j-iYj < 1}, так что X ~ Poisson(l) согласно первому примечанию в опи- сании распределения Пуассона из табл. 6.4. К сожалению, с увеличением значения 1 этот алгоритм начинает работать мед- леннее, поскольку большое значение 1 приводит к тому, что а - е х будет меньше, и нам потребуется выполнять больше действий на шаге 2, чтобы сделать C7i+1 мень- ше а. (На самом дел$.поскольку Хна 1 меньше, нежели нужное число Ui+i, ожидае- мое число выполняемых действий на шаге 2 равно Е(Х) + 1 = 1+1, так что время выполнения линейно увеличивается с возрастанием значения 1). В качестве аль- тернативы можно использовать метод замещений в комбинации с методом компо- зиции (так как X имеет бесконечную область значений) (см. раздел 8.4.3). Можно прибегнуть также к методу обратного преобразования с эффективным поиском. Аткинсон [Atkinson, 1979b, 1979с] исследовал несколько подобных процедур по- иска и нашел, что хорошо выполняется индексированный поиск, подобный мето- ду Чена и Ассау [Chen and Asau, 1974], который рассматривался раньше в разде- ле 8.3.16. (Для такой процедуры поиска, названной Аткинсоном PQM, требуется незначительная предварительная подготовка и дополнительная память, но ее очень несложно реализовать). Другие быстрые методы генерирования величины с рас- пределением Пуассона описаны Девройем [Devroye, 1981], Шмейсером и Качит- вичанукулом [Schmeiser and Kachitvichyanukul, 1981].
548 Глава 8. Генерирование случайных величин 8.5. Генерирование коррелированных случайных величин, векторов и процессов Мы рассмотрели в данной главе генерирование только одной случайной величины за один раз из различных одномерных распределений. Повторяя выполнение одно- го из описанных алгоритмов с независимыми наборами случайных чисел, можем получить последовательность независимых и одинаково распределенных случай- ных величин с искомым распределением. В некоторых имитационных моделях возникает необходимость генерировать случайный вектор X - (Хь Х2,Ха)гиз заданного совместного (или многомерно- го) распределения, где отдельные компоненты вектора могут не быть независимы- ми. (Аг обозначает транспонированный вектор или матрицу А.) Даже если нельзя определить точное полное совместное распределение величин Хь Х2.XJt мы мо- жем генерировать их при условии, что отдельные величины Х{ имеют заданные од- номерные распределения (именуемые безусловными распределениями величин Х() и что корреляции р9 между величинами X; и Xj указаны разработчиком модели. В разделе 6.10 рассматривалась необходимость моделирования подобных ситуа- ций, а в этом разделе приводятся примеры методов генерирования таких коррели- рованных случайных величин и процессов в некоторых специальных случаях. Су- ществует и ряд других проблем, связанных с генерированием коррелированных случайных величин, которые мы не излагаем подробно, например генерирование из многомерного экспоненциального распределения [Johnson, 1987; Johnson, Wang and Ramberg, 1984; Fishman, 1973a, 1978; Mitchell and Paulson, 1979; Marshall and Olkin, 1967; Devroye, 1997]. 8.5.1. Использование условных распределений Предположим, у нас есть полностью определенная функция совместного распре- деления FXi Х1Xd (хи х2,..., xd), из которой мы хотели бы генерировать случайный вектор X = (Х1г Х2,..., Xd)T. Предположим также, что для i - 2,3,..., d можно полу- чить условное распределение величин Хь если Xj = Xj для J = 1, 2 i - 1. Обозначим функцию условного распределения как 2\(х, | х1; х2г ..., _ J [Mood, Graybill and Boes, 1974; Ross, 1997]. Кроме того, пусть Fx. (xf) будет функцией безусловного распределения /*• для i - 1,2.d. Тогда общий алгоритм генерирования случайно- го вектора X с функцией совместного распределения FXi Хг Xd будет иметь сле- дующий вид. 1. Генерируем Х± с функцией распределения FXi. 2. Генерируем Х2 с функцией распределения Г2(’ I Xt). 3. Генерируем Х3 с функцией распределения Г3(-1 Х1} Х2). d. Генерируем Хас функцией распределения Fa(-1 Х{, Х2,..., Ха_,). d + 1. Возвращаем X - (Хь Х2,..., Ха)Т.
8.5. Генерирование коррелированных случайных величин 549 Обратите внимание, что с шага 2 по шаг d используются те условные распреде- ления, для которых предварительно сгенерированы величины X,; например, если xt является значением, сгенерированным для Х( на шаге 1, на шаге 2 используется функция условного распределения Г2(-1XJ и т. д. Доказательство обоснованности этого алгоритма зиждется на определении условных распределений (читатель мо- жет сам вывести это доказательство). Возможности применения подобного подхода на практике довольно ограниче- ны. Для этого не только должно быть полностью определено совместное распреде- ление, но и выведены все необходимые безусловные и условные распределения. Такого уровня детализации редко можно достичь в случае моделирования слож- ных систем. 8.5.2. Нормальное многомерное и логнормальное многомерное распределения Нормальное многомерное распределение размерностью d с вектором среднего зна- чения ц - (щ, р2, •••> Р^)ги ковариационной матрицей Z, где (1,у)-й элемент равен ст^, имеет функцию плотности, приведенную в разделе 6.10.1. Хотя подход, использо- вавшийся в разделе 8.5.1, можно применить и в данном случае, более простой метод предлагают Шойер и Столлер [Scheuer and Stoller, 1962]. В этом методе используется специальное свойство нормального многомерного распределения. Поскольку матрица Е является симметричной и положительно определенной, ее можно однозначно разложить на множители, как Е = С(7(так называемое разло- жение Холецкого), где матрица С с числом строк и столбцов d х d является нижним треугольником. Алгоритмы для вычисления С можно найти в работах Фишмана [Fishman, 1973а, р. 217], Пресса [Press et al., 1992] или в программах библиотеки IMSL [Visual Numerics, Inc. 1997]. Если является (i,j)-M элементом матрицы С, алгоритм для генерирования искомого вектора X с нормальным многомерным распределением будет иметь следующий вид. 1. Генерируем Zb Zq,..., как независимые и одинаково распределенные величи- ны с распределением N(0, 1). 2. Принимаем X, = р, + ct] Z] для 1=1,2,.... d, возвращаем X = (Х1; Х2,..., Xd)T. Генерирование одномерных нормально распределенных величин на шаге 1 опи- сано в разделе 8.3.6. В матричной записи, если обозначить Z = (Zt, Z2,..., Zd)T, алго- ритм будет иметь вид X = ц + CZ; он подобен преобразованию X' = ц + оХ для гене- рирования X' ~ N(p, о2) при условии, что X ~ N(0, 1). Случайный вектор с многомерным логнормальным распределением из работ Джонса и Миллера [Jones and Miller, 1966] и Джонсона и Рамберга [Johnson and Ramberg, 1978], рассмотренный в разделе 6.10.1, можно представить как X = (еУ1, е*2,..., errf)r, где Y - (У„ У2.Уа)г~ Nd(p, Е). Это соотношение позволяет опреде- лить следующий алгоритм генерирования вектора. 1-Генерируем Y = (У„ У2.........Yd)T~ ЫДц, Е). 2. Возвращаем X - (ег‘, е*2,..., errf)r.
550 Глава 8. Генерирование случайных величин Обратите внимание, что циЕ не являются средним вектора и ковариационной матрицей искомого случайного вектора X с многомерным логнормальным распре- делением. Они скорее являются средним и ковариацией «зарегистрированного» случайного вектора Y с многомерным нормальным распределением. Формулы для ожидаемых значений и дисперсии величин Хь а также ковариации и корреля- ции между ними, приведенные в уравнениях (6.10)-(6.13) из раздела 6.10.1, явля- ются функциями р и £ — среднего вектора и ковариационной матрицы случайного вектора Y с нормальным многомерным распределением. Таким образом, если мы хотим генерировать значения из логнормально распределенного случайного век- тора X с заданным для вектора средним значением р' - Е(Х) - (р'1( ц'2,... ц'а)Ги за- данной ковариационной матрицей Е'=(i, j)-m элементом cs\ = Cov(Xp Х^), нам надо решить их для ц и L в размерности ц' и Е' прежде чем генерировать случайный промежуточный вектор Y с нормальным многомерным распределением. Форму- лы легко получить для i-ro элемента р / ц. =Е(У.) = 1п и (г,у)-го элемента Е = Соу(У,У;) = 1п 1 + j-^ 8.5.3. Коррелированные случайные величины с гамма-распределением Теперь перейдем к ситуации, когда мы не можем записать все совместное распре- деление, а только указываем безусловные распределения (гамма-распределения) и корреляции между случайными величинами, составляющими вектор X. В дейст- вительности даже не существует общего мнения относительно того, что же собой представляет многомерное гамма-распределение. В отличие от нормального мно- гомерного распределения в этом случае определение безусловных распределений и корреляционной матрицы не позволяет полностью определить совместное рас- пределение. В даннодй ситуации возникает следующая проблема. Наша задача — генериро- вать случайный вектор X - (Xlt Х2,.... Ха)Т для заданного набора параметров фор- мы аь а2,.... аА масштабных параметров рь р2,..., раи корреляций (i - 1,2,..., d;j - - 1,2,..., d) так, чтобы Xt ~ gamma(ai, PJ и Сог(Х0 Х?) = р&. Основная трудность за- ключается в том, что не все значения ps между -1 и +1 теоретически согласуются с заданным набором параметров су то есть величины а< накладывают ограничение на возможные значения [ Schmeiser and Lal, 1982]. Еще одна сложность состоит в том, что даже для набора теоретически возможных величин и р^ может не су- ществовать алгоритма для выполнения нужной задачи. По этой причине в некото- рых ситуациях нам придется довольствоваться генерированием коррелированных случайных величин с гамма-распределением.
8.5. Генерирование коррелированных случайных величин 551 Одна ситуация, в которой существует простой алгоритм, касается двухмерно- го распределения размерностью d - 2. Последующее ограничение состоит в том, что р - р12 > 0, то есть наблюдается положительная корреляция, есть и другое огра- ничение: р < minfaj, а2}/Л/а1а2. Тем не менее такой случай может использоваться довольно часто, особенно когда а, и а2 имеют достаточно близкие значения, (Если eq - <х2 снимается верхнее ограничение для р.) Следует учесть, что две любые поло- жительно коррелированные экспоненциальные случайные величины включены в определение otj = = 1. Алгоритм с использованием общего метода, разработан- ного Арнольдом [Arnold, 1967], основывается на специальном свойстве гамма-рас- пределений. 1 .Генерируем ~ gamma(at - 1). 2 .Генерируем У2 ~ gamma(a2 - р^/оцс^, 1) независимо от Yt. 3 . Генерируем Y3 - gamma(pA/a1a2, 1) независимо от Yt и У2. 4.Возвращаем Xj - ₽i(Fi + Y3) и Х2 - 62(^2 + Г3). Этот метод известен как трехмерное сокращение, когда три случайные величи- ны F1( Y2 и Y3 «сокращаются» до двух конечных случайных величин Xt и Х2. Заметьте, что данный алгоритм не управляет совместным распределением вели- чин Xt и Х2 [Schmeiser and Lal, 1982]. Коррелированные случайные величины с гамма-распределением также можно генерировать в некоторых менее ограничивающих ситуациях. Шмейсер и Лал [Schmeiser and Lal, 1982] приводят алгоритмы для генерирования случайных век- торов с двумерным гамма-распределением любых теоретически возможных кор- реляций — как положительных, так и отрицательных. Роннинг [Ronning, 1977] рассматривает общий случай с многомерным распределением (d > 2), но при этом снова ограничивается определенными положительными корреляциями. Льюис [Lewis, 1983] пред лагает метод для генерирования отрицательно коррелированных величин с гамма-распределением с одинаковыми параметрами формы и масштаб- ными параметрами. 8.5.4. Генерирование случайных величин из многомерных семейств Многомерные версии системы преобразования Джонсона (они рассматривались в разделе 6.10.1) можно генерировать с помощью методов обратного преобразова- ния, приведенных в работе Стенфилда и др. [Stanfield et al., 1996]. В этом случае генерируемые векторы будут соответствовать эмпирическим безусловным момен- там из выборки данных, и в них будут наблюдаться корреляции между координа- тами, близкими к их эквивалентам из выборки, если безусловные распределения не будут очень асимметричными. Как уже сообщалось в разделе 6.10.1, распределения Безье были обобщены до двухмерных. Вагнер и Вильсон [Wagner and Wilson, 1995] приводят алгоритмы для генерирования выборок из соответствующих случайных векторов, основан- ные на методе для условного распределения из раздела 8.5.1. Кроме того, исследо- ватели утверждают, что расширение распределений Безье до трехмерных и более
552 Глава 8. Генерирование случайных величин является выполнимым, но сложным. Дополнительную информацию относительно двухмерных распределений Безье можно найти в другой работе Вагнера и Вильсо- на [Wagner and Wilson, 1996а]. 8.5.5. Генерирование случайных векторов с произвольно определенными безусловными распределениями и корреляциями В разделе 6.10.2 мы отмечали, что может возникнуть необходимость моделировать некоторые входные случайные переменные как случайный вектор с совершенно произвольными безусловными распределениями и корреляционной структурой, вместо того чтобы определять и контролировать все совместные распределения как члены некоторого параметрического семейства (например, нормального, лог- нормального, Джонсона или Безье). Не обязательно, чтобы отдельные безуслов- ные распределения были членами одного параметрического семейства; их все мож- но даже задать различных типов — непрерывными, дискретными, смешанными. Единственное ограничение касается корреляционной структуры между ними, ко- торая должна быть внутренне согласованной с формой и параметрами безуслов- ных распределений [Whitt, 1976], то есть указанная структура корреляций долж- на быть реальной. В этом случае очевидны такие преимущества, как гибкость при моделировании и несложность подбора безусловного распределения. Однако воз- никает вопрос, как генерировать наблюдения случайных величин при таких про- извольно определяемых безусловных распределениях и корреляциях. В остав- шейся части этого подраздела мы расскажем о двух методах, позволяющих решить данную задачу. Хилл и Рейлли [Hill and Reilly, 1994] описали метод, применяемый, когда все безусловные распределения являются либо непрерывными, либо дискретными. Этот метод предполагает использование композиции (или случайного смешива- ния) распределений, как известно, обеспечивающей наиболее высокую корреля- цию, что позволяет получить конечную искомую корреляционную структуру. Ис- следователи представили специальные примеры с измерениями d = 3, при этом безусловные распределения являются равномерным, экспоненциальным и дис- кретным равномерным. Карио и Нельсон [Cario and Nelson, 1997] разработали метод перехода от нор- мального распределения к любому другому, названный NORTA (normal to anything). Согласно этому методу случайный вектор с нормальным многомерным распре- делением преобразуется в вектор с любым произвольным набором дискретных безусловных распределений (сюда входит также случай, когда одни безусловные распределения являются непрерывными, другие — дискретными, а третьи — ком- бинированными непрерывно-дискретными) и любой возможной корреляционной структурой. Пусть F; — это i-я из d функций безусловных распределений, необхо- димых для конечного генерируемого вектора X - (Х1( Х2,Xd)T и пусть р$(Х) - “ Сог(Х„ Х}д будут искомыми корреляциями между компонентами вектора X. Из- начально генерируется случайный вектор Z - (Zn 2^,..., Zd)T со стандартным нор- мальным многомерным распределением (см. раздел 8.5.2) с Z; ~ N(0,1) и корреля-
8.5. Генерирование коррелированных случайных величин 553 циями p^(Z) - Cor(Z;, ZJ); определение p$(Z) рассматривается далее. Пусть Ф обозначает функцию распределения N(0,1), тогда i-й компонент вектора X гене- рируется как Х{ - jFJ'^OCZ;)]. Поскольку O(Z;) ~ U(0,1) (согласно основному ре- зультату, известному как вероятностная интегральная трансформанта [Mood, Graybill, Boes, 1974, р. 202-203]), становится ясно, что Xt будет иметь искомую функцию безусловного распределения Fit так как метод обратного преобразования действителен для генерирования случайных величин. Основная задача метода NORTA состоит в нахождении корреляций p/Z) между величинами Zi( вызываю- щими необходимые корреляции р#(Х) между генерируемыми величинами Х{. Ка- рио и Нельсон [Cario and Nelson, 1997] приводят численные методы для общих случаев и указывают на эффективность таких методов. (Их нужно выполнить все- го один раз на этапе подготовки для определения входного вектора.) Кроме того, Ф как функция распределения N(0,1) должна быть оценена численно, и сущест- вуют эффективные методы, позволяющие выполнить это с высокой точностью [Abramowitz and Stegun, 1964]. Наконец, для оценки обратной функции распреде- ления может понадобиться использовать численный метод или поиск в зави- симости от ее формы. Таким образом, при генерировании векторов с помощью ме- тода NORTA требуется выполнять некоторые внутренние расчеты с помощью численных методов, хотя в большинстве случаев это не создает очень большой нагрузки, особенно в сравнении с работой, выполняемой при динамическом моде- лировании больших сложных систем. Преимуществом метода NORTA является его гибкость и возможность применения во многих случаях. 8.5.6. Генерирование стохастических процессов Как уже упоминалось в разделе 6.10.3, при моделировании некоторых систем тре- буется генерировать реализации «одной и той же» случайной величины по мере ее изменения во времени. Например, нам может понадобиться генерировать по- следовательность величин для времени обработки деталей на станке или для опре- деления размера поступающих сообщений в системе телекоммуникаций. Если предполагается, что реализации этой случайной величины будут независимыми и одинаково распределенными, мы просто делаем повторные независимые выборки из соответствующего одномерного распределения (см. разделы 8.1-8.4). Но если между последовательными наблюдениями (или между наблюдениями, разделенными более чем одним интервалом времени) существует некоторая зави- симость, данный метод генерирования не будет учитывать корреляцию, что может нанести ущерб достоверности модели [Livny et al., 1993]. В этом подразделе мы расскажем, как при моделировании можно генерировать такие процессы. Авторегрессионные процессы и авторегрессионные процессы со скользящим средним Как генерируются модели авторегрессионных процессов (AutoRegressive, AR) — и авторегрессионных процессов со скользящим средним (AutoRegressive Moving- Average, ARMA), понятно из определения, данного для случая с процессами AR(p) и уравнения (6.14) в разделе 6.10.3. Чтобы добиться стационарности, процессы
554 Глава 8. Генерирование случайных величин должны инициализироваться особым образом [Box et al., 1994]. Следовательно, для генерирования процесса AR(p) просто механически выполняют определен- ную рекурсию из уравнения (6.14), а генерирование нормально распределенных величин е, осуществляется с помощью любого метода из раздела 8.3.6. Автокорре- ляционная структура генерируемого процесса скрывается за весовыми параметра- ми в рекурсии. Безусловное распределение величин является нормальным, что ограничивает прямое применение этих процессов в качестве входной модели. Гамма*процессы В работе Льюиса и др. [Lewis et al, 1989] рассматривается генерирование величин из гамма-процессов, в том числе и экспоненциальных авторегрессионных (Expo- nential AutoRegressive, EAR). Как уже говорилось в разделе 6.10.3, в результате по- лучаем автокоррелированный процесс с безусловными гамма-распределениями, рекурсивное определение авторегрессионного типа, а также и процедуру генери- рования. Процессы преобразования и расширения выборки Процессы преобразования и расширения выборки (Transform-Expand-Sample, TES) обеспечивают гибкость стационарных безусловных распределений и при- близительное соответствие автокорреляционной структуры эмпирическим наб- людениям. Коррелированный процесс со случайными величинами с распределе- нием U(0,1) генерируется и после этого изменяется с помощью метода обратного преобразования при использовании искомой функции для стационарного безус- ловного распределения. Полное описание процесса дано в работах Меламеда [Me- lamed, 1991], Джагермана и Меламеда [Jagerman and Melamed, 1992а, 1992b], В ра- боте Меламеда и соавторов [Melamed et al., 1992] рассматривается интерактивное программное обеспечение для подбора и генерирования процессов, а также приво- дятся примеры их использования. Авторегрессионные процессы для моделирования некоего распределения Авторегрессионные процессы для моделирования некоего распределения (AutoReg- ressive-To- Anything, ART А), описанные в разделе 6.10.3, позволяют создателю модели получить необходимое стационарное безусловное распределение генери- руемого процесса, а также нужную структуру автокорреляций с точностью до не- которого указанного запаздывания р (или, по крайней мере, с вычислительной точностью компьютера). Генерирование процесса ARTA выполняется путем гене- рирования стационарного базового процесса AR(p) {ZJ с безусловными распре- делениями N(0, 1), а затем преобразования его в нужный входной процесс {XJ с помощью уравнения (6.15) из раздела 6.10.3. Как уже говорилось, автокорреля- ция базового процесса {Z;} определяется таким образом, что после преобразования с помощью уравнения (6.15) получается нужная автокорреляционная структура процесса {XJ. Методология процессов ART А разработана Карио и Нельсоном [Cario and Nelson, 1996], ими же предложено программное обеспечение для подбо- ра и генерирования данных процессов [Cario and Nelson, 1998].
8.6. Генерирование процессов поступления 555 8.6. Генерирование процессов поступления В этом разделе показано, как генерировать время поступления tb t2,... для процес- сов поступления, которые рассматривались в разделе 6.12. 8.6.1. Пуассоновские процессы Пуассоновский (стационарный) процесс с интенсивностью X > 0 (рассматривался в разделе 6.12.1) обладает свойством, согласно которому время между поступле- ниями Ai -t/- ti_t (где i-1,2,...) представлено независимыми и одинаково экспо- ненциально распределенными случайными величинами с общим средним 1/Х. Та- ким образом, величины £, можно генерировать рекурсивно следующим образом (допустим, что значение было определено, и нам требуется генерировать время следующего поступления tf). сгенерируем U~ U(0, 1) независимо от предыдущих случайных величин. 2. Возвращаем t-, - - (1/X) In U. Рекурсия начинается с вычисления (вспомните, что t0 “ 0). Этот алгоритм несложно модифицировать для генерирования любого процес- са поступления, где время между поступлениями выражено независимыми и оди- наково распределенными случайными величинами как с экспоненциальным, так и другим распределением. На шаге 2 время между поступлениями, сгенерированное независимо, просто прибавляется к величине t,_ п чтобы получить величину f;; вы- шеприведенная формула из шага 2 являет собой специальный случай для экспо- ненциально распределенного времени между поступлениями. 8.6.2. Нестационарный пуассоновский процесс Дальше мы рассмотрим, как генерировать время между поступлениями для неста- ционарного пуассоновского процесса (см. раздел 6.12.2). Может показаться, что достаточно изменить алгоритм в разделе 8.6.1, чтобы при наличии генерировать величину t, путем замены Х(Г;Ч) на шаге 2 величи- ной Л. Но такой подход окажется неправильным, о чем свидетельствует рис. 8.14. Рис. 8.14. Нестационарный пуассоновский процесс
556 Глава 8. Генерирование случайных величин (Этот рисунок может иллюстрировать интенсивность прибытия транспорта на пе- рекресток в течение суток.) Если - 5, такой неправильный «алгоритм» будет ге- нерировать длительный промежуток перед прибытием в момент времени по- скольку Х(5) имеет небольшое значение в сравнении с X(t) для t между 6 и 9. Таким образом, мы пропустим наступающее увеличение интенсивности прибы- тий и не сможем смоделировать высокую плотность движения в утренние часы пик, если же окажется, что tt “ 11, мы вообще пропустим утренние часы пик. Ка- минский и Рампф [Kaminsky and Rumpf, 1977] призывают осторожно использо- вать и другие, более сложные приближенные методы. Правильное генерирование пуассоновского процесса требует внимательности. Можно воспользоваться достаточно общим и простым методом, предложенным Льюисом и Шедлером [Lewis and Shedler, 1979], известным как метод прорежива- ния. Мы представляем специальный случай алгоритма прореживания, работаю- щего, когда X* = max{X(t)} является конечной. Иными словами, мы генерируем ста- ционарный пуассоновский процесс с постоянной интенсивностью X* и временем поступлений {t,*} (используя, например, алгоритм из раздела 8.6.1), а затем «про- реживаем» количество t*, отбрасывая (удаляя) каждое значение t* с вероятно- стью 1 - X(tj*)/X*. Таким образом, мы, скорее всего, примем значение t* как время поступления, если X(t;*) имеет большое значение, это позволит обеспечить увели- чение частоты возникновения поступлений для больших значений X(t). Эквива- лентный алгоритм с удобной рекурсивной формой (мы вновь допускаем, что зна- чение t{ _ ! сгенерировано правильно, и нам требуется генерировать следующее время поступления t;) выглядит так. 1. Определяем t - t,.,. 2. Генерируем и U2 как независимые и одинаково распределенные величины с распределением U(0, 1) независимо от предыдущих случайных величин. 3. Заменяем t на t - (1/X*) In Ut. 4. Если U2 < X(t)/X*, возвращаем £, - t. В противном случае возвращаемся к шагу 2. (Алгоритм вновь начинается с вычисления tb) Когда оценка X(t) выполняется медленно — например, X(t) представляет собой сложную функцию, для которой требуются экспоненциальные и тригонометрические вычисления, — можно сэко- номить время за счет шага 4, добавив предварительную проверку на принятие, то есть текущее значение t будет автоматически приниматься как следующее время поступления, если U2 Х*/Х*, где X» = min{X(t)}. Этим можно воспользоваться, осо- бенно когда кривая X(t) является довольно ровной. Пример 8.13. Вспомните пример 6.23, где функция X(t) определена по эмпирическим данным как кусочно-постоянная функция, изображенная на рис. 6.58. Эта функция ин- тенсивности вновь показана на рис. 8.15 от X* -= 0,09 до X* - 0,84. Значения {£,*} сгенери- рованы из стационарного пуассоновского процесса с интенсивностью X* (с использова- нием потока 3 генератора случайных чисел из приложения 7 А) и обозначены крестика- ми на прямой X*; они действительно кажутся равномерно распределенными по прямой, как и ожидалось. Затем часть величин t* удалена согласно алгоритму, а принятые зна- чения времени поступления обозначены крестиками на оси t. Как и требовалось, значе-
8.6. Генерирование процессов поступления 557 ний времени поступления стало меньше, и они встречаются реже, когда кривая l(t) опускается низко (например, с 11.30 до 11.50), поскольку большая часть величин t* уда- лена. А вот в часы пик (например, с 12.00 до 12.20) большая часть величин t* сохранена. Обратите внимание на сходство рис. 8.15 с рис. 8.9, отображающим еще один алгоритм прореживания, аналогичный методу принятия-отклонения для генерирования случай- ных величин. Рис. 8.15. Генерирование нестационарного пуассоновского процесса методом прореживания Алгоритм прореживания очень прост, и в некоторых случаях он может оказать- ся неэффективным. Например, если кривая X(t) проходит относительно низко, за исключением нескольких высоких и узких пиков, значение Л* часто будет намного больше X(t), что приведет к исключению большинства значений t*. Тогда можно воспользоваться более общим алгоритмом прореживания с непостоянной кривой функции X* [Lewis and Shedler, 1979]. Существует и другой давно известный метод, его рассматривает, например, Цинлар [Qinlar, 1975, р. 94-101]. Он является аналогом метода обратного преобра- зования для генерирования случайных величин, как алгоритм прореживания яв- ляется аналогом метода принятия-отклонения. Вспомните по разделу 6.12.2, что математическое ожидание составляет A(t) = J Ky~)dy о
558 Глава 8. Генерирование случайных величин и всегда является непрерывной функцией t, поскольку оно представляет собой не- определенный интеграл; A(t) — это ожидаемое число поступлений со времени 0 по время t. Тогда нестационарный пуассоновский процесс с математическим ожида- нием Л можно генерировать, вначале сгенерировав время поступления {£'} для пу- ассоновского процесса с интенсивностью 1, а затем определив t; =A‘l(t'), где Л'1 — обратная функция. Обратите внимание, что в отличие от метода прореживания в этом случае используются все моменты времени прибытия f, при интенсивно- сти 1. Рекурсивная версия алгоритма такова. сгенерируем U~ U(0, 1). 2.Определяем t\ = t'^ - In U. 3. Возвращаем t-, = A-1(t .)• Пример 8.14. На рис. 8.16, а показан график математического ожидания Л(Г), соответст- вующего функции интенсивности поступления Х(Г), показанной на рис. 8.15; для срав- нения график 1(Г) вновь показан на рис. 8.16, б. Обратите внимание, что функция A(t) является кусочно-линейной, тогда как X(i) была определена как кусочно-постоянная. Кроме того, A(t) возрастает наиболее резко при тех значениях t, для которых кривая X(t) проходит выше всего, то есть для которых поступления должны происходить часто. Мо- менты времени t\ д ля стационарного пуассоновского процесса с интенсивностью 1 отме- чены на вертикальной оси графика A(t), они выглядят достаточно равномерно распреде- ленными. Следуя по пунктирным линиям до кривой A(t) и вниз (то есть взяв А"1 для значений t\, мы получаем настоящее время поступления t„ отмеченное на оси t. Концен- трация величин Г,- там, где кривая X(t) проходит высоко, а Л(Г) резко возрастает, захваты- вая многие значения t\, кажется очевидной (например, с 12.00 до 12.20), очевиден также и разброс величин t; в периоды с невысокой интенсивностью поступления (например, с 11.30 по 11.50). Таким образом, применив Л'1 к равномерно распределенным Z, на вер- тикальной оси, получаем эффект преобразования равномерности их распределения, согласующийся с характером нестационарного пуассоновского процесса поступления. Точно также применение К1 к равномерно распределенным величинам U при использо- вании метода обратного преобразования для генерирования случайных величин дефор- мирует их распределение согласно функции/. Действительно, рис. 8.16 и 8.3, а подобны. Однако для второго алгоритма генерирования нестационарного пуассоновско- го процесса требуется обращение функции Л, что трудно осуществить. (В приме- ре 8.14 такое обращение выполнялось с помощью короткого поиска и линейной интерполяции, поскольку Л была кусочно-линейной.) Это можно сравнить с «по- терей» сгенерированных величин t* в алгоритме прореживания, который стано- вится очень неэффективным, если кривая функции интенсивности X(t) имеет один или несколько высоких узких пиков. За дополнительной информацией о сравнении этого и других методов обратитесь к работе Льюиса и Шедлера [Lewis and Shedler, 1979]. И еще следует отметить, что иногда нужно воспользоваться специальными свойствами функции интенсивности Х(£) или суммарной функции интенсивности A(t), чтобы получить эффективно работающий алгоритм. (Речь идет о некоторых специальных методах оценки, упомянутых в конце раздела 6.12.2.)
8.6. Гоперирование процессов поступления 559 О---1--1--I--I--I--1--1--1--I--I--1--1_». 11,00 12,00 13,001 б Рис. 8.16. Генерирование нестационарного пуассоновского процесса: а — обращение экспоненциальной функции; б — функция интенсивности поступления 8.6.3. Групповое поступление Рассмотрим процесс поступления, когда в момент времени t поступает i-я группа требований, а число требований, в группе представлено дискретной случайной величиной Bt. Допустим, что величины В, являются независимыми и одинаково
560 Глава 8. Генерирование случайных величин распределенными, кроме того, они не зависят от величин tt. Тогда общий рекурсив- ный алгоритм для генерирования такого процесса поступления будет иметь вид. 1. Генерируем время следующего поступления 2. Генерируем дискретную случайную величину В{ независимо от любых предыду- щих величин Bj, а также независимо от tb t2,..., t,. 3. Возвращаем данные о том, что В, требований поступают в момент времени 4 Заметьте, что время поступления {£,} является произвольным; в частности, оно может быть взято из нестационарного пуассоновского процесса. Приложение 8А Обоснование метода принятия-отклонения В этом разделе мы покажем обоснованность метода принятия-отклонения для не- прерывных случайных величин (см. раздел 8.2.4). Докажем, что для любого значе- ния х справедлива формула Р(Х < х) - £, f(y )dy. Пусть А обозначает событие, для которого принятие происходит на шаге 3 ал- горитма. Тогда X определяется только по событию (или множеству) А, представ- ляющему подмножество всего пространства (по этому пространству определяют- ся У и t/на шагах 1 и 2). Таким образом, формулировки безусловных вероятностей, касающиеся отдельно взятого значения X, в действительности являются форму- лировками условных вероятностей (с условием, определяющимся по А) относи- тельно У и U. Поскольку X - У при условии возникновения события А, мы можем записать: Р(Х<х) = Р(У £х\А). (8.1) Можно прямо оценить правую часть уравнения (8.1). По определению условной вероятности Р(У<х|А) = -Р(^-<>. (8.2) Это уравнение мы решаем явно для двух вероятностей в правой части уравне- ния (8.2). Отметим, что для любого у Р(Л|У = у) = рГ17 • L t(y) (8.3) В приведенном уравнении первое равенство обусловлено тем, что U не зависит от У, а второе тем, что U ~ U(0, 1) и f(y) < t(y). Далее мы используем уравнение (8.3) с целью доказать, что Р(А,У <х)= |Р(А,У <x\Y =y)r(y)dy = —« = /Р(А|У =y^dy=^f(y)dy. (8.4)
Приложение 8Б 561 После этого отмечаем, что Р(Л) - Р(А | Y=y)r(y)dy = 1/с (согласно уравне- нию (8.3) и тому факту, что/является плотностью, а, следовательно, интеграл ра- вен 1). Приведенное уравнение вместе с уравнениями (8.4), (8.2) и (8.1) дает иско- мый результат. Приложение 8Б Подготовительный этап для метода замещений Существует, по меньшей мере, два различных алгоритма для вычисления гранич- ных значений Ft и замещающих L{ на подготовительном этапе для метода замеще- ний (см. раздел 8.4.3). Они не дают одинаковых наборов граничных значений и замещений для заданного распределения, но оба действительны. Изначально Уокер [Walker, 1977] предложил следующий алгоритм с подробной программой FORTRAN. 1. Задаем L{ == i, Ft - 0 и bt - p(i) - 1/(п + 1) для i - 0, 1,..., п. 2. Для i - 0, 1,..., п выполняем такие действия. А. Допускаем, что с - min{F0, Ьь ..., и что k будет индексом такого мини- мального bj. (Разбиение может быть произвольным.) Б. Допускаем, что d - max{Z>0, bb bn} и что т будет индексом такого макси- мального bj. (Разбиение может быть произвольным.) В. Если 2J=0| bj | < е, останавливаем выполнение алгоритма. Г. Допускаем, что Lk - т, Fk - 1 + с(п + 1), Ьк - 0 и bm - с + d. Заметим, что если условие на шаге 2В выполняется в некоторой точке, то ос- тальная часть области значений i на шаге 2 не будет использована. Теоретически условие на шаге 2В должно касаться равенства суммы нулю, однако подобного ро- да утверждение может привести к трудностям в вычислениях арифметических операций, осуществляющихся над числами с плавающей запятой; в данном алго- ритме е является малым положительным числом, таким как 10-5. Приведенный выше алгоритм легко выполняется на любом языке программи- рования, однако Кронмаль и Петерсон [Kronmal and Peterson, 1979] предлагают более эффективный алгоритм. 1. Задаем Fj = (п + 1) р(г) для i - 0,1,..., п. 2. Определяем множества G = {i: Fj S 1} и 5 = {i: Ff< 1}. 3. Выполняем следующие действия, пока множество S не станет пустым. А. Удаляем элемент k из множества G и элемент т из множества S. Б. Устанавливаем Lm - k и заменяем Fk на Fk - 1 + Fm. В. Если Fk < 1, добавляем k в множество 5; в противном случае помещаем k об- ратно в множество G. В этом алгоритме, по крайней мере, одно значение £, останется неопределен- ным, но соответствующие значения Ft окажутся равны 1, поэтому такие замещения никогда не будут применяться в алгоритме генерирования случайных величин.
562 Глава 8. Генерирование случайных величин Реализация множеств G и S во втором алгоритме может осуществляться по-разно- му, например с помощью проталкивания записей в стек и выталкивания их из стека или с использованием структуры связанного списка (см. главу 2). Второй алгоритм работает эффективнее, поскольку в первом алгоритме на ша- гах 2 А и 2Б требуется выполнять поиск всех п + 1 элементов, тогда как во втором алгоритме такой поиск не требуется (это особенно важно, когда п имеет большие значения). Однако следует отметить, что во втором алгоритме могут возникнуть вычислительные трудности, если сумма p(i) не составляет ровно 1; это может произойти, если, к примеру, значения p(i) представляют доли, соответствующие подсчетам частот в данных, вместе с ошибками округления. Мы наблюдали, как второй алгоритм не справился со своей задачей (использовалось несколько раз- личных реализаций множеств), когда сумма значенийр(1) отличалась от 1 на 10*5. Задачи 8.1. Определите алгоритмы для генерирования случайных величин со следующи- ми функциями плотности: а) распределением Коши где -оо < у < оо, £ > 0; -оо < х < оо ; б) распределением Гумбеля (или экстремального значения) /(х) ~ | ехр^-е"<х’у)/₽ - , где -оо < у < оо, р > 0; -оо < х < оо; в) логистическим распределением , _(1/Р)е-<-^ ? (1 + е-<"-^)2 ’ где -оо < у < оо, р > 0; -оо < х < оо ; г) распределением Парето а2с“2 х“2+1 ’ где с > 0, а2 > 0, х > с. В вариантах а, б, в используйте свои алгоритмы д ля генерирования независи- мых и одинаково распределенных величин Хь Х2,..., Х5000 для у*=0ир-1и за- пишите Х(п) - Хм Х;/пдля п - 50,100,150,..., 5000, для того чтобы эмпири- чески проверить строгий закон больших чисел (см. раздел 4.6), то есть, что Х(п) стремится к £(Х,) (если оно существует); в варианте г сделайте то же са- мое для с - 1 и си “ 2.
Задачи 563 8.2. Примем, что X будет дискретной величиной с функцией вероятностной меры р(1) - 0,05; р(2) - 0,05; ХЗ) - 0,1; р(4) - 0,1;р(5) “ 0,6 ир(6) - 0,1 ичто q(i) - -р(1) +Р(2) +...+ p(i) для г - 1, 2,..., 6. Убедитесь, что следующий алгоритм является методом обратного преобразования для дискретных случайных ве- личин с простым поиском слева направо. 1. Генерируем U ~ U(0, 1) и определяем, что i - 1. 2. Если U < q(i), возвращаем X - i. В противном случае переходим к шагу 3. 3. Заменяем i на г + 1 и возвращаемся к шагу 2. Пусть будет числом раз, когда выполняется шаг 2 (так что N также являет- ся числом сравнений). Докажите, что N имеет такое же распределение, как и X, так что E(N) = Е(Х) ~ 4,45. Этот алгоритм можно представить графически, как это сделано на рис. 8.17, а, где числа, обведенные кружочками, являются значениями, которые присваиваются X, если U попадает в интервал непо- средственно под ними, а поиск выполняется слева направо. Альтернативно мы можем вначале отсортировать p(i) в порядке убывания и сформировать вектор кодирования i ’(г) следующим образом. Допустим, что <7'(1) = 0,6; q'(2) - 0,7; q'(3) - 0,8; <?'(4) = 0,9; q'(5) = 0,95 и <?'(6) - 1; а также пусть х'(1) = 5, t'(2) - 3, i'(3) - 4, х'(4) - 6, i'(5) - 1 и i'(6) = 2. Докажите обос- нованность следующего алгоритма: Г. Генерируем U ~ U(0,1) и определяем, что i - 1. 2'. Если U < q'(i), возвращаем X - i'(x). В противном случае переходим к ша- ху 3'. 3'. Заменяем i на i + 1 и возвращаемся к шагу 2'. Если АГ' является числом сравнений во втором алгоритме, докажите, что E(N') - 2,05, что меньше половины E(N). Такая экономия предельного време- ни выполнения зависит от конкретного распределения, при этом следует учитывать дополнительное время, которое будет потрачено на подготовку и сохранение вектора кодирования Второй алгоритм можно представить графически, как это сделано на рис. 8.17, б. О) © ® @. ® ® |--| ]------1------1------------------------------------1------1 0 0,05 0,1 0,2 0,3 0,9 1 а ® ® © ® ф © I-------------------------------------1-----1-----1-----1---1--1 0 0,6 0,7 0,8 0,90,95 1 б Рис. 8.17. Представление двух алгоритмов из задачи 8.2: а — первый алгоритм; б — второй алгоритм
564 Глава 8. Генерирование случайных величин 8.3. Вспомните функцию усеченного распределения F* и алгоритм для генериро- вания величин из этого распределения (см. раздел 8.2.1). А. Докажите обоснованность алгоритма из раздела 8.2.1 при условии, что функция F является непрерывной и строго возрастающей. Б. Докажите, что следующий алгоритм также является обоснованным для ге- нерирования X с функцией распределения F* (снова допустим, что функ- ция F является непрерывной и строго возрастающей). сгенерируем U~ U(0, 1). 2.Если F(a) < U< F(b), возвращаем X - F\U). В противном случае воз- вращаемся к шагу 1. Как вы считаете, какой алгоритм «лучше»? В каком смысле? При каких условиях? 8.4. Усечение функции распределения F можно определить способом, отличным от того, что использовался для F* из раздела 8.2.1. Снова для а < b определяем функцию распределения О Р(х)= Е(х) 1 если х < а; если а <х < Ь; если Ь <х. Найдите метод для генерирования величин с функцией распределения ?. До- пускается, что у нас уже есть метод для генерирования величин из функции распределения F. Докажите, что ваш алгоритм является обоснованным. 8.5. Докажите обоснованность алгоритма из раздела 8.2.1 для генерирования i-й порядковой статистики, когда F является строго возрастающей. (Подсказка: исходите из того, что если Ult U2,..., U„ являются независимыми и одинаково распределенными величинами с распределением U(0,1), то U(i) ~ beta(i, п - i + +1).) Подтвердите, что для г = 1, а г-п можно допустить: V-1 - СЛ^и V- lF/n соответственно. 8.6. Выведите алгоритм обратного преобразования для двойного экспоненциаль- ного распределения из примера 8.3 и сравните его с алгоритмом композиции, приведенным в примере. Какому из них вы бы отдали предпочтение? 8.7. Для а < b правое треугольное распределение имеет функцию плотности A(*)=<(fc-fl)2 о 2(х-д) если а £ х < Ь; в противном случае, а левое треугольное распределение имеет функцию плотность [2(Ь-х) __2... ' tXC' ТГТХ Z1 « 'V « Л* если а < х < Ь; fL(x) = \(b-d)2 в противном случае. Эти распределения обозначены соответственно как RT(a, b) и LT(a, Ъ).
Задачи 565 А. Докажите, что если X ~ RT(0,1), то X' - а + (b - а)Х ~ RT(a, 6); подтвер- дите наличие такого же соотношения между LT(0, 1) и LT(o, b). Таким образом, нам достаточно генерировать случайные величины из распреде- лений RT(0, 1) и LT(0, 1). Б. Докажите, что если X ~ RT(0, 1), то 1 - X ~ LT(0, 1). Таким образом, дос- таточно ограничиться генерированием случайных величин из распреде- ления RT(0, 1). В. Выведите алгоритм обратного преобразования для генерирования случай- ных величин из распределения RT(0, 1). Несмотря на результат на шаге Б, выведите также алгоритм обратного преобразования для генерирова- ния случайных величин непосредственно из распределения LT(0, 1). Г. В качестве альтернативы методу обратного преобразования докажите, что если и U2 являются независимыми и одинаково распределенными слу- чайными величинами с распределением U(0,1), то тах{[71; U2} ~ RT(0,1). Как вы считаете, предпочтительнее ли этот метод, нежели метод обратно- го преобразования? Почему? (См. пример 8.4.) 8.8. Для каждого из следующих случаев приведите алгоритм, в котором исполь- зуется ровно одно случайное число для генерирования одной случайной ве- личины с таким же распределением, как у величины X: а)Х=* minll/j, Z72}, где Ux и U2 являются независимыми и одинаково распре- деленными величинами с распределением U(0, 1); б)Х = шах{171, f/2}, где и U2 являются независимыми и одинаково распре- деленными величинами с распределением U(0, 1); в) X - minfFt, У2}, где Ft и Y2 являются независимыми и одинаково экспо- ненциально распределенными величинами со средним р. Сравните варианты а и б с задачей 8.7. Кроме того, сравните свои алгоритмы генерирования одного U для вариантов a-в с прямыми алгоритмами для фак- тического генерирования величин Uf и YJ\с последующим определением ми- нимума и максимума. 8.9. Общий метод принятия-отклонения из раздела 8.2.4 имеет следующий ана- лог для дискретных величин. Пусть X будет дискретной величиной с функ- цией вероятностной мерыр(х,) для i - 0, ±1, ±2,..., пусть оцениваемая сверху функция будет t(xf) ^p(xt) для всех i, пусть с - t(xf) и пусть r(x.) - f(x,) для i - 0, ±1, ±2.... Г. Генерируем величину У с функцией вероятностной меры г. 2'. Генерируем U~ U(0, 1) независимо от У. 3'. Если U<р(У)/£(У), возвращаем X = У. В противном случае возвращаемся к шагу Г и делаем еще одну попытку. Докажите обоснованность этого алгоритма, выполнив действия, аналогич- ные описанным в приложении 8А. На что следует обратить внимание при вы- боре функции t(x-)?
566 Глава 8. Генерирование случайных величин 8.10. Для общего метода принятия-отклонения (для генерирования непрерывных величин, как в разделе 8.2.4, или для дискретных величин, как в задаче 8.9) определите распределение числа пар (У, U), которые будут отклонены перед тем, как произойдет принятие. Каково ожидаемое число отклонений? 8.11. Определите алгоритмы обратного преобразования, композиции и принятия- отклонения для генерирования случайных величин со следующими функ- циями плотности: если — 1 < х < 1; в противном случае; а) Эх2 /(*) = • 2 0 б) f(x) = X а(1 —а) 1 1-а 1-х о(1-а) если х < 0; если 0 5 х < а; если а <х < 1-а; если 1-а <х < 1; если 1 <х для 0 < а < 1/2. Объясните, какой алгоритм больше всего подходит к каждому из случаев. (Вначале сделайте графики функций плотности.) 8.12. Вспомните метод полярных координат из раздела 8.3.6 для генерирования случайных величин с распределением N(0, 1). Докажите, что вероятность принятия величины W на шаге 2 равна л/4, и определите число отклонений величины W перед тем, как произойдет принятие. Каково ожидаемое число выполнений шага 1? 8.13. Определите алгоритм составления для генерирования величин из распреде- ления triang(0,1, с), если 0 < с < 1, из раздела 8.3.15. Сравните его с алгорит- мом обратного преобразования в разделе 8.3.15. (Подсказка: см. задачу 8.7.) 8.14. А. Продемонстрируйте, что алгоритм, приведенный в разделе 8.4.5, действи- телен для генерирования случайных величин из распределения geom(p). (Подсказка: для вещественного числа х и целого числа i тогда и только тогда LrJ = i, когда 15 х < t + 1.) Убедитесь также (использовав 1 - U вме- сто U), что алгоритм представляет метод обратного преобразования. Б. Докажите, что алгоритм обоснован для генерирования X ~ geom(p). 1. Допускаем i == 0. 2. Генерируем U ~ U(0, 1) независимо от любых предыдущих сгенериро- ванных случайных величин с распределением U(0, 1). З.Если U < р, возвращаем X - i. В противном случае заменяем i на i + 1 и возвращаемся к шаху 2.
Задачи 567 Заметьте, что если р имеет большое значение (близкое к 1), этот алго- ритм является хорошей альтернативой алгоритму из раздела 8.4.5: посколь- ку в нем нет логарифмов, он, вероятно, выполнится быстрее. 8.15. Вспомните смещенные распределения: экспоненциальное, гамма, Вейбулла, логнормальное, Пирсона типа V и VI, лог-логистическое (рассматривались в разделе 6.8). Допуская возможность генерирования случайных величин из исходных (несмещенных) вариантов этих распределений, сформулируйте общий алгоритм для генерирования случайных величин из смещенных вари- антов этих распределений. (Принимаем, что параметр сдвига у определен.) 8.16. Точно сформулируйте алгоритм для генерирования величин У с плотностью распределения г(х) в примере 8.7; график функции г(х) изображен на рис. 8.12 (см. также задачу 8.7). 8.17. Для метода замещений, сформулированного в разделе 8.4.3, требуется гене- рировать, по меньшей мере, два случайных числа с распределением U(0, 1): одно, чтобы генерировать величину I на шаге 1, и другое, чтобы определить, будет ли возвращаться величина I или ее замещения на шаге 2. Докажите, что следующий вариант метода замещений, для которого требуется только одно случайное число, также является обоснованным. 1. Генерируем U ~ U(0, 1). 2. Допускаем Vе (n + 1)U, I = LvJ и V - V - I. 3. Если V < Flt возвращаем X = I. В противном случае возвращаем X - Lt. Подсказка-. Каково совместное распределение I и У? Хотя такая уловка позволяет уменьшить число генерируемых случайных чисел, все же это не очень удачная идея, поскольку в данном случае алгоритм зависит от младших (менее значимых) битов V - I, являющихся случайными, что сомнительно для многих генераторов псевдослучайных чисел. 8.18. С помощью подготовительных алгоритмов для метода замещений в прило- жении 8Б можно получить граничные значения Fit которые в действительно- сти могут быть равны 1. Это может случиться, по крайней мере, с одним зна- чением i, если будет использован второй алгоритм. А. Найдите способ изменять граничные значения и значения замещений та- ким образом, чтобы каждое значение Ft было строго меньше 1. Б. Когда все значения строго меньше 1, найдите способ уменьшить требо- вания к памяти с 2(п + 1) до п + 1, скомбинировав массивы Ft и L{ в один массив длиной п + 1. Переформулируйте алгоритм метода замещений из раздела 8.4.3, чтобы он работал при таком методе с одним массивом, со- держащим замещающие и граничные величины.
Глава 9 Анализ выходных данных для автономной системы 4- Статистический анализ выходных данных имитационного моделирования 4 Оценка показателей системы при переходном режиме моделирования 4 Статистический анализ при установившихся параметрах 4 Одновременное построение доверительного интервала для различных параметров 4 Графики временной зависимости при исследовании динамического режима работы системы 9.1. Введение При обращении к имитационному моделированию для изучении систем часто много усилий тратится на разработку и программирование модели, хотя анализу выходных данных, полученных в результате моделирования, уделяется недоста- точно внимания. Преимущественно выполняется один прогон имитационной мо- дели с произвольной продолжительностью, затем оценки, полученные в результате моделирования, рассматриваются как «истинные» характеристики модели. Так как для продвижения модельного времени используются случайные выборки из распределений вероятностей, эти оценки являются всего лишь отдельными реали- зациями случайных величин с возможно большой дисперсией. Следовательно, оценки, полученные по результатам одного прогона имитационной модели, могут существенно отличаться от соответствующих им истинных характеристик мо- дели, и поэтому, возникает опасность получения ошибочных выводов, касающих- ся изучаемой системы. Анализ выходных данных не всегда выполняется надлежащим образом в силу ряда причин. Во-первых, у пользователей нередко создается ложное впечатление, будто имитационное моделирование — это всего лишь упражнение в компьютер- ном программировании, пусть и сложное. Поэтому зачастую изучение систем с по- мощью имитационного моделирования начинается с разработки концептуальной модели с последующим «программированием» и завершается единственным про- гоном программы для выдачи «ответов», тогда как имитационное моделирова- ние — это эксперимент со статистическими выборками с применением вычисли- тельной машины. Для того чтобы достичь каких-нибудь значимых результатов при имитационном моделировании, нужно использовать статистические методы
9.1. Введение 569 для разработки и анализа моделирующих экспериментов. Во-вторых, выходные процессы практически всех прогонов имитационных моделей являются нестацио- нарными и автокоррелированными (см. раздел 5.4.5). Для их анализа классиче- ские статистические методы, основанные на независимых и одинаково распреде- ленных наблюдениях, не могут применяться непосредственно. Существуют также проблемы, связанные с анализом выходных данных, с отсутствием полностью приемлемого решения; доступные в этом случае методы могут оказаться весьма сложными в применении. Еще одним препятствием к получению точных оценок истинных параметров или характеристик модели является высокая стоимость компьютерного времени для сбора необходимого количества выходных данных моделирования. Бывают ситуации, когда подходящая статистическая процедура доступна, но стоимость сбора необходимого для нее количества данных оказыва- ется слишком высокой. Описанная проблема в последнее время не является очень острой, поскольку большинство аналитиков уже имеют собственные высокоско- ростные ПК или рабочие станции. Это относительно недорогие компьютеры, ко- торые можно использовать в ночное время или выходные дни, чтобы получить большое количество данных для моделирования почти по нулевой стоимости. Теперь более подробно остановимся на случайном характере выходных данных имитационного моделирования. Пусть величины Уъ У2,... представляют стохасти- ческий процесс (см. раздел 4.3), который был получен в результате одного единст- венного (единичного) прогона имитационной модели. В частности, У; может обо- значать производительность системы в течение i-ro часа. Случайные величины У( не будут ни независимыми, ни одинаково распределенными. Таким образом, боль- шинство формул из главы 4, которые предполагают независимость данных, напри- мер доверительный интервал в уравнении (4.12), не могут непосредственно при- меняться к выходным данным. Пусть величины уи, ух2,..., у1т будут реализацией случайных величин Yit У2,..., Ут, полученных в результате выполнения прогона имитационной модели, продол- жительность которого равнялась т наблюдений, с использованием случайных чи- сел ып, w12,... (:-е случайное число, использовавшееся в j-м прогоне имитационной модели, обозначается как и^). Если выполнить прогон имитационной модели с иным набором случайных чисел м21, и22, ..., получим другую реализацию у21, у22,..., г/2га слу- чайных величин Уъ У2,..., Ут. (Эти реализации отличаются между собой, поскольку для двух прогонов имитационной модели использовались разные последовательно- сти случайных чисел, и выборки из входных распределений вероятностей полу- чились неодинаковыми.) Предположим, что всего выполнялось п независимых повторных прогонов (репликаций) имитационной модели (для каждого прогона использовались разные последовательности случайных чисел, статистические счет- чики переводились в исходное состояние в начале каждого прогона, и при каждом прогоне использовались одни и те же исходные условия; см. раздел 9.4.3) продол- жительностью т, в результате зарегистрированы следующие данные наблюдений: Уи> •••> Уц> У1т, У 21* > Уи> •••> У2т> У тЛ* •••» Ут* У пт'
570 Глава 9. Анализ выходных данных для автономной системы Разумеется, данные наблюдений, полученные в результате определенного про- гона имитационной модели (отдельная строка), не являются независимыми и оди- наково распределенными. Однако при этом уи, y2i,..., у^ (из i-ro столбца) являются независимыми и одинаково распределенными данными наблюдений для случай- ных величин Yj при i = 1, 2,т. Такая независимость данных, взятых из различ- ных прогонов (см. задачу 9.1), является ключом к использованию относительно простых методов анализа выходных данных, описанных в этой главе. В общем можно сказать, что задача анализа выходных данных состоит в использовании данных наблюдений yfi (i = 1, 2,..., т; j - 1, 2,..., ri) для получения выводов, касаю- щихся распределений случайных величин Уъ У2,..., У„. Например, y, (n) = Хуи у # /п является несмещенной оценкой Е(У^- Пример 9.1. Рассмотрим банк с пятью кассами и одной очередью, он открывается в 9.00 и закрывается в 17.00, но его работа продолжается до тех пор, пока все клиенты, на- ходившиеся в банке на 17.00, не будут обслужены. Допустим, что клиенты прибывают в соответствии с пуассоновским процессом с интенсивностью 1 человек в минуту (то есть время между прибытиями представлено независимыми и одинаково экспоненциально распределенными величинами со средним 1 мин) время обслуживания представлено независимыми и одинаково экспоненциально распределенными величинами со сред- ним 4 мин и обслуживание клиентов происходит в порядке FIFO. В табл. 9.1 показаны некоторые типичные статистические выходные данные, полученные в результате 10 не- зависимых повторных прогонов имитационной модели банка. Допускается, что изна- чально в банке нет клиентов. (Учтите, результаты различных повторных прогонов могут существенно отличаться.) Следовательно, на основании одного прогона имитационной модели нельзя получить ответ. В этой главе мы рассмотрим методы статистического анализа выходных дан- ных имитационного моделирования и представим материал, понятный читателю, владеющему основами теории вероятностей и статистики. (Прежде чем присту- пить к прочтению этой главы, желательно просмотреть главу 4.) Мы коснемся всех важных, на наш взгляд, методов анализа выходных данных, однако подробнее остановимся на статистических процедурах, которые легче понять и реализовать, и которые, кроме того, хорошо зарекомендовали себя на практике и могут приме- няться для решения реальных проблем. В разделах 9.2 и 9.3 описаны виды имитаций в зависимости от анализируемых выходных данных, а также критерии оценок или параметров 0 для каждого вида. В разделах 9.4-Э.6 речь пойдет о том, как получить точечную оценку 0 и довери- тельный интервал для каждого типа параметра 0; для доверительного интервала обычно требуется оценка дисперсии 0, а именно Var(0) При использовании одного из рассмотренных методов анализа может возникать либо одна из следующих про- блем, либо обе сразу: 1 .0 не является несмещенной оценкой 0, то есть £(0) * 0 (см., например, раз- дел 9.5.1). 2 . Уаг(0)не является несмещенной оценкой Var(0) ( см., например, раздел 9.5.3). В разделе 9.7 к приведенным выше возможностям анализа добавляется построе- ние доверительного интервала для нескольких различных параметров одновремен- но. И наконец, в разделе 9.8 объясняется, как можно разобраться во внутренних
9.2. Переходное и установившееся поведение стохастического процесса 571 механизмах динамического режима работы системы с помощью графиков времен- ной зависимости. Таблица 9.1. Результаты 10 независимых повторных прогонов имитационной модели банка Номер повторного прогона имитационной модели Число клиентов, прошедших обслуживание _ Время окончания обслужи- вания, ч Средняя задержка в очереди, мин Средняя длина очереди Доля клиентов с задержками менее 5 мин 1 484 8,12 1,53 1,52 0,917 2 475 8,14 1,66 1,62 0,916 3 484 8,19 1,24 1,23 0,952 4 483 8,03 2,34 2,34 0,822 5 455 8,03 2,00 1,89 0,840 6 461 8,32 1,69 1,56 0,866 7 451 8,09 2,69 2,50 0,783 8 486 8,19 2,86 2,83 0,782 9 502 8,15 1,70 1,74 0,873 10 475 8,24 2,60 2,50 0,779 Вопросам анализа выходных данных посвящены сотни различных работ. Дос- таточно полный их список (вышедших до 1983 г.) приводит Лоу [Law, 1983], к этой теме обращались и другие авторы [Welch, 1983; Pawlikowski, 1990; Alexo- poulos and Selia, 1998]. Многие последние работы публиковались в журналах Ma- nagement Science w. Operations Research или в докладах Зимней конференции по имитационному моделированию. 9.2. Переходное и установившееся поведение стохастического процесса Рассмотрим выходной стохастический процесс У1( У2.Пусть Ffy \Г),~Р(¥{<,у\Г) при i = 1,2.где у — вещественное число, I представляет начальные условия, ис- пользуемые для того, чтобы начать моделирование в момент времени 0. (Условная вероятность P(Yt <у 17) — это вероятность того, что событие {X- <у] возникнет при заданных начальных условиях 7.) Для производственной системы I может озна- чать либо число работ, имеющихся в наличии, либо состояние занятости или неза- нятости каждого станка в момент времени 0. Мы называем функцию Ffcy 17) пере- ходным распределением выходного процесса в (дискретный) момент времени i при начальных условиях I. Обратите внимание, что F&y | Г) будет различной для каждо- го значения i и каждого набора начальных условий I. Графики функций плотности переходных распределений, соответствующих случайным величинам Yit, Yi}, Yis, Yit, показаны на рис. 9.1 для определенного набора начальных условий и возрас- тающих индексов времени i2, i3, i4, где допускается, что случайная величина
572 Глава 9. Анализ выходных данных для автономной системы Y/ имеет функцию плотности fY . Плотность fY определяет, как случайная вели- чина Yt может изменяться в различных повторных прогонах имитационной моде- ли. Можно предположить, что мы выполняем очень большое число репликаций имитационной модели, п, и при каждой репликации регистрируем стохастический процесс Yt, У2,.... Если мы составим гистограмму п наблюдаемых значений случай- ной величины У; , то эта гистограмма (представленная в соответствующем мас- штабе) будет подобна графику плотности распределения fY . Рис. 9.1. Функции плотности переходного и установившегося распределений для определенного стохастического процесса У4, У2,... и начальных условий I Для заданных у и I вероятности Ffy | Г), F2(y | Г),... — это всего лишь последова- тельность чисел. Если F{(y | Г) F(y) при i а>, при всех значениях у и любых на- чальных условиях I, то F(y) называется установившимсяраспределением выходно- го процесса Yu У2, .... Собственно говоря, установившееся распределение F(y) получается только при i -> со. На практике, однако, часто встречается конечный индекс времени, например k + 1, для которого распределения, начиная с этой точ- ки, будут приблизительно одинаковыми; образно говоря, «установившееся со- стояние» начинается в момент времени k +1, как показано на рис. 9.1. Заметьте, ус- тановившееся состояние не означает, что случайные величины Yk+l, Yk+2, ... будут принимать одинаковые значения в определенном прогоне имитационной модели; скорее, это означает, что все они будут иметь приблизительно одно и то же распре- деление. Более того, упомянутые случайные величины не будут независимыми, но приближенно составят ковариационный стационарный стохастический процесс (см. раздел 4.3). Подробное объяснение особенностей установившихся и переход- ных распределений можно найти в работе Велча [Welch, 1983]. Установившееся распределение F(y) не зависит от начальных условий I, а вот скорость сходимости переходных распределений F{(y | Г) к F(y) — зависит, как по- казывает следующий пример.
9.2. Переходное и установившееся поведение стохастического процесса 573 Пример 9.2. Рассмотрим стохастический процесс Dt, D2,... для системы массового об- служивания Af/Af/l с р - 0,9 (X - 1, <о - 10/9), где Ц- — это задержка в очереди i-ro требо- вания. На рис. 9.2 изображен график сходимости переходного среднего £(£>;) к устано- вившемуся среднему d — E(D) - 8,1 по мере увеличения значения i для различных значений числа требований в системе з в момент времени 0. (Случайная величина D имеет установившеюся задержку в распределении очереди.) Обратите внимание, что сходимость E(Dj ) к. d осуществляется гораздо быстрее при з - 15, нежели при з - 0 (см. задачу 9.11). Значения для £(Ц ) были взяты из работы Келтона и Лоу [Kelton and Law, 1985], об этом писали и другие авторы [Kelton, 1985; Murray and Kelton, 1988]. Функция распределения задается уравнением (4.14) из приложения 4А. Рис. 9.2. E(Dj) в качестве функции i и число требований в системе з на момент времени 0 для системы массового обслуживания 1И/1И/1 с р - 0,9 Пример 9.3. Рассмотрим стохастический процесс Сь С2,... для системы управления за- пасами (см. пример 4.23), где С{ — это расходы затраты в течение i-ro месяца. Ниже на рис. 9.3 изображен график сходимости Е(С,) к установившемуся среднему с - Е(С) - — 112,11 [Wagner, 1969, р. А19] по мере увеличения значения i для исходного уровня за- пасов 57. Заметьте, сходимость явно не является монотонной.
574 Глава 9. Анализ выходных данных для автономной системы Рис. 9.3. Е(С|) как функция г для системы управления запасами (s, 5) В примерах 9.2 и 9.3 мы изобразили графики сходимости ожидаемых величин E(Yd к установившемуся среднему £(¥) Следует помнить, что все распределение Yj также стремится к распределению Y по мере увеличения значения i. 9.3. Типы имитационного моделирования и анализ выходных данных Выбор метода (из имеющихся в нашем распоряжении) для планирования и анали- за моделирующих экспериментов зависит от типа имитационного моделирования (рис. 9.4). Будет имитационное моделирование для переходного режима или непе- реходного, зависит от способа определения продолжительности прогона имитаци- онной модели. К тому же рабочие характеристики или параметры при непереход- ном режиме бывают нескольких типов, как показано на рис. 9.4. Эти концепции в дальнейшем получат более подробное определение. При переходном режиме имитационного моделирования может происходить .«ес- тественное» событие Е, определяющее продолжительность единичного прогона имитационной модели (репликации). Так как для различных прогонов использу- ются независимые случайные числа и одно и то же правило инициализации, в ре- зультате получают сопоставимые случайные величины из различных прогонов, которые являются независимыми и одинаково распределенными (см. раздел 9.4). Событие Е часто происходит в момент времени, когда система освобождается, или в момент времени, после которого уже нельзя получить никакой полезной инфор- мации. Оно определяется до того, как выполняются прогоны имитационной моде- ли. Время возникновения события Е при каждом конкретном прогоне имитацион- ной модели может быть случайной величиной. Поскольку начальные условия при переходном режиме имитационного моделирования, как правило, влияют на кри- терии оценок, они должны представлять условия, характерные для реальной сис- темы (раздел 9.4.3).
9.3. Типы имитационного моделирования и анализ выходных данных 575 Рис. 9.4. Типы имитационного моделирования в зависимости от анализируемых выходных данных Пример 9.4. Коммерческое учреждение, например банк, работает с 9.00 до 17.00. Задача имитационного моделирования сводится к тому, чтобы оценить некоторые показатели качества обслуживания клиентов в течение периода, начинающегося в 9.00 и заканчи- вающегося обслуживанием последнего клиента, который вошел в это учреждение до его закрытия в 17.00. В этом случае событие Е - {прошло, по меньшей мере, 8 ч модельного времени, и система свободна}, а начальные условия моделирования — это число клиен- тов, присутствующих на момент времени 0 (см. раздел 9.4.3). Пример 9.5. Рассмотрим военное наземное противостояние между «синими» и «крас- ными» силами. Задача имитационного моделирования заключается в том, чтобы опреде- лить (конечное) состояние тех и других сил относительно их начального состояния. В этом случае событие Е= {либо «синие» силы, либо «красные» силы выиграли битву}. Условием завершения битвы может быть, скажем, потеря одной стороной 30 % своих сил, поскольку такую сторону больше нельзя считать жизнеспособной. Выбор началь- ных условий, например численности войск и количества танков для каждой из сил, как правило, — не проблема при моделировании, поскольку они указываются в рассматри- ваемом сценарии боевых действий. Пример 9.6. Предприятие авиакосмической промышленности заключает контракт на производство 100 самолетов, которые должны быть поставлены в течение 18 мес. Ком- пания хотела бы моделировать различные конфигурации производственной системы, чтобы определить, какие из них позволят уложиться в установленный контрактом срок. В этом случае событие Е - {завершение производства 100 самолетов}.
576 Глава 9. Анализ выходных данных для автономной системы Пример 9.7. Возьмем производственную компанию, которая работает 16 ч в сутки (две смены), а незавершенная в один день работа переносится на другой день. Можно ли считать имитационное моделирование, выполняемое для такой системы, заканчиваю- щимся, когда событие Е = {прошло 16 ч модельного времени}? Отвечаем — нет, посколь- ку функционирование такой системы — это, по сути, непрерывный процесс, когда конеч- ные условия одного дня работы являются начальными условиями для другого дня. Пример 9.8. Компании, продающей товары одного типа, нужно решить, какое количество товара должно находиться в запасах в течение периода планирования продолжительно- стью 120 мес. (см. раздел 1.5). Когда задан какой-либо начальный уровень запасов, зада- ча сводится к необходимости определить какое количество товара следует заказывать ежемесячно, чтобы минимально снизить средние расходы в месяц на функционирова- ние системы управления запасами. В этом случае Е - {смоделировано 120 мес. работы системы}, моделирование начинается с текущим уровнем запасов в системе. Имитационное моделирование для непереходного режима — моделирование, для которого не существует естественного события Е, определяющего продолжи- тельность прогона имитационной модели. К такому типу моделирования мы обра- щаемся, когда либо разрабатываем новую систему, либо изменяем существующую, и нас интересует поведение системы в течение длительного периода «нормаль- ной» работы. К сожалению, под «длительным периодом» не подразумевается со- бытие Е. Критерий оценки имитационной модели считается установившимся па- раметром в том случае, если он предоставляет характеристику установившегося распределения некоторого выходного стохастического процесса Ylt У2...Как по- казано на рис. 9.1, если случайная величина У имеет установившееся распределе- ние, нас может интересовать оценка установившегося среднего v == £(У) или веро- ятности P(Y < у) для некоторого вещественного числа у. Пример 9.9. Рассмотрим компанию, которая планирует построить новую производствен- ную систему и хотела бы определить установившуюся среднюю производительность системы в час за длительный период работы. Исходим из того, что компания работала продолжительное время, рабочие знают свои обязанности и многие организационные трудности уже преодолены, а механические трудности разрешены. Предположим: а) система функционирует 16 ч в сутки при 5-дневной рабочей неделе; б) потерей производительности в конце одной смены и в начале другой можно пренеб- речь (см. задачу 9.3); в) перерывы (например, обеденный), из-за которых производство останавливается ежедневно в указанное время, отсутствуют. Такую систему следует моделировать, связав воедино 16-часовые рабочие дни, игнори- руя периоды простоев системы в конце каждого дня и по выходным. Пусть —число де- талей, производимых за i-й час. Если стохастический процесс Nlt N2,... имеет установив- шееся распределение с соответствующей случайной величиной N, нам нужно оценить среднее v -= E(N) (см. задачу 9.4). Следует отметить, что стохастические процессы для большинства реальных систем не имеют установившихся распределений, поскольку характеристики сис- темы изменяются со временем. Например, в производственной системе правила производственного планирования и размещения оборудования (в частности, число и расположение станков) могут время от времени меняться. Но в имитационной модели (которая является абстракцией реальности) возможны установившиеся
9.3. Типы имитационного моделирования и анализ выходных данных 577 распределения, так как часто допускается, что характеристики модели не меняют- ся со временем. Когда у нас появляется новая информация о характеристиках сис- темы, необходимо повторно выполнить анализ для установившихся параметров. Если производственная компания (в примере 9.9) хочет знать время, необходи- мое системе для перехода от пускового периода к «нормальной» работе, следует из- брать вариант завершения моделирования по событию Е - {моделируемая система функционирует -«нормально»} (если событие можно определить). Следовательно, моделирование определенной системы может проводиться как для переходного ре- жима, так и для установившегося, в зависимости от задач исследований. Пример 9.10. Рассмотрим имитационную модель сети связи, на текущий момент не су- ществующей. Так как нет типичного приемлемого представления данных о механизме поступления сообщений, допускаем, что сообщения поступают в соответствии с пуассо- новским процессом с постоянной интенсивностью, равной прогнозируемой интенсивно- сти поступления сообщений в течение периода предельной нагрузки. (Когда система бу- дет действительно создана, интенсивность поступления будет изменяться как функция времени, а периоды предельной нагрузки окажутся относительно короткими.) Посколь- ку состояние системы во время ее «нормальной работы» неизвестно, начальные условия должны выбираться произвольно (например, нет никаких сообщений на момент време- ни 0). Задача состоит в том, чтобы обеспечить такую продолжительность моделирова- ния, при которой произвольный выбор начальных условий не окажет существенного влияния на оцениваемые рабочие характеристики (в частности, на сквозную среднюю задержку сообщения). Выполняя анализ установившихся параметров предложенной сети коммуникаций, мы, по сути, стараемся определить, как сеть отреагирует на предельную нагрузку неопреде- ленной длительности. Однако, если период предельной нагрузки в реальной сети ока- жется коротким или же интенсивность поступления сообщений перед таким периодом значительно ниже, чем в указанный период, при анализе мы можем переоценить уро- вень перегрузки в сети в период предельной нагрузки. Это может привести к установке более мощного сетевого оборудования, нежели в этом есть потребность. Рассмотрим стохастический процесс Уь Y2,... ^прекращающегося моделиро- вания, при котором не существует установившегося распределения. Предполо- жим, мы поделили временную ось на интервалы непрерывного времени равной длины, именуемые циклами. (Например, в производственной системе цикл может равняться 8-часовой смене.) Пусть Yf ~ случайная величина, определенная в i-м цикле, Yf, Y2C, ... являются сопоставимыми, а процесс Ytc, Y2C,... имеет установив- шееся распределение Fc и Yc ~ Fc. Тогда считается, что критерий оценки является установившимся циклическим параметром, если он является такой характеристи- кой Ус, как среднее vc - Е(УС). Следовательно, установившийся циклический па- раметр будет всего лишь установившимся параметром соответствующего цикли- ческого процесса Ytc, У2С,.... Пример 9.11. Предположим, что в производственной системе из примера 9.9 существу- ет обеденный перерыв в начале пятого часа каждой 8-часовой смены. Тогда процесс, со- стоящий из значений производительности системы в час Nlt N2,..., не имеет установив- шегося распределения (см. задачу 9.6). Пусть Nf будет средней производительностью системы в час за i-ю 8-часовую смену (цикл). Следовательно, нам нужно будет оценить установившуюся ожидаемую среднюю производительность в час в течение цикла, Vе = - E(NC), которая является установившимся циклическим параметром.
578 Глава 9. Анализ выходных данных для автономной системы Пример 9.12. Возьмем центр обработки заказов авиакомпании. Предположим, что ин- тенсивность поступления заказов в систему меняется в зависимости от времени суток и дня недели, но при этом характер изменения интенсивности поступлений каждую неде- лю одинаков. Допустим, Dt — задержка i-ro поступившего заказа. Стохастический про- цесс Dlt D2,... не имеет установившегося распределения. Пусть Df будет средней за- держкой в течение i-й недели. Тогда нам нужно оценить установившуюся ожидаемую среднюю задержку в течение недели, vc - Б(ОС). Допустим, что при моделировании в непереходном режиме стохастический процесс Yu Y2,... не имеет установившегося распределения, и не существует подхо- дящего определения цикла, для которого соответствующий процесс Ytc, Y2C,... бу- дет иметь установившееся распределение. Подобная ситуация может возникнуть, если, например, параметры модели продолжают меняться со временем. Если в примере 9.12 интенсивность поступления заказов меняется каждую неделю и каж- дый год, установившиеся (циклические) параметры, вероятно, не будут должным образом определены. В подобных случаях, как правило, существует постоянное количество данных, описывающих изменение входных параметров со временем. Следовательно, мы фактически получаем завершающее событие Е, и, значит, мож- но прибегнуть к методам анализа для переходного режима моделирования из раз- дела 9.4. Вот почему мы отдельно не рассматриваем подобную ситуацию. Рабочие характеристики или параметры такого моделирования обычно меняются со вре- менем, они включены в категорию «другие параметры» (рис. 9.4). Пример 9.13. Рассмотрим производственную систему из примера 5.26. В ней существо- вал 3-месячный план, определяющий, какие типы компьютеров должны производиться каждую неделю, и указывалось их количество. План менялся каждую неделю в силу из- менения количества продаж и внедрения в производство новых компьютеров. В этом случае недельная и месячная производительность не имели установившихся распреде- лений. Поэтому мы выполнили заканчивающееся по событию моделирование, продол- жительность которого составила 3 мес. модельного времени, и оценили среднюю произ- водительность за каждую неделю. 9.4. Статистический анализ при переходном режиме моделирования Предположим, что мы выполняем п независимых повторных прогонов при пере- ходном режиме моделирования; каждый повторный прогон завершается событи- ем Е и начинается при одних и тех же начальных условиях (см. раздел 9.4.3). Что- бы повторные прогоны были независимыми* мы для каждого из них используем разные случайные числа. (Информацию о том, как это легче осуществить, если п повторных прогонов нужно сделать более чем за одно выполнение, вы найдете в разделах 7.2 и 7.3.2.) Чтобы упростить решение, допустим, что существует всего одна искомая оценка критерия. (Это допущение опускается в разделе 9.7.) Пусть Xj будет случайной величиной, определенной в ходе j-ro повторного прогона при j - 1,2,..., п; допускается, что величины Xj сопоставимы для различных повторных прогонов. Тогда X/ являются независимыми и одинаково распределенными слу- чайными величинами. Для модели банка из примеров 9.1 и 9.4 Xj может быть сред-
9.4. Статистический анализ при переходном режиме моделирования 579 ней задержкой в очереди DJNb течение дня в j-м повторном прогоне, где N (случайная величина) является числом клиентов, обслуженных за день. Для моде- ли боевых действий из примера 9.5 Xi может быть числом «красных» танков, унич- тоженных в ходе j-го повторного прогона. Наконец, для модели системы управле- ния запасами из примера 9.8 Xj будет представлять средние расходы £120 в ходе у-го повторного прогона имитационной модели. 9.4.1. Оценка средних значений Предположим, что нам нужно получить точечную оценку и доверительный интер- вал для среднего ц = Е(Х), где X — случайная величина, определенная при повтор- ном прогоне, как это было описано выше. Выполним п независимых повторных прогонов имитационной модели. Пусть Хг,..., Х„ будут независимыми и одина- ково распределенными случайными величинами, полученными в результате этих повторных прогонов. Подставим JQb уравнения (4.3) и (4.12), тогда Х(п) будет являться несмещенной оценкой р, а приближенный 100(1 - а)-процентный (0 < а < 1) доверительный интервал для ц будет определяться как X(n)±tn_ht_a/2J^, (9.1) где выборочная дисперсия ^(п) задается уравнением (4.4). Мы будем называть доверительный интервал, полученный на основании формулы (9.1) процедурой с фиксированным объемом выборки. Пример 9.14. Предположим, что мы имеем намерение получить для банка (пример 9.1) точечную оценку и приближенный 90-процентный доверительный интервал для ожи- даемой средней задержки клиента в течение дня, эта задержка задается формулой (Обратите внимание, мы оцениваем ожидаемую среднюю задержку, поскольку все за- держки имеют разные средние.) Выполнив 10 повторных прогонов имитационной моде- ли, данные для которых представлены в табл. 9.1, мы получили Х(10) - 2,03; №(10) - 0,31 и — . /№б10'> Х(10) ± t* 0,95-J^2 = 2,03 ± 0,32. Таким образом, при условии, что значения доверительных интервалов будут правильно интерпретированы (см. раздел 4.5), можно утверждать с приближенной степенью дове- рительной Вероятности 90 %, что Е(Х) попадает в интервал [1,71; 2,35] мин. Пример 9.15. Возьмем систему управления запасами (раздел 1.5 и пример 9.8). Предпо- ложим, что нам необходимо получить точечную оценку и приближенный 90-процент- ный доверительный интервал для ожидаемых средних расходов при периоде планирова- ния продолжительностью 120 мес., которые определяются по формуле
580 Глава 9. Анализ выходных данных для автономной системы ВД = £ -Ц- 120 Мы выполнили 10 независимых повторных прогонов имитационной модели и получили следующие значения 129,35; 127,11; 124,03; 122,13; 120,44; 118,39; 130,17; 129,77; 125,52; 133,75. В результате была получена точечная оценка Х(10) - 126,07, №(10) - 23,55 и 90-процентный доверительный интервал 126,07 ± 2,81, или [123,26; 128,88]. Обратите внимание, что оценка коэффициента вариации (см. табл. 6.5), определяющая изменчивость, составляет 0,04 для системы управления запасами и 0,27 для модели бан- ка. Значит, величины Xj для модели банка являются более изменчивыми, нежели эти же величины для системы управления запасами. Пример 9.16. Возьмем модель банка из примера 9.1. Предположим, что нам необходимо получить точечную оценку и приближенный 90-процентный доверительный интервал для ожидаемой доли клиентов, задержка которых в очереди составляет меньше 5 мин, в течение дня, эта задержка задается формулой Е(Х) = Е где индикатор функции /£(0, 5) определяется как 1(0 51= Л еслиД<5; [0 в противном случае при 1-1,2,... N. Воспользовавшись данными из последнего столбца табл. 9.1, получаем точечные оценки Х(10) - 0,853, №(10) - 0,004 и 90-процентный доверительный интервал 0,853 ± 0,036, или [0,817; 0,889]. Правильность доверительного интервала, заданного формулой (9.1) (то есть будет ли его покрытие близким к 1 - а), зависит от допущения, что Xj — это нор- мально распределенные случайные величины; поэтому доверительные интервалы в примерах 9.14,9.15 и 9.16 назывались приближенными 90-процентными довери- тельными интервалами. Поскольку такое допущение редко будет выполняться на практике, мы воспользуемся несколькими простыми стохастическими моделями с известными средними, чтобы эмпирическим путем исследовать устойчивость доверительного интервала к отклонениям от нормального распределения. Наша задача — дать разработчикам, занимающимся имитационным моделированием,
9.4. Статистический анализ при переходном режиме моделирования 581 некоторые указания относительно того, насколько надежно доверительный ин- тервал должен выполняться на практике в плане покрытия. Сначала мы выполнили 500 независимых имитационных экспериментов для системы массового обслуживания Л//Л//1 ср- 0,9. В каждом эксперименте мы рассматривали п - 5,10,20,40 и для каждого п использовали формулу (9.1), чтобы построить приближенный 90-процентный доверительный интервал для с d(25\s=0) = E V 25 s=0 = 2,12, где s — это число требований, присутствующих в системе на момент времени 0 (см. пример 9.2, а также pa6ory[Heathcote and Winer, 1969]). В табл. 9.2 приведена часть, Д тех из 500 доверительных интервалов, которые обеспечивают покрытие истинного </(25 | $ - 0) 90-процентного доверительного интервала для истинного покрытия р (часть очень большого числа доверительных интервалов, обеспечива- ющих покрытие </(251 s - 0)), а также среднее значение половины длиныдовери- тельного интервала (t„_i.i_e/2 Vs2(”)/ м)> деленное на точечную оценку Х(п) для 500 экспериментов; эта оценка является показателем точности доверительного интервала (см. дальнейшие объяснения). Такой 90-процентный доверительный интервал для истинного покрытия вычисляется по формуле Р ± 20.95 500 ’ он основывается на том, что (р-р)/^Jp(l~p)/5QQ приближенно распределено как стандартная нормальная случайная величина [Hogg and Craig, 1995, р. 254-255]. Ознакомившись с табл. 9.2, можно убедиться, что 86,4 % из 500 доверительных интервалов, полученных на основании п = 10 повторных прогонов имитационной модели, обеспечивают покрытие </(25 | $ = 0). Мы также можем предполагать с уровнем доверительной вероятности 90 %, что истинное покрытие для п - 10 нахо- дится между 0,839 и 0,889. Учитывая, что имитационная модель всегда является лишь приближением к реальной системе, будем считать, что оценки покрытия, представленные в табл. 9.2, достаточно близки к искомому значению 0,9 и могут использоваться. Обратите также внимание на последний столбец таблицы и убе- дитесь, что для увеличения точности доверительного интервала приблизительно в два раза, требуется выполнить в четыре раза больше повторных прогонов имита- ционной модели. Это не удивительно, поскольку 4п является знаменателем при определении половины длины доверительного интервала по формуле (9.1). Имея целью доказать, что доверительный интервал, определенный форму- лой (9.1), не всегда дает покрытие, близкое к 1 - а, мы рассмотрели второй пример. Модель надежности, состоящая из трех компонентов, будет функционировать до тех пор, пока работает компонент 1 при условии, что работает компонент 2 или 3. Если G — это время безотказной работы компонента i (i - 1, 2, 3), то G - min{Gt; max{G2, G3}}. Далее допустим, что Gt — независимые случайные величины и что ка- ждая величина имеет распределение Вейбулла с параметром формы 0,5 и мас- штабным параметром 1 (см. раздел 6.2.2). Это распределение Вейбулла очень
582 Глава 9. Анализ выходных данных для автономной системы асимметрично и отличается от нормального. Вновь выполнено 500 независимых моделирующих экспериментов; для каждого эксперимента рассмотрели и * 5,10, 20,40 и для каждого п использовали формулу (9.1), чтобы построить приближен- ный 90-процентный доверительный интервал для E(G| все компоненты новые) “ - 0,78 (это значение, выведено аналитическим путем). Результаты данного экспе- римента приводятся в табл. 9.3. Заметьте, для небольших значений п наблюдается существенное сокращение покрытия. По мере увеличения значений п покрытие приближается к 0,9, что подтверждается центральной предельной теоремой. Таблица 9.2. Результаты с фиксированным объемом выборки для rf(25|s - 0) - 2,12, полученные после выполнения 500 экспериментов (система массового обслуживания М/Л//1 ср- 0,9) п Оценка покрытия Среднее (половины длины доверительного интервала)/Х(п) 5 0,880 ± 0,024 0,67 10 0,864 ± 0,025 0,44 20 0,886 ± 0,023 0,30 40 0,914 ± 0,021 0,21 Таблица 9.3. Результаты с фиксированным объемом выборки для Е(6]все компоненты новые) - 0,78, полученные после выполнения 500 экспериментов (модель надежности) п Оценка покрытия Среднее (половины длины доверительного интервала )/Х(и) 5 0,708 ± 0,033 1,16 10 0,750 ± 0,032 0,82 20 0,800 ± 0,029 0,60 40 0,840 ± 0,027 0,44 Данные, представленные в табл. 9.2 и 9.3, свидетельствуют о том, что покрытие, обеспечиваемое доверительным интервалом, заданным формулой (9.1), зависит от рассматриваемой имитационной модели (точнее от распределения получаемых величин -X,), а также от размера выборки п. Возникает закономерный вопрос, поче- му доверительный интервал дал лучшее покрытие в модели системы массового обслуживания M/M/i, чем в модели надежности. Чтобы ответить на него, мы сна- чала проделали 500 независимых моделирующих экспериментов для системы мас- сового обслуживания M/M/i с р - 0,9 и s - 0 (и - 1) и зарегистрировали Хй А /25 для каждого повторного прогона имитационной модели. Гистограмма 500 средних задержек показана на рис. 9.5, асимметрия выборки составила 1,64 (см. табл. 4.1 и 6.5). Хотя на гистограмме видно, что средняя задержка не распределена нормаль- но, все же ей не свойственна большая асимметрия. (Например, у экспоненциаль- ного распределения асимметрия равна 2.) Затем мы выполнили 500 независимых моделирующих экспериментов для модели надежности и зарегистрировали время безотказной работы G для каждого повторного прогона имитационной модели. Гистограмма 500 значений G показана на рис. 9.6, оценка асимметрии составила 3,64. Таким образом, распределение времени безотказной работы гораздо сильнее
9.4. Статистический анализ при переходном режиме моделирования 583 отклоняется от нормального, чем распределение средней задержки. Эти результа- ты в некоторой степени объясняют, почему покрытие для модели системы массо- вого обслуживания Af/Af/l ближе к 0,9, чем покрытие для модели надежности. Попробуем разобраться, почему распределение средней задержки ближе к нор- мальному, нежели распределение времени безотказной работы. Заметьте, что ве- личина Xj для системы массового обслуживания Af/Af/l фактически является средним значением 25 отдельных задержек, тогда как Xj для модели надежности вычисляется по трем отдельным значениям времени безотказной работы с помо- щью формулы, в которой используется минимум и максимум. Существуют цен- тральные предельные теоремы для определенных типов коррелированных дан- ных, согласно которым средние значения этих данных становятся приближенно нормально распределенными по мере увеличения количества точек для определе- ния среднего. Чтобы продемонстрировать это на примере системы массового об- служивания М/М/1, мы выполнили 500 независимых экспериментов и зарегист- рировали Д /6400 для каждого повторного прогона имитационной модели. Гистограмма 500 средних задержек (каждая из которых основывается на 6400 от- дельных задержках) приведена на рис. 9.7, асимметрия выборки составила 1,07. (Асимметрия нормального распределения равна 0.) Естественно, гистограмма, представленная на рис. 9.7, ближе к нормальному распределению, нежели гисто- грамма, которую вы видите на рис. 9.5. Рис. 9.5. Гистограмма 500 средних задержек (каждая из которых получена на основании 25 отдельных задержек) для модели системы массового обслуживания Л//Л//1 с р - 0,9 Поэтому мы ожидаем, что если величина^ является средним значением боль- шого количества отдельных наблюдений (пусть даже коррелированных), умень- шение покрытия доверительного интервала не будет значительным. Наш опыт свидетельствует о том, что во многих моделях реальных систем получаются вели- чины Xj такого типа.
684 Глава 9. Анализ выходных данных для автономной системы Рис. 9.6. Гистограмма 500 значений времени безотказной работы для модели надежности Рис. 9.7. Гистограмма 500 средних задержек (каждая из которых получена на основании 6400 отдельных задержек) для модели системы массового обслуживания Л//Л4/1 с р - 0,9 Получение заданной точности Одним из недостатков процедуры с фиксированным объемом выборки, основан- ной на п повторных прогонах имитационной модели, является то, что аналитик не может контролировать половину длины доверительного интервала (или точность Х(я)) и что для фиксированного значения п половина длины будет зависеть от Var(X), дисперсии генеральной совокупности величин Xj. Далее рассмотрим про- цедуры для определения числа повторных прогонов имитационной модели, необ- ходимого при оценке среднего ц - Е(Х) с заданной погрешностью или точностью.
9.4. Статистический анализ при переходном режиме моделирования 585 Начнем с рассмотрения двух способов определения погрешности оценки X. (Зависимость от значения п исчезает, поскольку число повторных прогонов ими- тационной модели может быть случайной величиной.) Если оценка X такова, что для нее |Х - - р, то считается, что X имеет абсолютную погрешность р. Если мы будем выполнять повторные прогоны имитационной модели до тех пор, пока по- ловина длины 100(1 - а)-процентного доверительного интервала, заданного фор- мулой (9.1), будет меньше или равна р (где р > 0), то 1 - а » Р(Х - половина длины 5 ц 5 X + половина длины) = - Р(|Х - ц| < половине длины) < £Р(|Х-р|£Р). (Если А и В — события^для которых А является подмножеством В, то Р(А) £ Р(В).) Из этого следует, что X имеет абсолютную погрешность, равную самое большее р, с вероятностью 1 - а. Иными словами, если мы создадим 100 независимых 90-про- центных доверительных интервалов, использовав вышеприведенное правило оста- нова, можно ожидать, что у X будет абсолютная погрешность, равная самое боль- шее р, в 90 из 100 случаев; в 10 случаях абсолютная погрешность будет больше р. Предположим, что мы создали доверительный интервал для р, полученный на основании фиксированного количества повторных прогонов имитационной моде- ли п. Если допустить, что оценка 5®(п) совокупной дисперсии не будет (заметно) меняться по мере увеличения числа повторных прогонов, приближенное выраже- ние для общего количества повторных прогонов п*(Р), необходимого для получе- ния абсолютной погрешности р, задается формулой <(Р) = rcti-l,l-a/2 ^РЬ (9-2) (Двоеточие «:» читается здесь как «при условии что».) Количество повторных прогонов п’(Р) можно определить, многократно увеличивая i на 1, пока не будет получено значение i, при котором i £Р (Альтернативный вари- ант: п‘(Р) можно приближенно определить как наименьшее целое число i, при ко- тором выполняется условие i > &(ri)(z1_a/2/$)2.') Если п’(Р) > п, и мы выполним па (Р) - п дополнительных повторных прогонов имитационной модели, то оценка X, полученная на основании всех п*(Р) повторных прогонов, будет иметь абсолют- ную погрешность, приближенно равную р. Точность уравнения (9.2) зависит от того, насколько оценка дисперсии 5®(п) близка к Var(X). Пример 9.17. Возьмем модель банка из примера 9.14. Допустим, нам необходимо оце- нить ожидаемую среднюю задержку с абсолютной погрешностью 0,25 мин и доверитель- ным уровнем 90 %. По выполненным 10 повторным прогонам имитационной модели по- лучаем: n*(0,25) = min- i о,95^ £0,25 • = 16.
586 Глава 9. Анализ выходных данных для автономной системы Рассмотрим другой способ определения погрешности X. Если оценка X такова, что [X - ц|/| ц | - у, то считается, чтоХ имеет относительную погрешность у или ошибка, выраженная в процентах, в X составляет 100у. Предположим, мы выпол- няем повторные прогоны имитационной модели до тех пор, пока половина длины доверительного интервала, заданного формулой (9.1), деленная на |Х|, будет мень- ше или равна у (0 < у < 1). Это соотношение является оценкой действительной относительной погрешности. Тогда 1 - а » Р(|Х - ц|/[Х| £ половина длины/|Х|) < ^Р(|Х-р|йу|5) = -Р(|Х-цИу|Х-ц + ц|)^ ^Р(|Х-И|йу(|Х-р| + |ц|))" ~ y)Ix - N г(1н1)" “ Р(|Х - р|/Ы £ у/(1- у». [(половина длины/|Х|) < у] (прибавляем, вычитаем ц) (аксиома треугольника) (алгебра) (алгебра) Таким образом, у X будет относительная погрешность, равная самое большее у/(1- у), с приближенной вероятностью 1-а. Иными словами, если мы построим 100 независимых 90-процентных доверительных интервалов, использовав выше- приведенное правило останова, можно ожидать, что у X будет относительная погрешность, самое большее равная у/(1- у), в 90 из 100 случаев; в 10 случаях от- носительная погрешность будет больше у/(1- у). Обратите внимание на то, что мы получаем относительную погрешность, равную у/(1- у), а не у, поскольку оценива- ем |р| по |Х|. Далее вновь предположим, что мы построили доверительный интервал для ц, полученный на основании фиксированного количества повторных прогонов ими- тационной модели п. Если допустить, что наши оценки математического ожида- ния и дисперсии обеих генеральных совокупностей не будут (заметным образом) изменяться по мере увеличения числа повторных прогонов имитационной моде- ли, приближенное выражение количества повторных прогонов, л*(у), которое не- обходимо, для того чтобы получить относительную погрешность у, задается сле- дующей формулой • / ч ^>-1, l-a/2 (П) / * , пг (у) = тщ i £ п:----7------------<, у >, |Х(п)| (9.3) тде у' - у/(1 + у) — «скорректированная» относительная погрешность, необходи- мая для получения действительной относительной погрешности у. Здесь и* (у) вновь приближенно определяется как наименьшее целое число i, при котором вы- полняется условие i S S2 (n)[zI_a/2 / (y'X(n)]2. И в случае, если п* (у) > и и мы выполним и* (у) - и дополнительных повторных прогонов имитационной модели, то оценка Х(п), полученная на основании всех п*(у) повторных прогонов, будет иметь относительную погрешность, приближен- но равную у.
9.4. Статистический анализ при переходном режиме моделирования 587 Пример 9.18. Возьмем модель банка из примера 9.14. Допустим, что нам необходимо оценить ожидаемую среднюю задержку с относительной погрешностью 0,10 и довери- тельным уровнем 90 %. По 10 выполненным повторным прогонам имитационной моде- ли получаем, что <(0,10) = midi > 10/ £ 0,0э| = 27, I I где у'=0,1/(1+0,1) = 0,09. Уравнение (9.3) сложно использовать для получения оценки X с относитель- ной погрешностью у, поскольку Х(п) и 5°(п) могут не быть точными оценками соответствующих параметров генеральной совокупности. Если п*(у) больше необ- ходимого числа повторных прогонов имитационной модели, то могут быть выпол- нены ненужные повторные прогоны и возможна напрасная трата компьютерных ресурсов. И наоборот, если значение п'(у) недостаточно велико, оценках, получен- ная на основании п*(у) повторных прогонов имитационной модели, может ока- заться не настолько точной, как мы предполагаем. Далее мы представим последова- тельную процедуру (новые повторные прогоны имитационной модели добавля- ются каждый раз по одному) для получения оценки р с указанной относительной погрешностью, при применении которой выполняется ровно столько повторных прогонов имитационной модели, сколько необходимо. При использовании этой процедуры допускается, что Xlf Х2,... — последовательность независимых и одина- ково распределенных случайных величин, распределение которых не обязательно будет нормальным. Специальная задача процедуры состоит в получении оценки ц с относительной погрешностью у(0<у<1)и доверительным уровнем 100(1 - а) %. Изначально вы- бираем число повторных прогонов п0 > 2, пусть 6(n,a) = t„_lil_o/2^^ будет обычной половиной длины доверительного интервала. Тогда последова- тельная процедура будет иметь следующий вид. 0. Выполняем и0 повторных прогонов имитационной модели и задаем п = и0. 1. Вычисляем Х(п) и 6(n, a) по X,, Х2,..., Х„. 2. Если 5(n, a)/ |X(n) I <, у', используем Х(п) как точечную оценку для ц и завер- шаем работу. Соответственно Z(d, у ) - [Х(п) - 6 (п, а), Х(п) + 6 (п, а)] (9.4) является приближенным 100(1 - а)-процентным доверительным интервалом для ц с искомой точностью. В противном случае заменяем п на п + 1, выполняем дополнительный прогон имитационной модели и переходим к пункту 1. Обратите внимание, что с помощью процедуры вычисляется новая оценка Var(X) после каждого прогона и что общее число прогонов, необходимое для вы- полнения процедуры, является случайной величиной.
588 Глава 9. Анализ выходных данных для автономной системы Пример 9.19. Возьмем модель банка из примера 9.14. Допустим, что нам необходимо по- лучить оценку ожидаемой средней задержки с относительной погрешностью у - 0,10 и степенью доверительной вероятности 90 %. Воспользовавшись предыдущими - 10 повторными прогонами модели как отправной точкой, получаем число повторных прогонов при завершении равно 74; Х(74) - 1,76, №(74) - 0,67; 90-процентный доверительный интервал: [1,60; 1,92]. Необходимое число повторных прогонов имитационной модели равно 74, что значи- тельно превышает число 27, установленное в примере 9.18; это в основном связано с не- точной оценкой дисперсии, полученной на основании 10 повторных прогонов. Хотя описанная выше последовательная процедура интуитивно кажется очень удобной, возникает вопрос, обеспечивает ли она получение доверительного интер- вала с покрытием, близким к искомому 1 - а. В работе Лоу, Келтона и Коенига [Law, Kelton and Koenig, 1981] доказано, что если ц # 0 [и 0 < Var(X) < оо], то по- крытие доверительного интервала, заданного уравнением (9.4), будет сколь угод- но близко к 1 - а при условии, что искомая относительная погрешность достаточ- но близка к 0. Основываясь на данных, полученных для большого количества стохастических моделей и распределений вероятностей (в том числе вышеприве- денные модели системы массового обслуживания Af/Af/l и модели надежности), для которых известны истинные значения р, мы рекомендуем использовать после- довательную процедуру с п0 > 10 и у < 0,15. Установлено, что если следовать этим рекомендациям, оценка покрытия (на основании 500 независимых экспериментов для каждой модели) для искомого 90-процентного доверительного интервала ни- когда не будет меньше 0,864. Последовательная процедура для создания 100(1 - а)-процентного довери- тельного интервала для ц с незначительной абсолютной погрешностью р, разрабо- танная Чоу и Роббинсом [Chow and Robbins, 1965], аналогична описанной выше последовательной процедуре. Более того, можно доказать, что покрытие, которое обеспечивает эта процедура, будет сколь угодно близко 1 - а при условии, что ис- комая абсолютная погрешность р достаточно близка к 0. Тем не менее, поскольку определение «достаточно малой абсолютной погреш- ности* в очень большой степени зависит от модели и поскольку результаты, ка- сающиеся покрытия, полученные Лоу [Law, 1980], указывают на большую чувст- вительность процедуры к выбору значения р, мы не рекомендуем использовать процедуру Чоу и Роббинса. Рекомендации по использованию процедур В этом разделе мы приводим рекомендации относительно использования проце- дуры с фиксированным объемом выборки и последовательной процедуры для переходного режима моделирования. Если вы проводите исследовательские экс- перименты, для которых точность доверительного интервала не имеет решающего значения, рекомендуется пользоваться процедурой с фиксированным объемом выборки. Но если распределение величин X, очень отличается от нормального,
9.4. Статистический анализ при переходном режиме моделирования 589 а число повторных прогонов имитационной модели п недостаточно велико, дейст- вительное покрытие созданного доверительного интервала может оказаться не- сколько ниже желаемого. После исследовательского эксперимента, состоящего из п повторных прогонов имитационной модели, можно оценить затраты на выполнение одного прогона и дисперсию генеральной совокупности величины Xjt а затем получить с помощью уравнения (9.2) приблизительную оценку количества повторных прогонов имита- ционной модели па (Р), необходимого для получения оценки р с искомой абсолют- ной погрешностью р. Соответственно с помощью уравнения (9.3) можно получить приблизительную оценку количества повторных прогонов имитационной модели п*(у), необходимого для получения оценки р с искомой относительной погрешно- стью у. Иногда выбор Р или у должен согласовываться с затратами, связанными с выполнением необходимого количества повторных прогонов. Если вы в итоге ре- шите построить доверительный интервал с небольшой относительной погрешно- стью у, мы рекомендуем использовать последовательную процедуру с п0 £ 10 и у 0,15. Если вам понадобится доверительный интервал с относительной погреш- ностью у больше 0,15, рекомендуется несколько раз последовательно применить подход с фиксированным объемом выборки. В частности, вы можете оценить не- обходимое количество повторных прогонов п*(у), выполнить, скажем, на [п*(у) - - п]/2 больше повторных прогонов, а затем воспользоваться формулой (9.1) для построения доверительного интервала на основании существующих [п + п*(у)]/2 повторных прогонов. Если оценка относительной погрешности полученного в ре- зультате доверительного интервала все еще больше у', можно повторно получить оценку п* (у) на основании новой оценки дисперсии, а затем выполнить некоторую часть необходимых дополнительных повторных прогонов и т. д. Для построения доверительного интервала с небольшой абсолютной погрешностью Р мы опять-та- ки рекомендуем несколько раз последовательно использовать подход с фиксиро- ванным объемом выборки. Несмотря на затраты, связанные с каждым прогоном модели, мы рекомендуем все же выполнять по меньшей мере 3-5 повторных прогонов стохастической ими- тационной модели, для того чтобы определить изменчивость величин X;. Если это невозможно из-за ограничений, накладываемых временем или затратами, то тогда лучше не прибегать к исследованию системы посредством имитационного модели- рования вообще. 9.4.2. Оценка других показателей работы В этом разделе мы рассмотрим оценку показателей работы, отличных от средних значений. Как показано в следующем примере, сравнение двух систем по некото- рым средним характеристикам может привести к ошибочным выводам. Пример 9.20. Возьмем модель банка из примера 9.14, для которой коэффициент занято- сти р -1/(5 со) - 0,8. Сравним стратегию работы банка (к каждой кассе ведет отдельная очередь, возможен переход клиентов из одной очереди в другую) и стратегию, согласно которой для всех касс существует одна очередь.
590 Глава 9. Анализ выходных данных для автономной системы Для сравнения воспользуемся ожидаемой средней задержкой в очереди и ожидаемым средним по времени числом клиентов в очереди, которое определяется по формуле Е fQ(Z)«fc 0 г где Q(t) —число клиентов в очереди в момент времени t, а Т является временем работы банка (7> 8 ч). В табл. 9.4 показаны результаты выполнения одного прогона имитацион- ной модели для каждой стратегии. (Эти прогоны имитационной модели были выполне- ны так, чтобы время прибытия i-ro клиента (i “ 1,2,..., N) в банк было одинаковым для обеих стратегий работы банка и чтобы начало времени обслуживания i-ro клиента (i -1, 2,..., N) также было одинаковым для обеих стратегий.) Таким образом, при сравнении «средних характеристик системы» может показаться, что две стратегии равнозначны. Однако это, конечно же, не так. Поскольку клиенты не обязательно обслуживаются в порядке прибытия при стратегии нескольких очередей, можно ожидать, что при такой стратегии задержки клиентов в очереди будут значительно изменяться. В табл. 9.5 для обеих стратегий даны оценки ожидаемой доли клиентов, задержка которых попадет в интервалы, мин, [0,5), [5,10) [40,45). Оценки выполнены по двум упомянутым вы- ше прогонам имитационной модели. (Мы не оценивали дисперсию в ходе этих двух про- гонов, поскольку, как было отмечено в разделе 4.4, оценки дисперсии, полученные по коррелированным модельным выходным данным, являются в высшей степени смещен- ными.) Обратите внимание, что согласно табл. 9.5 клиент, вероятно, испытает более длительную задержку при стратегии нескольких очередей, чем при стратегии с одной очередью. В частности, если в день прибывает 480 клиентов, то при стратегии несколь- ких очередей ожидается, что у 33 из них будет задержка в очереди, равная 20 мин или больше, и соответственно при стратегии одной очереди такая задержка будет у 6 клиен- тов. (При больших значениях р различия между двумя стратегиями становятся еще большими.) Этот вывод, а также более справедливый характер стратегии одной очереди привели к тому, что многие организации, например банки и аэропорты, ввели у себя та- кую стратегию. Таблица 9.4. Результаты прогонов имитационной модели для двух стратегий работы банка: средние значения Оцениваемый показатель Оценка при пяти очередях при одной очереди Ожидаемое время работы, ч 8,14 8,14 Ожидаемая средняя задержка в очереди, мин 5,57 5,57 Ожидаемое среднее число клиентов в очереди 5,52 5,52 Таблица 9.5. Результаты прогонов имитационной модели для двух стратегий работы банка: доли задержек Интервал, мин Оценка ожидаемых долей задержек в интервале при пяти при одной очередях очереди 10,5) [5,10) 0,626 0,597 0,182 0,188
9.4. Статистический анализ при переходном режиме моделирования 591 Интервал, мин Оценка ожидаемых долей задержек в интервале при пяти очередях при ОДНОЙ очереди [Ю, 15) 0,076 0,107 • [15, 20) 0,047 0,095 [20, 25) 0,031 0,013 [25,30) 0,020 0 [30, 35) 0,015 0 [35,40) 0,003 0 [40,45) 0 0 Из данного примера, следует, что сравнение альтернативных систем или стра- тегий только на основании средних характеристик поведения системы иногда приводит к ошибочным выводам. Кроме того, ожидаемая доля может быть полез- ным системным показателем работы. В примере 9.16 описано получение точечной оценки и доверительного интервала для ожидаемой доли задержек. Теперь пока- жем, как выполнять подобный имитационный анализ для вероятностей и кванти- лей на примерах моделирования в переходном режиме. Пусть X будет случайной величиной, определенной в ходе повторного прогона имитационной модели (как описано в разделе 9.4.1). Допустим, нам необходимо оценить вероятность р •= Р(Х е В), где В — множество вещественных чисел. (Нап- ример, В может обозначать интервал [20, оо) в примере 9.20.) Выполните п незави- симых повторных прогонов. Пусть Ху, Хг,..., Хп независимые и одинаково распре- деленные случайные величины, полученные в результате п повторных прогонов, S - количество величин Xj, попадающих во множество В. Тогда S имеет биноми- альное распределение (см. раздел 6.2.3) с параметрами пир, а несмещенная точеч- ная оценка р определяется как Более того, доверительный интервал дляр может быть создан с помощью про- цедуры, описанной Велчем [Welch, 1983] и Коновером [Conover, 1980]. (См. также задачу 9.9.) Пример 9.21. Возьмем модель банка из примера 9.14. Предположим, что нам необходи- мо получить точечную оценку р-Р(Х<15), где X-max (£(£). В этом случае В — [0,15]. Мы выполнили 100 независимых повторных прогонов имита- ционной модели банка и получили р — 0,77. Следовательно, ожидается, что приблизи- тельно на протяжении 77 дней (из 100) максимальная длина очереди в течение дня бу- дет меньше или равна 15. Далее предполагаем, что нужно оценить «/-квантиль (100 q-я процентиль) хч распределения случайной величиной X (определение см. в разделе 6.4.3). Напри- мер, 0,5-квантиль — это медиана. Если Х(1), Х(2),..., Х(и) — порядковая статистика, соответствующая величинам Xj, полученным в ходе п независимых повторных
592 Глава 9. Анализ выходных данных для автономной системы прогонов имитационной модели, тогда точечной оценкой xq будет выборочная квантиль xq, определяемая по формуле } если nq — целое число; Хл , ь в противном случае. Может быть также найден доверительный интервал для xq [Conover, 1980, р. 111-116; Welch, 1983, р. 287-288;]. * Пример 9.22. Возьмем модель банка из примера 9.14. Предположим, что нам необходи- мо определить размер холла, чтобы в нем могла разместиться очередь к кассам. Пусть X — максимальная длина очереди, определенная в примере 9.21. Тогда нам может пона- добиться холл, способный вместить х0 95 клиентов, 0,95-квантиль X. По результатам 100 повторных прогонов имитационной модели, выполненных в предыдущем примере, мы получили Jto.95 “ ^(95) “ 20. Таким образом, если в холле будет место для 20 клиентов, этого окажется достаточно примерно для 95 дней из 100. Обратите также внимание, что *0,99 ” -Х(99) “ 23. В работе Коновера [Conover, 1980] рассматриваются границы допуска, пред- ставляющие интервал, в котором содержится определенная часть значений слу- чайной величины X (это выполняется с некоторым установленным доверитель- ным уровнем). 9.4.3. Выбор начальных условий Как уже шла речь в разделе 9.3, показатели работы при моделировании в переход- ном режиме явно зависят от состояния системы в момент времени 0, и потому сле- дует с осторожностью подходить к выбору соответствующих начальных условий. Предположим, что требуется оценить ожидаемую среднюю задержку всех клиен- тов, прибывающих в банк, ожидание в очереди которых завершается между 12.00 и 13.00 (период максимальной занятости системы). Если мы начнем моделирова- ние с условия отсутствия клиентов в системе (обычные начальные условия при моделировании систем массового обслуживания), это приведет к тому, что оценка средней задержки клиентов в очереди окажется смещенной, поскольку в полдень система, очевидно, будет испытывать ощутимую нагрузку. Рассмотрим два эври- стических метода решения данной проблемы, первый из этих методов широко применяется в моделировании (см. раздел 9.5.1). Обратимся к первому методу. Допустим, банк открывается в 9.00 и на этот мо- мент в нем нет клиентов. Начинаем моделирование с 9.00 и выполняем моделиро- вание для 4 ч работы системы. При оценке искомой ожидаемой средней задержки используются только задержки прибывших клиентов, ожидание в очереди кото- рых завершилось между 12.00 и 13.00. В ходе моделирования работы системы с 9.00 до 12.00 (переходный период работы) определяются подходящие условия для моделирования работы системы в полдень. Недостаток такого метода состоит в том, что 3 ч модельного времени не используются непосредственно для получе- ния оценок. Кто-то может прибегнуть к компромиссному варианту и начать моде- лирование с любого другого времени (например, с 11.00) и при отсутствии кдиен-
9.5. Статистический анализ установившихся параметров 593 тов в системе. Однако нет гарантии, что моделирование работы системы в полдень будет адекватно отображать реальные условия работы банка в это время. Альтернативный метод предполагает сбор данных по числу клиентов, присут- ствующих в банке на 12.00, в течение нескольких различных дней. Пусть р, будет долей таких дней, когда i клиентов (г - 0,1,...) присутствует в банке в полдень. То- гда мы моделируем работу банка с 12.00 до 13.00, а число клиентов, присутствую- щих в банке в 12.00, будет случайно выбрано из распределения {Д}. (Считается, что обслуживание всех клиентов, проходящих на обслуживание в 12.00, только что началось. Начиная обслуживание всех клиентов в 12.00 заново, мы получаем приближение к реальной ситуации в банке, поскольку фактически обслуживание таких клиентов уже частично завершилось. Однако влиянием такого приближе- ния можно пренебречь при длительности моделирования, равной 1 ч.) Если нужно выполнить несколько прогонов имитационной модели для работы системы с 12.00 до 13.00, то для каждого прогона получаем различные выборки из распределения {р{}. Величины Xjt полученные в результате прогонов, все еще яв- ляются независимыми и одинаково распределенными, так как начальные условия для каждого прогона выбираются независимо из одного и того же распределения. 9.5. Статистический анализ установившихся параметров Пусть Гц У2,... представляют выходной стохастический процесс, который получен в результате одного прогона моделирования в непереходном режиме. Предполо- жим, что Р(У{ <у) - F/y) -> F(y) - P(Y<, у) как i -> оо, где У — искомая установив- шаяся случайная величина с функцией распределения F. (В своих обозначениях мы не отразили зависимость F{ от начальных условий Z.) Тогда ф будет установив- шемся параметром, если он является характеристикой У, такой как E(Y), P(Y<.y), или квантили У. Сложность оценки ф состоит в том, что функция распределения У (для i - 1,2,...) отличается от F, поскольку, как правило, нельзя выбрать началь- ные условия I, которые бы являлись отражением «установившегося поведения». Это приводит к тому, что оценка ф, полученная на основании наблюдений Ylt У2,..., Y„, не является «представительной». Например, выборочное среднее Ут (ти) будет смещенной оценкой v-E(Y) для всех конечных значений т. Описанная проблема в литературе по имитационному моделированию называется проблемой начально- го переходного процесса или проблемой запуска. Пример 9.23. Приведем пример проблемы запуска. Рассмотрим процесс, который со- стоит из времени задержек в очереди D,, D2,.... для системы массового обслуживания M/M/i с р < 1 (см. пример 9.2). Согласно теории массового обслуживания можно дока- зать, что Р(Р{ <.у)-> P(D i у) = (1 -р) + р(1 - при i -> оо. Если число требований з, имеющихся на момент времени 0, равно 0, то П] - 0, а Е(О{) * * E(D) - d при любом г. Однако, если значение з выбирается в соответствии с установив- шимся числом распределения в системе [Gross and Harris, 1998, р. 57], тогда при всех значениях i P(Dj Sy)- P(D Sу) и E(DJ — d(см. задачу 9.11). Следовательно, в этом слу- чае нет начального переходного процесса.
594 Глава 9. Анализ выходных данных для автономной системы На практике установившееся распределение не известно, поэтому невозможно использовать вышеописанный метод инициализации. Методы для практического решения проблемы запуска рассматриваются в следующем разделе. 9.5.1. Проблема начального переходного процесса Допустим, нам необходимо оценить установившееся среднее v - E(Y), которое также определяется как v-ВтВД). Таким образом, переходные средние стремятся к установившемуся средне- му. Наиболее серьезное последствие проблемы начального переходного процесса, вероятно, состоит в том, что £[У(т)] * v при любом значении т [Law, 1983, р. 1010-1012). Метод, чаще всего применяемый для решения этой проблемы, на- зывается переходным периодом работы модели или удалением начальных данных. Его задача — удалить некоторое количество данных наблюдений, полученных в начале прогона имитационной модели, а для оценки v использовать только остав- шиеся данные наблюдений. Например, при наличии наблюдений Уп Y2,.... Ym часто предлагается использовать (1 < / < m - 1) как оценку v вместо Y (т). В целом можно ожидать, что оценка Y (т, I) смещена меньше, чем Y (т), поскольку данные наблюдений, близких к «началу» моделирования, могут оказаться не характерными для установившегося поведе- ния, что связано с выбором начальных условий. Так происходит с процессом Dt, Dit.... происходящем в модели системы массового обслуживания М/М/1 с s - 0, поскольку E(D;) возрастает монотонно до d, при i -> оо (см. рис. 9.2). Естественно, возникает вопрос, как выбрать переходной период работы (или количество данных, которые будут удалены) I. Нужно выбрать такое значение I (а также т), когда Е[К(т, /)] ° v. В том случае если выбрать слишком маленькие значения I и т, Е[У (т, Z)] будет существенно отличаться от v. Если I будет иметь большее значение, нежели требуется, тогда у Y (т, /) будет неоправданно большая дисперсия. Для выбора значения I предлагался целый ряд методов. Однако в своей работе Гафариан, Анкер и Морисаку [Gafarian, Ancker and Morisaku, 1978] опреде- лили, что ни один из методов, доступных на время ее написания, не зарекомендо- вал себя должным образом на практике. Келтон и Лоу [Kelton and Law, 1983] раз- работали хороший алгоритм для выбора значения I (и т), подходящий (то есть при его применении Е[У (т, /)] « v) для многих стохастических моделей. Однако теоретически эта процедура ограничена, поскольку в ее основе лежит допущение о том, что E(Y,) является монотонной функцией i. Наиболее простой и универсальный метод определения I — это графическая процедура, описанная Велчем [Welch, 1981, 1983]. Характерная цель этой про- цедуры — определить временной индекс /, для которого E(Y^) « v при i > I, где I является переходным периодом работы (что эквивалентно определению момента, когда кривая переходного среднего £( Yj) (для г - 1,2,...) «выравнивается» на уров-
9.5. Статистический анализ установившихся параметров 595 не v (см. рис. 9.1). Очень сложно определить значение I по одному прогону имита- ционной модели, что связано с неотъемлемой изменчивостью процесса Yt, Y2,... (рис. 9.10). Поэтому процедура Велча основана на п независимых повторных про- гонах имитационной модели и осуществляется посредством следующих шагов. 1. Выполните п повторных прогонов имитационной модели (п > 5), продолжи- тельность каждого из которых равна т (где т — большое число). Пусть Yfi пред- ставляет данные i-ro наблюдения в ходе)-го повторного прогона имитационной модели (j - 1, 2..п; i - 1, 2,..., т), как показано на рис. 9.8. Повторный прогон I ф Yilt Ya, У,* У14, ..У^а, У1>я_1( У11И > @ 121» Yj2, У23, У24, ...» 12.Ж-2» Уг.т-!» Y^m ’ ’ * * * ’ ' \ Шаг 1 Усредненный v v v v процесс NXI/ w-1 Шаг 2 ШагЗ Рис. 9.8. Усредненный процесс и скользящее среднее с w - 1, полученные на основании п повторных прогонов имитационной модели продолжительностью т 2. Пусть У t - E"/-i Yji/n_npn i- 1,2,..., т (см. рис. 9.8). Усредненный процесс Y 1( Y2, ... имеет средние Ё(У f) - Е( У) и дисперсии Var(Y() - Var( У,)/п (см. задачу 9.12). Следовательно, усредненный процесс имеет ту же кривую переходного средне- го, что и начальный процесс, но его график имеет лишь (1/п)-ю дисперсию. 3, Чтобы выровнять высокочастотные колебания в процессе Yu Y2,... (но сохра- нить нужные низкочастотные колебания или долговременную тенденцию), мы определяем скользящее среднее У ((w) (где w — это окно; w является положи- тельным целым числом из условия, когда w < [_щ/4J) следующим образом: №)= 1- если i = w +1,..., m-w; 2w + l *—(<-!) если i = l,..., w. 1 2i-l
596 Глава 9. Анализ выходных данных для автономной системы Поэтому, если i не очень близко к началу повторных прогонов модели, то Y Xw) является всего лишь простым средним 2w + 1 наблюдений усредненного про- цесса, центрированного по наблюдению i (см. рис. 9.8). Оно называется сколь- зящим средним, поскольку i перемещается во времени. 4. Создайте график Y,(w) для I— 1,2,..., т - w и выберите / как значение i, за кото- рым очевидно схождение процесса Y ,(w), Y2(w),... [Welch, 1983, р. 292]. Пример 9.24. Для большей наглядности допустим, что т-10, w = 2, У f = i при i = 1,2. 5 и У, = 6 при i —6,7,..., 10. Тогда 7,(2) - 1 У2(2) - 2 У3(2) - 3; У4(2) ~ 4 У5(2) - 4,8 У6(2) - 5,4; У7(2) - 5,8 У6(2) - 6. Перед тем как привести примеры применения процедуры Велча к реальной стохастической модели, мы дадим следующие рекомендации по выбору парамет- ров п, т и w. ♦ Сначала выполните и - 5 или 10 повторных прогонов имитационной модели (в зависимости от расходов на выполнение прогонов). Возьмите настолько большое значение т, насколько это целесообразно в практическом смысле. В частности, т должно быть гораздо больше ожидаемого значения / (см. раз- дел 9.5.2) и достаточно большим, чтобы обеспечить возникновение редких со- бытий (например, поломки станков) приемлемое количество раз. ♦ Создайте график y,(w) для нескольких значений окна w и выберите наимень- шее значение w (если таковое есть), при котором соответствующий график будет «достаточно ровным». Используйте этот график, чтобы определить дли- ну периода предварительной работы I. (Выбор I подобен выбору ширины ин- тервала ДЬ для гистограммы (см. раздел 6.4.2). Если значение w слишком маленькое, график У j(w) будет «неровным». Если w слишком большое, тогда наблюдения У,- окажутся слишком укрупненными, и по ним нельзя будет по- лучить надлежащее представление о форме кривой переходного среднего Е(У;) при i - 1, 2,.... ♦ Если не подходит ни одно значение w на шаге 3, выполните 5 или 10 допол- нительных повторных прогонов имитационной модели продолжительностью т. Выполните еще раз шаг 2, используя все данные по всем доступным повтор- ным прогонам. (При постоянном значении w график y,(w) будет становиться более «ровным» по мере увеличения числа повторных прогонов. Почему?) Основная трудность при использовании процедуры Велча состоит в том, что на практике необходимое число повторных прогонов п может оказаться довольно большим, если процесс У1( У2,... будет очень изменчивым. Пример 9.25. Рассмотрим небольшое предприятие, которое состоит из последовательно работающих обрабатывающего цеха и контрольного участка (рис. 9.9). Время между по- ступлениями на предприятие заготовок деталей распределено экспоненциально со сред- ним 1 мин. Время обработки детали на станке распределено равномерно в интерва- ле [0,65; 0,70] мин, а последующее время осмотра детали на контрольном участке распределено равномерно в интервале [0,75; 0,80] мин. Из осмотренных деталей 90 %
9.5. Статистический анализ установившихся параметров 597 признаются качественными и отправляются на склад; 10 % деталей имеют дефекты и от- правляются на повторную обработку. (Допускается, что размер обеих очередей неогра- ничен.) В обрабатывающем цехе иногда случаются поломки станков. Скажем, кален- дарный срок службы до поломки нового (или только что отремонтированного) станка распределен экспоненциально со средним 6 ч (см. раздел 13.4.2). Время ремонта распре- делено равномерно в интервале [8,12] мин. Если станок выходит из строя, когда на нем обрабатывалась деталь, то по завершении ремонта обработка этой детали начинается с того места, на котором она прервалась при поломке. Предположим, что изначально на предприятии не было деталей, и оно бездействовало. Рис. 9.9. Небольшое предприятие, состоящее из обрабатывающего цеха и контрольного участка Рассмотрим стохастический процесс Nit N2,..., где Ns — число деталей, производимых за i-й час. Предположим, мы хотим определить переходный период работы I, для того что- бы получить оценку установившейся средней производительности предприятия в час v - E(N) (см. пример 9.27). Мы выполнили п " 10 независимых повторных прогонов ими- тационной модели, продолжительность каждого т —160 ч (или 20 дней). На рис. 9.10 по- казан график усредненного процесса Nt для 1=1,2,..., 160. Убеждаемся в необходимости дальнейшего выравнивания графика и в том, что одного повторного прогона в целом не- достаточно для получения оценки I. На рис. 9.11, а и б показан график для скользящего среднего N^w) при двух значениях w — 20 и w = 30. По графику для w = 30 (более ровный график) мы выбрали переходный период работы 1= 24 ч. Заметьте, лучше выбрать слиш- ком большое значение I, чем слишком маленькое, поскольку наша задача состоит в полу- чении Е( Fj), близкого к v для 1 > I. (Мы решили допустить более высокую дисперсию для уверенности в том, что наша точечная оценка для v будет иметь небольшое смещение.) Рис. 9.10. Усредненный процесс для почасовой производительности небольшого предприятия
S9B Глава 9. Анализ выходных данных для автономной системы Пример 9.26. Рассмотрим процесс 0, ... для системы управления запасами из приме- ра 9.3. Предположим, что нам нужно определить установившееся среднее расходов в ме- сяц с -£(0 ~ Ц2,11.Мы выполнили п “10 независимых повторных прогонов имитаци- онной модели продолжительностью т - 100 мес. На рис. 9.12 изображен график для скользящего среднего C/w) при w “20, по которому мы выбрали йерйод предваритель- ной работы I - 30 мес. •. -у-
9.5. Статистический анализ установившихся параметров 599 Рис. 9.12. Скользящие средние с w - 20 для значений расходов в месяц в системе управления запасами В главе 13 показано, как процедуру Велча можно применить к более сложной системе. Учтите, что вариант процедуры Велча присутствует в пакете для имита- ционного моделирования производственных систем AutoMod. Галлахер, Бауер и Мейбек [Gallagher, Bauer and Maybeck, 1996] рассматривают альтернативный метод для определения периода предварительной работы на осно- вании фильтров Калмана. Шрубен [Schruben, 1982] разработал универсальную процедуру, основанную на использовании нормированного временного ряда (см. раздел 9.5.3), чтобы оп- ределить, содержат ли наблюдения У1+1, Ys+2, •••> (где s не должно равняться 0) начальное смещение по отношению к установившемуся среднему v = £( Y), то есть будет ли £( YJ * v, по крайней мере для одного i (где s +1 < i < $ + £). По своей струк- туре эта процедура является не столько алгоритмом для определения числа на- блюдений I, данные которых будут удалены, а скорее, проверкой, которая должна определить, есть ли в наборе данных наблюдений начальное смещение. Например, эту процедуру можно применить к усеченному усредненному процессу У/+1, У/+2,..., Ут, полученному в результате использования процедуры Велча, чтобы определить, остается ли в нем существенное смещение. Шрубен проверил свою процедуру на нескольких стохастических моделях с известным значением v и установил, что она обладает мощными возможностями по определению начального смещения. Вари- ант такой проверки на начальное смещение приводят Шрубен, Синх и Тьерни [Schruben, Singh and Tierney, 1983]. Вассилакопулос [Vassilacopoulos, 1989] пред- ложил использовать ранговый критерий для оценки наличия начального смеще- ния, проверка которого в применении к системе массового обслуживания IW/M/s дала обнадеживающие результаты. В примере 9.23 мы видели, что инициализация системы массового обслужива- ния M/M/i с установившегося числа распределения в системе привела к процессу Dit D2,... без начального переходного процесса. Стало быть, мы можем попытаться получить оценку установившегося распределения по «пробному» прогону, а затем сделать независимую выборку из этого вычисленного распределения и опреде- лить начальные условия для каждого рабочего прогона. Келтон [Kelton, 1989] применил такой подход к нескольким системам массового обслуживания, а также
600 Глава 9. Анализ выходных данных для автономной системы к компьютерной модели; во всех случаях состояние системы выражалось случай- ной целочисленной величиной. Было обнаружено, что случайная инициализация уменьшала длительность начального периода переходного процесса по сравнению с теми системами, моделирование которых начиналось с заданного состояния (то есть в системе массового обслуживания нет требований). Однако ко многим реальным системам, где состояние системы имеет многомерное распределение, этот метод применять труднее [Law, 1983, р. 1016; Murray, 1988]. Глинн [Glynn, 1988] рассматривает зависимый метод, при котором предыдущий прогон переход- ного периода используется для определения начальных условий при последую- щих повторных прогонах. 9.5.2. Использование метода репликации и удаления для получения оценки средних значений Допустим, мы стремимся получить оценку установившегося среднего v = £(У) процесса Ylt Y2,.... Существует шесть основных подходов к решению этой проблемы, которые рассматриваются в настоящем и следующих разделах. Однако основное внимание мы уделим методу репликации и удаления в силу следующих причин. 1. При правильном использовании этот метод дает достаточно хорошие статисти- ческие показатели. 2. Данный метод легче понять и реализовать, чем иные методы. (Это очень важно с практической точки зрения, так как многие проекты имитационного модели- рования имеют ограничения во времени, а ряд аналитиков не владеют знания- ми статистики, необходимыми для использования других сложных аналитиче- ских методов.) 3. Метод репликации и удаления применяется ко всем типам выходных парамет- ров (см. разделы Э.4-9.6). 4. Этот метод можно использовать для получения оценки нескольких различных параметров одной имитационной модели (см. раздел 9.7). 5. Данный метод применяется для сравнения различных конфигураций системы (об этом пойдет речь в главе 10). Теперь рассмотрим, как метод репликации и удаления используется для полу- чения точечной оценки и доверительного интервала для V. Проводимый анализ подобен анализу при моделировании в переходном режиме, только в этом случае для получения оценок используются наблюдения, не входящие в переходной пе- риод работы I в ходе каждого прогона имитационной модели. В частности, предпо- ложим, что мы выполнили п' повторных прогонов имитационной модели, длина каждого прогона равна tri наблюдений, где rrl существенно превышает период предварительной работы I, определенный по графическому методу Велча (см. раз- дел 9.5.1). Определим 1< , как и раньше. Пусть Xj определяется по формуле Ъ Для; = 1,2,...,п'. 7 т —I (Обратите внимание, что для Х} используются только те наблюдения из j-ro по- вторного прогона, которые соответствуют «устойчивому состоянию», а именно
9.5. Статистический анализ установившихся параметров 601 /+2> m-)- Тогда Л, являются независимыми и одинаково распределен- ными случайными величинами, для которых Е(Х?) » v (см. задачу 9.15), Х(п') — приближенная несмещенная точечная оценка для v, а приближенный 100(1- а)- процентный доверительный интервал для v определяется по формуле , (9.5) где Х(п’)и &(п') вычисляются с помощью уравнений (4.3) и (4.4) соответственно. Аргументом против применения метода репликации и удаления может слу- жить тот факт, что в нем используется п репликаций (пробных прогонов) для определения переходного периода работы I, а затем только rd- I наблюдений из других ri репликаций (рабочих прогонов) — для действительного анализа. Как правило, это не представляет особых трудностей в связи с относительно невысо- кой стоимостью компьютерного времени (см. раздел 9.1). В некоторых случаях возникает потребность использовать начальные п проб- ных прогонов длиной т наблюдений, как для того чтобы определить I, так и для то- го чтобы построить доверительный интервал. В частности, если т гораздо больше выбранного значения переходного периода работы I, тогда можно использовать начальные прогоны для решения обеих задач. Так как графический метод Велча является приблизительным, у небольшого числа наблюдений, не входящих в пере- ходной период работы, может быть существенное смещение относительно v. Од- нако если т гораздо больше I, эти смещенные наблюдения не окажут ощутимого влияния на общее качество (то есть отсутствие смещения) величины Xj (получен- ной на основании т-l наблюдений) или Х(п). Кроме того, с точки зрения стати- стики будет правильнее выполнять метод репликации и удаления с двумя незави- симыми множествами прогонов (см. задачу 9.16). Пример 9.27. Возьмем производственную систему из примера 9.25. Предположим, нуж- но получить точечную оценку и 90-процентный доверительный интервал для устано- вившейся средней производительности предприятия в час v “ E(N). На основании п “ 10 повторных прогонов продолжительностью т — 160 ч установлено (см. рис.9.11), что пе- реходный период работы Z = 24 ч. Поскольку т = 160 значительно больше I “ 24, восполь- зуемся этими же повторными прогонами для построения доверительного интервала. Пусть 160 Xj = Для j = I'2’ ---ЛО. Тогда точечную оценку и 90-процентный доверительный интервал для v можно опре- делить как v = Х(10) = 59,97 И Х(10) ± «9;о.95^ = 59,97 ± 0,46. Таким образом, ожидается, что небольшое предприятие будет производить в среднем около 60 деталей в час. Можно ли считать такую производительность экономически обоснованной? (См. задачу 9.17).
002 Глава 9. Анализ выходных данных для автономной системы Половина длины доверительного интервала, определенного с помощью метода репликации и удаления по формуле (9.5), зависит от дисперсии A,, Var(Xy), кото- рая неизвестна при выполнении первых п повторных прогонов. Поэтому, если мы выполняем заданное число повторных прогонов имитационной модели, получен- ная в результате половина длины доверительного интервала может быть достаточ- но или недостаточно малой для определенной цели. Однако нам известно, что половина длины может быть уменьшена приблизительно в два раза, если мы выполним в четыре раза больше повторных прогонов (см. раздел 9.4.1). 9.5.3. Другие методы получения оценки средних значений В этом разделе мы представим полный анализ процедур получения точечной оцен- ки и доверительного интервала для установившегося среднего v “ £(У) выходного процесса Yt, Y2,Следующие определения v являются эквивалентными у = 1нп£(У£) i-xo и с вероятностью 1 j^y v = lim ——. m-н» т Информацию по этим вопросам вы найдете в работах Бенкса, Карсона и Нель- сона (Banks, Carson and Nelson, 1996], Братли, Фокса и Шрейджа [Bratley, Fox and Schrage, 1987], Фишмана [Fishman, 1978], Лоу [Law, 1983] и Велча [Welch, 1983]. В литературе по имитационному моделированию предлагалось две общих стра- тегии получения точечной оценки и доверительного интервала для v: 1. Процедуры с фиксированным объемом выборки. Выполняется один прогон ими- тационной модели с произвольной фиксированной длиной, затем одна из ряда доступных процедур используется для создания доверительного интервала по имеющимся в наличии данным. 2. Последовательные процедуры. Длина одного прогона имитационной модели последовательно увеличивается, пока не будет создан «приемлемый» довери- тельный интервал. Используется несколько методов, определяющих время прекращения прогона имитационной модели. Процедуры с фиксированным объемом выборки Известны шесть процедур с фиксированным объемом выборки [Law, 1983; Law and Kelton, 1984]. Метод репликации и удаления (см. раздел 9.5.2) основан на вы- полнении п независимых «коротких» повторных прогонов длиной т наблюдений. В нем возможно смещение в точечной оценке v (см. раздел 9.1). Пять других мето- дов основаны на «длительных» прогонах имитационной модели, при которых мо- гут возникать проблемы со смещением в оценке Var(v) дисперсии точечной оценки v. Свойства шести методов представлены в табл. 9.6. Дальше мы подробно рас- смотрим пять новых методов.
9.5. Статистический анализ установившихся параметров 603 Таблица 9.6. Свойства процедур получения оценки установившихся средних значений Метод Число повторных прогонов Наиболее серьезная проблема Потенциальные сложности Репликации и удаления п (п £ 2) V Выбор переходного периода работы, 1 Общих средних 1 Var(v) Выбор размера групп k для получения некоррелированных общих средних Авторегрессионный 1 Var(v) Качество авторегрессионной модели Спектрального анализа 1 Var(v) Выбор Числа ковариационных интервалов q Регенеративный 1 Var(v) Существование циклов с «небольшой» средней длиной Нормированного временного ряда 1 Var(v) Выбор размера групп k Для метода общих средних, как и для метода репликации и удаления, нужно по- лучить независимые наблюдения, чтобы формулы из главы 4 можно было исполь- зовать для построения доверительного интервала. Но поскольку метод общих средних основан на выполнении одного длительного прогона, он пройдет через пе- реходной период только один раз. Допустим, Уп У2, - ~ ковариационный стацио- нарный процесс (см. раздел 4.3), для которого Е(У{) - v при всех значениях i. (Либо допустим, что первые 7 наблюдений были удалены, и мы получаем процесс Yt+i, Yt+2,.... Если v существует, в целом процесс У/+1, У/+2,... будет приближенно ковариа- ционным стационарным, при условии, что I имеет достаточно большое значение.) Предположим, мы выполняем прогон имитационной модели продолжительно- стью т, а затем поделим полученные в результате наблюдения Уь У2. У„ на п групп длиной k. (Примем, что т - nk.) Следовательно, группа 1 состоит из_на- блюдений У1(..., Yk, группа 2 состоит из наблюдений У*+1,..., Уа и т. д. Пусть У,(й) (для которого,/ -1,2,^.., н) будет выборочным (или общим) средним k наблюдений в j-й группе, и пусть_У(п, k) - У?- (k)/n=УЪ Y} /т будет суммарным выбороч- ным средним. Здесь У(n, k) используется как точечная оценка v. ( У/Л) для общего выборочного среднего будут играть ту же роль, что и Xj при использовании метода репликации и удаления в разделе 9.5.2.) Если выбрать достаточно большой размер группы k, можно показать (при от- носительно мягких условиях), что Уj{k) будут приближенно некоррелированными [Law and Carson, 1979]. Предположим, мы можем выбрать достаточное большое значение k, чтобы У/Л) имели приближенно нормальное распределение. Это ре- ально, поскольку существуют центральные предельные теоремы для различных типов коррелированных стохастических процессов [Anderson, 1994, р. 427]. Кроме того, можно доказать, что выборочное среднее первых k задержек D (k) для систе- мы массового обслуживания М/М/1 будет иметь приближенно нормальное рас- пределение, когда k имеет достаточно большое значение [Law, 1994]. Однако, если
604 Глава 9. Анализ выходных данных для автономной системы Yj(k) являются некоррелированными, но имеют совместное нормальное распреде- ление, из задачи 4.10 следует, что У/fe) будут независимыми и нормально распре- деленными. Обозначим эти два свойства как (Р1). Поскольку допускается, что процесс У2, - является ковариационным стаци- онарным с Е( Kj) - v, легко вывести, что У/fe) имеют то же среднее v и ту же диспер- сию (см. уравнение (4.7)). Обозначим эти свойства как (Р2). Из свойств (Р1) и (Р2) следует, что Yj(k) являются нормально распределенны- ми случайными величинами с одним и тем же средним и дисперсией. Поскольку нормально распределенная случайная величина полностью определяется своими средним и дисперсией Y,{k) являются одинаково распределенными со средним v. Обозначим это свойство как (РЗ). Поэтому, если размер групп k достаточно велик, из свойств (Р1) и (РЗ) следует, что есть основания рассматривать Y^k) так, как ес- ли бы они были независимыми и одинаково распределенными величинами со средним V. Тогда точечная оценка и приближенный 100(1 - а)-процентный дове- рительный интервал для v получаются путем подстановки Xj “ Yj(k) в уравнения (4.3), (4.4) и (4.12). Основной причиной возникновения ошибок при использовании метода общих средних может стать размер групп k, если его выбрать слишком малым. Это приве- дет к тому, что Yj(k), возможно, окажутся сильно коррелированными, а &(п)/п — сильно смещенной оценкой Var[X(n)] - Уаг[У(п, /г)] (см. раздел 4.4). В частности, если величины У4 положительно коррелированы (как это часто случается на прак- тике), Yj(k) тоже будут положительно коррелированными, в результате чего мы получим заниженную оценку дисперсии и слишком малый доверительный интер- вал. Таким образом, доверительный интервал обеспечит покрытие v с вероятно- стью нижё требуемого значения 1 - а. В литературе существовало несколько вариантов метода общих средних. Меке- тон и Шмейсер [Meketon and Sgjnneiser, 1984] предложили метод перекрывающих- ся общих средних, при котором Y(n,k) вновь являлось точечной оценкой v, но в вы- ражении для Var[F(n,&)] были задействованы все т - k + 1 группы размером k. Бишак, Келтон и Поллок [Bischak, Kelton and Pollock,1993] изучали метод взве- шенных общих средних, для которых весовой коэффициент w{ присваивается i-му наблюдению в группе, а сумма w, составляет 1. При использовании обычного мето- да общих средних w, = 1/k для всех значений i. Фокс, Голдсман и Свейн [Fox, Goldsman and Swain, 1991] рассматривают метод разделенных промежутками об- щих средних, при котором между группами, действительно используемыми для анализа, вставляется разделитель размером 5. [Schmeiser, 1982; Sargent,Kang and Goldsman, 1992; Damerdji, 1994]. Полный перечень работ по методам общих сред- них приведена в книге Шмейсера и Сонга [Schmeiser and Song, 1996]. Вместо того чтобы пытаться достичь независимости данных, в двух следующих методах используются оценки структуры автокорреляции основного стохастиче- ского процесса с целью получить оценку дисперсии выборочного среднего и по- строить доверительный интервал для v. Допустим, мы получили наблюдения Yit Y2,..., Yn в результате одного прогона имитационной модели, пусть У (т) У; /т будет точечной оценкой v. При использовании авторегрессионного метода, разра-
9.5. Статистический анализ установившихся параметров 605 ботанного Фишманом [Fishman, 1971, 1973а, 1978], допускается, что процесс Yb Y2,... является ковариационным стационарным с £(У«) “ V, его можно представить с помощью авторегрессионной модели р-го порядка t^-v) = 6<, (9.6) j-o вде b0 - 1, a {eJ — последовательность случайных некоррелированных величин с общим средним 0 и дисперсией ст2. Допустим, порядок авторегрессии р известен и t|C7.|<«>. (9.7) Тогда можно доказать, что Var[K(m)J -> ст2b} )2, при т -> а>. Исходя из оцен- ки ковариаций Q по данным наблюдений Ylt ..., Ym , Фишман [Fishman, 1973а] предлагает процедуру для определения порядка р и получения оценок bj (где) “ 1, 2,.... р) и ст2, где р является оценкой порядка. Пусть b = 1 + Ь}. Тогда для боль- ших значений т оценка Уаг[У(т)] и приближенный 100(1 - а) -процентный дове- рительный интервал для v определяются по формулам л — СТ2 Valty(m)] = ^±F и F(m)±t?1_a/Jv^[y(m)], где выражение для оценки степеней свободы f определяется как ? mb 2±(Р~2]УЬ, Юан и Нельсон [Yuan and Nelson, 1994] предлагают альтернативный подход для оценки порядка авторегрессии р и степеней свободы f Их метод обеспечивает лучшее покрытие, нежели метод Фишмана для системы массового обслуживания М/М/1 с р = 0,9. Эти подходы зависят от того, будет ли авторегрессионная модель хорошим представлением произвольного стохастического процесса. Шрайбер и Эндрюс [Schriber and Andrews, 1984] приводят обобщение авторегрессионного метода, предусматривающее наличие компонентов со скользящим средним. При использовании метода спектрального анализа также допускается, что про- цесс Yt, Y2,... будет ковариационным стационарным с Е(У;) - v, но больше никаких допущений, подобных приведенному в уравнении (9.6), для него не требуется. Допуская, что процесс Уь У2,... будет ковариационно-стационарным, можно дока- зать, что Со + 2^(1 -j/m)C) Va.r[Y(m)] =----. (9.8)
606 Глава 9. Анализ выходных данных для автономной системы Данное уравнение, по сути, такое же, как уравнение (4.7). В методе спектраль- ного анализа приведенное в нем соотношение используется как отправная точка для оценки VarJY (я»)]. Объясним происхождение названия метода. Если соотно- шение (9.7) выполняется, то т Уаг[У (пг)] -» 2Ttg(0) при т -> «ю, где g(x) называется спектром процесса при частоте т и определяется по преобразованию Фурье g(r) - (2л)-1Х“/-«, (^exp(-i-g) при | т | < л и i “ 4-1. Таким образом, для больших значений т дисперсия Уаг[У (m)] « 2ng(0)/m, а получение оценки Var[Y(m)] можно рас- сматривать как получение оценки спектра при нулевой частоте. Для того чтобы получить оценку Уаг[У (ш)], непосредственно представляющую саму себя, Ср уравнении (9.8) заменяется оценкой вычисленной по процессу У1( У2, .... Ут и уравнению (4.9). Однако для больших значений т w.j, приблизительно равных т, ковариация (Добычно близка к 0 и убудет иметь большую дисперсию, поскольку оценку получим на основании незначительного числа наблюдений. По- этому ряд авторов предложили использовать оценки следующего вида: Л _ Со+г^с)^. Уаг[У (ш)] =--------------, т где должно быть определено q (с вычисленным числом оценок Cf в формуле оцен- ки), а весовая функция Wq(j) предназначена для улучшения выборочных свойств VarfF(m)J Тогда приближенный 100(1 - а)-процентный доверительный интервал для v определяется по формуле y(m)±tz>1_a/2^V^r[y(m)], где f зависит от т, q и выбора весовой функции [Fishman, 1969, 1973а; Law and Kelton, 1984]. Этот метод сложен для применения. Более того, не существует определенной процедуры для выбора значений q [Damerdji, 1994; Heidelberger and Welch, 1981a, b, 1983]. Регенеративный метод представляет совершенно иной подход к моделирова- нию, что, в свою очередь, приводит к использованию других методов построения доверительного интервала для V. Суть их состоит в определении случайных мо- ментов времени, в которые процесс в вероятностном смысле «начитается заново», то есть регенерируется, и использовании этих точек регенерации с целью полу- чить случайные величины, к которым можно применять аналитические процеду- ры классической статистики для получения точечных и интервальных оценок для v. Этот метод был разработан одновременно Крейном и Иглехартом [Crane and Iglehart, 1974а, b, 1975] и Фишманом [Fishman, 1973b, 1974]. В своем описании мы будем следовать разработкам первых двух авторов. Предположим, что для выходного процесса Yit У2,... существует последователь- ность случайных индексов 1 £ Bi < В2 <,..., именуемых точками регенерации, где процесс в вероятностном смысле начинается заново, то есть процесс {Ув +м YBj+hl, i - 1, 2,...} имеет одинаковое распределение для каждого j - 1, 2, ...; кроме того,
9.5. Статистический анализ установившихся параметров 607 допускается, что процесс, начиная с каждого значения Bjt не будет зависеть от про- цесса, предшествующего В;. Часть процесса между двумя последовательными зна- чениями Bj называется циклом регенерации; можно также доказать, что последова- тельные циклы являются независимыми и одинаково распределенными точными копиями друг друга. В частности, независимыми и одинаково распределенными являются сопоставимые случайные величины, определяемые по последовательным циклам. Пусть - В,- для; = 1,2,..., а математическое ожидание £(Л})< со. Ес- ли Z, = У;, случайные векторы Ц - (Zjt Njfipne Ат—это транспонированный вектор А) являются независимыми и одинаково распределенными, при условии что £| Zj \ < со, а установившееся среднее v (см. задачу 9.21) задается формулой E(Z) E(NY Пример 9.28. Рассмотрим выходной процесс, состоящий из задержек Du D2,..., для сис- темы массового обслуживания с одним устройством. В этой системе время между посту- плениями и время обслуживания представлено независимыми и одинаково распреде- ленными величинами, обслуживание проводится в Порядке FIFO и р < 1. Индексы требований, поступающих, когда требования в системе отсутствуют, являются точками регенерации (см. рис. 9.13). Пусть Nj — общее число требований, проходящих обслужи- вание вj-м цикле, Zj “ YfyDt — суммарная задержка всех требований, проходящих об- служивание в j-м цикле. Тогда установившееся среднее задержки d задается следующей формулой: d - E(Z)/E(N). L(t)k Рис. 9.13. Реализация процесса числа требований в системе {1(0, t £ 0} для системы массового обслуживания с одним устройством обслуживания Заметьте, что индексы требований, поступивших, когда в системе находилось I требова- ний (Z2:1, значение I фиксировано), не будут точками регенерации процесса D2, по- скольку распределение оставшегося времени обслуживания окажется разным для тре- бований, поступающих друг за другом, когда в системе зафиксировано I требований. Но если время обслуживания представить экспоненциально распределенными случайны- ми величинами, эти индексы будут точками регенерации, что определяется отсутствием последействия у экспоненциального распределения (см. задачи 4.26 и 9.22). Далее мы объясним, как получить точечную оценку и доверительный интервал для v с помощью регенеративного метода.
608 Глава 9. Анализ выходных данных для автономной системы Предположим, что мы моделируем процесс У,, У2,... при п' циклах регенерации и получаем в результате следующие данные: 21» —» ^Я' > Каждая из этих последовательностей состоит из независимых и одинаково рас- пределенных случайных величин. В целом, однако, Zj и N; не являются независи- мыми. Точечная оценка для v определяется как v , Z(n') N(n') Хотя Z(n') и N(n') являются несмещенными оценками E(Z) н E(N) соответст- венно, v(ri) не является несмещенной оценкой v (см. приложение 9А). Однако справедливо утверждение, что v(n') является строго состоятельной оценкой V, то есть v(n') -> V, при п' -> оо (с вероятностью 1)( см. задачу 9.21). Пусть ковариационная матрица вектора Ц = (Zjt Nj)r будет представлена как V _ °11 °12 "I , ^12 °22 _| где, например, а12 - E{[Zj - Е(%)] [Л£ - E(Nj')]}, и пусть Vj - Zj - v2^. Тогда Vj являются независимыми и одинаково распределенными случайными величинами со сред- ним значением 0 и дисперсией «Д - си - 2vo12 + v2o22 (см- задачу 4.13). Поэтому, если 0 < < оо, из классической центральной предельной теоремы (см. теоре- му 4.1 в разделе 4.5) следует, что >N(0,1) при п' -> оо, (9.9) где —-—> обозначает сходимость по распределению. Допустим также, что Л г- , я , -U(n')][Uy -U(n')f S(«')= ?“<”,> =” LCT12(”) CT22(«)J п’-1 будет оценкой ковариационной Матрицы, а (я') = &и («') -Жя')б,12 («') +!?(«' )]2 &и (я') будет оценкой <Д,, полученной на основании п' регенеративных циклов. Можно доказать, что a*v (п') —> <Д, при ri —> оо (с вероятностью 1). Следовательно, в урав- нении (9.9) можно заменить оценкой cfyn') [Chung, 1974, р. 73]. Разделив зна- менатель на N(n'), получаем ...-Д >N(0,1) /&у(я')/{я'[Мя')]2} При п' -> ОО.
9.5. Статистический анализ установившихся параметров 609 Поэтому если число циклов п' достаточно велико, приближенный (что касает- ся покрытия) 100(1 - а)-процентный доверительный интервал для v определяется по формуле <>(п>)±г1-“<2.1&у(я,уя . (9.10) N(«) Такой регенеративный метод построения доверительного интервала для v на- зывается классическим методом. Известен метод ^складного ножа» (см. приложе- ние 9А), являющийся альтернативным для регенеративного метода построения доверительного интервала для v. Сложность использования регенеративного метода на практике состоит в том, что в реальных имитационных моделях может не быть регенеративных точек или (даже если они есть) ожидаемая длина цикла может оказаться слишком большой. Поэтому смоделировать окажется реальным только незначительное количество циклов (в указанном случае доверительный интервал, определяемый по форму- ле (9.10), не будет обоснованным). Например, есть потребность с помощью моде- лирования получить оценки установившегося среднего общей задержки в очереди для сети, состоящей из k систем массового обслуживания, объединенных последо- вательно. (Требование, покинувшее систему массового обслуживания i (где i = 1, 2,..., k - 1) переходит в систему массового обслуживания i + 1.) Тогда точками ре- генерации для процесса Dlt D2,... (где D, — общая задержка i-ro поступившего тре- бования) являются индексы требований, поступающие в первую систему массово- го обслуживания, когда во всей сети нет ни одного требования. Если системы массового обслуживания, составляющие сеть, очень загружены, а обычно так и бывает, точек регенерации для такой модели будет очень мало и они будут нахо- диться далеко друг от друга [Crane and Lemoine, 1977]. Метод нормированного временного ряда [Schruben, 1983а] предполагает, что про- цесс Уь Y2, ... является строго стационарным при Е(У) “ v для всех :, а также фи-смешанным. Строго стационарный означает, что совместное распределение У<1+,-, У;2+у,..., Y^+j не зависит oij для всех индексов времени i1( i2,..., i„. (Если v су- ществует, тогда процесс Yl+l, Yt+2,... будет почти строго стационарным, при усло- вии, что I имеет достаточно большое значение). Собственно говоря, Yt, Y2,... явля- ются фи-смешанными, если У; и ^становятся независимыми по мере увеличения значения j [Billingsley, 1968, р. 166]. Предположим, мы выполняем один прогон имитационной модели продолжительностью т и делим У„ У2,..., У„на п групп раз- мером k (где т = пй). Пусть У/£) будет выборочным средним А наблюдений в j-й группе. Суммарное выборочное среднее У(т) — это точечная оценка для v. Более того, если т имеет достаточно большое значение, то У(т) будет иметь приближен- но нормальное распределение со средним т и дисперсией т2/т, где т2 = lira mVar[y(m)]. Пусть
610 Глава 9. Анализ выходных данных для автономной системы Для фиксированного числа групп п, А будет асимптотически (при k оо) рас- пределена т2 раз как величина с распределением «хи-квадрат» с п степенями сво- боды и асимптотически независима от Y (т). Поэтому для больших значений k мы можем рассмотреть величину [У(т)-у]/7т2/т Y(rri)-v у1(А/т2 )/п ^А/тп как такую, что имеет t-распределение с п степенями свободы; приближенный 100(1 - а)-процентный доверительный интервал для v определяется как Y(,m)±tnl_a/2yIA/(mn). Основные ошибки при использовании метода нормированного временного ряда возникают при выборе очень малого размера группы k [Schruben, 1983а]. Заметьте, этот метод основывается на той же теории, что и проверка Шрубена на начальное смещение (рассматривалась в разделе 9.5.1). Дополнительную информацию о ме- тоде нормированного временного ряда, в том числе и об альтернативных форму- лировках доверительного интервала, можно найти в работах Глинна и Иглехарта [Glynn and Iglehart, 1990], Голдсмана, Мекетона и Шрубена [Goldsman, Meketon and Schruben, 1990], Голдсмана и Шрубена [Goldsman and Schruben, 1984]; Сард- жента, Канга и Голдсмана [Sargent, Kang and Goldsman, 1992]. Поскольку пять методов определения доверительного интервала с фиксиро- ванным объемом выборки (представленных в этом разделе) зависят от допуще- ний, которые не будут строго выполняться при реальном моделировании, нужно посмотреть, как эти методы будут функционировать на практике. Сначала пред- ставим результаты, полученные по 400 независимым имитационным эксперимен- там для системы массового обслуживания М/М/1 с р = 0,8 (X = 1 и со = 5/4), где в каждом эксперименте перед нами стояла задача построить 90-процентный дове- рительный интервал для установившейся средней задержки d - 3,2 с помощью всех пяти процедур. Не зная, как окончательно установить общий размер выборки т для метода общих средних, авторегрессионного метода, метода спектрального анализа и метода нормированного временного ряда, мы произвольно выбрали т = 320,640,1280 и 2560. Используя регенеративный метод, можно доказать, что E(N) = 1/(1 - р) = 5 для системы массового обслуживания М/М/\ с р = 0,8 (см. за- дачу 9.25). Поэтому мы выбираем число циклов регенерации п'= 64,128,256 и 512, так что в среднем во всех процедурах используется одинаковое число наблюдений, то есть т - n'E(N). Более того, мы рассматриваем как классический метод построе- ния доверительных интервалов, так и метод «складного ножа». Для методов об- щих средних и нормированного временного ряда можно выбрать число групп и = - 5,10 и 20. Степени свободы/для метода спектрального анализа были выбраны так, чтобы / + 1 - п, где / относится к числу оценок ковариации q в ковариацион- ном выражении по q - 1,33m//[Law and Kelton, 1984]. В табл. 9.7 приводится часть из 400 доверительных интервалов, обеспечивающих покрытие d для всех 48 рас- смотренных выше случаев. (Все результаты взяты из работы Лоу и Келтона [Law and Kelton, 1984], кроме результатов для метода нормированного временного ря- да, любезно предоставленных Девидом Голдсманом из компании Georgia Tech.).
9.5. Статистический анализ установившихся параметров 611 Так, при т = 320 и п = 5 для метода общих средних (когда каждый доверитель- ный интервал основывался на пяти группах размером 64) 69 % из 400 доверитель- ных интервалов обеспечивали покрытие d, что значительно меньше искомых 90 % (при фиксированном т оценка покрытия для метода общих средних уменьшается при увеличении п, при этом общее среднее становится более коррелированным, что приводит к более смещенной оценке дисперсии выборочного среднего). Таблица 9.7. Оценки покрытия, полученные на основании 400 экспериментов для системы массового обслуживания М/М/1 с р - 0,8 «•(«) МОС МНВР MCA АРМ РМ и п /+ 1 5 10 20 5 10 20 5 10 20 К СН 320 (64) 0,690 0,598 0,490 0,520 0,340 0,208 0,713 0,625 0,538 0,688 0,560 0,670 640 (128) 0,723 0,708 0,588 0,628 0,485 0,318 0,760 0,735 0,645 0,723 0,683 0,728 1280 (256) 0,780 0,740 0,705 0,730 0,645 0,485 0,783 0,770 0,745 0,753 0,705 0,748 2560 (512) 0,798 0,803 0,753 0,798 0,725 0,598 0,833 0,808 0,773 0,755 0,745 0,763 Примечание. Здесь и в табл. 9.8: МОС — метод общих средних, МНВР — метод нормированного времен- ного ряда, MCA — метод спектрального анализа, АРМ — авторегрессионный метод, РМ — регенератив- ный метод, К — классический метод, СН — метод <складного ножа». Далее мы представим результаты 200 независимых имитационных экспери- ментов для модели компьютерной системы (рассматривалась в разделе 2.5) с раз- делением времени и с 35 терминалами [Law and Kelton, 1984]. Наша цель — по- строить 90-процентные доверительные интервалы для установившегося времени ответа г = 8.25 [Adiri and Avi-Itzhak, 1969]. Мы выбираем тип, как описано вы- ше, начиная с E(N) » 32 для модели компьютера, и приняли п'-= 10, 20, 40 и 80. В табл. 9.8 представлена часть 200 доверительных интервалов, которые покрыли г для каждого из 36 случаев (результаты для нормированного временного ряда не были получены). Хотя модель компьютерной системы физически гораздо слож- нее системы массового обслуживания М/М/1, с помощью метода общих средних с п - 5 получаем оценку покрытия, близкую к 0,90 для т - 640 (см. табл. 9.8). Зна- чит, систему массового обслуживания М/М/1 с р - 0,8 гораздо сложнее изучить статистически, несмотря на ее очень простую структуру. Эти два примера свиде- тельствуют о том, что статистическое поведение выходных данных не зависит от сложности структуры модели. Таблица 9.8. Оценки покрытия, полученные на основании 200 экспериментов для модели компьютерной системы с разделением времени !"(») МОС MCA АРМ РМ п /+1 5 10 20 5 10 20 К СН 320(10) 0,860 0,780 0,670 0,880 0,815 0,720 0,680 0,545 0,725 640(20) 0,890 0,855 0,790 0,870 0,870 0,820 0,805 0,730 0,830 1280(40) 0,910 0,885 0,880 0,910 0,910 0,905 0,890 0,830 0,865 2560(80) 0,905 0,875 0,895 0,910 0,885 0,900 0,885 0,870 0,915 Исходя их эмпирических результатов, представленных в табл. 9.7 и 9.8, а также учитывая данные содержащиеся в работах Лоу [Law, 1977], Лоу и Келтона [Law
612 Глава 9. Анализ выходных данных для автономной системы and Kelton, 1984], Сарджента, Канга и Голдсмана [Sargent, Kang and Goldsman, 1992], мы пришли к следующим выводам относительно процедур с фиксирован- ным объемом выборки. 1. Если работать со слишком малым общим размером выборки т (или п'), дейст- вительное покрытие доверительного интервала для всех существующих проце- дур с фиксированным объемом выборки (в том числе и метода репликации и удаления) может оказаться гораздо меньше требуемого. Это не удивительно, поскольку установившейся параметр определяется как предел, когда продол- жительность моделирования (общее количество наблюдений) стремится к бес- конечности. 2. Выбор «подходящего» значения т (или п') в большой мере зависит от особен- ностей каждой модели, поэтому он не может осуществляться произвольно. При использовании метода общих средних были получены хорошие результа- ты с п = 5 и тл “ 640 для модели компьютерной системы, а о системе массового обслуживания М/М/1, даже при таком большом значении т, как 2560, этого сказать нельзя. З.При фиксированном значении т методы общего среднего, нормированного временного ряда и спектрального анализа дают наилучшее покрытие довери- тельного интервала при небольших значениях я и/. Последовательные процедуры Рассмотрим процедуры, в которых продолжительность моделирования, необходи- мая для создания приемлемого доверительного интервала для установившегося среднего v, определяется последовательно. Необходимость таких последователь- ных процедур подтверждается вышеприведенными результатами, полученными с помощью процедур с фиксированным объемом выборки. Если задана слишком малая продолжительность прогона, нельзя полагаться ни на одну процедуру, при использовании которой продолжительность прогона имитационной модели зада- ется перед началом моделирования, чтобы построить доверительный интервал, обеспечивающий покрытие v с желаемой вероятностью 1 - а. Специалисту может также понадобиться определить продолжительность моде- лирования, достаточную для получения оценки v с заданной абсолютной погреш- ностью Р или относительной погрешностью у (см. раздел 9.4.1). Величина продолжи- тельности прогона имитационной модели, необходимой для решения этих задач, как правило заранее неизвестна, поэтому можно прибегнуть к некоторой процеду- ре, позволяющей многократно увеличивать продолжительность прогона имитаци- онной модели. В работах Лоу и Келтона [Law, 1982; Law and Kelton, 1984] дается обзор после- довательных процедур, существовавших на тот момент. Авторы определили три процедуры, хорошо себя зарекомендовавшие относительно получаемого покры- тия. Фишман [Fishman, 1977] разработал процедуру, основанную на использова- нии регенеративного метода и правила останова для абсолютной погрешности. Лоу и Келтон установили, что эта процедура обеспечила приемлемое покрытие
9.5. Статистический анализ установившихся параметров 613 для 9 из 10 стохастических моделей, проверенных, когда р = 0,075 v. Недостаток процедуры Фишмана состоит в том, что она основана на регенеративном методе, ограничивающем ее применение для решения реальных проблем. Лоу и Карсон [Law and Carson, 1979] разработали последовательную процеду- ру, основанную на использовании метода общих средних и правила останова для относительной погрешности. В своей работе Лоу и Келтон определили, что с по- мощью этого метода можно достичь приемлемого покрытия всех 10 стохастиче- ских моделей, если у - 0,075. На примере процесса Db D2,... для системы массового обслуживания М/М/Х с р = 0,8 оценка покрытия для номинального 90-процентно- го доверительного интервала равнялась 0,87 %, а средняя продолжительность про- гона по завершении составила 75 648. Хейдельбергер и Велш [Heigelberger and Welch, 1983] предложили последова- тельную процедуру, основанную на применении метода спектрального анализа и критерия останова для относительной погрешности. Исходя из полученных ими ограниченных данных, можно сделать вывод, что процедура может давать хоро- шие результаты относительно покрытия, если у = 0,05. Дюрш и Шрубен [Duersch and Schruben, 1986] предложили последовательную интерактивную процедуру, основанную на применении метода нормированного временного ряда и правила останова для относительной погрешности. Сама проце- дура довольно интересна, но никаких эмпирических результатов относительно ее эффективности предоставлено не было. Глинн и Витт [Glynn and Whitt, 1992b] приводят удовлетворительные условия для последовательной асимптотически обоснованной процедуры, то есть процедура дает покрытие 1 - а по мере того, как продолжительность прогона имитационной модели стремится к бесконечности. Если вам необходимо построить доверительный интервал для установившего- ся среднего v, который, вполне вероятно, будет иметь покрытие, близкое к 1 - а, следует воспользоваться одной из тщательно проверенных последовательных процедур. Эти процедуры сложнее изучать и использовать, нежели, к примеру, ме- тод репликации и удаления из раздела 9.5.2. Для них также могут потребоваться большие размеры выборки, и их будет нелегко приспособить к ситуации с не- сколькими оцениваемыми показателями. 9.5.4. Оценка других показателей работы Как мы убедились, среднее не всегда оказывается подходящим показателем эф- фективности работы системы (см. раздел 9.4.2). Значит, нам следует рассмотреть оценку установившихся параметров ф, отличных от среднего v = E(Y). Допустим, нам требуется оценить установившуюся вероятность р = P(Y е В), где В — это множество вещественных чисел. На примере сети связи можно опреде- лить установившееся значение вероятности того, что задержка сквозной передачи сообщения меньше или равна 5 с (£ = {все вещественные числа 5 5}). Оказывается, оценка вероятности р — это всего лишь частный случай оценки среднего v. Пусть установившаяся случайная величина Z определяется как _ Г1 если У е В; [0 в противном случае.
614 Глава 9. Анализ выходных данных для автономной системы Тогда P(Y е В ) = P(Z~ 1) - 1 - P(Z - 1) + 0 - P(Z-0) - E(Z). Таким образом, оценка р эквивалентна оценке установившегося среднего E(Z) (рассматривалось в разделах 9.5.2 и 9.5.3). В частности, пусть _ f 1 если Yt 6 В; • [0 в противном случае для i = 1,2,..., где Yu Y2,... — исходный интересующий нас стохастический процесс. Следовательно к выходному процессу Zt, Z2,... можно, например, применить метод репликации и удаления, чтобы получить точечную оценку и доверительный ин- тервал для E(Z) = р. Обратите внимание, что переходной период работы для (би- нарного) процесса Zt, Z2,... может отличаться от периода предварительной работы для исходного процесса Уь У2,.... Большой интерес представляет и другой параметр установившегося распреде- ления — ^-квантиль, yq, определенная в разделе 6.4.3. То есть yq — значение у, для которого P(Y <, yq) = q, где У — установившаяся случайная величина. В вышеупо- мянутом примере с сетью связи, может понадобиться получить оценку 0,9-кванти- ли установившейся задержки сквозной передачи сообщения. И концептуальное, и численное решение проблемы оценки квантилей (что касается количества на- блюдений, необходимых для получения заданной точности) гораздо сложнее вы- полнить, нежели решить проблему оценки установившегося среднего. Более того, большинство процедур для оценки квантилей основываются на порядковой ста- тистике и для хранения и сортировки наблюдений требуется память. Для оценки квантилей предлагалось несколько процедур, основанных на при- менении метода общих средних (или расширений), метода спектрального анализа и регенеративного метода [Law, 1983; Heidelberger and Lewis, 1984]. Недостаток этих процедур состоит в том, что они все используют фиксированный размер вы- борки, который определяется несколько произвольно. Если для размера выборки указать небольшое значение, покрытие полученного в результате доверительного интервала будет меньше искомого. Раатикайнен [Raatikainen, 1990] предложил процедуру для оценки квантилей с использованием алгоритма Р2 Джайна и Хламтака [Jain and Chlamtac, 1985], которому не требуется память для хранения и сортировки наблюдений. Алгоритм представляет собой последовательную процедуру, основанную на применении метода спектрального анализа и правила останова для относительной погрешно- сти. Раатикайнен проверил эту процедуру на нескольких стохастических моделях компьютерных систем и получил достаточно хорошие результаты относительно покрытия. Однако данную процедуру трудно реализовать. 9.6. Статистический анализ установившихся циклических параметров Предположим, что выходной процесс Yit У2,... не имеет установившегося распре- деления. Допустим наличие возможности определить соответствующий цикл, при
9.6. Статистический анализ установившихся циклических параметров 615 котором процесс Yf, Yf,... имеет установившееся распределение Fc, где Y? — слу- чайная величина, определенная по i-му циклу (см. раздел 9.3). Если Yc ~ Fc, то нам требуется оценить некоторые характеристики Vе, такие как среднее v с - Е( Yс) или вероятность P(YC£ у). Разумеется, оценка параметров установившегося цикла — всего лишь частный случай оценки установившегося параметра, поэтому все мето- ды из раздела 9.5 применимы в рассматриваемом случае, за исключением исполь- зования циклической случайной величины^ вместо Yf. Например, с помощью ме- тода Велча можно установить период предварительной работы, а затем применить метод репликации и удаления для получения точечной оценки и доверительного интервала для vc. Пример 9.29. Рассмотрим снова небольшое предприятие из примера 9.25, но предполо- жим, что на нем существует получасовой обеденный перерыв, начинающийся через 4 ч после начала каждой 8-часовой смены. Перерыв останавливает процесс проверки, но за- готовки деталей продолжают поступать и обрабатываться станком-автоматом. Если Nf— это производительность в течение i-ro часа, тогда процесс Nit N2,... не имеет установив- шегося распределения (см. пример 9.11). Однако можно ожидать, что он является пе- риодичным с продолжительностью цикла, равной 8 ч. Для подтверждения этого мы выполнили п - 10 повторных прогонов имитационной модели продолжительностью тп~ 160 ч (20 смен). На графике усредненного процесса ЛГ,-(где: “ 1,2 160), представ- ленном на рис. 9.14, можно увидеть, что процесс Nt, N2,... действительно имеет цикл про- должительностью 8 ч. Рис. 9.14. Усредненный процесс для значений производительности в час (модель небольшого предприятия с обеденными перерывами) Предположим, что Nf— средняя производительность в i-м 8-часовом цикле, а процесс Nf, Nf,... имеет установившееся распределение. Нам нужно получить точечную оценку и 99-процентный доверительный интервал для установившейся ожидаемой средней производительности в ходе одной смены vc — E(N^') с использованием метода реплика-
616 Глава 9. Анализ выходных данных для автономной системы ции и удаления. Пусть будет средней производительностью в i-м цикле j-го повтор- ного прогона имитационной модели (j - 1,2,.... 10; i -1,2,20), a N? при i-1,2,..., 20 — соответствующим усредненным процессом (то есть N? = Xjti график которого изображен на рис. 9.15. Рис. 9.15. Усредненный процесс для значений средней производительности в час за одну смену (модель небольшого предприятия, работающего с обеденными перерывами) Рассмотрев график, мы можем сделать вывод, что нам требуется получить еще более ровную кривую. Поэтому строится график для скользящего среднего N?(yv) (из проце- дуры Велча) для обоих окон, w - 3 и w - 6, смен (рис. 9.16, о и б). По графику для и - 6 (кривая которого более ровная) выбирается период предварительной работы I - 5 смен или 40 ч. (Сравните это значение I со значением, полученным в примере 9.25.) Пусть для j - 1, 2.10. В таком случае точечная оценка и 99-процентный доверительный интервал для vc опре- деляются как vc = ХС(10) = 60,24 и Хс(10)± »60,24±0,91, который также содержит 60 (см. задачу 9.27).
9.7. Множественные оценки показателей работы 617 Рис. 9.16. Скользящие средние для значений средней почасовой производительности за одну смену (модель небольшого предприятия, работающего с обеденными перерывами): а — w-З; б — w - 6 9.7. Множественные оценки показателей работы В разделах Э.4-9.6 были рассмотрены процедуры построения доверительного ин- тервала для одного показателя работы, тогда как в большинстве реальных систем требуются сведения по нескольким показателям. Предположим, что Is — это 100(1 - aj-процентный доверительный интервал для показателя работы р, (где
618 Глава 9. Анализ выходных данных для автономной системы $ - 1, 2,...» k) (ц, могут быть показателями работы системы как при переходном режиме моделирования, так и при установившемся режиме). Тогда для определе- ния вероятности того, что все k доверительных интервалов одновременно содержат соответствующие истинные характеристики, выполняется следующее выражение (см. задачу 9.31) Р(щ els для всех 5 = 1,2, £ 1 -jTa, (9.11) независимо от того, будут ли I, независимыми. Этот результат, известный как не- равенство Бонферрони, имеет большое значение для имитационного моделирова- ния. Например, вы создаете 90-процентные доверительные интервалы, то есть а, “ 0,1 при всех значениях $ для 10 различных показателей работы. Только в этом случае можно утверждать: вероятность того, что каждый из 10 доверительных ин- тервалов содержит истинные характеристики, будет больше или равна 0. Следова- тельно, нельзя особенно полагаться на любые заключения, сделанные в ходе тако- го моделирования. В литературе по статистике эта проблема описана как проблема множественных сравнений. Дальше мы представим ее практическое решение для случаев, когда k имеет не- большое значение. Если вам нужно, чтобы общий доверительный уровень, связан- ный с k доверительными интервалами, составлял по меньшей мере 100(1 - а) %, выберите значения as так, чтобы £*=1 а. (Здесь не обязательно, чтобы значения а, были одинаковыми. Значения as, соответствующие более важным характери- стикам, могут быть меньшими.) Поэтому имеется возможность построить 10 дове- рительных интервалов (99-процентных) и получить общий доверительный уро- вень по меньшей мере 90 %. Но если использовать процедуру с фиксированным объемом выборки, доверительные интервалы будут больше, чем вначале. Если использовать последовательную процедуру, понадобится больше данных для за- данного множества k относительных погрешностей. По этой причине мы не реко- мендуем указывать k > 10. При очень большом количестве оцениваемых показателей работы единствен- ным выходом из положения является создание обычных 90- или 95-процентных доверительных интервалов, но при этом нужно помнить, что один или несколько таких доверительных интервалов, вероятно, не будут содержать своих истинных характеристик. Пример 9.30. Возьмем модель банка с пятью кассами и одной очередью из примера 9.1. В табл. 9.9 приведены результаты использования 10 повторных прогонов имитационной модели (заканчивающееся моделирование) и формулы (9.1) для создания 96,667-про- центного доверительного интервала для каждого из оцениваемых показателей д £ 4(0,5) так что общий доверительный уровень будет равен по крайней мере 90 %.
9.7. Множественные оценки показателей работы 619 Таблица 9.9. Результаты выполнения 10 повторных прогонов имитационной модели для банка с пятью кассами и одной очередью Рабочие характеристики Точечная оценка 96,667-процентный доверительный интервал о 1,97 2,03 0,85 [1,55; 2,40] [1,59; 2,47] [0,80; 0,90] Пример 9.31. Для модели небольшого предприятия из примера 9.25 получаем точечные оценки и доверительные интервалы установившейся средней почасовой производитель- ности vNn установившегося среднего времени пребывания детали в системе vr с общим доверительным уровнем, равным по меньшей мере 90 %. Устанавливаем доверительный уровень каждого отдельного интервала 95 %. Воспользовавшись 10 повторными прого- нами имитационной модели из примера 9.27, создаем график скользящего среднего 7’,(и') (i “1,2,...) для процесса, состоящего из значений времени пребывания детали в сис- теме Tlt Т2,..., чтобы определить для него переходный период работы (в этом случае Т{ — время пребывания в системе i-й детали). Поскольку характер кривой очень изменчив, выполняем 10 дополнительных повторных прогонов продолжительностью 160 ч и ис- пользуем данные всех 20 повторных прогонов для анализа. На рис. 9.17, а изображен график для скользящего среднего почасовой производительности Nj(w~) при w - 30, а на рис. 9.17, б — график скользящего среднего времени пребывания детали в системе Г« “ w при w - 1200. (Заметим, что число наблюдений 7] при прогоне имитационной модели продолжительностью 160 ч является случайной величиной с приближенным средним 9600, поэтому для анализа используем минимальное количество наблюдений для любо- го из 20 прогонов, которое составляет 9407.) На рис. 9.17, а и б выбираем переходные пе- риоды работы lN- 24 ч и 1Т- 2286 значений времени пребывания соответственно. Следу- ет, однако, обратить внимание, что 2286 значений времени пребывания соответствуют приблизительно 38 ч. Поскольку 24 и 2286 гораздо меньше, чем 160 и 9407, воспользуем- ся этими же повторными прогонами имитационной модели, чтобы построить довери- тельные интервалы. Пусть для j - 1, 2,..., 20 у - у _ 1-2287 > 136 ’ > 7121 • Тогда точечные оценки и 95-процентные доверительные интервалы для vNn vr опреде- ляются как vx“ Х(20) - 60,03, vr- У(20) - 6,16 мин, Х(10) ± 0,эт5^ = 60,03 ± 0,39;
620 Глава 9. Анализ выходных данных для автономной системы У(10)±^;О.эт5^= 6,16 ±0,35. Следовательно, у нас есть доверительная вероятность, равная по меньшей мере 90 %, что vN и vr попадают в интервалы соответственно [59,56; 60,42] и [5,81; 6,51]. I Рис. 9.17. Скользящие средние для небольшого предприятия: а — w - 30 для значений почасовой производительности; б — w “ 1200 для значений времени пребывания детали в системе Дополнительные методы создания доверительных интервалов (или областей) для нескольких показателей работы рассматриваются в книге Чарнеса [Charnes, 1995].
9.8. Временные графики важных переменных 621 9.8. Временные графики важных переменных Из этой главы мы узнали, как получать точечные оценки и доверительные интер- валы для нескольких различных показателей работы, акцентируя внимание на усредненных выходных данных. Хотя полученные характеристики подходят для различных случаев, может возникнуть потребность в более точном определении динамического изменения эффективности работы системы во времени. Это ка- сается ситуации, когда характеристики системы (например, число рабочих) изме- няются как функция времени. В таких ситуациях разобраться в динамическом поведении системы в течении короткого периода может помочь анимация (см. раз- дел 3.4.3), но посредством анимации нельзя получить записи (которые можно бы- ло бы легко интерпретировать) об эффективности работы системы в ходе всего моделирования. Построив графики для одной или нескольких ключевых перемен- ных в ходе моделирования, мы будем иметь представление о динамическом пове- дении системы в течение длительного периода. Например, имея график размера очереди, изменяющегося во времени, можно получить информацию: способно-ли соответствующее устройство (или устройства) обслуживания обеспечить нужную эффективность работы, какое помещение требуется для размещения очереди, ка- ков размер очереди. В приведенном ниже примере рассказывается об использова- нии временных графиков. Дополнительные сведения об их применении содержат- ся в главе 13 (см. также задачу 9.28). Пример 9.32. Рассмотрим небольшое предприятие, работающее с обеденными переры- вами, которое описано в примере 9.29. На рис. 9.18, а и б с помощью графиков показано, как распределяются детали в очереди к станку и в очереди к контролеру; данные собраны с 30-минутными интервалами времени на основании первых 10 повторных прогонов имитационной модели. Обратите внимание на периодичность показаний графика коли- чества деталей в очереди к контролеру, связанную с получасовым обеденным перерывом. 50 - и 25 - а Рис. 9.18. Временные графики числа деталей в очереди, построенные на основе данных, собранных с 30-минутными интервалами времени (прогон 1) для модели небольшого предприятия: а — очередь к станку
622 Глава 9. Анализ выходных данных для автономной системы б Рис. 9.18. Временные графики числа деталей в очереди, построенные на основе данных, собранных с 30-минутными интервалами времени (прогон 1) для модели небольшого предприятия (продолжение)', б — очередь к контролеру Приложение 9А Отношения математических ожиданий и оценки методом «складного ножа» Большая часть этой главы касается получения оценки математического ожидания отдельной случайной величины X, то есть Е(Х). Но как свидетельствуют следую- щие примеры, существует множество ситуаций, когда может понадобиться оценка такого отношения математических ожиданий, как E(Y)/E(X). 1. При использовании регенеративного метода в разделе 9.5.3 мы убедились, что установившиеся параметры можно выразить как отношение двух математиче- ских ожиданий. 2. При моделировании военных действий в примере 9.5 иногда требуется оценить соотношение E(R)/E(B), в котором R — число потерь «красных» сил, В — число потерь «синих» сил. 3. Пусть при моделировании банка в примере 9.14 Р = Хтг Д будет общей за- держкой всех клиентов, прошедших обслуживание за день. Наша задача — получить оценку E(P/N), интерпретируемую как математическое ожидание средней задержки клиента в очереди. В этом случае математическое ожидание относится ко всем возможным дням. Однако мы попробуем получить оценку средней задержки всех клиентов в очереди в ходе продолжительного периода, и эта задержка, как мы докажем, будет равна E(P)/E(N). Оценки соотношения математических ожиданий, как правило, являются сме- щенными. Дальше мы рассмотрим метод получения менее смещенной точечной оценки, а также альтернативного доверительного интервала.
Задачи 623 Предположим, что нам нужна оценка соотношения ф - Е( Y)/E(X) по данным Уь У2 Y„ и Xlt Х2 Х„, где Xt — независимые и одинаково распределенные слу- чайные величины, Y{ — независимые и одинаково распределенные случайные ве- личины, Cov(TJ, Xj) - 0 при i *j. Классическая точечная оценка ф определяется по формуле $с(л) =У(я)/ Х(п) (см. информацию о регенеративном методе, касаю- щуюся классического доверительного интервала для ф, в разделе 9.5.3). Дальше мы рассмотрим метод -«складного ножа» для получения точечной оценки и дове- рительного интервала для ф [Miller, 1974; Iglehart, 1975]. Сначала определяем j”! Og = «Фс (я) - - l)2^— для g - 1, 2 п. i*g Затем находим точечную оценку методом «складного ножа» для ф по формуле (я) = 6g /п. Такая оценка в целом будет смещена меньше, нежели оценка фс(л) Пусть Тогда можно доказать [Miller, 1974], что Ф,(я)-ф ф --- —tn—>N(0,1) при п -> да. Л-(я)/и Таким образом мы получаем 100(1 - а)-процентный доверительный интервал $.(п)±г1 -а/2 (”)/я> созданный с помощью метода «складного ножа», для ф. (Эмпирические результаты, касающиеся относительной эффективности довери- тельных интервалов, полученных классическим методом и методом «складного ножа», см. в разделе 9.5.3.) Задачи 9.1. Обоснуйте эвристически, что сопоставимые выходные случайные величины, полученные в результате прогонов имитационной модели с использованием различных случайных чисел, будут независимыми. 9.2. Возьмем станок, время работы которого до поломки распределено экспонен- циально со средним 1/Х. Предположим, что время ремонта станка распреде- лено экспоненциально со средним 1/<о. Пусть У(£) будет состоянием станка в момент времени t при t > 0, где K(0-{J если станок работает в течение времени t, в противном случае.
624 Глава 9. Анализ выходных данных для автономной системы Тогда {У(0, t 0} — это стохастический процесс с непрерывным временем. Более того, можно доказать [Ross, 1997, р. 318-320], что Р(У(0 = 1|У(0) = 1) = -А- е"(х+ш)‘ + 1 Х+ю Х+ю и P(Y(t) = 1|У(0) = 0) = e-(K+ffl)t + —— . ' л+со л+со Следовательно, распределение У(0 зависит как от t, так и от У(0). Допустив, что в этих уравнениях со, вычислите установившееся распределение У(0. Зависит ли оно от У(0)? 9.3. Обратимся к примеру 9.9. Допустим, что условие, приведенное в пункте б нарушается. В частности, предположим, что рабочим нужно 20 мин, чтобы убрать инструменты в конце смены, а новым рабочим требуется 20 мин для настройки своих инструментов в начале следующей смены. Останется ли распределение процесса Nlt N2установившимся? 9.4. Предположим, что в примере 9.9 нужно получить оценку установившегося среднего общего времени пребывания детали в системе. Могут ли возникнуть проблемы при использовании нашего подхода к моделированию производст- венной системы? 9.5. Почему определение нужного количества касс в модели банка отличается от определения требований к оборудованию в модели компьютерной системы или системы связи (см. пример 9.10)? 9.6. Возьмем пример 9.11. Почему процесс Nlf N2,..., состоящий из значений про- изводительности системы в час, имеет установившееся распределение? 9.7. Какой тип моделирования (переходной или непереходной) больше подходит для приведенных ниже систем? Для случаев с переходным моделированием определите завершающее событие Е. Для случаев с непереходным моделиро- ванием определите, будет ли искомый параметр установившимся или уста- новившимся циклическим. А. Рассмотрим систему телефонной связи, в которой поступающий звонок может быть задержан перед выделением линии связи. Предположим, нам нужно получить оценку средней задержки 100-го поступающего звонка, ^ioo)- Б. Военная система управления запасами (см. раздел 1.5) работает в течение продолжительного периода мирного времени. Допустим, что системные параметры (например, распределение времени между возникновением спроса) не изменяются во времени. Нас интересует выходной процесс Си С2,.... для которого Ct — это общие расходы в течение i-ro месяца. Каким будет показатель средних расходов? В. Система производства пищевых продуктов, согласно производственному графику, производит товар в течение 13 дней, а на 14-й день полностью освобождается. Затем составляется новый производственный график, 2-не- дельный цикл повторяется и т. д. Наша задача — получить оценку сред- ней производительности в течение цикла.
Задачи 625 Г. Компания занимается воздушными перевозками грузов и обеспечивает ноч- ную доставку посылок. Самолеты с посылками, начинают прибывать в уз- ловой аэропорт приблизительно в 23.00. Посылки выгружают и сортиру- ют на складе в соответствии с почтовым индексом их места назначения. Посылки с одинаковыми почтовыми индексами грузят в один самолет. По- следний самолет покидает аэропорт приблизительно в 5.00. Желательно получить оценку среднего (для отбывающих самолетов) количества вре- мени, на которое самолеты опаздывают с вылетом. Д. Производственная система функционирует в одинаковых условиях 7 дней в неделю. Предположим, что 6 станков работают в первые две смены в те- чение каждого дня, в третью смену работают только 4 станка. Пусть Nb N2,... будет искомым выходным процессом, для которого N(— это число де- талей, производимых в ходе t-й смены. Нас интересует показатель сред- ней производительности. Зависит ли ваш ответ от соотношения между интенсивностью поступления деталей и интенсивностью обработки для отдельного станка? 9.8. В небольшом предприятии (пример 9.25) система работает 24 ч/сут в течение 5 дней, затем полностью освобождается. Следовательно, мы имеем дело с мо- делированием в переходном режиме продолжительностью 120 ч. Выполните пять независимых повторных прогонов имитационной модели, получите то- чечную оценку и постройте 95-процентный доверительный интервал для средней производительности в неделю. Сколько приблизительно повторных прогонов имитационной модели понадобится, чтобы получить абсолютную погрешность, равную 50 %, и относительную погрешность, равную 5 %? 9.9. Пусть р будет искомой вероятностью при моделировании в переходном ре- жиме (см. раздел 9.4.2). Определите независимые, одинаково распределен- ные случайные величины Уь У2,..., У„ для которыхp^Y(я), используйте эти величины Yj в уравнениях (4.3), (4.4) и (4.12), чтобы вывести один возмож- ный доверительный интервал для р. Докажите, что оценку дисперсии, опре- деляемую по уравнению (4.4), можно записать как р(1 - р)/(п - 1). 9.10. Обратимся к примеру 9.1 и воспользуемся данными 10 повторных прогонов имитационной модели, представленными в табл. 9.1, чтобы получить точеч- ную оценку для медианы (то есть, 0,5-квантиль) распределения средней за- держки в течение дня. Как эта оценка соотносится с выборочным средним из примера 9.14? 9.11. Для системы массового обслуживания Л4/Л//1 с р < 1 из примера 9.23 предпо- ложим, что число требований, присутствующих в системе на момент прибы- тия первого требования, имеет следующее дискретное распределение: р(х) = (1 -р)р* для X - 0, 1, ... , которое является установившимся распределением числа требований в сис- теме. Вычислите функцию распределения и ее среднее. В этом случае можно доказать, что D{ при 1^2 имеет такое же распределение. 9.12. Докажите, что для процедуры Велча из раздела 9.5.1 EfY,) - £(У() и Уаг(У,) - - Уаг(У,)/я.
626 Глава 9. Анализ выходных данных для автономной системы 9.13. Допустим, что Ylt У2,... — это ковариационный стационарный процесс, а р, < 1 при i & 1. Докажите, что для процедуры Велча Уаг[У«(м>)] < Уаг(У,). 9.14. Предположим, что Ylt У2,... — выходной процесс с установившимся средним v и что У(ти) — это обычное выборочное среднее^полученное на основании тп наблюдений. Рассмотрим^тостроение графика Y(m) как функцию т, пусть Г будет точкой, за которой У(т) ощутимо не изменяется. Можно ли считать Г подходящим переходным периодом работы если £(У;) « v при i > I', и не будет ли Г слишком большим? Почему? 9.15. Рассмотрим метод репликации и удаления из раздела 9.5.2. Докажите, что E(XJ) ~ v. Назовите две причины, по которым доверительный интервал, за- данный формулой (9.5), является всего лишь приближенным относительно покрытия. 9.16. Рассмотрим метод репликации и удаления из раздела 9.5.2, основанный на использовании того же множества повторных прогонов имитационной моде- ли, в применении к определению периода предварительной работы I и созда- нию доверительного интервала. Будут ли полученные в результате величины Xj действительно независимыми? 9.17. Обратимся к примеру 9.27. Какой будет установившееся средняя производи- тельность в час, если система вполне определена в том отношении, что р < 1 как для станка, так и для контролера? 9.18. Рассмотрим стохастический процесс непрерывного времени, для которого {(2(0. t £ 0}, где Q(0 — число требований в очереди в момент времени t. Пред- положим, нам нужно получить оценку установившегося среднего по времени числа требований в очереди Q (см. приложение 1Б для одного определения) с помощью метода общих средних, основанного на одном прогоне имитаци- онной модели продолжительностью т единиц времени. Рассмотрите два под- хода к использованию метода общих средних для получения точного числа т основных дискретных наблюдений Qi, <2а» Оп>т величин Q, будут поделены на группы для создания л общих средних. 9.19. Если У„ У2,... - ковариационно стационарный процесс, докажите, что для ме- тода общих средних С,(£) - Соу[У/Л), Yj+l(k)] определяется по формуле С,(*) = § где С,- Соу(П Ум). 9.20. Пусть ylt У2,... будет ковариационно стационарным процессом. Для метода общих=средних пусть pt(k) = Сог[У/&), У>+1(^)], b(n, k) — будет таким, что ДУафУ(я,Л)]} = Ъ{п,k) Уаг[У(^Л)| Докажите, что если р,(Л) -> 0 (для i - 1, 2.......п - 1), как k -> со, то Е{УафУ(я, Л)]} -> Уаг[У(л, Л)] при k —> оо. Подсказка: сначала докажите, что |я/ b(n,k) = ±— l+2§(l-i/n)Pj(*) м___________. л-1 -1
Задачи 627 9.21. Для регенеративного метода докажите, что v - E(Z)/E(N). (Подсказка: обра- тите внимание, что где п' — число циклов регенерации, М(п*) — общее число наблюдений (слу- чайная величина) в п' циклах. Пусть п' —> оо, применим строгий закон боль- ших чисел (см. раздел 4.6) к обеим сторонам вышеприведенного уравнения.) Подтвердите также, что Ф(п’) - Z(n')/M”f) v> ПРИ я' -> °о (с вероятностью 1), так что 0(п') — это строго состоятельная оценка v (см. определение v в раз- деле 9.5.3). 9.22. Для системы массового обслуживания из примера 9.28 определите, будут ли индексы тех требований, при уходе которых в системе остается ровно I требо- ваний (Z £ 0, значение I фиксировано), точками регенерации для процесса Db D2,...? Если нет, то при каких обстоятельствах они могли бы ими быть? 9.23. Определите для системы управления запасами из раздела 1.5 последователь- ность точек регенерации для процесса месячных расходов. Снова допускаем, что время между возникновением спроса не представлено экспоненциально распределенными случайными величинами. 9.24. Предположим, что^(л') — это (смещенная) точечная оценка регенерации для установившегося среднего v, основанного на моделировании процесса Yu Y2,... для ri регенеративных циклов. Как вы думаете, нужно ли задавать пере- ходной период работы, состоящий из I циклов, чтобы уменьшить смещение точечной оценки? 9.25. Рассмотрим систему массового обслуживания Af/Af/1 с р < 1. Пусть число требований, прошедших обслуживание в течение цикла N будет таким, как оно определено в примере 9.28. Выяснив, когда прибывает второе требова- ние, до или после ухода первого клиента, докажите, что Е(Л/) = 1/(1 - р). 9.26. Для примера 9.29 вычислите коэффициент использования р как для станка, так и для контролера. Какую интенсивность поступления деталей следует ис- пользовать? Будет ли эта система вполне определена в отношении того, что р < 1 как для станка, так и для контролера? 9.27. Обратимся к примеру 9.29. Каким должно быть значение vc, если система правильно определена? 9.28. Производственная система состоит из двух параллельно работающих стан- ков и одной очереди. В час поступает 10 работ (интенсивность поступления), время между поступлением работ распределено экспоненциально. Время об- работки работы каждым станком распределено экспоненциально, скорость обработки — 8 работ в час. В течение первых 16 ч каждого дня работают оба станка, в течение последних 8 ч используется только один станок. А. Выясните, будет ли система правильно определена, вычислив коэффици- ент занятости р и сравнив его с 1.
628 Глава 9. Анализ выходных данных для автономной системы Б. Пусть Nf — производительность в течение t-ro часа. Имеет ли процесс Nu N2,... установившееся распределение? В. Выполните 10 повторных прогонов имитационной модели продолжитель- ностью^ 480 ч (20 дней) каждый. Изобразите график усредненного про- цесса Nu N2.... Г. Пусть М{ — производительность в течение t-ro 24-часового дня. Восполь- зуйтесь данными из пункта В, а также методом репликации и удаления, получите точечную оценку и 90-процентный доверительный интервал для установившейся средней производительности в день v — Е(М) - 240. 9.29. Для системы из задачи 9.28 выполните один прогон имитационной модели продолжительностью 200 дней. Пусть М{ будет определено, как и раньше. Ис- пользуйте значения Mt, а также метод общих средних, для того чтобы полу- чить точечную оценку и 90-процентный доверительный интервал для v - 240 при л - 10 групп и п - 5 групп. 9.30. Повторно выполните задачу 9.29 с использованием метода нормированного временного ряда вместо метода общих средних. 9.31. Пусть Е, будет событием, которое возникает с вероятностью 1 - а, при s - 1, 2,..., k. Докажите, что 1-£а 5=1 где П£,—пересечение событий Еи Е2 £*. Не рассматривайте случай, когда Е, является независимым. (Такой результат называется неравенством Бонфер- рони; см. формулу (9.11). Подсказка: доказательство выводится путем мате- матической индукции, то есть сначала докажите, что P(Et Г1£2 )£ 1 - cq - с^. Затем докажите, что если выражение истинно, искомый результат также будет истинным.
Глава 10 Сравнение альтернативных конфигураций системы 4- Сравнение и выбор конфигураций систем, статистических процедур, численных примеров 4 Построение доверительных интервалов для сравнения систем 4 Выбор лучшей из систем 4 Обоснование выбора 10.1. Введение Из предыдущей главы вы узнали, насколько важен выбор надлежащих методов статистического анализа применительно к выходным данным, полученным по имитационной модели одной системы. В этой главе мы рассмотрим методы стати- стического анализа данных, полученных от разных имитационных моделей (они могут представлять конкурирующие проекты систем или альтернативные варианты их функционирования). Вопрос немаловажный, поскольку истинное назначение имитационного моделирования состоит в сравнении альтернативных вариантов систем до их реализации. Приведенный дальше пример убеждает, что подходящие статистические методы, позволяют избежать серьезных ошибок, и соответствен- но, ложных выводов, неправильных решений. Этот пример демонстрирует опас- ность принятия решения на основании данных, полученных вследствие выполне- ния единственного прогона (или репликации) имитационной модели системы. Пример 10.1. Банк планирует установить банкоматы. Необходимо решить — следует приобрести один автомат Zippytel или два автомата Klunkytel. Расходы на приобрете- ние, установку и введение в эксплуатацию одного автомата Zippytel в два раза превышают такие же расходы, связанные с одним автоматом Klunkytel, но автомат Zippytel работает в два раза быстрее автомата Klunkytel. Поскольку оба решения потребуют одинаковых расходов, менеджеры хотели бы установить систему, обеспечивающую лучшее качество обслуживания. По имеющимся в наличии данным клиенты в часы пик прибывают по одному в соотве- тствии с пуассоновским процессом с интенсивностью 1 чел./мин. Время обслуживания клиентов автоматом Zippytel представлено независимыми и одинаково экспоненциаль- но распределенными случайными величинами со средним значением 0,9 мин. Если же альтернативно установить два автомата Klunkytel, каждый из них обеспечит время об- служивания, представленное независимыми и одинаково экспоненциально распреде- ленными случайными величинами со средним 1,8 мин; в этом случае вместо одной оче- реди с порядком обслуживания FIFO будут действовать две отдельные очереди. Значит,
630 Глава 10. Сравнение альтернативных конфигураций системы нам нужно сравнить модели системы массового обслуживания Af/Af/l и М/М/2 с коэф- фициентом занятости р - 0,9 каждая (рис. 10.1). Нас интересует ожидаемая средняя задержка в очереди первых 100 клиентов; допускается, что первый клиент прибывает, когда в системе нет клиентов, и она находится в состоянии незанятости. Обозначим ожидаемые величины как d^ 100) для варианта с автоматом Zippytel и dg( 100) для вари- анта с двумя автоматами Klunkytel. Насколько верными могут оказаться рекомендации аналитиков? Для выяснения этого вопроса мы выполнили 100 независимых экспериментов по полному плану, составлен- ному аналитиком, и отметили, сколько раз была определена лучшая система. Как оказа- лось, лучший вариант представляет установка двух банкоматов Klunkytel, поскольку d^lOO) - 4,13 и df^100) = 3,70. Эти значения мы получили из теоретических результа- тов для систем массового обслуживания в работе Келтона и Лоу [Kelton and Law, 1985]. Наш эксперимент, таким образом, состоял в выполнении 100 пар независимых имита- ций обеих систем и получении средних задержек в ходе каждого прогона, для того чтобы определить dz(100)n 4(100) а затем выбрать систему в зависимости от того, какая оцен- ка окажется меньше 4(100) или 4(100) (табл. 10.1). Только в 48 из 100 экспериментов 4(100) < 4(100). Значит, в данном случае больше предпосылок, что аналитик придет к неправильному заключению. Банкомат Zippytel Банкомат Klunkytel Банкомат Klunkytel Рис. 10.1. Сравнение системы с один банкоматом Zippytel и системы с двумя банкоматами Klunkytel Таблица 10.1. Проверка правила принятия решения аналитиком № эксперимента 4(100) 4(юо> Оценка решений аналитиков 1 3,80 4,60 Банкомат Zippytel (неправильный вывод) 2 3,17 8,37 Банкомат Zippytel (неправильный вывод) 3 3,96 4,18 Банкомат Zippytel (неправильный вывод) 4 1,91 5,77 Банкомат Zippytel (неправильный вывод) 5 1,71 2,23 Банкомат Zippytel (неправильный вывод) 6 6,16 4,72 Банкоматы Klunkytel (правильный вывод) 7 5,67 1,39 Банкоматы Klunkytel (правильный вывод) 98 8,40 9,39 Банкомат Zippytel (неправильный вывод) 99 7,70 1,54 Банкоматы Klunkytel (правильный вывод) 100 4,64 1,17 Банкоматы Klunkytel (правильный вывод)
10.1. Введение 631 Может возникнуть мнение, что большинство исследований с использованием имитационного моделирования выполняется так, как это было описано в приме- ре 10.1. Но ведь выходные данные моделирования являются стохастическими, и поэтому сравнение двух систем на основании одного единственного прогона каждой из них — очень ненадежный подход. В следующем примере показано, как можно усовершенствовать сравнение сис- тем из примера 10.1. Пример 10.2. Чтобы показать, в чем суть проблемы подхода с одним прогоном имитаци- онной модели (пример 10.1), мы составили график для 100 значений dz(100) и </к(100) в парах горизонтальных точечных графиков с п = 1 (рис. 10.2). Каждый кружок (темный или светлый) представляет среднее значение 100 задержек при выполнении одного мо- делирующего эксперимента, кружки расположены в соответствии со шкалой в нижней части рисунка. Даже несмотря на то, что ожидаемая средняя задержка для системы, со- стоящей из двух банкоматов Klunkytel, меньше ожидаемой средней задержки для систе- мы с одним банкоматом Zippytel, распределения наблюдаемых средних задержек сущес- твенно перекрываются. Это вызывает опасения, что будет сделан неправильный вывод, как отмечено в конце примера 10.1. Рис. 10.2. Наблюдаемые и ожидаемые средние показатели работы одного банкомата Zippytel в сравнении с двумя банкоматами Klunkytel для примеров 10.1 и 10.2 Вместо этого можно выполнить некоторое число п полностью независимых прогонов имитационной модели каждой из альтернативных систем, затем сравнить системы на основании средних значений, полученных по всем этим прогонам. В частности, примем, что Ху — среднее значение 100 задержек в системе с одним банкоматом Zippytel, полу- ченное в ходе у'-го независимого прогона имитационной модели данной системы, Ху — среднее значение 100 задержек в системе с двумя банкоматами Klunkytel, полученное в ходеу-го независимого прогона имитационной модели данной системы (приу = 1,2,..., п). (Мы выполняли моделирование таким образом, чтобы величины Ху и X2j оказывались независимыми.) Тогда, если Х/n) и Х2(п) будут выборочными среднимизначениями соответственно Ху и Ху, мы бы посоветовали избрать систему с меньшим Х{(п). (Таким
632 Глава 10. Сравнение альтернативных конфигураций системы образом, метод из примера 10.1 становится особым случаем при п -1.) В табл. 10.2 пока- зана часть из тех 100 независимых пар, которые свидетельствуют, что выгоднее исполь- зовать один банкомат Zippytel, то есть они дают неправильные рекомендации для я - 1, 5,10 и 20. Возможность получения неправильного вывода уменьшается с увеличением значения п, но соответственно увеличиваются затраты на моделирование. Следователь- но, четыре пары графиков на рис. 10.2 также указывают на то, что по мере увеличения значения я распределения средних значений, полученных в результате я прогонов каж- дой имитационной модели (каждый кружок представляет такое среднее значение), сжи- маются вокруг соответствующих математических ожиданий, но все же существенное пе- рекрытие наблюдается даже при п - 20, в этом случае часть неправильных выводов все еще составляет 0,34. Таблица 10.2. Часть неправильных выводов при использовании метода с я повторными прогонами имитационной модели (пример 10.2) п 1 5 10 20 Часть экспериментов с предпочтением одного банкомата Zippytel 0,52 0,43 0,38 0,34 Примеры 10.1 и 10.2 свидетельствуют о необходимости тщательного анализа при сравнении моделируемых систем. Даже при выполнении 20 прогонов каждой имитационной модели системы в примере 10.2 остается существенная вероят- ность ошибочного вывода. Один из способов уточнения результатов сравнения рассмотрим в разделе 11.2, а приведенные выше примеры будут переработаны с использованием упомянутого метода (см. пример 11.2 в разделе 11.2.4). Обратите внимание, что в обоих примерах 10.1 и 10.2 речь идет о моделирова- нии при переходном режиме (см. разделы 9.3 и 9.4). Как вы узнаете дальше из этой главы, основное требование к использованию статистических методов при сравне- нии альтернативных конфигураций систем касается возможности сбора независи- мых и одинаково распределенных данных наблюдений, математическое ожидание для которых равно требуемым показателям работы. При моделировании для пере- ходного режима этого легко достичь путем простого выполнения независимых по- вторных прогонов имитационных моделей, например основной единицей наблюде- ния в примерах 10.1 и 10.2 была средняя величина 100 задержек в ходе одного полного прогона модели. Но потребность сравнить альтернативные системы на ос- новании установившегося режима (см. разделы 9.3 и 9.5) приведет к усложнению ситуации, поскольку нельзя просто собрать независимые и одинаково распреде- ленные данные наблюдений, для которых математическое ожидание равно требуе- мому установившемуся показателю работы. Существуют разные способы сравне- ния установившихся характеристик систем (об этом речь пойдет в разделах 10.2.4 и 10.4.4). В данной главе представлено несколько проблем различного рода, связанных со сравнением и выбором конфигураций систем, а также соответствующие стати- стические процедуры, позволяющие решить эти проблемы, и численных примеров к ним. Мы допускаем, что различные альтернативные системы просто заданы. Многие ситуации потребуют взвешенного отношения при решении вопроса, какие именно варианты системы следует моделировать. (Как выбирать соответствую- щие альтернативные системы для сравнения, вы узнаете из главы 12.)
10.2. Доверительные интервалы при сравнении двух систем 633 В разделе 10.2 будет рассмотрен специальный, но важный случай сравнения всего лишь двух систем путем построения доверительного интервала для разности между их показателями работы. В разделе 10.3 идея сравнения доверительных интервалов применяется уже к нескольким (больше двух) системам. В разде- ле 10.4 описаны некоторые процедуры, предназначенные для выбора наилучшей из нескольких альтернативных систем, а также решения других задач, в том числе выбора подходящего подмножества из некоторого множества всех альтернатив- ных вариантов. В приложениях 10А и 10Б представлены некоторые технические вопросы, связанные с процедурами выбора, приведенными в разделе 10.4. 10.2. Доверительные интервалы при сравнении двух систем В этом разделе мы обратимся к специальному случаю сравнения двух систем на основании такого показателя работы, как ожидаемый отклик. Сравнение выпол- няется путем построения доверительного интервала для разности между двумя математическими ожиданиями, а не с помощью проверки гипотезы, призванной установить, будет ли ожидаемая разность существенно отличаться от 0. Там, где проверка завершается одним из двух результатов — «нет оснований отклонить ги- потезу» или «отклонить гипотезу», доверительный интервал дает нам ту же нфор- мацию (в зависимости от того, содержит интервал 0 или нет, соответственно), а также показывает, насколько отличаются математические ожидания, если они отличаются вообще. (Во многих случаях два математических ожидания будут раз- личными. Следовательно, нулевая гипотеза о равенстве математических ожида- ний является ложной.) Мы также изберем параметрический подход, то есть теорию нормального распределения, хотя вместо него можно использовать и его непара- метрические аналоги [Conover, 1980, р. 223-225]. Параметрический подход прост и хорошо нам знаком. Более того, он может оказаться весьма подходящим, по- скольку проблематичную асимметрию (см. раздел 9.4.1) в распределении лежа- щих в его основе величин можно выровнять после вычитания (допуская, что два выходных распределения ассиметричны в одном направлении). Пусть Xib Ха,..., Хы. будет выборкой п, независимых и одинаково распределен- ных наблюдений, полученных для системы i при i - 1, 2, и пусть щ = Е(Х^) будет ожидаемым откликом. Нам нужно построить доверительный интервал для £ = р, - ц2. Окажутся Xv и Х2; независимыми или нет, зависит от того, как выполняется моде- лирование. Этот факт определяет выбор одного из двух подходов, описанных в разделах 10.2.1 и 10.2.2. 10.2.1. Доверительный интервал на основе парного t-критерия Если nt = «2 (что равно п, например) или мы хотим отбросить ряд наблюдений, по- лученных от системы, по которой у нас в действительности больше данных, можно попарно объединить Xv и X2j, чтобы определить Zj - Xv - X2J при; =1,2,..., п. В этом случае Zj являются независимыми и одинаково распределенными случайными
634 Глава 10. Сравнение альтернативных конфигураций системы величинами и E(Zj) - где величина, для которой мы хотим построить довери- тельный интервал. Тогда пусть и t[Z;-Z« Var[Z(n)] =2=1 • . n(n — i) Строим (приближенный) 100(1 - а)-процентный доверительный интервал Z(n)±tn_11_a/Jvar{Z(n)]. (10.1) Если величины Zj являются нормально распределенными, этот доверительный ин- тервал окажется точным, то есть он обеспечивает покрытие с вероятностью 1-а; в противном случае мы полагаемся на центральную предельную теорему (см. раз- дел 4.5), предполагая, что такое покрытие составит около 1-а для больших значе- ний п. В этом случае нам не понадобится допущение, что Xv и X2J являются незави- симыми, a Var(Xv) - Var(X2;). Допущение о положительной корреляции между и X2j может иметь большое значение, поскольку она ведет к уменьшению диспер- сии Var(^) (см. задачу 4.13), а значит, и к получению меньшего доверительного интервала. В разделе 11.2 рассматривается метод общих случайных чисел, с помо- щью которого можно часто вызывать такую положительную корреляцию между наблюдениями, полученными от разных систем. Доверительный интервал в фор- муле (10.1) будет называться доверительным интервалом на основе парного t-кри- терия Стъюдента (t-парный подход). При получении такого интервала задачу с двумя системами легко привести к одной выборке, состоящей из величин Zj. В этом смысле парный t-критерий — то же самое, что и метод, рассмотренный в разделе 9.4.1, применяемый для анализа данных по одной системе. (Следова- тельно, в данном случае можно применить последовательные процедуры получе- ния доверительного интервала из раздела 9.4.1.) Заметьте, что Х$ — это случайные величины, определенные по полным повторным прогонам имитационной модели; например, Xv может выступить средним значением 100 задержек в ходе j-ro по- вторного прогона системы с одним банкоматом Zippytel из примера 10.2; это не за- держка отдельного клиента. Пример 10.3. Возьмем модель системы управления запасами из раздела 1.5. Предполо- жим, нам нужно сравнить две различные стратегии управления запасами (s, 5) по их влиянию на ожидаемым средние общие расходы в месяц в ходе первых 120 месяцев работы. Допускаем, что начальный уровень запасов равен 60. Для первой стратегии управления запасами ($, 5) = (20,40); для второй стратегии управления запасами (з, 5) “ - (20,80). В этом случае Хц — средние общие расходы в месяц для стратегии i в ходе j-ro независимого прогона имитационной модели. Мы выполнили прогоны имитационной модели для стратегий 1 и 2 независимо друг от друга; всего было сделано и - nt - п2 - 5 независимых повторных прогонов имитационной модели для каждой стратегии (см. таб-
10.2. Доверительные интервалы при сравнении двух систем 635 лицу 10.3). Применив парный t-критерий, мы получили Z(5) - 4,98 и Var[Z(5)] - 2,44; в результате был построен приближенный 90-процентный доверительный интервал [1,65; 8,31] для Q - pt - |i2- Таким образом, при наличии 90-процентного доверительного интервала можно утверждать, что щ отличается от ц2, а также сделать вывод, что страте- гия 2 предпочтительнее, поскольку она ведет к более низким затратам на эксплуатацию (затратам, которые будут ниже на величину от 1,65 до 8,31; проверка гипотезы этого бы не показала). Нужно использовать понятие «приближенный» для описания доверитель- ного уровня, так как nt - п2 ” 5 может или не может быть «достаточно большим» для этой модели, чтобы вступила в силу центральная предельная теорема. Таблица 10.3. Средние общие расходы в месяц для пяти независимых повторных прогонов имитационных моделей двух стратегий управления запасами и разности между ними J ху ZJ 1 ‘126,97 118,21 8,76 2 124,31 120,22 4,09 3 126,68 122,45 4,23 4 122,66 122,68 -0,02 5 127,33 119,40 7,83 10.2.2. Доверительный интервал на основе (-критерия для независимых выборок Второй подход к формированию доверительного интервала для Q не требует по- парного объединения наблюдений, полученных по двум системам, но для него нужно, чтобы величины Xv не зависели от X2j. А вот щ и п2 могут иметь в этом слу- чае различные значения. Для применения классического подхода с доверительным интервалом, полу- ченным с использованием t-критерия по двум выборкам [Devore, 1995], должно выполняться равенство: Var(Xlj) ” Var(X2j). Если эти две дисперсии не будут рав- ны, у доверительного интервала, полученного по двум выборкам, может наблюдаться существенное сокращение покрытия. (Однако при п, - п2 можно использовать под- ход с доверительным интервалом, полученным по двум выборкам с использовани- ем t-критерия, даже если дисперсии переменных отличаются [Scheffe, 1970]. Так как равенство дисперсии - это ненадежное допущение при моделировании реаль- ных систем, мы бы не рекомендовали использование подхода с доверительным ин- тервалом, полученным с использованием t-критерия по двум выборкам. Вместо этого приведем старое, но надежное приближенное решение проблемы сравнения двух систем с неравной и неизвестной дисперсией, представленное Велчем [Welch, 1938]. Эта проблема называется проблемой Беренса—Фишера, ко- гда Х9 являются нормально распределенными [Scheffe, 1970]. Как обычно, пусть
636 Глава 10. Сравнение альтернативных конфигураций системы = ~------------- ni “I при i = 1, 2. Вычисляем оценку степеней свободы по формуле 2 __________[52(я1)/п1+52(п2)/п2]2__________ [52)/п.]2 /(п, -1) + [52(n2)/п2]2 /(n2 -1) и используем •^1 (”t ) % 2 (П2 ) ± ^7,1-О//2 $1 0*1 ) j $2 (П2 ) ”1 «2 (Ю.2) как приближенный 100(1 - а)-процентный доверительный интервал для £. По- скольку, как правило, /не является целым числом, вероятно, понадобится интер- поляция с помощью помещенных в печатных изданиях таблиц t-критерия, хотя статистические программы обычно допускают использование нецелочисленных степеней свободы. Доверительный интервал, определенный по формуле (10.2), — мы будем называть его доверительным интервалом Велча — можно также исполь- зовать для подтверждения адекватности имитационной модели существующей системе (см. раздел 5.6.2). Если система 1 — это реальная система, по которой были собраны данные физически, а система 2 — это соответствующая имитацион- ная модель, по которой собрались выходные данные в ходе моделирования, вполне вероятно, что гц окажется гораздо меньше п2. Наконец, при сравнении двух моде- лируемых систем, а нам нужен «небольшой» доверительный интервал, можно воспользоваться последовательной процедурой, разработанной Роббинсом, Си- монсом и Старром (Robbins, Simons, Stan, 1967], она очень эффективна относи- тельно минимизации конечного значения тц + п2. Она также будет правильна асимптотически в том смысле, что доверительный интервал будет иметь прибли- женно правильную вероятность покрытия по мере уменьшения предварительно заданной ширины доверительного интервала. Пример 10.4. Поскольку прогоны для двух различных стратегий управления запасами в примере 10.3 выполнены независимо, можно применить метод Велча при построении приближенного 90-процентного доверительного интервала для С этой целью_мы ис- пользуем те же данные JC, что приведены в табл. 10.3. Получаем Xi(5) -125,57; Хг(5) - “ 120,59; 52(5) - 4,00; S2Z (5) - 3,76 и / - 7,99. Интерполяция в печатных таблицах t-критерия ведет к tjgg. 0,95 “ 1,860. Следовательно, доверительный интервал Велча со- ставляет [2,66; 7,30]. 10.2.3. Сравнение двух методов Поскольку данные о системе управления запасами в табл. 10.3 собраны так, чтобы Hj - п2 и величины Xv не зависели от величин X2j, при построении доверительного интервала для мы могли применить либо t-парный подход, либо метод Велча.
10.2. Доверительные интервалы при сравнении двух систем 637 В этом случае доверительный интервал оказался меньше для метода Велча, но, как правило, мы не знаем, какой доверительный интервал будет меньше. Выбирать либо t-парный подход, либо метод Велча следует исходя из ситуа- ции. Использование общих случайных чисел (см. раздел 11.2) для моделирования двух систем часто может приводить к существенному уменьшению дисперсии Var(^), а следовательно, и к получению меньшего доверительного интервала. В этом случае предполагают, что - п2 и что Ху и X2j будут зависимыми, и поэтому надо прибегнуть к t-парному подходу. Если ni п2 (а мы хотим применить все доступные данные), следует воспользо- ваться методом Велча. Для этого требуется, чтобы величины Ху были независимы от величин X2j, что, в частности, препятствует применению общих случайных чисел. Обеспечение независимости результатов, полученных по двум системам с исполь- зованием отдельных последовательностей случайных чисел для этих систем, может фактически потребовать явных действий, поскольку в большинстве программных пакетов имитационного моделирования по умолчанию установлено применение одних и тех же потоков случайных и начальных чисел (см. раздел 7.2), если вы са- мостоятельно не определите другие установки. Значит, по умолчанию для обеих систем в действительности будут использоваться те же случайные числа, хотя не- обязательно должным образом синхронизированные (см. раздел 11.2.3), а это сде- лает метод Велча неправомерным. 10.2.4. Сравнения, основанные на установившихся показателях работы Как упоминалось в разделе 10.1, основной компонент для большинства методов сравнения — выборка из независимых и одинаково распределенных наблюдений с математическим ожиданием, равным оцениваемому показателю, по которому выполняется сравнение обеих систем. Все примеры, до сих пор приводившиеся в этом разделе, касались моделирования при переходном режиме, поэтому такие наблюдения естественно получались в результате простого повторения прогонов имитационной модели некоторое число раз. Не исключено, что нам может понадобиться сравнение двух (или больше) сис- тем на основании установившихся показателей работы (см. разделы 9.3 и 9.5). В подобной ситуации мы не можем повторять прогоны имитационной модели, по- скольку условия инициализации могут привести к смещению выходных данных (о чем шла речь в разделе 9.5.1). Значит, адекватно сравнивать системы на основа- нии установившихся показателей работы значительно сложнее, поскольку в таких случаях могут возникнуть проблемы, описанные в разделе 9.5. В следующем при- мере показано, как метод репликации и удаления для анализа установившихся па- раметров (см. раздел 9.5.2) можно применить к проблеме при построении довери- тельного интервала для разности между двумя установившимися средними. Пример 10.5. В производственной компании (пример 9.25) рассматривается покупка нового контрольного оборудования для уменьшения времени проверки на 10 %, так что оно будет равномерно распределено между 0,675 и 0,720 мин. Изучение системы посред- ством моделирования поможет определить, позволят ли такие изменения существенно
638 Глава 10. Сравнение альтернативных конфигураций системы уменьшить установившееся среднее время пребывания детали в системе. Пусть бу- дет временем пребывания в системе р-й покинувшей ее детали в ходе j-ro повторного прогона имитационной модели (/-1,2,..., п) для системы i (i равно 1 и 2 для исходной и предложенной систем соответственно). Пусть будут продолжительностью переходно- го периода работы и т, —минимальным числом величин при любом повторном про- гоне имитационной модели Для системы i. Если использовать данные из примера 9.31, то п - 20,1-, — 2286, m1 - 9407. Затем выполняем 20 повторных прогонов продолжительно- стью 160 ч для предложенной системы (i - 2). График скользящего среднего Г2р(1300) изображен на рис. 10.3. По выполненным прогонам и графику определяем, что 12 - 2093 и т2 - 9434. Примем, что и Zj - Xij - X2jjutsj -1,2,..., 20. Также пусть v( будет установившимся средним временем пребывания детали в системе для системы i. Тогда для 20 повторных прогонов имитаци- онной модели каждой системы мы воспользуемся формулой (10.1), чтобы получить 2,36 ± 0,31 как приближенный 90-процентный доверительный интервал для v, - v2. Так как этот доверительный интервал не содержит 0, разница между двумя значениями установившегося среднего времени пребывания детали в системе оказывается статисти- чески значимой и свидетельствует о его сокращении почти на 38 % (3,80 в сравнении с 6,16). (Среднее время проверки сократилось всего на 10 %; объясните этот факт.) Рис. 10.3. Скользящее среднее времени пребывания детали в системе (w - 1300) для предложенной системы Подход, примененный в примере 10.5, в основном касается использования ме- тода репликации и удаления для получения независимых и одинаково распреде- ленных наблюдений для каждой системы со средним, равным соответствующему установившемуся показателю. В этом отношении можно также рассмотреть исполь- зование нескольких других методов анализа установившихся параметров одной
10.3. Доверительные интервалы при сравнении нескольких систем 639 системы, представленных в разделе 9.5.3. Например, при длительном переходном периоде может возникнуть потребность воспользоваться методом общих средних для каждой альтернативной системы с целью получения независимых и одинаково распределенных несмещенных наблюдений. Поскольку критическим показателем успешного применения метода общих средних является устранение корреляции между группами, необходимо соответствующим образом определить эти группы (см. раздел 9.5.3). К работе с двумя моделями можно приспособить, как предлага- ют Чен и Сарджент [Chen and Sargent, 1987], и метод нормированного временного ряда (см. раздел 9.5.3). 10.3. Доверительные интервалы при сравнении нескольких систем Если нужно сравнить всего две системы, методы из раздела 10.2 являются спосо- бами построения доверительных интервалов для разности между их оценками по- казателей. Однако во многих исследованиях требуется больше двух систем, и тогда все еще можно использовать подход с построением доверительных интервалов. Построим одновременно несколько доверительных интервалов, так чтобы их отдельные доверительные уровни можно было увеличивать, и при этом общий до- верительный уровень покрытия всеми интервалами соответствующих величин со- ставлял искомую величину 1 - а. Применим неравенство Бонферрони (см. форму- лу (9.11) в разделе 9.7) для обеспечения общего доверительного уровня, равного, по меньшей мере, 1 - а. Неравенство Бонферрони предполагает — если надо по- строить некоторое число с доверительных интервалов, то следует строить каждый отдельный интервал для уровня 1 - а/с так, чтобы общий доверительный уровень, связанный с покрытием всеми интервалами соответствующих величин, состав- лял, по меньшей мере, 1 - а. Так, если мы хотим построить с = 10 интервалов и по- лучить общий доверительный уровень 100(1 - а) % = 90%, нужно сделать каждый отдельный интервал с уровнем 99 %. Разумеется, при больших значениях с отдель- ные интервалы станут достаточно широкими. Хотя существует множество задач, которые можно сформулировать при срав- нении средних k систем, мы остановимся только на основных двух проблемах: сравнении с образцом (раздел 10.3.1) и попарном сравнении каждой системы со всеми системами (раздел 10.3.2). В разделе 10.3.3 кратко описана другая задача, состоящая в сравнении каждой системы с лучшей из других систем [Miller, 1977; Goldsman and Nelson,1998а, 1998b]. 10.3.1. Сравнение с образцом Предположим, один из вариантов модели является образцом, возможно, он пред- ставляет существующую систему. Назовем систему-образец системой 1, а осталь- ные ее варианты — системами 2,3,..., k. Задача заключается в том, чтобы построить k - 1 доверительный интервал для k - 1 разностей ц2 - щ, ц3 - щ,..., с общим доверительным уровнем 1 - а. Таким образом, мы строим с = k - 1 отдельных ин- тервалов, так чтобы каждый из них был выполнен на уровне 1 - a/(k - 1). Тогда
640 Глава 10. Сравнение альтернативных конфигураций системы можно утверждать (с доверительным уровнем, равным, по меньшей мере, 1 - а), что для всех i - 2,3,..., k система отличается от образца, если в интервале для раз- ности р,- - отсутствует 0, и что система существенно не отличается от образца, если этот интервал содержит 0. Пример 10.6. В табл. 10.4 определено k - 5 различных стратегий (s, S) для системы управления запасами из раздела 1.5; стратегии 1 и 2 использовались в примерах 10.3 и 10.4. Предположим, что стратегия 1, для которой (s, S) - (20,40), — это текущая страте- гия, а остальные четыре стратегии рассматриваются как ее альтернативные варианты. Какие из них отличаются от образца? Для получения ответа мы выполнили по пять независимых прогонов каждой модели; прогоны, выполняемые для различных страте- гий, также не зависят друг от друга. Результаты отдельных прогонов представлены в табл. 10.5 наряду с выборочными средними и стандартными отклонениями (величин Xj) для каждой стратегии. Так как необходимо построить k -1 - 4 интервала, мы построили каждый интервал на уровне 97,5 % для получения общего доверительного уровня, рав- ного по меньшей мере 90 %. В табл. 10.6 даны разности выборочных средних и 97,5-про- центные доверительные интервалы для р< - щ при i -1,2,3,4 и 5. Мы воспользовались как t-парным подходом (см. раздел 10.2.1), так и методом Велча (см. раздел 10.2.2) для построения доверительных интервалов; оба метода оправданны, поскольку прогоны имитационных моделей с различными стратегиями являются независимыми. Звездочка обозначает, что отмеченные интервалы не содержат 0, то есть соответствующие им аль- тернативные системы отличаются от системы-образца. Обратите внимание, оба метода построения отдельных интервалов могут привести к различным выводам; например, интервал на основе парного t-критерия для Цг ~ Щ не выявляет различий, тогда как ин- тервал Велча указывает на такие различия. Более того, ни один из методов не является доминирующим в показателях малости интервалов. Во всяком случае, очевидно сущес- твенное отличие моделей 4 и 5 от образца (в действительности они даже хуже его, по- скольку выходные данные касаются расходов на эксплуатацию), модель 3 от образца не отличается, а будет ли отличаться модель 2, по этим данным понять нельзя. Таблица 10.4. Пять стратегий управления запасами (s, 5) Стратегия i 3 S 1 20 40 2 20 80 3 40 60 4 40 100 5 60 100 Таблица 10.5. Средние общие расходы в месяц для пяти независимых прогонов каждой имитационной модели стратегии управления запасами с выборочными средними и стандартными отклонениями j Ъ 1 126,97 118,21 120,77 131,64 141,09 2 124,31 120,22 129,32 137,07 143,86 3 126,68 122,45 120,61 129,91 144,30 4 122,66 122,68 123,65 129,97 141,72 5 127,23 119,40 127,34 131,08 142,61 Среднее 125,57 120,59 124,34 131,93 142,72 Стандартное отклонение 2,00 1,94 3,90 2,96 1,37
10.3. Доверительные интервалы при сравнении нескольких систем 641 Таблица 10.6. Отдельные 97,5-процентные доверительные интервалы для всех сравнений с системой-образцом (щ- ц, при i -1, 2, 3,4 и 5) Доверительный интервал на основе парного t-критерия Доверительный интервал Велча i Половина длины Интервал Половина длины Интервал 2 -4,98 5,45 (-10,44; 0,48) 3,54 (-8,52; -1,44)* 3 -1,23 7,58 (-8,80; 6,34) 6,21 (-7,44; 4,97) 4 6,36 6,08 (0,27; 12,46)* 4,55 (1,82; 10,91)* 5 17,15 3,67 (13,48; 20,81)* 6,15 (14,07; 20,22)* * Существенное различие. Из приведенного выше примера не следует явно, что отдельные доверитель- ные интервалы, имеют правильную вероятность (в этом случае 1 - а/(Л - 1)) по- крытия соответствующих величин. А потому нельзя упускать из виду проблемы, связанные с устойчивостью (о них шла речь в разделе 9.4.1). И еще — поскольку неравенство Бонферрони является достаточно общим, не имеет значения, как строятся отдельные доверительные интервалы; не обязательно получить их в ре- зультате одинакового числа повторных прогонов каждой имитационной модели, не обязательно, чтобы они были независимыми. Например, можно попытаться уменьшить ширину интервалов, увеличив количество повторных прогонов моде- лей с большой дисперсией, или уменьшить дисперсии парных разностей, вос- пользовавшись общими случайными числами (раздел 11.2). Приведенный подход можно использовать для сравнения установившихся характеристик с помощью метода построения отдельных доверительных интервалов для установившихся разностей (см. раздел 10.2.4) с отдельными доверительными уровнями, увеличен- ными за счет неравенства Бонферрони. Наконец, прояснить неоднозначные выво- ды (покрытие доверительными интервалами 0, как произошло с тремя из восьми интервалов в табл. 10.6) можно за счет выполнения дополнительных прогонов имитационных моделей (или более длинных прогонов). Однако скорость умень- шения ширины интервалов (по мере выполнения дополнительных прогонов) мо- жет оказаться небольшой. Уменьшение ширины интервала вдвое, как правило, по- требует выполнить в четыре раза больше прогонов имитационной модели. 10.3.2. Попарное сравнение каждой системы со всеми остальными системами Сравнить каждую систему со всеми остальными системами возможно путем опре- делений и измерений любых существенных различий попарно. Например, при от- сутствии уже существующей системы все k альтернативных вариантов представ- ляют вероятные реализации системы. Один подход заключается в построении доверительного интервала для разностей ц - ц всех значений it и i2 от 1 до k при 4 < *2- В этом случае у нас будет k(k - 1 )/2 отдельных интервалов, так что каждый интервал должен строиться на уровне 1 - а/[Л(Л - 1)/2], чтобы доверительный уровень для всех интервалов вместе составлял, по меньшей мере, 1-а.
642 Глава 10. Сравнение альтернативных конфигураций системы Пример 10.7. Предположим, все пять стратегий управления запасами из табл. 10.4 нуж- но сравнить друг с другом, используя данные из табл. 10.5. Поскольку возможных пар будет 5(5 - 1)/2 - 10, каждый отдельный интервал должен выполняться на уровне 99 % для достижения общего доверительного уровня 90 %. В табл. 10.7 приведены 99-процен- тные интервалы, полученные с помощью как t-парного подхода, так и метода Велча. Звездочками обозначены интервалы, не содержащие 0, то есть пары систем с ожидаемы- ми расходами на эксплуатацию. Обратите внимание — при обоих подходах не всегда по- лучим одинаковые результаты относительно того, насколько существенными окажутся различия между моделями. Ни один подход не дает интервалов, в два раза меньше, неже- ли у другого. Более того, исходя из полученных данных, можно прийти к противоречи- вым выводам. Например, используя метод Велча, можно заключить — ни щ, ни ц2 не от- личаются существенно от ц3, а утверждение, что щ - ц3 “ р2, предполагает определить, что - ц2. Но в доверительном интервале для ц2 ~ Hi отсутствует 0, что указывает на то, что щ и hj нельзя считать равными. В данном случае проблема состоит в том, что мы не рискуем интерпретировать значения доверительных интервалов как «доказательство» равенства или неравенства; в этой ситуации мы просто не смогли обнаружить различия как для щ, так и для ц2 в сравнении с ц3, но смогли установить разницу между щ и р2. Возникновение таких явных противоречий становится менее вероятным по мере умень- шения интервалов, чего можно добиться, выполняя больше прогонов имитационных мо- делей, или с помощью общих случайных чисел (см. раздел 11.2). В конце раздела 10.3.1 отмечалось, как важно обеспечить обоснованность от- дельных доверительных интервалов, возможность использования общих случай- ных чисел для различных моделей и применения вышеописанного подхода для сравнения установившихся характеристик с помощью соответствующего метода, применяемого к установившимся параметрам, для отдельных интервалов. Таблица 10.7. Отдельные 99-процентные доверительные интервалы для попарного сравнения моделей (ца- рд при it < i2); Доверительный интервал на основе парного t-критерия *1 4 2 3 4 5 1 -4,98 ± 7,18 -1,23 ± 9,99 6,36 ± 8,01 17,15 ± 4,83* 2 3,75 ± 9,58 11,34 + 8,38* 22,12 ± 3,80* 3 7,60 ± 5,66* 18,38 ± 7,73* 4 10,78 ± 5,85* Доверительный интервал Велча *2 «1 2 3 4 5 1 -4,98 ± 4,36* -1,23 ± 7,91 6,36 ± 5,60* 17,15 + 3,80* 2 3,75 ± 7,86 11,34 + 5,88* 22,12 + 3,72* 3 7,60 ± 7,67* 18,38 + 8,51* 4 10,78 ± 5,89* Существенное различие.
10.4. Ранжирование и выбор 643 10.3.3. Множественные сравнения с лучшей системой Рассмотрим еще один тип сравнения, в результате которого одновременно строят- ся интервалы для разностей между средними, полученными для каждой из k аль- тернативных систем, и средним, полученным для лучшей из других альтернатив- ных систем (хотя мы так и не знаем, какая из других систем является лучшей). Такой тип сравнения называется множественными сравнениями с лучшей систе- мой, его задача заключается в одновременном формировании k доверительных ин- тервалов по ц, - maxw р,для i *= 1,2,..., k, если допускается, что большие значения средних предпочтительнее (при использовании меньших значений средних заме- няем «шах» на <mins>). В своих работах Хсу [Hsu, 1984] представил соответствую- щий метод множественного сравнения с лучшей системой, Гупта и Хсу [Gupta and Hsu, 1984] описывают соответствующее программное обеспечение, а Хохберг и Тамейн [Hochberg and Tamhane, 1987] дают полный обзор данного вопроса. В ра- боте Хсу и Эдвардса [Hsu and Edwards, 1983] приведены процедуры, которые по- следовательно отсеивают системы, оказавшиеся хуже, и оставляют близкие к луч- шей. Юань и Нельсон [Yuan and Nelson, 1993] разработали метод множественного сравнения с лучшей системой для работы с установившимися параметрами; их метод основывается на авторегрессионном методе анализа выходных данных, опи- санном в разделе 9.5.3. Дамерджи и Накаяма [Damerdji and Nakayama, 1999] пред- лагают метод множественного сравнения с лучшей системой для работы с уста- новившимися параметрами, основанный на применении метода нормированного временного ряда (см. раздел 9.5.3). Нельсон [Nelson, 1993] рассматривает множе- ственное сравнение с лучшей системой с использованием общих случайных чисел (см. раздел 11.2) для улучшения эффективности сравнения. Множественное сравнение с лучшей системой может оказаться полезным само по себе, однако часто в результате его применения получаются интервалы, мень- шие созданных с помощью неравенства Бонферрони (см. разделы 10.3.1 и 10.3.2). Множественное сравнение с лучшей системой также тесно связано с задачами вы- бора, описанными в разделе 10.4 [Hsu and Nelson, 1988; Nelson and Matejcik, 1995]. 10.4. Ранжирование и выбор В этом разделе мы рассмотрим задачи, отличные от простого выполнения сравне- ния между несколькими альтернативными системами. В разделе 10.4.1 описывает- ся процедура для выбора одной из k систем (в некотором отношении считающаяся лучшей), и управления вероятностью того, что выбранная система действительно является лучшей. В разделе 10.4.2 речь пойдет о выборе подмножества т из k сис- тем, где будет содержаться лучшая система опять-таки с заданной вероятностью. В разделе 10.4.3 рассмотрены проблемы выбора т лучших из k систем. (Правомер- ность упомянутых трех процедур выбора доказывается в приложении 10А.) В раз- деле 10.4.4 обратимся к различным проблемам и методам, в том числе ранжирова- ние и выбор на основании установившихся показателей работы и использование общих случайных чисел в различных системах (см. раздел 11.2).
644 Глава 10. Сравнение альтернативных конфигураций системы 10.4.1. Выбор лучшей из к систем Как и в разделах 10.2 и 10.3, пусть Ху будет рассматриваемой случайной величи- ной, полученной в ходе j-ro прогона модели i-й системы; пусть ц, - Е(Ху). Тогда, а также в ситуациях, описанных в разделах 10.4.2 и 10.4.3, допускается, что Ху бу- дут независимыми друг от друга, то есть повторные прогоны имитационной моде- ли определенной альтернативной системы являются независимыми, и прогоны имитационных моделей различных альтернативных систем также выполняются независимо. Например, Ху может йредставлять средние общие расходы в месяц в ходе у-го прогона имитационной модели стратегии управления запасами i в при- мерах 10.6 и 10.7. Пусть р. { будет Z-й наименьшей из величин ц,-, для которой р. < ц ,2 < ... < ц . Наша задача — выбор системы с наименьшим ожидаемым откликом ц . (Если нам нужно наибольшее среднее р, , можно просто обратить знаки величин Ху и |г,.) Обозначим «правильный выбор» как ПВ. Свойство случайности наблюдаемых величин Ху предполагает невозможность полной уверенности в ПВ. Однако мы бы хотели иметь возможность предвари- тельно определить вероятность ПВ. Более того, если ц и ц,2 имеют действитель- но очень близкие значения, исключена возможность ошибочно выбрать систему i2 (систему со средним ц ), так что нам нужен метод, позволяющий избежать вы- полнения большого количества прогонов для обнаружения столь незначительной разницы. Тогда точная формулировка задачи будет выглядеть так: нам нужно Р(ПВ) при условии, чтоц,-2 £ d *, где минимальная вероятность ПВ Р* > > 1/к и величина «безразличия» d* > 0 задаются аналитиком. Естественно, возни- кает вопрос, что произойдет, если ц12 -ц < d *. У сформулированной далее про- цедуры есть хорошее свойство, согласно которому с вероятностью, равной, по меньшей мере, Р*, ожидаемый отклик выбранной системы не будет превышать р.+ </*. Значит, мы застрахованы (с вероятностью, равной Р*) от выбора системы, среднее которой более чем на d* хуже среднего лучшей системы. Статистическая процедура для решения этой проблемы, разработанная Дуде- вичем и Далалом [Dudewicz and Dalal, 1975], включает «двухэтапную» выборку данных для каждой из k систем. На первом этапе мы выполняем фиксированное количество повторных прогонов имитационной модели каждой системы, затем используем полученные в результате оценки дисперсии и определяем, сколько еще прогонов имитационной модели каждой системы необходимо выполнить на Ьтором этапе выборки для принятия решения. Мы должны допустить, что величи- ны Ху являются нормально распределенными, но не следует склоняться к мысли, что значения о? - Var(X0 известны; что о? являются одинаковыми для разных i. (Допущение об известных и равных значениях дисперсии очень нереалистично в отношении моделирования реальных систем). Эффективность процедуры пред- полагает устойчивость, которая касается отклонений от допущения о нормальном распределении, особенно в том случае, если величины Ху представляют средние значения. (Мы подтвердили устойчивость процедуры, когда Ху является средним значением фиксированного числа задержек в очереди для системы массового об- служивания М/М/1.)
10.4. Ранжирование и выбор 645 На первом этапе выполняются п0 £ 2 прогонов имитационной модели каждой из k систем и определяются выборочные средние и дисперсии х!1)(п0) = «о и £[Х, -х‘"(л.)]2 «о -1 при i - 1, 2,..., k. Затем вычисляется общий объем выборки Nit необходимый для системы i, по формуле N{ = max- п0 + 1, ММ (^*)2 (10.3) где Гх1 — наименьшее целое число, меньшее или равное вещественному числу х, а Л, — константа, зависящая от k, Р* и пй и определяемая по табл. 10.11 из приложе- ния 10Б. После этого выполняется N{ - п0 дополнительных повторных прогонов имитационной модели системы i (i-1,2.k) и находятся средние второго этапа 7»яр4-1 Ni -п0 После этого определяются весовые коэффициенты Wa я/1+ L MX (лг,--пох<**)2 j V not ^Sl(nQ) J и Wa “ 1 - Wj! при i - 1, 2,..., k. Наконец, вычисляются взвешенные выборочные средние Xt(N,) = Wllx‘1)(n0) + WnXfXNi -n0) и выбирается система с наименьшим значением Х,(^-). (См. пояснения к опреде- лению в приложении 10А.) Выбор Р* и d* зависит от цели исследования и особенностей изучаемых систем; их определение — от затрат на компьютерные вычисления, связанные с получением больших значений Nit соотносящихся с большими значениями Р* или небольши- ми значениями d*. Сложнее выбрать значение п0. Исходя из результатов осущест- вляемых экспериментов и полученных выводов (опубликованных в различных из- даниях), п0 должно равняться, по меньшей мере, 20. Если п0 имеет слишком малое значение, можно получить плохую оценку 5? (п0) дисперсии и?; в частности 5? (п0) может оказаться гораздо больше а?, и мы получим излишне большие значения Л(-.
646 Глава 10. Сравнение альтернативных конфигураций системы Если п0 имеет слишком большое значение, можно прийти к «завышению» необхо- димого числа прогонов имитационной модели для некоторых систем и соответст- венно — к напрасному расходованию ресурсов. В табл. 10.11 из приложения 10Б приведены значения для Р* = 0,90 и Р* - 0,95, п0 = 20 и п0 = 40 и k = 2,3,..., 10. Если понадобятся значения для других значений Р*, п0 и k, можно обратиться к работам Дудевича и Далала [Dudewicz and Dalal, 1975] или Коэнига и Лоу [Koenig and Law, 1985]. Пример 10.8. Возьмем модель системы управления запасами из раздела 1.5 (и приме- ров 10.6 и 10.7). Предположим, требуется сравнить k - 5 различных стратегий управле- ния запасами (s, 5) (см. табл. 10.4) на основании соответствующих ожидаемых средних общих расходов в месяц для первых 120 месяцев работы, обозначим их как р,- для г-й стратегии. Нам необходимо выбрать систему с наименьшим значением ц,, и иметь на 100Р* — 90 % уверенность в правильном выборе при условии, что ц ia - > J* = 1 Мы выполнили п0 - 20 независимых начальных повторных прогонов каждой системы и по табл. 10.11 определили, что - 2,747. Результаты первого этапа выборки приведены в столбцах X- '(20) и 5/(20) табл. 10.8. Затем по значениям 5/(20), й; и d* вычислили общий объем выборки N{ для каждой системы (см. табл. 10.8). После этого выполнили N{ - 20 дополнительных повторных прогонов имитационной модели для каждой стра- тегии, то есть 90 дополнительных прогонов для стратегии 1, а также 41 дополнитель- ней прогон для стратегии 2 и т. д., и вычислили выборочные средние второго этапа X) (Ni - 20). Наконец, мы вычислили весовые коэффициенты и Иц для каждой сис- темы и взвешенные выборочные средние .£,(1У{)- Поскольку X2(N2) — наименьшее взве- шенное выборочное среднее, выбираем стратегию 2 (х - 20 и 5 - 80) как систему с наи- меньшими расходами. Согласно данным столбцов 5/(20) и Nt в табл. 10.8 для процедуры требуется большее значение конечной величины Nit если оценки дисперсии 5/(20) ока- жутся очень большими; это станет подтверждением того, что требуется больше данных по более изменчивым системам. Таблица 10.8. Выбор лучшей из пяти стратегий управления запасами i Х,(1)(20) 5/(20) Nt Х<2)(Х, -20) wa Ш) 1 126,48 14,52 110 124,45 0,21 0,79 124,87 2 121,92 7,96 61 121,63 0,39 0,61 121,74 3 127,16 9,45 72 126,11 0,32 0,68 126,44 4 130,71 8,25 63 132,03 0,37 0,63 131,54 5 144,07 6,20 47 144,83 0,46 0,54 144,48 10.4.2. Выбор подмножества размером т, содержащего лучшую из к систем Рассмотрим другой тип проблемы выбора — выбор подмножества т из k систем (число т задано заранее) с тем, чтобы с вероятностью, равной, по меньшей мере, Р*, выбранное подмножество содержало систему с наименьшим средним откли- ком . Это полезно на начальных стадиях исследований посредством имитаци- онного моделирования, когда задействовано большое число (k) альтернативных
10.4. Ранжирование и выбор 647 систем и требуется отсеять системы, явно менее подходящие. Таким образом мож- но избежать больших затрат компьютерного времени на получение точных оценок поведения неподходящих систем. Определим Х& ц,, ц i( и и? так же, как в разделе 10.4.1. Опять все величины — независимые и нормально распределенные, а для фиксированных значений i вели- чины Хй, Ха,... — независимые и одинаково распределенные; значения дисперсии о неизвестны, и их равенство не требуется. В этом случае правильный выбор (ПВ) означает, что выбранное подмножество, состоящее из т систем, содержит систему со средним ; нам нужно, чтобы Р(ПВ) £ Р* при условии, что р.,2 -р. £ J*; в этом случае должны выполняться следующие условия: l<m<k- 1, Р* > m/k и d* > 0. (Если р ,2 - р < d*, тогда с вероятностью, равной, по меньшей мере, Р*, вы- бранное подмножество будет содержать систему с ожидаемым откликом, не пре- вышающим р |( + </*.) Процедура во многом подобна процедуре из раздела 10.4.1, она была предложе- на Коэнигом и Лоу [Koenig and Law, 1985]. Рассмотрим выборки, полученные в ре- зультате выполнения Пр > 2 повторных прогонов имитационной модели каждой системы и определим Х,(1)(п0) и 8{2(п0) для i = 1,2,..., k (как было сделано в разде- ле 10.4.1). Затем вычислим общее число повторных прогонов имитационной моде- ли Nb необходимое для i-й системы, по уравнению (10.3), только заменим на h2 (оно зависит от т, а также от k, Р* и п0). Значение Л2 определяется по табл. 10.12 в приложении 10Б. (Значения Л2, которые могут понадобиться для других значе- ний Р*, п0, k или т, см. в работе Коэнига и Лоу [Koenig and Law, 1985]. После этого выполняем N( - п0 дополнительных повторных прогонов, определяем средние по выборкам второго этапа Х^Щ - иД весовые коэффициенты Wa и Wa и взвешен- ные выборочные средние X/ty) таким же образом, как в разделе 10.4.1. Наконец, определяем выбранное подмножество из т систем, соответствующим т наимень- шим значениям X&N?). Пример 10.9. Вновь рассмотрим системы управления запасами, описанные в приме- ре 10.8 (см. табл. 10.4). Но на этот раз предположим, что нам нужно выбрать подмножес- тво, состоящее из т - 3 систем, из k - 5 систем. Доверительный уровень для вероятности того, что выбранное подмножество содержит лучшую систему (с наименьшими расхода- ми), должен составлять, по меньшей мере, Р* - 0,90 при условии, что щ2 - ц £ d* = 1. Мы вновь выполнили п0 - 20 независимых начальных повторных прогонов каждой сис- темы (независимо от прогонов, выполненных в примере 10.8); полностью результаты применения процедуры выбора подмножества приведены в табл. 10.9. (По табл. 10.12 установлено, что Л2 - 1,243). Выбранное подмножество состоит из стратегий 1, 2 и 3. Сравнивая значение h2 = 1,243, использовавшееся в вышеприведенном примере, со значением hr = 2,747 в примере 10.8, можно увидеть по виду уравнения (10.3), что более реальная цель выбора подмножества, состоящего из трех лучших сис- тем, требует в среднем гораздо меньшего числа повторных прогонов, нежели более завышенная цель выбора лучшей системы. (Фактически задача выбора из разде- ла 10.4.1 — это всего лишь особый случай представленной задачи выбора подмно- жества систем, для которой т = 1).
648 Глава 10. Сравнение альтернативных конфигураций системы Таблица 10.9. Выбор подмножества из трех систем, содержащего лучшую из пяти стратегий управления запасами i j^°(20) S?(20) N{ -20) wa £(".) 1 124,71 17,16 27 125,64 0,80 0,20 124,89 2 121,20 12,64 21 125,69 1,01 -0,01 121,15 3 125,57 9,07 21 123,51 1,10 -0,10 125,78 4 132,39 6,22 21 133,37 1,18 -0,18 132,21 5 144,27 4,23 21 143,67 1,27 -0,27 144,43 10.4.3. Выбор т лучших из к систем Как последний вид проблемы выбора рассматривается цель выбора подмножества с заданным размером m(l<m<k- 1), для которого вероятность того, что ожидае- мые отклики выбранного подмножества будут равны т наименьшим ожидаемым откликам Pt .Pi ,.... р, , составляет, по меньшей мере, Р*. При этом мы не утвер- ждаем, что т выбранных систем каким-либо образом отсортированы или упоря- дочены между собой, а просто определяем — неупорядоченное множество из т выбранных систем имеет ожидаемые отклики такие же, как и неупорядоченное множество т лучших систем. Такая процедура выбора может понадобиться, когда нужно определить несколько хороших конфигураций, поскольку лучшая система может оказаться неприемлемой по каким-либо иным причинам, например, связан- ным с политическими соображениями или охраной окружающей среды. Процеду- ру упоминали Дудевич и Далал [Dudewicz and Dalal, 1975], разработали Коэниг и Лоу [Koenig and Law, 1985]. Исходные условия (независимость, нормальное распределение, неизвестные и неравные дисперсии и т. д.) такие же, как и в разделе 10.4.2, только конфигура- ции зоны безразличия и ограничения вероятности Р* должны быть изменены. Намнужно, чтобы Р(ПВ)^Р* при -pim £ d*; в этом случае ПВ определяется по-другому и теперь означает, что ожидаемые отклики выбранного множёства систем равны ожидаемым откликам т лучших систем. (Если не будет выполняться условие pi<i+i £ d*, то с вероятностью, равной, по меньшей мере, Р*, ожидае- мые отклики т выбранных систем не будут превышать + </*.) Для этой задачи должно выполняться условие Р* > m\(k - m)l/ft!. Процедура (включающая и окон- чательный выбор подмножества) в этом случае полностью соответствует процеду- ре из раздела 10.4.2, только вместо константы Л2 должна использоваться константа й3, которую можно определить по табл. 10.13 из приложения 10Б. (Алгоритм вы- числения значений Л3 для других значения Р*, п0, k или т, см. в работе Коэнига и Лоу [Koenig and Law, 1985]). Обратите внимание — задача из раздела 10.4.1 пред- ставляет особый случай с т = 1. Пример 10.10. Здесь мы вновь воспользовались пятью системами управления запасами из примера 10.6, чтобы продемонстрировать проблему выбора. Наша цель выбрать т - 3 лучших системы из ft - 5 систем, и мы стремимся, чтобы Р(ПВ) > Р* - 0,90 при условии, что -pi3 £ d* =1. Сделав п0 - 20 начальных повторных прогонов и выполнив всю
10.4. Ранжирование и выбор 649 процедуру, мы получили результаты, показанные в табл. 10.10. (Для этих параметров по табл. 10.13 мы получили к3— 3,016.). Выбранное подмножество состоит из стратегий 1,2 и 3, по нашему утверждению, являющимися тремя лучшими системами, но ни коим об- разом не частично упорядоченными. Значение Л3 в примере 10.10 немного больше значений и Л2 в примерах 10.8 и 10.9, то есть для этой процедуры выбора требуются большие средние значения Nb нежели в предыдущих процедурах из разделов 10.4.1 и 10.4.2. (Однако для данных конкретных реализаций значения N{ в табл. 10.10 по большей части меньше тех же значений в табл. 10.8, поскольку оценки дисперсии в табл. 10.10 оказались в основ- ном меньше оценок дисперсии в табл. 10.8.) Интуитивно утверждение кажется ло- гичным, так как проблема выбора в этом разделе позволяет сделать гораздо более строгие конечные выводы, чем в двух предыдущих проблемах выбора, поэтому, на- до полагать, нам придется предоставить больше подтверждающих данных. Таблица 10.10. Выбор трех лучших из пяти стратегий управления запасами i Х°(20) S?(20) Nj -20) wa 1 123,67 11,50 105 124,86 0,21 0,79 124,60 2 120,62 8,80 81 121,75 0,29 0,71 121,42 3 125,24 7,16 66 125,13 0,36 0,64 125,17 4 132,05 6,18 57 131,26 0,41 0,59 131,58 5 144,82 3,27 30 144,24 0,71 0,29 144,65 10.4.4. Дополнительные проблемы и методы В разделах 10.4.1-10.4.3 рассмотрены три специальные цели выбора систем, при- водятся также процедуры их достижения. Исходные условия позволяют получить несмещенные независимые и одинаково распределенные наблюдения для соответ- ствующих ожидаемых показателей работы системы, например посредством по- вторных прогонов при моделировании для переходного режима. Также допускает- ся, что данные будут иметь нормальное распределение, хотя нарушение этого допущения может и не иметь серьезных последствий. ' Однако существует множество других целей выбора, а также методов для ран- жирования альтернатив. Выполнялись разработки специальных методов модели- рования, в частности процедур, допускающих корреляцию между наблюдениями, полученными для определенной системы, как происходит при подходе с одним продолжительным прогоном (в отличие от метода репликации и удаления) при установившемся моделировании. В этом разделе мы кратко охарактеризуем неко- торые другие проблемы и методы, относящиеся к моделированию. (См. также исследования, содержащие обзоры и ссылки на приложения по моделированию [Goldsman and Nelson, 1998а, 1998b; Bechhofer, Santner and Goldsman, 1995; Du- dewicz and Koo, 1982; Gibbons, Olkin and Sobel, 1977; Gupta and Panchapasekan, 1979; Goldsman, 1986,1987]). Полезные процедуры выбора рассматриваются в ра- боте Грея и Голдсмана [Gray and Goldsman, 1988]. В книгах Чика [Chick, 1997], Чика и Инуэ [Chick and Inoue, 1998] представлен байесовский подход к принятию решений в применении к проблемам выбора. Босель [Boesel, 1999] использует мето- ды ранжирования и выбора, для того чтобы вывести формальные вероятностные
650 Глава 10. Сравнение альтернативных конфигурацийсистемы высказывания для выбора между альтернативами, сгенерированными методом эв- ристического поиска, позволяющие определить оптимальную конфигурацию сис- темы (см. главу 12). Выбор подмножества Во всех методах из разделов 10.4.1-10.4.3 применялся подход с зоной безразличия. При его использовании аналитик предварительно залает величину d*, представ- ляющую порог, ниже которого ошибки, возникающие в результате неправильного выбора, считаются несущественными. Результатом являлся выбор фиксирован- ного, заранее заданного числа (возможно, единицы) альтернатив «лучшего» в не- котором отношении. Вместо этого Гупта [Gupta, 1956, 1965] разработал процеду- ру, с помощью которой можно получить подмножество случайного размера, где содержится лучшая система с заранее заданной вероятностью Р* без указания ве- личины зоны безразличия (то есть заданной d* - 0). Хотя размер выбираемого подмножества не регулируется, этой процедурой можно воспользоваться при от- сеивании явно худших из большого числа альтернатив. Гупта и Сантнер [Gupta and Santner, 1973; Santner, 1975] полагают, что этот метод допускает возможность задать максимальный размер т выбираемого подмножества. Они также выявили соотношение этого метода и подходов с зоной безразличия. Применение данной процедуры ограничивается тем, что ее авторы допускают известные и равные дис- персии. Салливан и Вильсон [Sullivan and Wilson, 1989] разработали более общую процедуру выбора ограниченного подмножества, допускающую неизвестные и не- равные дисперсии, а также определение величины безразличия. Во всех этих фор- мулировках преимущество определения т в качестве максимального размера вы- бираемого подмножества вместо выбора точного числа т альтернатив состоит в том, что в ситуациях, когда несколько систем выделяются как явно лучшие, мо- жет быть выбрано число систем, значительно меньшее т [Goldsman and Nelson, 1998а, 1998b]. Методы последовательной выборки В методах выбора из разделов 10.4.1-10.4.3 выполнялась двухэтапная выборка данных, на ее первом этапе получаются оценки дисперсии, применяющиеся для определения величины дополнительной выборки на втором этапе. Но при этом не следует выпускать из виду - если на первом этапе оценка дисперсии оказывается гораздо больше, нежели сама дисперсия, будет определено излишне большой раз- мер выборки на втором этапе. Вместо них предложены многоэтапные или после- довательные методы выборки из альтернативных совокупностей, имеющие целью сделать процедуры более эффективными, то есть при их использовании возможно осуществление необходимого выбора альтернатив с меньшими затратами [Gold- sman, 1986,1987]. Коэниг [Koenig, 1984] разработал методы последовательной вы- борки, связанные с двухэтапными процедурами Коэнига и Лоу [Koenig and Law, 1985], и для моделирования систем управления запасами, а также ремонтных сис- тем уменьшил необходимый общий объем выборки на 75 %. Беххофер [Bechhofer et al., 1990] и Хартманн [Hartmann, 1991] разработали и сравнили различные по- следовательные методы, с допущением равных, но неизвестных дисперсий. Чик
10.4. Ранжирование и выбор 651 и Инуэ [Chick and Inoue, 1998] рассматривают последовательный выбор в контек- сте байесовского подхода. Критерии, отличные от математического ожидания Все рассмотренные методы сравнения и выбора основывались на использовании ожидаемого отклика системы, например ожидаемой средней задержки в очереди или ожидаемых средних расходов на эксплуатацию в месяц. Однако в некоторых ситуациях другие критерии могут быть более подходящими. Голдсман [Goldsman, 1984а, 1984b] описывает систему управления запасами, где стратегия 1 приносит прибыль, равную 1000, с вероятностью 0,001, и прибыль, равную 0, с вероятностью 0,999; тогда как стратегия 2 всегда приносит прибыль 0,999. Значит, ожидаемая прибыль для стратегий управления запасами 1 и 2 будет равна соответственно 1 и 0,999, то есть в этом отношении стратегия 1 кажется предпочтительнее, но стра- тегия 2 принесет более высокую прибыль (0,999 вместо 0) с вероятностью 0,999, поэтому она предпочтительнее, хотя ожидаемая прибыль окажется ниже. Следо- вательно, лучшую систему в этом случае можно определить, исходя из наиболь- шей экономической эффективности. В этой связи Голдсман [Goldsman, 1984а, 1984b], исследуя методы с зоной без- различия, приходит к выводу, что непараметричность полученных методов, явля- ется подходящим свойством при моделировании реальных систем (поскольку нам редко известна точная форма выходного распределения). Изучались и методы по- следовательной выборки [Bechhofer and Goldsman, 1986]. Чен [Chen, 1988] также рассматривает эту проблему, но с задачей выбора подмножества вместо формули- ровки зоны безразличия. Беххофер, Сантнер и Голдсман [Bechhofer, Santner, Gol- dsman, 1995] описывают дополнительные проблемы и методы, а Миллер, Нельсон и Рейлли [Miller, Nelson, Reilly, 1998] предлагают свою эффективную, но консер- вативную процедуру. Корреляция между альтернативами Методы выбора, рассмотренные до сих пор, предполагают, что наблюдения, полу- ченные по каждой альтернативе, являются независимыми от других альтернатив. При моделировании часто используется метод общих случайных чисел (см. раз- дел 11.2), чтобы вызвать положительную корреляцию между j-ми наблюдениями, полученными по каждой альтернативной системе. Таким образом можно усилить эффективность сравнения; об этом упоминалось в разделе 10.3 (речь шла о сравне- нии доверительных интервалов). При решении задачи выбора можно надеяться уменьшить объем выборки, необходимой для альтернативных систем, применив общие случайные числа к этим системам, или, иными словами, добиться большей заданной вероятности правильного выбора, когда корреляция игнорируется при определении объема выборки. Соответствующие процедуры изучали Гупта, На- гель и Панчапакесан [Gupta, Nagel, Panchapakesan, 1973], рассматривая данные как векторы, найденные из многомерного нормального распределения. Кларк и Янг [Clark and Yang, 1986] предложили процедуру выбора зоны безразличия, за- висящую от моделируемой системы, в которой комбинируются метод Дудевича и Далала [Dudewicz and Dalal, 1975] и неравенство Бонферрони, и эксперимен- тальным путем получили хорошие результаты в отношении правильного выбора
652 Глава 10. Сравнение альтернативных конфигураций системы при объемах выборки, меньших, чем при самостоятельной процедуре Дудевича и Далала. Янг и Нельсон [Yang and Nelson, 1989, 1991] исследовали применение общих случайных чисел в процедурах множественного сравнения и установили, что доверительные интервалы для разностей между ожидаемыми откликами име- ют большую доверительную вероятность и меньшую длину. Нельсон и Матейчик [Nelson and Matejcik, 1995] разработали усовершенствованные методы выбора зо- ны безразличия, которые допускают явное применение общих случайных чисел. Нельсон [Nelson, 1993] также рассматривает метод множественного сравнения с лучшей системой (см. раздел 10.3.3) с использованием общих случайных чисел. Очень важно, чтобы метод общих случайных чисел вызывал нужную положитель- ную корреляцию и в то же время не вызывал обратного эффекта, приводящего к отрицательной корреляции (см. раздел 11.2). Коэниг и Лоу [Koenig and Law, 1982] обнаружили такой обратный эффект при проверке процедур выбора на мо- дели системы управления запасами, в результате чего вероятности правильного выбора очень снизились. Корреляция в рамках альтернатив Мы допускали независимость наблюдений, полученных по определенной альтер- нативе. Такое допущение возможно при моделировании для переходного режима, поскольку мы просто выполняем независимые прогоны имитационной модели и в результате каждого прогона получаем несмещенные данные по искомому ожи- даемому отклику. Тогда как при установившемся моделировании не так просто получить несмещенные данные наблюдений. Один подход к выбору на основании установившихся параметров состоит в использовании метода репликации и уда- ления для получения величин Ху, не являющихся независимыми и приближенно несмещенными для установившегося среднего, как было сделано в примере 10.5. Другой подход — выполнение отдельного длительного прогона альтернативной системы i. Пусть Ху — выборочное среднее наблюдений в j-й группе наблюдений этого прогона (см. метод общих средних в разделе 9.5.3); в данном случае очень важно некоторым образом выбрать размер групп так, чтобы выборочные средние оказались приближенно некоррелированными. Дудевич и Зайно [Dudewicz and Zaino, 1977] разработали метод для выбора лучшей системы при допущении, что выходные данные систем можно моделировать как авторегрессионный временной ряд первого порядка. Дикинсон [Dickinson, 1983] использовал метод спектрально- го анализа (см. раздел 9.5.3) для разработки метода ранжирования, а Голдсманом [Goldsman, 1985] был скомбинирован метод нормированного временного ряда для оценки установившихся параметров (см. раздел 9.5.3) с методом Дудевича и Дала- ла [Dudewicz and Dalal, 1975] для получения процедуры выбора. Иглехарт [1g- lehart, 1977] разработал метод, основанный на применении регенеративного мето- да (см. раздел 9.5.3), предназначенный для выбора лучшей из k систем. Салливан и Вильсон [Sullivan and Wilson, 1989] представили процедуру выбора ограничен- ного подмножества, назвав ее Vs, для случаев с коррелированными наблюдениями, полученными по имитационной модели. Юань и Нельсон [Yuan and Nelson, 1993] применили авторегрессионный метод (см. раздел 9.5.3) примененили к множест- венному сравнению с лучшей системой (см. раздел 10.3.3).
Приложение 10А 653 Приложение 10А Обоснованность процедур выбора В этом приложении мы постараемся кратко обосновать процедуры из разделов 10.4.1-10.4.3, а также объяснить, как вычисляются значения hlt Aj и й3 в приложе- нии 10Б [Dudewicz and Dalal, 1975; Dudewicz and Bishop, 1977; Desu and Sobel, 1968; Koenig and Law, 1985]. Все три процедуры основываются на том факте, что при i - 1, 2,..., k т d*/h ' где h равно hb зависимости от того, какая процедура выбора использует- ся, имеет распределение t с п0 - 1 степенями свободы. Величины 7] тоже являются независимыми. Для весовых коэффициентов и Wa выбрана довольно необыч- ная форма выражений, чтобы получить такое взвешенное выборочное среднее Х{ (N,), при котором 7] будет иметь t-распределение. (К теме о других методах оп- ределения и Xi(N^, а также получения результата, при котором 7] имеет t-рас- пределение, исследователи уже обращались [Dudewicz and Dalal, 1975].) Для проблемы выбора из раздела 10.4.1 допустим, что р, - £ d*. Правиль- ный выбор будет сделан тогда и только тогда, когда Х^ (Л^ ) будет наименьшим из Х,(Л4) (где ц — индекс системы с наименьшим ожидаемым откликом р. ). Значит, если допустить, что f и F обозначают соответственно плотность распределения и функцию t-распределения с па - 1 степенями свободы, можно записать, что Р(ПВ) = Р[Х. (N4 ) < Xit (Nit) для I = 2, 3 • • -, k] = d*/ht d*/ht d*/ht T ^T. -^4—^-Для/= 2, 3,..., й1 = 4 k d*/h ’ ’ I для 1 = 2,3 ...,k = (Ю.4) (Последняя строка в уравнении (10.4) выводится при условии, что 7^ -1 и что ве- личины Т- являются независимыми.) Поскольку мы допускаем, что р Ja - р d* и возрастают с увеличением значения I, нам теперь известно, что р,( -р^ d* кля 1 — 2,3,..., k. Так как функция F является монотонно возрастающей, из уравне- ния (10.4) получаем (после замены переменной в интеграле) Р(ПВ) £ f[F(t + ht Л*-1 f(t)dt. (10.5) Равенство в выражении (10.5) сохраняется только тогда, когда р + d*-р f -... - р { , данное расположение величин ц, называется наименее благоприятной конфигура- цией. Таким образом, табл. 10.11 получена после того, как интегралу в правой части выражения (10.5) присвоили значение Р*, и оно было решено (численно) для йр
654 Глава 10. Сравнение альтернативных конфигураций системы Подтвердить обоснованность процедур выбора подмножества из разделов 10.4.2 и 10.4.3 сложнее, но, используя процедуры из раздела 10.4.2, в конечном итоге можно доказать [Koenig and Law, 1985], что Р(ПВ) k (k - гп^~^ jF(t + h2 )[F(t)]m-1 [ft-t)]*—1 f(t)dt. Правая часть выражения приравнивается к Р*, чтобы решить его для h2, приведен- ного в табл. 10.12. Для этой процедуры наименее благоприятная конфигурация бу- дет такой же (в этом случае Р(ПВ) = Р*), как и для процедуры из раздела 10.4.1. Наконец, для процедуры из раздела 10.4.2 можно доказать [Koenig and Law, 1985], что Р(ПВ) k т J[F(t + Л3 )]*-“ [FH)]”’1 f(t)dt. Правая часть выражения вновь приравнивается к Р*, чтобы решить его для Л3, при- веденного в табл. 10.13. Однако для этой процедуры наименее благоприятная кон- фигурация возникает, когда ц, + d* -... - у. f + d* - ц - -... - ц, тогда мы вновь получаем Р(ПВ) = Р*. Приложение 10Б Константы для процедур выбора Таблица 10.11. Значения Л, для процедуры из раздела 10.4.1 р* «0 Л-2 Л-3 Л-4 Л-5 Л—6 Л-7 Л-8 Л-9 Л-10 0,90 20 1,896 2,342 2,583 2,747 2,870 2,969 3,051 3,121 3,182 0,90 40 1,852 2,283 2,514 2,669 2,785 2,878 2,954 3,019 3,076 0,95 20 2,453 2,872 3,101 3,258 3,377 3,472 3,551 3,619 3,679 0,95 40 2,386 2,786 3,003 3,150 3,260 3,349 3,422 3,484 3,539 Таблица 10.12. Значения Л2для процедуры из раздела 10.4.2 При т = 1 используйте табл. 10.11 т Л-3 Л-4 Л-5 Л-6 Л-7 Л-8 Л-9 Л-10 Р*-0,90; п0-20 2 1,137 1,601 1,860 2,039 2,174 2,282 2,373 2,450 3 0,782 1,243 1,507 1,690 1,830 1,943 2,038 4 0,556 1,012 1,276 1,461 1,603 1,718 5 0,392 0,843 1,105 1,291 1,434 6 0,265 0,711 0,971 1,156 7 0,162 0,603 0,861 8 0,075 0,512 9 *
Приложение 10Б 655 т *~3 *~4 k—5 *“6 k-7 k-8 k-9 Л-10 Р*- 0,90; «о- 40 2 1,114 1,570 1,825 1,999 2,131 2,237 2,324 2,399 3 0,763 1,219 1,479 1,660 1,798 1,909 2,002 4 0,541 0,991 1,251 1,434 1,575 1,688 5 0,381 0,824 1,083 1,266 1,408 6 0,257 0,693 0,950 1,133 7 0,156 0,587 0,841 8 0,072 0,497 9 Р*- 0,95; по- 20 ♦ 2 1,631 2,071 2,321 2,494 2,625 2,731 2,819 2,894 3 1,256 1,697 1,952 2,131 2,267 2,378 2,470 4 1,021 1,458 1,714 1,894 2,033 2,146 5 0,852 1,284 1,539 1,720 1,860 6 0,721 1,149 1,402 1,583 7 0,615 1,038 1,290 8 0,526 0,945 9 0,95; По— 40 0,449 2 1,591 2,023 2,267 2,435 2,563 2,665 2,750 2,823 3 1,222 1,656 1,907 2,082 2,217 2,325 2,415 4 0,990 1,420 1,672 1,850 1,987 2,098 5 0,824 1,248 1,499 1,678 1,816 6 0,695 1,114 1,363 1,541 7 0,591 1,004 1,252 8 0,505 0,913 9_____________________________________________________________________________0,430 * Вспомните, что для этой процедуры выбора должно выполняться неравенство Р* > m/k. (Если Р* - 0,90; т - 9 и k - 10, можно получить Р(ПВ) - Р*, выбрав случайным образом девять систем и не собирая во- обще никаких данных.) Таблица 10.13. Значения Л3для процедуры из раздела 10.4.3 При т - 1 используйте табл. 10.11 т k-3 k-4 k-5 *“6 k-7 k-8 k-9 *-10 р*=ж 0,90; по- 20 2 2,342 2,779 3,016 3,177 3,299 3,396 3,477 3,546 3 2,583 3,016 3,251 3,411 3,532 3,629 3,709 4 2,747 3,177 3,411 3,571 3,691 3,787 5 2.S70 3,299 3,532 3,691 3,811 6 2,969 3,396 3,629 3,787 7 3,051 3,477 3,709 8 3,121 3,546 9 3,182 продолжение &
656 Глава 10. Сравнение альтернативных конфигураций системы Таблица 10.13 (продолжение) т Л-3 Л-4 Л-5 Л-6 Л-7 Л-8 Л-9 Л-10 Р*- 0,90; п0- 40 2 2,283 2,703 2,928 3,081 3,195 3,285 3,360 3,424 3 2,514 2,928 3,151 3,302 3,415 3,505 3,579 4 2,669 3,081 3,302 3,451 3,564 3,653 5 2,785 3,195 3,415 3,564 3,675 6 2,878 3,285 3,505 3,653 7 2,954 3,360 3,579 8 3,019 3,424 9 3,076 Р*- 0,95; По= 20 2 2,872 3,282 3,507 3,662 3,779 3,873 3,952 4,019 3 3,101 3,507 3,731 3,885 4,001 4,094 4,172 4 3,258 3,662 3,885 4,037 4,153 4,246 5 3,377 3,779 4,001 4,153 4,269 6 3,472 3,873 4,094 4,246 7 3,551 3,952 4,172 8 3,619 4,019 9 3,679 Р*- 0,95; по- 40 2 2,786 3,175 3,386 3,530 3,639 3,725 3,797 3,858 3 3,003 3,386 3,595 3,738 3,845 3,931 4,002 4 3,150 3,530 . 3,738 3,879 3,986 4,071 5 3,260 3,639 3,845 3,986 4,092 6 3,349 3,725 3,931 4,071 7 3,422 3,797 4,002 8 3,484 3,858 9 3,539 Задачи 10.1. Что произошло бы с примерами 10.1 и 10.2 в случае, если банку вместо задер- жек в очереди нужно было бы определить время обслуживания? Иными словами предположим, что показателем работы является ожидаемое среднее общее время пребывания в системе первых 100 клиентов, а не ожидаемая средняя задержка в очереди. Какая из систем в этом случае будет лучшей? Какой критерий вам кажется наиболее подходящим? Обоснуйте свой ответ. 10.2. Рассмотрим две системы из примера 10.1 с теми же начальными условиями и показателями работы. Пусть С, - <4(100) - <4(100). А. Выполним по - пг ~ 5 независимых повторных прогонов имитацион- ной модели каждой системы и построим 90-процентный приближенный доверительный интервал для (Выполняйте прогоны имитационных моделей систем независимо друг от друга). Используйте t-парный подход.
Задачи 657 Б. Выполните nt “ 5 повторных прогонов имитационной модели системы с одним банкоматом Zippytel и пг “ 10 повторных прогонов имитацион- ной модели системы с двумя банкоматами системы Klunkytel и постройте 90-процентный доверительный интервал для (Вновь выполняйте неза- висимые прогоны имитационных моделей двух систем.) В. Воспользуйтесь процедурой выбора из раздела 10.4.1, чтобы выбрать на- илучшую из k - 2 систем. Пусть п “ 20, Р* = 0,90 и d* - 0,4. 10.3. Обратимся к модели компьютерной системы с режимом разделения вре- мени из раздела 2.5. Предположим, компания рассматривает возможность изменения продолжительности обслуживания q с целью уменьшить устано- вившееся среднее время выполнения задания; рассматриваются такие значе- ния 0,05; 0,10; 0,20 и 0,40. Допустим, что имеется всего п - 35 терминалов и что другие параметры, а также начальные условия такие же, как и в разде- ле 2.5. Чтобы получить независимые и одинаково распределенные наблюде- ния с математическим ожиданием, приближенно равным установившемуся среднему времени выполнения задания, считается, что для моделей достаточ- но использовать переходный период работы, равный получению 50 зарегист- рированных значений времени выполнений заданий. После этого находим средние значения для следующих 640 значений времени выполнений зада- ний, чтобы получить основное наблюдение Х^. Затем выполняется необхо- димое число независимых репликаций этих 690 значений времени выполне- ний заданий. Используйте соответствующие процедуры выбора из разделов 10.4.1-10.4.3 с п0 - 20, Р* - 0,90 и d* - 0,7, для того чтобы решить нижеприве- денные задачи. А. Выберите лучшее из четырех значений q. Б. Выберите два значения q, одно из которых будет лучшим. В. Выберите два лучших значения q (не упорядочивая выбранные значения каким-либо образом). 10.4. Для модели цеха из раздела 2.7 можно лучше проанализировать вопрос о том, на какое рабочее место следует установить дополнительный станок. (См. раз- дел 2.7.3; на рис. 2.46 обратите внимание, что на основании одного прогона модели существующей системы было определено, что наиболее перегружен- ными являются рабочие места 1,2 и 4.) Воспользуйтесь процедурой из разде- ла 10.4.1 и подумайте, следует ли рекомендовать разместить дополнительный станок на рабочие места 1,2 или 4. Мы предполагаем, что существует только три такие возможности. Пусть п0 - 20, Р* - 0,90 и d* - 1. В качестве показате- лей работы используйте установившуюся ожидаемую общую среднюю за- держку выполнения задания в очереди. Чтобы получить наблюдений, нуж- но определить переходный период работы модели как 10 рабочих 8-часовых дней, а затем воспользоваться данными по следующим 90 дням, как описано в задаче 2.7. Сравните свои выводы с заключением, приведенным в конце раз- дела 2.7.3. Исходя из примера 10.1, ответьте на вопрос: как в целом можно улучшить проведение исследований?
658 Глава 10. Сравнение альтернативных конфигураций системы 10.5. Рассмотрим исходную модель с режимом разделения времени из раздела 2.5 и альтернативную стратегию обработки в задаче 2.18 (в обоих случаях число терминалов п - 35). Используйте процедуру выбора из раздела 10.4.1 с п0 - - 20, чтобы установить, какая стратегия обработки позволяет получить наи- меньшее установившееся среднее время выполнения задания. Для получения наблюдений в этом случае используйте переходный период работы моде- ли, равный получению 50 значений времени выполнений заданий, а затем ис- пользуйте среднее следующих 640 значений времени выполнения заданий и произведите необходимое число прогонов. Самостоятельно выберите зна- чения Р* и d* с учетом затрат, а также того, что вы считаете «важной» разни- цей в среднем значении времени выполнения заданий. 10.6. Для производственного цеха из задачи 1.22 используйте процедуру выбора, описанную в разделе 10.4.2, чтобы определить три из пяти значений s (число ремонтников), одно из которых в итоге позволит получить наименьшие ожи- даемые средние затраты в час. Пусть и0 = 20, Р* = 0,90 и d* = 5. 10.7. Используя четыре альтернативы из задачи 10.3, постройте доверительные интервалы для всех сравнений с текущей системой (q - 0,10), используя об- щий доверительный уровень, равный 90 %. Выполните столько прогонов, сколько вы считаете необходимым для получения значимых результатов. 10.8. На основе параметров производственного цеха из задач 1.22 и 10.6 постройте доверительные интервалы для всех разностей ожидаемых средних затрат в час, установленных попарно, при пяти различных значениях $; пусть общий доверительный уровень будет равен 0,90. Выполните необходимое число прогонов, чтобы получить значимые результаты.
Глава 1 Методы понижения дисперсии ♦ Способы повышения эффективности статистического анализа 4 Сравнение альтернативных конфигураций системы + Синхронизация случайных чисел 4- Отрицательная корреляция с помощью дополнительных случайных чисел 4 Управление переменной 4 Оценка установившихся показателей системы 4 Замена оценки величины ее точным значением 11.1. Введение В этой книге мы стремимся подчеркнуть, что моделирование, управляемое с помо- щью случайных входных данных, порождает случайные выходные данные. Поэто- му применение подходящих статистических методов обязательно к выходным данным моделирования, если результаты должны быть правильно проанализиро- ваны, интерпретированы и использованы (см. главы 9,10 и 12). Так как моделиро- вание крупных систем может занимать много компьютерного времени и памяти, выполнение соответствующих процедур статистического анализа (вероятно, тре- бующих многочисленных прогонов имитационных моделей) может оказаться дос- таточно дорогостоящим. Иногда стоимость даже скромного статистического ана- лиза выходных данных может быть настолько высокой, что точность результатов, возможно, измеряемая шириной доверительного интервала, окажется неприемле- мо низкой. Аналитик поэтому должен использовать любые доступные средства для увеличения эффективности моделирования. Естественно, «эффективность» предполагает экономное программирование мо- дели, позволяющее обеспечить быстрое выполнение и минимальные требования к памяти. В этой главе мы остановимся на эффективности статистического ана- лиза, измеряемой дисперсией выходных случайных величин, полученных в ходе моделирования. Если есть возможность так или иначе понизить дисперсию иско- мой выходной величины (например, средней задержки в очереди или средних рас- ходов в месяц для системы управления запасами) без нарушения ее математиче- ского ожидания, можно добиться большей точности, например получить меньшие доверительные интервалы при том же объеме моделирования или же, наоборот,
660 Глава 11. Методы понижения дисперсии достичь нужной точности при меньшем объеме моделирования. Иногда различие в результатах между невероятно дорогим проектом имитационного моделирова- ния и умеренным может быть незначительным благодаря правильно применен- ному методу понижения дисперсии (МПД). Как нам предстоит убедиться, МПД зависят от определенной модели (или мо- делей). Поэтому чтобы правильно применять МПД, нужно в деталях знать, как бу- дет работать модель (или модели). Более того, вообще невозможно знать заранее, насколько понизится дисперсия и можно ли это осуществить, или (хуже того) удастся ли вообще ее понизить в сравнении с моделированием без применения этих методов. Однако (если позволяют средства) можно выполнить предвари- тельные прогоны для сравнения результатов применения МПД с результатами, полученными в ходе моделирования без применения этих методов. Наконец, сами по себе некоторые МПД увеличат затраты на вычисления, значит, нужно искать компромисс между таким ухудшением эффективности вычислений и потенциаль- ным увеличением эффективности статистического анализа, о чем идет речь в зада- че 11.1, а также в литературе [Glynn and Whitt, 1992а]. Практически все методы понижения дисперсии требуют дополнительных усилий со стороны аналитика (хотя бы только для понимания сути метода). Методы понижения дисперсии были разработаны в начальный период разви- тия компьютерных технологий, когда они применялись при моделировании мето- дом Монте-Карло или для выборочных распределений (см. раздел 1.8.3, литерату- ру по этому вопросу [Hammersley and Handscomb, 1964; Morgan, 1984]). Однако позднее было установлено, что многие из исходных МПД не могут непосредствен- но применяться при моделировании сложных динамических систем. В этой же главе мы рассмотрим пять общих видов МПД, наиболее успешно применяющихся при моделировании самых разных систем. Подробное описание МПД, в частности выборочной совокупности и выборки по значимости, вы найде- те в работах Клейнена [Kleijnen, 1974], Братли, Фокса и Шрейджа [Bratley, Fox and Schrage, 1987], Моргана [Morgan, 1984]. Существует много книг, посвящен- ных МПД, но мы не стремимся дать здесь их полное перечисление. Однако есть несколько работ, содержащих полный обзор МПД с их классификацией, с подроб- ной библиографией по этому вопросу [Wilson, 1984; Nelson, 1985, 1986, 1987а, 1987с; L’Ecuyer, 1994а; Kleijnen, 1998]. Кроме того, исследованиям МПД посвяще- ны специальные выпуски журналов Management Science (Выпуск 35, № И, но- ябрь, 1989 года, под ред. Г.С. Фишмана [G.S. Fishman]), Association of Computing Machinery (ACM) Transactions on Modeling and Computer Simulation (Выпуск 3, № 3, июль 1993 года, под ред. П. Глассермана и П. Хейдельбергера [Р. Glasserman and Р. Heidelberger]). Мы будем рассматривать МПД по отдельности, однако их мож- но применять и совместно [Avramidis and Wilson, 1996; Kwon and Tew, 1994; Yang and Liou, 1996]. 11.2. Метод общих случайных чисел Первый метод понижения дисперсии, который мы рассмотрим, — метод общих случайных чисел, — отличается от других методов тем, что он применяется при
11.2. Метод общих случайных чисел 661 сравнении двух альтернативных конфигураций системы (см. главу 10) вместо ис- следования одной единственной конфигурации. Несмотря на простоту, метод об- щих случайных чисел является наиболее популярным и часто применимым из МПД. Как мы отмечали в разделе 10.2.3, по умолчанию в большинстве пакетов имитационного моделирования используются одни и те же потоки случайных чи- сел и начальные числа. Следовательно, по умолчанию мы в действительности бу- дем использовать одни и те же случайные числа, хотя они не обязательно будут со- ответствующим образом синхронизированы (см. раздел 11.2.3), а это является определяющим фактором успеха метода общих случайных чисел. 11.2.1. Пояснение метода Основная идея метода — необходимость сравнивать альтернативные конфигура- ции системы «при одинаковых условиях эксперимента» для уверенности в том, что любые наблюдаемые различия в показателях возникают вследствие различий в конфигурациях системы, а не в связи с изменениями условий эксперимента. При моделировании такими «условиями эксперимента» становятся сгенерированные случайные величины, использующиеся для продвижения времени моделирова- ния. Например, при моделировании систем массового обслуживания речь может идти о времени между поступлениями и времени обслуживания требований; для систем управления запасами это может быть время между возникновением спроса и величина спроса. Название этих методов происходит от возможности во многих ситуациях использовать одинаковые случайные числа, основанные на распределе- нии U(0,1) (см. главу 7), чтобы управлять продвижением времени моделирования для каждой из альтернативных конфигураций. Как нам предстоит узнать, для правильной реализации метода общих случайных чисел требуются определенные программные методы. Следуя терминологии классического планирования экспе- риментов, метод общих случайных чисел является своего рода формой объединения в блоки, то есть «сравнения подобного с подобным». Метод общих случайных чи- сел также называют методом коррелированной выборки, методом согласованных потоков или согласованных пар. Рассмотрим случай с двумя альтернативными конфигурациями системы (см. раз- дел 10.2), для которых Ху и Ху — наблюдения, полученные в ходеу-го независимого повторного прогона имитационной модели системы с первыми и вторыми конфи- гурациями соответственно. Нам нужно получить оценку С, - щ - р.2 - Е(Ху) - - E(X2j). Если мы выполним п повторных прогонов модели для каждой конфигура- ции системы, то пусть Zj- Ху- X2j при j - 1,2,..., п, тогда Е(2^) С,. Значит, - является несмещенной оценкой Поскольку Zj — независимые и одинаково рас- пределенные случайные величины, VaifДЯ)] - = Vm<Xv )-2Cov(X„,X„ ) п п
662 Глава 11. Методы понижения дисперсии (см. уравнение (4.5) и задачу 4.13). Если моделирование двух различных конфигу- раций системы выполняется независимо, то есть с различными случайными чис- лами, Ху и будут независимыми, так что Cov(X1;, X2j) - 0. С другой стороны, если бы мы могли выполнить моделирование конфигураций 1 и 2, так чтобы Xxj и Ху были положительно коррелированными, то получили бы Cov(Xy, Х^) > 0, а, зна- чит, дисперсия оценки Z(n) уменьшается. Следовательно, когда при определенном моделирующем эксперименте мы устанавливаем Z(n), ее значение должно быть близким к При использовании метода общих случайных чисел мы пытаемся вы- звать положительную корреляцию за счет использования (см. раздел 11.2.3) оди- наковых случайных чисел для моделирования всех конфигураций системы. Реали- зация этого метода возможна благодаря детерминированному воспроизводимому характеру генераторов случайных чисел (см. раздел 7.1); ухищрения с невоспроиз- водимым характером результатов (скажем, когда в качестве начального числа для генератора случайных чисел используется квадратный корень значения компью- терных часов) исключают возможность использования метода общих случайных чисел, а также многих других важных методов понижения дисперсии. 11.2.2. Применение метода К сожалению, не существует полного общего доказательства того, что метод об- щих случайных чисел всегда уменьшает дисперсию («срабатывает»). Даже если это так, заранее неизвестно, насколько в результате будет понижена дисперсия. Эффективность метода полностью зависит от конкретных сравниваемых моделей. Его применение предполагает уверенность аналитика в одинаковом реагировании разных моделей на большие и малые значения случайных величин, управляющих моделями. Например, можно ожидать, что небольшое время между поступления- ми требований в некоторых моделях систем массового обслуживания приведет к получению более длительных задержек требований в очереди и более длинных очередей для каждой системы. Есть классы моделей, для которых успех метода общих случайных чисел гаран- тирован. Хейдельбергер и Иглехарт [Heidelberger and. Iglehart, 1979] доказали это для некоторых типов регенеративного моделирования, а в работе Братли, Фокса и Шрейджа [Bratley, Fox and Schrage, 1987] выведены результаты, определяющие условия, когда срабатывает метод общих случайных чисел. Дополнительные ре- зультаты по этому методу представлены в работах [Gal, Rubinstein and Ziv, 1984; Rubinstein, Samorodnitsky and Shaked, 1985; Glasserman and Yao, 1992] Концепцию в принципе схематично иллюстрирует рис. 11.1. На горизонталь- ной оси показаны все возможные значения определенной величины Vk, используе- мой с конкретной целью при моделировании обеих конфигураций системы, на- пример ддя генерирования времени обслуживания. Кривая отображает реакцию результатов моделирования на возможные значения Uk при прочих равных усло- виях. В обеих ситуациях, показанных на графиках верхнего ряда, как Ху, так и Ху реагируют монотонно в одном направлении, значит, можно ожидать, что метод об- щих случайных чисел вызовет необходимую положительную корреляцию, умень- шая таким образом дисперсию. Однако на двух нижних графиках видно, что Ху
11.2. Метод общих случайных чисел 663 и реагируют в противоположных направлениях, следовательно, метод общих случайных чисел может вызывать отрицательную корреляцию и таким образом создавать «обратный эффект», при котором Cov(Xv, < 0, а дисперсия увеличи- вается. В задаче 11.2 рассматривается пример такой ситуации. Рис. ii.1. Реакция модели на применение общих случайных чисел: вверху — метод работает; внизу — метод вызывает обратный эффект Обычно случайные числа сначала используются для генерирования величин из других распределений (см. главу 8), а они затем применяются для продвижения моделирования. Чтобы обеспечить наилучшие условия для выполнения метода общих случайных чисел, прежде всего нужно получить гарантии того, что сами ге- нерируемые величины будут монотонно реагировать на величины Uk на промежу- точном этапе генерирования случайных величин. Далее следует допустить, что оцениваемые показатели монотонно реагируют на генерируемые величины. По этой причине для генерирования случайных величин рекомендуется использовать метод обратного преобразования (см. раздел 8.2.1), поскольку он гарантирует мо- нотонность реакции генерируемых входных величин на случайные числа; из всех методов генерирования случайных величин он также обеспечивает самую силь- ную возможную положительную корреляцию [Bratley et al., 1987; Whitt, 1976]. Но поскольку метод обратного преобразования может выполняться медленно, в случае с некоторыми распределениями (вероятно с теми, для обратных функ- ций распределений которых требуются численные методы) неэффективность его
664 Глава 11. Методы понижения дисперсии вычислений может нивелировать его статистическую эффективность. Поэтому Шмейсер и Качитвичанукул [Schmeiser and Kachitvichyanukul, 1986] разработали более быстрые методы, не связанные с обратным преобразованием, но вызываю- щие положительную корреляцию генерируемых величин, что и требуется для ме- тода общих случайных чисел. Если возможно, следует выполнить небольшое пробное исследование, обеспе- чивающее предварительную проверку эффективности метода общих случайных чисел. В случае с двумя конфигурациями системы выполните п повторных прого- нов каждой модели с использованием общих случайных чисел для получения вы- ходных наблюдений Xv и Ху при j - 1, 2, ..., п. Пусть 5t2(«) и Sf (п) будут выбо- рочной дисперсией (используйте уравнение (4.4)) величин Ху и Ху соответствен- но, a Sz (п) - выборочной дисперсией разности Zj = Х^ - Х%. Поскольку прогоны имитационных моделей выполнялись с общими случайными числами, (п) будет несмещенной оценкой дисперсии Zj при использовании общих случайных чисел. Хотя мы и использовали общие случайные числа, S? (п) окажется несмещенной оценкой Var(Xy), a S\ (п) — несмещенной оценкой Var(Xy), так что 52 (и) + 52 (и)- несмещенная оценка дисперсии Zj, если бы нам пришлось выполнить прогоны без общих случайных чисел. Таким образом, если метод общих случайных чисел рабо- тает, можно ожидать, что будет наблюдаться (rz) < S? (и) + 5^ (и), и разность даст оценку того, насколько метод общих случайных чисел уменьшает дисперсию Zj. Конечно, при таком пробном исследовании придется выполнить дополнитель- ное программирование, необходимое для реализации метода общих случайных чисел, даже если метод общих случайных чисел и не найдет применения позднее. Хотя существуют примеры возникновения обратного эффекта при применении метода общих случайных чисел, на что обратили внимание при моделировании систем управления запасами Райт и Рамсей [Wright and Ramsay, 1979] и Коэниг и Лоу [Koenig and Law, 1982], в целом метод общих случайных чисел является по- лезным инструментом, и об этом следует помнить при сравнении двух или более альтернативных конфигураций системы. Еще один из возможных недостатков метода общих случайных чисел состоит в том, что формальный статистический анализ может стать более сложным из-за вызванной корреляции. Хейкес, Монтгомери и Рардин [Heikes, Montgomery and Rardin, 1976], а также Клейнен [Kleijnen, 1979] предлагают изменения к стандарт- ным критериям дисперсионного анализа. Другие вопросы, касающиеся статистического анализа при наличии корреля- ции, вызванной методом общих случайных чисел, рассматриваются Нельсоном [Nelson, 1987b], также обратившим внимание на подобные проблемы, создаваемые несовместными случайными величинами (см. раздел 11.3). Нозари, Арнольд и Пег- ден [Nozari, Arnold and Pegden, 1987] рассматривают вопрос статистического ана- лиза в общей системе Шрубена и Марголина [Schruben and Margolin, 1978] для стимулирования корреляции в имитационных экспериментах, а Теу и Вильсон [Tew and Wilson, 1992] разработали тесты на возможность применения их мето- дов. Нельсон и Хсу [Nelson and Hsu, 1993] рассматривают методы общих случай- ных чисел в сочетании с процедурой множественного сравнения с лучшей систе- мой (см. раздел 10.3.3), а Клейнен [Kleijnen, 1992] описывает влияние метода
11.2. Метод общих случайных чисел 665 общих случайных чисел на регрессионные имитационные метамодели (см. раз- дел 12.4). Информация, касающаяся использования общих случайных чисел в про- цедурах множественного выбора, содержится в разделе 10.4.4. 11.2.3. Синхронизация Чтобы правильно реализовать метод общих случайных чисел, нужно подобрать или синхронизировать случайные числа при определенном повторном прогоне моделей различных конфигураций системы. В идеале случайные числа, применяе- мые для определенной цели при одной конфигурации системы, используются для той же самой цели при всех других конфигурациях. Например, если определенная величина Uk используется при первых из двух альтернативных конфигурациях системы массового обслуживания, для генерирования определенного времени об- служивания, ее следует использовать при второй конфигурации для генерирова- ния того же самого времени обслуживания (а не для генерирования времени меж- ду поступлениями или какого-либо другого времени обслуживания); в противном случае преимущества, предоставляемые методом общих случайных чисел, могут быть утрачены или (что еще хуже) может возникнуть обратный эффект. В частно- сти, как показывает следующий пример, иногда недостаточно просто начать моде- лирование всех конфигураций с одним и тем же начальным числом потока случай- ных чисел. Пример 11.1. Вспомните два альтернативных варианта установки банкоматов из приме- ров 10.1 и 10.2. Первая система (один банкомат Zippytel) является системой массового обслуживания Л//Л//1, вторая (два банкомата Klunkytel) — системой массового обслу- живания М/М/2. Оба коэффициента занятости равны р - 0,9. Искомые показатели ра- боты — ожидаемая средняя задержка в очереди первых 100 клиентов при условии, что первый клиент прибывает, когда в системе нет клиентов и она свободна. Таким образом, X# — это средняя задержка в очереди в системе М/М/1 в ходе)-го прогона при i = 1, 2. В примерах 10.1 и 10.2 мы генерировали и Х% независимо при 100 независимых про- гонах, но мы могли воспользоваться методом общих случайных чисел. Для применения метода общих случайных чисел мы использовали один поток случай- ных чисел (см. разделы 2.3 и 7.1). Чтобы генерировать как время между поступлениями, так и время обслуживания, мы, прежде чем начать моделирование второй системы, про- сто переустановили начальное число на его исходное значение. В случае с моделью М/1И/1 использовалась логика программы из раздела 1.4, а модель Л//Л//2 была запрог- раммирована аналогично. В частности, время обслуживания клиента генерировалось в тот момент, когда он поступал на обслуживание после любой задержки в очереди. При выполнении модели М/М/1 ко времени регистрации 100-й задержки в очереди из потока получено 219 случайных чисел, тогда как для модели М/М/1 понадобилось толь- ко 201 случайное число для завершения ее выполнения. (Необходимое количество слу- чайных чисел само по себе является случайной величиной, и нельзя сказать, что для од- ной из конфигураций оно всегда будет большим, нежели для другой.) В табл. 11.1 показаны некоторые реальные значения потока случайных чисел (величины £/*), а так- же указано, с какой целью использовалась каждая отдельная величина Uk при всех кон- фигурациях. (*П> обозначает, что случайное число использовалось для генерирования времени между поступлениями, «О» — для генерирования времени обслуживания.) Как видим, первые восемь случайных чисел в целом используются согласованно, a Us — для
666 Глава 11. Методы понижения дисперсии времени между поступлениями в модели первой системы и для времени обслуживания в модели второй системы. Так получается, поскольку, появившись в системе Л//Л//1, требование, время между поступлениями для которого было сгенерировано с помощью величины Ug, застает ее (единственное) устройство обслуживания занятым и становит- ся в очередь (поэтому следующее случайное число Us используется для получения сле- дующего времени между поступлениями), но это же требование застает одно из (двух) устройств обслуживания в системе M/M/l свободным и переходит на обслуживание, поэтому в этот момент случайное число t/9 должно использоваться для генерирования его времени обслуживания. С этого момента цели использования случайных чисел пе- репутаны. (Для этих двух моделей синхронизация не может намного превышать первые четыре случайных числа. Почему?) Фактически оказалось, что 201 случайная величина Uk используемая в обеих системах, только наполовину (точнее 102 числа) согласуется при использовании. После 50 дополнительных прогонов, выполненных нами, выясни- лось, что 50-процентная синхронизация — довольно типичная цифра. Таблица 11.1. Использование случайных чисел при иесинхронизированном методе общих случайных чисел для сравнения систем М/М/1 и 1И/1И/2 Использование Uk Использование 17* k <4 в системе Af/Af/l в системе Af/Af/2 Согласованность 1 0,40 П п Есть 2 0,61 П п Есть 3 0,43 О о Есть 4 0,38 П п Есть 5 0,51 О о Есть 6 0,71 П п Есть 7 0,19 О о Есть 8 0,83 П п Есть 9 0,65 П О Нет 10 0,38 П п Есть И 0,35 О о Есть 12 0,76 п п Есть -- 13 0,45 п п Есть 14 0,91 о п Нет 15 0,47 о п Нет 16 0,48 п О Нет 17 0,85 о о Есть 18 0,80 о о Есть 19 0,72 о п Нет 20 0,70 п п Есть 195 0,60 п о Нет 196 0,42 п о Нет 197 0,57 п о Нет 198 0,86 п п Есть 199 0,10 п о Нет 200 0,15 о п Нет 201 0,33 о о Есть
11.2. Метод общих случайных чисел 667 k uk Использование Uk Использование Vk в системе Af/Af/i в системе М/М/2 Согласованность 202 0,58 П 203 0,83 П 218 0,34 П 219 0,66 О Нельзя ожидать правильного выполнения метода общих случайных чисел, ес- ли мы будем просто повторно использовать одни и те же случайные числа, не об- ращая внимания на цель их применения. Плохая синхронизация в примере 11.1 частично связана с тем, как мы запрограммировали имитационные модели. Конеч- но, синхронизация нарушена неосознанно, мы просто написали программу так, как нам показалось правильным. Она и является правильной. Вопрос написания программы с правильной синхронизацией мы рассмотрим дальше в этом разделе, а также в примере 11.3, где будут показаны статистические последствия игнориро- вания синхронизации. Поддержание правильной синхронизации в целом зависит от структуры моде- ли и параметров, а также от методов, применяемых для генерирования случайных величин, необходимых для моделирования. Для обеспечения синхронизации в хо- де определенного моделирования можно воспользоваться следующими приемами программирования. ♦ Если в процессе моделирования доступны несколько потоков случайных чи- сел (см. разделы 2.3 и 7.1) или несколько различных генераторов случайных чисел, работающих одновременно, представляется возможным выделить по- ток (или генератор) для генерирования случайных чисел для каждого типа входных случайных величин. При моделировании систем массового обслужи- вания, можно, например, один поток определить для генерирования времени между поступлениями, а другой поток — для генерирования времени обслужи- вания. Выделение потоков для определенных целей — в целом удачная мысль, и в большинстве пакетов имитационного моделирования есть средства, обеспе- чивающие использование отдельных потоков случайных чисел. (Однако чис- ло доступных потоков может оказаться не совсем подходящим для больших имитационных моделей.) Более того, поскольку потоки обычно представляют собой всего лишь прилегающие сектора выходных данных одного генератора случайных чисел и поэтому имеют определенную длину, следует быть внима- тельным во избежание их перекрытий при выполнении длительных и мно- жественных прогонов имитационных моделей. Можно вычислить, сколько при- близительно случайных чисел из одного потока будет использовано, после чего сделать соответствующие назначения. Так, при моделировании простой систе- мы массового обслуживания с одним устройством обслуживания, через кото- рую, как ожидается, пройдет около 5000 требований, для каждого из них по- надобится генерировать время между поступлениями и время обслуживания. Если для генерирования всех этих величин используется метод обратного
668 Глава 11. Методы понижения дисперсии преобразования (см. раздел 8.2.1), нам понадобится около 5000 случайных чи- сел из каждого потока; если нам нужно повторить моделирование 30 раз, мы возьмем около 150 000 случайных чисел из каждого потока. Если потоки име- ют длину, например 100 000 чисел, а мы выделим поток 1 для времени между поступлениями и поток 2 для времени обслуживания (как обычно), по мень- шей мере, 50 000 случайных чисел, используемых для времени между поступ- лениями, будут теми же первыми 50 000 случайных чисел, используемыми для времени обслуживания, что нарушит независимость прогонов имитаци- онной модели. Поток 1 Поток 2 Поток 3 ......^100 000 ^100 001...^200 000 ^200 001...^300 000 Время между поступлениями Время обслуживания 4- Чтобы избежать этого, можно пропустить несколько потоков при их распре- делении. Оставить, например, поток 1 (и первую половину потока 2) для вре- мени между поступлениями, а поток 6 (и первую половину потока 7) выде- лить для времени обслуживания. 4 Метод обратного преобразования для генерирования случайных величин мо- жет обеспечить синхронизацию (см. раздел 8.2.1), поскольку при его исполь- зовании нам требуется ровно одно случайное число для получения каждого значения искомой случайной величины. Тогда как, например, при применении метода принятия- отклонения (см. раздел 8.2.4) случайное количество случай- ных чисел с распределением U(0, 1) применяется для получения одного зна- чения искомой случайной величины. И более того, при использовании мето- да обратного преобразования случайные числа преобразуются монотонно (см. раздел 11.2.2), что вызывает наиболее сильную положительную корреляцию между генерируемыми величинами, которые затем служат входными данны- ми моделирования (см. раздел 8.2.1). Такая корреляция, надо надеяться, уси- лится при моделировании и вызовет значительное понижение дисперсии. 4 На определенном этапе моделирования некоторой системы может оказаться полезным «пропустить» некоторые случайные числа. Такая ситуация рассма- тривается в примере 11.4. 4- При моделировании некоторых систем массового обслуживания можно гене- рировать все необходимые значения времени обслуживания требования в мо- мент его поступления, вместо того чтобы получать его значение тогда, когда оно будет действительно необходимо требованию, и сохранить в атрибутах. В приведенном ниже примере 11.4 показана идея реализации метода общих случайных чисел для альтернативных моделей цеха из раздела 2.7.3. Использо- вание такого подхода также позволит гарантировать синхронизацию моделей систем Л4/Л4/1 и ЛГ/Л4/2 в примере 11.1 и предотвратить смешивание приме- няемых случайных чисел, показанное в табл. 11.1. Недостаток этого подхода заключается в том, что для него может понадобиться больший объем компью-
11.2. Метод общих случайных чисел 669 терной памяти, если на один объект будет приходиться слишком много атри- бутов, а общее число объектов, применяемых при моделировании, достигнет значительной величины. Трудности выполнения такого подхода в целом свя- заны с логикой конкретной модели. В частности, если на определенном узле модели выполняется проверка объектов, часто выявляющая недостатки и соз- дающая возможность выполнения обратных циклов, неясно, как можно пред- варительно генерировать и сохранить в качестве атрибутов все значения вре- мени проверки, которые могут понадобиться для такого объекта. 4- Если метод общих случайных чисел используется при множественных повтор- ных прогонах имитационных моделей, очень важно убедиться, что случайные числа синхронизированы для различных моделей в ходе следующих за первым повторных прогонов имитационных моделей. Рассмотрим систему управле- ния запасами из раздела 1.5. Допустим, нам нужно сравнить результаты для стратегии управления запасами (s, S) - (20,40), назовем ее моделью 1, со стра- тегией управления запасами (s, S) - (20, 100) — моделью 2. Перед нами три источника случайности: время между последовательным возникновением спро- са, величина спроса и время доставки, когда заказ передается поставщику. Ес- ли мы выделим поток 1 для генерирования времени между возникновением спроса, поток 2 — для генерирования величины спроса, а поток 3 — для гене- рирования времени доставки, можно обеспечить соответствующую синхрони- зацию использования всех случайных чисел между моделями 1 и 2 в ходе их первого прогона. Более того, логика этих моделей предполагает использова- ние одинакового количества случайных чисел из потока 1 для генерирования времени между возникновением спроса в обеих моделях, и одинаковое коли- чество случайных чисел из потока 2 для генерирования величины спроса в обеих моделях. Но поскольку момент возобновления заказа s равен 20 в обеих моделях, а уровень заказа 5 составляет только 40 в модели 1 и 100 в модели 2, сумма заказа в модели 1 окажется гораздо меньше, чем в модели 2, значит, в модели 1 мы будем размещать большее количество (небольших) заказов, не- жели в модели 2, а это потребует генерирования большего количества значе- ний времени выполнения заказов в модели 1, чем в модели 2. В результате в модели 1 будет использовано большее количество чисел из потока 3, чем в модели 2. Если мы начнем второй прогон обеих имитационных моделей с то- го места, где было прекращено использование потоков 1, 2 и 3 по окончании первого прогона имитационных моделей 1 и 2, мы получим соответствующую синхронизацию времени между возникновением спроса (поток 1) и величи- ной спроса (поток 2), но не времени доставки (поток 3). Следовательно, при повторных прогонах имитационных моделей, следующих за первым, не будет обеспечена синхронизация времени доставки. Можно прекращать использо- вание потоков 1, 2 и 3 после первого прогона имитационных моделей и начи- нать второй прогон с использованием (например) потоков 4, 5 и соответст- венно для генерирования времени между возникновением спроса, величины спроса и времени доставки, а затем при третьем прогоне перейти к использо- ванию потоков 7, 8 и 9, и т. д. Если предположить, что используемое количе- ство чисел не будет превышать размер потока для каждого источника случай- ности в ходе любого из повторных прогонов, и что у нас достаточно потоков
670 Глава 11. Методы понижениядисперсии случайных чисел для выполнения нужного числа прогонов имитационных мо- делей, описанный выше способ поможет обеспечить соответствующую син- хронизацию времени выполнения заказов в ходе всех прогонов имитацион- ных моделей, и это улучшит результаты применения метода общих случайных чисел. Существует ли другое средство, требующее меньшее число потоков? В задаче 11.17 и примере 11.6 решается вопрос о том, должно ли время достав- ки быть одинаковым для двух моделей. Даже овладев такими программными приемами, можно не добиться полной синхронизации. Кроме того, усилия, потраченные на программирование, затраты компьютерного времени и памяти на вычисления, необходимые для обеспечения полной синхронизации, могут не стоить достигнутого понижения дисперсии. И поэтому мы можем рассмотреть возможность синхронизации некоторых вход- ных случайных величин и независимого генерирования остальных для различных конфигураций системы. В сложной сети систем массового обслуживания может оказаться, *гго легко синхронизировать время между поступлениями, но не время обслуживания. Выигрыш от использования метода общих случайных чисел при анализе результатов и степень синхронизации зависят от конкретной ситуации. 11.2.4. Примеры Поскольку возможность применения, эффективность и соответствующая синхро- низация общих случайных чисел в целом зависят от модели, дальше будут пред- ставлены примеры их использования в определенных ситуациях. Пример 11.2. Повторно обратимся к сравнению моделей Л//ЛГ/1 и ЛГ/Л//2 из приме- ра 11.1,но на этот раз обеспечим правильную синхронизацию. Используя отдельные по- токи для реализации метода общих случайных чисел, мы оценили влияние различных степеней синхронизации по четырем последовательностям 100 пар имитаций каждая. В первой последовательности, обозначенной Н в табл. 11.2, все прогоны были независи- мыми, то есть метод общих случайных чисел не применялся вообще. Во второй последо- вательности (обозначенной П в табл. 11.2) значения времени между поступлениями ге- нерировались для обеих моделей с использованием общих случайных чисел, а времени обслуживания — независимо. В третьей последовательности (обозначенной О) значе- ния времени между поступлениями генерировались независимо, а времени обслужива- ния — с использованием общих случайных чисел. Таким образом, у обеих систем име- лась «одинаковая» упорядоченная последовательность поступающих на обслуживание требований, при этом требований к модели М/М/2 было ровно в два раза больше, чем требований к модели ЛГ/Л4/1. Наконец, четвертая последовательность (П и О) была полностью синхронизирована, в ней совпадали и значения времени между поступления- ми, и значения времени обслуживания. Эти четыре схемы можно представить следую- щим образом. Н Разные требования (различия определяются требованиями к их обслуживанию) поступают в обеих моделях в разное время. П Разные требования поступают в обеих моделях в одно и то же время. О Одинаковые требования поступают в обеих моделях в разное время. П и О Одинаковые требования поступают в обеих моделях в одно и то же время. По 100 парам имитаций для каждых из четырех случаев мы получили обычную несме- щенную оценку 52(100) дисперсии Var(^), применив уравнение (4.4) к величинам Zj.
11.2. Метод общих случайных чисел 671 Отсюда половина длины номинального 90-процентного доверительного интервала для С, составляет l,655(100)/V100. Мы вычислили также долю из 100 пар, для которых было бы принято «неправильное» решение, то есть когда Ху < Ху (поскольку Е(Ху) > Е(Ху), о чем говорилось в примере 10.1). Чтобы выполнить непосредственную проверку того, вызовет ли метод общих случайных чисел необходимую положительную корреляцию, мы также получили оценку корреляции между Ху и Ху с помощью уравнения £И/ -|^(100)][Х2> - Х2(100)] Cor(Xv,X2y) = - ——^(100)52(100) > где Х{ (100) — выборочное среднее величин Ху в ходеу-го прогона, а 5?(100) — выбороч- ная дисперсия величин Ху в ходе j-ro прогона (см. задачу 4.25). Из табл. 11.2 видно, что в этом случае оценка понижения дисперсии, получаемая при по- лной синхронизации (П и О), в сравнении с независимой выборкой (Н), окажется весо- мой: наблюдается более чем 99-процентное понижение дисперсии, вероятно, потому что обе системы очень подобны. Соответственно половина длины доверительного интерва- ла понизилась с 0,70 (Н) до 0,04 (П и О), то есть наблюдается почти 95-процентное со- кращение. Но потребуется определить количество повторных прогонов имитационной модели каждой системы при независимой выборке, чтобы добиться точности оценки Z(ri) для С, (вероятно, измеряемой с помощью половины длины доверительного интерва- ла), равной точности, получаемой с помощью полностью синхронизированных общих случайных чисел. Если мы выполнили nz повторных прогонов модели каждой систе- мы при независимой выборке, половина длины будет приближенно пропорциональна J18,O0/ni (пренебрегаем степенями свободы). В случае, когда мы выполняем пс повтор- ных прогонов имитационной модели каждой системы с применением полностью син- хронизированных общих случайных чисел, половина длины будет приближенно пропор- циональна ^0,07/?%;. Приравняв эти два квадратных корня, получаем п, /пс = 257,14, то есть нам понадобится в 250 раз больше прогонов имитационной модели при независи- мой выборке для получения той же точности, которой мы добились с помощью полнос- тью синхронизированных общих случайных чисел. Таблица 11.2. Статистические результаты применения общих случайных чисел при сравнении моделей Л//Л4/1 и М/М/1. Оцениваемый показатель Н П О ПиО №(100) 18,00 9,02 8,80 0,07 Половина длины 90-процентного доверительного интервала 0,70 0,49 0,49 0,04 Р 0,52 0,37 0,40 0,03 -0,17 0,33 0,44 0,995 Оценка вероятности принятия неправильного решения уменьшается с 52 до 3 % (см. при- мер 10.1). Обратив внимание на оценку корреляций, можно убедиться, что полностью синхронизированные общие случайные числа вызвали чрезвычайно сильную корреля- цию между выходными результатами для обеих систем (это объясняет сильное пониже- ние дисперсии). В двух случаях с частичной синхронизацией наблюдались более слабые (но все еще положительные) корреляции и соответственно не столь существенное пони- жение дисперсии, а также лишь ограниченное снижение.
672 Глава 11. Методы понижения дисперсии Эффект применения метода общих случайных чисел (полностью синхронизированных) можно выразить графически несколькими способами. На рис. 11.2, а представлены ре- зультаты для 100 пар отдельных повторных прогонов имитационных моделей при ис- пользовании независимой выборки в зависимости от числа повторных прогонов. Тем- ные кружки представляют среднюю задержку в очереди для модели 1И/1И/1 (величины Ху), а светлые кружки используются для случая с моделью М/М/2 (величины Х^). Для каждого фиксированного значения / величины Ху и Ху соединены с помощью верти- кальной линии, длина ее составляет [Zj. Наблюдаются 52 пары, для которых светлый кружок (М/М/2) находится вверху линии, а темный (М/М/1) — внизу. Это неправиль- ный порядок (относительно их математических ожиданий), он соответствует р - 0,52 в столбце Н табл. 11.2. На рис. 11.2, б точно также представлены результаты моделиро- вания с полностью синхронизированными общими случайными числами. На нем явно прослеживается лучший характер вёдичин Z — нет ни одной длинной вертикальной ли- нии, подобной тем, что есть на рис. 11.2, а. Так происходит потому, что дисперсия |XV - - Ху\ меньше при наличии положительной корреляции, поскольку большое значение Ху имеет тенденцию сопровождаться большим значением Ху, а небольшие значения Ху и Ху также, как правило, возникают вместе. Более того, на рис. 11.2, б есть только три слу- чая, где светлый кружок модели М/М/2 расположен вверху линии, а темный кружок М/М/\ — внизу, они соответствуют р = 0,03 в столбце П и О табл. 11.2. 15 Метод общих случайных чисел (П и О) M/M/2(XV) о .о 8? в8-вв8Ч<? в \ °Лв в%.“ ° ’в1*5 8°^' J______ 0 0 20 40 60 80 100 Повторный прогон J б Рис. 11.2. Сравнение моделейМ/М/\ и М/М/2: а, б— отдельные повторные прогоны hw1° 5 о 8 8 - 8 в#в 8 о 8, ~ ° I 8 в 8 в8 8
11.2. Метод общих случайных чисел 673 Прямой способ обнаружения корреляции, вызванной общими случайными числами в этом примере, представлен на рис. 11.3, где изображены пары (Ху, X2j) Для модели- рования с независимой выборкой (светлые треугольники), так и для моделирования с полностью синхронизированными общими случайными числами (темные треугольники). Если у независимых пар не прослеживается никакой структуры, то пары, полученные при моделировании с полностью синхронизированными общими случайными числами, образуют практически прямую (С положительным наклоном) линию, что соответствует очень сильной оценке положительной корреляции (0,995) в столбце П и О табл. 11.2. Рис. 11.3. График корреляции средних задержек в очереди для модели М/М/2 (вертикальная ось) в сравнении со средними задержками в очереди для модели ЛГ/Л//1 (горизонтальная ось) В паре п - 1 точечных графиков в нижней части рис. 11.4 каждый квадрат представляет величину Zp изображенную в соответствии со шкалой, показанной внизу. Светлые квад- раты являются результатами моделирования с независимой выборкой, а темные квадра- ты (располагающиеся на графике непрерывно) являются результатами моделирования с использованием полностью синхронизированных общих случайных чисел. Область распространения величин Zj, полученных при моделировании с общими случайными числами около их математического ожидания (Q, гораздо уже, чем в случае с независи- мой выборкой. На рис. 11.4 также показаны графики для 100 наблюдений по Z(n) для п - 5,10 и 20, изо- браженных по той же шкале (что соответствует подобным случаям на рис. 10.2 при моде- лировании с независимой выборкой). Поразительно, что размах гораздо меньше у на- блюдений, полученных при моделировании с общими случайными числами, когда п -1, нежели у наблюдений, полученных при независимой выборке, при и - 20. Следователь- но, в этом случае при применении метода общих случайных чисел получаются гораздо
674 Глава 11. Методы понижения дисперсии лучшие результаты, чем при выполнении в 20 раз большего числа прогонов, но с незави симой выборкой! 3 Рис. 11.4. Сравнение моделей Af/Af/l и М/М/2-. различия В отличие от примера 11.1, в примере 11.2 мы реализовали метод общих слу- чайных чисел с правильным способом синхронизации, выделив отдельные потоки для двух различных источников случайности. В следующем примере показана ста- тистическая значимость обеспечения правильной синхронизации. Пример 11.3. Мы повторно выполнили эксперименты из примера 11.2, условно вос- пользовавшись методом общих случайных чисел (Пи О), но на этот раз мы в целом пре- небрегли синхронизацией. Наши программы все еще «правильны», то есть они точно моделируют оба варианта системы. Создание таких программ совершенно реально, в них нет преднамеренного нарушения синхронизации. В программе 1 требования к обслужи- ванию генерируются при поступлении, мы везде используем один и тот же поток слу- чайных чисел. Но в результате все равно была получена правильная синхронизация, о чем свидетельствует табл. 11.3. (Числа отличаются от чисел в столбце П и О табл. 11.2, по- скольку в том случае использовались отдельные потоки.) Таблица 11.3. Статистические результаты с правильно (программа 1) и неправильно (программы 2 и 3) синхронизированными общими случайными числами при сравнении моделей М/М/Х и М/М/2 Оцениваемый показатель Программа 1 Программа 2 Программа 3 5^(100) 0,07 16,80 12,00 Половина длины 90-процентного доверительного интервала 0,04 0,67 0,57 Р 0,07 0,43 0,42 Co^Xjy.Xjj) 0,997 0,02 -0,03 В программе 2 из табл. 11.3 используется один поток, но в ней время обслуживания гене- рируется не при поступлении, а при переходе требования на обслуживание. В этой ситу- ации случайные числа будут смешаны относительно целей их применения (см. при- мер 11.1). Как видно из табл. 11.3, полученные результаты не намного лучше результатов в столбце Н табл. 11.2, поскольку преимущества (практически все) от использования
11.2. Метод общих случайных чисел 675 метода общих случайных чисел потеряны. Программа 3 будет такой же, как программа 2, только в ней следующее время между поступлениями генерируется в конце подпрограм- мы поступления (см. раздел 1.4), что правомерно для программы с отсутствующей син- хронизацией. И вновь мы не видим в ней каких-либо преимуществ. В примерах, до сих пор рассматривавшихся в этой главе, сравнивались одни и те же конфигурации систем М/М/1 и М/М/2. Это очень простые системы, где нетрудно обеспечить правильную синхронизацию общих случайных чисел. Кроме того, эти системы достаточно подобны, что, вероятно, объясняет столь резкое по- нижение дисперсии, отмеченное нами. В следующих двух примерах задействова- ны гораздо более сложные модели, а также рассматривается использование общих случайных чисел со установившимися параметрами (см. разделы 9.3 и 9.5). Пример 11.4. Посмотрите еще раз информацию, представленную в конце раздела 2.7.3, касающуюся модели производственной системы. Пусть, как и в трех последних строках табл. 2.1, конфигурации системы 1, 2 и 3 будут получены при размещении дополни- тельного станка соответственно на рабочих местах 1, 2 и 4; пусть также v( будет устано- вившейся ожидаемой полной средней общей задержкой работ в системе с конфигурацией i при i “ 1,2 и 3. Предположим, нам требуется оценить ^12 “ vi ~ v2> £13 “ vi ~ vs и Сгз “ = v2 -v3, выполнив моделирование трех конфигураций системы продолжительностью 100 восьмичасовых дней каждое, но первые 10 из этих 100 дней рассматриваются как пе- реходной период работы, а данные собираются только по 90 последним дням (см. зада- чу 2.7). Пусть Ху — полная средняя общая задержка работ в течение 90 дней для системы с конфигурацией i, зарегистрированной в ходеу-го повторного прогона имитационной модели, a Zi2j=Ху - Ху, Zty -Ху- Ху, Zjy — Ху- Ху. Допускается, что 10-дневного пере- ходного периода работы достаточно, так что EfZ^') « ^i2- Мы выполнили прогоны моделей различных конфигураций системы независимо друг от друга (они обозначены Н в табл. 11.4), а также воспользовались методом общих слу- чайных чисел во всех трех случаях следующим образом. Для всех конфигураций систе- мы мы использовали одинаковые значения времени между поступлениями работ и одну и ту же последовательность типов работ. Затем работа поступала в систему, определял- ся ее тип, и мы немедленно генерировали требования к обслуживанию (они понадобятся позднее, по мере ее движения по маршруту в системе), сохраняя их как дополнительные атрибуты этой работы. Когда начиналось обслуживание работы на определенном рабо- чем месте, время ее обслуживания бралось из атрибута, соответствующего этому рабо- чему месту. Таким образом, мы использовали синхронизированные общие случайные числа для всех источников случайности. В этом примере все типы случайных величин генерируются в один и тот же момент модельного времени (при поступлении работы), следовательно, для всех источников случайности можно использовать один поток слу- чайных чисел. Таблица 11.4. Метод общих случайных чисел при сравнении трех конфигураций производственной системы Оценка дисперсии н Метод общих случайных чисел Понижение дисперсии,% 4(10) 6,27 1,46 77 4(Ю) 10,40 2,35 77 4(10) 23,08 0,87 96
676 Глава 11. Методы понижения дисперсии Пусть 5?,-2(10) будет обычной несмещенной оценкой вычисленной по 10 независимым прогонам с использованием независимой выборки, и метода общих слу- чайных чисел (см. табл. 11.4). В этом случае метод общих случайных чисел ведет к пони- жению дисперсии на 77-96 %, в зависимости от того, какие'из двух стратегий будут сравниваться. Что касается количества прогонов имитационных моделей, необходимого для получения искомой половины длины доверительного интервала, то здесь можно по- ступать как и в примере 11.2 и убедиться, что для независимой выборки требуется в 4,29 (" 6,27/1,46) раза больше повторных прогонов, чем при использовании метода общих случайных чисел при сравнении конфигураций 1 и 2; в 4,43 раза больше при сравнении конфигураций 1 и 3, более чем в 26 раз больше при сравнении конфигураций 2 и 3. Пример 11.5. В примере 10.5 сравнивались две конфигурации производственной систе- мы из примера 9.25. При конфигурации 2 среднее время проверки было меньше. Нас вновь интересует установившееся среднее время пребывания в системе деталей, поэто- му мы воспользовались методом репликации-удаления (см. раздел 9.5.2) и разработали графики со скользящим средним для обеих конфигураций (см. рис. 10.3). Пусть и тп, опять будут соответственно продолжительностью переходного периода работы (изме- ряемой в количестве деталей) и минимальной продолжительностью прогона для систе- мы с конфигурацией i. Получено тх - тп2 = 9445, lt ~ 1929 и 12 = 1796. Мы выполнили п - - 20 независимых пар прогонов (как в примере 10.5), но на этот раз использовали от- дельные потоки для синхронизации случайных чисел во всех шести источниках случай- ности (время между поступлениями деталей, время обработки детали станком, время проверки, положительный или отрицательный результат проверки, рабочее время стан- ка (станок исправен) и время ремонта станка (станок неисправен)). Мы вновь создали 90-процентный доверительный интервал для разности между значениями установивше- гося среднего времени пребывания деталей в системе, полученными по 20 повторным прогонам, и получили 1,98 ± 0,18. Вспомните, что в примере 10.5 соответствующий ин- тервал, полученный по 20 прогонам модели каждой конфигурации системы практически с той же продолжительностью, при которой удалялось такое же число начальных дан- ных, составлял 2,36 ± 0,31. Значит, метод общих случайных чисел позволил уменьшить размер доверительного интервала для разности между оцениваемыми показателями на 42 % от его исходного размера, что соответствует 66-процентному понижению диспер- сии. Более прямым доказательством правильности работы метода общих случайных чи- сел является оценка корреляции (см. пример 11.2) между Х1;- и X2j, равная 0,9§. Следующая пара примеров с использованием метода общих случайных чисел касается модели системы управления запасами, для которой возможность полной синхронизации всех источников случайности вызывает сомнение. Таким образом, мы генерировали некоторые входные данные с использованием должным образом синхронизированных общих случайных чисел, а другие — независимо. Пример 11.6. Возьмем модель системы управления запасами (определенную в разде- ле 1.5), которую мы рассматривали в примере 10.3. Вспомните, что (5,5) равнялось (20, 40) для конфигурации 1 и (20,80) для конфигурации 2. Можно организовать так, чтобы для каждой конфигурации спрос одинаковой величины возникал в одно и то же время, то есть мы используем общие случайные числа (с помощью различных потоков) для ис- точников случайных величин, определяющих величину спроса и время между возник- новением спроса. Однако в связи с различными значениями з и 5 заказы будут, как пра- вило, размещаться в различное время и на различное количество товара в моделях обеих стратегий. Следовательно, нам не ясно, как можно сопоставить случайные величины времени доставки (и должны ли мы их сопоставлять вообще, см. задачу 11.17), поэтому мы просто генерировали их независимо для различных конфигураций.
11.2. Метод общих случайных чисел 677 Как и в примере 10.3, мы выполнили и - 5 независимых пар имитаций, но в этом случае с (частичным) применением общих случайных чисел, как только что описывалось. Мы получили Z(5) = 3,95 и Var[Z(5)] = 0,27, так что 90-процентный t-парный доверительный интервал составил [2,84; 5,06]. Сравнив этот результат с результатами, полученными при независимой выборке, из примера 10.3, устанавливаем, что оценка дисперсии пони- зилась на 89 %, а половина длины доверительного интервала становится практически на 67 % меньше. Таким образом, понадобится около 45 повторных прогонов каждой систе- мы при независимой выборке, чтобы получить такой же небольшой доверительный ин- тервал, как и при частичном использовании общих случайных чисел в каждом из 5 по- вторных прогонов. В примере 11.7 показано, как можно усилить действие методов, используемых для получения доверительного интервала при сравнении более чем двух различ- ных систем (см. раздел 10.3), с помощью общих случайных чисел. Пример 11.7. Рассмотрим пять различных стратегий управления запасами, определен- ных в табл. 10.4. Как и в примере 10.6, сначала рассматриваем стратегию 1, где (з, 5) = “ (20,40), как образец для сравнения четырех других стратегий. Мы повторно выполня- ем анализ примера 10.6 снова с п - 5 повторными прогонами имитационной модели для каждой стратегии, но на этот раз мы частично используем общие случайные числа (см. пример 11.6, для всех пяти стратегий). Поскольку нам требуется, чтобы общий дове- рительный интервал был равен, по меньшей мере, 90 %, мы воспользовались нераве- нством Бонферрони (см. раздел 10.3) для создания 97,5-процентных доверительных ин- тервалов для - pi (см. пример 10.6). В этом случае, однако, общие случайные числа предполагают, что результаты, полученные в ходе заданного прогона (/) для различных пяти стратегий, не окажутся независимыми, и это не позволяет использовать метод Вел- ча для создания доверительного интервала. Таким образом, в табл. 11.5 содержатся только t-парные интервалы, соответствующие табл. 10.6. Значения половины длины, по- лученные в данном случае, все же несколько меньше представленных в табл. 10.6. Более того, сравнивая только t-парные подходы, метод общих случайных чисел позволил уста- новить еще одно статистически значимое различие (между стратегией 2 и образцом), ко- торое мы не смогли найти в примере 10.6. Таблица 11.5. Отдельные 97,5-процентные доверительные интервалы для сравнения всех стратегий с (щ - ц„ i - 1, 2, 3, 4, 5)' при использовании общих случайных чисел; i Sq-*Г Доверительный интервал на основе парного t-критерия Половина длины Интервал 2 -3,95 1,83 (-5,78; -2,12)* 3 1,02 2,65 (-1,63; 3,68) 4 5,94 1,41 (4,53; 7,35)* 5 19,69 2,28 (17,41; 21,97)* • Существенное различие. На анализ при попарном сравнении каждой стратегии со всеми остальными (см. раздел 10.3.2) тоже можно повлиять с помощью метода общих случайных чисел; в примере 10.7 такое сравнение выполнялось при независимой выборке. Поскольку теперь у нас 10 доверительных интервалов, мы принимаем значения для каждого из них на уровне 99 % с целью добиться общего доверительного уровня, равного,
678 Глава 11. Методы понижения дисперсии по меньшей мере, 90 %. Все интервалы, полученные при применении общих слу- чайных чисел (снова будет действителен только t-парный подход), показаны в табл. 11.6. Они вновь свидетельствуют о существенном уменьшении длины дове- рительного интервала с помощью общих случайных чисел во всех случаях, кроме одного (i2 = 5, й - 2). В этом случае t-парный интервал при независимой выборке (22,12 ± 3,80), приведенный в табл. 10.7, меньше интервала, полученного при использовании общих случайных чисел (23,64 ± 5,02) в табл. 11.6. Посмотрев на табл. 10.7, мы видим — здесь интервал оказался наименьшим, это вероятно связано с простыми выборочными флуктуациями; во всяком случае, разница существенна в обоих случаях. Как можно убедиться по табл. 11.6, в 8 из 10 доверительных интервалов, полученных при использовании метода общих случайных чисел, от- сутствует 0 (что указывает на статистически значимую разницу между соответст- вующими стратегиями), тогда как только в 6 или 7 интервалах из табл. 10.7 (в за- висимости от использовавшегося метода) 0 отсутствовал. Следовательно, нам удалось усилить сравнение этих стратегий без дополнительной выборки. Таблица 11.6. Отдельные 99-процентные доверительные интервалы для попарного сравнения каждой стратегии со всеми остальными (щ2 - при i, < i2) с использованием общих случайных чисел Доверительный интервал на основе парного t-критерия 2 3 4 5 1 -3,95 ± 2,41* 1,02 ± 3,49 5,94 ± 1,86* 19,69 + 3,00* 2 4,97 ± 5,62 9,89 ± 3,68* 23,64 ± 5,02* ч 3 4,92 + 2,39* 18,67 + 1,69* 4 13,75 ± 2,03* * Существенное различие. 11.3. Дополняющие случайные величины Дополняющие случайные величины — это метод понижения дисперсии, применяе- мый только при моделировании одной единственной системы, как и все описан- ные далее в этой главе МПД. Как и при использовании метода общих случайных чисел, мы стараемся вызвать корреляцию между отдельными прогонами, но на этот раз отрицательную. Основная идея, восходящая к работе Хаммерсли и Мортона [Hammersley and Morton, 1956], посвященной моделированию по методу Монте-Карло, заключается в выполнении пар прогонов имитационной модели таким образом, чтобы -«неболь- шое» значение наблюдения, полученное в результате одного из прогонов, как бы компенсировалось за счет «большого» значения наблюдения, полученного в ходе другого прогона; то есть оба наблюдения являются отрицательно коррелирован- ными. Тогда, если мы воспользуемся средним для двух значений наблюдений в па- ре как основной информационной точкой анализа, оно будет ближе к общему ма- тематическому ожиданию ц наблюдения (его оценку мы хотим получить), чем если бы оба наблюдения в паре были независимыми.
11.3. Дополняющие случайные величины 679 В своей самой простой форме метод дополняющих случайных величин направ- лен на вызов отрицательной корреляции с помощью дополняющих случайных чи- сел для управления в паре прогонов. То есть, если Uk — отдельное случайное число, используемое с определенной целью (например, для генерирования i-ro времени обслуживания) в ходе первого прогона, мы используем 1-Ukc той же целью в хо- де второго прогона. Можно использовать 1-17* вместо прямого вывода из генера- тора случайных чисел, поскольку U ~ U(0, 1) предполагает, что 1 - U ~ U(0, 1). Важно, что использование Uk в одном прогоне имитационной модели и допол- няющей величины 1 - Uk в парном прогоне должно быть синхронизировано, то есть эти две величины должны использоваться с одной и той же целью. В против- ном случае преимущество метода несовместных случайных величин может быть утрачено, либо даже может возникнуть обратный эффект. Например, если величи- на Uk имеет большое значение и используется с помощью (непосредственно) метода обратного преобразования для генерирования времени обслуживания, это может привести к получению большого значения времени обслуживания, что вызовет перегрузку очереди в ходе первого из пары прогонов. Тогда 1 - Uk будет неболь- шим, и если бы оно ошибочно использовалось для генерирования времени между прибытиями в ходе второго прогона, такое время между прибытиями также оказа- лось бы небольшим, что опять-таки привело бы к перегрузке очереди, и мы полу- чим эффект, прямо противоположный искомому. В этом случае также можно использовать большинство приемов программирования, предназначенных для синхронизации случайных чисел (о них шла речь в разделе 11.2), например выде- ление потоков случайных чисел. Более того, можно обратиться к «частичйому» использованию дополняющих величин, то есть некоторые входные данные будут генерироваться как дополняющие величины, а остальные — независимо внутри пары, если полная синхронизация окажется затруднительной или же окажется не- целесообразным использовать дополняющие величины для всех входных данных (см. пример 11.10). Для этого недостаточно просто просмотреть программный код и заменить все U на 1 - U. Как и в случае с общими случайными числами, у дополняющих величин есть своя математическая основа. Предположим, мы выполняем п пар прогонов имита- ционной модели, в результате имеем наблюдения (X/0, Х/2)),..., (Х„(1), Х„(2)), где Х& получено при первом прогоне (с использованием только величин U) из j-й па- ры, а Х& — в ходе дополняющего прогона (с использованием величин 1 - U, син- хронизированных соответствующим образом) из j-й пары. Как Х,(1), так и Х^} яв- ляются правильными данными наблюдений, так что Е(Х^) - Е(Х^) - р. Кроме того, каждая пара не зависит от любой другой пары, то есть при величины Х^} и Xj'2> являются независимыми, невзирая на то, будут ли 4 и 12 равными. (Об- ратите внимание, что общее число прогонов имитационной модели, таким обра- зом, составляет 2п.) Для j - 1,2 п пусть Х^ - (Х,(1) + Xj(2))/2, а среднее величин X), Х(п) будет (несмещенной) точечной оценкой р - E(X/t)) - E(Xj) - £[Х(п)]. Тогда Var<X>) Var(X<1>) + VaI(X<2>) + 2Cov(X<1>,X<2>) VarjA(n)] =------— =-------------------------------------— n An
680 Глава 11. Методы понижения дисперсии поскольку величины Х} являются независимыми и одинаково распределенными. Если два прогона в паре выполняются независимо, Cov(X/‘\ Xf2*) - 0. С другой стороны, если бы мы могли вызвать отрицательную корреляцию между JQ(1> и Х}2\ то Cov(A^(1), Xjm) < 0, это привело бы к понижению Var[X(n)]; такова цель метода дополняющих величин. При использовании дополняющих величин у нас, как и в случае с общими слу- чайными числами, нет полной уверенности в том, что этот метод работает. Его вы- полнимость и эффективность, вероятно, еще больше зависят от модели, нежели у метода общих случайных чисел. Однако аналитически доказано, что иногда до- полняющие величины ведут к понижению дисперсии, хотя величина понижения не известна [Andreasson, 1972; George, 1977; Hammersley and Handscomb, 1964; Mitchell, 1973; Wilson, 1979; Rubinstein, Samorodnitsky and Shaked, 1985; Bratley, Fox and Schrage, 1987]. В целом заранее не известно, какого понижения дисперсии можно достигнуть. Проведение экспериментального исследования, подобно опи- санному в случае с общими случайными величинами, поможет установить, подхо- дит ли использование дополняющих величин в каждом конкретном случае. Основное требование, предъявляемое к модели и направленное на выполнение метода дополняющих величин, состоит в том, чтобы ее отклик на случайное число (используемое с определенной целью), был монотонным в обоих направлениях. Например, во многих моделях систем массового обслуживания большое случайное число, применяемое для генерирования времени обслуживания (непосредственно с помощью метода обратного преобразования), приводит к получению большого значения времени обслуживания и ведет к увеличению перегрузки. Следовательно, мы ожидаем, что реакция показателей перегрузки на случайные числа, применяе- мые для генерирования времени обслуживания, будет монотонно возрастающей. Обратный эффект дополняющих величйн может возникнуть, если, например, от- кликом модели станут большие значения в ответ на небольшие значения величин Uk, меньшие значения при Uk около 0,5, а затем опять большие значения при боль- ших значениях Uk (см. задачу 11.3). Мы советуем аналитикам предоставлять неко- торые свидетельства того, что метод дополняющих величин будет работать — то ли исходя из «физических» свойств структуры модели, то ли устанавливая это в ходе начального эксперимента. Как и в случае с общими случайными числами, для генерирования входных величин модели предлагается использовать метод обратного преобразования для обеспечения нужной монотонности результатов, гарантируя ее, по крайней мере, на этом промежуточном этапе генерирования ве- личин. Франта [Franta, 1975] представляет примеры, когда метод дополняющих величин не дал результатов при использовании других методов генерирования, но Шмейсер и Качитвичанукул [Schmeiser and Kachitvichyanukul, 1986] разработали быстрые методы, не связанные с обратным преобразованием, обеспечивающим нужную отрицательную корреляцию на промежуточном уровне. Пример 11.8. Рассмотрим систему массового обслуживания Af/Af/l с р - 0,9 ( как в при- мерах 11.1-11.3), так чтобы на этот раз наблюдение^® было средним значением 100 за- держек требований в очереди. Исходя из структуры модели, кажется обоснованным допустить: большие значения времени между поступлениями делают Хр меньше (и на- оборот), а большие значения времени обслуживания, как правило, приводят к получе-
11.3. Дополняющие случайные величины 681 нию большихXj®. Кроме того, если мы воспользуемся методом из раздела 8.3.2 для гене- рирования экспоненциально распределенных величин времени между поступлениями и времени обслуживания, можно ожидать, что метод дополняющих величин приведет к получению положительных результатов. Выполнили по 100 независимых пар прого- нов с использованием независимой выборки внутри пары (при этом Соу(Х/^, Х,(2>) “ 0), а также с использованием дополняющих величин, синхронизированных путем выделе- ния отдельных потоков случайных чисел для генерирования значений времени между поступлениями и значений времени обслуживания. Таблица 11.7. Статистические результаты для дополняющих величин системы массового обслуживания ЛГ/ЛГ/1 Оценка показателя Независимая выборка Дополняющие величины №(100) 4,84 1,94 Половина длины 90-процентного доверительного интервала 0,36 0,23 Сог(Х}1),Х]2)) -0,07 -0,52 Результаты, приведенные в табл. 11.7, доказывают, что дополняющие величины позво- лили понизить оценку дисперсии 5^(100) величины Xj на 60 %. Если мы использовали 100 величин Xj при создании 90-процентного доверительного интервала для ц, половина его длины будет равна 0,36 при независимой выборке, она же уменьшится до 0,23 при использовании дополняющих величин (36-процентное сокращение). Дополняющие величины здесь вызывают искомую отрицательную корреляцию, что подтверждается оценкой корреляции: между Xfl> и Xf® она составляет - 0,52 в случае применения до- полняющих величин. Тогда можно пренебречь дополнительными расходами (связан- ными с применением дополняющих величин), в сравнении с независимой выборкой, поскольку для дополняющих величин практически не требуется дополнительного про- граммирования, а только вычитание случайных чисел из 1. Для обоих методов требуется 200 независимых прогонов имитационных моделей. На рис. 11.5, а показаны отдельные значения величин (темные кружки) и Xj^ (светлые кружки), полученные в результате моделирования с независимой выборкой для всех значений/ Полужирная линия соединяет значения Xj между различными/ На рис. 11.5, б точно также показаны отдельные значения величин Х^ и Х}-2\ но на этот раз полученные при использовании дополняющих величин; мы видим, что на нем полужир- ная линия не настолько изломана, что свидетельствует о более низкой дисперсии вели- чин Xj в случае с дополняющими величинами. На рис. 11.5, б также можно увидеть, что в прогонах с дополняющими величинами про- является тенденция к тому, что значения находящиеся над пунктирной линией (выше ц), уравновешиваются со значениями Х^(2), расположенными под ней, в отличие от графика на рис. 11.5, а для независимой выборки. Меньшая изменчивость величин Xj при использовании дополняющих величин более четко проявляется на рис. 11.6, где явно виден более узкий размах величин Xj. Наконец, на рис. 11.7 показан график корреляции пар (^(1), -Х/2)), полученных как при неза- висимой выборке (светлые треугольники), так и с использованием дополняющих вели- чин (темные треугольники). На нем видна некоторая отрицательная корреляция в слу- чае с величинами, полученными с использованием дополняющих величин, поскольку в расположении светлых треугольников прослеживается наклон вниз.
682 Глава 11. Методы понижения дисперсии О 20 40 60 80 100 Повторный прогон/ б Рис. 11.5. Отдельные прогоны модели системы массового обслуживания M/1W/1: а — независимая выборка; б — дополняющие величины Независимая выборка □ Дополняющие величины ц (точное) — - 1 1 1 L1 • 1 1 । । । 1 । । ° 5 Х) 10 Рис. 11.6. Средние, полученные по двум значениям в паре, для модели системы массового обслуживания М/М/\. при использовании независимой выборки и дополняющих величин
11 -3- Дополняющие случайные величины 683 Рис. 11.7. График корреляции для пар прогонов модели системы массового обслуживания ЛГ/ЛГ/1 при использовании независимой выборки и дополняющих величин Величина корреляции, вызванной дополняющими величинами в примере 11.8, не была столь большой, как та, что наблюдалась при использовании общих слу- чайных чисел при сравнении систем массового обслуживания 1И/1И/1 и 1И/1И/2 в примере 11.2, поэтому с помощью метода дополняющих величин мы добились меньшего сокращения дисперсии, нежели с помощью метода общих случайных чисел. Это хорошая иллюстрация того, как методы понижения дисперсии в целом зависят от характеристик моделей. В примере 11.2 единственное отличие во вход- ных величинах для моделей обеих конфигураций (при полностью синхронизиро- ванных общих случайных числах, обозначаемых П и О) проявлялось в том, что в модели системы М/М./2 время обслуживания было в два раза больше времени обслуживания в модели системы 1И/1И/1; то есть между ними существовала ли- нейная зависимость. Однако в схеме метода дополняющих величин из приме- ра 11.8 между входными величинами при первом и втором прогонах имитацион- ной модели, составляющих пару, не было линейной зависимости, что в основном сводится к использованию In U против ln(l - U), где U — случайное число, по- скольку генерирование экспоненциально распределенных величин выполнялось с помощью логарифмирования случайных чисел (см. раздел 8.3.2). Как в примере с общими случайными числами, так и в примере с дополняющими величинами, входные величины впоследствии нелинейно преобразуются самой имитационной
684 Глава 11. Методыпонижениядисперсии моделью. Если вспомнить, что ковариация и корреляция, явно прослеживающие- ся в величине понижения дисперсии для обоих методов общих случайных чисел и дополняющих величин, служат показателями только линейной зависимости (см. задачу 4.11), можно убедиться, что большая линейность при применении ме- тода общих случайных чисел в примере 11.2 явно касается большего понижения дисперсии, нежели то, что наблюдалось при применении дополняющих величин в примере 11.8, где было меньше линейной зависимости. Пример 11.9. В частности, применяя методы дополняющих величин при моделирова- нии систем массового обслуживания, Пейдж [Page, 1965] предложил другой тип допол- няющей выборки, для которой не требуется замена 17на 1 - U во втором из двух прого- нов имитационной модели. Поскольку реакция оценки показателей систем массового обслуживания на большие значения времени между поступлениями противоположна их реакции на большие значения времени обслуживания, Пейдж предложил использо- вать случайные числа, применявшиеся для генерирования времени между поступления- ми в ходе первого из пары прогонов, для генерировайия времени обслуживания в ходе второго прогона, и наоборот. Реализовав эту идею в модели М/М/\ примера 11.8, мы до- бились 65-процентного понижения дисперсии. Такой общий метод изменения целей применения случайных чисел может оказаться полезным при вызове отрицательной корреляции и в других типах моделей. Последний пример использования дополняющих величин касается системы, отличной от системы массового обслуживания, где возможна лишь частичная син- хронизация. Пример 11.10. Метод дополняющих величин можно, также применить к модели систе- мы управления запасами из раздела 1.5, хотя в этом случае придется приложить больше усилий для получения логического объяснения монотонности отклика и потенциально- го успеха дополняющих величин (см. задачу 11.5). Возьмем случай (s, 5) - (20,40) и до- пустим, что используются те же параметры и выходные переменные, что и в приме- ре 11.6. Как и в примере 11.6, мы применим дополняющие величины только ко времени между возникновением спроса, и сгенерируем время доставки независимо для двух про- гонов, составляющих пару. Мы вновь выполнили п — 100 независимых пар прогонов, вначале сделав и Xj независимыми, и получили значение 8,55 как оценку диспер- сии Var(Xj), тогда как сопоставимая оценка дисперсии при использовании дополняю- щих величин составила 3,26, то есть меньше на 62 %. Таким образом, можно убедиться — схема метода дополняющих величин, лишь частично синхронизированных, все же по- зволяет добиться существенного понижения дисперсии. В связи со сходством между методом общих случайных чисел и дополняющих величин, естественно, возникает желание использовать их вместе при необходи- мости сравнить несколько альтернативных конфигураций системы. Прежде всего, может показаться, что можно добиться большего понижения дисперсии, восполь- зовавшись дополняющими величинами для каждой конфигурации по отдельно- сти и общими случайными величинами в применении к различным конфигу- рациям совместно. Однако при более подробном исследовании [Kleijnen, 1974, р. 207-238] можно убедиться в следующем (см. задачу 11.11): если оба метода об- щих случайных чисел и дополняющих величин успешно выполняются, то есть вы- зывают корреляции с нужным знаком, то некоторая «перекрестная ковариация» (особенно ковариация между первым прогоном из дополняющей пары прогонов
11.4. Контрольные случайные величины 685 модели конфигурации 1 и вторым прогоном из соответствующей дополняющей пары прогонов модели конфигурации 2, и наоборот) вносит соответствующее вы- ражение дисперсии с неправильным знаком, что может увеличить дисперсию. Из этого, отнюдь, не следует, что комбинированное использование дополняющих ве- личин и общих случайных чисел для сравнения альтернативных конфигураций системы — хорошая идея. Шрубен и Марголин [Schruben and Margolin, 1978; Schruben, 1979] обобщают обзор вопроса назначения случайных чисел в стратеги- ях вызова корреляции с целью понижения дисперсии в разнообразных модели- рующих экспериментах. Были разработаны и обобщающие версии метода дополняющих величин, это касается как оцениваемых величин (отличных от математических ожиданий), так и методов вызова отрицательной корреляции (отличных от использования допол- няющих случайных чисел) [Cheng, 1982, 1984; Fishman and Huang, 1983; Wilson, 1983]. Возможное дополнительное преимущество метода дополняющих величин отмечено Нельсоном [Nelson, 1990b], который доказал, что дополняющие вели- чины (комбинированные с управляющими случайными величинами, рассмотрен- ными в разделе 11.4) могут улучшить характеристики как точечной, так и интер- вальной оценки, когда присутствует начальное смещение. Аврамидис и Вильсон [Avramidis and Wilson, 1998] используют дополняющие величины для улучшения оценки квантилей (см. раздел 9.4.2). 11.4. Контрольные случайные величины Подобно методам общих случайных величин и дополняющих величин, метод кон- трольных случайных величин использует корреляцию между определенными слу- чайными величинами для понижения дисперсии. В зависимости от типа метода управляющих случайных величин корреляция либо возникает в ходе моделирова- ния естественным путем, либо может быть вызвана с помощью использования ме- тода общих случайных чисел при вспомогательном моделировании. В целом, по крайней мере, интуитивно метод контрольных случайных величин кажется достаточно привлекательным. Пусть X будет выходной случайной вели- чиной, определяющей среднюю величину задержек в очереди первых 100 клиен- тов. Допустим, нам нужно получить оценку ц - Е(Х). Допустим, что Y— это другая случайная величина, возникающая при моделировании, которая считается корре- лированной с X (то ли положительно, то ли отрицательно), и что нам известно значение v- E(Y). Скажем, Yможет быть средней величиной времени обслужива- ния первых 99 клиентов, обслуживание которых завершилось в вышеупомянутой модели системы массового обслуживания, тогда будем знать ее математическое ожидание, поскольку мы сгенерировали величины времени обслуживания из не- которого известного входного распределения. (В задаче 11.12 рассматривается во- прос, касающийся точного определения У.) Можно вполне обоснованно предпо- лагать, что значения времени обслуживания, превышающие среднее (то есть когда Y > v), приводят к получению значений задержек в очереди, превышающих сред- нюю величину (X > р), и наоборот. Иными словами, в данном случае величина У
686 Глава 11. Методы понижения дисперсии положительно коррелированна с X. Значит, если при выполнении моделирования устанавливаем, что Y > v (а это мы можем определить наверняка, поскольку нам известно значение v), можно ожидать, что X также будет больше своего математи- ческого ожидания р. (хотя наверняка мы этого не знаем, если только между У и X не наблюдается прямолинейная корреляция) и соответственно понизить X на не- которую величину. Если выясняется, что У < v, можно ожидать, что и X < р и соот- ветственно ее увеличить. Следовательно, мы используем знание математического ожидания У, чтобы изменить X (понизить или увеличить) относительно его мате- матического ожидания р, уменьшая, таким образом, ее изменчивость относитель- но ц от одного прогона модели к другому. При этом У называется контрольной слу- чайной величиной для X, поскольку она используется для регулирования значений величины X или частичного «контроля» над ней. В отличие от методов общих случайных чисел и дополняющих величин успеш- ное выполнение метода контрольных случайных величин не зависит от корреля- ции с определенным знаком. Если бы X и У были скоррелированы отрицательно — такая ситуация возможна, если У является средней величиной первых 100 сгене- рированных значений времени между поступлениями в примере, приведенном в предыдущем абзаце (моменты поступления, разделенные продолжительными интервалами, дают меньшую перегрузку), — мы бы просто увеличили X, когда У > v, и понизили, когда У < v. Чтобы реализовать вышеприведенную концепцию, нужно определить величи- ну, на которую мы будем увеличивать и уменьшать X. Эту величину удобно выра- зить с помощью отклонения У - v величины У от ее математического ожидания v. Пусть а будет константой (определим ее дальше) с тем же знаком, что и у корреля- ции между У и X. В предыдущем примере, где X являлась средней величиной за- держек в очереди, а У — средним временем обслуживания, а было бы некоторым положительным числом. Мы используем а, чтобы поправлять значение (увеличи- вать или уменьшать); отклонения У- v, чтобы добиться соответствующего измене- ния величины X и таким образом определить «контролируемую» оценку Хс == X - а(У - v). Заметьте, если У и X являются положительно коррелированными, так что а > 0, мы будем уменьшать величину X всякий раз, когда У > v, и увеличивать в случае, когда У < v, что и требуется. Противоположная схема преобразований окажется действенной, когда У и X коррелированны отрицательно; в этом случае а < 0. Поскольку Е(Х) - р и E(Y) - v, становится ясно, что при любом вещественном числе а — Е(Х^) - р; то есть Хс является несмещенной оценкой р, у которой может быть меньшая дисперсия, нежели у X. В частности, Var(Xc) - Var(X) + а2Уаг(У) - 2а Cov(X, У), (11.1) так что Хс будет менее изменчивой, чем X тогда и только тогда, когда 2аСоу(Х,У) > a2Var(P); выполнение или невыполнение неравенства зависит и от выбора У и а. Часто при рассмотрении контрольных случайных величин внимание уделяется только
11.4. Контрольные случайные величины 687 особым случаям а - 1 [если считается, что Cov(X, Y) > 0] или а — -1 [если считает- ся, что Cov(X, Y) < 0], однако при этом требуется выполнение более строгого усло- вия, согласно которому |Cov(X, 7)1 ** Var( Y)/2, чтобы можно было добиться пони- жения дисперсии. Следовательно, если мы просто установим, что а = ±1, успех метода будет полностью зависеть от Y; поэтому лучше допустить использование и других значений а. Чтобы определить наилучшее значение а при заданном У, можно рассматри- вать правую часть уравнения (11.1) как функцию а и присвоить ее производной значение 0, то есть ф- = 2аУаг(У)-2Соу(Х,У) = 0, da и решить уравнение для оптимального значения (такого при котором дисперсия будет минимальной) (И.2) Соу(Х,У) Уаг(У) (<P(£jddL - 2 Var( Y), которое, конечно же, будет положительным, что является дос- таточным условием для того, чтобы о* было минимизатором g(a) в отличие от максимизатора или точкой перегиба кривой). Из уравнения (11.2) можно сделать вывод: если У сильно коррелированна с X, то есть |Cov(X, 7)1 имеет большое значе- ние, тогда а* увеличивается, следовательно, нам нужно выполнить более резкие преобразования величины X, поскольку мы больше уверены в том, что отклонение У от v сообщает нам о том, каким может быть отклонение X от ц. Кроме того, если сама по себе величина У менее изменчива, то есть дисперсия Var(7) окажется не- большой, можно получить большее значение а* (и столкнуться с более резкими изменениями величины X), поскольку мы значительно увереннее в точности на- блюдаемого значения самой величины У. Подставив а* из уравнения (11.2) в правую часть уравнения (11.1), получаем, что отрегулированная (или контролируемая) оценка Хс* для любого выбора а имеет дисперсию > Уаг(Хс*) = Var (X) = (1 -р^, )Vai(X), где Рху— корреляция междуХи У. Таким образом, если использовать оптимальное значение а* для а, оптимально контролируемая оценка Хс* никогда не будет более изменчивой, чем неконтролируемая величина X, а дисперсия у нее будет меньше, если У будет полностью коррелированна с X. Кроме того, чем сильнее корреляция междуХи У, тем большим будет понижение дисперсии в пределе; мы убеждаемся, что как Рху-* ± 1, так Var(Xc*) -> 0. Интуитивно это свидетельствует о том, что ес- ли бы корреляция между X и ¥ была почти прямолинейной (± 1), мы могли бы ка- ждый раз контролировать изменение величины X практически до самого т, таким образом едва не полностью сокращая дисперсию. На практике, однако, все не так-то просто осуществить. В зависимости от ис- точника и характера контролируемой величины У, мы можем знать, а можем и не знать значение Уаг(7), и, конечно же, Cov(X, 7) известна не будет, что мешает
688 Глава 11. Методы понижения дисперсии определить точное значение а*. Поэтому было предложено несколько методов по- лучения оценки а* с помощью прогонов имитационной модели. Далее будет опи- сан один из таких самых простых методов [Lavenberg, Moeller and Welch, 1982; Lavenberg and Welch, 1981], который также можно использовать для формирова- ния доверительного интервала для тп. Метод применим при моделировании в пе- реходном режиме (см. раздел 9.3), когда несложно выполнять повторные прогоны модели, хотя метод можно использовать и для установившихся параметров с по- мощью метода репликации-удаления из раздела 9.5.2 или замены средних величин при повторных прогонах общими средними (см. раздел 9.5.3). При использовании метода Cov(X, У) и Var(Y) в уравнении (11.2) просто заме- няются их выборочными оценками. Предположим, что мы выполняем п независи- мых прогонов имитационной модели для получения п независимых и одинаково распределенных наблюдений Хь Х2 Хп по X и ^независимых и одинаково рас- пределенных наблюдений Yu У2,.... У„ по У. Пусть Х(п) и У(п) будут выборочными средними соответственно величин Xj и Yj, a S? (п) — несмещенной выборочной дис- персией величин Yj. Ковариация между X и У оценивается по следующей формуле (см. задачу 4.25) £ [х, -х(л)]р; -у(п)] Схг(п) = —-------------------, п — 1 тогда оценка а* составляет В итоге мы получаем точечную оценку для ц: х7(п)=х(п)~ а*(п)[У(п) - V]. Мы непременно должны отметить, что поскольку константа а* былазаменена случайной величиной 3*, как правило, не являющейся независимой от Y(n) (она вычисляется по тем же выходным данным модели), мы не можем небрежно опре- делят^математические ожидания через множители во втором члене уравнения для Хс*(п). К сожалению, в отличие от Хс*(п), как и Хс и Хс*, оценка для р, как правило, будет смещена. Вопросы, касающиеся серьезности этого смещения, а так- же величины понижения дисперсии, которого можно добиться с помощью описан- ной схемы, рассматриваются в работе Лавенберга, Моэллера и Велша [Lavenberg, Moeller, Welch, 1982]. Альтернативные оценки а*, которые были получены в результате применения метода «складного ножа» для понижения смещения в Xc*(ri), рассматриваются Клейненом [Kleijnen, 1974], а также Лавенбергом, Моэллером и Ведшем [Laven- berg, Moeller, and Welch, 1982]. Ченг, Фиет [Cheng and Feast, 1980] и Бауэр [Bauer, 1987] рассматривают вопросы, связанные с контрольными величинами, когда из- вестна дисперсия контрольной величины. Нельсон [Nelson, 1989, 1990а] обраща- ется к использованию контрольных величин с общими средними при установив-
11.4. Контрольные случайные величины 689 шемся моделировании, а также дает обзор и оценку нескольких альтернативных подходов для решения проблемы смещения точечной оценки, а также связанных с ней вопросов. Янг и Нельсон [Yang and Nelson, 1992] расширили этот обзор до многомерных общих средних в сочетании с управляющими величинами. Аврами- дис и Вильсон [Avramidis and Wilson, 1998] рассматривают вопрос разделения вы- ходных данных модели для получения оценки а*. Пример 11.11. Постараемся дать более серьезное подтверждение примеру, содержа- тельно рассмотренному в этом разделе. Пусть X будет средней задержкой в очереди пер- вых 100 требований, поступающих в систему массового обслуживания Л//Л4/1 (в начале работы она была свободна), среднее время между поступлениями в которой равно 1 мин, а среднее время обслуживания — 0,9 мин; такая же модель рассматривалась в приме- рах 11.1-11.3,11.8 и 11.9. Как контрольная величина для X, пусть будет Y — среднее 99 значений времени обслуживания, необходимых для совершения репликаций этой моде- ли. Поскольку моделирование завершается, когда начинается 100-е время обслужива- ния, его значение не будет иметь влияния на выходные данные, поэтому оно не учитыва- ется в величиной Y. Поскольку Y является средней величиной фиксированного числа (см. задачу 11.12) независимых и одинаково распределенных величин времени обслу- живания, математическое ожидание которых равно 0,9, то и v - E(Y) - 0,9. Мы выполнили п - 10 независимых прогонов и зарегистрировали 10 величин Xj и 10 со- ответствующих величин Yj, (табл. 11.8). Поэтам даннымХ(10) - 3,78иУ(10) “ 0,89; сле- довательно, среднее время обслуживания окажется несколько ниже, чем его математи- ческое ожидание v - 0,9, и средняя задержка в очереди также будет ниже в сравнении с ее математическим ожиданием ц - 4,13 (оно в действительности нам известно в этом искусственно созданном примере), как и предполагалось в начале раздела. Более того, мы получили Sx2 (10) - 13,33 и Sx (10) - 0,002 и Схг(Ю) - 0,07, что в результате дает расчетное значение 0,43 для корреляции между X и Y, подтверждая наше мнение о том, что они должны быть коррелированны положительно. Наконец, мы получили й*(10) “ - 35,00, а, значит, .Х^*(10) - 4,13, что в действительности ближе к р, чем неконтролируе- мая оценка Х(10) - 3,78. Таблица 11.8. Средняя задержка в очереди (Х^ и среднее время 5 обслуживания (Tty, полученные при использовании _____________контролируемых случайных величин для модели ЗА/М/Х. 3 Ъ *3 3 Ъ Ъ 1 13,84 0,92 6 1,35 0,81 2 3,18 0,95 7 1,82 0,84 3 2,26 0,88 8 3,01 0,92 4 2,76 0,89 9 1,68 0,85 5 4,33 0,93 10 3,60 0,88 Для тогочтобы узнать, будет ли на самом деле дисперсия Var[Xc*(10)] меньше диспер- сии Var[X(10)], мы повторили весь эксперимент с 10 прогонами, описанный в предыду- щем абзаце, 100 раз, получив 100 независимых наблюдений как для Х(10), так и для Хс*(10)- По указанным данным определили оценку Var[X(10)] как 0,99, тогда как оцен- ка Var[Xc*(10)] составила 0,66, что свидетельствует о понижении дисперсии на одну
690 Глава 11. Методы понижения дисперсии треть. Оценка корреляции между Х(10) и У(10) определена как 0,67 (свидетельствует о положительнойкорреляции, как и предполагалось). В то же время в результате 100 на- блюдений для А£(10) было установлено, что 95-процентный доверительный интервал для £[Хс*(10)] составляет 4,18 ± 0,16; в нем содержится ц, а это указывает на то, что ка- кое бы смещение в контролируемой оценке не возникло при получении оценки а* с по- мощью я*(10), оно в этом случае не будет заметным. В примере 11.11 в качестве контролируемой случайной величины мы выбрали среднюю величину времени обслуживания, но как показывают два следующих примера, вопрос о том, что использовать в качестве контролируемой случайной величины, не столь уж ясен. Пример 11.12. Мы повторили эксперименты из примера 11.11, но на этот раз использо- вали в качестве контролируемой случайной величины Y — среднюю величину первых 100 значений времени между поступлениями. Можно с уверенностью утверждать, что в системе всегда будет, по меньшей мере, такое количество значений времени между поступлениями. Таким образом, мы получаем контролируемую случайную величину, основанную на фиксированном числе сгенерированных значений времени между по- ступлениями (см. задачу 11.12), следовательно, нам известно, что E(Y) = 1. Выполнив 100 экспериментов по п - 10 прогонов каждый, как описано в примере 11.11, мы получи- ли оценку дисперсии Var[JQ;*(10)] на основании этой контролируемой случайной вели- чины, равную 0,89, что представляет всего лишь 10-процентное понижение дисперсии в сравнении с оценкой дисперсии, равной 0,99, для Х(10). Таким образом, выясняется, что в качестве контрольной случайной величины лучше использовать среднее значение времени обслуживания, как мы сделали изначально. Пример 11.13. Можно ли каким-то образом использовать обе управляющие величины? Пусть У^1’ будет средним временем обслуживания и контролируемой случайной величи- ной, используемой в примере 11.11, а У*2) — средним временем между поступлениями и контрольной случайной величиной, используемой в примере 11.12. Так как Cov(X, У*4) и Cov(X, У*2*), вероятно, имеют противоположные знаки, мы могли бы включить инфор- мацию по обеим величинам, если определим новую контрольную случайную величину Y - у*1* - у<2\ Предполагаем, Cov(X, Y)>0, что подтверждается как для У*4, так и для /2>. Использовав описанную схему в 100 новых экспериментах по и = 10 прогонов каж- дый, получаем оценку корреляции между Х(10) И У(10), равную 0,77, а оценка диспер- сии с использованием контроля оценки составила 0,56, что представляет 43-процентное понижение дисперсии по сравнению с цифрой 0,99 для неконтролируемой оценки. Этот результат лучше результатов, полученных при отдельном использовании У*1) и У^2\ Однако в этом случае, очевидно, наблюдалось некотороесмещение точечной оценки, так как 95-процентный доверительный интервал для £[Хс*(10)] составил 4,38 ± 0,15, где значение р — 4,13 отсутствовало. Будет это представлять проблемы или нет, зависит от того, какое компромиссное решение (смещение или дисперсия) вы выберете в формуле точечной оценки. В примере 11.13 использовалось в действительности две различные контроль- ные случайные величины, которые мы смогли объединить для получения одной контрольной случайной величины. Однако почему мы выполнили с ними вычита- ние, вместо того чтобы разделить одну на другую? Или почему вместо этого мы не записали Y - У*15 - 2У*2)? В сложных моделях будет множество потенциальных
11.4. Контрольные случайные величины 691 контрольных случайных величин, в связи с этим может оказаться затруднитель- ным найти наилучший способ для объединения их всех в одну. Более того, даже если бы нашелся такой разумный способ, может оказаться невозможным восполь- зоваться этой информацией так, чтобы добиться максимальной выгоды. В приме- ре 11.13 мы определили контрольную случайную величину У- У0 - У2), так что контролируемая оценка составила Хс = Х-а(У-у) = = X - а(У‘> - УО) _ а(_у<2) + ^>) , гдеу® *= £(У°). При такой формулировке мы вынуждаем обе отдельные контроль- ные случайные величины (У ° и -У2)) войти в поправку с использованием одина- ковых коэффициентов а, что может быть не самым лучшим способом использова- ния их информации. Логично было бы внести изменение, чтобы обе контрольные величины имели различные весовые коэффициенты, и переопределить Хс - X - ^(У0 - У‘>) - а2(^ - лХ2»). Затем мы можем вывести (и оценить) весовые коэффициенты at и а2, миними- зирующие дисперсию Var(Xc), как и раньше, когда использовалась одна единст- венная контрольная случайная величина. Такую схему легко обобщить для случая с т контрольными случайными вели- чинами У°,..., Ут) с соответствующими известными математическими ожидания- ми v*0,..., ^т). Общая (линейная) контрольная оценка Хс =X-'^al(Y(,)-v(,)), где at — вещественные числа (они должны быть определены и их оценка получе- на). Допуская корреляцию не только между X и управляющими случайными вели- чинами, но и между самими контрольными случайными величинами, получаем Var(Xc ) = Var(X) + £ a} Уаг(У,) -2£ a;Cov(X,y;)+ z-i z»i +2£^аАа,2Соч(УА,У/2), (11.3) Взяв частные производные для правой части уравнения (11.3) по отношению к каждому ai и приравняв их к 0, получаем множество т линейных уравнений, которые могут решаться для т весовых коэффициентов, сводящих к минимуму дисперсию (см. задачу 11.13). Как и в случае с одной контрольной величиной, для оптимальных весовых коэффициентов следует получить оценки; здесь также воз- можно появление смещения в контрольной оценке. Эти и другие проблемы рас- сматриваются в работах Лавенберга и Велша [Lavenberg and Welch, 1981], а также Нельсона [Nelson, 1990а]. Оценки оптимальных весовых коэффициентов оказы- ваются идентичными оценкам коэффициентов, полученным методом наименьших
692 Глава 11. Методы понижения дисперсии квадратов, в определенной модели с линейной регрессией, поэтому метод кон- трольных случайных величин иногда называют методом регрессионной выборки. Мы завершаем раздел кратким обзором вопросов нахождения и выбора кон- трольных случайных величин. Как вы могли убедиться, хорошая контрольная слу- чайная величина должна быть сильно коррелированна с выходной случайной ве- личиной X, чтобы мы могли получить большое количество информации об X и сделать хорошую поправку ее значения. Также требуется, чтобы у самих кон- трольных случайных величин существовала небольшая дисперсия. Такие кон- трольные случайные величины можно найти, проанализировав структуру модели или выполнив предварительные эксперименты с моделью. Можно назвать три об- щих источника контрольных величин. ♦ Внутренние контрольные случайные величины. В качестве контрольных ве- личин часто используются входные случайные величины или их простые функции (например, средние величины). Все контрольные случайные вели- чины в примерах 11.11-11.13 были внутренними. Как правило, их математи- ческое ожидание может быть известно (см. задачу 11.12), а простой анализ це- ли, с которой они используются в модели, позволяет предположить, каким образом они могут быть коррелированны с выходной случайной переменной. Большинство важных внутренних контрольных случайных величин должно генерироваться в любом случае, чтобы могло выполняться моделирование, поэтому они не несут с собой дополнительных затрат на моделирование, и по- этому их стоит использовать, даже если при этом не наблюдается сильного понижения дисперсии (см. задачу 11.1). В ряде работ дается детальный обзор возможностей применения внутренних контрольных случайных величин [Ig- lehart and Lewis, 1979; Lavenberg, Moeller and Sauer, 1979; Lavenberg, Moeller and Welsh, 1982; Wilson and Pritsker, 1984a, 1984b]. ♦ Внешние контрольные случайные величины. Предположим, мы выполняем мо- делирование, поскольку не можем вычислить ц = Е(Х) аналитическим путем. Вероятно, в случае изменения модели, сделав некоторые дополнительные уп- рощающие допущения, мы могли бы вычислить математическое ожидание v выходной случайной переменной Y в упрощенной модели. Несмотря на то, что такие упрощающие допущения в настоящей модели для нас могут ока- заться нежелательными, поскольку возможно их отрицательное влияние на достоверность модели, реально, что Y все же послужит контрольной случай- ной величиной для X. После этого мы бы реализовали упрощенную модель наряду с настоящей моделью с использованием общих случайных чисел (раз- дел 11.2); можно надеяться, что Y будут коррелированны с X положительно. В отличие от внутренних контрольных случайных величин, подход с внешни- ми контрольными случайными величинами влечет дополнительные затраты, так как для него необходимо выполнить второе моделирование, для того что- бы получить контрольные случайные величин; следовательно, при использо- вании внешних контрольных случайных величин корреляция между Y и X должна быть сильнее, чем в случае с внутренними контрольными случайны- ми величинами, чтобы их применение себя оправдало [Burt, Gaver and Perlas,
11.5. Непрямая оценка 693 1970; Gaver and Shedler, 1971; Gaver and Thompson, 1973; Schmeiser and Taaffe, 1994; Nelson et al., 1997], (см.также задачу 11.14). + Использование множественных оценок. В некоторых случаях у нас может быть несколько несмещенных оценок .......Х<*> для ц, где величины X® могут быть независимыми, а могут и не быть таковыми. Такая ситуация возможна, например, когда мы можем использовать метод непрямой оценки (см. раз- дел 11.5). Если bitbk — любые вещественные числа (не обязательно поло- жительные), сумма которых равна 1, тогда хс = £мг(,) i=4 также будет несмещенной для ц. Поскольку Ь^ 1 - bit то Хс можно выра- зить как xc=fi-ibiy(1)+tb.x<i)- k i=2 J i~2 =х(1> -Х<°), i-2 так что мы можем рассматривать У; - X10 - X® при i = 2, 3,..., k как k - 1 кон- трольных величин для Х*0. Как мы убедились, в сложной модели может быть очень большое число воз- можных контрольных случайных величин. Однако вовсе не обязательно исполь- зовать их все, поскольку понижение дисперсии, обеспечиваемое ими, может со- провождаться привнесением дисперсии, связанной с необходимостью получить оценку оптимальных at. Бауэр и Вильсон [Bauer and Wilson, 1992] предложили ме- тод для выбора подмножества наилучших из доступных контрольных случайных величин при различных допущениях о том, что нам известно об их дисперсии и ко- вариации [Rubinstein and Marcus, 1985;Venkatraman and Wilson, 1986; Porta Nova and Wilson, 1993]. При обзоре контрольных величин наше внимание было сосредоточено на оцен- ке средних. О том, как использовать контрольные случайные величины для усиле- ния оценок вероятностей и квантилей, как описано в разделе 9.4.2, рассказывается в работах Хсу и Нельсона [Hsu and Nelson, 1990], а также Хестерберга и Нельсона [Hesterberg and Nelson, 1998]. 11.5. Непрямая оценка Этот МПД разработан для моделирования систем массового обслуживания, когда величины, оценки которых требуется получить, являются установившимися пока- зателями работы, такими как d, w, Qh L (cm. приложение 1Б). Доказательства по- нижения дисперсии приведены именно для упомянутого типа моделей [Law, 1974, 1975; Carson and Law, 1980; Glynn and Whitt, 1989], но метод может также приме- няться и при моделировании других систем. Определить, будет ли наблюдаться
694 Глава 11. Методы понижения дисперсии стоящее понижение дисперсии, можно опять-таки с помощью начального экспе- римента. Основными инструментами реализации метода являются теоретические отношения между d, w, Q и L, описанные в приложении 1Б. Пусть D{ и W; будут соответственно задержкой в очереди и общим временем ожидания в системе i-ro требования, поступившего в систему массового обслужи- вания GI/G/s. Значит, если 5; — время обслуживания i-ro требования, то Wi = Di + + 5j. Пусть Q(t) и £(t) будут соответственно числом требований в очереди и в сис- теме в момент времени t. При выполнении прогона имитационной модели, в кото- ром завершилось обслуживание фиксированного числа п требований, продолжав- шееся Г(п) единиц модельного времени, прямые оценки d, w, Q и L окажутся соответственно равны ФОфо=-5х И 1^1 ?2i=i < Г(Л) 1 Г(л) 2<И)=7^ J ^dt’ №>dt- Теперь w(ri) - d(ri) + 5(и), где (n) - JXi SJmnE[S(n)] = E(S) — известное ожидае- мое время обслуживания. Следовательно, альтернативная оценка w может рав- няться w(n) = d(n) + E(S), то есть замещаем оценку S(n) ее известным математическим ожиданием £(5) (с нулевой дисперсией). Мы называем w(n) непрямой оценкой w, поэтому у нас есть основания полагать, что w(n) менее изменчиво, нежели w(n), поскольку слу- чайный член 5(п) в выражении w(ri) при получении w(n) замещается фиксирован- ным числом Б(5). Это действительно справедливо для любой системы массового обслуживания GI/G/s и для любого п [Law, 1974], хотя доказать это не так просто, как может показаться, поскольку 5(п) и J(n) не являются независимыми. Следова- тельно, вместо более очевидной прямой оценки лучше использовать непрямую оценку w(n). Понижение дисперсии, о котором говорилось выше, предполагается аддитив- ным отношением w = d + £(5), поэтому интуитивно кажется, что нет смысла ис- пользовать случайную величину S(n) в оценке w, когда можно воспользоваться ее математическим ожиданием Е($), избежав, таким образом, дополнительного ис- точника дисперсии. Менее объяснима возможность получения лучших непрямых оценок Q и L из мультипликативных отношений в двух уравнениях сохранения Q=XJ; (11.4) L - Xw, (11.5) где X — интенсивность поступления (см. приложение 1Б), которая опять-таки бу- дет известна при моделировании. Непрямая оценка Q, предполагаемая уравнени- ем (11.4), составляет Q(w) = X</(n).
11.5. Непрямая оценка 695 Доказано [Carson, 1978; Carson and Law, 1980], что асимптотически (по мере того как п и Т(п) становятся бесконечными) Q(n) имеет меньшую дисперсию, чем прямая оценка Q(n)- Аналогично, используя уравнение (11.5) и w(n) — лучшую не- прямую оценку w, можно доказать, что непрямая оценка Z(n) = Xw(n) = A[<?(n) + £(5)] асимптотически имеет меньшую дисперсию, нежели прямая оценка t(n). Итак, мы убедились, что оценки w, Q и L лучше получать по простым детерминированным функциям d(n), чем использовать их прямые оценки. Это одна из причин, почему мы в примерах этой книги акцентировали внимание на оценке задержки в очере- ди. У непрямой оценки есть еще одно преимущество — при моделировании нужно собрать только задержки Dit D2,...,а не Wit Q(t) или £(t), даже если в действитель- ности нам требуется получить оценки w, Q или L. Пример 11.14. Точное асимптотическое понижение дисперсии, получаемое, например, при непрямой оценке Q по (2(и)> а не при прямой оценке Q по <2(”), можно вычислить для моделей систем массового обслуживания Af/G/l [Law, 1974]. В табл. 11.9 приведе- ны значения понижения дисперсии (в процентах) времени обслуживания, имеющие экспоненциальное распределение, распределение Эрланга 4-го порядка и гиперэкспо- ненциальное распределение при р, равном 0,5; 0,7 и 0,9. Таблица 11.9. Точные значения асимптотического понижения дисперсии при непрямой оценке Q и для модели системы массового обслуживания ЛГ/G/l Распределение времени обслуживания Понижение дисперсии, % Р-0,5 Р-0,7 Р-0,9 Экспоненциальное 15 И 4 Эрланга 4-го порядка 22 17 7 Гиперэкспоненциальное 4 3 2 Один из недостатков описанного выше метода непрямой оценки состоит в том, что понижение дисперсии сводится к 0, при р -> 1. Это очевидно, если просмот- реть строки табл. 11.9; Лоу [Law, 1974] доказал это аналитически для модели сис- темы массового обслуживания M./G/X. Но поскольку системы с высокой перегруз- кой также являются очень изменчивыми, именно в таких случаях больше всего требуется понижение дисперсии. Обобщенное использование непрямых оценок, предложенное Карсоном [Carson, 1978] и связанное с методами, разработанными Хейдельбергером [Heidelberger, 1980], лучше функционирует при р, близком к 1; с его помощью можно в целом достигнуть большего понижения дисперсии. Возь- мем опять-таки оценку для Q. Было отмечено, что для нее существует две оценки Q(n) и Q(n), которые можно объединить для получения оценки с линейной комби- нацией Q(alr а2, п) = a^Qin) + ajQ(n), где ах + а2 - 1; не обязательно, чтобы коэффи- циенты Oj и а2 были не отрицательными. Тогда ах и а2 можно выбрать так, чтобы они минимизировали Var[Q(a1, а2, п)], с учетом того, что + а2 = 1. Обратите вни- мание, что <2.(1, 0, n) = Q(n), а <2(0, 1, и) = Q(n), так что при использовании этого
696 Глава 11. Методы понижения дисперсии метода прямая и непрямая оценки включаются как особые случаи; поэтому для оптимальных (а1г а2) VarfQ^j, а2, n)] min{Var[Q(n)], Var[Q(n)]}. Как и в случае с контрольными случайными величинами (см. раздел 11.4), нужно получить оценку оптимальных (alt а2). Карсон [Carson, 1978] предлагает для этого асимптотически обоснованный способ с применением регенеративного метода и допускает исполь- зование более чем двух альтернативных оценок (см. раздел 11.4). Его аналитичес- кие и эмпирические выводы свидетельствуют о понижении дисперсии, по мень- шей мере, на 40 % по сравнению с прямыми оценками [Srikant and Whitt, 1999]. 11.6. Метод создания условий Последний из рассматриваемых нами методов понижения дисперсии — метод со- здания условий — имеет общие свойства с методом непрямой оценки, поскольку в нем мы используем некоторое специальное свойство для замены оценки величи- ны ее точным значением, полученным аналитическим путем. Избавляясь от этого источника изменчивости, мы надеемся получить более устойчивую выходную случайную величину, хотя абсолютной гарантии ее получения нет. Опять-таки, предварительные исследования, позволяющие сравнить результаты применения метода с обычным моделированием, могут показать, до какой степени будет пони- жена дисперсия. Общий метод принятия условия, который мы еще будем рассмат- ривать, подобен «условному методу Монте-Карло», рассматриваемому Хаммерсли и Хандскомбом [Hammersley amd Handscomb, 1964]. Пусть, как обычно, X будет выходной случайной величиной, задержкой требо- вания в очереди, оценку математического ожидания ц которой мы хотим полу- чить. Допустим существование некоторой иной случайной величиной Z, для ко- торой при наличии любого вероятного значения z для Z можно аналитически вычислить условное математическое ожидание E(X\Z = z). Заметьте, что Е(Х | Z - “ z) — известная детерминированная функция вещественного числа z, но Е(Х | Z) — это случайная величина, являющаяся такой же функцией случайной величины Z. Тогда, выбрав условие для Z [Ross, 1997, р. 99], можно убедиться, что ц - - Е(Х) - Ez[E(X|Z)] (внешнее математическое ожидание обозначается как Ez, поскольку оно принимается с учетом распределения Z), так что случайная величина Е(Х | Z) тоже будет несмещенной для ц. Например, если величина Z является дискретной с вероятностной мерой p(z) = P(Z = z), тогда EZ[E(X| Z)] = хад Z = z)p(z), z где допускается, что функции p(z) неизвестны. Более того, Varz[E(X]Z)] - Var(X) - Ez[Var(X|Z)] £ Var(X) (11.6) [Ross, 1997, p. 147], значит, если мы зарегистрируем случайную величину Е(Х | Z) (как вычисленную по z для Z) вместо величины X, наблюдаемой непосредственно при моделировании, то получим меньшую дисперсию. Другими словами, предпо- лагается, что мы выполняем моделирование для получения случайного наблюде- ния z по величине Z (поскольку ее распределение неизвестно) с тем, чтобы ввести
11.6. Метод создания условий 697 это наблюдение в известную формулу для Е(Х | Z=г), а затем использовать это как основное наблюдение. Естественно, всю схему затем можно повторить некоторое количество раз при моделировании в переходном режиме. Разумеется, нужен способ задать случайную величину Z так, чтобы: ♦ Z можно было легко и эффективно генерировать, поскольку ее по-прежне- му нужно моделировать; ♦ Е(Х | Z = z), как функцию z, можно было вычислить аналитически и доста- точно эффективно для любого возможного значения z, которое может при- нимать Z; ♦ значение £/[Var(X]Z)] было большим, поглощая, таким образом, значитель- ную часть Var(X) в уравнении (11.6); иными словами, £z[Var(X|Z)] — ус- ловная средняя дисперсия X для вероятных значений Z, а поскольку суще- ствует формула для E(X\Z = z), нам никогда не придется моделировать X при наличии Z, поэтому его дисперсия не влияет на моделирование. Поскольку этот метод понижения дисперсии очень зависит от модели, в при- мерах мы опишем две его успешных реализации, взятых из литературы. В следую- щем примере, взятом из работы Лавенберга и Велча [Lavenberg and Welch, 1979], показано применение метода создания условий для понижения дисперсии оценок нескольких ожидаемых задержек в очереди в сети систем массового обслуживания. Пример 11.15. В компьютерной модели с режимом разделения времени есть один цен- тральный процессор (ЦП) и 15 терминалов, а также накопитель на диске и накопитель на магнитной ленте (рис. 11.8). На каждом терминале работает пользователь, «обдумы- вающий» задание в течение времени, величина которого распределена экспоненциально со средним значением 100 с, а затем отправляющий его компьютеру. На компьютере за- дание присоединяется к очереди с дисциплиной FIFO к ЦП. Каждое задание, попадаю- щее на ЦП, занимает его в течение времени, величина которого распределена экспонен- циально со средним значением 1 с. Выполнение задания, покидающего ЦП, завершается с вероятностью 0,20, тогда оно возвращается на свой терминал, а его оператор опять на- чинает очередное «обдумывание». Или же вместо этого заданию также может понадо- биться доступ к диску (с вероятностью 0,72) или к магнитной ленте (с вероятностью 0,08). Задание, поступающее на диск, может ожидать в очереди с дисциплиной FIFO, а затем занимает диск в течение времени, с величиной SD, распределенной экспоненци- ально со средним значением 1,39 с, после чего оно должна возвращаться к ЦП. Ана- логично задание, поступающее от ЦП на магнитную ленту, сталкивается там с очередью с дисциплиной FIFO, а затем занимает ленту в течение времени ST (его величина рас- пределена экспоненциально со средним значением 12,50 с), после чего задание возвра- щается к ЦП. Все величины времени «обдумывания», обслуживания и значения выбора ветви являются независимыми; изначально все задания находятся на терминалах в ста- дии «обдумывания». Наша цель — получить оценки dc, dD и dTустановившихся ожидае- мых задержек заданий в очередях к ЦП, диску и магнитной ленте соответственно. Для этого была выбрана продолжительность прогона, необходимая для обработки 400 зада- ний и отправки их обратно на терминалы. Для получения оценок этих установившихся ожидаемых задержек можно применить простое моделирование при использовании средней величины задержек, зарегистриро- ванных для каждой из трех очередей. Однако число наблюдений задержек в очереди к магнитной ленте может оказаться совсем небольшим, поскольку туда попадает только
698 Глава 11. Методы понижения дисперсии 8 % заданий, покидающих ЦП. Таким образом, простая оценка основанная на получе- нии относительно небольшого количества данных, может оказаться крайне изменчивой. Рис. 11.8. Компьютерная модель с режимом разделения времени из примера 11.15 Можно получить другую оценку d-г, регистрируя общее число запросов NT на магнитной ленте (как в очереди, так и обрабатывающихся) в каждый момент, когда какое-либо за- дание покидает ЦП независимо от того, куда она направляется. При условии, что зада- ние, покинувшее ЦП, направилось на магнитную ленту, его ожидаемая задержка в оче- реди к ленте составила бы E^S^Nt - 12,50ЛГг (Так как задание, обрабатываемое на магнитной ленте, если такое есть, имеет время обслуживания, распределенное экспо- ненциально, остаток времени его обслуживания тоже будет иметь экспоненциальное распределение со средним значением 12,50, что объясняется отсутствием последействия у экспоненциального распределения, о чем рассказывалось в задаче 4.26. Применение метода создания условий возможно и тогда, когда время обслуживания не имеет экспо- ненциального распределения, но тогда для него требуется больше информации.) Таким образом, мы получаем наблюдение по задержкам заданий в очереди на магнитной ленте от каждого задания, покидающего ЦП, а не только от тех 8 % заданий, попадающих на магнитную ленту. Более того, мы используем точное значение Е(5Г) - 12,50 вместо вы- водимой случайной величины 5^ которая бы генерировалась при обычном моделирова- нии. Для регистрируемых значений 12,50Хг выводится среднее число для получения улучшенной оценки dj-. Такой подход правомерен, потому что задания, покидающие ЦП, «регистрируют» одинаковое состояние независимо от того, поступают ли они в действи- тельности на магнитную ленту. Используя терминологию наших предыдущих общих объяснений, можно сказать, что мы выполняем моделирование, чтобы зарегистрировать значения Z - когда задание покидает ЦП и Е (задержка в очереди к магнитной ленте |Nr - z) - 12,50z — известная де- терминированная функция при условии, что NT “ z. Однако конечная выходная величи- на — средняя задержка в очереди к магнитной ленте — является более сложным резуль- татом всего динамического моделирования, так что уравнение (11.6) применяется не ко всему моделированию. Мы все же надеемся, что такое «локальное» понижение диспер- сии сохранится в динамике модели. Аналогично для каждого задания, покидающего ЦП, мы могли бы выбрать условие, что оно направится на диск, и принять 1,39А^ как наблюдение для задержки в очереди к дис- ку, где Nd — число заданий в очереди и на обслуживании на диске, зарегистрированное в этот момент. Таким образом, мы также сможем увеличить число наблюдений, но не столь существенно, как в случае с магнитной лентой, поскольку практически три чет- верти заданий, покидающих ЦП, и так поступают надиск. Однако мы сможем использо-
11.6. Метод создания условий 699 вать известное математическое ожидание времени обслуживания на диске SD, вместо случайных наблюдений по нему. Наконец, приняв условие, что Nc - общее число заданий на ЦП, когда бы задание ни по- кидало терминал, диск или магнитную ленту, можно усреднить значения 1NC (посколь- ку среднее время ЦП равно 1 с), чтобы попытаться получить лучшую оценку dc. Таким образом, мы не будем генерировать никаких дополнительных воображаемых посещений заданиями ЦП, поскольку все такие задания и так поступят в ЦП, но это позволит нам воспользоваться нашим знанием ожидаемого времени обслуживания в ЦП. При 100 независимых прогонах имитационной модели были зарегистрированы оценки понижения дисперсии, равные 19,28 и 56 % соответственно для dc, dD, и dT по сравнению с простым моделированием. Как и предполагалось, наибольшая выгода получена в слу- чае с очередью к магнитной ленте, где метод создания условий позволил собрать в 12 раз больше наблюдений, чем при простом моделировании. Было смоделировано семь дру- гих версий модели, для которых также определялась оценка вторых моментов, а пони- жение дисперсии в случае применения метода создания условий составляло от 9 до 86 %, в зависимости от модели и оцениваемых параметров. Дополнительным временем, потраченным на реализацию метода создания условий, в этом случае можно пренебречь. Как показывает предыдущий пример, для метода создания условий требуется тщательный анализ вероятностной структуры модели. Хотя его успешное приме- нение, очевидно, зависело не только от использования знания аналитической фор- мулы для условных математических ожиданий, но и от искусственного увеличе- ния числа наблюдений «редких» событий (в примере — поступление заданий на магнитную ленту). То же самое касается и применения метода принятия условия в следующем примере [Carter and Ignall, 1975]. Пример 11.16. Для сравнения альтернативных политик диспетчерского управления по- жарными машинами в Бронксе разработали имитационную модель. Одни пожары клас- сифицировались как «серьезные», поскольку представляли серьезную угрозу жизни людей и могли нанести существенный материальный ущерб, если отделение пожарной охраны не сможет на них быстро среагировать достаточным количеством пожарных ма- шин. Задача имитационного моделирования состояла в оценке ожидаемого времени реагирования на серьезный пожар в условиях определенной политики диспетчерского управления. Статистика свидетельствует, ,что серьезным оказывается 1 из 30 пожаров. Значит, при прогоне модели нужно перебрать 30 моделируемых пожаров, чтобы получить одно на- блюдение по времени реагирования на серьезный пожар, а это может повлечь за собой необходимость выполнения очень длительных и дорогостоящих прогонов имитацион- ной модели для генерирования достаточного числа серьезных пожаров и получения хо- рошей оценки ожидаемого времени реагирования на них. Однако особенности структу- ры модели таковы, что при известном состоянии системы (нахождение всех пожарных машин) в любой момент истинное ожидаемое время реагирования на серьезный пожар можно вычислить аналитически, если в этот момент таковой возникнет. Вероятностные допущения (серьезные пожары возникают в соответствии с пуассоновским процессом) оправдывают создания условий о возникновении события серьезного пожара в каждый момент, когда регистрируется состояние системы независимо от того, произошел ли в действительности серьезный пожар [Wolf, 1982]. Следовательно, моделирование перио- дически прерывалось с целью зарегистрировать состояние системы, вычислялось и за- писывалось ожидаемое время реагирования на серьезный пожар при известном теку- щем состоянии системы, затем моделирование возобновлялось. Итоговой оценкой стало
700 Глава 11. Методы понижения дисперсии среднее значение всех таких условных ожидаемых величин времени реагирования; она включала гораздо больше членов, нежели число серьезных смоделированных пожаров,. Всесторонние исследования позволяют осуществить замысел моделирования — наблю- дать вектор Z местонахождения пожарных машин, а Е (время реагирования на серьез- ный пожар | Z- z) можно было определить аналитическим путем как функцию г, поэтому его следовало оценивать при моделировании. Увеличившаяся частота возникновения (воображаемых) серьезных пожаров по сравнению с числом реально наблюдавшихся серьезных пожаров — дополнительное преимущество такого подхода. Дисперсия оцениваемого ожидаемого времени реагирования была понижена почти на 95 % по сравнению с простым моделированием за счет применения такого метода созда- ния условия. Метод условного математического ожидания оказался более дорогостоя- щим, но даже с учетом дополнительных затрат сокращение дисперсии составило 92 % при тех же затратах на вычисления. Заметьте, что при динамичном моделировании уравнение (11.6) применяется непосредственно к одной случайной величине и не может применяться ко всем модельным выходным случайным величинам (например, к средней задержке в очереди 1000 клиентов), поэтому понижение дисперсии не гарантировано. Существуют и другие примеры использования подхода создания условия в ка- честве МПД. Картер и Игналл [Carter and Ignall, 1975] рассматривают модель управления запасами, где событием, к которому применяется созданное условие, является возникновение нехватки товаров; такое событие случается редко, но его возникновение имеет большое влияние на показатели системы. Берт и Гарман [Burt and Garman, 1971] при моделировании стохастических сетей PERT приме- нили метод создания условий к определенным величинам времени выполнения задачи, которые свойственны более чем одному пути в сети; в этом случае отсутст- вует концепция искусственного увеличения частоты редкого события. Другие ме- тоды понижения дисперсии, основанные на создании условий при моделировании стохастических сетей, рассматриваются Гарманом [Garman, 1972], Сигалом, При- цкером и Солбергом [Sigal, Pritsker and Solberg, 1979]. Обобщение метода предло- жил Минх [Minh, 1989] для ситуаций, когда E(X]Z - z) может быть неизвестно для некоторого значения г. В работах Накаямы [Nakayama, 1994], Хейдельбергера [Heidelberger, 1995], Шахабуддина [Shahabuddin, 1994, 1995], Глассермана и Лиу [Glasserman and Liu, 1996], а также Глассермана и др. [Glasserman et al., 1999] рас- сматриваются разные методы понижения дисперсии, касающиеся редких, но важ- ных событий, таких как отказ высоконадежных систем связи. Задачи 11.1. Некоторые МПД почти не требуют дополнительных затрат (метод общих случайных чисел), другие, напротив, предполагают существенные дополни- тельные затраты (внешние контрольные величины). Следует обращать на это внимание при решении вопроса — стоит ли применять какой-либо МПД или нет. Пусть Vo — соответствующий показатель дисперсии при простом мо- делировании (без использования МПД), aVt — соответствующий показатель дисперсии при использовании определенного МПД. Пусть также Со и С\
Задачи 701 будут затратами, связанными с выполнением определенного числа прогонов с определенной продолжительностью соответственно для простого модели- рования и моделирования с использованием МПД. Определите условия для Vo, Vlt Со и Сь при которых целесообразно применение МПД. 11.2. В разделе 11.2.2 (см. также рис. 11.1) рассматривается вопрос — вызовет ли применение общих случайных чисел желаемую положительную корреляцию для указанной пары альтернативных конфигураций системы или же возник- нет обратный эффект. Рассмотрим следующие простые примеры моделиро- вания по методу Монте-Карло, где U представляет случайное число: (i)Xij=U2, а Xy=tf. (2)Х«-СЯ, a ^. = (1-U)3- А. Изобразите графики откликов в обоих примерах. Б. Для каждого примера определите Cov(Xv, Ху) аналитическим путем. В. Для каждого примера вычислите аналитическим путем Var(Xv - Ху) при независимой выборке и общих случайных числах. Г. Подтвердите свои вычисления в пунктах Б и В эмпирически, разработав и выполнив небольшое исследование посредством имитационного моде- лирования. 11.3. В разделе 11.3 мы рассматривали условия, при которых метод дополняющих случайных величин выполнится успешно или приведет к возникновению об- ратного эффекта. Рассмотрим следующие простые примеры моделирования по методу Монте-Карло, где U представляет случайное число. (1)^=^- (2) 4(1/-0,5)2. А. Изобразите графики откликов в обоих примерах. Б. Для каждого примера определите Cov(J^(1), Х&) аналитическим путем. В. Для каждого примера вычислите аналитическим путем Var[(X^(1) + Л/2))/2] при независимой выборке и несовместных величинах. Г. Подтвердите свои вычисления в пунктах Б и В эмпирически, разработав и выполнив небольшое исследование посредством имитационного моде- лирования. 11.4. Рассмотрим систему массового обслуживания на рис. 11.9. Клиенты прибы- вают в систему в соответствии с пуассоновским процессом с интенсивностью 1 чел./мин и становятся в очередь с дисциплиной FIFO к устройству 1, время обслуживания которым распределено экспоненциально со средним 0,7 мин. Покинув устройство 1, клиенты покидают систему с вероятностью/? и перехо- дят на обслуживание устройством 2 с вероятностью 1 -р. К устройству обслу- живания 2 также ведет очередь с дисциплиной FIFO, а время обслуживания этим устройством распределено экспоненциально со средним 0,9 мин. Все значения времени обслуживания, времени между прибытиями и решения
702 Глава 11. Методы понижения дисперсии о маршруте являются независимыми; изначально в системе нет клиентов; прогон имитационной модели выполняется до тех пор, пока полностью не за- вершится ожидание 100 клиентов в очереди; общая задержка в очередях кли- ента, посетившего устройство 2, представлена суммой его задержек в обеих очередях. Оцениваемым показателем является ожидаемая средняя совокуп- ная задержка в очереди (очередях) первых 100 клиентов, полностью завер- шивших ожидание в очереди (очередях). Устройство обслуживания 2 Устройство обслуживания 1 Рис. 11.9. Модель системы массового обслуживания из задачи 11.4 А. Предположим, что существует два варианта конфигураций системы, при которых р равно либо 0,3, либо 0,8. Выполните 10 прогонов каждой сис- темы с использованием как независимой выборки, так и метода общих случайных чисел и сравфгге оцененную дисперсию полученную в резуль-
Задачи 703 тате оценки разности между оцениваемыми показателями. Позаботьтесь о том, чтобы обеспечить правильную синхронизацию при использовании общих случайных чисел. Б. Учитывая, что р = 0,3, выполните пять пар прогонов имитационной моде- ли с использованием независимой выборки и метода дополняющих ве- личин внутри пары и сравните оцененную дисперсию оценки показате- лей работы. Опять-таки следите за синхронизацией. 11.5. Вспомните, как модель системы управления запасами из раздела 1.5 исполь- зовалась в примере 11.10 для демонстрации работы метода дополняющих ве- личин. В ней всего три источника случайности (время между возникновени- ем спроса, объем спроса и время доставки) и три типа расходов (затраты на выполнение заказа, затраты на хранение и издержки, связанные с нехваткой товара). Проанализируйте эту модель в том виде, как она была запрограмми- рована в разделе 1.5, чтобы дать логическое объяснение применению допол- няющих величин. В частности, обратите внимание, каково влияние неболь- шого (большого) случайного числа на каждый из трех типов расходов, если это число используется для генерирования каждого из трех типов входных случайных величин. Допустим — небольшое число U используется для гене- рирования времени между возникновением спроса. Что при этом произойдет с расходами на выполнение заказа, станут ли они большими или небольшими при прочих равных условиях? 11.6. Обратимся к модели банка из раздела 2.6. Предположим, руководству банка необходимо получить лучшую оценку эффекта за счет добавления шестой и седьмой касс (в сравнении с текущей конфигурацией системы с пятью касса- ми), и она окажется лучше результатов, представленных на рис. 2.36. Для это- го воспользуйтесь методом общих случайных чисел, выполните достаточное количество прогонов моделей всех трех вариантов системы для получения достаточно точной, на ваш взгляд, оценки разностей между математическими ожиданиями средних задержек в очереди. Следует учитывать, что лучше ге- нерировать время обслуживания клиентов в момент их прибытия, а не при переходе на обслуживание. 11.7. Вспомните модель гавани из задачи 2.19. А. Рассмотрите применение метода дополняющих величин в модели в том виде, в каком она была предложена изначально. В частности, определите, какие входные случайные величины должны генерироваться несовместно и как можно добиться правильной синхронизации. Б. Предположим, что рассматривается возможность замены двух имеющих- ся кранов более быстродействующими. Значения времени разгрузки су- дов одним краном будет равномерно распределено между 0,2 и 1,0 дня при прочих одинаковых условиях. Выясните, как правильно применить и реализовать метод общих случайных чисел, чтобы сравнить исходную сис- тему с предлагаемой новой системой. В. Проведите сравнительное моделирование с использованием как незави- симой выборки, так и общих случайных чисел; выполните необходимое
704 Глава 11. Методы понижения дисперсии число прогонов, чтобы получить оценку понижения дисперсии (если тако- вое будет наблюдаться), достигнутую за счет применения общих случай- ных чисел. 11.8. Рассмотрите возможность применения общих случайных чисел для сравне- ния стратегий обработки заданий а и б в компьютерной модели, приведен- ной в задаче 2.20. 11.9. Возьмем две приоритетных стратегии из модели компьютерной системы за- дачи 2.22. Воспользуйтесь методом общих случайных чисел, чтобы усилить сравнение между ожидаемой средней задержкой в очереди при использова- нии каждой из этих стратегий. 11.10. Рассмотрим модели систем массового обслуживания M/G/\. В первой мо- дели время обслуживания имеет экспоненциальное распределение, во вто- рой — гамма-распределение, а среднее время обслуживания в обеих системах одинаково. Рассмотрите проблему синхронизации при применении общих случайных чисел для сравнения этих двух систем на основании, например, ожидаемой средней задержки первых 100 клиентов в очереди, исходя из ус- ловия, что изначально в системе нет клиентов. В решении проблемы помо- жет материал разделов 8.2.1 и 8.3.4. 11.11. При сравнении двух типов конфигураций системы рассмотрите возмож- ность использования дополняющих величин и общих случайных чисел, то есть используйте дополняющие величины внутри пары прогонов модели каждого типа конфигураций, а общие случайные числа — для обоих типов конфигураций. Чтобы упростить решение задачи, предположим, что мы вы- полняем только одну пару прогонов модели каждого типа конфигураций (см. приведенную ниже схему). Основной прогон модели Тип конфигурации 1: Xf1* Т Общие случайные числа г Тип конфигурации 2: X^1J Дополняющие величины ‘ Дополняющие величины ~* Прогон для дополняющих величин X™ Т Общие случайные числа г х<2) Оценка С = Е(Х^ - Х2«) равна Z = (X/1’ + Х/2))/2 - (Х2(1) + Х2(2))/2. А. Найдите выражение для Var(Z) в терминах дисперсии и ковариации, относящихся к четырем прогонам в вышеприведенной схеме. Б. Допустим, что оба метода общих случайных чисел и несовместных вели- чин были успешно применены, то есть вызвали корреляцию с нужным знаком. Можно ли в таком случае успешно использовать комбиниро- ванную схему? То есть существует ли уверенность в том, что эта схема
Задачи 705 позволит понизить Var(Z) по сравнению с независимой выборкой? Ар- гументируйте свой ответ. 11.12. Если У1( У2,... — последовательность независимых случайных величин, N— положительная целочисленная случайная величина, которая может некото- рым образом зависеть от величин Уг. Тогда выборочное среднее N величин Y{ не может быть несмещенным для ц = E(Yi). Используйте этот факт для объ- яснения, почему в примерах раздела 11.4 мы так осторожно подошли к опре- делению контрольной величины У как средней величины фиксированного числа таких независимых и одинаково распределенных случайных величин, как величины времени между оступлениями или времени обслуживания, а не определили У как среднюю величину всех величин времени между поступлениями или времени обслуживания, сгенерированных до момента завершения моделирования. 11.13. Для общего метода линейных контрольных случайных величин с т кон- трольными величинами дисперсия контрольной оценки определялась по уравнению (11.3), где нужно было определить весовые коэффициенты at. А. Определите оптимальные (то есть сводящие к минимуму дисперсию) весовые коэффициенты при т = 2 и 3. Б. Допуская, что контрольные случайные величины нескоррелированны друг с другом, определите оптимальные весовые коэффициенты для т. В. Для случаев А и Б приведите метод оценки оптимальных весовых коэф- фициентов. Если известна дисперсия контрольных величин (что воз- можно, если они представляют всего лишь средние значения входных величин), можно ли улучшить наши оценки? Что если бы мы знали ко- вариацию между управляющими величинами в пункте А? 11.14. Предположим, нам нужно оценить ожидаемую среднюю задержку в очереди с дисциплиной FIFO первых 100 требований для модели системы массового обслуживания M/G/1, где изначально нет требований, среднее время между поступлениями равно 1 мин, а время обслуживания имеет распределение Вейбулла с параметром формы а = 2 и масштабным параметром, мин, р = = 1,8/Vn. Следовательно, среднее время обслуживания составляет рГ[(1/а) + + 1] = (l,8/Vn)(Vn/2) = 0,9 мин (см. раздел 6.2.2), а коэффициент занятости составляет р = 0,9. (Информацию о генерировании величин с распределени- ем Вейбулла вы найдете в разделе 8.3.5; их легко генерировать с помощью метода обратного преобразования.) В качестве внешней контрольной слу- чайной величины можно использовать общие случайные числа для моде- лирования системы массового обслуживания Af/Af/l для 100 требований с одинаковым временем между поступлениями и временем обслуживания (это модель из примера 11.11) и воспользоваться тем фактом, что известная ожидаемая средняя задержка в очереди для этой системы массового обслу- живания Af/Af/l составляет 4,13. Используйте метод оценки, приведенный в разделе 11.4, для определения оптимальных весовых коэффициентов а* по и = 10 прогонов. Повторите весь процесс 100 раз, чтобы оценить понижение дисперсии по сравнению с простым моделированием этой системы M/G/1.
706 Глава 11. Методы понижения дисперсии Оправдывает ли понижение дисперсии дополнительные затраты? Не лучше ли компьютерное время, необходимое для моделирования системы М/М/1, посвятить выполнению дополнительных простых прогонов модели M/G/V1 11.15. Рассмотрите использование метода дополняющих случайных величин в мо- дели компьютерной системы с режимом разделения времени из раздела 2.5. Как можно применить метод общих случайных чисел для альтернативных вариантов этой модели (например, с более быстрым ЦП или с измененным квантом обслуживания), чтобы провести сравнительное моделирование? 11.16. Влияет ли на среднюю задержку в очереди (очередях) возможность перехо- да клиентов из одной очереди в другую, как в примере с моделью банка с не- сколькими кассами (см. раздел 2.6)? Чтобы установить это, рассмотрите исходную модель (с возможностью перехода клиентов из одной очереди в другую) как «вариант 1», а «вариант 2» определите как такую же модель, но без перехода клиентов из одной очереди в другую. В каждом случае в сис- теме будет 5 касс. Используйте выделенные потоки, чтобы обеспечить ис- пользование общих случайных чисел: поток 1 для времени между прибы- тиями и поток 2 для времени обслуживания. Однако не всегда очевидно, как следует генерировать время обслуживания из потока 2; существует (по меньшей мере) две возможности. А. Время обслуживания клиента генерируется сразу по его прибытии и со- храняется как его атрибут. Физически это выглядит следующим обра- зом: вы как бы заставляете «одинаковых» клиентов (что касается тре- бований к обслуживанию у касс) прибывать в одно и то же время в оба варианта системы. Б. Время обслуживания клиента генерируется из потока 2, когда обслужи- вание клиента начинается. В этом случае в обоих вариантах системы будут видны разные клиенты, но упорядоченная последовательность ве- личин времени обслуживания, которое началось, в обоих вариантах бу- дет идентичной. Выполните имитационный эксперимент, чтобы определить, какой из спосо- бов А или Б будет лучшим способом реализации общих случайных чисел в том, что касается дисперсии оценки разности между ожидаемыми средни- ми задержками в очереди (очередях) в двух вариантах системы. 11.17. В разделе 11.2.3 мы описали способ применения потоков случайных чисел для синхронизации общих случайных чисел при генерировании случайных величин времени доставки одновременно для двух различных конфигура- ций системы управления запасами из раздела 1.5. Затем в примере 11.6 мы, наоборот, сгенерировали величины времени доставки независимо для обеих конфигураций. Какой способ был правильным? Или это спорный вопрос? Обратите внимание не столько на внутренние технические вопросы моде- лирования, сколько на то, что же будет происходить в действительности.
Глава 12 Планирование экспериментов и методы оптимизации Планирование экспериментов с помощью факторных планов + Определение факторов, оптимизирующих выходные показатели модели Оценка выходных показателей при изменении входных факторов ♦ Программное обеспечение для установления оптимальных входных факторов 12.1. Введение Настоящая глава является введением в тему использования статистического пла- нирования экспериментов и методов оптимизации, при котором «эксперимент» представляет собой выполнение компьютерной имитационной модели. Также, как и в главе 10, здесь речь пойдет о моделировании альтернативных системных кон- фигураций, а также об изучении и сравнении полученных для них результатов. Однако в главе 10 мы допускали, что различные конфигурации систем просто за- даны извне как альтернативные варианты системы, возможно, определенные на основании физических ограничений, договорных обязательств и политических взглядов. В данной главе рассматривается ситуация, при которой цель исследования сис- темы посредством моделирования менее структурирована. Нам может понадо- биться определить, какие из множества параметров и структурных допущений имеют наибольшее влияние на показатели работы или какой набор параметров модели позволяет получить оптимальную характеристику. Может оказаться, что для таких общих целей невозможно выполнить формальный статистический ана- лиз, описанный в главе 10, или в результате анализа сделать точные вероятност- ные утверждения. В терминологии планирования экспериментов входные переменные и струк- турные допущения, составляющие модель, называются факторами, а выходные показатели работы — откликами. Решение о том, какие параметры и структурные допущения считать фиксированными показателями модели, а какие эксперимен- тальными факторами, зависит скорее от целей исследования, а не от внутреннего вида модели. Кроме того, при имитационных исследованиях часто интерес пред- ставляют несколько различных откликов или показателей работы.
708 Глава 12. Планирование экспериментов и методы оптимизации Факторы могут быть либо количественными, либо качественными. Количест- венные факторы, как правило, предполагают численные значения, тогда как каче- ственные факторы обычно являют собой структурные допущения, которые не из- меряются количественно. Следует заметить, что у некоторых факторов различие может быть не ясно. При проведении имитационных экспериментов различают управляемые и не- управляемые факторы в зависимости от того, может ли руководство соответствую- щих реальных систем управлять ими. В некоторых примерах из табл. 12.1 возмож- ность управления факторами зависит от ситуации; скажем, изменить резервный запас на фабрике можно при одних обстоятельствах и нельзя при других. Мы бу- дем уделять внимание преимущественно управляемым факторам имитационных экспериментов, так как они имеют наибольшее влияние на решения, которые мо- гут быть приняты относительно реализации реальных систем. Тем не менее Билес [Biles, 1979] указывает, что неуправляемые факторы тоже представляют интерес при проведении имитационных экспериментов, поскольку нам может понадобить- ся оценить, каким образом резкое увеличение интенсивности прибытия клиентов повлияет на загруженность системы. В математическом моделировании, таком как выполняемое нами имитационное моделирование, доступно управление всеми факторами, независимо от их практической управляемости. Таблица 12.1. Примеры факторов и откликов Возможные факторы Количест- венные? Качест- венные? Управ- ляемые? Неуправ- ляемые? Возможные отклики Среднее время между прибытиями покупателей Среднее время обслуживания Число проходов Наличие скоростных проходов Стратегия добавления или снятия контролеров Контрольно-кассовый пункт в супермаркете Да Да Да Да Да Да? Да? Да Да Да? Да? Да Задержка в очереди Время пребывания в системе Длина очереди Коэффициент занятости контролеров Частота добавления или снятия Число станков Дисциплина обслуживания очереди Резервный запас Скорости конвейеров Объединение станков по участкам Производственная система Да Да? Да? Да Да? Да? Да Да? Да? Да Да? Да? Да Да? Да? Производительность, в деталях Время пребывания детали в системе Коэффициент использования станков Доходность
12.1. Введение 709 Возможные факторы Количест- венные? Качест- венные? Управ- ляемые? Неуправ- ляемые? Возможные отклики Сеть связи Интенсивность Да Да Задержка сообщения поступления сообщений Длительность Да Да Пропускная сообщений способность Число узлов Да Да? Да? Коэффициент использования узлов и линий Число линий Да Да? Да? Длина очередей Используемый протокол Да Да Режим эксплуатации Да Да Система управления запасами Среднее время Да Да Затраты между возникновением спроса на хранение Количество Да Да Издержки, связанные запрашиваемого товара с нехваткой товара Время получения Да Да? Да? Затраты на заказа приобретение заказа Момент возобновления заказа Да Да Рентабельность Количество товара, на которое подается Да Да заказ Частота проверки Да Да количества запасов Поставки, Да Да Да? Да? Поставки, выполнение выполнение которых которых было было отложено, отложено, или в сравнении с утраченными утраченные поставки объемами продаж При моделировании перед выполнением прогонов модели планирование экспе- риментов позволяет решить, какие именно конфигурации следует создавать, чтобы получить нужную информацию при наименьшем объеме моделирования. Тща- тельно проработанные эксперименты гораздо более эффективны, чем выполняе- мая наугад последовательность прогонов, в ходе которых мы просто не системати- чески проверяем ряд альтернативных конфигураций, чтобы увидеть, что при них происходит. Планирование, которое мы рассматриваем в разделах 12.2 и 12.3, осо- бенно эффективно на ранних этапах экспериментов, когда еще не ясно, какие фак- торы важны и как они могут влиять на отклики. Когда мы узнаем больше о поведе- нии модели (в частности, о том, какие факторы действительно существенны и как они влияют на отклики системы), можно будет двигаться дальше и более точно
710 Глава 12. Планирование экспериментов и методы оптимизации сформулировать цели моделирования. Часто бывает необходимо определить оп- тимальную комбинацию уровней факторов, максимизирующих или минимизиру- щих отклик. Для решения таких задач используются самые разнообразные мето- ды, известные как разработка метамоделей и методологии поверхностей отклика, о которых речь пойдет в разделе 12.4. В разделе 12.5 описаны связанные с указан- ными методами чувствительность и оценка градиента. Мы попытались опреде- лить количественно реакцию откликов на небольшие изменения количественных факторов. Наконец, в разделе 12.6 уделено внимание методам и программному обеспечению, которые помогают установить значения входных факторов, оптими- зирующих (максимизирующих или минимизирующих в зависимости от обстоя- тельств) выходные показатели работы. Кто-то может посчитать имитационные эксперименты всего лишь своего рода экспериментированием вообще, хотя они имеют ряд особенностей, благодаря ко- торым выгодно отличаются от обычных физических экспериментов, проводимых в науке, промышленности или сельском хозяйстве и традиционно использующих- ся в качестве примеров в литературе по планированию экспериментов. ♦ Как уже сообщалось, у нас есть возможность управлять такими факторами, как интенсивность прибытия клиентов, которые в реальности контролировать нельзя. Таким образом мы можем исследовать гораздо больше видов случай- ностей, чем при проведении физических опытов с системой. ♦ Другой аспект расширения возможностей управления моделирующими экс- периментами связан с детерминированным характером генераторов случайных чисел (см. главу 7). При моделировании можно контролировать сам источник изменчивости в отличие от физических экспериментов, результат которых за- висит от реальных обстоятельств. Значит, у нас есть возможность использо- вать методы понижения дисперсии (глава И) для усиления статистических результатов, но следует проявлять осторожность во избежание возникнове- ния обратного эффекта (см. пример 12.2, раздел 12.4 и задачу 12.3). ♦ В большинстве физических экспериментов важно рандомизировать условия эксперимента (комбинации факторов) и порядок выполнения работ (после- довательность, в которой применяются условия эксперимента), чтобы избе- жать систематических изменений, связанных с условиями эксперимента, на- пример из-за постепенного увеличения температуры воздуха в лаборатории в ходе последовательных биологических опытов, при которых не обеспечива- ется термоизоляция. Рандомизация в имитационных экспериментах не нуж- на, при условии, что генераторы случайных чисел работают правильно. Данная глава ни коим образом не может претендовать на полноту обзора во- просов планирования проведения экспериментов или оптимизации. Этим темам посвящены целые книги [Box, Hunter and Hunter, 1978; Box and Draper, 1987; Myers and Montgomery, 1995; Khuri and Cornell, 1996; Montgomery, 1997]. Мы кос- нулись лишь некоторых аспектов проблемы и их использования в имитационных экспериментах. Имеются работы, в которых вопросы планирования эксперимен- тов, анализа чувствительности и оптимизации рассматриваются в контексте ими- тационного моделирования [Hunter and Naylor, 1970; Ignall, 1972; Kleijnen, 1975,
12.2. Факторные планы типа 2к 711 1987,1998; Schmeiser, 1990; Kleijnen and Van Groenendaal, 1992; Nelson, 1992; Ru- binstein, 1992; Donohue, 1994; Kelton, 1994,1999; Ermakov and Melas, 1995; Cheng and Kleijnen, 1999]. Санчес [Sanchez, 1994] дает обзор принципов планирования Тагучи применительно к планированию экспериментов, анализу чувствительно- сти и оптимизации при моделировании и приводит ряд дополнительных ссылок на работы, посвященные данной теме. 12.2. Факторные планы типа 2к Если в модели имеется всего один фактор, планирование экспериментов будет от- носительно несложным. Мы просто выполним моделирование с различными зна- чениями или уровнями фактора, построив доверительный интервал для ожидае- мого отклика на каждом из уровней фактора. При работе с количественными факторами может пригодиться график отклика как функции уровня фактора. Ес- ли применяется моделирование при переходном режиме (см. раздел 9.4), то вы- полним некоторое число п независимых повторных прогонов на каждом уровне фактора. Будет как минимум два уровня, поэтому понадобится 2п повторных прого- нов модели; методы, позволяющие сократить это число, описаны в разделе 12.5. Предположим, что существует k (k > 2) факторов и что необходимо получить начальную оценку влияния каждого фактора на отклики. Нам, возможно, также потребуется определить, будут ли факторы взаимодействовать друг с другом, то есть будет ли эффект одного фактора зависеть от уровней других факторов. Для того чтобы увидеть, как отклик реагирует на изменения отдельного фактора, мож- но зафиксировать уровни других k - 1 факторов на каком-либо множестве значе- ний и выполнить имитационные прогоны для каждого уровня интересующего нас фактора. Затем всю процедуру следует повторить, чтобы по очереди изучить ос- тальные факторы. Такая стратегия оказывается весьма неэффективной, посколь- ку для нее требуется большое число имитационных прогонов [Box, Hunter and Hunter, 1978]. Более того, не представляется возможным измерить любые взаимо- действия факторов; вернее, допускается, что эти взаимодействия отсутствуют. Более экономичной стратегией, с помощью которой можно измерять взаимо- действие, является факторный план типа 2*, называемый еще факторным планом. Данная стратегия предполагает выбор двух уровней каждого фактора, а затем про- ведение имитационных прогонов для каждой из 2* возможных комбинаций уров- ней факторов, иногда называемых точками плана. Обычно знак «-» связывается с одним уровнем фактора, а знак «+» — с другим. Знак выбирается произвольно, хо- тя для количественных факторов лучше связывать знак «-» с меньшим числовым значением, чтобы избежать путаницы. Мы не можем дать никаких общих рекомен- даций относительно определения уровней факторов. Будем надеяться, что интуи- тивное знание модели поможет аналитику указать подходящие значения для ко личественных факторов, а также возможные варианты для качественных факторов. В целом уровни должны быть в некотором смысле противоположными друг другу, но в реальных пределах. Кроме того, уровни нельзя указывать так, чтобы они были на большом расстоянии друг от друга, иначе могут скрыться важные аспекты
712 Глава 12. Планирование экспериментов и методы оптимизации отклика, о чем будет сказано в конце этого раздела. В компактном виде экспери- мент можно представить как таблицу. Так, в табл. 12.2, где k - 3, переменные R; при i= 1, 2,..., 8 являются значениями отклика, когда выполняется моделирование г-й комбинации уровней факторов. Например, 7?6 — это отклик, полученный в резуль- тате моделирования с факторами 1 и 3 на уровнях «+» и с фактором 2 на уровне с-». Далее мы убедимся, что запись такого массива, именуемого матрицей плана, обеспечивает вычисление эффектов факторов и взаимодействий между ними. Таблица 12.2. Матрица факторного плана типа 23 Комбинация факторов (точка плана) Фактор 1 Фактор 2 Фактор 3 Отклик 1 - - - R1 2 + - R1 3 - + — R3 4 + + — R< 5 - - + Rs 6 + - + Rs 7 - + + Ri 8 + + + Rs Главным эффектом факторау является средняя величина изменения в отклике, обусловленная переходом фактора у с уровня «-» на уровень «+», в то время как остальные факторы остаются без изменений. Такая средняя величина берется для всех комбинаций уровней факторов. Учтите, что главный эффект вычисляется лишь относительно текущего плана и уровней факторов, и мы не можем в целом экстраполировать за их пределы, если только не будут выполняться другие усло- вия (например, отсутствие взаимодействия). Подобные ограничения в трактовке главных эффектов рассматриваются ниже в этом разделе, а также в разделе 12.3.1. Для факторного плана типа 23 главный эффект фактора 1 определяется как _ (^2 ~ ) + (^4 ~ ^3 ) + (Rs ~ ^5 ) + (^8 ~ ^7 ) 1 4 Обратите внимание, что в точках плана 1 и 2 факторы 2 и 3 остаются неизмен- ными, как и в точках 3 и 4,5 и 6, а также 7 и 8. Главный эффект фактора 2 равен _(Д3 -Е,)+(К4-r2) + (r1 -д5) + (Р8 -Д8) 2 4 а фактора 3 — р -^) + (Д8 -R2> + (Rl ~ *з) + (Дв ~Д4) 3 4 Из табл. 12.2 и вышеприведенных выражений для е, (разности между средним откликом при расположении фактора у на уровне «+» и средним откликом при расположении этого фактора на уровне «-») можно установить альтернативный
12.2. Факторные планы типа 2к 713 способ определения главных эффектов, а также более простой способ их вычисле- ния. Чтобы вычислить es мы просто присваиваем знаки в столбце «Фактору» соот- ветствующим значениям Rb складываем их и делим на 2*"1. (Иными словами, если трактовать «+» и «-» в матрице плана как соответственно +1 и -1, берется скаляр- ное произведение столбца «Фактору» и столбца «Отклик» и делится на 2*"1.) На- пример, в факторном плане типа 23 (табл. 12.2) —— /?2 + 7?3 + ^4 — — ^8 "* ^8 е2 = - , что идентично ранее приведенному выражению для е2. Главными эффектами измеряется средняя величина изменения в отклике, свя- занная с изменением отдельного фактора; средняя величина берется по всем воз- можным комбинациям других k - 1 факторов (2*'1). Однако может случиться так, что эффект фактора у ( некоторым образом будет зависеть от какого-либо иного фактора у2, в таком случае считается, что эти два фактора взаимодействуют. Сте- пень взаимодействия измеряется эффектом взаимодействия двух факторов ejij2, который определяется как половина разности между средним эффектом факто- рами когда фактор/2 находится на уровне «+» (а все остальные факторы, кромеу\ и у2, остаются неизменными), и средним эффектом фактора jb когда фактор у2 нахо- дится на уровне «-» (е/1>2 также называется взаимодействием jx х у2). Так, в плане табл. 12.2 имеем Посмотрев, например, на формулу для е13, можно заметить, что она позволяет измерить величину, ранее описанную словами. Обратите внимание: в матрице плана табл. 12.2 фактор 3 всегда находится на уровне «+» для точек плана 5,6,7 и 8, а фактор 1 переходит с уровня «-» на уровень «+» между точками плана 5 и 6 (где все остальные факторы в этом примере остаются неизменными, только фак- тор 2 остается на уровне «-»), так же как и между точками плана 7 и 8 (где фактор 2 остается неизменным на уровне «+»). Таким образом, первая дробь в квадратных скобках в вышеприведенном выражении для выявляется средним эффектом пере- мещения фактора 1 с уровня «-» на уровень «+», когда фактор 3 остается на своем уровне «+». Аналогично, вторая дробь внутри квадратных скобок — это средний эффект перемещения фактора 1 с уровня «-» на уровень «+» (точки плана 1 и 2, а также 3 и 4), когда фактор 3 остается на своем уровне «-». Тогда разность между этими двумя дробями будет разностью между эффектами, которые фактор 1 ока- зывает на отклик, когда фактор 3 находится на своем уровне «+» или на своем уровне «-»; половина данной разности — это определение эффекта взаимодейст- вия между факторами 1 и 3.
714 Глава 12. Планирование экспериментов и методы оптимизации Как и в случае определения главных эффектов, существует более простой спо- соб вычисления эффектов взаимодействия, основанный на использовании матри- цы плана. Если вышеприведенное выражение для е13 перестроить таким образом, чтобы, например, отклики R,- располагались в порядке возрастания значений i, получим выражение _ R4 ~ -Rg + Rg — .R; + Rg Теперь если мы создадим новый столбец «1 х 3», состоящий из 8 знаков, путем «умножения» i-ro знака в столбце «Фактор 1» на г-й знак в столбце «Фактор 3» (произведение одинаковых знаков составляет «+», а произведение противополож- ных знаков — «-»), то получим столбец знаков, которые дают нам в точности знаки откликов R,, используемых для получения е13. Как и в случае определения главных эффектов, делитель равен 2*"1. Значит, эффект взаимодействия между факторами 1 и 3 можно рассматривать, как разность между средним откликом, когда факторы 1 и 3 находятся на одинаковых уровнях (то есть оба находятся на уровнях «+» или оба находятся на уровнях «-»), и средним откликом, когда факторы 1 и 3 находят- ся на разных уровнях. (Читатель сам может точно так же вычислить е12 и е23). Обратите внимание на то, что эффекты взаимодействия между двумя факторами полностью симметричны, например, е12 = е21, е23= е32 и т. д. Мы можем определить и вычислить эффекты взаимодействия между тремя и более факторами (вплоть до взаимодействия между k факторами), хотя в этом случае их интерпретация становится более сложной. Например, в факторном пла- не типа 23 из табл. 12.2 эффект взаимодействия между тремя факторами составля- ет половину разности между средним эффектом взаимодействия между двумя факторами 1 и 2, когда фактор 3 находится на своем уровне «+», и средним эффек- том взаимодействия между двумя факторами 1 и 2, когда фактор 3 находится на своем уровне «-». То есть в123 1 r(R8-R7)-(R8-R5) (1?4-7?3)-(R2-Rt)~ 2[_ 2 2 —Rt + R2 + Rg - R4 + Rs - Rg — + Rg 4 Второе выражение для e123 получено путем умножения i-x знаков из столбцов факторов 1,2 и 3 в табл. 12.2 и применения их к откликам R,; в знаменателе опять будет 2*"1. Эффекты взаимодействия между тремя и более факторами также явля- ются симметричными е123 = е132 = е213 и т. д. Если наблюдается наличие взаимодействия между двумя или более фактора- ми, тогда главные эффекты факторов, задействованных в столь существенном вза- имодействии, нельзя интерпретировать всего лишь как эффект перехода данного фактора с уровня «-» на уровень «+», поскольку величина и даже, вероятно, на- правление его перемещения зависят от уровня, по меньшей мере, еще одного фак- тора. Поэтому результаты эксперимента следует интерпретировать более обоб- щенно, о чем будет рассказано в конце раздела.
12.2. Факторные планы типа 2к 715 В следующем примере выполняется 22-факторный эксперимент с моделью управления запасами, представленной в разделе 1.5 и использовавшейся в не- скольких примерах из главы 10. Пример 12.1. Параметры модели управления запасами из раздела 1.5 удобно переопре- делить с точки зрения стратегии заказов. В частности, s так и останется «моментом во- зобновления заказа», а вот вместо того чтобы заказывать количество товара, недостаю- щее до уровня 5, мы будем принимать решения относительно размера заказа d = S-s. Иными словами, экспериментальными факторами являются s и и теперь нас интере- сует, как они влияют на ожидаемые средние общие эксплуатационные расходы; естест- венно, S всегда будет всего лишь суммой s + d. «Нижний» и «верхний» уровни, которые мы выбрали для этих факторов, приведены в схеме кодирования табл. 12.3. Матрица пла- на и соответствующие переменные отклика показаны в табл. 12.4 вместе с дополнитель- ными столбцами, в которых даны знаки, применяемые при вычислении взаимодействия sxd. Каждый отклик Д представляет средние общие расходы в месяц, полученные в хо- де одного прогона продолжительностью 120 мес. Мы использовали независимые потоки для каждого отдельного отклика Rt. Главными эффектами являются -141,86 + 141,37-112,45 + 146,52 . с „ es =--------------2--------------= 16'79 и _ -141,86 -141,37 + 112,45 + 146,52 _ ел —--------------~ , а эффект взаимодействия sxd равен 141,86 -141,37 -112,45 + 146,52 ., оо е^ =--------------т.-------------= 17,28. ЯМ ма- ло. „ Таблица 12.3. Схема кодирования для факторов s и d в модели системы управления запасами Фактор — + 20 60 d 10 50 Таблица 12.4. Матрица и результаты моделирования для факторного плана типа 22 с факторами slid для модели системы управления запасами Комбинация факторов (точка плана) d sxd Отклик 1 - — + 141,86 2 + — - 141,37 3 — 4- — 112,45 4 + + + 146,52 Таким образом, средний эффект от увеличения s с 20 до 60 состоял в увеличении месяч- ных расходов на 16,79, а эффект от увеличения d с 10 до 50 — в сокращении месячных расходов в среднем на 12,13. Поэтому кажется, что меньшее значение s и большее значе- ние d будут предпочтительнее, так как нам нужны более низкие месячные расходы. По- скольку взаимодействие sxd является положительным, у нас есть еще одно указание
716 Глава 12. Планирование экспериментов и методы оптимизации на то, что более низкие расходы наблюдаются, когда s nd находятся на противополож- ных уровнях. Однако если такое взаимодействие действительно присутствует и являет- ся достаточно существенным (данный вопрос рассматривается далее в примере 12.2), то эффект фактора s зависит от уровня фактора d, и наоборот. В этом случае главный эф- фект, вычисленный ранее, нельзя в целом интерпретировать как влияние изолирован- ного перехода факторов s и d с одного уровня на другой, поскольку эффект каждого из указанных факторов зависит от уровня другого фактора. Следовательно, результаты должны интерпретироваться более обобщенно. Поскольку отклики Rt являются случайными величинами, эффекты также яв- ляются случайными. Чтобы установить, являются ли эффекты «реальными», то есть отличными от тех, что объясняются случайными колебаниями, нужно полу- чить оценку их дисперсии. Для этого можно использовать несколько методов [Box, Hunter and Hunter, 1978]; наиболее простой из них состоит в повторе всего плана п раз и получении п независимых значений каждого эффекта. Затем их мож- но использовать для построения 100(1 - а)-процентных доверительных интерва- лов для ожидаемых эффектов с использованием t-распределения с и -1 степенями свободы из формулы (4.12). Если доверительный интервал для определенного эф- фекта не содержит нуль, можно считать этот эффект реальным; в противном слу- чае у нас нет статистических доказательств его наличия. Как обычно, при больших значениях п ширина доверительного интервала уменьшается, и нам проще опреде- лить реальность эффекта. К тому же статистическая значимость эффекта не обя- зательно предполагает, что его величина окажется практически значимой. Пример 12.2. Мы повторили весь 22-факторный эксперимент с моделью системы управ- ления запасами из примера 12.1 п - 10 раз и таким образом получили 10 независимых повторений каждого из трех эффектов. Выборочное среднее 10 главных эффектов фак- тора s составило es(10) - 17,66, а оценка Var[es(10)] — 0,31, так что приближенный 90-процентный доверительный интервал для E(es) равен 17,66 ± 1,02, и главный эффект фактора s кажется статистически значимым. Аналогично, приближенный 90-процен- тный доверительный интервал для f(ej равен -8,73 ± 1,27, а для Е(е^) - 10,60 ± 1,94. Значит, для 10 повторов эксперимента все эффекты оказались реальными. Имеют ли ве- личины этих статистически значимых эффектов практическое значение, должен опре- делять тот, кто знаком с системой и ее функционированием. Кроме того, действительное наличие эффекта взаимодействия затрудняет прямую трактовку главных эффектов вза- имодействующих факторов (об этом рассказывается в конце данного раздела). В примерах 12.1 и 12.2 моделирование четырех различных комбинаций факто- ров мы выполняли независимо. Поскольку моделируются четыре различные кон- фигурации, вместо независимого моделирования можно было бы воспользоваться методом общих случайных чисел (см. раздел 11.2), чтобы попытаться уменьшить половину длины доверительных интервалов ожидаемых эффектов. Но в данном случае это не так просто сделать, как в разделе 11.2. Если метод общих случайных чисел действительно успешно выполняется и вызывает нужную положительную корреляцию между откликами, полученными при различных конфигурациях, не- которые ковариации попадают в выражение дисперсии эффекта с неправильным знаком; таким образом дисперсия может быть увеличена или уменьшена в зависи- мости от относительной величины ковариаций и от того, какой эффект рассмат- ривается (см. задачу 12.3). Мы повторно выполнили эксперимент из примера 12.2
12.2. Факторные планы типа 2* 717 с использованием общих случайных чисел и установили, что половины длин дове- рительных интервалов для E(ed) и E(esd) уменьшились (до 0,48 и 0,71 соответствен- но), а половина длины доверительного интервала для £(es), наоборот, увеличилась (до 1,22). Это всего лишь пример проблемы, возникающей при назначении слу- чайных чисел в процессе моделирования, впервые затронутой Шрубеном и Мар- голином [Schruben and Margolin, 1978] (см. также [Hussey, Myers and Houck, 1987] и информацию в конце раздела 12.4 о применении методов понижения дисперсии при планировании имитационных экспериментов). Последний пример данного раздела касается более детально разработанной модели с большим числом факторов. Он показывает, насколько сложными могут быть вычисления при использовании факторного плана типа 2* даже в обычных «учебных» моделях (этот вопрос еще будет подниматься нами дальше). Пример 12.3. В примере 9.25 была представлена модель небольшого предприятия, где поступающие детали обрабатываются на станках, а затем подвергаются проверке. Дета- ли, которые не прошли качественного контроля, возвращаются в цех для повторной обработки (см. рис. 9.9). Станки подлежат ремонту в случае их поломки. Модель прого- няется в течение 160 ч, из которых первые 40 ч исключаются (в этот период предвари- тельной работы модель должна достичь установившегося состояния). В качестве откли- ков мы рассматриваем среднее время пребывания детали в системе и среднюю длину очереди на станцию технического контроля, поскольку может возникнуть вопрос, хва- тит ли на станции свободной площади. Мы не рассматриваем производительность, по- скольку она будет составлять 60 деталей в час для любой четко определенной (то есть стационарной при длительном прогоне) конфигурации системы. Детали поступают в соответствии с пуассоновским процессом с интенсивностью 1 деталь в минуту. Мы до- пускаем, что этот фактор является неуправляемым, поэтому он не учитывается в нашем плане как экспериментальный фактор. Существует шесть других факторов, которые мо- гут быть управляемыми (табл. 12.5). Для каждого фактора уровень «-» представляет те- кущую ситуацию, описанную в примере 9.25, а уровень «+» обозначает то, что считается улучшением, по крайней мере относительно уменьшения среднего времени пребывания детали в системе. Обратите внимание: во всех случаях, кроме одного, числовые параметры на уровне «+» действительно меньше их аналогов на уровне «-», что нарушает данный ранее совет. Однако, если мы определяем уровни таким образом, каждый главный эффект будет сле- дствием соответствующего подразумеваемого улучшения. Факторы 1-5 являются коли- чественными, и уровень «+» в каждом из них представляет 10-процентное улучшение; фактор 6 является качественным и представляет изменение дисциплины обслуживания в каждой из двух очередей: вместо дисциплины FIFO используется дисциплина, при ко- торой первой обрабатывается самая короткая работа в терминах их времени фактичес- кой механической обработки или проверки. В табл. 12.6 показана матрица для плана 26-факторного эксперимента с 64 различными точками. Мы повторили весь план п - 5 раз, чтобы получить доверительные интервалы для ожидаемых эффектов, как в примере 12.2; всего выполнено 320 отдельных прогонов для эксперимента. Мы использовали пакет имитационного моделирования SIMAN, на основе которого был создан пакет Arena (см. главу 3); оказалось, что удобнее всего ис- пользовать общие случайные числа для всех 64 точек плана. Эксперимент выполнялся на персональном компьютере в течение нескольких часов.
718 Глава 12. Планирование экспериментов и методы оптимизации Таблица 12.5. Кодирование факторов для модели небольшого производства (время измеряется в минутах) Номер фактора Описание фактора — (текущее состояние) + (улучшенное состояние) 1 Время обработки на станке U(0,65; 0,70) U(0,585; 0,630) 2 Время проверки U(0,75; 0,80) U(0,675; 0,720) 3 Время безотказной работы станка ехро(360) ехро(396) 4 Время ремонта станка U(8,12) U(7,2; 10,8) 5 Вероятность обнаружения дефектов при проверке 0,10 0,09 6 Дисциплина очереди (в обоих случаях) FIFO Самые короткие работы обрабатываются в первую очередь Таблица 12.6. Матрица факторного плана типа 26 для модели небольшого производства Точка плана Номер фактора 1 2 3 4 5 6 1 — — — — — — 2 4- — — — — — 3 — + — - - - 4 + + — — - - 5 — — + — - - 6 + — + — — 7 - + + — - — 8 + + + — — — 9 — — — + — - 10 + — — + - - И — + — + — — 12 + + — + — - 13 — — + + — - 14 + — + + — - 15 — + + + — - 16 + + + + — — 17 — — — — + - 18 + — — — + - 19 — + — — + — 20 + + — — + - 21 — — + — + — 22 + — + — + — 23 — + + — + — 24 + + + — + - 25 - - - + + -
12.2. Факторные планы типа 2к 719 Точка плана Номер фактора 1 2 3 4 5 6 26 + — — 4- + - 27 - + - + + - 28 + + - + + - 29 — — + + + - 30 + - + + 4- - 31 — + + + + - 32 + + + + + - 33 — — — - 4- 34 + — - - + 35 — + — - + 36 + + — - - + 37 — & + - - + 38 + — + - - + 39 — + + — - + 40 + + + - - + 41 — — — 4- - 4- 42 + — — + - + 43 — + - + - + 44 + + - + - 4- 45 — — + 4- - + 46 + — + + - + 47 — + + + - + 48 + + + + - + 49 — — — — + + 50 + — — — + + 51 — + — — 4- + 52 + + — — + + 53 — — 4- — + + 54 4- + — + + 55 — + + - + + 56 + + + — + + 57 — — — + + + 58 + — — + + + 59 - + — + + + 60 + + — + + + 61 - — + + + + 62 + — + + + + 63 — + + 4- + 4- 64 + 4- + + + 4-
720 Глава 12. Планирование экспериментов и методы оптимизации • Один повтор • Среднее, полученное для пяти повторов в точке плана — Общее среднее Рис. 12.1. План эксперимента для модели небольшого производства: отдельные повторные прогоны и средние результаты, полученные по этим прогонам На рис. 12.1 с помощью небольших точек показаны отдельные повторы обоих откли- ков — над каждой точкой плана распределены вертикально пять точек. Большие точки показывают среднюю величину пяти повторений откликов в каждой точке плана, а гори- зонтальные линии представляют общее среднее каждого отклика, то есть среднее ре- зультатов всех 320 прогонов. На основании этих графиков можно сделать несколько за- ключений. ♦ Для обоих откликов большие точки постоянно и последовательно объединяются попарно: за двумя «верхними» значениями следуют два «нижних» значения, затем опять два «верхних» значения и т. д. Такая последовательность соответствует изме- нениям уровня фактора 2 — фактора времени проверки (см. табл. 12.6). Уменьшение времени проверки происходит последовательно и существенно улучшает значения обоих откликов (далее это будет подтверждено формально с помощью вычислений эффектов). ♦ Для обоих откликов в каждом блоке, состоящем из 16 больших точек, вторые во- семь точек будут ниже, чем первые восемь точек. Через каждые 8 точек фактор 4 (время ремонта станка) изменяет свой уровень, значит, улучшение рабочих характе- ристик можно ожидать за счет сокращения времени простоев станков.
12.2. Факторные планы типа 2* 721 ♦ В блоке, состоящем из 32 больших точек, вторая шестнадцатая точка будет ниже; это указывает на то, что уменьшение вероятности обнаружения дефектов детали также приносит пользу (через 16 точек плана изменяется уровень фактора 5). ♦ Результаты, полученные для точек плана 33-64, практически в точности копируют результаты, полученные для точек плана 1-32. Единственная разница между факто- рами в этих двух блоках касается дисциплины обслуживания, применяемой к каж- дой очереди. Следовательно, этот фактор не имеет особого значения. Поскольку вышеприведенные заключения имеют большое значение, нужно подтвердить их формально и постараться также определить эффекты количественно. На рис. 12.2 изображен график 90-процентных доверительных интервалов для ожидаемых главных эффектов и эффектов взаимодействия между двумя факторами для обоих откликов, полученных по пяти повторам всего плана, как описывалось выше. 1 2 3 4 5 6 1 2 1 3 1 4 1 5 1 6 2 3 2 4 2 5 2 6 3 4 3 5 3 6 4 5 4 65 6 Метка эффекта Рис. 12.2. План эксперимента для модели небольшого производства: главные эффекты и эффекты взаимодействия между двумя факторами
722 Глава 12. Планирование экспериментов и методы оптимизации Хотя мы также вычисляли эффекты взаимодействия между тремя и более факторами (в том числе и эффект взаимодействия между шестью факторами), графиков для них мы не создавали, поскольку они все были очень близки к нулю. Фактически мы можем убедиться (см. рис. 12.2), что и взаимодействия между двумя факторами в этом случае также незначительны по сравнению с некоторыми из главных эффектов. Действитель- но, отсутствие существенного взаимодействия позволяет нам прямо интерпретировать оценки главных эффектов, что и будет сделано далее. Главный эффект фактора 2 (время проверки) будет строго отрицательным для обоих от- кликов, значит, более быстрые проверки дают наибольшее улучшение рабочих показа- телей. Может также показаться, что сокращение времени ремонта станка (фактор 4) либо улучшение качества (уменьшение вероятности обнаружения дефектов детали, фактор 5) будет следующим шагом, который можно предпринять. Обратите внимание на разног- ласие между двумя откликами относительно знака главного эффекта фактора времени обработки детали (фактор 1): уменьшение времени обработки сокращает среднее время пребывания детали в системе, но увеличивает среднюю длину очереди к станции техни- ческого контроля. Среднее время безотказной работы станка (фактор 3) оказывается неважным (оно даже не имеет статистической значимости), поэтому на улучшение на- дежности станков можно не тратить усилия. Кроме того, уже не стоит дополнительно беспокоиться об изменении дисциплины обслуживания очереди (фактор 6), для того чтобы самые короткие работы обрабатывались первыми. Далее при подобных исследованиях можно предпринять один из следующих шагов. Крайне важным представляется сокращение времени проверки, как, впрочем, и времени ремонта станков, а также улучшение качества деталей. Если попытаться ускорить обра- ботку, можно сократить время пребывания детали в системе, но в то же время это может увеличить требования к свободной площади на станции технического контроля. Если нам кажется, что более детальное изучение первых трех факторов необходимо, чтобы обосновать возможные крупные капиталовложения, то по крайней мере о факторах дис- циплины обслуживания очереди и времени безотказной работы станков можно забыть. В результате наша задача сводится к рассмотрению четырех факторов, что заметно об- легчает дальнейший анализ. Примеры этого раздела иллюстрируют методы планирования описанных нами экспериментов. Если читателя заинтересуют отзывы о применении таких методов (а также тех, что будут представлены в следующем разделе) при моделировании, он может обратиться к работам Худа и Велча [Hood and Welch, 1992], Фаррингтона и Свейна [Farrington and Swain, 1993], Поркаро [Porcaro, 1996]. Рассматриваемые здесь методы планирования были реализованы в пакете AutoStat, прилагаемом к программе AutoMod (см. раздел 13.3). Вопросы реализации планирования экспе- риментов в пакетах имитационного моделирования затрагиваются также Ченгом и Лэмбом [Cheng and Lamb, 1998]. Многие статистические пакеты могут помочь в разработке и анализе планов экспериментов; но при этом должно существовать какое-нибудь средство для автоматизации выполнения возможного большого чис- ла различных конфигураций и прогонов модели, а также импортирования модель- ных выходных данных в статистические пакеты для анализа. Планы факторных экспериментов помогают понять сложные имитационные модели, однако они имеют ограничения. Для того чтобы буквально интерпретиро- вать основные эффекты, мы должны предположить, что ожидаемый отклик мож- но выразить как простую линейную функцию факторов, и при этом мы, в частное-
12.2. Факторные планы типа 2* 723 ти, допускаем, что между факторами нет взаимодействия. Для модели системы управления запасами из примеров 12.1 и 12.2, в которых задействованы количес- твенные факторы s и d, если J?(s, d), — это отклик модели для определенной пары значений (s, d), тогда в 22-факторном эксперименте можно выразить ожидаемый отклик как функцию факторов х и d, принимающую форму £№, J)] = ₽0 + ₽,х + М + № (12.1) для некоторых констант р0, pj и pS(/. Вероятно, это лучшее приближение, по- скольку мы позаботились о выполнении моделирования в первую очередь, что, конечно, труднее, чем просто получить оценку уравнения (12.1) для различных комбинаций факторов хи d. (Уравнение (12.1) является регрессионной (имитаци- онной) моделью, а оценки методом наименьших квадратов р0, р„ Pj и pS(/ оказыва- ются простыми линейными преобразованиями общего среднего отклика es, ed и о чем рассказано в разделе 12.4). Но даже если данное уравнение является точным представлением имитационной модели, при буквальной интерпретации es как из- менения в отклике вообще при переходе фактора х с его уровня «-» на уровень «+» допускается, что х не взаимодействует с d. Короче говоря, частичная производная уравнения (12.1) по отношению к х не зависит от значения d (и наоборот), если Pid равно 0, то есть если между ними нет взаимодействия. С одной стороны в модели системы управления запасами из примеров 12.1 и 12.2 мы действительно обнаружили существенное взаимодействие между х и d, а это означает, что главный эффект х нельзя просто интерпретировать как то, что происходит с £[jR(x, J)] при перемещении фактора х с его уровня «-» на уровень «+». С целью определения эффекта изменения х для E[R(s,«/)] нам нужно исполь- зовать предполагаемую версию уравнения (12.1), включающую член нелинейного векторного произведения, предполагающего, что эффект изменения х будет зави- сеть от уровня d; на самом деле это и является сутью взаимодействия между фак- торами. Данные вопросы мы рассмотрим позднее, в разделе 12.4. С другой стороны, в производственной модели с шестью факторами из приме- ра 12.3 не было обнаружено существенного взаимодействия, так что главный эф- фект можно рассматривать как изменение в отклике, возникшее в результате пе- рехода фактора с уровня «-» на уровень «+». Однако даже в примере 12.3, где мы не нашли доказательств сильного взаимо- действия нашего плана, остаются некоторые предупреждения относительно ин- терпретации главных эффектов и результатов в целом. 4- Вероятно, небезопасно воспринимать оценку главного эффекта в целом как точное представление того, что происходит с откликом, когда величина разно- сти перемещает фактор с его уровня «-» на уровень «+», начиная с любого ис- ходного значения. Вероятность обнаружения дефектной детали (это фактор 5 в табл. 12.5) составляла 0,10 на уровне «-» и 0,09 на уровне «+», то есть вели- чина изменения при переходе с уровня «-» на уровень «+» равнялась -0,01. Таким образом, в связи с отсутствием сильного взаимодействия мы будем трактовать оценку главного эффекта фактора 5 (см. рис. 12.2) как изменение в рассматриваемом отклике, когда мы изменяем значение фактора с 0,10 на 0,09. Но, наверное, было бы неосторожно считать этот самый главный эффект
724 Глава 12. Планирование экспериментов и методы оптимизации точным представлением того, что произошло бы с откликом, если бы мы из- менили фактор на ту же величину -0,01, начиная с любого значения (напри- мер, при изменении его с 0,99 на 0,98 или с 0,43 на 0,42), если только мы не хотим принять некое смелое (и, возможно, безрассудное) предположение, что отклик остается линейным вне области уровней факторов, действительно рассмотренных при нашем эксперименте. У нас просто нет прямых сведений об отклике вне области уровней факторов, которую мы выбрали (в данном примере с 0,10 по 0,09), поэтому экстраполяция этих результатов и выводов на неисследованные области будет спорной. 4- Кроме того, следует помнить, что наши результаты и выводы (например, ве- личины эффектов определяют оценку наличия взаимодействий) относятся к уровням факторов, которые мы выбрали для нашего плана. Такие результаты и выводы не могут быть точным указанием на то, что произошло бы в случае выбора нами других уровней факторов, возможно, даже если бы мы просто перевели «геометрию» плана для количественных факторов на другое поло- жение в пространстве факторов, сохранив расстояние между уровнями «-» и «+». Поскольку нет никакого определенного предписания о способе выбора уровней факторов для плана, это чрезвычайно важное предупреждение. 4 Как уже отмечалось ранее в данном разделе, уровни количественных факто- ров «-» и «+» не должны быть разделены слишком большим расстоянием. В первую очередь потому, что такое большое расстояние может означать, что сами уровни будут установлены на предельные или нереалистичные значения. Кроме того, большое расстояние, разделяющее уровни факторов, увеличивает риск предоставления полной иллюзии линейности и отсутствия взаимодейст- вия, тогда как на самом деле внутри области уровней факторов есть нелиней- ность; такая нелинейность в наших результатах будет скрыта, поскольку мы не моделировали в обширной области между уровнями факторов. Иными сло- вами, значительное расстояние между уровнями факторов делает интерполя- цию наших результатов более сомнительной внутри области, расположенной между двумя уровнями факторов. Эту проблему, возможно, удастся решить благодаря использованию более тщательно продуманного плана, например центрального композиционного плана (см. раздел 12.4). 12.3. Эксперименты со многими факторами В экспериментах с производственной моделью из примера 12.3 задействовано шесть факторов, и это требовало значительных вычислительных усилий. Легко вообразить, как будет выглядеть более сложная версия этой модели, где интерес могут представлять десятки или даже сотни различных факторов. В этом случае полные факторные планы типа 2* очень быстро станут неуправляемыми. Так, при k - 11 факторов понадобится 211 - 2048 точек плана, если будет выполняться п - 5 повторов в каждой точке плана (довольно умеренный объем выборки с точки зре- ния статистики), то в целом получится 10 240 повторов. Учитывая то, что каждый повтор плана занимает, скажем, 1 мин компьютерного времени (весьма скромная
12.3. Эксперименты со многими факторами 725 величина при моделировании больших систем), понадобится целая неделя круг- лосуточной работы компьютера для выполнения эксперимента. В этом разделе представлено несколько процедур, которые можно использо- вать, когда (по крайней мере изначально) существует много факторов, что при мо- делировании случается довольно часто. В разделе 12.3.1 описана разновидность полного факторного плана типа 2* из раздела 12.2, а в разделе 12.3.2 дается инфор- мация о других типах планов, используемых при очень большом числе факторов. Иногда есть надежда, что удастся быстро выделить несущественные факторы, за- фиксировать их на каком-то среднем или другом подходящем уровне и забыть о них при последующих исследованиях, где основное внимание будет уделяться остальным факторам, которые действительно имеют значение. В частности, по- добное сокращение числа факторов соответственно уменьшает размерность об- ласти поиска для методов поиска оптимума (см. раздел 12.6), а это дает огромное преимущество при вычислениях с использованием подобных методов. 12.3.1. Факторные планы типа 2*~₽ с дробными репликами Факторные планы с дробными репликами обеспечивают хорошие оценки, напри- мер, главных эффектов и, вероятно, эффектов взаимодействия между двумя фак- торами за компьютерное время, необходимое для выполнения вычислений по пол- ному факторному плану типа 2*. Изначально факторный план 2*~₽ с дробными репликами создается путем выбора определенного подмножества (объемом 2*^) из всех 2к возможных точек плана, а затем выполнения моделирования только для выбранных точек. Поскольку в действительности выполняются лишь 1/2р из воз- можных 2* комбинаций факторов, то мы говорим об 1 /2 части реплики, еслир = 1, об 1/8 части реплики — если/? = 3 и т. д. Естественно, нам бы хотелось, чтобы/? имело большое значение для упрощения вычислений, но из-за этого может быть получено меньшее количество информации в ходе эксперимента. Обычно сложно определить, какие 2к~р из 2* возможных комбинаций следует выбрать. Лучше всего этот вопрос освещается в литературе. Тем не менее мы можем описать простую процедуру, которую можно использовать во многих ситуациях. Вначале необходимо рассмотреть идею смешивания в дробных факторных пла- нах 2*Т Оказывается, что при использовании такого плана можно получить совер- шенно одинаковые алгебраические выражения для нескольких различных эф- фектов. Например, при использовании 1/2 части реплики 241 формулы главного эффекта е4 и эффекта взаимодействия между тремя факторами ei23 будут идентич- ными. В таком случае говорят о смешивании главного эффекта фактора 4 с эффек- том взаимодействия между факторами 1,2 и 3, то есть общие формулы для е4 и е123 являются несмещенными оценками для Де4) + Де123). Теперь если мы допустим, что £(«123) = 0 или что им можно пренебречь по сравнению с Де4), то е4 будет несмещенной (или почти несмещенной) оценкой Де4). Часто эффекты взаимо- действий между большим числом факторов оказываются незначительными в сравнении с главными факторами или эффектами взаимодействия между двумя факторами (как мы смогли убедиться в примере 12.3), поэтому такое допущение
726 Г лава 12. Планирование экспериментов и методы оптимизации действительно может быть оправдано. Проблемы обычно возникают в тех случа- ях, когда эффекты взаимодействий между двумя факторами смешиваются друг с другом; например, е12 и е34 метут быть идентичными, в этом случае такое общее вы- ражение является несмещенной оценкой для £(еи) + £(е34), а допущение, что один из эффектов взаимодействия равен нулю, может показаться неподходящим. Еще хуже, когда главный эффект смешивается с эффектом взаимодействия между дву- мя факторами, что делает первый сомнительным, если имеется даже малейшая ве- роятность наличия второго (мы не можем это установить, поскольку эффекты взаимодействий между двумя факторами смешиваются либо с главными эффекта- ми, либо друг с другом, либо с эффектами взаимодействий между большим чис- лом факторов). В общем чем больше значение/?, тем серьезнее становится пробле- ма смешивания. Одним из способов количественного измерения общей строгости смешивания является применение концепции разложения отдельного факторного плана 2^ с дробными репликами. Утверждается, что два эффекта не смешиваются друг с другом, если сумма их факторов строго меньше разрешающей способности пла- на; при этом главные эффекты рассматриваются как «односторонние». Например, в плане с разрешающей способностью IV (по традиции разрешающая способность обозначается римскими цифрами) главные эффекты не смешиваются с эффекта- ми взаимодействий между двумя факторами (1 + 2 < 4), но последние смешивают- ся друг с другом (2 + 2 = 4). Следовательно, пренебрегая взаимодействием между тремя и более факторами, мы получим «чистые» оценки главных эффектов с по- мощью планов с разрешающей способностью IV, но не сможем получить надеж- ные оценки эффектов взаимодействия между двумя факторами. При моделиро- вании нас обычно будет интересовать взаимодействие по меньшей мере между двумя факторами, поэтому план с разрешающей способностью IV может оказать- ся неподходящим. Более того, как указывалось в конце раздела 12.2, даже наличие взаимодействия между двумя факторами (которое нельзя определить по плану с разрешающей способностью IV) делает прямую трактовку главных эффектов со- мнительной. Если мы не знаем, присутствует ли взаимодействие между двумя факторами, нам также неизвестно, можно ли прямо интерпретировать главные эффекты задействованных факторов. Тем не менее при разрешающей способно- сти V мы получим эффекты взаимодействия между двумя факторами, не смешан- ные друг с другом (2 + 2 < 5), но они будут смешаны с эффектами взаимодействий между тремя факторами; главные эффекты в этом случае вызывают меньше про- блем, поскольку они смешиваются только с эффектами взаимодействия между че- тырьмя факторами и более. Кроме того, поскольку при разрешающей способности V мы можем определить наличие эффектов взаимодействия между двумя факто- рами (допуская, что взаимодействие между тремя факторами и более отсутству- ет), нам будет известно, имеет ли смысл прямая интерпретация главных эффектов (см. конец раздела 12.2). В планах с разрешающей способностью III главные эф- фекты смешиваются с эффектами взаимодействия между двумя факторами. Хотя ниже будет рассказано, как создавать планы с такой разрешающей способностью, советуем воздерживаться от их использования при моделировании. Короче гово- ря, в связи с вышеописанными трудностями, которые возникают при применении
12.3. Эксперименты со многими факторами 727 планов с разрешающей способностью IV, мы рекомендуем использовать только планы с разрешающей способностью V и выше. (Разрешающая способность ука- зывается в виде нижнего индекса: 2^‘, 2®-2и т. д.) Как только мы определим число факторов k и нужную разрешающую способ- ность, необходимо построить план, то есть установить значение;? и указать, какие из 2*~р строк полной матрицы факторного плана типа 2к будут использоваться. Сначала следует написать полную матрицу факторного плана типа 2*~р для факто- ров 1,2..k -р, как в табл. 12.2 и 12.6. Остальные/? столбцов (для факторов k-р + + 1...k) определяются потом путем «умножения» некоторых из первых k - р столбцов по правилам, указанным в табл. 12.7 [ Box, Hunter and Hunter, 1978], где «умножение столбцов» означает умножение соответствующих элементов каждого столбца; при этом одинаковые знаки дают «+», а разные — «-», точно так же, как и при вычислении взаимодействий для полного плана. Например, чтобы создать план 2у-2 (1/4 часть реплики при k = 8 факторов), описанный в табл. 12.7, сначала запишем полный факторный план 26 для факторов 1, 2, ..., 6, а затем определим столбец для фактора 7 как произведение столбцов 1,2,3 и 4, а столбец 8 — как про- изведение столбцов 1, 2, 5 и 6 (мы могли бы обратить знаки в одном из столбцов или в обоих столбцах 7 и 8, взяв взамен вариант «-» в определении «±» табл. 12.7; такая гибкость может оказаться полезной при моделировании, например: в том случае, если каждый раз берется вариант «+», выполнение моделирования стано- вится дорогостоящим). Затем главный эффект фактора; вычисляется, как при ис- пользовании плана полного факторного эксперимента. Применяем знаки столбца фактора; к соответствующим числам в столбце отклика и складываем их; после этого делим сумму на 2Л"р_1, а не на 2*-1. Эффекты взаимодействия тоже вычисля- ются, как и раньше — умножаем столбцы для задействованных факторов, присваи- ваем полученные в результате знаки столбцу отклика, складываем их и делим на 2*-р-1 При вычислении эффектов взаимодействия следует помнить, что не все они лишены смешивания из-за ограниченной разрешающей способности плана. Таблица 12.7. Правила создания факторного плана с дробными репликами Разрешающая способность к Ш IV V 3 п 3-1 zin 3-± 12 4 94—1 ZIV 4 = ± 123 5 9 5-2 zin 05-1 ZV 4 = ±12 5 = ±1234 5 = ±13 6 96-3 zin 96-2 zrv 4 = ±12 5 = ±123 5 = ±13 6 =±23 6 = ±234 продолжение &
728 Глава 12. Планирование экспериментов и методы оптимизации Таблица 12.7 (продолжение) Разрешающая способность < г-•. k Ш IV V - - v 7 27-4 ZIII q7—3 ZIV 4 = ±12 5 = ±123 5 = ±13 6 = ±234 6 = ±23 7 = ±123 7 = ±134 8 08-4 zrv о 8-2 Zv 5 = ±234 7= ±1234 6 = ±134 7 = ±123 8 = ±124 8= ±1256 9 q9-5 ZIU q9—4 zrv 5 = ±123 6 = ±2345 6 = ±234 7 = ±1345 7 = ±134 8 = ±1245 8 = ±124 9 = ±1234 9 = ±1235 10 9IO-6 zin nlO-5 ZjV qIO-3 zv 5 = ±123 6 = ±1234 8 = ±1237 6 = ±234 7 = ±1235 ’ 9 = ±2345 7 = ±134 8 = ±1245 (10) = ±1346 8 = ±124 9 = ±1345 9 = ±1234 (10) = ±12 (10) = ±2345 И nll-7 ZIU oil-6 Z(V Oil-4 zv 5 = ±123 6 = ±123 8 = ±1237 6 = ±234 7 = ±234 9 = ±2345 7 = ±134 8 = ±345 (10) = ±1346 8 = ±124 9 = ±134 (11) = ±1234567 9 = ±1234 (10) = ±145 (10) = ±12 (11) = ±13 (11) = ±245 Перед тем как перейти к примерам, прокомментируем вышесказанное. ♦ Тот факт, что планы, определенные в соответствии с этой процедурой, дейст- вительно будут иметь указанную разрешающую способность, не обязательно будет очевидным (если читателя интересует данный вопрос, ему следует об- ратиться к литературе по планированию экспериментов). Взгляните на опре- деление плана 2v-2b табл. 12.7 (возьмем вариант «+» для факторов 7 и 8). Ес- ли бы мы должны были построить данный план, а затем вычислить взаимо- действие между четырьмя факторами е1234> то, очевидно, получили бы форму- лу, идентичную формуле для е7, поскольку именно так был определен столбец
12.3. Эксперименты со многими факторами 729 для фактора 7. Следовательно, главный эффект фактора 7 смешан с эффек- том взаимодействия между четырьмя факторами, но не с эффектом взаимо- действия между тремя факторами, так как четыре отдельных фактора исполь- зовались при определении его столбца в матрице плана. Все это согласуется с разрешающей способностью V плана. ♦ Может просто не существовать плана с искомой разрешающей способностью для определенного k (например, разрешение IV при k = 5 факторов). ♦ В табл. 12.7 введенные элементы (10) и (11) относятся к факторам 10 и И, чтобы избежать путаницы при совместном умножении столбцов одноразряд- ных факторов. Пример 12.4. Рассмотрим обобщенную модель управления запасами из примеров 12.1 и 12.2, в которой есть два новых фактора. Первый — интервал между оценкой запасов тп, то есть число месяцев между проведением двух последовательных оценок уровней запа- сов, чтобы узнать, следует ли размещать заказ. В исходной модели т = 1, но рассматри- вается возможность изменения значения т на 2, то есть чтобы оценка выполнялась че- рез месяц. Второй фактор возник вследствие введения поставщиком срочной доставки. Изначально, при заказе Z штук товара, расходы на выполнение заказа составляли 32 + + 3Z, а время доставки было равномерно распределено между 0,5 месяца и 1 месяцем. При срочной доставке поставщик сокращает время доставки наполовину (то есть оно будет равномерно распределено между 0,25 и 0,5 месяца), но расходы на выполнение за- каза будут составлять 48 + 4Z Таким образом, появляется качественный фактор при- оритета доставки Р (либо нормальная, либо срочная доставка). Значит, в этой обобщен- ной модели будет k = 4 фактора, уровни которых закодированы в табл. 12.8. Таблица 12.8. Схема кодирования для факторов s,d,mnP в обобщенной модели системы управления запасами Фактор — + S 20 60 d 10 50 ТП 1 2 р Нормальная доставка Срочная доставка Руководствуясь табл. 12.7, устанавливаем, что при k = 4 есть план с разрешающей спо- собностью IV и 1/2 частью реплики. Возьмем вариант «+» в определении для столбца 4 и получим матрицу плана, показанную в табл. 12.9, в которой также даны отклики (сред- ние общие расходы в месяц), полученные в ходе единственного выполнения плана в каждой точке (с использованием общих случайных чисел для различных точек плана). При данной разрешающей способности IV реально можно вычислить только главные эффекты: es = -2,96; ed " -12,77; ет = 2,85 и еР = 43,55. Мы повторили выполнение плана и = 10 раз, как в примере 12.2, и создали 90-процентные доверительные интервалы для ожидаемых основных эффектов: E(es): -0,61 ± 0,86; E(ed): -10,62 ±0,91; Е(ет\. 1,87 ± 0,75; Е(еР): 41,86 ± 0,95.
730 Глава 12. Планирование экспериментов и методы оптимизации Таблица 12.9. Матрица и результаты моделирования факторного плана 2|у-1 с дробными репликами для факторов s, d,m и Р (обобщенная модель системы управления запасами с одним прогоном) Комбинация факторов (точка плана) d т р Отклик 1 — — — * 141,86 2 + — — + 183,53 3 - + — + 154,20 4 + + — — 147,22 5 — — + + 209,34 6 + — + — 123,31 7 — + + — 133,02 8 + + + + 172,54 Для новых факторов не имеет особого значения, будем мы оценивать уровень запасов каждый месяц или раз в два месяца, а сокращение времени срочной доставки не столь существенно, так как требует дополнительных затрат. Следует осторожно относиться к этим выводам, поскольку нам не известно, присутствует ли при данной разрешающей способности взаимодействие между двумя факторами, а значит, мы не знаем, безопасно ли трактовать главные эффекты буквально. На самом деле, чтобы узнать, какая информация может быть утрачена при выполнении только 1/2 части реплики, описанной выше, мы выполнили другую 1/2 часть реплики (получив при этом факторный план 24) и проанализировали результаты. Для 10 повто- ров плана статистически значимые эффекты составили: £(вл): -2,34 ± 0,90; £(ed): -10,66 ±0,90; £(en): 1,96 ± 0,81; £(вР): 33,39 ± 0,42; £(е«,): 18,65 ± 1,17; £(вот): -19,43 ± 0,68; Е{е^у. 0,97 ± 0,81; £(6^): -2,87 ±0,29; £(етР): -2,11 ±0,29; ЕЫ-. 8,25 ±0,64; E(edmP); 1,76 ±0,21; r(^):-0,20±0,17. Во-первых, сразу можно увидеть, что присутствует существенное взаимодействие меж- ду двумя факторами, которое мы пропустили в 1/2 части реплики при разрешающей способности IV. Как отмечалось в конце раздела 12.2, наличие такого взаимодействия заставляет усомниться в значении главных эффектов, установленном по полному фак- торному плану (или в этом случае по факторному плану с дробными репликами). Срав-
12.3. Эксперименты со многими факторами 731 нивая главные эффекты s и d в этом случае с теми, которые были получены по более про- стой модели из примеров 12.1 и 12.2, мы отметили определенную разницу (например, даже знак оценки Е(е^) изменился), что частично можно отнести на счет взаимодейст- вия, присутствующего в обоих случаях, а также объяснить тем, что мы просто выполня- ем в обоих случаях две разные имитационные модели. Во-вторых, по результатам выполнения полного плана ввдно, что между тремя фактора- ми присутствует два заметных эффекта взаимодействия (esjm(10) и edmP (10)), каждый из которых смешивается с главным эффектом в этом плане. В частности, оценка es( 10), полученная по оценкам £(es) + £(edmp) в плане с 1/2 частью реплики, и оценка ёР (10), полученная по оценкам £(ер) + E(esllm) в плане с 1/2 частью реплики. В числовом выра- жении это выглядит примерно так же: 2^'дробный 24 полный ё,(10) = -0,61 * -0,58 = -2,34+ 1,76 = ё,(10) + 6^(10) ’ ёР(10) = 41,86 « 41,64 = 33,39 + Я25 = ёР(10) + 6^(10) Следовательно, в этом случае присутствовала некоторая информация о взаимодействии, утраченная при выполнении всего лишь 1/2 части реплики, а также некоторые неточ- ности в оценках главных эффектов. Однако основные выводы, сделанные по результа- там выполнения 1/2 части реплики (значение т не особенно важно, и срочная доставка не стоит затрат на нее), оказались правильными. Пример 12.5. Обратимся вновь к модели небольшого производства из примера 12.3 и воспользуемся планом 2 из табл. 12.7, взяв вариант «+» для обоих факторов 5 и 6. Поскольку мы уже выполняли полный факторный план 2®, нужно просто выбрать соот- ветствующие 16 из 64 строк табл. 12.6. Нами выбраны строки 1,7,12,14,18,24,27,29,36, 38,41,47,51,53,58 и 64; читателю следует самостоятельно подтвердить такой выбор. По тем же 5 повторам плана 90-процентные доверительные интервалы для ожидаемых главных эффектов (все что мы можем оценить в плане с разрешающей способностью IV) приведены в табл. 12.10; они в сравнении с главными эффектами частей рис. 12.2 очень близки к своим аналогам, полученным из полного плана. Такая согласованность не ка- жется удивительной в свете результатов, полученных при выполнении полного плана (см. пример 12.3), в которых не было обнаружено никакого существенного взаимодейст- вия; этот факт также согласуется с существенной избыточностью, отмеченной для от- дельных точек плана, что следует из полного плана (см. рис. 12.1). Значит, в этом случае 1/4 часть реплики дает нам информацию, которая ничем не хуже, чем информация, по- лученная по полному плану. Таблица 12.10. 90-процентные доверительные интервалы для ожидаемых главных эффектов, полученных по плану 2|®_ факторного эксперимента (модель небольшого производства) Номер фактора Среднее время пребывания детали в системе Средняя длина очереди к станции технического контроля 1 -0,15 ± 0,03 0,58 ± 0,04 2 -1,83 ± 0,29 -1,76 ± 0,24 3 -0,07 ± 0,10 0,02 ± 0,09 4 -0,20 ± 0,09 -0,09 ± 0,05 5 -0,23 ± 0,10 -0,16 ± 0,07 6 -0,02 ± 0,04 -0,02 ± 0,03
732 Глава 12. Планирование экспериментов и методы оптимизации Несмотря на ограничения, планы факторных экспериментов с дробными реп- ликами могут дать полезную информацию без выполнения огромного количества вычислений, необходимых для полного факторного эксперимента, при условии, что мы будем осторожны в интерпретации их результатов. Возвращаясь к приме- ру с 11 факторами (см. пример 12.3), мы могли создать план 2 V’4, чтобы получить достаточно надежные оценки главных эффектов и эффектов взаимодействия меж- ду двумя факторами (по взаимодействию между двумя факторами будет ясно, можем ли мы буквально трактовать главные эффекты). Таким образом, нам бы по- надобилось только 128 точек плана, а не 2048. Если опираться на предыдущие дан- ные, когда один прогон занимал 1 мин, чтобы выполнить этот план п = 5 раз, понадобилось бы всего 10 ч 40 мин компьютерного времени, а не целая неделя, как для полного плана. 12.3.2. Стратегии отсеивания факторов Когда число факторов будет умеренным, используя план факторного эксперимен- та с дробными репликами, например наподобие того, что рассматривался в раз- деле 12.3.1, возможно, удастся установить факторы, являющиеся важными, или отсеять те факторы, которые не имеют особого влияния и могут быть просто за- фиксированы на каком-нибудь разумном значении (при этом они более не учиты- ваются). Однако бывают ситуации, когда существует слишком много факторов, даже для того, чтобы выполнять планы факторных экспериментов с дробными ре- пликами. Например, Хайдер, Ноллер и Роби [Haider, Noller and Robey, 1986] про- анализировали системы производства печатных плат, в которых насчитывалось до 50 отдельных технологических операций. Для характеристики каждой из них тре- бовались отдельные параметры; таким образом, число отдельных факторов могло достигать нескольких сотен. Обозрение в контексте имитационного моделирования модификаций типов планов двухуровневых факторных экспериментов, рассмотренных в разделах 12.2 и 12.3.1 и подходящих для моделирующих экспериментов с большим числом факто- . ров, дано в работе Мауро [Mauro, 1986]. Наиболее известными среди них являют- ся планы Плэкета-Бермана, в которых k эффектов факторов можно исследовать как всего лишь k + 1 точек плана (а не 2к или 2*~р) при условии, что k + 1 делится на 4; таблицы к этим планам были разработаны Плэкетом и Берманом [Plackett and Burman, 1946]. Они представляют собой то же, что и планы 2,ц₽, когда k + 1 явля- ется степенью 2 (например, планы 2f„‘ 2щ4 в табл. 12.7). Если число факторов превосходит возможное число точек плана, нам придется использовать так называемый сверхнасыщенный план. Построение подобного пла- на основано на том, что каждый столбец матрицы плана в двухуровневых фактор- ных планах наполовину состоит из знаков «+» и наполовину — из знаков «-», как в табл. 12.2,12.4 и 12.6. Можно создавать матрицы плана с таким уравновешенным свойством и приемлемым числом точек плана, а оценки эффектов будут вычис- ляться по знакам в матрице, как и ранее. Например, в модели насчитывается k = = 120 факторов, но мы можем выполнить моделирование только 24 раза (а не для 2120 > 1036 точек плана, которые предусматриваются полным факторным планом).
12.3. Эксперименты со многими факторами 733 В соответствии с одним из типов сверхнасыщенных планов, именуемым случайно уравновешенным планом, 12 знаков «+» определяются как фактору и произвольно разбрасываются по 12 из 24 строк столбца/ а в остальные 12 позиций столбца по- мещаются знаки «-»; столбец для каждого фактора в матрице плана генерируется независимо. Мауро и Смит [Mauro and Smith, 1984] оценили разновидности и аль- тернативные методы анализа случайно уравновешенных планов, в частности при их применении в имитационном моделировании, и получили обнадеживающие результаты, касающиеся правильного определения значимых факторов. Недоста- ток планов данного типа состоит в том, что характер смешивания итоговых оценок эффектов будет случайным. Поэтому были разработаны систематические сверх- насыщенные планы, в которых знаки присваиваются не случайным образом, а так, чтобы свести к минимуму общие показатели смешивания. Такие планы, однако, создаются только для определенных комбинаций k и числа допустимых точек пла- на [Mauro, 1986]. Можно пойти другим путем — попытаться уменьшить эффективное число фак- торов k. Это даст положительные результаты, поскольку при исследовании эф- фектов факторов требования к вычислительной мощности возрастают экспонен- циально в зависимости от k (2*, 2k~p и т. д.). Чтобы достичь сокращения факторов, их группируют определенным образом. Например, в модели производственной системы, представляющей собой более крупный вариант системы из примеров 12.3 и 12.5, все средние значения времени обслуживания относят к одной группе, средние значения времени между поступлениями — ко второй, средние значения времени простоев — к третьей, а вероятности прохождения технического контро- ля — к четвертой. Можно сгруппировать факторы и по-другому: к одной группе от- нести параметры, связанные с определенной рабочей станцией. В результате объе- динения факторов каждая группа рассматривается как один сборный «фактор», отдельные факторы внутри группы устанавливаются на их уровни «+» или «-» од- новременно. Эффекты интерпретируются в соответствии с тем, что происходит, когда целая группа перемещается с одного уровня на другой. Одни группы могут оказаться важными, а другие нет. Затем используется рекурсивный процесс для выделения (по крайней мере частичного) из важных групп отдельных факторов до тех пор, пока наконец не будет определено некое подмножество исходных отдель- ных факторов, которые являются важными для системы. Конечно, этот процесс приводит к значительному уменьшению числа действенных факторов, он также сопровождается резким сокращением количества вычислений и обеспечивает воз- можность управления характером смешивания среди групп, если используется план эксперимента с дробными репликами. В связи с тем что процесс имеет рекур- сивный характер, общее число имитационных прогонов нельзя определить зара- нее. Кроме того, не всегда ясно, как следует группировать факторы. Например, оп- ределенная группа, содержащая отдельные важные факторы, в целом может не иметь особого значения, если эффекты некоторых ее членов неожиданно входят в противоположные направления и уравновешивают друг друга. Описанные планы называются групповыми отсеивающими планами [Mauro and Smith, 1982; Mauro, 1984; Mauro and Burns, 1984]. Азадивар, Шу и Ахмад [Azadivar, Shu and Ahmad, 1996] представили группировку факторов в контексте поиска оптимальной кон- фигурации производственной системы.
734 Глава 12. Планирование экспериментов и методы оптимизации Методы, описанные в этом разделе, могут применяться как в физических, так и в моделирующих экспериментах. Однако при динамичном моделировании су- ществует возможность применения и тех методов, которые нельзя реализовать в статичных моделях или физических экспериментах. Один из таких методов, раз- работанный Шрубеном и Когльяно [Schruben and Cogliano, 1987], предполагает генерирование колебаний значений различных входных параметров в процессе моделирования; эти колебания происходят с различной частотой. Затем исследу- ется выходной процесс, чтобы узнать, частоты колебаний каких входных парамет- ров можно установить по его результатам. Если колебание значений важных фак- торов создает колебание в выходных данных с соответствующей частотой, тогда колебание факторов, которые не имеют особого значения, не будет явным. В ре- зультате проведенных исследований удалось отобрать важные факторы в несколь- ких экспериментальных моделях; при этом понадобился гораздо меньший объем моделирования, чем при использовании условных планов проведения экспери- ментов. Санчес и Шрубен [Sanchez and Schruben, 1987] приводят подробный при- мер использования этого метода для определения важных факторов в модели африканского порта из задачи 2.23. Такие методы представления в частотной об- ласти рассматриваются и в других работах [Sanchez and Buss, 1987; Som, Sargent and Schruben, 1987; Buss, 1988; Jacobson, Morrice and Schruben, 1988; Som and Sargent, 1988; Jacobson, Bussand Schruben, 1991; Sanchez and Sanchez, 1991; Sargent and Som, 1992; Morrice and Schruben, 1993a, 1993b; Hazra, Morrice and Park, 1997]. Изучение методов отсеивания факторов при моделировании продолжается ря- дом исследователей [Cook, 1992; Webb and Bauer, 1994; Bettonvil and Kleijnen, 1997; Cheng, 1997]. 12.4. Поверхности отклика и метамодели Имитационную модель можно рассматривать как механизм преобразования вход- ных параметров в выходные показатели работы. В этом смысле моделирование яв- ляется всего лишь функцией — векторнозначной или стохастической. Явная фор- ма этой функции неизвестна (даже если бы она и была известна, то оказалась бы очень сложной), поскольку нам все же приходится выполнять моделирование, а не просто подставлять числа в некую формулу. Здесь описаны методы разработки простых формул, которые приближенно представляют такую функцию. Прибли- женную формулу можно использовать как заменитель самого моделирования, чтобы получить хотя бы поверхностное представление о том, что же произойдет с системой при большом числе комбинаций входных параметров. Эта возможность важна при моделировании очень больших систем, требующих значительных за- трат, когда удается исследовать только несколько из всех комбинаций входных па- раметров. Поскольку такая приближенная формула является по сути алгебраиче- ской моделью из имитационной модели, ее часто называют метамоделью. В данном разделе приводятся примеры построения метамоделей, а также рас- сматривается ряд связанных с ними вопросов [Box, Hunter and Hunter, 1978; Box and Draper, 1987; Wilson, 1987; Myers, Khuri and Carter, 1989; Sargent, 1991; Barton,
12.4. Поверхности отклика и метамодели 735 1992, 1998; Hood and Welch, 1993; Shaw, Davis and Raines, 1994; Myers and Mont- gomery, 1995; Friedman, 1996; Khuri and Cornell, 1996; Zeimer and Tew, 1996; Wat- son et al., 1998]. Примером метамодели может служить моделирование системы управления за- пасами в примерах 12.1 и 12.2, где входными параметрами были момент возобнов- ления заказа з и величина заказа d, а выходными данными — средние общие расхо- ды в месяц, являвшиеся случайной величины. Значит, в принципе можно было написать Средние общие расходы в месяц = 2?(з, d) для некоторой стохастической неизвестной и, вероятно, довольно запутанной функции R. В действительности вся моделирующая программа оценивает R для входных числовых значений з и d. На рис. 12.3, а показана трехмерная сетчатая поверхность средней величины для 10 независимых повторных прогонов, генерируемых путем моделирования значений R(s, d) для всех 420 комбинаций входных параметров з = 0, 5,10,..., 100 и d = 5,10,15,..., 100. Далее, на рис. 12.3, б, контурная карта поверхности представ- ляет ту же информацию более подробно, где все точки (з, d) вдоль определенной контурной линии дают приближенно тот же уровень среднего отклика. Эти гра- фики численно характеризуют функцию отклика 2?(з, d) в данной параметриче- ской области, даже несмотря на то, что у нас нет характеризующей ее алгебраиче- ской формулы. Поверхность, которая показана на рис. 12.3, а, иногда называют поверхностью отклика имитационной модели; этот термин особенно подходит к ситуациям, подобным вышеописанной, когда есть два входных фактора и мы дей- ствительно можем создать подобные изображения. Конечно, очень удобно иметь поверхность отклика, подобную изображенной на рис. 12.3, а, и мы многое можем по ней установить. Например, средние общие расходы резко возрастают по мере уменьшения обоих значений з и d; зто, вероят- но, связано с тем, что при постоянном откладывании поставок приходится чаще оплачивать установленную стоимость выполнения заказа при небольших разме- рах самого заказа. В то же время, если оба значения з и d будут слишком большими, компонент издержек на хранение станет неконтролируемым. Вероятно, наиболее важный вывод заключается в следующем: самые низкие средние общие месячные расходы, очевидно, будут составлять от 110 до 120 долларов. Таких расходов мож- но достичь, приняв з равным 25 и d — равным 35 или 40. Вспомните, при генерировании данных для поверхности отклика на рис. 12.3, а нам пришлось произвести 4200 отдельных имитационных прогонов, что на прак- тике при моделировании крупных систем осуществить нельзя. Только выполне- ние отдельного прогона некоторых моделей на мощном компьютере может занять несколько часов, что исключает возможность проведения даже скромного фактор- ного эксперимента с дробными репликами, не говоря уже о более или менее исчер- пывающей оценке отклика, необходимой для подробного изображения на карте поверхности отклика (рис. 12.3, б). В таких случаях целесообразно разработать простую алгебраическую функ- цию, соотносящую отклик с важными входными факторами и призванную слу- жить по крайней мере грубым заменителем полного моделирования. В примере
736 Глава 12. Планирование экспериментов и методы оптимизации с моделью системы управления запасами можно было бы попытаться приближен- но представить функцию поверхности отклика 7?(s, d) с помощью простой явной формулы, в которой используются s и d\ такая метамодель предназначается для оценки или приближенного представления поверхности отклика. Затем метамо- дель (вместо настоящей моделирующей программы) можно использовать для того, чтобы узнать, как поверхность отклика ведет себя в различных областях входного факторного пространства и получить оценку того, как изменяется отклик в опре- деленной точке при небольшом изменении входных факторов, или же определить приближенные оптимальные значения входных параметров (см. раздел 12.6). Лух» Рис. 12.3. Моделирование системы управления запасами: а — график поверхности отклика; б — контурная карта поверхности отклика а
12.4. Поверхности отклика и метамодели 737 В таких случаях целесообразно разработать простую алгебраическую функ- цию, соотносящую отклик с важными входными факторами и призванную слу- жить по крайней мере грубым заменителем полного моделирования. В примере с моделью системы управления запасами можно было бы попытаться приближен- но представить функцию поверхности отклика R(s, d) с помощью простой явной формулы, в которой используются s и d; такая метамодель предназначается для оценки или приближенного представления поверхности отклика. Затем метамо- дель (вместо настоящей моделирующей программы) можно использовать для того, чтобы узнать, как поверхность отклика ведет себя в различных областях входного факторного пространства и получить оценку того, как изменяется отклик в опре- деленной точке при небольшом изменении входных факторов, или же определить приближенные оптимальные значения входных параметров (см. раздел 12.6). Очень часто метамодель определяется как стандартная регрессионная модель, в которой независимые переменные регрессии являются входными параметрами модели, а зависимая переменная — искомым откликом. При наличии нескольких откликов можно разработать несколько регрессионных моделей. Однако необхо- димо также выполнить моделирование нескольких различных комбинаций вход- ных параметров, чтобы получить данные, которые нужны для оценок параметров регрессионной модели. При работе с любой регрессионной моделью мы должны определить, будет ли правильной ее функциональная форма, а также обратить внимание на такие характеристики, как изменчивость, нормальность, дисперсия одной случайной величины, зависящая от другой случайной величины, коррели- рованные ошибки и т. п. Для создания модели подойдут многие обычные методы, например проверки по критерию отсутствия согласия, остаточный анализ для ди- агностики модели. При использовании подобранной регрессионной модели мы сможем также применять все обычные средства, в том числе доверительные ин- тервалы и интервалы предсказания. Упомянутые проблемы, методы и инструмен- тальные средства описаны в любом источнике литературы по регрессии [Draper and Smith, 1998]. На самом деле такие факторные планы, как те, что рассматривались в разде- лах 12.2 и 12.3.1, основаны на регрессионных метамоделях поверхности отклика имитационной модели. В конце раздела 12.2 указывалось, что в соответствии с полным факторным планом 22 модели системы управления запасами в приме- рах 12.1 и 12.2 поведение ожидаемой поверхности отклика на самом деле может быть таким, каким оно представлено в уравнении (12.1). Более того, обычные оценки коэффициентов регрессии р, полученные методом наименьших квадратов в уравнении (12.1), соотносятся с оценками эффектов es, и esd следующим обра- зом. Пусть s и d будут средними значениями соответственно 5 и d в схеме кодиро- вания (см. табл. 12.3), то есть s = 40 и d = 30. Пусть As и Ad также будут расстояния- ми между уровнями «-» и «+» соответствующего фактора — в этом случае оба расстояния As и Ad равны 40. Преобразуем s и d, чтобы они приходились на -1 и +1 в своих значениях «-» и «+», определяя _2(s-s)_s-40 Xs As 20 (12.2)
738 Глава 12. Планирование экспериментов и методы оптимизации и г - 30 <12 31 d ~ М 20 ’ ( ' Наконец, пусть R будет средним откликом для всех точек плана. При таком переопределении параметров регрессионная модель, эквивалентная уравнению (12.1), имеет вид £[/?($,</)] = b0 + bsxs + bdxd + bsdxsxd. (12.4) Для нее оценки, полученные методом наименьших квадратов, составляют b0=R, b,=^, bd=^-, bsi=^-. (12.5) Обратите внимание, что уравнение (12.5) — это альтернативный способ вычис- ления оценок эффектов с помощью любого стандартного статистического паке- та. Значения независимых переменных преобразуются так же, как в уравнени- ях (12.2) и (12.3); подбирается модель (12.4), а затем соответствующие оценки, полученные методом наименьших квадратов, удваиваются в выражениях (12.5). Пример 12.6. Мы воспользовались теми же данными, что и в примере 12.2, в котором было выполнено 10 независимых репликаций в каждой из четырех точек полного фак- торного плана 22, $ и d были преобразованы в уравнения (12.2) и (12.3) и оценена регрес- сионная модель в уравнении (12.4) с использованием стандартного метода наименьших квадратов, как в любом статистическом пакете или программе табличных вычислений. Чтобы максимально выполнялись основные допущения регрессии, мы не использовали общие случайные числа между различными точками плана. Мы также рассмотрели все 40 точек данных как отдельные случаи регрессии, чтобы максимально увеличить степе- ни свободы. Оценки, полученные методом наименьших квадратов, составили b0 = R = = 136,48; bs = 8,83; bd = -4,37 и Ь^ = 5,30; так что прогнозирующее регрессионное уравне- ние примет вид R(s, d) = 136,48 + 8,83т, - 4,37xd + 5,30хЛ. (12.6) Обратите внимание, что оценки bs, bd и b^ на самом деле равны половине значений соот- ветственно «,(10), ё</(10) и ё^(10) из примера 12.2 (вплоть до округления). Используя статистический пакет, мы также автоматически получаем информацию о статистиче- ской значимости подобранной модели (общая статистика Fдля регрессии) и ее коэффи- циентов (отдельная сравнительная t статистика). В этом случае общая статистика Fдля регрессии имела очень большое значение, как и отдельная сравнительная t статистика для каждого коэффициента [Draper and Smith, 1998]. Таким образом, можно сделать вы- вод (см. пример 12.2), что оба главных эффекта, как и эффект взаимодействия являются статистически значимыми. Объединив уравнения (12.2), (12.3) и (12.5) в модель уравнения (12.4), можно увидеть, как оценки коэффициентов ₽, полученные методом наименьших квадра- тов в исходной модели регрессионных уравнений (12.1) для непреобразованных входных параметров, соотносятся с оценками эффектов; а -essbd-eddtxs + 2esd sd Ро -к+------------------- AsAJ (12.7)
12.4. Поверхности отклика и метамодели 739 Л <12ЛО> Хотя эта форма регрессионной модели кажется более сложной, ее легче ис- пользовать, поскольку она определена с помощью исходных входных параметров (s и d), а не их преобразований (xs и xj) в ±1. Пример 12.7. Вновь воспользовавшись данными из примера 12.2, мы выполнили рег- рессионную модель в уравнении (12.1) с использованием исходных непреобразованных независимых переменных з и d и получили подобранное регрессионное уравнение R(s, d) = 141,28 + 0,04s - 0,75 + 0,0W, (12.11) коэффициенты которого согласуются до округления с уравнениями (12.7)-(12.10), когда подставляются значения es(10), ej(10) и ё,^(10) из примера 12.2. Подставив определе- ния xs и Xj из уравнений (12.2) и (12.3) в первое регрессионное уравнение (12.6), мы дей- ствительно получаем второе регрессионное уравнение (12.11) опять-таки с допущением ошибки округления. Таким образом, уравнения (12.6) и (12.11) эквивалентны. Подобранное уравнение (12.11) в примере 12.7 можно рассматривать как мета- модель (что касается начальных входных параметров), которую можно использо- вать как заменитель поверхности отклика для полного моделирования. Нам пона- добится всего лишь карманный калькулятор или электронная таблица, чтобы получить оценку уравнения (12.11) для любой комбинации (s, d). Однако следует помнить, что уравнение (12.11) — это всего лишь приближение к реальному моде- лированию, следовательно, оно может быть неточным, особенно при значитель- ном удалении от значений з и d, обеспечивших данные, на которых оно основыва- ется. Метамодель, наконец, сама является моделью и может как быть, так и не быть правильной относительно имитационной модели. Пример 12.8. Для того чтобы получить представление о том, насколько точным может быть уравнение (12.11) в качестве заменителя имитационной модели, мы покажем на рис. 12.4, а сетчатую поверхность уравнения (12.11), под которой на рис. 12.4, б размеще- на соответствующая контурная карта с точками плана из табл. 12.3, обозначенными тем- ными кружками. Области значений з и d те же, что и на рис. 12.3. Для сравнения мы поместим на рис. 12.4, в «правильную» контурную карту (полученную по 4200 имитаци- онным прогонам, использовавшимся для реальной поверхности отклика, показанной на рис. 12.3, а), на которой также отмечены кружки точек плана. За исключением точек возле четырех кружков, для которых действительно собирались данные, в целом мета- модель представляет собой не очень хорошее приближение к поверхности отклика. Проблема состоит в том, что в метамодели уравнения (12.11) четыре точки не дают нам достаточно информации, и поэтому нельзя предсказать, как будет себя вести поверхность в других местах. В следующем примере, чтобы улучшить ситуа- цию, данные для моделирования были взяты для большей части области и усовер- шенствована форма метамодели.
740 Глава 12. Планирование экспериментов и методы оптимизации Рис. 12.4. Метамодель из факторного плана 22 для модели системы управления запасами: а — график поверхности отклика; б — контурная карта; в — контурная карта, составленная непосредственно по данным моделирования Пример 12.9. Мы выполнили пять репликаций с 16 комбинациями значений s - 20,40, 60 и 80; J = 20, 40,60 и 80. Для этого потребовалось 80 прогонов имитационной модели (в два раза больше, чем для уравнения (12.11)). Мы также подобрали полную квадратич- ную модель для этих 80 точек, то есть E[R(s, d)] = р0 + + p^rf + PsdsJ + pss2 + p^ d2, (12.12) и по регрессии получили подобранную метамодель R(s, d) = 130,63 - 0,26s - 0,53d + 0,004sd + 0,009s2 + 0,005d2, (12.13) показанную на рис. 12.5, а, б.
12.4. Поверхности отклика и метамодели 741 Рис. 12.5. Полная квадратичная метамодель для решетки с 16 точками модели системы управления запасами: а — график поверхности отклика; б — контурная карта; в — контурная карта, составленная непосредственно по данным моделирования а б Для сравнения на рис. 12.5, в представлена контурная карта, полученная в результате 4200 прямых имитационных прогонов для поверхности отклика. Конечно, по сравнению с рис. 12.4 наблюдается улучшение, а в области точек, по которым брались данные для моделирования, она практически точна. Тем не менее на рисунке нет остроконечного пика для небольших значений s и d, очевидно потому, что по ним мы не собирали ника- ких данных. На рис. 12.6 показано, что произошло, когда мы растянули точки, генериру- емые при моделировании, до краев области. Мы вновь выполнили пять повторных про- гонов, в каждом по 36 точек — 180 прогонов в целом. Полная квадратичная модель уравнения (12.2), подобранная к этим точкам, представляет собой уравнение tf(s, d) = 18851 - 1,49s - 1,24г/ + 0,0145г/ + 0,007s2 + 0,010г/2. (12.14)
742 Глава 12. Планирование экспериментов и методы оптимизации Рис. 12.6 Полная квадратичная метамодель для решетки с 36 точками модели системы управления запасами: а — график поверхности отклика; б — контурная карта; в — контурная карта, составленная непосредственно по данным моделирования Оно несколько отличается от уравнения (12.13). Поведение уравнения (12.14) показано на рис. 12.6, оно больше соответствует модельной поверхности отклика при крайних значениях s и d. Оправдывают ли дополнительные данные, необходимые для получе- ния уравнения (12.14) вместо уравнения (12.13), увеличившиеся затраты, зависит от то- го, насколько важно для нас точно предсказать отклик по краям области. В данном разделе мы постарались дать вводный материал по методам построе- ния поверхности отклика и созданию метамоделей в контексте имитационного моделирования. В этой области продолжают вестись исследования, и она предо- ставляет гораздо больше возможностей, чем мы успели описать, в числе которых можно назвать следующие.
12.5. Чувствительность и оценка градиента 743 ♦ Мы использовали только очень простые планы для сбора данных по метамо- дели — факторные или правильно расположенные решетки. Другие же планы, в том числе и центральные композиционные планы с дополнительными точ- ками вдоль осей факторов, а также с центральными точками, могут предоста- вить лучшие оценки параметров метамодели [Kleijnen and Standridge, 1988; Tew, 1992; Kleijnen and Van Groenendaal, 1995, 1996; Myers and Montgomery, 1995; Khuri and Cornell, 1996]. В некоторых работах по выбору планов эксперимен- тов для оценки метамоделей Донохью, Хоук и Майерс [Donohue, Houck and Myers, 1990, 1992, 1993a, 1993b, 1995] рассматривают такие вопросы, как све- дение к минимуму неточности метамодели при определенных условиях, влия- ние неправильного определения формы регрессионных уравнений, оценка на- клонов, а также последовательные планы для создания метамоделей, точность которых возрастает. ♦ Если в модели много факторов, может понадобиться отобрать все те, которые не имеют особого значения, и исключить их из входных параметров метамо- дели, воспользовавшись, например, факторными планами с дробными репли- ками, описанными в разделе 12.3.1, или какими-нибудь методами отсеивания факторов, представленными в разделе 12.3.2. Их применение рассматривается в работе Сома, Сарджента и Шрубена [Som, Sargent and Schruben, 1987], где авторы приводят пример использования подхода с частотной областью Шру- бена и Когльяно [Schruben and Cogliano, 1987] для отсеивания несуществен- ных факторов при создании метамодели класса систем массового обслужива- ния с обратной связью. ♦ В большинстве моделей существует несколько выходных показателей работы, поэтому может понадобиться создать метамодель для каждого из них [Montgo- mery and Bettencourt, 1977; Porta Nova and Wilson, 1989]. ♦ Существует возможность улучшения устойчивости метамодели с помощью ме- тодов понижения дисперсии, представленных в главе И [Tew and Wilson, 1988, 1994; Porta Nova and Wilson, 1989; Kleijnen, 1992; Tew, 1992; Tew and Wilson, 1992; Donohue, 1995; Song and Su, 1996]. ♦ Новые оригинальные идеи, относящиеся к проблеме создания метамоделей, включают байесовские методы Митчелла и Морриса [Mitchell and Morris, 1992], интегрирование подмоделей с помощью метамоделей более высокого уровня [Barton, 1997] и использование плана повторной выборки [Kleijnen, Feelders and Cheng, 1998]. 12.5. Чувствительность и оценка градиента Одна из задач моделирования — определить, как изменения входных параметров влияют на выходные оценки показателей. Именно по этой причине мы изучали главные эффекты в разделе 12.2. Если параметры постоянно изменяются, мы, по существу, все время интересуемся частными производными ожидаемой функции отклика по отношению к входным параметрам. Вектор таких частных производ- ных называется градиентом функции ожидаемого отклика, его размерность равна
744 Глава 12. Планирование экспериментов и методы оптимизации числу рассматриваемых входных параметров. Градиент показывает чувствитель- ность ожидаемого отклика к незначительным изменениям входных параметров. Он также является важной составляющей многих методов математического про- граммирования, которые могут быть использованы для поиска оптимальных ве- личин входных параметров, поскольку многие методы опираются на частные про- изводные при определении направления поиска оптимума (см. раздел 12.6). Возьмем простой пример. Рассмотрим систему массового обслуживания Л//М/1 с интенсивностью поступления X и скоростью обслуживания о, которая функцио- нирует в устойчивом состоянии. Предположим, что р = Х/ю < 1 (см. приложе- ние 1Б). Для данной модели установившаяся ожидаемая задержка требования в очереди может быть определена аналитически (см. раздел 1Б.З в приложении 1Б) по формуле J(Xo) = -T\-, со -Хю где в обозначении d указывается на его зависимость от X и со. Следовательно, гра- диентом d будет двухмерный вектор Vd(\(d) = 8d 8К 8d .8а. ' 1 (со-Х)2 -Х(2оо-Х) со2 (со-Х)2 (12.15) который мы можем оценить, например, по текущим значениям X и со, чтобы узнать, как с этой точки будет изменяться ожидаемая задержка. Поскольку при реальном моделировании у нас не будет формулы для поверх- ности ожидаемого отклика, аналитически определить вектор градиента мы не мо- жем. Поэтому нужно получить оценку градиента для определенных значений входных параметров. С этой целью следует повторить моделирование п раз для те- кущих значений параметров, слегка их изменить и снова повторить моделирова- ние в новой точке, этот процесс необходимо выполнить для каждого параметра. Каждая частная производная затем оценивается по отмеченному изменению оцен- ки показателя качества вследствие изменения соответствующего параметра. Если используется k параметров, понадобится (k + 1)п отдельных прогонов имитацион- ной модели. Альтернативный подход состоит в том, чтобы подобрать регрессион- ную метамодель (см. раздел 12.4) для поверхности отклика, а затем взять ее част- ные производные. Конечно, существуют и более простые способы, но для них, как правило, требуется большое число прогонов имитационной модели. Проводятся исследования с целью разработки более эффективных способов оценки чувствительности модельных выходных данных к незначительным изме- нениям входных параметров [L’Ecuyer, 1991, Strickland, 1993; Kleijnen, 1995b]. В частности, рассматриваются следующие специальные методы и вопросы. ♦ При использовании метода анализа возмущений делается попытка определить чувствительность результатов по одному единственному прогону имитацион- ной модели. В примере с моделью М/М/1 в ходе моделирования будет слегка
12.6. Поиск оптимума 745 «возмущен» такой входной параметр, как время обслуживания о, затем запус- кается алгоритм для отслеживания, начиная от этой точки, результатов моде- лирования, а также того, что было бы сделано, если бы параметр не был «воз- мущен». Этот метод разработан Хо, Эйлером и Чьеном [Но, Eyler and Chien, 1979] для реальных (в отличие от моделируемых) систем и изменен для ис- пользования в имитационном моделировании другими учеными. Сейчас мож- но найти статьи и книги, в которых дается обзор анализа возмущений в целом [Glasserman, 1991а; Но and Cao, 1991; Но, 1992; Fu and Hu, 1996], а также ра- боты, посвященные разным версиям метода, его статистическим свойствам, соотношению с другими методами анализа чувствительности и возможностям применения [Но and Cao, 1983; Suri, 1987; Heidelberger et al., 1988; Suri and Zazanis, 1988; L’Ecuyer, 1990a; Glasserman, 1991b; Glynn, 1992; Fu and Hu, 1993b; L’Ecuyer and Perron, 1994]. Имеется информация об использовании анализа возмущений при моделировании цепей Маркова [Glasserman, 1992], моделей надежности и технического обслуживания [Fu and Hu, 1993а], систем управ- ления запасами [Fu, 1994с], производственных систем [Brennan and Rogers, 1995] и контрольных карт для статистического процесса контроля [Fu and Hu, 1999]. 4 Другой метод анализа чувствительности, для которого требуется один прогон имитационной модели, опирается на отношения правдоподобия. Он предпола- гает принятие более мягких допущений о моделируемом процессе, чем метод анализа возмущений, но в результате могут быть получены оценки с высокой дисперсией [Reiman and Weiss, 1989; Glynn, 1990; Rubinstein, 1992; Rubinstein and Shapiro, 1993; Kleijnen and Rubinstein, 1996; Nakayama and Shahabuddin, 1998]. Оценки чувствительности, полученные с помощью метода отношения правдоподобия, применялись при моделировании высоконадежных систем (от- казоустойчивых вычислительных систем [Nakayama, Goyal and Glynn, 1994; Na- kayama, 1995, 1998]). Когда моделируются системы подобного типа, проблема состоит в том, что исследуемое событие (отказ системы) происходит редко, по- этому их прямое моделирование занимает очень много времени. 4 Дополнительные оценки чувствительности включают использование теории небольшого трафика при моделировании систем массового обслуживания [Si- mon, 1989], метод замещения для сетей массового обслуживания, где общая чувствительность модели определяется путем комбинации более простых оце- нок чувствительности отдельных узлов в сети [Vazquez-Abad and Kushner, 1993] и гармонического анализа [Jacobson, 1994; Jacobson and Schruben, 1999]. 12.6. Поиск оптимума Окончательный результат анализа имитационной модели состоит в поиске ком- бинации входных факторов, оптимизирующих (максимально увеличивающих или сводящих к минимуму по необходимости) основной выходной показатель работы. Например, в модели может быть экономический показатель, такой как прибыль
746 Глава 12. Планирование экспериментов и методы оптимизации или расходы, который нам нужно максимально увеличить или свести к минимуму по всем возможным значениям входных факторов. В целом рассматриваемые входные факторы могут включать дискретные коли- чественные переменные (число станков на рабочем месте в производственной си- стеме), непрерывные количественные переменные (среднее время обработки дета- ли станком) или качественные переменные (выбор дисциплины обслуживания очереди). Хотя при моделировании можно найти оптимальные значения как управляемых, так и неуправляемых входных переменных, основное внимание в большинстве случаев сосредоточивается на тех входных переменных, которыми можно управлять за счет устройства системы или режима эксплуатации. На первый взгляд цель оптимизации может показаться подобной целям выбо- ра лучшей системы, рассматривавшейся в разделе 10.4. Но тогда мы допускали, что альтернативные конфигурации системы просто заданы. А теперь ситуация ме- нее структурирована, и нам нужно решить, какие альтернативные конфигурации системы будут моделироваться, а также вычислить и сравнить их результаты. Эту задачу целесообразно рассматривать в свете классической математической оптимизации, например линейного или нелинейного программирования. Допус- тим, у нас есть выходной показатель работы R, значение которого зависит от зна- чений входных факторов, vb ..., vt,; эти входные факторы являются переменными решения в задаче оптимизации. Так как R — это результат моделирования, он, как правило, является случайной величиной, которой свойственна дисперсия. Наша цель — максимально увеличить или свести к минимуму целевую функцию E[R(yi, vt)] по всем возможным комбинациям переменных vb..., vk. Могут существовать ограничения на комбинации входных факторов, например ограничение области для констант I, (нижний предел) и и, (верхний предел), а также более общие огра- ничения, возможно, линейные ограничения р, имеющие форму +a;2V2 +-+ajkVt <С} для констант afi и с; при j = 1,2,..., р. Например, если vb v2, v3 и v4 — число станков типов 1, 2,3 и 4, которое нам требуется определить, аи — стоимость станка типа i и Cj - сумма, выделенная на покупку станков, тогда при выборе значений V,- мы мо- жем опираться на ограничение, определяемое суммой на покупку станков: anvi + o12v2 + a13v3 + a14v4 <q. В целом, если выходной результат R — это, скажем, прибыль, которую необходи- мо максимально увеличить, задачу можно формально выразить следующим образом: при условии, что Ц <Vj <u4; /2 <v2 <iz2; lk
12.6. Поиск оптимума 747 anVi + a12v2 +...+ a(*v* <c, ; «21V1 + «22V2 +-+a2kVk iC2’ «₽Л1 +ap2v2 +...+ aptvt <cp. Решить такую задачу в контексте реального моделирования крайне затрудни- тельно. Во-первых, в этом случае, как и в любой другой задаче оптимизации, если число переменных решения (входные факторы моделирования) k будет большим, мы будем искать оптимальную точку в £-мерном пространстве. Конечно, решению таких задач были посвящены десятилетия исследований в математическом про- граммировании. Во-вторых, при моделировании нельзя определить целевую функ- цию путем простой подстановки ряда возможных переменных решения в простую замкнутую формулу. На самом деле нужно полностью выполнить моделирование, чтобы получить наблюдение по выходному результату R согласно принятым выше обозначениям. Наконец, при моделировании стохастических систем нельзя опре- делить точно целевую функцию в связи со случайным характером его результатов; чтобы улучшить ситуацию в этом отношении, можно повторить моделирование, скажем, п раз с набором изучаемых входных факторов и использовать среднее зна- чение R, полученное по результатам всех этих повторов, как оценку целевой функ- ции в этой точке. С увеличением п улучшается оценка (и, конечно, увеличиваются затраты компьютерных ресурсов). Тем не менее в последнее время многие исследования были посвящены поиску методов оптимизации моделирования, отдельные из них будут представлены в разделах 12.6.1 и 12.6.2. Сейчас на основе некоторых из этих методов разработа- ны пакеты оптимизации, работающие совместно с программами имитационного моделирования (см. главу 3) и позволяющие отыскать в пространстве факторов точку, где оценка показателя достигает своего оптимального значения. Некоторые из этих пакетов оптимизации представлены в разделе 12.6.2. Разумеется, поиск оптимальной конфигурации системы обычно представляет собой выполнение ин- тенсивных вычислений. В последние годы работа методов и программ по оптими- зации моделирования существенно улучшилась благодаря достижениям в области компьютерного оборудования. Несмотря на теоретические и практические трудности, определение конфигу- рации системы, хотя бы приближенной к оптимальной, на практике может при- нести большую выгоду, поэтому интерес к данному вопросу очень велик. В литера- туре были сообщения о возможностях применения различных методов и соответ- ствующем программном обеспечении, в частности речь шла о следующих задачах и системах: + укомплектование персоналом фармацевтической производственной лабора- тории [Brady and McGarvey, 1998]; ♦ определение политики управления воздушными перевозками, при которой издержки, связанные с задержкой рейсов, сводятся к минимуму [Kleinman, Hill and Ilenda, 1998]; + модель системы, функционирующей одновременно как производственная система и система управления запасами [Kapuscinski and Tayur, 1998];
748 Глава 12. Планирование экспериментов и методы оптимизации + производственные системы, в частности фабрика, производящая пластико- вую упаковку для йогуртов [Pierreva! and Tautou, 1997]; + определение уровней и месторасположений полуфабрикатов в конвейерной производственной системе [Azadivar, Shu and Ahmad, 1996]; + гибкое автоматизированное производство [Sammons and Cochran, 1996]; + производство электроники [Brennan and Rogers, 1995]; + производственное планирование [Kleijnen, 1993]; + разработка автоматизированных систем хранения и поиска [Rosenblatt, Roll and Zyse, 1993]; + определение количества различных видов зерна, используемого для произ- водства различных видов продуктов, в операциях по обработке зерна [Hum- phrey and Chu, 1992]. 12.6.1. Методы поиска оптимума Исследователи разработали множество методов, предназначенных для оптимиза- ции моделирования; большинство таких методов опирается на какой-либо вид по- иска в пространстве возможных комбинаций входных факторов. Способы выпол- нения подобного поиска и информация, которая требуется для него (например, могут понадобиться оценки производных), существенно отличаются в различных методах. Приведем простой пример такого поиска при работе с уже рассматривав- шейся в этой главе моделью системы управления запасами, для которой основная цель состоит в том, чтобы свести к минимуму расходы. Пример 12.10. Возвращаясь к факторному плану 22, используемому в примерах 12.6 и 12.7, мы подобрали простую линейную модель вз и d к 40 точкам данных и получили R(s, d) = 125,37 + 0,44s - 0,22d. (12.16) Сетчатый график и контурная карта модели представлены на рис. 12.7, а и б. Уравне- ние (12.16) — это, конечно, неудачная общая метамодель поверхности отклика, но мы будем использовать его с другой целью. Рассмотрим уравнение (12.16) в качестве ло- кального линейного приближения к поверхности ожидаемого отклика. В этом случае нас интересует, в каком направлении от центра плана (то есть от точки (s, d)) следует двигаться, чтобы поскорее уменьшить угол возвышения метамодели. (В данном приме- ре необходимо уменьшение, поскольку отклик представляет собой расходы; если бы речь шла о прибыли, требовалось бы, наоборот, увеличение). По вычислениям нам из- вестно, что для получения самого резкого сокращения нужно двигаться в направлении отрицательной величины вектора частичных производных (то есть градиента) метамо- дели — в данном случае в направлении (-0,44; 0,22). Это направление обозначено стрел- кой, выходящей из центра плана на рис. 12.7, б. Обратите внимание: стрелка направлена перпендикулярно контурам метамодели и, в переводе на реальную поверхность отклика на рис. 12.7, в, она действительно указывает нужное направление движения. Теперь можно двигаться вдоль линии, подбирая на ней (или возле нее, поскольку в данной мо- дели это должны быть целые числа) значения s и d, выполняя моделирование в каждой точке до тех пор, пока отклик будет уменьшаться. Когда отклик начнет увеличиваться, можно остановиться, выполнить еще один факторный план 22, подобрать другую линей- ную модель и выбрать иное направление поиска. Этот процесс может выполняться, пока
12.6. Поиск оптимума 749 мы не достигнем точки, в которой метамодель выглядит ровной, то есть в которой обе оценки коэффициентов s и d близки к нулю. Рис. 12.7. Простая линейная модель из факторного плана 2’ для модели системы управления запасами: а — график поверхности отклика; б — контурная карта; в — контурная карта, составленная по данным моделирования (стрелка указывает путь поиска) В примере 12.10 представлена довольно грубая процедура; в ней возможно воз- никновение всякого рода ошибок, например выбор совершенно неподходящего направления поиска в какой-либо точке из-за изменчивости модельных выходных данных. Как уже сообщалось, в литературе рассматриваются различные методы поиска оптимума, и в этой области активно ведутся дальнейшие исследования [Biles and Swain, 1979,1980; Glynn, 1986; Schruben, 1986; Meketon, 1987; Jacobson and Schru- ben, 1989; Safizadeh, 1990; Healy and Schruben, 1991; Stuckman, Evans and Mollagha- semi, 1991; Azadivar, 1992; Fu, 1994a, 1994b; L’Ecuyer and Glynn, 1994; L’Ecuyer, Giroux and Glynn, 1994; Safizadeh and Signorile, 1994; Joshi, Sherali and Tew, 1994; Andradottir, 1995a, 1995b, 1996; Kleijnen, 1995a; Alrefaei and Andradottir, 1996, 1999; Barton and Ivey, 1996; Carson and Maria, 1997; Fu and Healy, 1997; Fu and Hill,
750 Г лава 12. Планирование экспериментов и методы оптимизации 1997; Schruben, 1997; Andradottir, 1998; Humphrey and Wilson, 1998]. Рассматрива- ются также методы многоцелевой оптимизации моделирования [Evans, Stuckman and Mollaghasemi, 1991; Mollaghasemi, Evans and Biles, 1991; Mollaghasemi and Evans, 1994; Teleb and Azadivar, 1994; Boyle and Shin, 1996]. В разделе 12.6.2 упоми- наются несколько методов эвристического поиска оптимума, для которых разра- ботаны пакеты программ оптимизации, работающие совместно с программным обеспечением имитационного моделирования. 12.6.2. Пакеты программ поиска оптимума, совмещенные с программами имитационного моделирования Как отмечалось в разделе 12.6.1, для поиска комбинаций входных параметров имитационной модели, которые сделают оптимальными выходные показатели ра- боты, предлагалось много методов. В таких методах обычно предусматривается моделирование ряда конфигураций системы. При этом результаты моделирования предыдущей конфигурации используются для определения новых перспективных направлений поиска в пространстве возможных комбинаций входных факторов, что позволяет получить дополнительные конфигурации и улучшить с их помощью показатели работы системы. Поэтому возникает практический вопрос, как управ- лять такой последовательностью конфигураций системы. Естественно, это нельзя делать вручную, выполняя прогоны моделей различных конфигураций системы, результаты которых определяют следующую конфигурацию (конфигурации). Но поскольку сейчас доступны быстродействующие персональные компьютеры и усо- вершенствованные методы эвристического поиска оптимума, многие производи- тели программного обеспечения дискретного моделирования интегрируют в него пакеты поиска оптимума. Задача пакета поиска оптимума (для краткости мы будем называть их пакета- ми оптимизации, но следует помнить, что они не гарантируют обнаружения ис- тинного оптимума) состоит в обеспечении моделирования ряда конфигураций системы (каждая конфигурация соответствует определенным значениям входных искомых переменных или факторов) с целью получения в итоге конфигурации, обеспечивающей практически оптимальное решение. Конечно, нужно, чтобы для получения этого решения требовался как можно меньший объем моделирования. Взаимодействие между пакетом оптимизации и имитационной моделью показано на рис. 12.8. Сначала имитационная модель получает от пакета оптимизации ука- зание выполнить моделирование одной или нескольких конфигураций системы. Результаты моделирования передаются обратно в пакет оптимизации, в котором затем используется встроенный алгоритм, для того чтобы определить, какие допол- нительные конфигурации следует моделировать и т. д. Этот процесс продолжает- ся до тех пор, пока правило останова пакета оптимизации не будет выполнено. Инструмент, схема которого представлена на рис. 12.8, действительно удобен, он позволяет моделировать ряд конфигураций системы для поиска оптимальной с помощью выбранного программного обеспечения моделирования. Но следует по- мнить: не существует абсолютной гарантии, что результаты будут оптимальными (причины рассматривались в начале раздела 12.6). Более того, обычно для пакетов
12.6. Поиск оптимума 751 оптимизации требуется, чтобы пользователь указал ряд опций, параметров и до- пусков, и не всегда ясно, как это сделать в данной ситуации, результаты же могут зависеть от действий пользователя. Тем не менее мы считаем, что такие пакеты за- частую находят практически оптимальную конфигурацию модели или по крайней мере конфигурацию, которая будет гораздо лучше, чем определенная аналитиком «вручную» путем долгого, сделанного наугад моделирования ряда конфигураций системы. Пакет оптимизации Имитационная модель Рис. 12.8. Взаимодействие между пакетом оптимизации и имитационной моделью Чтобы пакет оптимизации был надежным, эффективным в работе и полезным, он должен обладать следующими свойствами [Bowden and Hall, 1998]. ♦ Два наиболее важных свойства — это качество получаемых решений (хотя его трудно определить на практике, поскольку истинный оптимум не будет извес- тен) и время выполнения, необходимое для их получения. Общее время вы- полнения зависит от количества конфигураций системы, которые необходимо моделировать, а также от времени выполнения одной конфигурации системы. Последнее зависит от скорости работы используемой программы моделирова- ния (см. раздел 3.4.1) и от того, насколько быстро программа моделирования может передать результаты пакету оптимизации по окончании моделирова- ния конфигурации. ♦ В ходе выполнения должен осуществляться динамический вывод на экран важной информации, в том числе графика лучшего значения целевой функ- ции при текущей конфигурации, а также значение целевой функции, конфи- гурация системы и номер конфигурации для т лучших конфигураций систе- мы, где т определяется пользователем. ♦ Должна существовать возможность задать линейные ограничения на перемен- ные решения как часть постановки задачи, а также определить ограничения
752 Глава 12. Планирование экспериментов и методы оптимизации на выходную случайную переменную. (Допустим, кому-то понадобится рас- смотреть конфшурации системы, для которых наблюдаемый коэффициент использования рабочей станции будет меньше 0,8.) 4 В пакете должно быть несколько правил останова: например, не наблюдается улучшения при указанном количестве конфигураций системы; выполнено моде- лирование указанного числа конфигураций; истек указанный период реально- го времени и выполнен полный перебор конфигураций (если число возмож- ных конфигураций системы относительно невелико). 4 В каждой из т лучших конфигураций системы должен обеспечиваться неболь- шой доверительный интервал для ожидаемого значения целевой функции. 4 Значение целевой функции (случайная величина) может быть более изменчи- вым при некоторых конфигурациях системы, поэтому, скорее всего придется увеличить число прогонов для конфигураций с большей дисперсией, чтобы оценка ожидаемого значения целевой функции имела одинаковую точность для всех конфигураций. Следовательно, число прогонов модели с определен- ной конфигурацией системы в идеале должно зависеть от дисперсии оценки, полученной по небольшому числу изначальных прогонов; для этой цели мо- жет пригодиться последовательная процедура, описанная в разделе 9.4.1. 4- Поскольку решение задачи оптимизации зачастую занимает много времени, должна существовать возможность одновременного выполнения имитацион- ных прогонов на компьютерах, объединенных в сеть. В табл. 12.11 представлены пакеты оптимизации, существовавшие на момент написания этой книги, в ней также указаны их поставщики, программы моделиро- вания, которые они поддерживают, и используемые в них процедуры поиска. Таблица 12.11. Пакеты оптимизации Пакет Поставщик Поддерживаемые программы моделирования Применяемые процедуры поиска AutoStat AutoSimulations, Inc. AutoMod, AutoSched Эволюционные стратегии OptQuest Optimization Technologies, Inc. Arena, Micro Saint, QUEST, Taylor Enterprise Dynamics Поиск с рассеиванием, поиск с запрещением, нейронные сети OPTIMIZ Visual Thinking International Ltd. SIMUL8 Нейронные сети SimRunner2 PROMODEL Corp. MedModel, ProModel, ServiceModel Эволюционные стратегии, генетические алгоритмы WITNESS Optimizer Lanner Group, Inc. WITNESS Моделирующий отжиг, поиск с запрещением Вы видите, что в пяти пакетах применяются разные методы эвристического поиска, в том числе эволюционные стратегии [Back and Schwefel, 1993; Back, 1996], генетические алгоритмы [Michalewicz, 1996], нейронные сети [Bishop, 1995; Skapura, 1996; Haykin, 1998], поиск с рассеиванием [Glover, 1999], моделирующий
12.6. Поиск оптимума 753 отжиг [Aarts and Korst, 1989] и поиск с запрещением [Glover and Laguna, 1997]. У нас нет возможности подробно описать работу этих пакетов, мы лишь сделаем их краткий обзор и расскажем о параметрах управления в каждом из них. ♦ AutoStat [AutoSimulations, 1999а]. В этом пакете используется разновидность метода эвристического поиска, именуемая эволюционные стратегии [Back and Schwefel, 1993; Back, 1996]. Изначально в пакете произвольным образом гене- рируется и моделируется 21 конфигурация модели (так называемое генериро- вание 0). Для генерирования 1 отбираются три конфитурации с наилучшими значениями целевой функции. При генерировании 1 эти три конфитурации используются для случайного генерирования 21 новой конфитурации, которые затем моделируются. Для генерирования 2 отбираются три лучшие конфи- гурации и т. д. Определенная конфитурация никогда не моделируется больше одного раза, так что некоторые конфигурации при генерировании могут не моделироваться (заново). В правиле установки пользователем задаются три параметра, а именно: максимальное число генерирований, число генерирова- ний без существенного улучшения и процент улучшения, который считается существенным. Например, предположим, что максимальное число генериро- ваний равно 50, число генерирований без существенного улучшения равно 5, процент улучшения равен 5, а выполнение алгоритма не было остановлено при генерировании.;,у + 1.....j + 4. Пусть ЛЗЦФЦ) будет лучшим значением целевой функции для 21 конфигурации системы при генерировании/ Выпол- нение алгоритма закончится при генерировании j + 5, если | ЛЗЦФ(] + 5) - - ЛЗЦФ(])\/\ ЛЗЦФ(])\ £ 0,05; в противном случае алгоритм перейдет к гене- рированию у + 6. (При указанном выше определении параметров выполнение алгоритма прекратится между генерированием 6 и 50.) Выполнение алгорит- ма также будет остановлено, если обнаружится, что новые конфигурации сис- темы больше не будут генерироваться. + OptQuest [Glover, Kelly and Laguna, 1999b]. В этом пакете используется поиск с рассеиванием и поиск с запрещением, а также нейронные сети [Glover, Kelly and Laguna, 1996, 1999a; Glover and Laguna, 1997]. При одном доступном пра- виле останова алгоритм оптимизации выполняется до тех пор, пока не будет завершено моделирование указанного пользователем количества конфигура- ций. При другом правиле останова алгоритм оптимизации выполняется, пока не пройдет указанный пользователем период реального времени. Пользова- тель должен задать объем совокупности, то есть число конфигураций систе- мы, которые рассматриваются одновременно. ♦ SimRunner2 [PROMODEL, 1998] основан на использовании эволюционных стратегий, запускаемых с помощью генетического алгоритма. Правило оста- нова зависит от двух параметров, которые задаются пользователем: Optimiza- tion Profile (Профиль оптимизации) и Objective Function Precision (Точность целевой функции). Профиль оптимизации имеет три альтернативных вариан- та: Aggressive (агрессивный), Moderate (умеренный) и Cautions (осторожный), которые соответствуют трем различным, расположенным по возрастанию, зна- чениям объема совокупности (ОС), определяемого в пакете. При увеличении
754 Глава 12. Планирование экспериментов и методы оптимизации объема совокупности алгоритм обычно выполняется для большего числа кон- фигураций и позволяет выявить лучшие из них. Objective Function Precision — это вещественное число, которое определяет, когда завершится выполнение алгоритма. Пусть ЛЗЦФ и СЗЦФ будут соответственно лучшим и средним значением целевой функции для ОС конфигураций в процессе заданного ге- нерирования. Выполнение алгоритма прекращается на этом генерировании, если [ЛЗЦФ - СЗЦФ\ 5 Objective Function Precision. В противном случае вы- бирается следующее генерирование ОС конфигураций системы, конфигура- ции моделируются, повторно вычисляются ЛЗЦФ и СЗЦФ, вновь выполняет- ся проверка правила останова и т. д. + WITNESS Optimizer [banner, 1998а]. У правила останова этого пакета есть два параметра, определяемых пользователем: максимальное число конфигу- раций и число конфигураций, для которых не наблюдается улучшения зна- чения целевой функции. Например, предположим, что максимальное число конфигураций равно 500, число конфигураций, для которых не наблюдаются улучшения, составляет 25, а значение целевой функции при конфигурации; является лучшим вплоть до конфигурации в этой точке. Тогда выполнение алгоритма завершится на конфигурации; + 25, если ни одно из значений це- левой функции при конфигурации ; + 1,; + 2, ..., j + 25 не будет лучше ее значения при конфигурации ;. Выполнение алгоритма никогда не превысит 500 конфигураций. Оптимизация, опирающаяся на выполнение имитационных прогонов, еще не полностью исследована. Однако, надо полагать, от решения этого вопроса во мно- гом будет зависеть практика имитационного моделирования в ближайшем буду- щем, особенно в связи с увеличением быстродействия компьютеров. Основная проблема на данный момент состоит в отсутствии точных инструкций относи- тельно того, как следует выбирать параметры пакетов оптимизации. Задачи 12.1. Вспомните модель производственной системы из задачи 1.22 с пятью станка- ми, в которых происходят поломки, и $ ремонтниками. Предположим, цех еще не построен. Руководство должно определить требуемое количество ре- монтников, а также принять два следующих решения. А. На рынке есть «дорогостоящие», но более надежные станки. Такой ста- нок будет работать в течение времени, которое представлено экспоненци- ально распределенной случайной величиной со средним значением 16 ч (а не 8 ч, как у стандартных станков). Однако более высокая стоимость такого станка определяется тем, что каждый час его простоя из-за полом- ки будет стоить цеху 100 долларов (а не 50). Поскольку дорогостоящие станки работают с той же скоростью, что и стандартные, их количество по-прежнему должно равняться 5. Предположим также, что в цехе нельзя устанавливать разные станки, то есть они должны быть либо стандар- тными, либо дорогостоящими.
Задачи 755 Б. Вместо того чтобы нанимать людей, которые занимаются только ремон- том, можно нанять команду более опытных работников и платить тако- вым 15 долларов в час (а не 10, как обычным ремонтникам). Однако они могут починить станок (независимо от того, будет он стандартным или дорогостоящим) за экспоненциально распределенную величину време- ни со средним значением 1,5 ч (а не 2 ч). В цехе должны работать либо обычные, либо опытные ремонтники. Воспользуйтесь кодировкой из табл. 12.12, чтобы выполнить полный 23-фак- торный эксперимент; повторите его п = 5 раз и вычислите 90-процентные до- верительные интервалы для всех ожидаемых главных эффектов и эффектов взаимодействия. Каждый имитационный прогон рассчитан на 800 ч и начи- нается в том случае если все пять станков находятся в рабочем состоянии. Все прогоны выполняются независимо. Какие можно сделать выводы? Таблица 12.12. Схема кодирования для обобщенной модели поломок станков Фактор — + S 2 4 Тип станка Стандартный Дорогостоящий Тип ремонтника Обычный Опытный 12.2. Возьмем модель компьютерной системы с режимом разделения времени из раздела 2.5. Предположим, что рассматривается возможность регулировки кванта обслуживания q (как в задаче 10.3), а также принятия альтернативной стратегии обработки, описанной в задачах 2.18 и 10.5. Выполните 22-фактор- ный эксперимент с этими двумя факторами (д = 0,05 или 0,40; стратегия об- работки будет такая же, как и в разделе 2.5, или та, что в задаче 2.18), прогон имитационной модели выполняется до тех пор, пока не будет завершена об- работка 500 заданий (без переходного периода работы), всего используется 35 терминалов, изначально все они находятся на стадии обдумывания. Все прогоны выполняются независимо. Повторяйте план столько раз, сколько вам кажется нужным, чтобы получить пригодные оценки ожидаемых глав- ных эффектов и эффектов взаимодействия. 12.3. Рассмотрим использование общих случайных чисел для всех четырех точек плана полного 22-факторного эксперимента с моделью системы управления запасами из примеров 12.1 и 12.2. Пусть С12 = Cov(/?1, R2), Cl3 = Cov(/?1( R3) и т. д. Допустим, что метод общих случайных чисел применяется успешно, то есть ковариация между переменными 7?, будет положительной. А. Определите выражения для дисперсии обоих главных эффектов и эффек- тов взаимодействия в переводе на их ковариацию и дисперсию 7?,. Как вы считаете, понижает ли метод общих случайных чисел дисперсию оценок главных эффектов? Б. Предположим, нас в первую очередь интересует получение точных оце- нок ожидаемых главных эффектов, а эффекты взаимодействия не очень
756 Глава 12. Планирование экспериментов и методы оптимизации важны. Предложите альтернативную стратегию распределения случайных чисел, которая подойдет для такого случая. Как это отразится на точно- сти оценки ожидаемых эффектов взаимодействия? 12.4. Разработайте регрессионную метамодель для отклика средней задержки тре- бований в очереди системы массового обслуживания Л//Л4/1, применив код из разделов 1.4.4 или 1.4.5. Используйте те же начальные условия и правила останова. В качестве входных факторов возьмите среднее время между по- ступлениями и среднее время обслуживания. Определите точность своей ме- тамодели. Начинайте с простой линейной модели, затем добавьте векторное произведение и квадратичные члены. 12.5. Создайте квадратичные регрессионные метамодели для откликов средней за- держки клиентов в очереди и среднего числа клиентов в очереди для модели банка с несколькими кассами из раздела 2.6. В качестве входных факторов возьмите среднее время обслуживания и число касс. Определите точность своей метамодели и воспользуйтесь ею при поиске компромиссного решения по отношению к увеличению числа касс и уменьшению среднего времени об- служивания. 12.6. Обратимся к модели супермаркета из задачи 1.27. Определите оба средних значения времени между прибытиями (на текущий момент 2,1 мин для обычных клиентов и 1,1 мин для клиентов срочной кассы) в качестве факто- ров, хотя они вряд ли будут управляемыми, и среднее время обслуживания (на текущий момент 2,0 мин для обычных клиентов и 0,9 мин для клиентов срочной кассы) в качестве дополнительных факторов. Предвидя увеличение притока клиентов, руководство хочет узнать, что произойдет в результате со- кращения на 10 % одного или обоих средних значений времени между прибы- тиями по сравнению с текущим состоянием. Чтобы справиться с таким при- током клиентов, необходимо ускорить обслуживание, сократив одно или оба средних значения времени обслуживания на 10 %. А. Разработайте план и выполните факторный эксперимент с дробными реп- ликами и разрешающей способностью IV, для того чтобы установить, ка- кое из четырех возможных изменений будет иметь наибольшее влияние на качество обслуживания клиентов, определяемое по средней задержке в очереди всех клиентов независимо от их типа. Используйте те же усло- вия моделирования, что и в задаче 1.27. Выполните такое число повторов плана, какое необходимо для достижения приемлемой точности оценок ожидаемых эффектов. Б. Затем выполните полный 24-факторный эксперимент, сделав необходи- мое число повторов. Что не было учтено или не совсем ясно определено (если это вообще имело место) при выполнении пункта А, когда выпол- нялся только факторный эксперимент с дробными репликами? В. Сравните результаты, полученные по исходной модели (точка плана (-, -, -)), и результаты, полученные по модели, в которую были внесены все четыре изменения (точка плана (+, +, +, +)).
Задачи 757 Г. Используя информацию из пунктов А и Б, создайте квадратичную мета- модель отклика и определите ее точность. 12.7. Обратимся к модели химчистки из задачи 2.26, в которой задействовано пять операторов и шесть средних значений времени обслуживания, поскольку оператор 4 должен обрабатывать два типа костюмов (поврежденные и непо- врежденные). Руководство хочет инвестировать капитал, чтобы сократить среднее время обслуживания у одного или нескольких операторов, но не зна- ет, для каких операторов следует усовершенствовать процесс обработки кос- тюмов. Разработайте и выполните эксперимент, чтобы установить, какие из шести средних значений времени обслуживания в таблице из задачи 2.26 лучше всего подходят для сокращения. Используйте факторный экспери- мент с дробными репликами и те же условия моделирования, что в зада- че 2.26. Выберите отклик, связанный с обслуживанием клиента. 12.8. Вспомните столовую университетского студенческого центра из задачи 2.30. В ней есть шесть типов времени обслуживания (накопленное время оплаты считается отдельно), которые потенциально можно улучшить на 15 % (то есть обе конечные точки объединенного равномерного распределения будут уменьшены на 15 %). Куда следует направить инвестиции? Используйте фак- торный эксперимент с дробными репликами и отклик, связанный с обслужи- ванием клиента.
Глава 13 Моделирование производственных систем 4 Целесообразность моделирования производственных систем 4- Программные пакеты для моделирования производственных систем 4- Решение производственных проблем с помощью моделирования 4 Примеры использования моделирования для улучшения характеристик производственных систем 13.1. Введение Имитационное моделирование используется при разработке и оптимизации про- изводственных систем. Причем именно в сфере промышленного производства мо- делирование применяется шире, чем в любой другой. Это объясняется многими причинами. 4- Усиление конкуренции во многих отраслях промышленности привело к тому, что теперь больше внимания уделяется автоматизации производственных про- цессов с целью увеличения производительности и улучшения качества про- дукции. Поскольку автоматизированные системы сложнее обычных, их, как правило, удобно анализировать с помощью моделирования. 4- Системы и оборудование могут быть очень дорогостоящими. Например, но- вый завод по производству полупроводниковых приборов может стоить мил- лиард долларов или даже больше. 4- В последнее время были созданы более быстрые и дешевые персональные ком- пьютеры, что привело к резкому уменьшению стоимости компьютерных вы- числений. 4- Усовершенствование программного обеспечения (например, появление графи- ческих интерфейсов пользователя) позволило сократить срок разработки мо- дели и больше времени уделить анализу производственных возможностей. 4- Наличие анимации способствует лучшему пониманию менеджерами по про- изводству сути моделирования. В этой главе в разделе 13.2 рассмотрены типы производственных проблем, ко- торые, как правило, решаются с помощью имитационного моделирования. В разде- ле 13.3 дан обзор пакетов имитационного моделирования, которые предназначены специально для работы с моделями производственных систем. В разделе 13.4 речь пойдет о моделировании случайности в производственных системах, в том числе
13.2. Цели моделирования производственных систем 759 времени простоя станков, вызванного поломками. В разделах 13.5 и 13.6 подробно рассказано об использовании моделирования при разработке и анализе производ- ственных систем. Исчерпывающим руководством по производственным системам в целом явля- ется книга Хоппа и Спирмана [Hopp and Spearman, 1996]. Информацию о приме- нении имитационного моделирования к производственным системам можно найти в ежегоднике «Proceedings of the Winter Simulation Conference» (Доклады зимней конференции по моделированию). Материалы по этому вопросу также иногда пе- чатаются в таких изданиях, как «ПЕ Solutions», «Manufacturing Systems» и «Mo- dern Material Handling». 13.2. Цели моделирования производственных систем Вероятно, главная польза от применения моделирования производственных сис- тем заключается в том, что оно позволяет менеджеру получить представление о влиянии «локальных» изменений в масштабе всей производственной системы. Если изменение вносится на некоторой рабочей станции, его влияние на работу этой станции будет вполне предсказуемым, а заранее определить, каким образом оно скажется на работе системы в целом, будет затруднительно. Пример 13.1. Предположим, мощности рабочей станции с одним станком не хватает, чтобы справиться с нагрузкой (то есть интенсивность обработки деталей меньше, чем интенсивность их поступления). При этом было установлено, что если на станции уста- новить второй станок, пропускная способность улучшится. Однако в результате появле- ния дополнительного станка увеличится также объем выпуска деталей на выходе этой рабочей станции, что, в свою очередь, вызовет усиление интенсивности поступления де- талей на рабочие станции, расположенные по технологическому процессу за данной станцией, и приведет к уменьшению пропускной способности и т. д. Кроме общих преимуществ имитационного моделирования, упомянутых выше, существует множество потенциальных преимуществ его использования при ис- следованиях: ♦ увеличение производительности (числа деталей, выпускаемых за единицу времени); 4- сокращение времени пребывания деталей в системе; 4- уменьшение запасов деталей в процессе производства; 4- увеличение занятости станков и рабочих; * обеспечение своевременной доставки товаров потребителям; 4- сокращение потребностей в капитале (земля, производственные помещения, станки и т. п.) или эксплуатационных расходов; 4- гарантия того, что предложенный вариант системы будет действительно функционировать так, как ожидается; 4- обеспечение лучшего понимания системы в результате сбора информации для создания имитационной модели;
760 Глава 13. Моделирование производственныхсистем ♦ возможность предусмотреть возникновение некоторых существенных про- блем, над которыми имитационная модель предложенной системы часто заставляет задуматься разработчиков системы. Пример 13.2. Сбор информации для имитационной модели системы упаковки продук- тов показал, что логика управления для конвейерной системы оказалась неправильной. Моделирование помогло успешно решить ряд специальных производственных проблем, которые можно разделить на три общие категории. ♦ Потребность в количестве оборудования и в персонале: ♦ количество, тип и расположение станков для выполнения определенной за- дачи (например, выпуск 1000 деталей в неделю); 4 требования к погрузочно-разгрузочным устройствам и другому вспомога- тельному оборудованию (например, поддоны и приспособления для закре- пления); ♦ расположение и объем материально-производственных запасов; ♦ оценка изменений в объеме продукции или ассортименте изделий (напри- мер, влияние новых товаров); ♦ оценка влияния установки нового оборудования (например, робота) в су- ществующую производственную линию; + оценка капиталовложений; ♦ число смен. 4 Оценка производительности: ♦ анализ производительности; - 4 анализ времени пребывания в системе; > анализ недостатка ресурсов. ♦ Оценка технологических операций: + производственное планирование (например, оценка предлагаемых режимов выдачи заказов цеху, определение объемов партии продукции, загрузка де- талей на рабочую станцию и установление последовательности прохожде- ния деталями рабочих станций в системе); ♦ стратегии управления запасами комплектующих деталей или сырья; ♦ стратегии управления (например, для конвейерного устройства или авто- матизированной транспортной системы); ♦ анализ надежности (скажем, влияние профилактического обслуживания); ♦ политики контроля качества; ♦ стратегии синхронной работы (СР). Существует несколько показателей работы, получаемых при изучении произ- водственной системы посредством моделирования, а именно: 4 производительность; ♦ время пребывания деталей в системе (продолжительность цикла); 4 продолжительность пребывания деталей в очередях;
13.3. Программное обеспечение моделирования производственных систем 761 ♦ продолжительность ожидания транспортировки; ♦ продолжительность транспортировки; ♦ своевременность доставки (например, доля задержавшихся заказов); ♦ объем запасов деталей в процессе производства (незавершенное производ- ство или размеры очередей); ♦ доля времени, когда станок сломан, простаивает (в ожидании поступления деталей с предыдущей рабочей станции), заблокирован (в ожидании, когда будет убрана деталь, обработка которой завершена) или проходит профи- лактическое обслуживание; ♦ доля деталей с исправимым или неисправимым браком. 13.3. Программное обеспечение моделирования производственных систем Требования к программному обеспечению моделирования производственных сис- тем не отличаются от требований к другим программам моделирования, за одним исключением. В большинстве современных производственных систем имеются погрузочно-разгрузочные системы, которые часто трудно правильно смоделиро- вать. Поэтому в дополнение к свойствам пакетов имитационного моделирования, описанным в главе 3, желательно, чтобы при работе с производственными систе- мами использовались гибкие и простые в обращении модули погрузочно-разгру- зочных систем. К важными видам последних относятся автопогрузчики, авто- матизированные транспортные системы с выбором управляемых маршрутов, конвейеры-транспортеры (равное расстояние между участками), конвейеры-нако- пители, автоматизированные системы хранения и поиска, портальные краны, ро- боты и т. п. Учтите, что, даже если в определенном пакете программ моделирова- ния есть транспортирующие конструкции, это вовсе не означает, что они подходят для решения данной задачи. Реальные системы транспортирования очень разно- образны, а пакеты программ содержат различные средства их моделирования. В главе 3 мы охарактеризовали универсальные пакеты программ (языки) моде- лирования и проблемно-ориентированные пакеты моделирования, а затем под- робно описали несколько универсальных пакетов. Универсальные пакеты обычно предоставляют очень гибкие возможности моделирования и поэтому широко при- меняются для моделирования производственных систем. Более того, некоторые из таких программ (например, Arena и Extend) содержат модули (например, кон- вейеры), предназначенные исключительно для производственных систем. Суще- ствует также множество пакетов, разработанных специально для моделирования производственных систем. Далее мы опишем наиболее важные из пакетов программ моделирования, ори- ентированных на моделирование производственных систем, а именно: AutoMod, ProModel, Taylor Enterprise Dynamics и WITNESS (описание пакета QUEST при- водит Денеб [Deneb, 1998]). Сроки разработки «программы» с применением этих пакетов для некоторых приложений могут быть короче, чем при использовании
762 Глава 13. Моделирование производственных систем универсальных пакетов. Указанные выше пакеты программ моделирования могут также быть более простыми в обращении. Однако их возможности часто бывают менее гибкими, чем у универсальных пакетов. AutoMod [AutoSimulations, 1999а] — это программный пакет, предназначен- ный для моделирования производственных систем и поставляемый компанией AutoSimulations, Inc. (Баунтифул, Юта). В AutoMod при разработке модели ком- бинируется использование графики, диалоговых окон и программирования, спе- циально ориентированных на производство и транспортировку материалов и де- талей. (Некоторые модели можно создавать, вводя данные в крупноформатные таблицы для определения типов деталей, маршрутов, времени обработки, необхо- димых станков и т. п.) В AutoMod есть средства, обеспечивающее впечатляющую трехмерную анимацию, и большое количество модулей погрузочно-разгрузочных систем (см. дальше). Более того, схемы погрузочно-разгрузочных систем вводятся графически, что также в значительной степени задает их анимацию. Например, графически можно задать расположение и размер конвейера. В AutoMod используются следующие основные моделирующие конструкции. 4 Нагрузки — представляют детали в производственной системе. 4 Ресурсы - представляют станки и рабочих, которые обрабатывают детали. 4 Очереди — представляют места, где расположены детали, ожидающие поступ- ления к ресурсам или транспортировки. 4 Процессы — представляют логику, связанную с определенным аспектом имита- ционной модели. В модели небольшого производства из примера 9.25 процесс AutoMod для контролера может определять отношения между очередью, ре- сурсом и логикой определения качества детали. 4 Транспортировка материалов и деталей — включает в себя конвейеры (транс- портеры, накопители и др.), автопогрузчики, автоматизированные транспорт- ные системы, автоматизированные системы хранения и поиска. Кроме того, существуют конструкции резервуаров и труб для моделирования систем с непрерывным потоком (например, систем по производству химикатов). В AutoMod доступно практически неограниченное число потоков случайных чисел и семь стандартных теоретических распределений вероятностей, а также эм- пирические распределения. Время безотказной работы станка может определять- ся на основании времени, в течение которого станок занят (см. раздел 13.4.2), ка- лендарного времени или числа обработанных деталей. Планирование и анализ имитационных прогонов выполняются с использованием модуля AutoStat, в кото- ром есть возможности для выполнения независимых повторных прогонов, опреде- ления переходного периода работы, построения доверительных интервалов, срав- нения альтернативных систем, разработки планов экспериментов и оптимизации. По модельным выходным данным можно создавать графики, в том числе гисто- граммы, круговые диаграммы и графики временной зависимости. Программный пакет ProModel [PROMODEL, 1999b], поставляемый компани- ей PROMODEL Corporation (Орем, Юта), также предназначен для моделирова- ния производственных систем. Дальше перечислены его основные моделирующие конструкции; первые четыре из них должны присутствовать в любой модели.
13.3. Программное обеспечение моделирования производственных систем 763 ♦ Участки с обозначенными границами — используются для моделирования стан- ков, очередей, конвейеров и резервуаров (см. дальше). 4- Объекты — представляют детали, сырье или информацию. 4- Поступления — определяют, как детали попадают в систему. 4 Процессы — определяют маршруты деталей в системе, а также указывают, ка- кие операции выполняются с каждой деталью в определенном помещении. 4 Ресурсы — используются для моделирования статичных или динамичных ре- сурсов, например рабочих или автопогрузчиков. Модель создаетсяс помощью графики (например, при определении маршрутов деталей), путем заполнения полей или программирования на внутреннем псевдо- языке. В пакете также можно вызывать внешние подпрограммы, написанные, например, на языках С или C++. С помощью свойства ActiveX пакета ProModel разрабатываются настраиваемые внешние и внутренние интерфейсы. В пакете обеспечивается двухмерная анимация, которая создается автоматически в ходе разработки модели. В ProModel представлены следующие средства транспортировки материалов и деталей: конвейеры-транспортеры, конвейеры-накопители, автопогрузчики, ав- томатизированные транспортные системы и портальные краны. В пакет включена модель затрат, что позволяет пользователю указывать расхо- ды на содержание помещений, ресурсы и объекты. Пакет содержит 100 различных потоков случайных чисел. Более того, пользо- ватель имеет доступ к 15 стандартным теоретическим распределениям вероятно- стей, а также к эмпирическим распределениям. Время безотказной работы станка может определяться на основании времени, в течение которого станок занят, ка- лендарного времени или числа обработанных деталей. В ProModel предусмотрен простой механизм выполнения независимых прого- нов имитационной модели, получения точечных оценок и доверительных интер- валов для оценок показателей работы. В пакете можно создавать несколько типов графиков выходных данных моделирования, в том числе диаграммы состояний (например, состояний станка: занят, заблокирован, неисправен и т. п.), гистограм- мы и графики временной зависимости. С пакетом ProModel связан модуль опти- мизации SimRunner2 (см. раздел 12.6). Пакет Taylor Enterprise Dynamics (Taylor ED) [F&H, 1998] — это программное обеспечение для моделирования производственных систем, поставляемое компа- нией F&H Simulations, Inc. (Орем, Юта). В нем модель создается путем перетаски- вания «атомов» в окно Model Layout (Схема модели). Затем с помощью диалоговых окон уточняются особенности этих атомов. Каждый компонент модели пакета Taylor ED, в том числе устройства обслуживания, очереди, конвейеры, распре- деления вероятностей, представляет собой атом. С помощью пакета Taylor ED моделируются самые разнообразные конфигурации производственных систем, поскольку для настройки существующих атомов и создания новых могут исполь- зоваться «редактор атомов» и язык 4DScript. Новые атомы помещаются в библио- теку атомов и повторно применяются в данной модели или других моделях. Число уровней иерархической структуры в модели не ограничено. В пакете можно вызы- вать внешние программы из библиотеки Dynamic Link Library (DLL).
764 Глава 13. Моделирование производственных систем В пакете обеспечивается двух- и трехмерная анимация, причем пользователь может мгновенно переключаться с одного вида анимации на другой или просмат- ривать их одновременно. * В Taylor ED содержатся следующие устройства транспортировки материалов и деталек конвейеры (транспортеры и накопители), автопогрузчики, автоматизи- рованные транспортные системы, автоматизированные системы хранения и поис- ка, краны. В пакет включена модель затрат, что позволяет учитывать доход от каждой производимой детали и все расходы, связанные со станками, рабочей силой, неза- вершенным производством и т. п. Число потоков случайных чисел в пакете не ограничено. Более того, пользова- тель имеет доступ к 19 стандартным распределениям вероятностей, а также к эм- пирическим распределениям. Время безотказной работы станка определяется на основании времени, в течение которого станок занят (по умолчанию), а с по- мощью редактора атомов можно разработать и другие подходы. В Taylor ED предусмотрен простой механизм выполнения независимых прого- нов имитационной модели, получения точечных оценок и доверительных интер- валов для оценок показателей. В пакете можно создавать несколько типов графи- ков, в том числе диаграммы, гистограммы, круговые диаграммы и графики Ганта. В пакете доступен модуль оптимизации OptQuest [Glover, Kelly and Laguna, 1999b] (см. также раздел 12.6). Пакет WITNESS [Tanner, 1998b], поставляемый компаний banner Group (Хью- стон, Техас), представляет собой набор программ моделирования производствен- ных систем. Дальше перечислены его основные моделирующие конструкции. 4- Детали — представляют детали или сырье. 4 Станки — представляют станки или помещения, где обрабатываются детали. 4 Буфера — представляют очереди или другие места, где хранятся детали. 4 Работа — представляет подвижные ресурсы, например рабочих или инстру- менты. Структурно модель может иметь неограниченное число уровней иерархии. Модель строится с помощью графических средств (позволяющих разместить мо- делирующие конструкции на экране и определить маршруты деталей), раскры- вающихся меню и диалоговых окон. Кроме того, существуют опции Rule (Прави- ло) и Action (Действие), позволяющие описать более сложную логику. Опция Rule используется, чтобы указать, как детали поступают на станок или в буфер (или по- кидают их). Опция Action — это набор инструкций, созданных с помощью внутрен- него псевдоязыка и выполняющихся, когда возникает «событие» (например, при поломке станка). В WITNESS по умолчанию обеспечивается двухмерная анима- ция, которая создается автоматически в ходе разработки модели. В пакете есть вспомогательный модуль Virtual Reality, позволяющий создавать трехмерную ани- мацию существующей модели. К средствам транспортировки материалов относятся конвейеры (транспорте- ры, накопители и т. д.) автопогрузчики и автоматические транспортные роботоси- стемы. Кроме того, в WITNESS есть вспомогательные конструкции, состоящие
13.4. Моделирование случайности в производственных системах 765 из резервуаров и труб, которые предназначены для моделирования систем с не- прерывным потоком. Пакет включает в себя 1000 различных потоков случайных чисел. Более того, пользователь имеет доступ к 12 стандартным теоретическим распределениям ве- роятностей, а также к эмпирическим распределениям. Время безотказной работы станка может определяться на основании времени, в течение которого станок занят, календарного времени или числа обработанных деталей. Независимые повторные прогоны модели можно выполнять, определив экспе- римент. Чтобы получить точечные оценки и доверительные интервалы для оценок необходимых показателей, используется модуль ХА. Пакет включает множество графиков, в том числе временные графики, гистограммы и круговые диаграммы. Обратите внимание, что прогоны различных имитационных моделей могут вы- полняться последовательно, без ввода каких-либо данных пользователем. В паке- те WITNESS также доступен вспомогательный модуль оптимизации. Кроме того, существует версия пакета WITNESS, предназначенная для органи- зации сферы обслуживания; сюда входят больницы, а также финансовые и адми- нистративные учреждения. 13.4. Моделирование случайности в производственных системах В главе 6 рассматривался процесс выбора входных распределений вероятностей для имитационных моделей. Описанные там методы могут применяться и при мо- делировании производственных систем. Дальше мы остановимся на дополнитель- ных методах, которые подходят именно для моделирования случайности в произ- водственных системах. Основное внимание мы уделим времени простоя станков из-за поломки. 13.4.1. Источники случайности Вначале рассмотрим источники случайных величин в производственных систе- мах. В частности, можно привести следующие примеры непрерывных распределе- ний в моделях производственных систем: ♦ время поступления заказов, деталей или сырья; ♦ время обработки, сборки или проверки; ♦ время безотказной работы станка (см. раздел 13.4.2); * время ремонта станка; ♦ время погрузки и разгрузки; + время наладки, необходимое, чтобы перестроить станок для обработки дру- гого типа деталей; ♦ вероятность исправления брака; ♦ процент выхода годных изделий.
766 Глава 13. Моделирование производственных систем Обратите внимание, что в некоторых случаях вышеприведенные величины мо- гут быть постоянными. Например, для автоматического станка время обработки деталей не может существенно меняться. Или, скажем, моторы автомобилей могут поступать в конченый пункт сборки с постоянным интервалом, равным 1 мин. На самом деле существует два способа поступления деталей в производствен- ную систему. В некоторых системах (например, сборочная производственная ли- ния) часто допускаются неограниченные поставки заготовок деталей или сырье- вого материала для первого станка в линии. Таким образом, интенсивность, с ко- торой детали поступают в систему, — это фактически скорость обработки деталей первым станком, то есть в ней учитываются все простои и блокировки станка. Кроме того, работы, или заказы, могут поступать в систему в соответствии с про- изводственным планом, в котором для каждого заказа определяется размер, время поступления, тип деталей. В имитационной модели производственный план мо- жет рассматриваться как внешний файл. Все гистограммы наблюдаемых значений времени обработки (или сборки), вре- мени безотказной работы и времени ремонта имеют свою характерную форму. Примеры гистограмм этих трех типов показаны на рис. 13.1-13.3. Рис. 13.1. Гистограмма 52 значений времени обработки для предприятия — изготовителя автомобилей Вы видите, что гистограмма времени безотказной работы на рис. 13.2 имеет форму, подобную экспоненциальной, с модой (наиболее вероятным значением), близкой к 0. Но экспоненциальное распределение само по себе не может быть удачной моделью этих данных (см. раздел 13.4.2). Заметьте, что на двух других гистограммах мода имеет положительное значение и сдвинута вправо (то есть ее правый конец длиннее).
13.4. Моделирование случайности в производственных системах 767 Рис. 13.2. Гистограмма 1603 значений времени безотказной работы для предприятия — изготовителя хозяйственных товаров Рис. 13.3. Гистограмма 88 значений времени ремонта для предприятия — изготовителя изделий из алюминия Дискретные распределения в производственных системах встречаются, как пра- вило, гораздо реже непрерывных распределений. Примерами таких дискретных распределений могут служить результат проверки качества детали (хорошее или плохое) и размер заказа, поступившего на фабрику (возможные значения 1,2,...).
768 Глава 13. Моделирование производственных систем 13.4.2. Простои механизмов Важный источник случайности в производственных системах связан с поломками станков и внеплановыми простоями. Случайные поломки возникают из-за таких событий, как сбой в работе станка, заклинивание детали или поломка инструмен- тов. В следующем примере показано, насколько важно правильно моделировать простои станков из-за поломки. Пример 13.3. Компания собирается приобрести новый механический станок у произво- дителя, который утверждает, что время простоя станка из-за поломки будет составлять 10 %. Однако у производителя нет данных о том, в течение какого времени станок будет работать перед тем, как выйти из строя, или сколько времени нужно для его ремонта. Некоторые специалисты по анализу с помощью метода имитационного моделирования учли случайные поломки, просто сократив на 10 % интенсивность обработки деталей на станке. Однако нам предстоит убедиться, что при таком подходе могут быть получе- ны не очень точные данные. Предположим, что после установки компанией-покупателем системы с одним механи- ческим станком (см. пример 4.30) она фактически будет работать в соответствии со сле- дующими допущениями: заготовки поступают с экспоненциально распределенным временем между поступ- лениями со средним значением 1,25 мин; ♦ время обработки заготовки станком является постоянным и равно 1 мин; ♦ время безотказной работы станка имеет экспоненциальное распределение (оно из- меряется на основании календарного времени, о чем будет рассказано дальше) со средним значением 540 мин (9 ч); ♦ время ремонта станка имеет гамма-распределение (параметр формы равен 2) со сред- ним значением 60 мин (1 ч); 4- время, в течение которого станок будет неисправен, составляет 10 %, поскольку сред- няя продолжительность рабочего цикла равна 10 ч. Во втором столбце табл. 13.1 для вышеописанной системы приведены результаты пяти независимых имитационных прогонов продолжительностью 160 ч, то есть 20 рабочих (8-часовых) дней; все значения времени указаны в минутах. В четвертом столбце табли- цы представлены данные, полученные в результате пяти независимых имитационных прогонов продолжительностью 160 ч для системы с механическим станком без поломок, скорость обработки при этом равняется 0,9 заготовки в минуту вместо 1 заготовки в ми- нуту (такой подход иногда используется на практике). Вы видите, что средняя производительность в неделю практически идентична в обоих столбцах. (Для системы, в которой не наблюдается нехватки мощностей (см. зада- чу 13.1) и которая моделируется в течение длительного периода времени, средняя произ- водительность за 40-часовую рабочую неделю должна равняться интенсивности поступ- ления за 40-часовую рабочую неделю; в данном случае она составляет 1920.) С другой стороны, обратите внимание, что такие показатели, как среднее время пребывания заго- товки в системе и максимальное число заказов в очереди существенно отличаются. Сле- довательно, детерминированная регулировка интенсивности обработки дает результаты, которые существенно отличаются от правильных результатов, основанных на реальных поломках станков. В третьем столбце табл. 13.1 представлены данные, полученные после пяти независи- мых имитационных прогонов продолжительностью 160 ч для системы с поломками, но
13.4. Моделирование случайности в производственных системах 769 со средним временем безотказной работы, равным 54 мин и средним временем ремонта, равным 6 мин; таким образом, время, в течение которого станок будет неисправен, по-прежнему составляет 10 %. Обратите внимание, что среднее время пребывания заго- товки в системе и максимальное число заготовок в очереди существенно отличаются во втором и третьем столбцах. Вот почему при явном учете поломок в имитационной моде- ли так же важно получить точную оценку среднего времени безотказной работы и сред- него времени ремонта для реальной системы. Этот пример также показывает, что требуемая детализация модели зависит от искомого показателя работы. Все три модели дают точные оценки ожидаемой производительнос- ти, а с другими показателями все обстоит иначе. Таблица 13.1. Результаты моделирования системы с одним механическим станком Показатель работы Среднее время между поломками составляет 540 мин Среднее время между поломками составляет 54 мин Поломки отсутствуют Средняя производительность в неделю* 1908,8 1913,8 1914,8 Среднее время пребывания заготовки в системе* 35,1 10,3 5,6 Максимальное время пребывания заготовки в системе” 256,7 76,1 39,1 Среднее число заготовок в очереди* 27,2 7,3 3,6 Максимальное число заготовок в очереди” 231,0 67,0 35,0 Среднее значение, вычисленное по пяти имитационным прогонам. ” Максимальное из значений, полученных по пяти имитационным прогонам. Хотя правильно смоделировать поломку станков очень важно, что подтвержда- ется приведенным выше примером, данный вопрос нечасто рассматривается в ли- тературе по моделированию. Поэтому мы более подробно опишем моделирование простоев станков из-за поломки. (Детерминированное время простоя, например обеденные перерывы, перерывы между сменами и плановое профилактическое об- служивание, моделировать относительно просто, поэтому в этой главе мы его не рассматриваем.) Существуют циклы работы станка; при этом г-й цикл состоит из участка рабо- чего состояния (время работы) продолжительностью Uit за которым следует уча- сток поломки (простоя) продолжительностью Df. В участке рабочего состояния станок обрабатывает детали, если они имеются в наличии и если станок не забло- кирован. Первые два цикла работы станка показаны на рис. 13.4. Пусть В,- и будут величинами времени на участке Ub когда станок соответственно занят обработкой деталей и свободен (либо простаивает в ожидании поступления деталей, либо заблокирован текущей обработанной деталью). Значит, Ut = В, + 4 Обратите вни- мание, что и Bit и I; могут соответствовать ряду отдельных отрезков времени, по- этому они не представлены на рис. 13.4.
770 Глава 13. Моделирование производственных систем ь 0 L4 Dt U2 D2 I 1 Rt I W2 Я, Время Завершение цикла 1 Завершение цикла 2 Рис. 13.4. Циклы «рабочее состояние—простой» для станка Пусть будет значением времени от момента возникновения i-го простоя до того, как начнется ремонт, a R, — продолжительностью i-ro ремонта. Таким обра- зом, £>, - ЭД + Rit как показано на рис. 13.4. Для простоты допускается, что циклы не зависят друг от друга и идентичны в вероятностном смысле. Такое допущение предполагает, что каждая из шести по- следовательностей случайных величин, определенных выше (например, Ut, U2,... или Dlt D2, ...) сама по себе является независимой и одинаково распределенной (см. задачу 13.2). Допускается также, что и Т>, будут независимыми для всех зна- чений i (см. задачу 13.3). Далее показано, как моделировать участки рабочего состояния в имитацион- ной модели, если допускается, что «соответствующие» данные о поломках у нас есть. Мы рассмотрим два метода — с использованием календарного времени и с ис- пользованием времени занятости (см. задачу 13.4). Календарное время. Допустим, что у нас есть данные о времени, в течение которо- го станок пребывает в рабочем состоянии, U2, U2, и что мы можем подобрать стандартное распределение вероятностей (например, экспоненциальное) Fv к этим данным с помощью методов, описанных в главе 6. Если же ни одно распределение не подходит для этих данных, допустим, что для моделирования Ц применяется эмпирическое распределение. Затем, начиная с момента времени 0, мы генерируем случайное значение щ из распределения Fv, тогда 0 + щ = щ будет временем пер- вой поломки станка при моделировании. Когда станок на самом деле выходит из строя в момент времени иь он может быть как занят, так и свободен (см. зада- чу 13.5). Предположим, что dx определяется как первое время простоя станка из-за поломки (см. дальше). Тогда станок возвращается в рабочее состояние в момент времени щ + dx. (Если станок обрабатывал деталь в момент поломки щ, обычно до- пускается, что оставшееся время обработки детали станком сохранится и продол- жится с момента времени щ + d^) В момент времени щ + из распределения Fv случайным образом генерируется еще одно значение w2, и станок пребывает в ра- бочем состоянии в течение интервала времени [Uj + dx, щ + d2+ и^). Если <4 — это второе время простоя станка из-за поломки, то станок будет неисправен в течение интервала времени [ut + J(+ и2, щ + dx+ и2 + </2) и т. д. Метод с использованием календарного времени имеет два недостатка. Во-пер- вых, в данном методе учитывается возможность поломки станков, когда те бездей- ствуют, что мало вероятно. Во-вторых, если предположить, что рассматриваемый станок — часть системы, в которой есть станки перед этим станком и после него и смоделировать два различных варианта всей системы с использованием распре- деления Fv для определения поломок некоторого станка (и синхронизации време- ни простоя), то окажется, что в обоих вариантах моделирования станок будет ломаться в тех же самых точках моментов модельного (календарного) времени.
13.4. Моделирование случайности в производственных системах 771 Однако, в связи с тем что значения времени ожидания поступления деталей от станков, расположенных в последовательности перед рассматриваемым станком, и блокировки деталей из-за поломок станков, расположенных в последовательно- сти после него, различны, реальное время, в течение которого этот станок занят, может быть гораздо меньше для одной конфигурации системы, чем для другой. Такое положение также не совсем реалистично. Время занятости. Допустим, что у нас есть данные о времени занятости станка Blf В2,..., и мы можем подобрать распределение FB к этим данным. (Как альтернатива может использоваться эмпирическое распределение.) Тогда, начиная с момента времени 0, мы генерируем из распределения FB случайное значение bv Станок бу- дет работать, пока общее накопленное время обработки, в течение которого ста- нок занят, не достигнет значения Ьь в этой точке работающий станок приходит в неисправность. (Например, предположим, что равно 60,7 мин, а время обработ- ки каждой детали будет постоянным, равным 1 мин. Значит, станок сломается во время обработки 61-й детали.) Если J\ — это модельное время, когда станок прихо- дит в неисправность первый раз (Д > b^, a — первое время простоя станка, то станок возвращается в рабочее состояние в момент времени + dx и т. д. В целом метод с использованием времени, в течение которого станок занят, ка- жется более естественным, чем метод с использованием календарного времени. Ожидается, что следующее время поломки станка будет больше зависеть от обще- го времени, в течение которого станок занят, чем от календарного времени, про- шедшего с момента последнего ремонта. Однако на практике метод с использова- нием времени, в течение которого станок занят, может оказаться нереализуемым, поскольку у нас могут быть в наличии данные о времени, пребывании станка в ра- бочем состоянии, (Ult U2,...), а не данные о времени, в течение которого станок за- нят (Вь В2,...). На многих фабриках записывается только время, когда станок ло- мается, и время, когда станок возвращается к работе (заканчивается ремонт). Значит, можно легко вычислить время, в течение которого станок пребывает в ра- бочем состоянии, Ub U2,..., а реальное время, в течение которого станок занят, Blt В2,..., будет неизвестно (см. задачу 13.6). (При вычислении переменных ^должны вычитаться интервалы времени, в течение которого станок выключен, например во время нерабочих смен.) Обратите внимание: если станок никогда не ожидает поступления деталей или не бывает заблокирован, тогда Ц = Вь и описанные мето- ды являются эквивалентными. Существует еще третий метод, который иногда применяется для моделирова- ния интервалов времени, когда станок находится в рабочем состоянии, он основан на использовании количества обработанных деталей. Например, по завершении обработки станком 100 деталей необходимо провести техосмотр станка. Далее мы рассмотрим, как моделируются интервалы времени, когда станок сломан, допуская, что у нас есть данные, собранные на заводе. Предположим, вре- мя ожидания ремонта в i-м цикле равно 0 или им можно пренебречь в сравне- нии с временем ремонта Д (при i = 1, 2,...). Затем мы подбираем распределение (скажем, гамма-распределение) FD к наблюдаемому времени простоя из-за полом- ки, Db D2i .... Каждый раз, когда станок приходит в неисправность, мы генерируем
772 Глава 13. Моделирование производственных систем новое случайное значение из распределения FD и используем его как следующее время простоя из-за поломки (время ремонта). Допустим, W; иногда может иметь большое значение, что связано с ожиданием прихода ремонтника. Если у нас есть только значения D, (а не Wt и /?,), как это час- то бывает на практике, подберем распределение FD к переменным Dt и будем слу- чайным образом выбирать величины из распределения FD всякий раз, когда в ими- тационной модели понадобится время простоя станка из-за поломки. Читатель должен понимать, что FD — действительное распределение для времени простоя станка только для текущего числа ремонтников и текущих требований к техниче- скому обслуживанию системы, для которой были собраны значения Dt. Наконец допустим, что значение может быть значащим и что каждое значе- ние и доступно. Тогда один из подходов состоит в моделировании времени ожидания ремонтника как средства технического обслуживания с конечным чис- лом элементов и подборе распределения FR к значениям R. Если ремонтник свобо- ден, когда станок приходит в неисправность, время ожидания равно 0 в условиях отсутствия времени перемещения, а время ремонта /?, генерируется из распределе- ния Fr. Если свободных ремонтников нет, сломанный станок ставится в очередь станков, ожидающих ремонта и т. д. Предположим, что у нас нет данных, полученных на фабрике, ни для метода с использованием календарного времени, ни для метода с использованием време- ни, в течение которого станок занят. Такое часто бывает при моделировании пла- нируемой производственной системы, а также может произойти и при моделиро- вании системы для уже существующего предприятия, когда у нас недостаточно времени для сбора и анализа данных. Дальше для случая с отсутствием данных мы представим экспериментальную модель, которая, вероятно, будет более точной, чем многие методы, применяемые на практике (см. пример 13.4). Допустим, что время, в течение которого станок занят, В перед поломкой име- ет гамма-распределение с параметром формы ав — 0,7 и масштабным параметром ₽в> который должен быть задан. Хотя экспоненциальное распределение (гамма- распределение с ав = 1,0) в целом не является хорошей моделью времени, в тече- ние которого станок занят, при моделировании оно часто используется для гене- рирования этого времени. Пример 13.4. На рис. 13.5 представлена гистограмма времени безотказной работы стан- ка (на самом деле времени, в течение которого станок занят) из рис. 13.2 с наиболее под- ходящим экспоненциальным распределением, изображенным поверх него. Можно опре- делить на глаз, что экспоненциальное распределение не очень подходит к этим данным, поскольку кривая его плотности проходит выше гистограммы при небольших значениях х. Более того, экспоненциальное распределение было отклонено при проверке по крите- рию согласия (см. раздел 6.2.2). Мы выбрали гамма-распределение из-за его гибкости (то есть его плотность допускает большое разнообразие форм) и потому, что многие гистограммы време- ни, в течение которого станок занят, при ав 1, имеют общую форму. (Можно так- же использовать распределение Вейбулла, но его среднее значение труднее вычис- лить.) Параметр формы для гамма-распределения был определен как ав = 0,7 путем подбора гамма-распределения к семи различным наборам данных о времени
13.4. Моделирование случайности в производственных системах 773 занятости станка; средний параметр формы, полученный в итоге, равнялся 0,7. Оценка параметра формы была близка к 1,0 (экспоненциальное распределение) только в одном случае. Функция плотности для гамма-распределения с парамет- ром формы 0,7 и масштабным параметром 1,0 показана на рис. 13.6. Рис. 13.5. График функции плотности экспоненциального распределения, помещенный поверх гистограммы данных о времени безотказной работы станка Рис. 13.6. Распределение gamma(0,7; 1,0)
774 Глава 13. Моделирование производственных систем Допустим, что время простоя станка из-за поломки (или время ремонта) имеет гамма-распределение с параметром формы aD = 1,3 и масштабным параметром который должен быть определен. Этот параметр формы был определен путем под- бора гамма-распределения к 11 различным наборам данных, полученный средний параметр формы равнялся 1,3. Функция плотности для гамма-распределения с па- раметром формы 1,3 и масштабным параметром 1,0 показана на рис. 13.7. Эта функция плотности имеет ту же общую форму, что и гистограммы времени про- стоя станка из-за поломки, часто получаемые на практике (см. рис. 13.3). Чтобы завершить моделирование времени простоя станка в отсутствие дан- ных, необходимо задать масштабные параметры рв и Это можно сделать, запро- сив соответствующую информацию у специалистов, знающих работу системы (например, у инженеров). Мы установили, что удобно было бы получить оценку среднего времени простоя, E(D) и оценку эффективности работы станка е; как правило, это вполне осуществимо. Эффективность е определяется как доля потен- циального времени обработки (то есть при наличии деталей и отсутствии блоки- ровки станка), в течение которого станок действительно обрабатывает детали, и задается формулой е= , Ив +Цв где цв = £(В) — среднее значение времени, в течение которого станок занят до по- ломки. Если станок никогда не простаивает в ожидании деталей или никогда не бывает заблокирован, цв = = Е(1Г), а е — часть времени, в течение которого ста-
13.5. Пример моделирования 775 нок обрабатывает детали. Используя значения jiD и е (а также учитывая тот факт, что среднее гамма-распределения равно произведению их параметра формы и мас- штабного параметра), легко доказать, что искомые масштабные параметры зада- ются формулами и Рв 0,7(1 -е) в 1,3* Таким образом, наша модель времени простоя станка из-за поломки в отсутствие данных полностью завершена. Мы рассмотрели вышеописанные модели поломки и ремонта станков. Однако на практике может возникнуть ряд дополнительных сложностей, например, мо- жет появиться множество различных независимых причин поломки станков. Не- которые из них рассматриваются в задачах в конце этой главы. 13.5. Пример моделирования Далее мы расскажем, как используется моделирование для улучшения характери- стики производственной системы. Смоделируем ряд различных конфигураций системы, состоящей из рабочих станций и автопогрузчиков; при этом выходная статистика, полученная при моделировании одной конфигурации, будет исполь- зоваться для определения следующей моделируемой конфигурации. Процедура будет выполняться до тех пор, пока не будет получен проект системы, рабочие ха- рактеристики которой соответствуют нашим требованиям. 13.5.1. Задачи и результаты моделирования Компания собирается построить новое предприятие, состоящее из станции прие- ма-отправки и пяти рабочих станций (рис. 13.8). На одной станции все станки одинаковы, но станки, установленные на разных станциях, отличаются. (Эта сис- тема представляет собой усложненный вариант модели цеха из раздела 2.7.) Одна из целей изучения системы посредством моделирования состоит в определении числа станков, необходимого для каждой рабочей станции. Было решено, что рас- стояние между шестью станциями будет таким, как указано в табл. 13.2 (станция приема-отправки обозначена номером 6). Таблица 13.2. Расстояние между шестью станциями, футов Станция 1 2 3 4 5 6 1 0 150 213 336 300 150 2 150 0 150 300 336 213 3 213 150 0 150 213 150 4 336 300 150 0 150 213 5 300 336 213 150 0 150 6 150 213 150 213 150 0
776 Глава 13. Моделирование производственных систем Рабочая станция 4 Рабочая станция 2 Рабочая станция 3 Рабочая станция 1 Станция приема-отправки Рис. 13.8. Схема производственной системы О О О Рабочая станция 5 Допустим, что заготовки поступают на станцию приема-отправки с интервалами между прибытиями, представленными независимыми экспоненциально распреде- ленными случайными величинами со средним значением 1/15 ч. Значит, в течение «типичного» часа поступает 15 заготовок. Существует три типа работ для загото- вок; работы относятся к типу 1,2 и 3 с вероятностью соответственно 0,3; 0,5 и 0,2. Для работ типа 1,2 и 3 требуется соответственно выполнение четырех, трех и пяти операций, все операции должны производиться на указанных рабочих станциях в установленном порядке. Каждая заготовка изначально попадает на станцию прие- ма-отправки, откуда она начинает свой маршрут в системе, по завершении которо- го она покидает систему через станцию приема-отправки. Маршруты заготовок для различных типов работ указаны в табл. 13.3. Заготовка будет перемещаться с одной станции на другую при помощи авто- погрузчика, который двигается с постоянной скоростью 5 футов в секунду (1,52 м/с). Другая цель моделирования — определить необходимое число автопогрузчиков. Когда автопогрузчик освобождается, он обслуживает заготовки в порядке увели- чения расстояния между автопогрузчиком и заготовкой, подлежащей перевозке (то есть ближайшие к нему заготовки перемещаются в первую очередь). Если в тот момент, когда требуется переместить заготовку, свободны несколько автопогруз- чиков, используется ближайший к ней автопогрузчик. Когда автопогрузчик завер- шает перемещение заготовки на рабочую станцию, он остается на этой станции, если в системе нет невыполненных запросов для заготовок (см. задачу 13.12). Таблица 13.3. Маршруты заготовок для трех типов работ Тип работы Рабочие станции на маршруте заготовки 1 3, 1, 2, 5 2 4, 1,3 Рс 3 2, 5,1,4, 3 Если при поступлении заготовки на станцию все станки на ней уже заняты или заблокированы, заготовка помещается в единственную очередь с дисциплиной об-
13.5. Пример моделирования 1Т7 служивания FIFO на этой станции. Время выполнения операции определенным станком представлено переменной, которая имеет гамма-распределение с пара- метром формы 2, ее среднее значение зависит от того, какой тип работы выполняет- ся, и от того, на какой рабочей станции установлен станок. Среднее время обслу- живания для каждой заготовки и каждой операции дано в табл. 13.4. Таким обра- зом, среднее совокупное время обслуживания, определенное для всех заготовок, равно 0,77 ч (см. задачу 13.13). Когда станок завершает обработку заготовки, она блокирует этот станок (то есть станок не может приступить к обработке другой за- готовки) до тех пор, пока ее не заберет автопогрузчик (см. задачу 13.14). Таблица 13.4. Среднее время обслуживания для каждой заготовки и каждой операции Тип работы Среднее время обслуживания в ходе последовательных операций, ч 1 0,25; 0,15; 0,10; 0,30 2 0,15; 0,20; 0,30 3 0,15; 0,10; 0,35; 0,20; 0,20 Нам нужно смоделировать предложенную производственную систему, чтобы определить, сколько станков необходимо установить на каждой рабочей станции и какое количество автопогрузчиков требуется, чтобы достичь ожидаемой произ- водительности 120 заготовок за 8-часовой рабочий день — это максимальная воз- можная производительность (см. задачу 13.15). Среди тех проектов системы, ко- торые позволяют достичь нужной производительности, будет выбран наилучший, исходя из таких показателей работы, как среднее время пребывания заготовки в системе, максимальные размеры очередей на входе, период времени, в течение которого рабочая станция занята, а также период времени, когда автопогрузчики перемещаются и т. п. Для каждого предложенного проекта системы выполняется 10 прогонов про- должительностью 920 ч (115 рабочих 8-часовых дней); первые 120 ч (15 дней) ка- ждого прогона считаются переходным периодом работы (см. раздел 13.5.2). При моделировании различных планов системы мы будем также использовать метод общих случайных чисел. Таким образом гарантируется, что определенная заготов- ка поступит в один и тот же момент времени, будет иметь один и тот же тип и ту же последовательность значений времени обслуживания во всех проектах системы при определенном повторении. Характеристики заготовок, естественно, будут от- личаться разных повторениях. Чтобы определить отправную точку моделирования (то есть проект 1 системы), выполним простой анализ системы. В частности, чтобы рабочая станция i (при i = = 1,2,..., 5) была хорошо определена (имела достаточную обрабатывающую мощ- ность) в ходе длительной эксплуатации, ее коэффициент загрузки р; = А/($; х <в() (обозначения вы найдете в приложении 1Б) должен быть меньше 1. Например, ин- тенсивность поступления заготовок на станцию 1 соответствует значению А,- = 15 заготовок в час, поскольку все заготовки «посещают» станцию 1. Воспользовав- шись условной вероятностью [Ross, 1997], определяем, что среднее время обслу- живания на станции 1 составляет 0,3(0,15 ч) + 0,5(0,20 ч) + 0,2(0,35 ч) = 0,215 ч.
778 Глава 13. Моделирование производственных систем Это предполагает, что скорость обслуживания одним станком на станции 04 = 4,65 за- готовок в час. Поэтому, решив уравнение при р, = 1, получаем необходимое число станков на станции 1, то есть st = 3,23; округляем это значение до 4. (Что непра- вильно при таком анализе? См. задачу 13.16.) Итоги вычислений для всех пяти станций приведены в табл. 13.5, по ним видно, что предположительно требуется установить 4, 1, 4, 2 и 2 станка на станциях 1, 2.5 соответственно. Такой же анализ можно провести и для того, чтобы установить необходимое количество автопогрузчиков. Заказы типа 1 поступают в систему с интенсивно- стью 4,5 (0,3 раза по 15) заказа в час. Более того, среднее время перемещения заго- товки для заказа типа 1 составляет 0,06 ч (по маршруту 6-3-1-2-5-6). Значит, чтобы переместить заготовки для заказа типа 1 нужно 0,27 автопогрузчика. Анало- гично для перемещения заготовок для заказов типов 2 и 3 понадобится соотве- тственно 0,38 и 0,24 автопогрузчика. Всего нужно 0,89 автопогрузчика; это значе- ние мы округляем до 1. (Что упущено в этом анализе? См. задачу 13.17.) Итоги вычислений необходимого числа автопогрузчиков показаны в табл. 13.6; по ним видно, что среднее время перемещения, определенное по всем типам заготовок, равно 0,06 ч. Таблица 13.5. Число станков, необходимое для каждой рабочей станции Рабочая станция Интенсивность поступления, заготовок в час Скорость обслуживания, заготовок в час на 1 станок Необходимое число станков 1 15,0 4,65 3,23->4 2 7,5 8,33 0,90—>1 3 15,0 3,77 3,98->4 4 10,5 6,09 1,72—>2 5 7,5 4,55 1,65-4-2 Таблица 13.6. Необходимое число автопогрузчиков Тип работ Интенсивность поступления, заготовок в час Среднее время перемещения, заготовок в час на 1 автопогрузчик) Необходимое число автопогрузчиков 1 4,5 0,06 0,27 2 7,5 0,05 0,38 3 3,0 0,08 0,24 Всего 0,89->1 Итоги 10 прогонов имитационной модели системы по проекту 1, который был определен в ходе вышеприведенного анализа, показаны в табл. 13.7 (все значения времени указаны в часах). Обратите внимание, средний коэффициент загрузки (доля времени, в течение которого станок занят), например, всех четырех станков на станции 1 (в ходе 10 прогонов) равен 0,72, среднее число заготовок в очереди на станции 1 равно 3,68, а максимальное число заготовок в этой очереди (в ходе 10 прогонов) равно 32. Кроме того, учтите, что средняя производительность за день составляет 94,94, что гораздо меньше ожидаемой производительности 120.
13.5. Пример моделирования 779 Значит, в данном проекте существует нехватка мощностей (то есть станков и авто- погрузчиков: число станков — 4, 1, 4, 2, 2; число автопогрузчиков — 1). Среднее время пребывания заказав системе равно 109,20 ч (107,97 ч приходится на все оче- реди, в которых побывала заготовка, и 0,42 ч — на все ожидание транспортировки); это слишком большое значение, если учесть, что среднее совокупное время обслу- живания меньше 1 ч. Обратите внимание, что совокупный коэффициент занятости автопогрузчиков равен 0,99. Высокая занятость автопогрузчиков наряду с боль- шими долями времени, в течение которого станки заблокированы, предполагает, что в систему нужно добавить еще один или несколько автопогрузчиков. Наконец, учтите, станции 2, 3 и 4 будут либо заняты, либо блокированы 100 % времени, а статистика очередей на них имеет достаточно большие значения. (См. также рис. 13.9, где число заготовок в очереди 2 изображено с шагом времени, равным 1 ч для первых 200 ч первого имитационного прогона.) Мы добавим один станок на каждую из станций 2,3 и 4. (Теперь автопогрузчики добавлять не будем, хотя ка- жется, что это нужно сделать; см. проект 3 системы.) Таблица 13.7. Результаты моделирования системы по 1 проекту Показатель работы Станция 1 2 3 4 5 Доля времени, в течение которого станок занят 0,72 0,74 0,83 0,73 0,66 Доля времени, в течение которого станок блокирован 0,21 0,26 0,17 0,27 0,33 Среднее число заготовок в очереди Максимальное число заготовок 3,68 524,53 519,63 569,23 32,54 в очереди 32,00 1072,00 1026,00 1152,00 137,00 Средняя производительность за день Среднее время пребывания заготовки 94,94 в системе 109,20 Среднее совокупное время пребывания заготовок в очередях Среднее совокупное время ожидания 107,97 заготовкой транспортировки 0,42 Доля времени, в течение которого автопогрузчик передвигается с грузом 0,77 Доля времени, в течение которого автопогрузчик передвигается без груза 0,22 Результаты моделирования системы по проекту 2 (4,2,5,3 и 2 станка на стан- циях 1,2,..., 5 соответственно и 1 автопогрузчик) приведены в табл. 13.8. Средняя производительность за день увеличилась с 94,94 до 106,77, но она все еще значи- тельно меньше ожидаемой производительности. Соответственно среднее время пребывания работы в системе сократилось с 109,20 до 55,84 ч. Даже несмотря на то, что мы добавили три станка, статистика очереди на станции 5 стала намного хуже (Почему? См. задачу 13.20.) На самом деле станция 5 теперь занята или бло- кирована 100 % времени. Время, в течение которого станция блокирована, увели- чилось для четырех из пяти станций. Данный пример опять-таки подтверждает то,
780 Глава 13. Моделирование производственных систем что нелегко предвидеть, какое влияние локальные изменения окажут на систему в целом. Поскольку совокупный коэффициент загрузки автопогрузчика равен 1,00, далее мы добавим в систему второй автопогрузчик. Рис. 13.9. Число заготовок в очереди 2, взятое с шагом времени, равным 1 ч, для проекта 1 (прогон 1) Таблица 13.8. Результаты моделирования системы по проекту 2 Станция Показатель работы 1 2 3 4 5 Доля времени, в течение которого станок занят 0,75 0,45 0,76 0,54 0,66 Доля времени, в течение которого станок блокирован 0,25 0,26 0,23 0,30 0,34 Среднее число заготовок в очереди 106,04 0,53 46,15 1,17 747,33 Максимальное число заготовок в очереди 364,00 11,00 182,00 17,00 1521,00 Средняя производительность за день 106,77 Среднее время пребывания заготовки в системе 55,84 Среднее совокупное время пребывания заготовки в очередях 54,34 Среднее совокупное время ожидания заготовкой транспортировки 0,69 Доля времени, в течение которого автопогрузчик передвигается с грузом 0,84 Доля времени, в течение которого автопогрузчик передвигается без груза 0,16
13.5. Пример моделирования 781 Результаты моделирования системы по проекту 3 приведены в табл. 13.9 (чис- ло станков — 4,2,5,3,2; число автопогрузчиков — 2). Средняя производительность за день теперь составляет 120,29, что не существенно отличается от 120 (см. раз- дел 13.5.2). Значит, проект системы 3 выглядит устойчивым в ходе длительной работы. Кроме того, среднее время пребывания работы в системе сократилось с 55,84 до 1,76 ч. Обратите внимание, средний совокупный коэффициент загрузки двух автопогрузчиков имеет приемлемое значение 0,71 (см. задачу 13.21), а доля времени, в течение которого станции заблокированы, теперь невелика. Наконец, статистика, собранная для всех пяти станций, тоже кажется вполне приемлемой (см. рис. 13.10), за исключением разве что максимального размера очередей на станциях 1 и 5. Будет ли такой размер очередей, как 39 или 85, подходящим, зави- сит от конкретной ситуации. Уменьшить максимальный размер очередей можно, добавив по станку на станции 1 и 5. Наконец, обратите внимание на следующий факт: среднее время пребывания заготовки в системе (1,761) равно сумме среднего времени пребывания заготовок в очередях (0,861), среднего совокупного времени ожидания заготовкой транспор- тировки (0,075), среднего времени транспортировки (0,059), а также среднего со- вокупного времени обслуживания (0,766); две последние величины не указаны в табл. 13.9. Таблица 13.9. Результаты моделирования системы по проекту 3 Станция Показатель работы 1 2 3 4 5 Доля времени, в течение которого станок занят 0,81 0,45 0,80 0,58 0,83 Доля времени, в течение которого станок блокирован 0,06 0,06 0,04 0,06 0,07 Среднее число заготовок в очереди 3,37 0,24 2,18 0,47 6,65 Максимальное число заготовок в очереди 39,00 10,00 27,00 17,00 85,00 Средняя производительность за день 120,29 Среднее время пребывания заготовки в системе 1,76 Среднее совокупное время пребывания заготовки в очередях 0,86 Среднее совокупное время ожидания заготовкой транспортировки 0,08 Доля времени, в течение которого автопогрузчик передвигается с грузом 0,44 Доля времени, в течение которого автопогрузчик передвигается без груза 0,27
782 Глава 13. Моделирование производственных систем Время, ч Рис. 13.10. Число заготовок в очереди 2, взятое с шагом времени, равным 1 ч, для проекта 3 (прогон 1) При переходе от проекта 1 к проекту 2 мы добавили станки на станции 2, 3 и 4 одновременно. Поэтому следует поинтересоваться, нужно ли добавлять все три станка, чтобы получить ожидаемую производительность 120. Сначала мы убрали один станок на станции 2 в проекте 3 (общее число станков равно 15) и получили среднюю производительность за день 119,38, что существенно отличается от 120 (см. раздел 13.5.2). Значит, на станции 2 должно быть два станка. Затем мы убрали один станок на станции 3 в системе по проекту 3 (общее число станков равно 15) и получили среднюю производительность за день 115,07, что опять-таки существен- но отличается от 120. Значит, на станции 3 должно быть пять станков. Наконец, мы убрали один станок на станции 4 в системе по проекту 3 и получили проект 4, результаты моделирования которого даны в табл. 13.10 (число станков — 4,2,5, 2, 2; число автопогрузчиков — 2). Производительность осталась неизменной, а сред- нее время пребывания заготовки в системе увеличилось с 1,76 до 2,61. Эта разница является статистически значимой (см. раздел 13.5.2). Обратите также внимание, что среднее и максимальное число заготовок в очереди на станции 4 для проекта 4, как и ожидалось, будет больше. Оба проекта, 3 и 4, системы кажутся устойчивыми в ходе длительной работы. Какой из них предпочесть, зависит от таких факторов, как стоимость дополни- тельного станка для станции 4 (проект 3), стоимость дополнительной площади (проект 4) и расходы, связанные с большим средним временем пребывания работ в системе (проект 4).
13.5. Пример моделирования 783 Таблица 13.10. Результаты моделирования системы по проекту 4 Показатель работы Станция 1 2 3 4 5 Доля времени, в течение которого станок занят 0,81 0,45 0,80 0,87 0,83 Доля времени, в течение которого станок блокирован 0,06 0,06 0,04 0,08 0,07 Среднее число заготовок в очереди 2,89 0,25 1,88 14,31 6,50 Максимальное число заготовок в очереди 32,00 11,00 27,00 90,00 81,00 Средняя производительность за день Среднее время пребывания заготовки в системе Среднее совокупное время пребывания заготовки в очередях Среднее совокупное время ожидания заготовкой транспортировки Доля времени, в течение которого автопогрузчик передвигается с грузом Доля времени, в течение которого автопогрузчик передвигается без груза 120,29 2,61 1,72 0,07 0,44 0,27 Внесем еще одно изменение в проект 3. Оно впервые будет касаться логики управления в системе. В частности, заготовки, ожидающие автопогрузчик, будут перемещаться в порядке FIFO, а не в порядке, при котором ближайшая заготовка перемещается первой. Результаты моделирования проекта 5 системы показаны в табл. 13.11 (число станков — 4,2,5,3,2; число автопогрузчиков — 2; порядок об- служивания очередей автопогрузчиком — FIFO). Таблица 13.11. Результаты моделирования системы по проекту 5 Показатель работы Станция 1 2 3 4 5 Доля времени, в течение которого станок занят 0,81 0,45 0,80 0,58 0,83 Доля времени, в течение которого станок блокирован 0,08 0,08 0,06 0,08 0,08 Среднее число заготовок в очереди 4,77 0,29 2,70 0,58 8,28 Максимальное число заготовок в очереди 51,00 11,00 33,00 17,00 95,00 Средняя производительность за день Среднее время пребывания заготовки в системе Среднее совокупное время пребывания заготовки в очередях Среднее совокупное время ожидания заготовкой транспортировки Доля времени, в течение которого автопогрузчик передвигается с грузом Доля времени, в течение которого автопогрузчик передвигается без груза 120,33 2,03 1.И 0,10 0,44 0,31
784 Глава 13. Моделирование производственных систем Среднее время пребывания заготовки в системе теперь возросло с 1,76 до 2,03 ч (15-процентное увеличение). (Гистограммы времени пребывания заготовок в сис- теме по проектам 3 и 5, созданные на основании результатов всех 10 прогонов каж- дого проекта, даны на рис. 13.11.) Статистика очереди на станции 1 также значи- тельно увеличилась, автопогрузчики дольше перемещаются без груза. И сейчас автопогрузчику требуется больше времени, чтобы добраться до заготовки, по- скольку не всегда выбирается ближайшая к нему заготовка. Поэтому мы не реко- мендовали бы применять новое правило управления движением автопогрузчиков. Рис. 13.11. Гистограммы времени пребывания заготовок в системе по проектам 3 и 5 Наконец, рассмотрим изменение системы по проекту 3 (ближайшая заготовка перемещается первой), в котором некоторые станки приходят в неисправность. В частности, допустим, что на станциях 1 и 5 поломки отдельных станков происхо- дят независимо друг от друга; эффективность работы станков равна 0,9 (см. раз- дел 13.4.2). Время, в течение которого станок занят до поломки, является экспо- ненциально распределенным со средним значением 4,5 ч, а время ремонта имеет гамма-распределение с параметром формы 2 и средним значением 0,5 ч. Результа- ты моделирования, полученные для системы по проекту 6, показаны в табл. 13.12 (число станков — 4, 2, 5, 3, 2; число автопогрузчиков — 2; эффективность работы станков на станциях 1 и 5 — 0,9). Средняя производительность за день теперь составляет 119,88, данная величина не существенно отличается от 120 (см. раз- дел 13.5.2). Однако среднее время пребывания заготовки в системе возросло с 1,76 до 5,31 ч (202-процентное увеличение). Статистика очередей на станциях 1 и 5 также значительно увеличилась. Следовательно, поломки станков на станциях 1 и 5 вызывают значительное ухудшение показателей работы системы, а поломки
13.5. Пример моделирования 785 станков на всех пяти станциях, вероятно, будут иметь еще большее влияние. Мы опять убеждаемся, насколько важно правильно моделировать поломки станков. Таблица 13.12. Результаты моделирования проекта 6 системы Показатель работы Станция 1 2 3 4 5 Доля времени, в течение которого станок занят 0,81 0,45 0,80 0,58 0,82 Доля времени, в течение которого станок блокирован 0,06 0,06 0,04 0,06 0,07 Среднее число заготовок в очереди 0,09 0,00 0,00 0,00 0,09 Максимальное число заготовок в очереди 16,55 0,25 2,15 0,49 46,73 Средняя производительность за день 111,00 11,00 32,00 14,00 262,00 Среднее время пребывания заготовки в системе 119,88 Среднее совокупное время пребывания заготовки в очередях 5,31 Среднее совокупное время ожидания заготовкой транспортировки 4,37 Доля времени, в течение которого автопогрузчик передвигается с грузом 0,07 Доля времени, в течение которого автопогрузчик передвигается без груза Доля времени, в течение которого станок 0,44 занят 0,27 13.5.2. Статистические вычисления В этом разделе будут выполнены статистические вычисления, связанные с моде- лированием производственной системы, описанной в разделе 13.5.1. Начнем с по- строения 90-процентного доверительного интервала для установившейся средней производительности за день v3 для проекта 3; используем метод репликации и уда- ления (см. раздел 9.5.2). Пусть Xj — средняя производительность с 16-го по 115-й день в ходе прогона) при) = 1, 2,..., 10, период предварительной работы I равен 15 дней, или 120 ч. Тогда искомый довери- тельный интервал составляет 120,29±£9.0 9S^y , или 120,29 ±0,63. В нем содержится значение 120. Аналогично получаем следующий 90-процент- ный доверительный интервал для средней установившейся производительности за день t>6 для проекта 6: 119,88 ± t9;o,95^^y, или 119,88 ± 0,45, в котором также содержится значение 120.
786 Глава 13. Моделирование производственных систем Проекты 3 и 4 для системы хорошо определены, поскольку в них статичная средняя производительность за день неотличима от значения 120. Однако оценки статичного среднего времени пребывания заготовки в системе для этих планов системы отличаются, они соответственно равны 1,76 и 2,61. Чтобы установить, бу- дет ли такая разница статистически значимой, построим 90-процентный довери- тельный интервал для и'3 - хЦ с помощью метода репликации и удаления (см. при- мер 10.5), где д'; — статичное среднее время пребывания заготовки в системе для проекта i (при i = 3, 4). Получаем доверительный интервал в котором нет значения 0. Следовательно, »'3 существенно отличается от »'4. В соответствии с результатами, представленными в разделе 13.5.1 (и в этом разделе), переходный период работы равен 120 ч, или 15 дням. Он определен пу- тем выполнения процедуры Велча (см. раздел 9.5.1) для значений производитель- ности 920 деталей в час, полученных в ходе каждого из 10 прогонов модели систе- мы по проекту 3 (где Yg — это производительность за i-й час j-ro прогона). График скользящего среднего Y,(20) (с применением окна w = 20 для вычисления скользя- щего среднего) изображен на рис. 13.12; по нему мы и определили переходный пе- риод работы I, равный 120 ч. Такой же анализ был проведен для проектов 4, 5 и 6; переходный период работы, равный 120 ч, оказался действительным и для них. У,(20) 20 /=120 0 ----1----1---1----1---1----1---1----1---1---1----1---1----1---1----L*. 0 60 120 180 240 300 360 420 480 540 600 660 720 780 840 900г Рис. 13.12. Скользящее среднее (w = 20) значений почасовой производительности системы по проекту 3
13.6. Анализ работы предприятия, производящего металлические детали 787 13.6. Анализ работы предприятия, производящего металлические детали В этом разделе описаны результаты изучения посредством моделирования систе- мы производства и хранения металлических деталей [Law and McComas, 1988]. Рассматриваемое предприятие не является реальным ( что связано с конфиденци- альностью информации), но оно соответствует системе, которая действительно моделировалась компанией Fortune 500. Задачи проекта, этапы моделирования и преимущества, представленные в этом разделе, также подобны реальным. 13.6.1. Описание системы Предприятие, схематически изображенное на рис. 13.13, выпускает несколько ти- пов металлических деталей; для производства деталей каждого типа требуется три различных сборочных узла. Сборочные узлы для определенной детали изготавли- вают крупными партиями на одной из двух производственных линий, а затем с по- мощью конвейера передают на погрузчик, где их помещают в пустые контейнеры. Каждый раз в контейнер помещают сборочные узлы только одного типа. Контей- неры хранятся на складе до тех пор, пока узлы всех трех типов, необходимые для изготовления детали, не будут готовы к сборке. Контейнеры с узлами, соответст- вующими каждой отдельной детали, перемещаются к разгрузочно-сборочному устройству (далее именуемому сборочным устройством), где их разгружают и со- бирают из них готовое изделие, которое затем отправляется на перевозку. Освобо- дившиеся контейнеры временно хранятся в расположенном позади сборочного устройства конвейере-накопителе, имеющем определенную емкость (на рис. 13.13 этот конвейер не показан). Затем при необходимости контейнеры возвращаются к погрузчикам либо перевозятся на склад. Для перемещения полных и пустых контейнеров используют автопогрузчики. Готовые изделия, поступающие на перевозку Склад Разгрузочно- сборочное устройство Пустой О Пустой контейнер О Пустое место • Полный контейнер Рис. 13.13. Схема системы Г*** I Полный!
788 Глава 13. Моделирование производственных систем Сборочное устройство работает всего 5 дней в неделю, тогда как остальные узлы системы работают по три смены в день в течение 7 дней в неделю. Кроме того, производственные линии сборочных узлов, погрузчики и сборочное устройство подвержены случайным поломкам. 13.6.2. Общие цели моделирования Производственная линия сборочных узлов на время выполнения моделирования уже существует, тогда как создание погрузчиков, склада и сборочного устройства только проектируется. (Существующая технология, в которой есть определенные ограничения производительности, подлежит замене.) Поэтому главные цели при исследовании системы посредством моделирования состоят в следующем: убе- диться, что предлагаемые компоненты системы будут эффективно взаимодейство- вать друг с другом для получения искомой производительности; определить опти- мальные уровни ресурсов системы, например, число контейнеров. При моделировании исследуется влияние следующих компонентов системы: * необходимое число контейнеров; ♦ необходимое число автопогрузчиков и логика управления ими; ♦ необходимое число «установленных» контейнеров в очередях на вход авто- погрузчиков и сборочного устройства (его нельзя превышать); ♦ число мест в очередях на выход автопогрузчиков; ♦ необходимое число рабочих смен для сборочного устройства. Контейнеры устанавливаются в очереди на вход, чтобы соответствующему устройству не приходилось простаивать в ожидании деталей. Во время простоя погрузчика связанная с ним сборочная линия останавливается. Если очередь на выход автопогрузчика заполнена, когда завершается загрузка контейнера, погруз- чик будет заблокирован, а соответствующая линия сборки остановлена. 13.6.3. Разработка модели На исследование системы с помощью моделирования, которая описана в этих раз- делах, понадобилось 3 человеко-месяца. Важную роль в создании модели сыграли: ♦ трехдневное совещание, в ходе которого были сформулированы цели проек- та, допущения модели и определены требования к данным; ♦ однодневное совещание (до этапа программирования), которое проводится при участии инженеров и менеджеров компании-заказчика с целью выпол- нения структурного анализа допущений модели (см. раздел 5.4.3); ♦ однодневное совещание, на котором были рассмотрены исходные результа- ты моделирования и внесения изменений в допущения модели. После проведения трехдневного предварительного совещания компания пре- доставила для выполнения моделирования большое количество материалов из баз данных и отчетов; однако потребовалось много усилий с обеих сторон, чтобы пере- вести эти данные в нужный формат. Анализ данных и выбор подходящих распре- делений вероятностей для всех источников случайности в системе проводились с помощью статистического пакета UniFit (предшественника пакета EpertFit, опи-
13.6. Анализ работы предприятия, производящего металлические детали 789 санного в разделе 6.7). Полученные данные и собранная нами информация пред- ставлены в табл. 13.13. В одних случаях применялись стандартные распределения, такие как логнормальное или распределения Вейбулла, в других — эмпирические распределения, основанные на реальных данных. Имитационная модель запрограммирована в пакете SIMAN (предшественнике пакета Arena, рассмотренного в главе 3), хотя могли использоваться и другие паке- ты. Пакет SIMAN выбран исходя из гибкости его возможностей и наличия в нем средств для моделирования загрузочно-разгрузочных устройств. Модель состояла приблизительно из 2000 строк кода, 75 % которого составляли событийные про- граммы на языке FORTRAN. Эта модель оказалась довольно сложной, из-за того что для каждой детали не были четко сформулированы правила (не описанные в этой книге), определяющие сроки отправки соответствующих ей сборочных узлов на сборочное устройство. Таблица 13.13. Распределения вероятностей модели Источник случайности Тип распределения Время, в течение которого производственная линия сборочных узлов занята Время ремонта производственной линии сборочных узлов Время подготовки к работе производственной линии сборочных узлов Время, в течение которого погрузчик занят Время ремонта погрузчика Время, в течение которого сборочное устройство занято Время ремонта сборочного устройства Время подготовки к работе сборочного устройства Эмпирическое Эмпирическое Треугольное Эмпирическое Логнормальное Вейбулла Логнормальное Равномерное ТЗ.6.4. Проверка достоверности и адекватности модели Проверка достоверности имитационной компьютерной программы выполнялась в такой последовательности. ♦ Осуществление поэтапного программирования и отладки программы. 4- Использование интерактивного отладчика с целью установления правильно- сти каждого пути в программе. 4 Проверка достоверности выходных результатов модели. 4 Сравнение итоговой модельной статистики для значений, которые были сге- нерированы из входного распределения вероятностей, с реальными данными итоговой статистики. Кроме того, было проведено еще две «окончательные» проверки достоверности. По реальным данным среднего времени, в течение которого линия занята, и сред- него времени ремонта можно было вычислить теоретическую производительность (см. раздел 13.4.2) каждой линии. Теоретическая производительность и эффек- тивность, установленная при моделировании (для сценария 1 в табл. 13.16), при- ведены в табл. 13.14. Как видите, сравниваемые значения производительности оказались близкими. Следовательно, программа для производственных линий сбо- рочных узлов написана правильно.
790 Глава 13. Моделирование производственных систем При использовании значений производительности модели из табл. 13.14 и по- казателей трех смен сборочного устройства оказалось возможным вычислить тео- ретическую производительность сборочного устройства, равную 0,643. Произво- дительность сборочного устройства, определенная с помощью имитационной модели, составила 0,630. Полученные близкие значения производительности ука- зывают на то, что программа для сборочного устройства написана правильно. Адекватность имитационной модели проверялась, чтобы установить, насколь- ко точно имитационная модель представляет реальную систему. Для проверки адекватности модели выполнены следующие процедуры. 4 Все модельные допущения были пересмотрены и согласованы с персоналом компании. 4- Различные наборы данных (например, время, в течение которого линия заня- та, для обеих сборочных линий) для одного и того же источника случайности проверены на однородность и объединены в том случае, если это было умест- но (см. раздел 6.13). 4- С помощью методов, описанных в главе 6, проверено, правильно ли подобра- ны все распределения вероятностей (например, логнормальное). Поскольку какая-то часть системы в конкретный момент времени может не су- ществовать, полностью подтвердить адекватность имитационной модели невоз- можно. Однако создание подобной существующей системе имитационной модели и сравнение модельных и реальных выходных данных часто оказывается наиболее удачным из доступных методов проверки адекватности модели. В нашем случае сборочные линии к началу моделирования уже существовали и функционировали в действительности, тогда как остальная часть системы находилась в стадии про- ектирования. В табл. 13.15 сравнивается реальная и модельная эффективность каждой производственной линии. Значения реальной эффективности получены исходя из системных выходных данных, которые были указаны в отчете компании, но не использовались при создании модели. (Значения теоретической эффектив- ности, представленные в табл. 13.14, получены на основе реальных системных входных данных.) Согласованность значений эффективности, которые приведены в табл. 13.15, подтверждает адекватность модели производственных линий. Таблица 13.14. Проверка достоверности путем сравнения значений эффективности для сборочных линий Линия Теоретическая эффективность Модельная эффективность 1 0,732 0,741 2 0,724 0,727 Таблица 13.15. Проверка адекватности путем сравнения значений эффективности для сборочных линий Линия Реальная эффективность Модельная эффективность 1 0,738 0,741 2 0,746 0,727
13.6. Анализ работы предприятия, производящего металлические детали 791 13.6.5. Результаты имитационных экспериментов Сначала мы смоделировали семь различных сценариев (проектов системы), кото- рые описаны в табл. 13.16. В каждом из этих сценариев использовалось 3000 кон- тейнеров, а для управления автопогрузчиками применялись следующие правила назначения приоритетов, определенные компанией. 1. Пустые контейнеры перемещаются к погрузчикам. 2. Полные контейнеры забираются от погрузчиков. 3. Полные контейнеры перемещаются к сборочному устройству. 4. Пустые контейнеры забираются от сборочного устройства. Таблица 13.16. Сценарии начальных имитационных прогонов Сценарий сборочного устройства Автопогрузчики Размеры очередей Смены работы 1 3 2 3 2 3 2 2 3 2 2 3 4 3 1 3 5 3 3 3 6 3, 2 (по выходным) 2 3 7 3 2 2 (все 7 дней) Для каждого сценария выполнено пять независимых имитационных прогонов продолжительностью 23 недели, причем в 3-недельный переходный период стати- стика не собиралась. Продолжительность переходного периода работы определя- ли по графику среднего числа пустых контейнеров (в ходе пяти прогонов) с шагом времени 1 ч (рис. 13.14); изначально все контейнеры были пустыми. Такой стоха- стический процесс для пустых контейнеров не имеет установившегося распреде- ления в сценариях 1-6, поскольку сборочное устройство не работает по выходным дням. А что происходит в сценарии 7 (см. задачу 13.25)? Результаты семи наборов имитационных прогонов (усредненные по пяти про- гонам) представлены в табл. 13.17. Производительность (число деталей в неделю) в сценарии 2 (две смены) значительно ниже, чем в сценарии 1 (три смены). Кроме того, в сценарии 2 велика доля времени, в течение которого погрузчики простаива- ют без работы. Это связано с нехваткой пустых контейнеров в сценарии 2 из-за не- достаточной продолжительности работы сборочного устройства. В сценарии 3 производительность опять-таки ниже, чем в сценарии 1, а также велика доля времени, в течение которого сборочное устройство заблокировано. Это вызвано отсутствием свободных автопогрузчиков, убирающих пустые контейнеры с кон- вейера сборочного устройства, — причина заключается в том, что выбрано неопти- мальное правило назначения приоритетов (то есть самый низкий приоритет имеет перемещение контейнеров от сборочного устройства (ср. табл. 13.19). Обратите внимание, что очереди, размер которых равен 1 (сценарий 4), вызывают некоторое снижение производительности. Наконец, большие доли времени, в течение кото- рого автопогрузчики бездействуют (см. табл. 13.17), связаны с периодами бездея- тельности погрузчиков и сборочного устройства.
792 Глава 13. Моделирование производственных систем Время, ч Рис. 13.14. Среднее число пустых контейнеров (в ходе пяти прогонов), определенное с шагом времени 1 ч для сценария 1 Таблица 13.17. Результаты начальных имитационных прогонов Сценарий Среднее число пустых контейнеров Число деталей в неделю Простой погрузчика без работы Блокировка сборочного устройства Бездействие автопогрузчиков 1 1229 15 019 0,000 0,001 0,370 2 241 И 405 0,157 0,001 0,489 3 442 13 109 0,050 0,133 0,210 4 1218 14 666 0,001 0,001 0,381 5 1233 15 050 0,000 0,001 0,386 6 1234 15 050 0,000 0,001 0,317 7 1123 15 079 0,000 0,001 0,369 После представления описания системы и результатов моделирования почти 20 работникам компании и директору предприятия, было принято решение смоде- лировать шесть дополнительных сценариев, приведенных в табл. 13.18. В каждом из этих сценариев размеры очередей равнялись 2, сборочное устройство работало в три смены, а число и продолжительность прогонов остались прежними. Таблица 13.18. Сценарии второго набора имитационных прогонов Сценарий Число контейнеров Автопогрузчики 8 2750 3 9 2500 3 10 2250 3 11 2000 3 12 1750 3 13 3000 2* * Правило управления работой автопогрузчиков таково: ближайшие контейнеры перемещаются в пер- вую очередь.
13.6. Анализ работы предприятия, производящего металлические детали 793 Результаты моделирования этих сценариев (а также сценария 1, представленно- го в табл. 13.17) отражены в табл. 13.19. Как следует из данных таблицы, произво- дительность существенно не меняется тогда, когда число контейнеров находится в диапазоне от 2250 до 3000. Это видно на рис. 13.15, где производительность пред- ставлена как функция числа контейнеров. Обратите также внимание на то, что правило управления работой автопогрузчиков, по которому сначала перемещают- ся ближайшие контейнеры (сценарий 13), дает лучшие результаты, чем исходное правило (сравните сценарии 13 и 3). Таблица 13.19. Результаты имитационных прогонов второго набора Сценарий Среднее число пустых контейнеров Число деталей в неделю Простой погрузчика без работы Блокировка сборочного устройства Бездействие автопогрузчиков 1 1229 15 019 0,000 0,001 0,370 8 941 14 959 0,006 0,001 0,379 9 640 14 798 0,014 0,001 0,384 10 402 14 106 0,053 0,001 0,411 И 209 И 894 0,192 0,000 0,487 12 80 8 758 0,374 0,000 0,597 13 1410 14 306 0,005 0,002 0,265 Рис. 13.15. Производительность (число деталей в неделю) как функция числа контейнеров
794 Глава 13. Моделирование производственныхсистем 13.6.6. Выводы и полученные преимущества Исходя из представленных выше результатов моделирования, после нескольких совещаний с представителями компании-клиента, были сделаны следующие вы- воды по проекту. 4 Компания, вероятно, приобретет 2250, а не 3000 контейнеров, как предполага- лось вначале. 4- Необходимо организовать работу сборочного устройства в три смены (с поне- дельника по пятницу). 4 С понедельника по пятницу требуется два или три автопогрузчика (нужны дополнительные исследования), а в субботу и воскресенье — два. 4 На входах очередей к автопогрузчикам и очередей сборочного устройства должно быть установлено по два контейнера. 4 Размер очередей на выходах автопогрузчиков должен равняться двум. 4 При выполнении вышеуказанных условий система может достичь желаемой производительности. Изучение системы посредством имитационного моделирования дало ряд пре- имуществ. Прежде всего, перед постройкой предприятия, компания получила подтверждение того, что предлагаемая схема работы автопогрузчиков, склада и сборочного устройства действительно позволит удовлетворить требования к про- изводительности. Если бы не было выполнено исследование системы посредством моделирования и после ее установки была обнаружена нехватка ресурсов, стои- мость модификации системы могла бы оказаться весьма значительной. Компания, вероятно, приобретет 2250, а не 3000 контейнеров, как предполага- лось изначально, поскольку производительность в сценариях 1,8,9 и 10 удовлет- воряет предполагаемому спросу на товар. Учитывая то, что один контейнер стоит 400 долларов, экономия составит 300 000 долларов. Кроме того, каждый контей- нер занимает 20,3 квадратных фута площади, а компания предполагает арендовать помещение стоимостью 15 долларов за 1 квадратный фут в год. Поэтому, если устанавливать на 750 контейнеров меньше, на аренде помещения будет сэконом- лено 228 375 долларов в год. Таким образом, в целом за первый год экономия составит 528 375 долларов. Задачи 13.1. Докажите, что в системе из примера 13.4 механический станок для обработки деталей при отсутствии поломок имеет достаточную производительность. 13.2. Допустим, продолжительность работы станка составляет Uu U2,..., а длитель- ность простоев - Dlt D2,..., как описано в разделе 13.4.2. Будет ли абсолютно справедливым предположение, что величины UiUDjявляются независимыми и одинаково распределенными? Обоснуйте свой ответ. 13.3. Будет ли абсолютно справедливым для станка из задачи 13.2 допущение о том, что все величины U{ и D{ являются независимыми? Обоснуйте свой ответ.
Задачи 795 13.4. Рассмотрим станок, непрерывно работающий до тех пор, пока на нем не за- клинит деталь, то есть станок, который никогда не простаивает в ожидании деталей и никогда не бывает заблокирован. Предположим, что деталь может заклинить на станке с вероятностью р независимо от всех остальных деталей. Каково распределение вероятностей числа деталей, изготовленных перед тем, как заклинит первую деталь, и каково его среднее? Таким образом, если для реального станка известно реальное среднее число деталей, произведенных перед тем, как заклинит деталь, вышеупомянутую модель можно использо- вать, чтобы определить вероятность р для имитационной модели. 13.5. Рассмотрим метод, при использовании которого для моделирования участ- ков цикла работы станка применяется календарное время (см. раздел 13.4.2). Предположим, что станок приходит в неисправность в период, когда он про- стаивает в ожидании деталей (возможно, в это время он работал на холостом ходу). Как вы считаете, поломка будет обнаружена немедленно (и будет на- чат ремонт) или все же тогда, когда поступит очередная деталь? Допустим, что наличие ремонтников значения не имеет. 13.6. Рассмотрим станок, который работает в течение 24 ч 7 дней в неделю. Нам из- вестны значения времени работы Ub U2,... и времени простоя из-за поломки Db D2,..., не соответствующие значениям времени, когда станок занят, Bit В2, .... Для простоты предположим, что для величин подходит экспоненци- альное распределение. Известно среднее число деталей, изготовляемых за 8-часовую смену, а также среднее время обработки деталей. Допустим, что экспоненциальное распределение также является хорошей моделью для ве- личин Bt. Какое среднее значение следует использовать для модели поломок станка исходя из времени, в течение которого станок занят? 13.7. Рассмотрим станок, который никогда не простаивает в ожидании деталей и никогда не бывает заблокирован. Предположим, обслуживающий персонал определил, что эффективность работы станка е - 0,9 и что в течение 8-часо- вой смены он, как правило, приходит в неисправность дважды. Какие значе- ния £(17) и £(£)) следует использовать для моделирования этого станка? 13.8. Предположим, что станок приходит в неисправность при поломке одного из двух независимых компонентов. Опишите, как бы вы моделировали поломки станка для каждого из двух следующих случаев: а) продолжительность работы каждого станка основывается на времени за- нятости; б) продолжительность работы каждого станка основывается на календарном времени. 13.9. Рассмотрим станок, который никогда не простаивает в ожидании деталей и никогда не бывает заблокирован. Он приходит в неисправность при полом- ке компонента А либо при поломке компонента Б. Эти компоненты приходят в неисправность независимо друг от друга; один компонент не «стареет», по- ка другой компонент поломан. Среднее время, в течение которого станок за- нят, до поломки и среднее время ремонта (когда станок простаивает из-за по- ломки) для этих компонентов приведено в таблице.
796 Глава 13. Моделирование производственных систем Компонент Среднее время, в течение которого станок занят, ч Среднее время ремонта, ч А 46,5 1,5 Б 250,0 6,0 Вычислите эффективность работы станка е. 13.10. Используйте другой метод для вычисления эффективности работы станка из задачи 13.9, если время занятости и среднее время ремонта станка рас- пределены экспоненциально. 13.11. Рассмотрим станок, у которого бывают поломки двух типов. Тип 1 — это мелкая поломка, исправляемая оператором станка; для нее время ремонта (в течение которого станок простаивает из-за поломки) невелико. Тип 2 — это серьезная поломка, для устранения которой нужен специалист по тех- ническому обслуживанию; время ремонта будет продолжительным. Пред- положим, что для станка доступно п наблюдений о времени ремонта; из них имеют тип i (где i = 1, 2) при щ + п2 = п. Определите два возможных ме- тода представления времени ремонта в имитационной модели. Какое неяв- ное допущение вы примете относительно соотношения между Ц и £), (оно в этом случае равно /?,)? 13.12. Смоделируйте систему по проекту 3 из раздела 13.5, внеся изменение, в со- ответствии с которым свободный автопогрузчик будет находиться на стан- ции 6 (приема-отправки), то есть свободный автопогрузчик отправляется на станцию 6 и ожидает следующую заготовку. Какой из двух проектов сис- темы предпочтительнее? 13.13. Рассмотрим производственную систему, описанную в разделе 13.5. Почему здесь среднее совокупное время обслуживания, усредненное по всем рабо- чим местам равно 0,77? 13.14. С помощью моделирования определите необходимое число станков для ка- ждой рабочей станции и необходимое число автопогрузчиков в производст- венной системе из раздела 13.5 (исходный вариант), если каждая рабочая станция имеет бесконечную очередь на выход, то есть станки не бывают за- блокированы. 13.15. Рассмотрим производственную систему из раздела 13.5. Почему ожидаемая производительность не может превышать 120 заготовок за 8-часовой день. 13.16. Каких компонентов не хватает в аналитических вычислениях из разде- ла 13.5, чтобы определить число станков для каждой станции? Подсказка: Всегда ли станок может обработать ожидающую деталь? 13.17. Каких компонентов не хватает в аналитических вычислениях из разде- ла 13.5, чтобы определить число автопогрузчиков? 13.18. Почему график, изображенный на рис. 13.9, оказался приближенно линей- ным? Определите выражение для наклона.
Задачи 797 13.19. Как вы считаете, на что будет похоже скользящее среднее для значений про- изводительности в час системы по проекту 1 (раздел 13.5)? Подобный тип графика вы найдете на рис. 13.12. 13.20. Почему в системе по проекту 2 (раздел 13.5) уровень перегрузки станции 5 возрос? 13.21. В системе по проекту 3 (раздел 13.5) доля автопогрузчиков, которые пере- мещаются с грузом, равна 0,443 (три разряда после запятой). Значит, сред- нее число автопогрузчиков, перемещающихся с грузом, равно 0,886. Не ка- жется ли вам это число знакомым? 13.22. Предположим, что в системе по проекту 3 (раздел 13.5) заготовки поступа- ют через каждые 4 мин. Интенсивность поступления все еще равна 15 заго- товок в час. Какой будет ожидаемая производительность: меньше 120, рав- ной 120, больше 120? Что произойдет с ожидаемым временем пребывания заготовки в системе? 13.23. Предположим, что в системе по проекту 3 (интервалы между поступлением заготовок распределены экспоненциально) время обслуживания заготовок является константой, равной среднему времени обслуживания в исходной задаче. Пусть время обслуживания заготовки для работы типа 1 на стан- ции 3 всегда равно 0,25 ч. Как ожидаемая производительность и ожидаемое время в системе соотносится с соответствующими показателями работы в исходной версии проекта 3? 13.24. Выполните план факторного эксперимента с дробными репликами при раз- решающей способности IV (см. раздел 12.3.1) для производственной систе- мы из раздела 13.5 со следующими факторами и уровнями. Фактор — + Станки на станции 1 4 5 Станки на станции 2 1 2 Станки на станции 3 4 5 Станки на станции 4 2 3 Станки на станции 5 2 3 Автопогрузчики 1 2 Логика управления Кратчайшее FIFO автопогрузчиками расстояние первый 13.25. Имеет ли стохастический процесс для пустых контейнеров, рассмотренный в разделе 13.6.5, установившееся распределение в сценарии 7? Обоснуйте свой ответ.
Приложение Таблица П.1. Критические точки tVT для t-распределения с v степенями свободы и гу для стандартного нормального распределения У - P(TV < tvy), где Tv — случайная величина, имеющая t-распределение с v степенями свободы; в последней строке (v - оо) даны нормальные критические точки, удовлетво- ряющие равенству у - P(Z г,), где Z — стандартная нормальная случайная величина V V 0,6000 0,7000 0,8000 0,9000 0,9333 0,9500 0,9600 0,9667 1 0,325 0,727 1,376 3,078 4,702 6,314 7,916 9,524 2 0,289 0,617 1,061 1,886 2,456 2,920 3,320 3,679 3 0,277 0,584 0,978 1,638 2,045 2,353 2,605 2,823 4 0,271 0,569 0,941 1,533 1,879 2,132 2,333 2,502 5 0,267 0,559 0,920 1,476 1,790 2,015 2,191 2,337 6 0,265 0,553 0,906 1,440 1,735 1,943 2,104 2,237 7 0,263 0,549 0,896 1,415 1,698 1,895 2,046 2,170 8 0,262 0,546 0,889 1,397 1,670 1,860 2,004 2,122 9 0,261 0,543 0,883 1,383 1,650 1,833 1,973 2,086 10 0,260 0,542 0,879 1,372 1,634 1,812 1,948 2,058 И 0,260 0,540 0,876 1,363 1,621 1,796 1,928 2,036 12 0,259 0,539 0,873 1,356 1,610 1,782 1,912 2,017 13 0,259 0,538 0,870 1,350 1,601 1,771 1,899 2,002 14 0,258 0,537 0,868 1,345 1,593 1,761 1,887 1,989 15 0,258 0,536 0,866 1,341 1,587 1,753 1,878 1,978 16 0,258 0,535 0,865 1,337 1,581 1,746 1,869 1,968 17 0,257 0,534 0,863 1,333 1,576 1,740 1,862 1,960 18 0,257 0,534 0,862 1,330 1,572 1,734 1,855 1,953 19 0,257 0,533 0,861 1,328 1,568 1,729 1,850 1,946 20 0,257 0,533 0,860 1,325 1,564 1,723 1,844 1,940 21 0,257 0,532 0,859 1,323 1,561 1,721 1,840 1,935 22 0,256 0,532 0,858 1,321 1,558 1,717 1,835 1,930 23 0,256 0,532 0,858 1,319 1,556 1,714 1,832 1,926 24 0,256 0,531 0,857 1,318 1,553 1,711 1,828 1,922 25 0,256 0,531 0,856 1,316 1,551 1,708 1,825 1,918 26 0,256 0,531 0,856 1,315 1,549 1,700 1,822 1,915 27 0,156 0,531 0,855 1,314 1,547 1,703 1,819 1,912 28 0,256 0,530 0,855 1,313 1,546 1,701 1,817 1,909 29 0,256 0,530 0,854 1,311 1,544 1,699 1,814 1,906 30 0,256 0,530 0,854 1,310 1,543 1,697 1,812 1,904 40 0,255 0,529 0,851 1,303 1,532 1,684 1,796 1,886 50 0,255 0,528 0,849 1,299 1,526 1,676 1,787 1,875 75 0,254 0,527 0,846 1,293 1,517 1,665 1,775 1,861 100 0,254 0,526 0,845 1,290 1,513 1,660 1,769 1,855 00 0,253 0,524 0,842 1,282 1,501 1,645 1,751 1,834
0,9750 0,9800 0,9833 0,9875 0,9900 0,9917 0,9938 0,9950 12,706 15,895 19,043 25,452 31,821 38,342 51,334 63,657 4,303 4,849 5,334 6,205 6,965 7,665 8,897 9,925 3,182 3.4S2 3,738 4,177 4,541 4,864 5,408 5,841 2,776 2,999 3,184 3,495 3,747 3,966 4,325 4,604 2,571 2,757 2,910 3,163 3,365 3,538 3,818 4,032 2,447 2,612 2,748 2,969 3,143- 3,291 3,528 3,707 2,365 2,517 2,640 2,841 2,998 3,130 3,341 3,499 2,306 2,449 2,565 2,752 2,896 3,018 3,211 3,355 2,262 2,398 2,308 2,685 2,821 2,936 3,116 3,250 2,228 2,359 2,465 2,634 2,764 2,872 3,043 3,169 2,201 2,328 2,430 2,593 2,718 2,822 2,985 3,106 2,179 2,303 2,402 2,560 2,681 2,782 2,939 3,055 2,160 2,282 2,379 2,533 2,650 2,748 2,900 3,012 2,145 2,264 2,359 2,510 2,624 2,720 2,868 2,977 2,131 2,249 2,342 .2,490 2,602 2,696 2,841 2,947 2,120 2,235 2,327 2,473 2,583 2,675 2,817 2,921 2,110 2,224 2,315 2,458 2,567 2,657 2,796 2,898 2,101 2,214 2,303 2,445 2,552 2,641 2,778 2,878 2,093 2,205 2,293 2,433 2,539 2,627 2,762 2,861 2,086 2,197 2,285 2,423 2,528 2,614 2,748 2,845 2,080 2,189 2,277 2,414 2,518 2,603 2,735 2,831 2,074 2,183 2,269 2,405 2,508 2,593 2,724 2,819 2,069 2,177 2,263 2,398 2,500 2,584 2,713 2,807 2,064 2,172 2,257 2,391 2,492 2,575 2,704 2,797 2,060 2,167 2,251 2,385 2,485 2,568 2,695 2,787 2,056 2,162 2,246 2,379 2,479 2,561 2,687 2,779 2,052 2,158 2,242 2,373 2,473 2,554 2,680 2,771 2,048 2,154 2,237 2,368 2,467 2,548 2,673 2,763 2,045 2,150 2,233 2,364 2,462 2,543 2,667 2,756 2,042 2,147 2,230 2,360 2,457 2,537 2,661 2,750 2,021 1,123 2,203 2,329 2,423 2,501 2,619 2,704 2,009 2,109 2,188 2,311 2,403 2,479 2,594 2,678 1,992 2,090 2,167 2,287 2,377 2,450 2,562 2,643 1,984 2,081 2,157 2,276 2,364 2,436 2,547 2,626 1,960 2,054 2,127 2,241 2,326 2,395 2,501 2,576
800 Приложение Таблица П.2. Критические точки Xv,T Для распределения «хи-квадрат» с v степенями свободы При больших значениях v используйте приближение для Xv,T из раздела 7.4.1. V Y 0,250 0,500 0,750 0,900 0,950 0,975 0,990 1 0,102 0,455 1,323 2,706 3,841 5,024 6,635 2 0,575 1,386 2,773 4,605 5,991 7,378 9,210 3 1,213 2,366 4,108 6,251 7,815 9,348 11,345 4 1,923 3,357 5,385 7,779 9,488 11,143 13,277 5 2,675 4,351 6,626 9,236 11,070 12,833 15,086 6 3,455 5,348 7,841 10,645 12,592 14,449 16,812 7 4,255 6,346 9,037 12,017 14,067 16,013 18,475 8 5,071 7,344 10,219 13,362 15,507 17,535 20,090 9 5,899 8,343 11,389 14,684 16,919 19,023 21,666 10 6,737 9,342 12,549 15,987 18,307 20,483 23,209 И 7,584 10,341 13,701 17,275 19,675 21,920 24,725 12 8,438 11,340 14,845 18,549 21,026 23,337 26,217 13 9,299 12,340 15,984 19,812 22,362 24,736 27,688 14 10,165 13,339 17,117 21,064 23,685 26,119 29,141 15 11,037 14,339 18,245 22,307 24,996 27,488 30,578 16 11,912 15,338 19,369 23,542 26,296 28,845 32,000 17 12,792 16,338 20,489 24,769 27,587 30,191 33,409 18 13,675 17,338 21,605 25,989 28,869 31,526 34,805 19 14,562 18,338 22,718 27,204 30,144 32,852 36,191 20 15,452 19,337 23,828 28,412 31,410 34,170 37,566 21 16,344 20,337 24,935 29,615 32,671 35,479 38,932 22 17,240 21,337 26,039 30,813 33,924 36,781 40,289 23 18,137 22,337 27,141 32,007 35,172 38,076 41,638 24 19,037 23,337 28,241 33,196 36,415 39,364 42,980 25 19,939 24,337 24,339 34,382 37,652 40,646 44,314 26 20,843 25,336 30,435 35,563 38,885 41,923 45,642 27 21,749 26,336 31,528 36,741 40,113 43,195 46,963 28 22,657 27,336 32,620 37,916 41,337 44,461 48,278 29 23,567 28,336 33,711 39,087 42,557 45,722 49,588 30 24,478 29,336 34,800 40,256 43,773 46,979 50,892 40 33,660 39,335 45,616 51,805 55,758 59,342 63,691 50 42,942 49,335 56,334 63,167 67,505 71,420 76,154 75 66,417 74,334 82,858 91,061 96,217 100,839 106,393 100 90,133 99,334 109,141 118,498 124,342 129,561 135,807
Литература Aaits, E.H.L., and Korst, J.: Simulated Annealing and Boltzmann Machines, John Wiley, New York (1989). Abramowitz, M., and I.A. Stegun, eds.: Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, National Bureau of Standards, Washington, D.C. (1964). Adiri, I., and B. Avi-Itzhak: A Time-Sharing Queue with a Finite Number of Customers, J. Assoc. Comput. Mach., 16:315-323 (1969). Ahrens, J.H., and U. Dieter: Computer Methods for Sampling from the Exponential and Normal Distributions, Commun. Assoc. Comput. Mach., 15:873-882 (1972). Ahrens, J.H., and U. Dieter: Computer Methods for Sampling from Gamma, Beta, Poisson, and Binomial Distributions, Computing, 12:223-246 (1974). Alexopoulos, C., and A.F. Seila: Output Data Analysis, in Handbook of Simulation, J. Banks, ed., John Wiley, New York (1998). Alrefaei, M.H., and S. Andradottir: Discrete Stochastic Optimization via a Modification of the Stochastic Ruler Method, Proc. 1996 Winter Simulation Conference, San Diego, p. 406-411 (1996). Alrefaei, M.H., and S. Andradottir: A Simulated Annealing Algorithm with Constant Temperature for Discrete Stochastic Optimization, Management Sci., 45:748-764 (1999). Anderson, T.W.: The Statistical Analysis of Time Series, John Wiley, New York (1994). Anderson, T.W., and D.A. Darling: A Test of Goodness of Fit, J. Am. Statist. Assoc., 49:765-769 (1954). Andradottir, S.: A Method for Discrete Stochastic Optimization, Management Sci., 41:1946-1961 (1995a). Andradottir, S.: A Stochastic Approximation Algorithm with Varying Bounds, Operations Res., 43: 1037-1048 (1995b). Andradottir, S.: Optimization of the Transient and Steady-state Behavior of Discrete Event Systems, Management Sci., 42:717-737 (1996). Andradottir, S.: A Review of Simulation Optimization Techniques, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 151-158 (1998). Andreasson, I.J.: Antithetic Methods in Queueing Simulations, Technical Report NA 72.58, Department of Computer Science, Royal Institute of Technology, Stockholm (1972). Arnold, B.C.: A Note on Multivariate Distributions with Specified Marginals, J. Am. Statist. Assoc., 62:1460-1461 (1967). Atkinson, A.C.: A Family of Switching Algorithms for the Computer Generation of Beta Random Variables, Biometrika, 66:141-145 (1979a). Atkinson, A.C.: The Computer Generation of Poisson Random Variables, Appl: Statist., 28:29-35 (1979b). Atkinson, A.C.: Recent Developments in the Computer Generation of Poisson Random Variables, Appl. Statist., 28:260-263 (1979c). Atkinson, A.C.: Tests of Pseudo-random Numbers, Appl. Statist, 29:164-171 (1980). Atkinson, A.C., and M.C. Pearce: The Computer Generation of Beta, Gamma, and Normal Random Variables, J. Roy. Statist. Soc., A139:431-448 (1976).
802 Литература Atkinson, А.С., and J. Whittaker: A Switching Algorithm for the Generation of Beta Random Variables with at Least One Parameter Less Than 1, J. Roy. Statist. Soc., A139:462-467 (1976). Atkinson, A.C., and J. Whittaker: The Generation of Beta Random Variables with One Parameter Greater Than and One Parameter Less Than 1, Appl. Statist., 28:90-93 (1979). AutoSimulations, Inc.: AutoMod User's Manual, Version 9.0, Bountiful, Utah (1999a). AutoSimulations, Inc.: AutoSchedAP User's Manual, Version 9.0, Bountiful, Utah (1999b). Averill M. Law & Associates, Inc.: ExpertFit User's Guide, Tucson, Arizona (1999). Avramidis, A.N., and J.R. Wilson: A Splitting Scheme for Control Variates, Operations Res. Letters, 14:187-198 (1993). Avramidis, A.N., and J.R. Wilson: Integrated Variance Reduction Strategies for Simulation, Operations Res., 44:327-346 (1996). Avramidis, A.N., and J.R. Wilson: Correlation-Induction Techniques for Estimating Quantiles in Simulation Experiments, Operations Res., 46: 574-591 (1998). Azadivar, F.: A Tutorial on Simulation Optimization, Proc. 1992 Winter Simulation Conference, Washington, D.C., p. 198-204 (1992). Azadivar, F., J. Shu, and M. Ahmad: Simulation Optimization in Strategic Location of Semi-Finished Products in a Pull-Type Production System, Proc. 1996 Winter Simulation Conference, San Diego, p. 1123-1128 (1996). Back, T.: Evolutionary Algorithms in Theory and Practice: Evolution Strategies, Evolutionary Programming, and Genetic Algorithms, Oxford University Press, New York (1996). Back, T., and H.-P. Schwefel: An Overview of Evolutionary Algorithms for Parameter Optimization, Evolutionary Computation, 1:1-23 (1993). Bagrodia, R.L.: Perils and Pitfalls of Parallel Discrete-Event Simulation, Proc. 1996 Winter Simulation Conference, San Diego, p. 136-143 (1996). Balci, O.: Verification, Validation and Testing, in Handbook of Simulation, J. Banks, ed., John Wiley, New York (1998). Balci, O., and R.G. Sargent: A Methodology for Cost-Risk Analysis in the Statistical Validation of Simulation Models, Commun. Assoc. Comput. Mach., 24:190-197 (1981). Balci, O., and R.G. Sargent: Validation of Multivariate Response Trace-Driven Simulation Models, Performance 83, Proc. 9th International Symposium on Computer Performance Modelling, Measurement, and Evaluation, A.K. Agrawada and S.K. Tripathi, eds., North-Holland, Amsterdam, p. 309-323 (1983). Balci, O., and R.G. Sargent: Validation of Simulation Models Via Simultaneous Confidence Intervals, Am. J. Math. Management Sci., 4: 375-406 (1984). Banks, J.: Interpreting Simulation Software Checklists, OR/MS Today, 23: 74-78 (May 1996). Banks, J., J.S. Carson, and B.L. Nelson: Discrete -Event System Simulation, 2d ed., Prentice-Hall, Upper Saddle River, New Jersey (1996). Barnett, V: Probability Plotting Methods and Order Statistics, Appl. Statist., 24:95-108 (1975). Bartels, R.: The Rank Version of von Neumann's Ratio Test for Randomness, J. Am. Statist. Assoc., 77:40-46(1982). Barton, R.R.: Metamodels for Simulation Input-Output Relations, Proc. 1992 Winter Simulation Conference, Washington, D.C., p. 289-299 (1992). Barton, R.R.: Design of Experiments for Fitting Subsystem Metamodels, Proc. 1997 Winter Simulation Conference, Atlanta, p. 303-310 (1997).
Литература 803 Barton, R.R.: Simulation Metamodels, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 167-174 (1998). Barton, R.R., and J.S. Ivey, Jr.: Nelder-Mead Simplex Modifications for Simulation Optimization, Management Sci., 42: 954-973 (1996). Bauer, K.W.: Control Variate Selection for Multiresponse Simulation, Ph.D. Dissertation, School of Industrial Engineering, Purdue University, West Lafayette, Indiana (1987). Bauer, K.W., and J.R. Wilson: Control-Variate Selection Criteria, Naval Res. Legist, 39: 307-321(1992). Bays, C., and S.D. Durham: Improving a Poor Random Number Generator, Assoc. Comput. Mach. Trans. Math. Software., 2: 59-64 (1976). Bechhofer, R.E., C.W. Dunnett, D. Goldsman, and M. Hartmann: A Comparison of thePerformances of Procedures for Selecting the Normal Population Having the Largest Mean when the Populations Have a Common Unknown Variance, Commun. Statist., B19:971-1006 (1990). Bechhofer, R.E., and D. Goldsman: Truncation of the Bechhofer-Kiefer-Sobel SequentialProcedure for Selecting the Multinomial Event Which Has the Largest Probability (II):Extended Tables and Improved Procedure, Commun. Statist.—Simulation and Computation,15: 829-851 (1986). Bechhofer, R.E., TJ. Santner, and D. Goldsman: Design and Analysis for Statistical Selection, Screening and Multiple Comparisons, John Wiley, New York (1995) Beckman, R.J., and G.L. Tietjen: Maximum Likelihood Estimation for the Beta Distribution, J. Statist. Comput. Simul., 7: 253-258 (1978). Bertsekas, D.P., and R. Gallager: Data Networks, 2d ed., Prentice-Hall, Englewood Cliffs, New Jersey (1992). Best, DJ, and D.E. Roberts: The Percentage Points of the x2 Distribution, Appl. Statist., 24:385-388 (1975). Bettonvil, B., and J.P.C. Kleijnen: Searching for Important Factors in Simulation Models with Many Factors: Sequential Bifurcation, Eur.J. Operational Res., 96:180-194 (1997). Beyer, W.A., R.B. Roof, and D. Williamson: The Lattice Structure of Multiplicative Congruential Pseudo-random Vectors, Math. Comput., 25:345-363 (1971). Bhattacharjee, G.P.: Algorithm AS32: The Incomplete Gamma Integral, Appl. Statist., 19:285-287 (1970). Bickel, P.J., and K.A. Doksum: Mathematical Statistics: Basic Ideas and Selected Topics, Prentice-Hall, Upper Saddle River, New Jersey (1977). Biles, W.E.: Experimental Design in Computer Simulation, Proc. 1979 Winter Simulation Conference, San Diego, p. 3-9 (1979). Biles, W.E., and JJ. Swain: Mathematical Programming and the Optimization of Computer Simulations, Math. Program. Studies, 11: 189-207 (1979). Biles, W.E., and J.J. Swain: Optimization and Industrial Experimentation, John Wiley, New York (1980). Billingsley, P.: Convergence of Probability Measures, John Wiley, New York (1968). Billingsley, P., D.J. Croft, D.V. Huntsberger, and CJ. Watson: Statistical Inference for Management and Economics, 3d ed., Allyn & Bacon, Boston (1986). Bischak, D.P., W.D. Kelton, and S.M. Pollack: Weighted Batch Means for Confidence Intervals in Steady-State Simulations, Management Sci., 39:1002-1019 (1993). Bishop, C.M.: Neural Networks For Pattern Recognition, Oxford University Press, New York (1995).
804 Литература Blum, L., M. Blum, and M. Shub: A Simple Unpredictable Pseudo-random Number Generator, SIAM J. Comput., /5:364-383 (1986). Boesel, J.: Search and Selection for Large-Scale Stochastic Optimization, Ph.D. Dissertation, Department of Industrial Engineering and Management Sciences, Northwestern University, Evanston, Illinois (1999). Bosten, N.E., and E.L. Battiste: Remark on Algorithm 179, Commun. Assoc. Comput. Mach., 17: 156-157 (1974). Bowden, R.O.: The Spectrum of Simulation Software, HE Solutions, 30:44-46 (May 1998). Bowden, R.O., and J.D. Hall: Simulation Optimization Research and Development, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 1693-1698 (1998). Box, G.E.P., and N.R. Draper: Empirical Model-Building and Response Surfaces, John Wiley, New York (1987). Box, G.E.P., W.G. Hunter, and J.S. Hunter: Statistics for Experimenters: An Introduction to Design, Data Analysis, and Model Building, John Wiley, New York (1978). Box, G.E.P., G.M. Jenkins, and G.C. Reinsei: Time Series Analysis: Forecasting and Control, 3d ed., Prentice Hall, Englewood Cliffs, New Jersey (1994). Box, G.E.P., and M.E. Muller: A Note on the Generation of Random Normal Deviates, Ann. Math. Statist, 29:610-611 (1958). Boyle, C.R., and W.S. Shin: An Interactive Multiple-Response Simulation Optimization Method, HE Trans., 28:453-462 (1996). Brady, T., and B. McGarvey: Heuristic Optimization Using Computer Simulation: A Study of Staffing Levels in a Pharmaceutical Manufacturing Laboratory, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 1423-1428 (1998). Bratley, P., B.L. Fox, and L.E. Schrage: A Guide to Simulation, 2d ed., Springer-Verlag, New York (1987). Braun, M.: Differential Equations and Their Applications, Applied Mathematical Sciences, Vol. 15, Springer-Verlag, New York (1975). Breiman, L.: Statistics: With a View Toward Applications, Houghton Mifflin, Boston (1973). Brennan, R.W., and P. Rogers: Stochastic Optimization Applied to a Manufacturing System Operation Problem, Proc. 1995 Winter Simulation Conference, Washington, D.C., p. 857-864 (1995). Bright, H.S., and R.L. Enison: Quasi-random Number Sequences from a Long-Period TLP Generator with Remarks on Application to Cryptography, Comp. Surveys, 11:357-370 (1979). Brown, M., and H. Solomon: On Combining Pseudorandom Number Generators, Ann. Statist., 7: 691-695 (1979). Brown, R.: Calendar Queues: A Fast 0(1) Priority Queue Implementation for the Simulation Event Set Problem, Commun. Assoc. Comput. Mach., 31:1220-1227 (1988). Burt, J.M., Jr., and M.B. Garman: Conditional Monte Carlo: A Simulation Technique for Stochastic Network Analysis, Management Sci., 18: 207-217 (1971). Burt, J.M., Jr., D.P. Gaver, and M. Perlas: Simple Stochastic Networks: Some Problems and Procedures, Naval Res. Legist. Quart., 17:439-459 (1970). Buss, A.H.: Some Extensions and Limitations of Frequency Domain Experiments, Proc. 1988 Winter Simulation Conference, San Diego, p. 549-557 (1988). Buss, A.H.: Modeling with Event Graphs, Proc. 1996 Winter Simulation Conference, San Diego, p. 153-160 (1996).
Литература 805 CACI Products Company: MODSIM III User Manual, La Jolla, California (1997). CACI Products Company: SIMPROCESS User's Manual, Release 2.1, La Jolla, California (1998). CACI Products Company: COMNETIII Reference Manual, Release 2.1, La Jolla, California (1999). Cario, M.C., and B.L. Nelson: Autoregressive to Anything: Time-Series Input Processes for Simulation, Operations Res. Letters, 19:51-58 (1996). Cario, M.C., and B.L. Nelson: Modeling and Generating Random Vectors with Arbitrary Marginal Distributions and Correlation Matrix, Technical Report, Department of Industrial Engineering and Management Sciences, Northwestern University, Evanston, Illinois (1997). Cario, M.C., and B.L. Nelson: Numerical Methods for Fitting and Simulating Autoregressive-To-Anything Processes, INFORMS J. Comput., 10:72-81 (1998). Carothers, C.D., B. Topol, R.M. Fujimoto, and V. Sunderam: Visualizing Parallel Simulations in Network Computing Environments: A Case Study, Proc. 1997 Winter Simulation Conference, Atlanta, p. 110-117 (1997). Carson, J.S.: Variance Reduction Techniques for Simulated Queueing Processes, Technical Report 78-8, Department of Industrial Engineering, University of Wisconsin, Madison (1978). Carson J.S.: Convincing Users of Model’s Validity Is Challenging Aspect of Modeler's Job, Ind. Eng., 18:74-85 Qune 1986). Carson, J.S., and A.M. Law: Conservation Equations and Variance Reduction in Queueing Simulations, Operations Res., 28:535-546 (1980). Carson, J.S., N. Wilson, D. Caroll, and C.H. Wysocki: A Discrete Simulation Model of a Cigarette Fabrication Process, Proc. Twelfth Modeling and Simulation Conference, University of Pittsburgh, p. 683-689 (1981). Carson, Y., and A. Maria: Simulation Optimization: Methods and Applications, Proc. 1997 Winter Simulation Conference, Atlanta, p. 118-126 (1997). Carter, G., and E.J. Ignall: Virtual Measures: A Variance Reduction Technique for Simulation, Management Sci., 21:607-616 (1975). Chandra, M., N.D. Singpurwalla, and M. A. Stephens: Kolmogorov Statistics for Tests of Fit for the Extreme-Value and Weibull Distributions,/. Am. Statist. Assoc., 76: 729-731 (1981). Chandrasekaran, U., and S. Sheppard: Discrete Event Distributed Simulation—A Survey, Proc.Conference on Methodology and Validation, Orlando, p. 32-37 (1987). Chandy, K.M., and J. Misra: Distributed Simulation: A Case Study in Design and Verification of Distributed Programs, IEEE Trans. Software Eng., SE-5:440-452 (1979). Chandy, K.M., and J. Misra: Asynchronous Distributed Simulation via a Sequence of Parallel Computations, Commun. Assoc. Comput. Mach., 24:198-206 (1981). Chandy, K.M., and J. Misra: Distributed Deadlock Detection, Assoc. Comput. Mach. Trans. Computer Systems, 1: 144-156(1983). Charnes, J.S.: Analyzing Multivariate Output, Proc. 1995 Winter Simulation Conference, Washington, D.C., p. 201-208 (1995). Chen, В.-C., and R.G. Sargent: Using Standardized Time Series to Estimate the Difference between Two Stationary Stochastic Processes, Operations Res., 35:428-436 (1987). Chen, E.J., P. L’Ecuyer, and W.D. Kelton: Seed and Stream Management for Multiple Recursive Random Number Generators, Technical Report, Department of Quantitative Analysis and Operations Management, University of Cincinnati (1999). Chen, H., and Y. Asau: On Generating Random Variates from an Empirical Distribution, AHE Trans., 6:163-166 (1974).
806 Литература Chen, Р.: On Selecting the Best of k Systems: An Expository Survey of Subset-Selection Multinomial Procedures, Proc. 1988 Winter Simulation Conference, San Diego, p. 440-444 (1988). Cheng, R.C.H.: The Generation of Gamma Variables with Non-integral Shape Parameter, Appl. Statist., 26:71-75 (1977). Cheng, R.C.H.: Generating Beta Variates with Nonintegral Shape Parameters, Commun. Assoc. Comput. Mach., 21: 317-322 (1978). Cheng, R.C.H.: The Use of Antithetic Variates in Computer Simulations, J. Operational Res. Soc., 33:229-237 (1982). Cheng, R.C.H.: Antithetic Variate Methods for Simulation of Processes with Peaks and Troughs, Em J. Operational Res., 15:227-236 (1984). Cheng, R.C.H.: Searching for Important Factors: Sequential Bifurcation Under Uncertainty, Proc. 1997 Winter Simulation Conference, Atlanta, p. 275-280 (1997). Cheng, R.C.H., and N.A.K. Amin: Estimating Parameters in Continuous Univariate Distributions with a Shifted Origin, J. Roy. Statist. Soc. B45: 394-403 (1983). Cheng, R.C.H., and G.M. Feast: Some Simple Gamma Variate Generators, Appl. Statist., 28: 290-295 (1979). Cheng, R.C.H., and G.M. Feast: Control Variates with Known Mean and Variance,/ Operational Res. Soc., 31:51-56 (1980). Cheng, R.C.H., and J.P.C. Kleijnen: Improved Design of Queueing Simulation Experiments with Highly Heteroscedastic Responses, Operations Res., 47 (1999). Cheng, R.C.H., and J.D. Lamb: Interactive Implementation of Optimal Simulation Experiment Designs, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 707-712 (1998). Chernoff, H., and E.L. Lehmann: The Use of Maximum Likelihood Estimates in x Tests for Goodness of Fit, Ann. Math. Statist., 25: 579-586 (1954). Chick, S.E.: Selecting the Best System: A Decision-Theoretic Approach, Proc. 1997 Winter Simulation Conference, Atlanta, p. 326-333 (1997). Chick, S .E., and K. Inoue: Sequential Allocations that Reduce Risk for Multiple Comparisons, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 669-676 (1998). Choi, S.C., and R. Wette: Maximum Likelihood Estimation of the Parameters of the Gamma Distribution and their Bias, Technometrics, 11:683-690 (1969). Chow, Y.S., and H. Robbins: On the Asymptotic Theory of Fixed-Width Sequential Confidence Intervals for the Mean, Ann. Math. Statist, 36:457-462 (1965). Chung, K.L.: A Course in Probability Theory, 2d ed., Academic Press, New York (1974). Cinlar, E.: Introduction to Stochastic Processes, Prentice-Hall, Englewood Cliffs, New Jersey (1975). Clark, G.M., and W. Yang: A Bonferroni Selection Procedure when Using Common Random Numbers with Unknown Variances, Proc. 1986 Winter Simulation Conference, Washington, B.C., p. 313-315 (1986). Cohen, A.C., and BJ. Whitten: Estimation in the Three-Parameter Lognormal Distribution, J. Am. Statist. Assoc., 75:399-404 (1980). Comfort, J.C.: A Taxonomy and Analysis of Event Set Management Algorithms for Discrete Event Simulation, Proc. 12th Annual Simulation Symposium, p. 115-146 (1979). Comfort, J.C.: The Simulation of a Microprocessor-Based Event Set Processor, Proc. 14th Annual Simulation Symposium, p. 17-33 (1981). Comfort, J.C.: The Simulation of a Master-Slave Event-Set Processor, Simulation, 42:117-124 (1984).
Литература 807 Conover, W.J.: Practical Nonparametric Statistics, 2d ed., John Wiley, New York (1980). Cook, L.S.: Factor Screening of Multiple Responses, Proc. 1992 Winter Simulation Conference, Washington, D.C., p. 174-180 (1992). Coveyou, R.R., and R.D. MacPherson: Fourier Analysis of Uniform Random Number Generators, J. Assoc. Comput. Mach., 14:100-119 (1967). Cran, G.W., K.J. Martin, and G.E. Thomas: A Remark on Algorithm AS63: The Incomplete Beta Integral, AS64: Inverse of the Incomplete Beta Function Ratio, Appl. Statist., 26:111-114 (1977). Crane, M.A., and D.L. Iglehart: Simulating Stable Stochastic Systems, I: General Multiserver Queues,/. Assoc. Comput. Mach., 21:103-113 (1974a). Crane, M.A., and D.L. Iglehart: Simulating Stable Stochastic Systems, II: Markov Chains,/. Assoc. Comput. Mach., 21:114-123 (1974b). Crane, M.A., and D.L. Iglehart: Simulating Stable Stochastic Systems, III: Regenerative Processes and Discrete-Event Simulations, Operations Res., 23:33-45 (1975). Crane, M.A., and AJ. Lemoine: An Introduction to the Regenerative Method for Simulation Analysis, Lecture Notes in Control and Information Sciences, Vol. 4, Springer-Verlag, New York (1977). D'Agostino, R.B., and M.A. Stephens: Goodness-of-Fit Tests, Marcel Dekker, New York (1986). Dagpunar, J.: Principles of Random Variate Generation, Clarendon Press, Oxford (1988). Dahmann, J.S., R.M. Fujimoto, and R.M. Weatherly: The DoD High Level Architecture: An Update, Proc. 1998 Winter Simulation Conference, p. 797-804, Washington, D.C. (1998). Daley, D.J.: The Serial Correlation Coefficients of Waiting Times in a Stationary Single Server Queue,/. Austr. Math. Soc., 8:683-699 (1968). Damerdji, H.: Strong Consistency and Other Properties of the Spectral Variance Estimator, Management Sci., 37:1424-1440 (1991). Damerdji, H.: Strong Consistency of the Variance Estimator in Steady-State Simulation Output Analysis, Math, of Operations Res., 19:494-512 (1994). Damerdji, H., and M.K. Nakayama: Two-stage Multiple Comparison Procedures for Steady-State Simulations, Амос. Comput. Mach. Trans. Modeling and Comput. Simul., 9:1-30 (1999). Defense Modeling and Simulation Office: Verification, Validation, and Accreditation (VV&A), Alexandria, Virginia (1996). De Matteis, A, and S. Pagnutti: Parallelization of Random Number Generators and Long-Range Correlations, Numerische Mathematik, 53: 595-608 (1988). Deneb Robotics, Inc.: QUEST Reference Manual Version 4.0, Troy, Michigan (1998). DeRiggi, D.F.: Unimodality of Likelihood Functions for the Binomial Distribution,/. Am. Statist. Assoc., 78:181-183 (1983). Desu, M., and M. Sobel: A Fixed Subset-Size Approach to a Selection Problem, Biometrika, 55: 401-410 (1968). Devore, J.L.: Probability and Statistics for Engineering and the Sciences, 4th ed., Brooks/Cole, Monterey, California (1995). Devroye, L.: The Computer Generation of Poisson Random Variables, Computing, 26:197-207 (1981). Devroye, L.: Non-Uniform Random Variate Generation, Springer-Verlag, New York (1986). Devroye, L.: Generating Sums in Constant Average Time, Proc. 1988 Winter Simulation Conference, San Diego, p. 425-431 (1988). Devroye, L.: Random Variate Generation in One Line of Code, Proc. 1996 Winter Simulation Conference, San Diego, p. 265-272 (1996).
808 Литература Devroye, L.: Random Variate Generation for Multivariate Unimodal Densities, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul., 7:447-477 (1997). Dickinson, R.T.: A Multiple Ranking Procedure Adapted to Discrete Event Simulation, Ph.D. Dissertation, Department of Mechanical Engineering, University of Texas, Austin (1983). Donohue, J.M.: Experimental Designs for Simulation, Proc. 1994 Winter Simulation Conference, Orlando, p. 200-206 (1994). Donohue, J.M.: The Use of Variance Reduction Techniques in the Estimation of Simulation Metamodels, Proc. 1995 Winter Simulation Conference, Washington, D.C., p. 194-200 (1995). Donohue, J.M., E.G. Houck, and R.H. Myers: Some Optimal Simulation Designs for Estimating Quadratic Response Surface Functions, Proc. 1990 Winter Simulation Conference, New Orleans, p. 337-343 (1990). Donohue, J.M., E.G. Houck, and R.H. Myers: Simulation Designs for Quadratic ResponseSurface Models in the Presence of Model Misspecification, Management Sci., 38: 1765-1791 (1992). Donohue, J.M., B.C. Houck, and R.H. Myers: A Sequential Experimental Design Procedure for the Estimation of First- and Second-Order Simulation Metamodels, Assoc. Comput. Mach.Trans. Modeling and Comput. Simul., 3:190-224 (1993a). Donohue, J.M., E.G. Houck, and R.H. Myers: Simulation Designs and Correlation Induction for Reducing Second-Order Bias in First-Order Response Surfaces, Operations Res., 41:880-902 (1993b). Donohue, J.M., E.G. Houck, and R.H. Myers: Simulation Designs for the Estimation of Quadratic Response Surface Gradients in the Presence of Model Misspecification, Management Sci., 41: 244-262 (1995). Draper, N.R., and H. Smith: Applied Regression Analysis, 3d ed., John Wiley, New York (1998). Dubey, S.D.: On Some Permissible Estimators of the Location Parameter of the Weibull and Certain Other Distributions, Technometrics, 9:293-307 (1967). Dudewicz, E.J.: Random Numbers: The Need, the History, the Generators, in Statistical Distributions in Scientific Work 2, G.P. Patil, S. Kotz, and J.K. Ord, eds., D. Reidel, Dordrecht, The Netherlands (1975). (Also reprinted in Modem Design and Analysis of Discrete-Event Computer Simulations, E.J. Dudewicz and Z. A. Karian, eds., IEEE ComputerSociety (1985).) Dudewicz, E.J., and T.A. Bishop: The Heteroscedastic Method, Technical Report 153, Department of Statistics, The Ohio State University, Columbus (1977). Dudewicz, E.J., and S.R. Dalai: Allocation of Observations in Ranking and Selection with Unequal Variances, Sankhya, B37: 28-78 (1975). Dudewicz, E.J., and J.O. Koo: The Complete Categorized Guide to Statistical Selection and Ranking Procedures, American Sciences Press, Syracuse, New York (1982). Dudewicz, E.J., and T.G. Ralley: The Handbook of Random Number Generation and Testing with TESTRAND Computer Code, American Sciences Press, Columbus, Ohio (1981). Dudewicz, E.J., and N.A. Zaino: Allowance for Correlation in Setting Run-Length via Ranking-and-Selection Procedures, TIMS Studies Management Sci., 7: 5-61 (1977). Duersch, R.R., and L.W. Schruben: An Interactive Run Length Control for Simulations on PCs, Proc. 1986 Winter Simulation Conference, Washington, D.C., p. 866-870 (1986). Durbin, J.: Kolmogorov-Smirnov Tests When Parameters Are Estimated with Applications to Tests of Exponentiality and Tests on Spacings, Biometrika, 62: 5-22 (1975). Ermakov, S.M., and V.B. Melas: Design and Analysis of Simulation Experiments, Kluwer Academic Publishers, Dordrecht, The Netherlands (1995).
Литература 809 Evans, G.W, В. Stockman, and M. Mollaghasemi: Multicriteria Optimization of Simulation Models, Proc. 1991 Winter Simulation Conference, Phoenix, p. 894-900 (1991). Evans, M., N.AJ. Hastings, and J.B. Peacock: Statistical Distributions, 2d ed, John Wiley, New York (1993). F&H Simulations, Inc.: Taylor Enterprise Dynamics User Manual, Orem, Utah (1998). Farrington, P.A. and J.J. Swain: Design of Simulation Experiments with Manufacturing Applications, Proc. 1993 Winter Simulation Conference, Los Angeles, p. 69-75 (1993). Feltner, C.E, and S.A. Weiner: Models, Myths and Mysteries in Manufacturing, Ind. Eng., 17: 66-76 (July 1985). Filliben, J.J.: The Probability Plot Correlation Coefficient Test for Normality, Technometrics, 17: 111-117 (1975). Fishman G.S.: Spectral Methods in Econometrics, Harvard University Press, Cambridge, Massachusetts (1969). Fishman, G.S.: Estimating Sample Size in Computer Simulation Experiments, Management Sci., 18: 21-38 (1971). Fishman, G.S.: Concepts and Methods in Discrete Event Digital Simulation, John Wiley, New York (1973a). Fishman G. S.: Statistical Analysis for Queueing Simulations, Management Sci., 20:363-369 (1973b). Fishman G.S.: Estimation in Multiserver Queueing Simulations, Operations Res., 22:72-78 (1974). Fishman. G.S.: Achieving Specific Accuracy in Simulation Output Analysis, Commun. Assoc.Comput. Mach., 20:310-315 (1977). Fishman, G.S.: Principles of Discrete Event Simulation, John Wiley, New York (1978). Fishman, G.S.: Monte Carlo: Concepts, Algorithms, and Applications, Springer-Verlag, New York (1996). Fishman, G.S, and B.D. Huang: Antithetic Variates Revisited, Commun. Assoc. Comput. Mach., 26: 964-971 (1983). Fishman, G.S, and P.J. Kiviat: The Analysis of Simulation-Generated Time Series, Management Sci., 13:525-557 (1967). Fishman, G.S, and PJ. Kiviat: The Statistics of Discrete-Event Simulation, Simulation, 10: 185-195 (1968). Fishman, G.S, and L.R. Moore: In Search of Correlation in Multiplicative Congruential Generators with Modulus 231 - 1, in Computer Science and Statistics: Proc, of the 13th Symposium on the Interface, W.F. Eddy, ed, Springer-Verlag, New York (1981). Fishman, G.S, and L.R. Moore: A Statistical Evaluation of Multiplicative Congruential Random Number Generators with Modulus 231 - 1, J. Am. Statist. Assoc., 77:129-136 (1982). Fishman, G.S, and L.R. Moore: Sampling from a Discrete Distribution while Preserving Monotonicity, Am. Statistician, 38:219-223 (1984). Fishman, G.S, and L.R. Moore: An Exhaustive Analysis of Multiplicative Congruential Random Number Generators with Modulus 23* - 1, SIAMJ. Sci. Stat. Comput., 7:24-45 (1986). Fishwick, P.A.: Web-Based Simulation: Some Personal Observations, Proc. 1996 Winter Simulation Conference, San Diego, p. 772-779 (1996). Fishwick, P.A.: Web-Based Simulation, Proc. 1997 Winter Simulation Conference, Atlanta, p. 100-102 (1997).
810 Литература Forsythe, G.E.: von Neumann's Comparison Method for Random Sampling from the Normal and Other Distributions, Math. Comput., 26: 817-826 (1972). Fossett, F.A., D. Harrison, H. Weintrob, and S.I. Gass: An Assessment Procedure for Simulation Models: A Case Study, Operations Res., 39: 710-723 (1991). Fox, B.L, D. Goldsman, and JJ. Swain: Spaced Batch Means, Operations Res. Letters, 10:255-263 (1991). Franta, W.R.: A Note on Random Variate Generators and Antithetic Sampling, INFOR, 13:112-117 (1975). Friedman, L.W.: The Simulation Metamodel, Kluwer Academic Publishers, Dordrecht, The Netherlands (1996). Fu, M.C.: A Tutorial Review of Techniques for Simulation Optimization, Proc. 1994 Winter Simulation Conference, Orlando, p. 149-156 (1994a). Fu, M.C.: Optimization via Simulation: A Review, Ann. of Operations Res., 53.199-247 (1994b). Fu, M.C.: Sample Path Derivatives for (s, S) Inventory Systems, Operations Res., 42: 351-364 (1994c). Fu, M.C., and KJ. Healy: Techniques for Optimization via Simulation: An Experimental Study on an (s, S) Inventory System, HE Trans., 29:191-199 (1997). Fu, M.C., and S.D. Hill: Optimization of Discrete Event Systems via Simultaneous Perturbation Stochastic Approximation, HE Trans., 29: 233-243 (1997). Fu, M.C., and J.Q. Hu: An Application of Perturbation Analysis to a Replacement Problem in Maintenance Theory, Proc. 1993 Winter Simulation Conference, Los Angeles, p. 329-337 (1993a). Fu, M.C., and J.Q. Hu: Second Derivative Sample Path Estimators for the GI/G/m Queue, Management Sci., 39:359-383 (1993b). Fu, M.C., and J.Q. Hu: A Comparison of Perturbation Analysis Techniques, Proc. 1996 Winter Simulation Conference, San Diego, p. 295-301 (1996). Fu, M.C., and J.Q. Hu: Efficient Design and Sensitivity Analysis of Control Charts Using Monte Carlo Simulation, Management Sci., 45:395-413 (1999). Fujimoto, R.M.: Parallel Discrete Event Simulation: Will the Field Survive?, INFORMS J. Comput., 5:213-230 (1993). Fujimoto, R.M.: Parallel and Distributed Simulation, in Handbook of Simulation, J. Banks, ed., John Wiley, New York (1998). Fushimi, M.: Designing a Uniform Random Number Generator Whose Subsequences Are it-Distributed, SIAMJ. Comput., 17:89-99 (1988). Fushimi, M., and S. Tezuka: The fc-Distribution of Generalized Feedback Shift Register Pseudorandom Numbers, Commun. Assoc. Comput. Mach., 26: 516-523 (1983). Gafarian, A.V., CJ. Ancker, Jr., and F. Morisaku: Evaluation of Commonly Used Rules for Detecting "Steady-State" in Computer Simulation, Naval Res. Logist. Quart., 25: 511-529 (1978). Gal, S., R.Y. Rubinstein, and A. Ziv: On the Optimality and Efficiency of Common Random Numbers, Math. Comput. Simul, 26: 502-512 (1984). Gallagher, M.A., K.W. Bauer, Jr., and P.S. Maybeck: Initial Data Truncation for Univariate Output of Discrete-event Simulations Using the Kalman Filter, Management Sci., 42: 559-575 (1996). Garman, M.B.: More on Conditioned Sampling in the Simulation of Stochastic Networks, Management Sci., 19: 90-95 (1972).
Литература 811 Gass, S.I.: Decision-Aiding Models: Validation, Assessment, and Related Issues in Policy Analysis, Operations Res., 31: 603-631 (1983). Gass, S.I., and B.W. Thompson: Guidelines for Model Evaluation: An Abridged Version of the U.S. General Accounting Office Exposure Draft, Operations Res., 28:431-439 (1980). Gaver, D.P, and G.S. Shedler: Control Variable Methods in the Simulation of a Model of a Multiprogrammed Computer System, Naval Res. Legist. Quart., 18:435-450 (1971). Gaver, D.P., and G.L. Thompson: Programming and Probability Models, Wadsworth, Monterey, California (1973). Gebhardt, F.: Generating Pseudo-random Numbers by Shuffling a Fibonacci Sequence, Math. Comput., 21:708-709 (1967). George, L.L.: Variance Reduction for a Replacement Process, Simulation, 29:65-74 (1977). Gibbons, J.D.: Nonparametric Methods for Quantitative Analysis, 2d ed., American Sciences Press, Columbus, Ohio (1985). Gibbons, J.D., I. Olkin, and M. Sobel: Selecting and Ordering Populations: A New Statistical Methodology, John Wiley, New York (1977). Glasserman, P.: Gradient Estimation via Perturbation Analysis, Kluwer Academic Publishers, Boston (1991a). Glasserman, P.: Structural Conditions for Perturbation Analysis Derivative Estimation: Finite-Time Performance Indices, Operations Res., 39:724-738 (1991b). Glasserman, P.: Derivative Estimates from Simulation of Continuous-Time Markov Chains, Operations Res., 40: 292-308 (1992). Glasserman, P., P. Heidelberger, P. Shahabuddin, and T. Zajic: Multilevel Splitting for Estimating Rare Event Probabilities, Operations Res., 47:585-600 (1999). Glasserman, P., and T.-W. Liu: Rare-event Simulation for Multistage Production-inventory Systems, Management Sci., 42:1291-1307 (1996). Glasserman, P., and D.D. Yao: Some Guidelines and Guarantees for Common Random Numbers, Management Sci., 38:884-908 (1992). Gleick, J.: The Quest for True Randomness Finally Appears Successful, The New York Times, p. Cl and C8 (Tuesday, April 19, 1988). Gleser, LJ.: Exact Power of Goodness-of-Fit Tests of Kolmogorov Type for Discontinuous Distributions, J. Am. Statist. Assoc., 80:954-958 (1985). Glover, F: Scatter Search and Path Relinking, in New Methods in Optimization, D. Corne, M. Dorigo, and F. Glover, eds., McGraw-Hill, New York (1999). Glover, F, J.P. Kelly, and M. Laguna: New Advances and Applications of Combining Simulation and Optimization, Proc. 1996 Winter Simulation Conference, San Diego, p. 144-152 (1996). Glover, F., J.P. Kelly, and M. Laguna: New Advances for Wedding Optimization and Simulation, Proc. 1999 Winter Simulation Conference, Phoenix (1999a). Glover, F., J.P. Kelly, and M. Laguna: The OptQuest Callable library User's Documentation, Optimization Technologies, Inc., Boulder, Colorado (1999b). Glover, F, and M. Laguna: Tabu Search, Kluwer Academic Publishers, New York (1997). Glynn, P.W.: Optimization of Stochastic Systems, Proc. 1986 Winter Simulation Conference Washington, D.C., p. 52-59 (1986). Glynn, P.W.: A Non-rectangular Sampling Plan for Estimating Steady-State Means, Proc, of the 6th Army Conference on Applied Mathematics and Computing, p. 965-978 (1988).
812 Литература Glynn, P.W.: Likelihood Ratio Derivative Estimators for Stochastic Systems, Commun. Assoc. Comput. Mach., 33: 75-84 (1990). Glynn, P.W.: Pathwise Convexity and its Relation to Convergence of Time-Average Derivatives, Management Sci., 38:1360-1366 (1992). Glynn, P.W., and D.L. Iglehart: The Theory of Standardized Time Series, Math. Operations Res., 15:1-16 (1990). Glynn, P.W., and W. Whitt: Indirect Estimation via L - Kw, Operations Res., 37:82-103 (1989). Glynn, P.W., and W. Whitt: The Asymptotic Efficiency of Simulation Estimators, Operations Res., 40:505-520 (1992a). Glynn, P.W., and W. Whitt: The Asymptotic Validity of Sequential Stopping Rules for Stochastic Simulations, Ann. of Applied Probability, 2:180-198 (1992b). Gnanadesikan, R., R.S. Pinkham, and L.P. Hughes: Maximum Likelihood Estimation of the Parameters of the Beta Distribution from Smallest Order Statistics, Technometrics, 9:607-620 (1967). Goldsman, D.: On Selecting the Best of k Systems: An Expository Survey of Indifference-Zone Multinomial Procedures, Proc. 1984 Winter Simulation Conference, Dallas, p. 107-112 (1984a). Goldsman, D.: A Multinomial Ranking and Selection Procedure: Simulation and Applications, Proc. 1984 Winter Simulation Conference, Dallas, p. 259-264 (1984b). Goldsman, D.: Ranking and Selection Procedures Using Standardized Time Series, Proc. 1985 Winter Simulation Conference, San Francisco, p. 120-123 (1985). Goldsman, D.: Tutorial on Indifference-Zone Normal Means Ranking and Selection Procedures, Proc. 1986 Winter Simulation Conference, Washington, D.C., p. 370-375 (1986). Goldsman, D.: Ranking and Selection Tutorial: 2-Factor Normal Means Procedures, Proc. 1987 Winter Simulation Conference, Atlanta, p. 52-57 (1987). Goldsman, D., M. Meketon, and L.W. Schraben: Properties of Standardized Time SeriesWeighted Area Variance Estimators, Management Sci., 36:602-612 (1990). Goldsman, D., and B.L. Nelson: Comparing Systems via Simulation, in Handbook of Simulation, J. Banks, ed., John Wiley, New York (1998a). Goldsman, D., and B.L. Nelson: Statistical Screening, Selection, and Multiple Comparison Procedures in Computer Simulation, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 159-166 (1998b). Goldsman, D., and L.W. Schruben: Asymptotic Properties of Some Confidence Interval Estimators for Simulation Output, Management.Sci., 30:1217-1225 (1984). Gonzalez, T., S. Sahni, and W.R. Franta: An Efficient Algorithm for the Kolmogorov-Smirnov and Lilliefors Tests, Амос. Comput. Mach. Trans. Math. Software, 3:60-64 (1977). Gordon, G.: System Simulation, 2d ed., Prentice-Hall, Englewood Cliffs, New Jersey (1978). Grafton, R.G.T.: The Runs-up and Runs-down Tests, Appl. Statist., 30:81-85 (1981). Gray, D., and D. Goldsman: Indifference-Zone Selection Procedures for Choosing the Best Airspace Configuration, Proc. 1988 Winter Simulation Conference, San Diego, p. 445-450 (1988). Grosenbaugh, L.R.: More on Fortran Random Number Generators, Commun. Assoc. Comput. Mach., 12:639 (1969). Gross, D., and C.M. Harris: Fundamentals of Queueing Theory, 3d ed., John Wiley, New York (1998). Gupta, S.S.: On a Decision Rule for a Problem in Ranking Means, Mimeograph Series No. 150, Institute of Statistics, University of North Carolina, Chapel Hill (1956).
Литература 813 Gupta, S.S.: On Some Multiple Decision (Selection and Ranking) Rules, Technometrics, 7:225-245 (1965). Gupta, S.S., and J.C. Hsu: A Computer Package for Ranking, Selection, and Multiple Comparisons with the Best, Proc. 1984 Winter Simulation Conference, Dallas, p. 251-257 (1984). Gupta, S.S., K. Nagel, and S. Panchapakesan: On the Order Statistics from Equally Correlated Normal Random Variables, Biometrika, 60:403-413 (1973). Gupta, S.S., and S. Panchapakesan: Multiple Decision Procedures: Theory and Methodology of Selecting and Ranking Populations, John Wiley, New York (1979). Gupta, S.S., and T.J. Santner: On Selection and Ranking Procedures—A Restricted Subset Selection Rule, Proc. 39th Session of the International Statistical Institute, Vienna, Vol. 1 (1973). Gupta, U.G.: Using Citation Analysis to Explore the Intellectual Base, Knowledge Dissemination, and Research Impact of Interfaces (1970-1992), Interfaces, 27: 85-101 (1997). Haas, A.: The Multiple Prime Random Number Generator, Assoc. Comput. Mach. Trans. Math. Software, 13:368-381 (1987). Haberman, S.J.: A Warning on the Use of Chi-Squared Statistics with Frequency Tables with Small Expected Cell Counts, J. Am. Statist. Assoc., 83: 555-560 (1988). Hahn, GJ., S.S. Shapiro, and G.H. Hahn: Statistical Models in Engineering, John Wiley, New York (1994). Haider, S.W., D.G. Noller, and T.B. Robey: Experiences with Analytic and Simulation Modeling for a Factory of the Future Project at IBM, Proc. 1986 Winter Simulation Conference, Washington, D.C., p. 641-648 (1986). Halton, J.H.: A Retrospective and Prospective Survey of the Monte Carlo Method, SIAM Rev., 12: 1-63 (1970). Hammersley, J.M., and D.C. Handscomb: Monte Carlo Methods, Methuen, London (1964). Hammersley, J.M., and K.W. Morton: A New Monte Carlo Technique: Antithetic Variates, Proc. Camb. Phil. Soc., 52: 449-475 (1956). Hartmann, M.: An Improvement on Paulson's Procedure for Selecting the Population with the Largest Mean from k Normal Populations with a Common Unknown Variance, Sequential Analysis, 10:1-16 (1991). Haykin, S.S.: Neural Networks: A Comprehensive Foundation, 2d ed., Prentice Hall, Upper Saddle River, New Jersey (1998). Hazra, M.M., D.J. Morrice, and S.K. Park: A Simulation Clock-Based Solution to the Frequency Domain Experiment Indexing Problem, HE Trans., 29:769-782 (1997). Healy, KJ., and L.W. Schruben: Retrospective Simulation Response Optimization, Proc. 1991 Simulation Conference, Phoenix, p. 901-906 (1991). Heathcote, C.R., and P. Winer: An Approximation to the Moments of Waiting Times, Operations Res., 17: 175-186 (1969). Heidelberger, P.: Variance Reduction Techniques for the Simulation of Markov Processes, I: Multiple Estimates, IBM J. Res. Develop., 24: 570-581 (1980). Heidelberger, P.: Discrete Event Simulations and Parallel Processing: Statistical Properties, SIAM J. Statist. Compmt., 9:1114-1132 (1988). Heidelberger, P.: Fast Simulation of Rare Events in Queueing and Reliability Models, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul., 5: 43-85 (1995). Heidelberger, P., X.R. Cao, M.A. Zazanis, and R. Suri: Convergence Properties of Infinitesimal Perturbation Analysis Estimates, Management Sci., 34: 1281-1302 (1988).
814 Литература Heidelberger, Р., and D.L. Iglehart: Comparing Stochastic Systems Using Regenerative Simulation with Common Random Numbers, Adv. Appl. Prob., 11:804-819 (1979). Heidelberger, P., and P.A.W. Lewis: Quantile Estimation in Dependent Sequences, Operations Res., 32: 185-209 (1984). Heidelberger, P., and P.D. Welch: Adaptive Spectral Methods for Simulation Output Analysis, IBM J. Res. Develop., 25:860-876 (1981a). Heidelberger, P., and P.D. Welch: A Spectral Method for Confidence Interval Generation and Run Length Control in Simulations, Commun. Assoc. Comput. Mach., 24: 233-245 (1981b). Heidelberger, P., and P.D. Welch: Simulation Run Length Control in the Presence of an Initial Transient, Operations Res., 31:1109-1144 (1983). Heikes, R.G., D.C. Montgomery, and R.L. Rardin: Using Common Random Numbers in Simulation Experiments—An Approach to Statistical Analysis, Simulation, 25:81-85 (1976). Henriksen, J.O.: Event List Management—A Tutorial, Proc. 1983 Winter Simulation Conference, Washington, D.C., p. 543-551 (1983). Henriksen, J.O.: Stretching the Boundaries of Simulation Software, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 227-234 (1998). Henriksen, J.O., and R.C. Grain: GPSS/HReference Manual, 3rd ed., Annandale, Virginia (1994). Hesterberg, T.C., and B.L. Nelson: Control Variates for Probability and Quantile Estimation, Management Sci., 44:1295-1312 (1998). Hill, I.D.: A Remark on AS 193: A Revised Algorithm for the Spectral Test, Appl. Statist., 34: 102-103 (1985). Hill, R.R., and C.H. Reilly: Composition for Multivariate Random Variables, Proc. 1994 Winter Simulation Conference, Orlando, p. 332-339 (1994). Ho, Y.C.: Perturbation Analysis: Concepts and Algorithms, Proc. 1992 Winter Simulation Conference, Washington, D.C., p. 231-240 (1992). Ho, Y.C., and X.R. Cao: Perturbation Analysis and Optimization of Queueing Networks, J. Optimization Theory and Applications, 40: 559-582 (1983). Ho, Y.C., and X.R. Cao: Discrete Event Dynamic Systems and Perturbation Analysis, Kluwer Academic Publishers, Amsterdam (1991). Ho, Y.C., M.A. Eyler, and T.T. Chien: A Gradient Technique for General Buffer Storage Design in a Serial Production Line, Int. J. Prod. Res., 17: 557-580 (1979). Hoaglin, D.C.: Theoretical Properties of Congruential Random-Number Generators: An Empirical View, Memorandum NS-340, Department of Statistics, Harvard University Cambridge, Massachusetts (1976). Hoaglin, D.C., and M.L. King: A Remark on AS 98: The Spectral Test for the Evaluation of Congruential Pseudo-random Generators, Appl. Statist., 27:375-377 (1978). Hoaglin, D.C., F. Mosteller, and J.W. Tukey, Understanding Robust and Exploratory Data Analysis, John Wiley, New York (1983). Hochberg, Y, and A.C. Tamhane: Multiple Comparison Procedures, John Wiley, New York (1987). Hogg, R.V., and A.F. Craig: Introduction to Mathematical Statistics, 5th ed., Prentice-Hall, Upper Saddle River, New Jersey (1995). Hood, SJ. and P.D. Welch: Experimental Design Issues in Simulation with Examples from Semiconductor Manufacturing, Proc. 1992 Winter Simulation Conference, Washington, D.C., p. 255-263 (1992).
Л итература 815 Hood, SJ. and P.D. Welch: Response Surface Methodology and its Application in Simulation, Proc. 1993 Winter Simulation Conference, Los Angeles, p. 115-122 (1993). Hopkins, T.R.: A Revised Algorithm for the Spectral Test, Appl. Statist., 32: 328-335 (1983). Hopp, W.J., and M.L. Spearman: Factory Physics: Foundations of Manufacturing Management, Irwin, Chicago (1996). Hermann, W., and G. Derflinger: Rejection-Inversion to Generate Variates from Monotone Discrete Distributions, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul, 6:169-184 (1996). Hsu, D.A., and J.S. Hunter: Analysis of Simulation-Generated Responses Using Autoregressive Models, Management Sci., 24:181-190 (1977). Hsu, J.C.: Constrained Two-Sided Simultaneous Confidence Intervals for Multiple Comparisons with the Best, Ann. Statist., 12:1136-1144 (1984). Hsu, J.C., and D.G. Edwards: Sequential Comparisons with the Best, J. Am. Statist. Assoc., 78: 958-964 (1983). Hsu, J.C., and B.L. Nelson: Optimization Over a Finite Number of System Designs with One-Stage Sampling and Multiple Comparisons with the Best, Proc. 1988 Winter Simulation Conference, San Diego, p. 451-457 (1988). Hsu, J.C., and B.L. Nelson: Control Variates for Quantile Estimation, Management Sci., 36:835-851 (1990). Hull, T.E., and A.R. Dobell: Random Number Generators, SIAM Rev., 4:230-254 (1962). Humphrey, D.G., and J.S. Chu: Optimization of a Corn-Processing Simulation Model, Proc. 1992 Winter Simulation Conference, Washington, D.C., p. 1349-1355 (1992). Humphrey, D.G., and J.R. Wilson: A Revised Simplex Search Procedure for Stochastic Simulation Response-Surface Optimization, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 751-759 (1998). Hunter, J.S., and Т.Н. Naylor: Experimental Designs for Computer Simulation Experiments, Management Sci., 16:422-434 (1970). Hussey, J.R., R.H. Myers, and B.C. Houck: Correlated Simulation Experiments in First-Order Response Surface Designs, Operations Res., 35:744-758 (1987). Hutchinson, D.W.: A New Uniform Pseudorandom Number Generator, Commun. Assoc. Comput. Mach., 9:432-433 (1966). Iglehart, D.L.: Simulating Stable Stochastic Systems, V: Comparison of Ratio Estimators, Naval Res. Legist. Quart., 22:553-565 (1975). Iglehart, D.L.: Simulating Stable Stochastic Systems, VII: Selecting the Best System, TIMS Studies Management Sci., 7: 37-50 (1977). Iglehart, D.L., and P.W. Lewis: Regenerative Simulation with Internal Controls,/ Assoc. Comput. Mach., 26: 271-282 (1979). Ignall, E.J.: On Experimental Designs for Computer Simulation Experiments, Management Sci., 18: 384-388 (1972). Imagine That, Inc.: Extend + Manufacturing User's Manual, Version 4, San Jose, California (1997a). Imagine That, Inc.: Extend User's Manual, Version 4, San Jose, California (1997b). Imagine That, Inc.: Extend + BPR User's Manual, Version 4, San Jose, California (1998). Jacobson, S.H.: Convergence Results for Harmonic Gradient Estimators, ORSA J. Comput, 6: 381-397 (1994).
816 Литература Jacobson, S.H., А.Н. Buss, and L.W. Schruben: Driving Frequency Selection for Frequency Domain Simulation Experiments, Operations Res., 33:917-924 (1991). Jacobson, S.H., D.J. Morrice, and L.W. Schruben: The Global Simulation Clock as the Frequency Domain Experiment Index, Proc. 1988 Winter Simulation Conference, San Diego, p. 558-563 (1988). Jacobson, S.H., and L.W. Schruben: Techniques for Simulation Response Optimization, Operations Res. Letters, 8:1-9 (1989). Jacobson, S.H., and L.W. Schruben: A Harmonic Analysis Approach to Simulation Sensitivity Analysis, HE Trans., 31:231-243 (1999). Jagerman, D.L., and B. Melamed: The Transition and Autocorrelation Structure of TES Processes, Part I: General Theory, Commun. Stat. Stock. Models, 8:193-219 (1992a). Jagerman, D.L, and B. Melamed: The Transition and Autocorrelation Structure of TES Processes, Part II: Special Cases, Commun. Stat. Stock. Models, 8:499-527 (1992b). Jain, R., and I. Chlamtac: The P2 Algorithm for Dynamic Calculation of Quantiles and Histograms without Storing Observations, Commun. Assoc. Comput. Mach., 28:1076-1085 (1985). Jefferson, D.R.: Virtual Time, Assoc. Comput. Mach. Trans. Programming Languages and Systems, 7: 404-425 (1985). Johnk, M.D.: Erzeugung von Betaverteilten und Gammaverteilten Zufallszahlen, Metrika, 8:5-15 (1964). Johnson, G.D.: Networked Simulation with HLA and MODSIM III, Proc. 1999 Winter Simulation Conference, Phoenix (1999). Johnson, M.A., S. Lee, and J.R. Wilson: Experimental Evaluation of a Procedure for Estimating Nonhomogeneous Poisson Processes Having Cyclic Behavior, ORSA J. Comput., 6:356-368 (1994a). Johnson, M.A., S. Lee, and J.R. Wilson: NPPMLE and NPPSIM: Software for Estimating and Simulating Nonhomogeneous Poisson Processes Having Cyclic Behavior, Operations Res. Letters, 15: 273-282 (1994b). Johnson, M.E.: Multivariate Statistical Simulation, John Wiley, New York (1987). Johnson, M.E., and V.W. Lowe, Jr.: Bounds on the Sample Skewness and Kurtosis, Technometrics, 21:377-378 (1979). Johnson, M.E., and J.S. Ramberg: Transformations of the Multivariate Normal Distribution with Applications to Simulation, Technical Report LA-UR-77-2595, Los Alamos Scientific Laboratories, Los Alamos, New Mexico (1978). Johnson, M.E., C. Wang, and J.S. Ramberg: Generation of Continuous Multivariate Distributions for Statistical Applications, Am. J. Math, and Management Sci., 4:96-119 (1984). Johnson, N.L., S. Kotz, and N. Balakrishnan, Continuous Univariate Distributions, Volume 1, 2d ed., Houghton Mifflin, Boston (1994). Johnson, N.L., S. Kotz, and N. Balakrishnan, Continuous Univariate Distributions, Volume 2, 2d ed., Houghton Mifflin, Boston (1995). Johnson, N.L., S. Kotz, and A.W. Kemp: Univariate Discrete Distributions, 2d ed., Houghton Mifflin, Boston (1992). Joines, J.A., and S.D. Roberts: Object-Oriented Simulation, in Handbook of Simulation, J. Banks, ed., John Wiley, New York (1998). Jones, D.W.: An Empirical Comparison of Priority-Queue and Event-Set Implementations, Commun. Assoc. Comput. Mach., 29:300-311 (1986).
Литература 817 Jones, D.W.: Concurrent Operations on Priority Queues, Commun. Assoc. Comput. Mach., 32: 132-137 (1989). Jones, D.W., J.O. Henriksen, C.D. Pegden, R.G. Sargent, R.M. O'Keefe, and B.W. Unger: Implementations of Time (Panel), Proc. 1986 Winter Simulation Conference, Washington, D.C., p. 409-416 (1986). Jones, R.M., and K.S. Miller: On the Multivariate Lognormal Distribution, J. Indust. Math., 16: 63-76 (1966). Joshi, S.S., H.D. Sherali, and J.D. Tew. An Enhanced RSM Algorithm Using Gradient-Deflection and Second-Order Search Strategies, Proc. 1994 Winter Simulation Conference, Orlando, p. 297-304 (1994). Kachitvichyanukul, V.: Discrete Univariate Random Variate Generation, Proc. 1983 Winter Simulation Conference, Washington, B.C., p. 179-187 (1983). Kachitvichyanukul, V, and B.W. Schmeiser: Binomial Random Variate Generation, Commun. Assoc. Comput. Mach., 31: 216-222 (1988). Kallenberg, W.C.M., J. Oosterhoff, and B.F. Schriever: The Number of Classes in Chi-Squared Goodness-of-Fit Tests, J. Am. Statist. Assoc., 80:959-968 (1985). Kaminsky, F.C., and D.L. Rumpf: Simulating Nonstationary Poisson Processes: A Comparison of Alternatives including the Correct Approach, Simulation, 29: 17-20 (1977). Kao, E.P.C., and S.L Chang: Modeling Time-Dependent Arrivals to Service Systems: A Case in Using a Piecewise-Polynomial Rate Function in a Nonhomogeneous Poisson Process, Management Sci., 34:1367-1379 (1988). Kapuscinski, R., and S. Tayur: A Capacitated Production-Inventory Model with Periodic Demand, Operations Res., 46: 899-911 (1998). Keefer, D.L., and S.E. Bodily: Three-Point Approximations for Continuous Random Variables, Management Sci., 29: 595-609 (1983). Kelton, W.D.: Transient Exponential-Erlang Queues and Steady-State Simulation, Commun. Assoc. Comput. Mach., 28: 741-749 (1985). Kelton, W.D.: Random Initialization Methods in Simulation, HE Trans., 21:355-367 (1989). Kelton, W.D.: Perspectives on Simulation Research and Practice, О RS A J. Comput, 6: 318-328 (1994). Kelton, W.D.: Designing Simulation Experiments, Proc. 1999 Winter Simulation Conference, Phoenix (1999). Kelton, W.D., and A.M. Law: A New Approach for Dealing with the Startup Problem in Discrete Event Simulation, Naval Res. Legist. Quart., 30:641-658 (1983). Kelton, W.D., and A.M. Law: The Transient Behavior of the M/M/s Queue, with Implications for Steady-State Simulation, Operations Res., 33: 378-396 (1985). Kelton, W.D., R.P. Sadowski, and D.A. Sadowski: Simulation with Arena, McGraw-Hill, New York (1998). Kendall, M.G., and B. Babington-Smith: Randomness and Random Sampling Numbers, J. Roy. Statist. Soc., A101: 147-166 (1938). Kendall, M.G., and A. Stuart: The Advanced Theory of Statistics, Vol. 2, 4th ed., Griffin, London (1979). Kendall, M.G., A. Stuart, and J.K Ord: The Advanced Theory of Statistics, Vol. 1, 5th ed., Oxford University Press, New York (1987). Kennedy, W.J., Jr., and J.E. Gentle: Statistical Computing, Marcel Dekker, New York (1980).
818 Литература Kernighan, B.W., and D.M. Ritchie: The C Programming Language, 2d ed., Prentice-Hall, Englewood Cliffs, New Jersey (1988). Khuri, A.I., and J.A. Cornell: Response Surfaces: Designs and Analyses, 2d ed., Marcel Dekker, New York (1996). Kinderman, AJ., and J.G. Ramage: Computer Generation of Normal Random Variables,/. Am. Statist. Assoc., 71:893-896 (1976). Kingston, J.H.: Analysis of Henriksen's Algorithm for the Simulation Event Set, SIAM J. Com-put., 15: 887-902 (1986). Kleijnen, J.P.C.: Statistical Techniques in Simulation, Pt. I, Marcel Dekker, New York (1974). Kleijnen, J.P.C.: Statistical Techniques in Simulation, Pt. П, Marcel Dekker, New York (1975). Kleijnen, J.P.C.: Analysis of Simulation with Common Random Numbers: A Note on Heikes et al. (1976), Simuletter, 11: 7-13 (1979). Kleijnen, J.P.C.: Statistical Tools for Simulation Practitioners, Marcel Dekker, New York (1987). Kleijnen, J.P.C.: Regression Metamodels for Simulation with Common Random Numbers: Comparison of Validation Tests and Confidence Intervals, Management Sci., 38:1164-1185 (1992). Kleijnen, J.P.C.: Simulation and Optimization in Production Planning: A Case Study, Decision Support Systems, 9:269-280 (1993). Kleijnen, J.P.C.: Sensitivity Analysis and Optimization of Systems Dynamics Models: Regression Analysis and Statistical Design of Experiments, Systems Dynamics Review, 11:275-288 (1995a). Kleijnen, J.P.C.: Sensitivity Analysis and Optimization in Simulation: Design of Experiments and Case Studies, Proc. 1995 Winter Simulation Conference, Washington, D.C., p. 133-140 (1995b). Kleijnen, J.P.C.: Experimental Design for Sensitivity Analysis, Optimization, and Validation of Simulation Models, in Handbook of Simulation, J. Banks, ed., John Wiley, New York, (1998). Kleijnen, J.P.C., A.J. Feelders, and R.C.H. Cheng: Bootstrapping and Validation of Metamodels in Simulation, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 701-706 (1998). Kleijnen, J.P.C., and R.Y. Rubinstein: Optimization and Sensitivity Analysis of Computer Simulation Models by the Score Function Method, Eur. J. Operational Res., 88: 413-427 (1996). Kleijnen, J.P.C., and C.R. Standridge: Experimental Design and Regression Analysis in Simulation: An FMS Case Study, Eur. J. Operational Res., 33: 257-261 (1988). Kleijnen, J.P.C., and W. Van Groenendaal: Simulation: A Statistical Perspective, John Wiley, Chichester, West Sussex, England (1992). Kleijnen, J.P.C., and W. Van Groenendaal: Two-Stage versus Sequential Sample-Size Determination in Regression Analysis of Simulation Experiments, Am. J. Math. Management Sci., 15:83-114 (1995). Klein, R.W., and S.D. Roberts: A Time-Varying Poisson Arrival Process Generator, Simulation, 43:193-195 (1984). Kleinman, N.L., S.D. Hill, and V.A. Ilenda: Simulation Optimization of Air Traffic Delay Cost, Proc. 1998 Winter Simulation Conference, Washington, D.C., p. 1177-1181 (1998). Knepell, P.L., and D.C. Arangno: Simulation Validation: A Confidence Assessment Methodology, IEEE Computer Society Press, Los Alamitos, California (1993). Knuth, D.E.: The Art of Computer Programming, Vol. 1: Fundamental Algorithms, 3d ed., Addison-Wesley, Reading, Massachusetts (1997). Knuth, D.E.: The Art of Computer Programming, Vol. 2: Seminumerical Algorithms, 3d ed., Addison-Wesley, Reading, Massachusetts (1998a).
Литература 819 Knuth, D.E.: The An of Computer Programming, Vol. 3: Sorting and Searching, 2d ed., Addison-Wesley, Reading, Massachusetts (1998b). Koenig, L.W.: Subset-Selection Procedures for Normal Populations with Unknown Variances, Ph.D. Dissertation, Department of Industrial Engineering, University of Wisconsin, Madison (1984). Koenig, L.W., and A.M. Law: A Procedure for Selecting a Subset of Size m Containing the I Best of к Independent Normal Populations, with Applications to Simulation, Technical Report 82-9, Department of Management Information Systems, University of Arizona, Tucson (1982). Koenig, L.W., and A.M. Law: A Procedure for Selecting a Subset of Size m Containing the / Best of ndependent Normal Populations, Commun. Statist.—Simulation and Computation, 14:719-734 (1985). Koffman, E.B., and F.L. Friedman: Fortran, 5th ed. update, Addison-Wesley, Reading, Massachusetts (1996). Kronmal, R.A., and A.V. Peterson, Jr.: On the Alias Method for Generating Random Variables from a Discrete Distribution, Am. Statistician, 33:214-218 (1979). Kronmal, R.A., and A.V. Peterson, Jr.: A Variant of the Acceptance-Rejection Method for Computer Generation of Random Variables, J. Am. Statist. Assoc., 76:446-451 (1981). Kronmal, R.A., and A.V. Peterson, Jr.: Corrigenda, J. Am. Statist. Assoc., 77:954 (1982). Kuhl, M.E., H. Damerdji, and J.R. Wilson: Estimating and Simulating Poisson Processes With Trends or Asymmetric Cyclic Effects, Proc. 1997 Winter Simulation Conference, Atlanta, p. 287-295 (1997a). Kuhl, M.E., J.R. Wilson, and M.A. Johnson: Estimating and Simulating Poisson Processes Having Trends or Multiple Periodicities, ПЕ Trans., 29:201-211 (1997b). Kwon, C., and J.D. Tew: Strategies for Combining Antithetic Variates and Control Variates in Designed Simulation Experiments, Management Sci., 40:1021-1034 (1994). Lane, M.S., A.H. Mansour, and J.L. Harpell: Operations Research Techniques: A Longitudinal Update 1973-1988, Interfaces, 23:63-68 (1993). Lanner Group, Inc.: WITNESS Optimizer Module, Release 2, Houston (1998a). Lanner Group, Inc.: WITNESS Version 9 User Manual, Houston (1998b). Lavenberg, S.S., T.L. Moeller, and C.H. Sauer. Concomitant Control Variables Applied to the Regenerative Simulation of Queueing Systems, Operations Res., 27:134-160 (1979). Lavenberg, S.S., T.L. Moeller, and P.O. Welch: Statistical Results on Control Variables with Application to Queueing Network Simulation, Operations Res., 30:182-202 (1982). Lavenberg, S., R. Muntz, and B. Samadi: Performance Analysis of a Rollback Method for Distributed Simulation, Performance '83, A.K. Agrawala and S.K. Tripathi, eds. (1983). Lavenberg, S.S., and P.D. Welch: Using Conditional Expectation to Reduce Variance in Discrete Event Simulation, Proc. 1979 Winter Simulation Conference, San Diego, p. 291-294 (1979). Lavenberg, S.S., and P.D. Welch: A Perspective on the Use of Control Variables to Increase the Efficiency of Monte Carlo Simulations, Management Sci., 27: 322-335 (1981). Law, A.M.: Efficient Estimators for Simulated Queueing Systems, Technical Report ORC 74-7, Operations Research Center, University of California, Berkeley (1974). Law, A.M.: Efficient Estimators for Simulated Queueing Systems, Management Sci., 22:30-41 (1975). Law, A.M.: Confidence Intervals in Discrete Event Simulation: A Comparison of Replication and Batch Means, Naval Res. Legist. Quart., 24:667-678 (1977).
820 Литература Law, А.М.: Statistical Analysis of the Output Data from Terminating Simulations, Naval Res. Legist. Quart., 27:131-143 (1980). Law, A.M.: Statistical Analysis of Simulation Output Data, Operations Res., 31:983-1029 (1983). Law, A.M.: Simulation Model's Level of Detail Determines Effectiveness, Ind. Eng., 23:16,18 (October 1991). Law, A.M.: How to Conduct a Successful Simulation Study, Videotape, Averill M. Law & Associates, Tucson, Arizona (1999). Law, A.M., and J.S. Carson: A Sequential Procedure for Determining the Length of a Steady-State Simulation, Operations Res., 27:1011-1025 (1979). Law, A.M., and W.D. Kelton: Confidence Intervals for Steady-State Simulations, II: A Survey of Sequential Procedures, Management Sci., 28:550-562 (1982). Law, A.M., and W.D. Kelton: Confidence Intervals for Steady-State Simulations, I: A Survey of Fixed Sample Size Procedures, Operations Res., 32:1221-1239 (1984). Law, A.M., W.D. Kelton, and L.W. Koenig: Relative Width Sequential Confidence Intervals for the Mean, Commun. Statist., BIO: 29-39 (1981). Law, A.M., and M.G. McComas: How Simulation Pays Off, Manuf. Eng., 100: 37-39 (February 1988). Law, A.M., and M.G. McComas: Pitfalls to Avoid in the Simulation of Manufacturing Systems, Ind. Eng., 21:28-31 (May 1989). Law, A.M., and M.G. McComas: Secrets of Successful Simulation Studies, Ind. Eng., 22: 47-48, 51-53, 72 (May 1990). Lawless, J.F.: Statistical Models for Lifetime Data, John Wiley, New York (1982). Learmonth, G.P., and P.A.W. Lewis: Naval Postgraduate School Random Number Generator Package LLRANDOM, Naval Postgraduate School, Monterey, California (1973). L’Ecuyer, P.: A Portable Random Number Generator for 16-Bit Computers, in Modeling and Simulation on Microcomputers 1987, The Society for Computer Simulation, La Jolla, California (1987). L’Ecuyer, P.: Efficient and Portable Combined Random Number Generators, Commun. Assoc. Comput. Mach., 31:742-749, 774 (1988). L’Ecuyer, P.: A Unified View of the IP A, SF, and LR Gradient Estimation Techniques, Management Set, 36:1364-1383 (1990a). L’Ecuyer, P.: Random Numbers for Simulation, Commun. Assoc. Comput. Mach., 33:85-97 (1990b). L’Ecuyer, P.: An Overview of Derivative Estimation, Proc. 1991 Winter Simulation Conference, Phoenix, p. 207-217 (1991). L’Ecuyer, P.: Efficiency Improvement and Variance Reduction, Proc. 1994 Winter Simulation Conference, Orlando, p. 122-132 (1994a). L’Ecuyer, P.: Uniform Random Number Generation, Ann. of Operations Res., 53:77-120 (1994b). L’Ecuyer, P.: Combined Multiple Recursive Random Number Generators, Operations Res., 44: 816-822 (1996). L’Ecuyer, P.: Uniform Random Number Generators: A Review, Proc. 1997 Winter Simulation Conference, Atlanta, p. 127-134 (1997). L’Ecuyer, P.: Good Parameters and Implementations for Combined Multiple Recursive Random Number Generators, Operations Res., 47:159-164 (1999). L’Ecuyer, P., and F. Blouin: Linear Congruential Generators of Order k>1, Proc. 1988 Winter Simulation Conference, San Diego, p. 432-439 (1988).
Литература 821 L’Ecuyer, Р., F. Blouin, and R. Couture: A Search for Good Multiple Recursive Random Number Generators, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul., 17: 98-111 (1993). L’Ecuyer, P., and S. Cote: Implementing a Random Number Package with Splitting Facilities, Assoc. Comput. Mach. Trans. Math. Software, 17:98-111 (1991). L’Ecuyer, P., N. Giroux, and P.W. Glynn: Stochastic Optimization by Simulation: Numerical Experiments with the M/M/1 Queue in Steady-state, Management Sci., 40:1245-1261 (1994). L’Ecuyer, P., and P.W. Glynn: Stochastic Optimization by Simulation: Convergence Proofs for the GI/G/1 Queue in Steady-state, Management Sci., 40:1562-1578 (1994). L’Ecuyer, P., and G. Perron: On the Convergence Rates of IPA and FDC Derivative Estimators, Operations Res., 42: 643-656 (1994). L’Ecuyer, P., and R. Proulx: About Polynomial-Time ’’Unpredictable" Generators, Proc. 1989 Winter Simulation Conference, Washington, D.C., p. 467-476 (1989). Lee, S., J.R. Wilson, and M.M. Crawford: Modeling and Simulation of a Nonhomogeneous Poisson Process Having Cyclic Behavior, Commun. Statist., B20: 777-809 (1991). Leemis, L.: Nonparametric Estimation of the Cumulative Intensity Function for a Nonhomogeneous Poisson Process, Management Sci., 37: 886-900 (1991). Leemis, L.: Seven Habits of Highly Successful Input Modelers, Proc. 1997 Winter Simulation Conference, Atlanta, p. 39-46 (1997). Leemis, L„ and B.W. Schmeiser; Random Variate Generation for Monte Carlo Experiments, IEEE Trans. Reliability, R-34: 81-85 (1985). Lehmer, D.H.: Mathematical Methods in Large-Scale Computing Units, Ann. Comput. Lab. Harvard Univ., 26:141-146 (1951). Levasseur, J.A.: The Case for Object-Oriented Simulation, OR/MS Today, 23: 65-67 (August 1996). Levin, B., and J. Reeds: Compound Multinomial Likelihood Functions are Unimodal: Proof of a Conjecture of I.J. Good, Ann. Statist., 5: 79-87 (1977). Lewis, P. A.W.: Generating Negatively Correlated Gamma Variates Using the Beta-Gamma Transformation, Proc. 1983 Winter Simulation Conference, Washington, D.C., p. 175-176 (1983). Lewis, P.A.W., A.S. Goodman, and J.M. Miller: A Pseudo-random Number Generator for the System/360, IBM Syst. J., 8:136-146 (1969). Lewis, P.A.W., E. McKenzie, and D.K. Hugus: Gamma Processes, Comm. Statist. Stoch. Models, 5: 1-30 (1989). Lewis, P. A.W., and G.S. Shedler Statistical Analysis of Non-Stationary Series of Events in a Data Base System, IBM J. Res. Dev., 20: 465-482 (1976). Lewis, P.A.W., and G.S. Shedler: Simulation of Nonhomogeneous Poisson Process by Thinning, Naval Res. Legist. Quart., 26: 403-413 (1979). Lewis, T.G., and W.H. Payne: Generalized Feedback Shift Register Pseudorandom Number Algorithm, J. Assoc. Comput. Mach., 20:456-468 (1973). Lilliefors, H.W.: On the Kolmogorov-Smirnov Test for Normality with Mean and Variance Unknown,/. Am. Statist. Assoc., 62: 399-402 (1967). Lilliefors, H.W.: On the Kolmogorov-Smirnov Test for the Exponential Distribution with Mean Unknown,/. Am. Statist. Assoc., 64:387-389 (1969). Littell, R.C., J.T. McClave, and W.W. Offen: Goodness-of-Fit Tests for the Two Parameter Weibull Distribution, Commun. Statist., B8: 257-269 (1979).
822 Литература Livny, М., В. Melamed, and A.K. Tsiolis: The Impact of Autocorrelation on Queueing Systems, Management Sci, 39:322-339 (1993). Lorenz, P., H. Dorwarth, K.-C. Ritter, and TJ. Schriber: Towards a Web Based Simulation Environment, Proc. 1997 Winter Simulation Conference, Atlanta, p. 1338-1344 (1997). McCormack, W.M., and R.G. Sargent: Analysis of Future Event Set Algorithms for Discrete Event Simulation, Commun. Assoc. Comput. Mach., 24:801-812 (1981). MacLaren, M.D., and G. Marsaglia: Uniform Random Number Generators, J. Assoc. Comput. Mach., 12:83-89 (1965). MacLaren, M.D., G. Marsaglia, and T. A. Bray: A Fast Procedure for Generating Exponential Random Variables, Commun. Assoc. Comput. Mach., 7: 298-300 (1964). McLeod, L: A Remark on AS 183. An Efficient and Portable Pseudo-random Number Generator, Appl. Statist., 34:198-200 (1985). Margolin, B.H., and W. Maurer: Tests of the Kolmogorov-Smirnov Type for Exponential Data with Unknown Scale, and Related Problems, Biometrika, 63:149-160 (1976). Marsaglia, G.: Generating Exponential Random Variables, Ann. Math. Statist., 32:899-902 (1961). Marsaglia, G.: Generating Discrete Random Variables in a Computer, Commun. Assoc. Comput. Mach., 6: 37-38 (1963). Marsaglia, G.: Random Numbers Fall Mainly in the Planes, Natl. Acad. Sci. Proc., 61: 25-28 (1968). Marsaglia, G.: The Structure of Linear Congruential Sequences, in Applications of Number Theory to Numerical Analysis, S.K. Zaremba, ed., Academic Press, New York (1972). Marsaglia, G.: The Exact-Approximation Method for Generating Random Variables in a Computer, J. Am. Statist. Assoc., 79:218-222 (1984). Marsaglia, G., and T.A. Bray: A Convenient Method for Generating Normal Variables, SIAM Rev., 6:260-264 (1964). Marsaglia, G., and T.A. Bray: One-Line Random Number Generators and their Use in Combinations, Commun. Assoc. Comput. Mach., 11:757-759 (1968). Marse, K., and S.D. Roberts: Implementing a Portable FORTRAN Uniform (0,1) Generator, Simulation, 41: 135-139 (1983). Marshall, A.W., and I. Olkin: A Multivariate Exponential Distribution, J. Am. Statist. Assoc., 62: 30-44 (1967). Marti, J.: Object-Oriented Modeling and Simulation with MODSIM III, CACI Products Company, La Jolla, California (1999). Matejcik, F.J., and B.L. Nelson: Two-Stage Multiple Comparisons With the Best for Computer Simulation, Operations Res., 43:633-640 (1995). Mauro, C.A.: On the Performance of Two-Stage Group Screening, Technometrics, 26:255-264 (1984). Mauro, C.A.: Efficient Identification of Important Factors in Large Scale Simulations, Proc. 1986 Winter Simulation Conference, Washington, D.C., p. 296-305 (1986). Mauro, C.A., and K.C. Burns: A Comparison of Random Balance and Two-Stage Group Screening Designs: A Case Study, Commun. Statist., A13: 2625-2647 (1984). Mauro, C.A., and D.E. Smith: The Performance of Two-Stage Group Screening in Factor Screening Experiments, Technometrics, 24:325-330 (1982). Mauro, C.A., and D.E. Smith: Factor Screening in Simulation: Evaluation of Two Strategies Based on Random Balance Sampling, Management Sci., 30: 209-221 (1984).
Литература 823 Meketon, M.S.: Optimization in Simulation: A Survey of Recent Results, Proc. 1987 Winter Simulation Conference, Atlanta, p. 58-67 (1987). Meketon, M.S., and B.W. Schmeiser: Overlapping Batch Means: Something for Nothing?, Proc. 1984 Winter Simulation Conference, Dallas, p. 227-230 (1984). Melamed, B.: TES: A Class of Methods for Generating Autocorrelated Uniform Variates, ORSA J. Comput., 3:317-329 (1991). Melamed, B., J.R. Hill, and D. Goldsman: The TES Methodology: Modeling Empirical Stationary Time Series, Proc. 1992 Winter Simulation Conference, Washington, D.C., p. 135-144 (1992). Menon, M.V.: Estimation of the Shape and Scale Parameters of the Weibull Distribution, Technometrics, 5:175-182 (1963). Michalewicz, Z.: Genetic Algorithms + Data Structures = Evolution Programs, 3d ed., Springer-Verlag, New York (1996). Micro Analysis & Design, Inc.: Micro Saint User’s Manual, Version 3.0, Boulder, Colorado (1998). MIL 3, Inc.: IT DecisionGuru User Guide, Version 6.0, Washington, D.C. (1999a). MIL 3, Inc.: OPNET Modeler Modeling Concepts and Simulation Kernel, Version 6.0, Washington, D.C. (1999b). Miller, J.O., B.L. Nelson, and C.H. Reilly. Efficient Multinomial Selection in Simulation, Naval Res. Legist., 45:459-482 (1998). Miller, R.G., Jr.: The Jackknife—A Review, Biometrika, 61:1-15 (1974). Miller, R.G., Jr.: Developments in Multiple Comparisons, 1966-1977, J. Am. Statist. Assoc., 72: 779-788 (1977). Milton, R.C., and R. Hotchkiss: Computer Evaluation of the Normal and Inverse Normal Distribution Functions, Technometrics, 11:817-822 (1969). Minh, D.L.: A Variant of the Conditional Expectation Variance Reduction Technique and its Application to the Simulation of the Gl/G/1 Queues, Management Sci., 35:1334-1340 (1989). Misra, J.: Distributed Discrete-Event Simulation, Computing Surveys, 18:39-65 (1986). Mitchell, B.: Variance Reduction by Antithetic Variates in GI/G/1 Queueing Simulations, Operations Res., 21:988-997 (1973). Mitchell, C.R., and A.S. Paulson: M/M/1 Queues with Interdependent Arrival and Service Processes, Naval Res. Legist. Quart., 26:47-56 (1979). Mitchell, C.R, A.S. Paulson, and C.A. Beswick: The Effect of Correlated Exponential Service Times on Single Server Tandem Queues, Naval Res. Legist. Quart., 24:95-112 (1977). Mitchell, T.J., and M.D. Morris: The Spatial Correlation Function Approach to Response Surface Estimation, Proc. 1992 Winter Simulation Conference, Washington, D.C., p. 565-571 (1992). Miyatake, О., M. Ichimura, Y. Yoshizawa, and H. Inoue: Mathematical Analysis of Random Number Generator Using Gamma-Rays I, Math. Jap., 28:399-414 (1983). Mollaghasemi, M., and G.W. Evans: Multicriteria Design of Manufacturing Systems through Simulation Optimization, IEEE Trans. Systems, Man, and Cybernetics, 24:1407-1411 (1994). Mollaghasemi, M., G.W. Evans, and W.E. Biles: An Approach for Optimizing Multiresponse Simulation Models, Computers and Industrial Eng., 21: 201-203 (1991). Monahan, J.F.: Accuracy in Random Number Generation, Math. Comput., 45:559-568 (1985). Montgomery, D.C.: Design and Analysis of Experiments, 4th ed., John Wiley, New York (1997). Montgomery, D.C., and V.M. Bettencourt, Jr.: Multiple Response Surface Methods in Computer Simulation, Simulation, 29:113-121 (1977).
824 Литература Mood, А.М., F.A. Graybill, and D.C. Boes: Introduction to the Theory of Statistics, 3d ed., McGraw-Hill, New York (1974). Morgan, B.J.T.: Elements of Simulation, Chapman & Hall, London (1984). Mortice, DJ., and L.W. Schruben: Simulation Factor Screening Using Cross-Spectral Methods, Operations Res. Letters, 13: 247-257 (1993a). Mortice, D.J., and L.W. Schruben: Simulation Factor Screening Using Harmonic Analysis, Management Sci., 39:1459-1476 (1993b). Murray, J.R.: Stochastic Initialization in Steady-State Simulations, Ph.D. Dissertation, Department of Industrial and Operations Engineering, The University of Michigan, Ann Arbor (1988). Murray, J.R., and W.D. Kelton: The Transient Behavior of the M/Ek/2 Queue and Steady-State Simulation, Computersand Operations Res., 75:357-367 (1988). Myers, R.H., A.I. Khuri, and W.H. Carter, Jr.: Response Surface Methodology, 1966-1988, Technometrics, 31:137-157 (1989). Myers, R.H., and D.C. Montgomery: Response Surface Methodology: Process and Product in Optimization Using Designed Experiments, John Wiley, New York (1995). Nakayama, M.K.: Fast Simulation Methods for Highly Dependable Systems, Proc. 1994 Winter Simulation Conference, Orlando, p. 221-228 (1994). Nakayama, M.K.: Asymptotics of Likelihood Ratio Derivative Estimators in Simulations of Highly Reliable Markovian Systems, Management Sci., 41:524-554 (1995). Nakayama, M. K.: On Derivative Estimation of the Mean Time to Failure in Simulations of Highly Reliable Markovian Systems, Operations Res., 46: 285-290 (1998). Nakayama, M.K., A. Goyal, and P.W. Glynn: Likelihood Ratio Sensitivity Analysis for Markovian Models of Highly Dependable Systems, Operations Res., 42:137-157 (1994). Nakayama, M.K., and P. Shahabuddin: Likelihood Ratio Derivative Estimation for Finite-Time Performance Measures in Generalized Semi-Markov Processes, Management Sci., 44: 1426-1441 (1998). Nance, R.E., and C. Overstreet, Jr.: A Bibliography on Random Number Generation, Comp. Rev., 13:495-508 (1972). Nance, R.E., and C. Overstreet, Jr.: Implementation of Fortran Random Number Generators on Computers with One's Complement Arithmetic, J. Statist. Comput. Simul., 4: 235-243 (1975). Nance, R.E., and C. Overstreet, Jr.: Some Experimental Observations on the Behavior of Composite Random Number Generators, Operations Res., 26:915-935 (1978). Naylor, Т.Н.: Computer Simulation Experiments with Models of Economic Systems, John Wiley, New York (1971). Naylor, Т.Н., and J.M. Finger: Verification of Computer Simulation Models, Management Sci., 14: 92-101 (1967). Nelson, B.L.: A Decomposition Approach to Variance Reduction, Proc. 1985 Winter Simulation Conference, San Francisco, p. 23-33 (1985). Nelson, B.L.: Decomposition of Some Well-Known Variance Reduction Techniques, J. Statist. Comput. Simul., 23:183-209 (1986). Nelson, B.L.: A Perspective on Variance Reduction in Dynamic Simulation Experiments, Com-mun. Statist., B16:385-426 (1987a). Nelson, B.L.: Some Properties of Simulation Interval Estimators under Dependence Induction, Operations Res. Letters, 6:169-176 (1987b).
Литература 825 Nelson, B.L.: Variance Reduction for Simulation Practitioners, Proc. 1987 Winter Simulation Conference, Atlanta, p. 43-51 (1987c). Nelson, B.L.: Batch Size Effects on the Efficiency of Control Variates in Simulation, Eur. J. Operational Res., 43: 184-196 (1989). Nelson, B.L.: Control-Variate Remedies, Operations Res., 38:974-992 (1990a). Nelson, B.L.: Variance Reduction in the Presence of Initial-Condition Bias, HE Trans., 22: 340-350 (1990b). Nelson, B.L.: Statistical Analysis of Simulation Results, in Handbook of Industrial Engineering, 2d ed., G. Salvendy, ed., John Wiley, New York (1992). Nelson, B.L.: Robust Multiple Comparisons Under Common Random Numbers, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul., 3: 225-243 (1993). Nelson, B.L., M.C. Cario, C.A. Harris, S.A. Jamison, J.O. Miller, J. Steinburgl, J. Yang, and P. Ware: Input Modeling when Simple Models Fail, Proc. 1995 Winter Simulation Conference, Washington, D.C., p. 93-100 (1995). Nelson, B.L., and J.C. Hsu: Control-variate Models of Common Random Numbers for Multiple Comparisons with the Best, Management Sci., 39:989-1001 (1993). Nelson, B.L., and FJ. Matejcik: Using Common Random Numbers for Indifference-Zone Selection and Multiple Comparisons in Simulation, Management Sci., 41:1935-1945 (1995). Nelson, B.L., B.W. Schmeiser, M.R. Taaffe, and J. Wang: Approximation-Assisted Point Estimation, Operations Res. Letters, 20:109-118 (1997). Nicol, D.M.: Principles of Conservative Parallel Simulation, Proc. 1996 Winter Simulation Conference, San Diego, p. 128-135 (1996). Nicol, D.M., and P. Heidelberger: Parallel Execution for Serial Simulators, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul., 6:210-242 (1996). Nicol, D.M., M.M. Johnson, and A.S. Yoshimura: The IDES Framework: A Case Study in Development of a Parallel Discrete-Event Simulation System, Proc. 1997 Winter Simulation Conference, Atlanta, p. 93-99 (1997). Niederreiter, H.: Pseudo-random Numbers and Optimal Coefficients, Adv. Math., 26:99-181 (1977). Niederreiter, H.: Quasi-Monte Carlo Methods and Pseudo-random Numbers, Bull. Am. Math. Soc., 84:957-1041 (1978a). Niederreiter, H.: The Serial Test for Linear Congruential Pseudo-random Numbers, Bull. Am. Math. Soc., 84:273-274 (1978b). Nozari, A., S.F. Arnold, and C.D. Pegden: Statistical Analysis with the Schruben and Margolin Correlation Induction Strategy, Operations Res., 35:127-139 (1987). Odeh, R.E., and J.O. Evans: The Percentage Points of the Normal Distribution, Appl. Statist., 23: 96-97 (1974). Owen, D.B.: Handbook of Statistical Tables, Addison-Wesley, Reading, Massachusetts (1962). Pace, D.K.: Verification, Validation, and Accreditation (VV&A), in Applied Modeling and Simulation: An Integrated Approach to Development and Operation, DJ. Cloud and L.B. Rainey, eds., McGraw-Hill, New York (1998). Page, E.S.: On Monte Carlo Methods in Congestion Problems: II. Simulation of Queueing Systems, Operations Res., 13:300-305 (1965). Park, S.K., and K.W. Millen Random Number Generators: Good Ones Are Hard to Find, Com-mun. Assoc. Comput. Mach., 31:1192-1201 (1988).
826 Литература Pawlikowski, К.: Steady-State Estimation of Queueing Processes: A Survey of Problems and Solutions, Assoc. Comput. Mach. Computing Surveys, 22:123-170 (1990). Payne, W.H.: Fortran Tausworthe Pseudorandom Number Generator, Commun. Assoc. Comput. Mach., 13:57 (1970). Payne, W.H., J.R. Rabung, and T.P. Bogyo: Coding the Lehmer Pseudorandom Number Generator, Commun. Assoc. Comput. Mach., 12: 85-86 (1969). Pearson, K.: On a Criterion that a Given System of Deviations from the Probable in the Case of a Correlated System of Variables is Such That it can be Reasonably Supposed to Have Arisen in Random Sampling, Phil. Mag. (5), 50:157-175 (1900). Pegden, C.D., R.E. Shannon, and R.P. Sadowski: Introduction to Simulation Using SIMAN, 2d ed., McGraw-Hill, New York (1995). Peterson, A. V, Jr., and R. A. Kronmal: On Mixture Methods for the Computer Generation of Random Variables, Am. Statistician, 36:184-191 (1982). Peterson, A.V., Jr., and R.A. Kronmal: Analytic Comparison of Three General-Purpose Methods for the Computer Generation of Discrete Random Variables, Appl. Statist., 32: 276-286 (1983). Pettitt, A.N., and M.A. Stephens: The Kolmogorov-Smirnov Goodness-of-Fit Statistic with Discrete and Grouped Data, Technometrics, 19: 205-210 (1977). Pierreval, H., and L. Tautou: Using Evolutionary Algorithms and Simulation for the Optimization of Manufacturing Systems, HE Trans., 29:181-189 (1997). Plackett, R.L., and J.P. Burman: The Design of Optimum Multifactor Experiments, Biometrika, 33: 305-325 (1946). Porcaro, D.: Simulation Modeling and DOE, HE Solutions: 24-30 (September 1996). Porta Nova, A.M., and J.R. Wilson: Estimation of Multiresponse Simulation Metamodels Using Control Variates, Management Sci., 35:1316-1333 (1989). Porta Nova, A.M., and J.R. Wilson: Selecting Control Variates to Estimate Multiresponse Simulation Metamodels, Eur. J. Operational Res., 71: 80-94 (1993). Press, W.H., S.A. Teukolsky, W.T. Vetterling, and B.P. Flannery: Numerical Recipes in C: The Art of Scientific Computing, 2d ed., Cambridge University Press, Cambridge (1992). Pritsker, A.A.B.: Introduction to Simulation and SLAM II, 4th ed., John Wiley, New York (1995). Pritsker, A.A.B., and JJ. O'Reilly: Simulation with Visual SLAM and AweSim, 2d ed., John Wiley, New York (1999). ProcessModel, Inc.: ProcessModel User Guide, Version 3.1, Provo, Utah (1998). PROMODEL Corporation: SimRunner2 User's Guide, Orem, Utah (1998). PROMODEL Corporation: MedModel User's Guide, Version 4.2, Orem, Utah (1999a). PROMODEL Corporation: ProModel User's Guide, Version 4.2, Orem, Utah (1999b). PROMODEL Corporation: ServiceModel User's Guide, Version 4.2, Orem, Utah (1999c). Pugh, W.: Skip Lists: A Probabilistic Alternative to Balanced Trees, Commun. Assoc. Comput. Mach., 33:668-676 (1990). Raatikainen, K.E.E.: Sequential Procedure for Simultaneous Estimation of Several Percentiles, Trans., of the Society for Comp. Simulation, 7: 21-24 (1990). Rajasekaran, S., and K.W. Ross: Fast Algorithms for Generating Discrete Random Variates with Changing Distributions, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul, 3:1-19 (1993). Ramberg, J.S., and PR. Tadikamalla: On the Generation of Subsets of Order Statistics, J. Statist. Comput. Simul, 6:239-241 (1978).
Литература 827 Rand Corporation: A Million Random Digits with 100,000 Normal Deviates, Free Press, Glencoe, Illinois (1955). Reeves, C.M.: Complexity Analyses of Event Set Algorithms, The Computer Journal, 27:72-79 (1984). Reif, J.H., and J.D. Tygar: Efficient Parallel Pseudorandom Number Generation, SIAMJ. Comput., 17:404-411 (1988). Reiman, M.I., and A. Weiss: Sensitivity Analysis for Simulations via Likelihood Ratios, Operations Res., 37:830-844 (1989). Ripley, B.D.: Computer Generation of Random Variables: A Tutorial, Int. Statist. Rev., 51:301-319 (1983a). Ripley, B.D.: The Lattice Structure of Pseudo-random Number Generators, Proc. Roy. Soc. London, A389:197-204 (1983b). Ripley, B.D.: Stochastic Simulation, John Wiley, New York (1987). Robbins, H., G. Simons, and N. Starr: A Sequential Analogue of the Behrens-Fisher Problem, Ann. Math. Statist., 38:1384-1391 (1967). Robinson, S.: Simulation Projects: Building the Right Conceptual Model, Ind. Eng., 26:34-36 (September 1994). Ronning, G.: A Simple Scheme for Generating Multivariate Gamma Distributions with Non-negative Covariance Matrix, Technometrics, 19:179-183 (1977). Rosenblatt, MJ., Y. Roll, and V. Zyse: A Combined Optimization and Simulation Approach for Designing Automated Storage/Retrieval Systems, HE Trans., 25:40-50 (1993). Ross, S.M.: Introduction to Probability Models, 6th ed., Academic Press, San Diego (1997). Rubinstein, R.Y.: Simulation and the Monte Carlo Method, John Wiley, New York (1981). Rubinstein, R.Y.: Monte Cario, Optimization, Simulation and Sensitivity of Queueing Networks, Krieger Publishing Co., Malabar, Florida (1992). Rubinstein, R.Y., and R. Marcus: Efficiency of Multivariate Control Variates in Monte Carlo Simulation, Operations Res., 33:661-667 (1985). Rubinstein, R.Y., B. Melamed, and A. Shapiro: Modem Simulation and Modeling, John Wiley, New York (1998). Rubinstein, R.Y., G. Samorodnitsky, and M. Shaked: Antithetic Variates, Multivariate Dependence, and Simulation of Complex Stochastic Systems, Management Sci., 31:66-77 (1985). Rubinstein, R.Y., and A. Shapiro: Discrete Event Systems: Sensitivity Analysis and Stochastic Optimization by the Score Function Method, John Wiley, New York (1993). Rudolph, E., and D.M. Hawkins: Random Number Generators in Cyclic Queueing Applications, J. Statist. Comput. Simul, 5:65-71 (1976). Runciman, N., N. Vagenas, and T. Corkal: Simulation of Haulage Truck Loading Techniques in an Underground Mine Using WITNESS, Simulation, 68: 291-299 (1997). Russell, E.G.: Simulation and SIMSCRIPTII.5, CACI, Inc., Los Angeles (1976). Safizadeh, M.H.: Optimization in Simulation: Current Issues and Future Outlook, Naval Res. Legist., 37:807-825 (1990). Safizadeh, M.H., and R. Signorile: Optimization of Simulation via Quasi-Newton Methods, ORSA J. Comput., 6:398-408 (1994). Sammons, S.M., and J.K. Cochran: The Use of Simulation in the Optimization of a Cellular Manufacturing System, Proc. 1996 Winter Simulation Conference, San Diego, p. 55-64 (1996).
828 Литература Sanchez, P.J., and A.H. Buss: A Model for Frequency Domain Experiments, Proc. 1987 Winter Simulation Conference, Atlanta, p. 424-427 (1987). Sanchez, PJ., and S.M. Sanchez: Design of Frequency Domain Experiments for Discrete-Valued Factors, Appl. Math, and Computation, 42:1-21 (1991). Sanchez, P.J., and L.W. Schruben: Simulation Factor Screening Using Frequency Domain Methods: An Illustrative Example, Working Paper 87-013, Department of Systems and Industrial Engineering, University of Arizona, Tucson (1987). Sanchez, S.M.: A Robust Design Tutorial, Proc. 1994 Winter Simulation Conference, Orlando, p. 106-113 (1994). Santner, T.J.: A Restricted Subset Selection Approach to Ranking and Selection Problems, Arm. Statist., 3: 334-349 (1975). Sargent, R.G.: Event Graph Modelling for Simulation with an Application to Flexible Manufacturing Systems, Management Sci., 34:1231-1251 (1988). Sargent, R.G.: Research Issues in Metamodeling, Proc. 1991 Winter Simulation Conference, Phoenix, p. 888-893 (1991). Sargent, R.G.: Verifying and Validating Simulation Models, Proc. 1996 Winter Simulation Conference, San Diego, p. 55-64 (1996a). Sargent, R.G.: Some Subjective Validation Methods Using Graphical Displays of Data, Proc. 1996 Winter Simulation Conference, San Diego, p. 345-351 (1996b). Sargent, R.G., K. Kang, and D. Goldsman: An Investigation of Finite-Sample Behavior of Confidence Interval Estimators, Operations Res., 40:898-913 (1992). Sargent, R.G., and T.K. Som: Current Issues in Frequency Domain Experimentation, Management Set., 38:667-687 (1992). Sawitzki, G.: Another Random Number Generator Which Should Be Avoided, Statistical Software Newsletter, 11: 81-82 (1985). Scheffe, H.: Practical Solutions of the Behrens-Fisher Problem, J. Am. Statist. Assoc., 65:1501-1508 (1970). Scheuer, E.M., and D.S. Stoller: On the Generation of Normal Random Vectors, Technometrics, 4: 278-281 (1962). Schmeiser, B.W.: Generation of the Maximum (Minimum) Value in Digital Computer Simulation, J. Statist. Comput. Simul, 8:103-115 (1978a). Schmeiser, B.W.: The Generation of Order Statistics in Digital Computer Simulation: A Survey, Proc. 1978 Winter Simulation Conference, Miami, p. 137-140 (1978b). Schmeiser, B.W.: Generation of Variates from Distribution Tails, Operations Res., 28:1012-1017 (1980a). Schmeiser, B.W.: Random Variate Generation: A Survey, Proc. 1980 Winter Simulation Conference, Orlando, p. 79-104 (1980b). Schmeiser, B.W.: Batch Size Effects in the Analysis of Simulation Output, Operations Res., 30: 556-568 (1982). Schmeiser, B.W.: Recent Advances in Generating Observations from Discrete Random Variables, Proc. 15th Symposium on the Interface of Computer Science and Statistics, North-Holland, p. 154-160 (1983). Schmeiser, B.W.: Simulation Experiments, in Handbooks in OR & MS, Vol. 2, D.R Heyman and M.J. Sobel, eds., Elsevier Science Publishers (North-Holland), Amsterdam (1990).
Литература 829 Schmeiser, B.W., and AJ.G. Babu: Beta Variate Generation via Exponential Majorizing Functions, Operations Res., 28: 917-926 (1980). Schmeiser, B.W., and V. Kachitvichyanukul: Poisson Random Variate Generation, Research Memorandum 81-4, School of Industrial Engineering, Purdue University, West Lafayette, Indiana (1981). Schmeiser, B.W., and V. Kachitvichyanukul: Correlation Induction without the Inverse Transformation, Proc. 1986 Winter Simulation Conference, Washington, D.C., p. 266-274 (1986). Schmeiser, B.W., and R. Lai: Multivariate Modeling in Simulation: A Survey, ASQC Tech. Conf. Trans., p. 252-261 (1980a). Schmeiser, B.W., and R. Lai: Squeeze Methods for Generating Gamma Variates, J. Am. Statist. Assoc., 75:679-682 (1980b). Schmeiser, B.W., and R. Lai: Bivariate Gamma Random Vectors, Operations Res., 30:355-374 (1982). Schmeiser, B.W., and M.A. Shalaby: Acceptance/Rejection Methods for Beta Variate Generation, J. Am. Statist. Assoc., 75:673-678 (1980). Schmeiser, B.W., and W.T. Song: Batching Methods in Simulation Output Analysis: What We Know and What We Don't, Proc. 1996 Winter Simulation Conference, San Diego, p. 122-127(1996). Schmeiser, B.W., and M.R. Taaffe: Time-Dependent Queueing Network Approximations as Simulation External Control Variates, Operations Res. Letters, 16:1-9 (1994). Schmidt, J.W., and R.E. Taylor: Simulation and Analysis of Industrial Systems, Richard D. Irwin, Homewood, Illinois (1970). Schrage, L.: A More Portable Random Number Generator, Assoc. Comput. Mach. Trans. Math. Software, 5:132-138 (1979). Schriber, T.J.: Simulation Using GPSS, John Wiley, New York (1974). Schriber, T.J.: An Introduction to Simulation Using GPSS/H, John Wiley, New York (1991). Schriber, TJ., and R.W. Andrews: An ARMA-Based Confidence Interval for the Analysis of Simulation Output, Am. J. Math. Management Sci., 4:345-373 (1984). Schruben, L.W.: Designing Correlation Induction Strategies for Simulation Experiments, in Current Issues in Computer Simulation, N.R. Adam and A. Dogramici, eds., Academic Press, New York (1979). Schruben, L.W.: Establishing the Credibility of Simulations, Simulation, 34:101-105 (1980). Schruben, L.W.: Detecting Initialization Bias in Simulation Output, Operations Res., 30:569-590 (1982). Schruben, L.W.: Confidence Interval Estimation Using Standardized Time Series, Operations Res., 31: 1090-1108 (1983a). Schruben, L.W.: Simulation Modeling with Event Graphs, Commun. Assoc. Comput. Mach., 26: 957-963 (1983b). Schruben, L.W.: Simulation Optimization Using Frequency Domain Methods, Proc. 1986 Winter Simulation Conference, Washington, D.C., p. 366-369 (1986). Schruben, LW.: Graphical Simulation Modeling and Analysis: Using Sigma for Windows, Boyd & Fraser Publishing Co., Danvers, Massachusetts (1995). Schruben, L.W.: Simulation Optimization Using Simultaneous Replications and Event Time Dilation, Proc. 1997 Winter Simulation Conference, Atlanta, p. 177-180 (1997).
830 Литература Schruben, L.W., and VJ. Cogliano: An Experimental Procedure for Simulation Response Surface Model Identification, Commun. Assoc. Comput. Mach., 30:716-730 (1987). Schruben, L.W., and B.H. Margolin: Pseudorandom Number Assignment in Statistically Designed Simulation and Distribution Sampling Experiments, J. Am. Statist. Assoc., 73: 504-520 (1978). Schruben, L.W., H. Singh, and L. Tierney: Optimal Tests for Initialization Bias in Simulation Output, Operations Res., 31:1167-1178 (1983). Schucany, W.R.: Order Statistics in Simulation, J. Statist. Comput. Simul., 1: 281-286 (1972). Scott, D.W.: On Optimal and Data-Based Histograms, Biometrika, 66: 605-610 (1979). SES, Inc.: SES/workbench Manuals, Austin, Texas (1998). Shahabuddin, P.: Importance Sampling for the Simulation of Highly Reliable Markovian Systems, Management Sci., 40:333-352 (1994). Shahabuddin, P.: Rare Event Simulation in Stochastic Models, Proc. /995 Winter Simulation Conference, Washington, D.C., p. 178-185 (1995). Shanker, M.S., W.D. Kelton, and R. Padman: Measuring Congestion for Dynamic Task Allocation in Distributed Simulation, О RS A J. Comput., 5: 54-68 (1993). Shanker, M.S., R. Padman, and W.D. Kelton: Efficient Distributed Simulation through Dynamic Load Balancing, HE Trans. (2000). Shannon, R.E.: Systems Simulation: The Art and Science, Prentice-Hall, Englewood Cliffs, New Jersey (1975). Shanthikumar, J.G.: Discrete Random Variate Generation Using Uniformization, Eur. J. Operational Res., 21:387-398 (1985). Shanthikumar, J.G., and J.A. Buzacott: Stochastic Models of Manufacturing Systems, Prentice-Hall, Englewood Cliffs, New Jersey (1993). Shapiro, S.S., and M.B. Wilk: An Analysis of Variance Test for Normality (Complete Samples), Biometrika, 52:591-611 (1965). Shaw, W.H., Jr., N.J. Davis IV, and R.A. Raines: The Application of Metamodeling to Interconnection Network Analysis, ORSAJ. Comput., 6:369-380 (1994). Sheppard, S., R.E. Young, U. Chandrasekaran, and M. Krishnamurthi: Three Mechanisms for Distributing Simulation, Proc. 12th Conference of the NSF Production Research and Technology Program, Madison, Wisconsin, p. 67-70 (1985). Sigal, C.E., A.A.B. Pritsker, and J.J. Solberg: The Use of Cutsets in Monte Carlo Analysis of Stochastic Networks, Math. Comput. Simul., 21:376-384 (1979). Silverman, B.W.: Density Estimation for Statistics and Data Analysis, Chapman & Hall, London (1986). Simon, B.: A New Estimator of Sensitivity Measures for Simulations Based on Light Traffic Theory, ORSAJ. Comput., 1: 172-180 (1989). Skapura, D.M.: Building Neural Networks, Addison-Wesley, Reading, Massachusetts (1996). Slifker, J., and S.S. Shapiro: On the Johnson System of Distributions, Technometrics, 22:239-246 (1980). Smith, R.L.: Efficient Monte Carlo Procedures for Generating Points Uniformly Distributed over Bounded Regions, Operations Res., 32:1296-1308 (1984). Som, T.K., and R.G. Sargent: Alternative Methods for Generating and Analyzing the Output Series of Frequency Domain Experiments, Proc. 1988 Winter Simulation Conference, San Diego, p. 564-567 (1988).
Литература 831 Som, Т.К., and R.G. Sargent: A Formal Development of Event Graphs as an Aid to Structured and Efficient Simulation Programs, ORSA J. Comput., 1:107-125 (1989). Som, T.K., R.G. Sargent, and L.W. Schruben: Frequency Domain Metamodelling of a Feedback Queue, Proc. 1987 Winter Simulation Conference, Atlanta, p. 419-423 (1987). Song, W.T., and C.C. Su: An Extension of the Multiple-Blocks Strategy on Estimating Simulation Metamodels, HE Trans., 28:511-519 (1996). Sowey, E.R.: A Third Classified Bibliography on Random Number Generation and Testing, J. Roy. Statist. Soc., A/49: 83-107 (1986). Srikant, R., and W. Whitt: Variance Reduction in Simulations of Loss Models, Operations Res., 47:509-523 (1999). Stanfield, P.M., J.R. Wilson, G.A. Mirka, N.F. Glasscock, J.P. Psihogios, and J.R. Davis: Multivariate Input Modeling with Johnson Distributions, Proc. 1996 Winter Simulation Conference, San Diego, p. 1457-1464 (1996). Stephens, M.A.: EOF Statistics for Goodness of Fit and Some Comparisons, J. Am. Statist Assoc., 69:730-737 (1974). Stephens, M.A.: Asymptotic Results for Goodness-of-Fit Statistics with Unknown Parameters, Ann. Statist., 4:357-369 (1976). Stephens, M.A.: Goodness of Fit for the Extreme Value Distribution, Biometrika, 64: 583-588 (1977). Stephens, M.A.: Tests of Fit for the Logistic Distribution Based on the Empirical Distribution Function, Biometrika, 66:591-595 (1979). Stidham, S: A Last Word on L - Xw, Operations Res., 22: 417-421 (1974). Strickland, S.G.: Gradient/Sensitivity Estimation in Discrete-Event Simulation, Proc. 1993 Winter Simulation Conference, Los Angeles, p. 97-105 (1993). Stuckman, B., G.W. Evans, and M. Mollaghasemi: Comparison of Global Search Methods for Design Optimization Using Simulation, Proc. 1991 Winter Simulation Conference, Phoenix, p. 937-944 (1991). Sullivan, D.W., and J.R. Wilson: Restricted Subset Selection Procedures for Simulation, Operations Res., 37:52-71 (1989). Suri, R.: Infinitesimal Perturbation Analysis for General Discrete Event Systems, J. Assoc. Comput. Mach., 34:686-717 (1987). Suri, R, and M.A. Zazanis: Perturbation Analysis Gives Strongly Consistent Estimates for the M/G/l Queue, Management Sci., 34:39-64 (1988). Swain, JJ., S. Venkatraman, and J.R. Wilson: Least-Squares Estimation of Distribution Functions in Johnson's Translation System,/. Statist. Comput. Simul., 29:271-297 (1988). Swart, W., and L. Donno: Simulation Modeling Improves Operations, Planning, and Productivity for Fast Food Restaurants, Interfaces, 11:6: 35-47 (1981). Symix Systems, Inc.: AweSim User's Guide, Version 3.0, West Lafayette, Indiana (1999). Systems Modeling Corporation: Arena Call Center Edition User’s Guide, Version 4.0, Sewickley, Pennsylvania (1999a). Systems Modeling Corporation: Arena Packaging Edition User's Guide, Version 4.0, Sewickley, Pennsylvania (1999b). Systems Modeling Corporation: Arena User's Guide, Version 4.0, Sewickley, Pennsylvania (1999c). Systems Modeling Corporation: Guide to Arena Business Edition, Version 4.0, Sewickley, Pennsylvania (1999d).
832 Литература Tadikamalla, P.R.: Computer Generation of Gamma Random Variables-II, Commun. Assoc. Comput. Mach., 21:925-928 (1978). Tadikamalla, PR., and M.E. Johnson: A Complete Guide to Gamma Variate Generation, Am. J. Math. Management Sci., 1: 78-95 (1981). Tausworthe, R.C.: Random Numbers Generated by Linear Recurrence Modulo Two, Math. Com-put., 19:201-209 (1965). Tecnomatix Technologies, Inc.: SIMPLE++ 5.0 Reference Manual, Novi, Mich. (1998). Teleb, R., and F. Azadivar: A Methodology for Solving Multiobjective Simulation-Optimization Problems, Eur.J. Operational Res., 72:135-145 (1994). Tew, J.D.: Using Central Composite Designs in Simulation Experiments, Proc. 1992 Winter Simulation Conference, Washington, D.C., p. 529-538 (1992). Tew, J.D., and J.R. Wilson: Estimating Simulation Metamodels Using Integrated Variance Reduction Techniques, Proc. Stat. Comput. Sec. Am. Statist. Assoc., p. 23-32 (1988). Tew, J.D., and J.R. Wilson: Validation of Simulation Analysis Methods for the Schruben-Margolin Correlation-Induction Strategy, Operations Res., 40:87-103 (1992). Tew, J.D., and J.R. Wilson: Estimating Simulation Metamodels Using Combined Correlation-based Variance Reduction Techniques, HE Trans., 26:2-16 (1994). Thoman, D.R., L.J. Bain, and C.E. Antle: Inferences on the Parameters of the Weibull Distribution, Technometrics, 11:445—460 (1969). Thomson, W.E.: ERNIE—A Mathematical and Statistical Analysis, J. Roy. Statist. Soc., A122: 301-324 (1959). Tootill, J.P.R., W.D. Robinson, and A.G. Adams: The Runs Up-and-Down Performance of Tausworthe Pseudo-random Number Generators, J. Assoc. Comput. Mach., 18: 381-399 (1971). Tootill, J.P.R., W.D. Robinson, arid DJ. Eagle: An Asymptotically Random Tausworthe Sequence, J. Assoc. Comput. Mach., 20:469-481 (1973). Tukey, J.W.: Exploratory Data Analysis, Addison-Wesley, Reading, Massachusetts (1970). Turing, A.M.: Computing Machinery and Intelligence, Mind, 59: 433-460 (1950). Van Groenendaal, W., and J.P.C. Kleijnen: Regression Metamodels and Design of Experiments, Proc. 1996 Winter Simulation Conference, San Diego, p. 1433-1439 (1996). Van Horn, R.L.: Validation of Simulation Results, Management Sci., 17: 247-258 (1971). Vassilacopoulos, G.: Testing for Initialization Bias in Simulation Output, Simulation, 52:151-153 (1989). Vazquez-Abad, FJ., and HJ. Kushner: The Surrogate Estimation Approach for Sensitivity Analysis in Queueing Networks, Proc. 1993 Winter Simulation Conference, Los Angeles, p. 347-355 (1993). Venkatraman, S., and J.R. Wilson: The Efficiency of Control Variates in Multiresponse Simulation, Operations Res. Letters, 5:37-42 (1986). Visual Numerics, Inc.: IMSL FORTRAN and C Numerical and Statistics Libraries, Houston, http://www.vni.com/products/imsl (1997). Visual Thinking International Ltd.: SIMUL8 Manual and Simulation Guide, Reston, Virginia (1999). von Neumann, J. (summarized by G.E. Forsythe): Various Techniques Used in Connection with Random Digits, Natl. Bur. Std. Appl. Math. Ser., 12:36-38 (1951). Wagner, H.M.: Principles of Operations Research, Prentice-Hall, Englewood Cliffs, New Jersey (1969).
Литература 833 Wagner, M.A.F., and J.R. Wilson: Graphical Interactive Simulation Input Modeling with Bivari-ate Bezier Distributions, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul, 5: 163-189 (1995). Wagner, M.A.F., and J.R. Wilson: Recent Developments in Input Modeling with Bezier Distributions, Proc. 1996 Winter Simulation Conference, San Diego, p. 1448-1456 (1996a). Wagner, M.A.F., and J.R. Wilson: Using Univariate Bezier Distributions to Model Simulation Input Processes, HE Trans., 28: 699-711 (1996b). Walker, AJ.: An Efficient Method for Generating Discrete Random Variables with General Distributions, Assoc. Comput. Mach. Trans. Math. Software, 3:253-256 (1977). Watson, E.F., P.P. Chawda, B. McCarthy, M.J. Drevna, and R.P. Sadowski: A Simulation Meta-model for Response-Time Planning, Decision Sci, 29:217-241 (1998). Webb, T.S., and K.W. Bauer, Jr.: Comparison of Analysis Strategies for Screening Designs in Large-Scale Computer Simulation Models, Proc. 1994 Winter Simulation Conference, Orlando, p. 305-311 (1994). Wegman, E.J.: Density Estimation, in Encyclopedia of Statistical Sciences, Vol. 2, N.L. Johnson and S. Kotz, eds., John Wiley, New York (1982). Welch, B.L.: The Significance of the Difference Between Two Means When the Population Variances are Unequal, Biometrika, 25:350-362 (1938). Welch, P.D.: On the Problem of the Initial Transient in Steady-State Simulation, IBM Watson Research Center, Yorktown Heights, New York (1981). Welch, P.D.: The Statistical Analysis of Simulation Results, in The Computer Performance Modeling Handbook, S.S. Lavenberg, ed.. Academic Press, New York (1983). Whitt, W.: Bivariate Distributions with Given Marginals, Ann. Statist., 4:1280-1289 (1976). Wichmann, B.A., and I.D. Hill: An Efficient and Portable Pseudo-random Number Generator, Appl. Statist., 31:188-190 (1982). Wichmann, B.A., and I.D. Hill: Correction to "An Efficient and Portable Pseudo-random Number Generator," Appl. Statist, 33:123 (1984). Wilk, M.B., and R. Gnanadesikan: Probability Plotting Methods for the Analysis of Data, Biometrika, 55:1-17(1968). Williams, M.L., and J. Sikora: SIMVAL Minisymposium—A Report, Phalanx, 2:1, 3-6 (1991). Wilson, J.R.: Proof of the Antithetic-Variates Theorem for Unbounded Functions, Math. Proc. Camb. Phil. Soc., 86:477-479 (1979). Wilson, J.R.: Antithetic Sampling with Multivariate Inputs, Am. J. Math. Management Sci., 3: 121-144 (1983). Wilson, J.R.: Variance Reduction Techniques for Digital Simulation, Am. J. Math. Management Sci., 4: 277-312 (1984). Wilson, J.R.: Future Directions in Response Surface Methodology for Simulation, Proc. 1987 Winter Simulation Conference, Atlanta, p. 378-381 (1987). Wilson, J.R.: Modeling Dependencies in Stochastic Simulation Inputs, Proc. 1997 Winter Simulation Conference, Atlanta, p. 47-52 (1997). Wilson, J.R., and A.A.B. Pritsker: Variance Reduction in Queueing Simulation Using Generalized Concomitant Variables,/ Statist. Comput. Simul, 19:129-153 (1984a). Wilson, J.R., and AA.B. Pritsker: Experimental Evaluation of Variance Reduction Techniques for Queueing Simulation Using Generalized Concomitant Variables, Management Sci., 30: 1459-1472 (1984b).
834 Литература Wolff, R.W.: Poisson Arrivals See Time Averages, Operations Res., 30: 223-231 (1982). Wolverine Software Corporation: Using Proof Animation, 2d ed., Annandale, Virginia (1996). Wright, R.D., and T.E. Ramsay, Jr.: On the Effectiveness of Common Random Numbers, Management Sci., 25:649-656 (1979). Yang, W.-N., and W.-W. Liou: Combining Antithetic Variates and Control Variates in Simulation Experiments, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul., 6: 243-290 (1996). Yang, W.-N., and B.L. Nelson: Optimization Using Common Random Numbers, Control Variates and Multiple Comparisons with the Best, Proc. 1989 Winter Simulation Conference, Washington, D.C., p. 444-449 (1989). Yang, W.-N., and B.L. Nelson: Using Common Random Numbers and Control Variates in Multiple-Comparison Procedures, Operations Res., 39: 583-591 (1991). Yang, W.-N., and B.L. Nelson: Multivariate Batch Means and Control Variates, Management Sci., 38:1415-1431 (1992). Yarnold, J.K.: The Minimum Expectation in x2 Goodness-of-Fit Tests and the Accuracy of Approximations for the Null Distribution, J. Am. Statist. Assoc., 65: 864-886 (1970). Yuan, M., and B.L. Nelson: Multiple Comparisons with the Best for Steady-State Simulation, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul., 3:66-79 (1993). Yuan, M., and B.L. Nelson: Autoregressive-Output-Analysis Methods Revisited, Ann. of Operations Res., 53:391-418 (1994). Yucesan, E., and L.W. Schruben: Structural and Behavioral Equivalence of Simulation Models, Assoc. Comput. Mach. Trans. Modeling and Comput. Simul., 2: 82-103 (1992). Yucesan, E., and L.W. Schruben: Complexity of Simulation Models: A Graph Theoretic Approach, INFORMS J. Comput., 10: 94-106 (1998). Zanakis, S.H.: Extended Pattern Search with Transformations for the Three-Parameter Weibull MLE Problem, Management Sci., 25:1149-1161 (1979a). Zanakis, S.H.: A Simulation Study of Some Simple Estimators for the Three-Parameter Weibull Distribution,/. Statist. Comput. Simul., 9:101-116 (1979b). Zeimer, M.A., and J.D. Tew: Metamodel Applications Using TERSM, Proc. 1996 Winter Simulation Conference, San Diego, p. 1421-1428 (1996). Zeisel, H.: A Remark on AS 183. An Efficient and Portable Pseudo-random Number Generation, Appl. Statist., 35: 89 (1986).
Алфавитный указатель А Arena, пакет имитационного моделирования, 264 ARMA-процесс, 442 ARTA-процесс, 444 AR-процесс, 442 Е erlang, функция, 155 event_cancel, функция, 151 event_schedule, функция, 150 ExpertFit, программа, 426-431 ехроп, функция, 154 Extend, пакет имитационного моделирования, 269 F FIFO, принцип обработки, 140 filest, функция, 153 I init_simlib, функция, 149 legrand, функция, 155 legrandgt, функция, 155 legrandst, функция, 155 LIFO, принцип обработки, 142 list_file, функция, 149 list remove, функция, 150 м MODSIM III, пакет моделирования, 278 О outfilest, функция, 154 out_sampst, функция, 154 out_timest, функция, 154 R random_integer, функция, 155 S sampst, функция, 151 simlib - библиотека функций, 147 - программа, 166,195 т t-критерий, 526 TES-nponecc, 443 timest, функция, 152 timing, функция, 150 и uniform, функция, 155 А абсолютная погрешность, 585 альтернативные правила останова прогона, 74 анализ - выходных данных, 318 - чувствительности модели, 331 атрибут объекта, 255
836 Алфавитный указатель Б безусловное математическое ожидание, 253 Безье, распределение, 435, 537 - двухмерное, 441 Бернулли, распределение, 540 бета-распределение, 519, 534 библиотека simlib, 147, 149,151,153, 155 биномиальное распределение, 546 блоковый график, 393 Бонферрони, неравенство, 618, 639 В валидация модели, 317, 330 Вейбулла, распределение, 532 векторная графика, 259 величина - дополняющая, 684 - зависимая, 293 - независимая, 293 - контрольная, 685 - случайная, 285-293, 295 - внутренняя контрольна, 692 - дискретная, 286 - дисперсия, 294 - ковариация, 295 - коррелированная, 296 - корреляция, 297 - математическое ожидание, 293 - медиана, 294 - некоррелированная, 296 - непрерывная, 287 - нормально распределенная, 306 - одинаково распределенная, 31 - предельное время выполнения генерирования, 503 - пространство состояний, 297 - совместно непрерывная, 292 - среднее значение, 293 - стандартная нормально распределенная, 305 - стандартное отклонение, 295 величина (продолжение) - точность генерирования, 503 - средняя, 678 - процедура, 599 верификация моделирующих программ, 316, 322-326 вероятностная - интегральная трансформанта, 553 - мера, 509 вероятность, 415 взвешенное выборочное среднее, 646 временной ряд, 344 время - подготовки к работе, 503 - механизмы продвижения, 26 - метода композиции, 515 - метода принятия-отклонения, 519 - метода свертки, 518 выбор - начальных параметров моделирования, 592 - лучшей из к систем, 644 - лучших ш из к систем, 648 - входных распределений вероятностей, 346-381 выборка - последовательная, 650 - процессы преобразования и расширения, 554 - общий объем, 645 - элемент, 286 выборочная - дисперсия, 301 - корреляция, 384 выборочное среднее, 300 Г гамма-процесс, 443, 554 гамма-распределение - коррелированные случайные величины, 550 - неполная функция, 532 - трехпараметрическое, 433
Алфавитный указатель 837 генератор случайных чисел, 260 462 - квадратичный конгруэнтный, 474 - линейный конгруэнтный, 467 - мультипликативный, 471 - формула, 474 - многократный рекурсивный, 475 - начальное значение, 468 - период, 468 - полный период, 468 - псевдослучайный, 464 - свойства, 465 - сложный, 475 - смешанный, 469 - Таусворта, 478 - тестирование, 480-483, 485-489 — теоретическое, 480 - эмпирическое, 480 - Фибоначчи, 475 генерирование - процессов поступления, 555, 557, 559 - случайных величин, 502 - дискретных, 539, 541, 543, 545, 547 - из многомерных семейств, 551 - коррелированных, 548-551, 553 - метод композиции, 514 - метод принятия-отклонения, 519 - метод свертки, 518 - непрерывных, 526-535, 537 - обратное преобразование, 505 - предельное время выполнения, 503 - точность, 503 - стохастических процессов, 553 геометрическое распределение, 546 гипотеза - критерий проверки, 309 - критическая область, 309 - уровень значимости, 309 - Крускала—Уаллиса, 453 - нулевая, 310 - относительно семейств распределений, 387 - проверка гипотеза (продолжение) - ошибка второго рода, 309 - ошибка первого рода, 309 гистограмма, 338 главный фактор, 725, 726 градиент функции, 743 граница допуска интервала, 592 граничное значение, 543 график - блоковый, 393 - вероятность-вероятность, 408 - квантиль-квантиль, 407 - корреляций, 384 - плотности поверх гистограммы, 403 - разности между функциями распределения, 404 - распределения вероятностей, 406 графика - векторная, 259 - растровая, 259 групповое поступление, 559 Гупт, процедура, 650 д данные сгруппированные, 381 двойное экспоненциальное распределение, 515 двухмерное распределение Безье, 441 Джонсон - многомерная система преобразования, 440 - несвязанное распределение, 537 - связанное распределение, 537 диаграмма разброса наблюдений, 384 дискретная система, 21 дискретное - равномерное распределение, 540 - распределение, 372 дискретно-событийная имитационная модель, 28 дискретно-событийное моделирование, 25, 27, 29
838 Алфавитный указатель дисперсия, 294, 650 - выборочная, 301 - метод понижения, 660 - оценка, 570 доверительный интервал, 261, 291, 304-309, 633-637, 737 - Велча, 636 - для парных выборок, 633 - общий для нескольких систем, 639 - по двум выборкам, 635 - покрытие, 306 - половина длины, 307 - точный, 306 документирование результатов моделирования, 329 Дудевич и Даллас, процедура, 644 3 зависимые наблюдения, 384 закон больших чисел, усиленный, 310 значение - граничное, 543 - среднее, оценка, 579 И имитационная модель, 790 - поверхность отклика, 735 имитационное моделирование - дискретно-событийное, 25 - пакеты, 19, 23, 249-250 - планирование событий, 31 - продвижение времени, 26 инкапсуляция, 277 интервал - доверительный, 261, 304-309, 633, 635, 637, 737 - t-критерия, 633 - Велча, 636 - общий для нескольких систем, 639 - по двум выборкам, 635 - покрытие, 306 - половина длины, 307 интервал (продолжение) - предсказания, 737 - точный, 306 - допуск, 592 К калибровка модели, 336 качественный фактор, 729 квадратичный конгруэнтный генератор, 474 квантиль функции, 393 ковариация стационарного процесса, 295, 298 количественный фактор, 724 контроль по четности, 479 конфигурация системы - выбор m лучших из к, 646 - выбор лучшей из к систем, 648 - выбор лучшей из двух, 633-637 - доверительный интервал для парных выборок, 639-643 - ранжирование и выбор лучшей, 643 - сравнение с образцом, 639, концепция виртуального времени, 110 корреляционный график, 384 корреляция, 297, 435-437, 439, 441, 443 - в рамках альтернатив, 652 - выборочная, 384 - между альтернативами, 651 - стационарного процесса, 298 коэффициент - вариации, 389 - весовой, 645 критерий - Андерсона—Дарлинга, 423 - Колмогорова—Смирнова, 418, 420 - проверки гипотезы, 309 - критическая область, 309 - уровень значимости, 309 - пуассоновского процесса, 425 - серий, 425 - согласия «хи-квадрат», 412, 416
Алфавитный указатель 839 Крускал—Уаллис, совокупность, 331, 453 кусочно-линейная функция, 381, 382 Л Лаплас, распределение, 515 линейный конгруэнтный генератор, 467 - мультипликативный, 471 логарифмическая функция правдоподобия, 399 логика программы моделирования, 87 лог-логистическое распределение, 536 логнормальное распределение, 534, 549 м масштабный параметр, 353 математическое ожидание, 450 матрица плана эксперимента, 712 метамодель, построение, 710, 734 метод - авторегрессионный, 604 - взвешенных общих средних, 604 - генерирования случайных чисел, 462 - доверительного интервала, 342 - замещения, 540, 543, 561 - классический, 609 - композиции, 514 - коррелированной проверки, 339 - множественнного сравнениея с лучшей системой, 652 - Монте-Карло, 118 - наименьших квадратов, 737 - нормированного временного рада, 609, 639, 643 - общих случайных чисел, 660-677 - общих средних, 603 - обратного преобразования, 505 - перекрывающихся общих средних, 604 - повторения, 261 - поиска экстремума, 748-750 - полярных координат, 533 метод (продолжение) - понижения дисперсии, 660-700 - принятия-отклонения, 519, 560 - с оцениваемой сверху функцией, 529 - прореживания, 556 - репликации и удаления для получения оценки средних значений, 600 - с фиксированным объемом выборки, 579, 588, 602 - серединных квадратов, 464 - свертки, 518 - «складного ножа», 609, 622 - спектрального анализа, 344, 605 - создания условий, 696 - уменьшения дисперсии, 504 - Шрубена и Кольяно, 734 - эвристический - блоковый график, 393 - итоговая статистика, 388 - сводные квантили, 392 методы планирования эксперимента, 722 многократный рекурсивный генератор, 475 многомерная система преобразования Джонсона, 440 многомерное распределение, 435, 437, 439, 441, 443 - логнормальное, 439 - нормальное, 438 моделирование - анализ выходных данных, 568, 574, 575, 577 - в Интернете, 111 - выбор начальных условий, 592 - выходные данные, 72, 106 - гибкость, 256 - дискретно-событийное, 25 - иерархическое, 256 - имитационное, 19, 23, 568, 574-577 - анимация, 258 - динамическая графика, 258 - пакеты, 250 - планирование событий, 31
840 Алфавитный указатель моделирование (продолжение) - комбинированное непрерывно-дискретное, 117 - непрерывное, 115 - обработка списков, 140—145 - общие элементы, 255 - объектно-ориентированное, 276-279, 281, 283 - параллельное, 108 - при непереходном режиме, 574, 576 - при переходном режиме, 574, 578, 579-585, 587 - по методу Монте-Карло, 118 - последовательное, 108 - распределенное, 108 - с помощью веб-узлов, 111 - с управляющим блоком слежения, 339,350 модель, 19 - авторегрессионная, 442 - р-го порядка, 605 - авторегрессионных процессов со скользящим средним, 553 - адекватная системе, 316 - аккредитация, 318 - анимация, 336 - валидация, 317 - верификация, 316 - детерминированная, 24 - динамическая, 24 - дискретно-событийная имитационная, 25 - документ о допущениях, 329 - имитационная, 790 - калибровка, 336 - компоненты, 28 - концептуальная, 330 - математическая, 23 - методы повышения валидации и доверия, 316, 327-336 - независимые повторения, 261 - переходный период работы, 594 - практически значимая разность с системой, 343 модель (продолжение) - проверка адекватности, 350 - проверка достоверности, 316 - прогон, 711 - регрессионная, 737, 738 - рекомендации по определению уровня детализации, 316, 319, 320 - статическая, 24 - статически значимая разность с системой, 343 - стохастическая, 24 - физическая, 23 - численная оценка, 19 мультипликативный генератор, 471 н наблюдения - зависимые, 384 - зарегистрированная доля, 403 - независимые, 383 - ожидаемая доля, 403 наименее благоприятная конфигурация, 653 наследование, 277 независимые наблюдения, 383 неполная функция гамма-распределения, 532 непрерывная система, 21 непрерывное распределение, 353 неравенство Бонферрони, 618, 639 несвязанное распределение Джонсона, 537 нормальное распределение - нижняя граничная точка, 352 - многомерное, 549 - стандартное отклонение, 353 О объект, 30 - атрибут, 30, 255 - данные, 277 - метод, 277
Алфавитный указатель 841 объектно-ориентированное моделирование, 276 однородность набора данных, 453 ожидание - безусловное, 253 - условное, 253 относительная погрешность, 586 отрицательное биномиальное распределение, 546 отсеивание факторов, 732-734 отчеты с выходными данными, 263 оценка - градиента, 743 - дисперсии, 300 - корреляции, 300 - максимального правдоподобия, 398 - инвариантная, 400 - нормально распределенная, 401 - строго последовательная, 401 - непрямая, 693 - однородности различных наборов данных, 453 - средних значений, 300 оценочная функция, 398 п пакет имитационного моделирования - Arena, 264 - Extend, 269 - MODSIM III, 278 - предметно-ориентированный, 252, 284 - универсальный, 252, 276 память компьютера, распределение - последовательное, 140 - связанное, 141 параметр - масштабный, 353 - положения, 352 - сдвига, 353 - установившийся, 576 - статистический анализ, 593, 595, 597, 599-609, 611-615 параметр (продолжение) - циклический, 577 - формы, 353 параметризация распределений, 352 переменная, ожидаемое значение, 33 переполнение целых чисел, 470 Пирсон, распределение - типа V, 536 - типа VI, 536 план эксперимента, 732 планирование эксперимента, 707-732 планы Плэкета—Бермана, 732 платформа компьютера, 258 плотность усеченного распределения, 513 поверхность отклика имитационной модели, 735 погрешность - абсолютная, 585 - относительная, 586 - действительная, 586 поиск оптимума, 748 полиморфизм, 277 понижение дисперсии, 659 - метод общих чисел, 660 - метод создания условий, 696 - несовместные случайные величины, 678 - управляющие случайные величины, 685 построение метамоделей, 734 преобразование Фурье, 606 принцип - FIFO, 140 - LIFO, 142 проблема - адекватности модели, 350 - Беренса—Фишера, 635 - запуска, 593 - множественных сравнений, 618 - начального перехода процесса, 593 прогон модели, 711 программа - ExpertFit, 426, 427, 429, 431 - библиотечная, 29
842 Алфавитный указатель программа (продолжение) - генератора отчетов, 29 - имитационного моделирования, 255, 257, 259, 261, 263 - инициализации, 28 - интерактивный отладчик, 323 - комбинированного ЛКГ на С, 496 - методы отладки для имитационной модели, 322 - модули и подпрограммы, 322 - мультипликативного ЛКГ с простым модулем, 491-494 - основная, 29 - правила останова, 74 - синхронизирующая, 28 - событийная, 29 - структурный разбор, 322 - трассировка, 323 программы - моделирования производственных систем - AutoMod, 762 - ProModel, 762 - Taylor Enterprise Dynamics, 763 - WITNESS, 764 - поиска оптимума - AutoStat, 753 - OptQuest, 753 - SimRunner2, 753 - WITNESS Optimizer, 754 производственные системы - источники случайности, 765 - моделирование случайности, 765 - простои механизмов, 768 процедура - Велча, 599 - Гупта, 650 - Дудевича и Далласа, 644 - Коэнинга и Лоу, 647 - последовательная, 602, 612 - проверки выходных данных, 337 - методы временного ряда, 344 - Роббинсона, Симеона и Старра, 636 процедура (продолжение) - сравнения реальных наблюдений и выходных данных, 316 - эвристическая, 402 процесс, 252 - AR, 442 - ARMA, 442 - ARTA, 444 - TES, 443 - выходной - установившееся распределение, 572 - гамма, 443, 554 - для моделирования некоего распределения, 554 - интенсивность, 449 - поступления, 447 - генерирование, 555, 557, 559 - группа, 559 - преобразования и расширения выборки, 443, 554 - проблема начального перехода, 593 - пуассоновский, 448, 554 - нестационарный, 555, 449 - сложный, 453 - стохастический, 297,435-443 - генерирование, 553 - дискретный, 297 - непрерывный, 297 - переходное поведение, 571, 573 - установившееся поведение, 571, 573 - строго стационарный, 609 - точка регенерации, 606 - экспотенциальный авторегрессионный, 443 Пуассон, распределение, 502, 547 пуассоновский процесс, 448, 555 - нестационарный, 449, 555 - сложный, 453 Р распределение - Безье, 435, 537 - двухмерное, 441
Алфавитный указатель 843 распределение (продолжение') - Бернулли, 540 - бета, 519, 534 - биноминальное, 546 - вероятностей, 261 - в форме прямоугольной трапеции, 516 - Вейбулла, 532 - выбор при отсутствии данных, 444, 445 - выходного процесса, установившееся, 572 - гамма, 529 - коррелированой случайные величины, 550 - геометрическое, 546 - двойное экспотенциальное, 515 - Джонсона, 537 - дискретное, 261, 372 - произвольное, 541 - равномерное, 540 - Лапласа, 515 - лог-логистическое, 536 - логнормальное, 534 - многомерное, 435-441, 443, 549 - непрерывное, 261, 353 - нормальное, 353 - многомерное, 549 - нижняя граничная точка, 352 - стандартное отклонение, 353 - отрицательное биноминальное, 546 - параметризация, 352 - Пирсона - типа V, 536 - типа VI, 536 - показатель симметрии, 389 - произвольное безусловное, 441 - Пуассона, 502, 547 - равномерное, 527 - смешанное, 432, 433, 511 - Стыодента, 526 - теоретическое, 350, 351 - треугольное, 537 - усеченное, 432, 433 - условное, 548 распределение (продолжение) - экспоненциальное, 527 - эмпирическое, 261, 350, 381, 538 - Эрланга m-го порядка, 518, 528 растровая графика, 259 регрессионная модель, 738 ресурсы, 255 решение, аналитическое, 19, 23 С сверхнасыщенный план, 732 сгруппированные данные, 381 синхронизация времени, 665 система, 19, 21 - вероятность правильного выбора, 644 - весовой коэффициент, 645 - взвешенное выборочное среднее, 646 - выбор - m лучших из к систем, 648 - лучшей из к систем, 644 - подмножества случайного размера, 650 - с наименьшим откликом, 644 - выходной процесс - автокоррелированный, 334 - нестационарный, 334 - дискретная, 21 - массового обслуживания, 124 - множественное сравнение с лучшей системой, 643, 652 - множественные оценки критериев работы, 617 - непрерывная, 21 - образец, 639 - отклик, 633 - попарное сравнение с другими системами, 641 - продолжительность переходного периода, 300 - состояние, 21 - этапы исследования, 111, ИЗ
844 Алфавитный указатель случайная величина, 285-287, 289-295 - генерирование - из многомерных семейств, 551 - метод композиции, 514 - метод принятия-отклонения, 519 - метод свертки, 518 - обратное преобразование, 505 - предельное время выполнения, 503 - точность, 503 - дискретная, 286 - генерирование, 539-547 - функция распределения, 287 - дисперсия, 294 - зависимая, 293 - использование множественных оценок, 693 - ковариация, 295 - коррелированная, 548-553 - корреляция, 297 - математическое ожидание, 293 - медиана, 294 - независимая, 31 - некоррелированная, 296 - непрерывная, функция распределения, 287-289 - нормально распределенная, 306 - одинакова распределенная, 31 - отрицательно коррелированная, 296 - плотность распределения вероятностей, 287 - положительно коррелированная, 296 - пространство состояний, 297 - совместная функция плотности, 292 - совместно непрерывная, 292 - стандартная нормально распределенная, 305 - стандартное отклонение, 295 случайное число, 462 смешанное распределение, 511 смешанный генератор случайных чисел, 469 смещенное распределение, 432, 433 событие - определение, 81 - представление с помощью графов, 82 совокупность Крускала—Уал лиса, 331 список - доступного пространства, 142 - записей, 140 - однонаправленный, 142 - сохранение, 140 - ссылка на предыдущую запись, 142 - ссылка на следующую запись, 142 - указатель головы, 142 - событий, 209 среднее значение - получение оценки, 300 - метод репликации и удаления, 600 - последовательные процедуры, 612 - процедуры с фиксированным объемом выборки, 602 статистика, итоговая, 388 статистический метод - адекватный, 384 - счетчик, 28 степень свободы, 605, 636 стохастический процесс, 435, 437, 439, 441-443 - генерирование, 553 - дискретный, 297 - ковариационно стационарный, 298 - непрерывный, 29 - переходный режим, 571, 573 - установившийся режим, 571, 573 стратегии отсеивания факторов, 732 Стьюдент, распределение, 526 счетчик, статический, 28 т Таусворт, генератор случайных чисел, 478 теорема - вычислений фундаментальная, 289 - усиленный закон больших чисел, 310 - Халла и Добелла, 468
Алфавитный указатель 845 теорема (продолжение) - центральная предельная, 305, 634 - Циклара, 448 теоретический тест, 480, 487 - спектральный, 489 - структурный, 489 теоретическое распределение, 350, 351 тест - спектральный, 489 - структурный, 489 - теоретический, 480, 487 - эмпирический, 480 - критерий «хи-квадрат», 480 - проверка корреляции, 484 - проверка по критерию серий, 482 - проверка по сериальному критерию, 481 - Тьюринга, 334 точка - перегиба кривой, 524 - регенерации процесса, 606 треугольное распределение, 537 трехпараметрическое гамма-распределение, 433 Тьюринг, тест, 334 факторные планы с дробными репликами, 725 Фибоначчи, генератор случайных чисел, 475 фундаментальная теорема вычислений, 289 функция - erlang, 155 - event_cancel, 151 - event_schedule, 150 - ехроп, 154 - filest, 153 - init_simlib, 149 - Icgrandgt, 155 - Icgrandst, 155 - Icrand, 155 - list_file, 149 - list_remove, 150 - out_filest, 154 - out_sampst, 154 - out_timest, 154 - random_integer, 155 - sampst, 151 - timest, 152 - timing, 150 - uniform, 155 - вероятностной меры, 287 У - интенсивности, 450 управление списком событий, 209 усеченное распределение, 432, 433 усиленный закон больших чисел, 310 условное - ожидание, 253 - распределение, 548 установившийся параметр, 576 установленная вероятность, 415 - истинных параметров, 388 - квантиль, 393 - кусочно-линейная, 381, 382 - многомерного нормального распределения, 437-438 - распределения Безье, 435 - неполная гамма-распределения, 532 - оценочная, 398 - правдоподобия логарифмическая, 399 - распределения вероятностей, 286 Ф - дискретной случайной величины, 287, 509 фактор - главный, 725 - качественный, 729 - непрерывной случайной величины, 289,506 - нормальная, 306
846 Алфавитный указатель функция (продолжение) - усеченного распределения, 513 - экспоненциального распределения, 506 - эмпирического распределения, 350 Фурье, преобразование, 606 X Халл и Добелл, теорема, 468 ц Цинлар, теорема, 448 ч частотное сравнение, 403 часы модельного времени, 26 число - случайное, 462 - целое, переполнение, 470 чувствительность и оценка градиента, 743 э эвристическая процедура, 402 эвристический метод - блоковый график, 393 эвристический метод (продолжение) - итоговая статистика, 388 - сводные квантили, 392 эксперимент, 285 - имитационный, 791 - планирование, 707-711 - пространство выборки, 285 эксперименты со многими факторами, 724 экспоненциальное распределение, 527 элемент выборки, 286 эмпирические распределения, 538 эмпирический тест, 480 - критерий «хи-квадрат», 480 - критерий серий, 482 - проверка корреляции, 484 - сериальный критерий, 481 эмпирическое распределение, 350, 381 Эрланг, распределение т-го порядка, 518, 528 эффект - взаимодействия, 726 - главный, 726 эффекты взаимодействия между факторами, 713
В. Дэвид Кельтон, Аверилл М. Лоу Имитационное моделирование Классика CS 3-е издание Перевод с английского под редакцией д. т. н„ профессора В. Н. Томашевского Редакторы Перевод Художник Корректоры Технический редактор Н. Петрик. М. Максименко, С. Езерницкая А. Куленко Н. Биржаков Н. Петрик, С. Езерницкая 3. Лобач Лицензия ИД №05784 от07.09.01. ООО «Питер Принт». 196105, Санкт-Петербург, ул. Благодатная,д. 67в. ООО «Издательская группа BHV» Свидетельство о занесении в Государственный реестр серия ДК№ 175 от 13.09.2000. Подписано в печать 28.05.04. Формат 70X100/16. Усл. п. л. 68,37. Тираж 3000 экз. Заказ № 2648. Налоговая льгота — общероссийский классификатор продукции ОК 005-93, том 2; 953005 — литература учебная. Отпечатано с готовых диапозитивов в ФГУП «Печатный двор» им. А. М. Горького Министерства РФ по делам печати, телерадиовещания и средств массовых коммуникаций. 197110, Санкт-Петербург, Чкаловский пр., 15.
В. Дэвид Кельтон, Аверилл М. Лоу Имитационное моделирование Классика CS 3-е издание Перевод с английского под редакцией д. т. н„ профессора В. Н. Томашевского Редакторы Перевод Художник Корректоры Технический редактор Н. Петрик, М. Максименко, С. Езерницкая А. Куленко Н. Биржаков Н. Петрик, С. Езерницкая 3. Лобач Лицензия ИД №05784 от07.09.01. ООО «Питер Принт». 196105, Санкт-Петербург, ул. Благодатная,д. 67в. ООО «Издательская группа BHV» Свидетельство о занесении в Государственный реестр серия ДК№ 175 от 13.09.2000. Подписано в печать 28.05.04. Формат 70X100/16. Усл. п. л. 68,37. Тираж 3000 экз. Заказ № 2648. Налоговая льгота — общероссийский классификатор продукции ОК 005-93, том 2; 953005 — литература учебная. Отпечатано с готовых диапозитивов в ФГУП «Печатный двор» им. А. М. Горького Министерства РФ по делам печати, телерадиовещания и средств массовых коммуникаций. 197110, Санкт-Петербург, Чкаловский пр., 15.