Какой из объектов может быть исполнителем алгоритмов ножницы карта принтер книга
Обновлено: 21.11.2024
Более интересное моделирование позволяет нам изучить поведение очереди печати, описанное ранее в этом разделе. Напомним, что когда учащиеся отправляют задания на печать на общий принтер, задания помещаются в очередь для обработки в порядке очереди. Много вопросов возникает с этой конфигурацией. Наиболее важным из них может быть способность принтера выполнять определенный объем работы. В противном случае учащиеся будут слишком долго ждать печати и могут пропустить следующий урок.
Рассмотрите следующую ситуацию в лаборатории информатики. В любой средний день в лаборатории в любой час работает около 10 студентов. Эти учащиеся обычно печатают до двух раз за это время, а объем этих заданий колеблется от 1 до 20 страниц. Принтер в лаборатории более старый, способный обрабатывать 10 страниц в минуту чернового качества. Принтер можно переключить на лучшее качество, но тогда он будет печатать только пять страниц в минуту. Более низкая скорость печати может заставить студентов слишком долго ждать. Какую скорость страницы следует использовать?
Мы могли бы решить, создав симуляцию, которая моделирует лабораторию. Нам нужно будет построить представления для учащихся, заданий на печать и принтера (рис. 4). По мере того как учащиеся отправляют задания на печать, мы добавляем их в список ожидания, очередь заданий на печать, прикрепленную к принтеру. Когда принтер завершает задачу, он просматривает очередь, чтобы определить, есть ли еще задачи для обработки. Для нас представляет интерес среднее количество времени, которое студенты будут ждать, пока их работы будут напечатаны. Это равно среднему времени ожидания задачи в очереди.
Рисунок 4. Очередь печати лаборатории компьютерных наук ¶
Чтобы смоделировать эту ситуацию, нам нужно использовать некоторые вероятности. Например, студенты могут распечатать статью объемом от 1 до 20 страниц. Если каждая длина от 1 до 20 равновероятна, фактическая длина задачи печати может быть смоделирована с использованием случайного числа от 1 до 20 включительно. Это означает, что существует одинаковая вероятность появления любой длины от 1 до 20.
Если в лаборатории 10 студентов и каждый печатает дважды, то в среднем выполняется 20 заданий на печать в час. Какова вероятность того, что в любую секунду будет создано задание на печать? Ответить на этот вопрос можно, рассмотрев соотношение задач и времени. Двадцать задач в час означает, что в среднем одна задача будет выполняться каждые 180 секунд:
Для каждой секунды мы можем имитировать вероятность возникновения задачи печати, генерируя случайное число от 1 до 180 включительно. Если число равно 180, мы говорим, что задача создана. Обратите внимание, что возможно, что многие задачи могут быть созданы подряд, или мы можем довольно долго ждать появления задачи. Такова природа симуляции. Вы хотите максимально точно смоделировать реальную ситуацию, зная общие параметры.
4.14.1. Основные этапы моделирования¶
Вот основная симуляция.
Создайте очередь задач печати. Каждой задаче будет присвоена временная метка по ее прибытии. Очередь пуста для запуска.
За каждую секунду ( currentSecond ):
Создается ли новое задание на печать? Если это так, добавьте его в очередь с отметкой времени currentSecond.
Если принтер не занят и ожидается задание,
Удалить следующую задачу из очереди печати и назначить ее принтеру.
Вычтите метку времени из currentSecond, чтобы вычислить время ожидания для этой задачи.
Добавить время ожидания этой задачи в список для последующей обработки.
Основываясь на количестве страниц в задании на печать, определите, сколько времени потребуется.
Теперь при необходимости принтер выполняет печать в течение одной секунды. Это также вычитает одну секунду из времени, необходимого для этой задачи.
Если задача была завершена, другими словами, требуемое время достигло нуля, принтер больше не занят.
После завершения моделирования вычислите среднее время ожидания из созданного списка времени ожидания.
4.14.2. Реализация Python¶
Для разработки этого моделирования мы создадим классы для трех описанных выше реальных объектов: Printer , Task и PrintQueue .
Класс Printer (листинг 2) должен отслеживать, есть ли у него текущая задача. Если это так, то оно занято (строки 13–17), и количество необходимого времени можно вычислить по количеству страниц в задаче. Конструктор также позволяет инициализировать настройку числа страниц в минуту. Метод tick уменьшает значение внутреннего таймера и переводит принтер в режим ожидания (строка 11), если задача завершена.
Листинг 2
Класс Task (листинг 3) будет представлять одну задачу печати.При создании задачи генератор случайных чисел предоставит длину от 1 до 20 страниц. Мы решили использовать функцию randrange из модуля random.
Каждая задача также должна иметь отметку времени, которая будет использоваться для расчета времени ожидания. Эта отметка времени будет представлять время, когда задача была создана и помещена в очередь печати. Затем можно использовать метод waitTime для получения количества времени, проведенного в очереди перед началом печати.
Листинг 3
Основная симуляция (листинг 4) реализует алгоритм, описанный выше. Объект printQueue является экземпляром нашей существующей очереди ADT. Логическая вспомогательная функция, newPrintTask, решает, была ли создана новая задача печати. Мы снова решили использовать функцию randrange из модуля random для возврата случайного целого числа от 1 до 180. Задания на печать поступают каждые 180 секунд. Произвольно выбрав 180 из диапазона случайных целых чисел (строка 32), мы можем смоделировать это случайное событие. Функция моделирования позволяет нам установить общее время и количество страниц в минуту для принтера.
Листинг 4
Когда мы запускаем симуляцию, нас не должно волновать, что результаты каждый раз будут разными. Это связано с вероятностным характером случайных чисел. Нас интересуют тенденции, которые могут возникнуть при корректировке параметров моделирования. Вот некоторые результаты.
Во-первых, мы запустим симуляцию в течение 60 минут (3600 секунд) с частотой страниц пять страниц в минуту. Кроме того, мы проведем 10 независимых испытаний. Помните, что поскольку симуляция работает со случайными числами, каждый запуск будет возвращать разные результаты.
После запуска наших 10 испытаний мы видим, что среднее время ожидания составляет 122,09 секунды. Вы также можете видеть, что существует большая разница в среднем времени взвешивания с минимальным средним значением 17,27 секунды и максимальным значением 376,05 секунды. Вы также можете заметить, что только в двух случаях все задачи были выполнены.
Теперь мы изменим скорость страницы до 10 страниц в минуту и снова запустим 10 пробных версий, с более высокой скоростью страницы, мы надеемся, что больше задач будет выполнено за один час.
Вы можете самостоятельно запустить симуляцию в ActiveCode 2.
4.14.3. Обсуждение¶
Мы пытались ответить на вопрос о том, сможет ли текущий принтер справиться с нагрузкой задачи, если он будет настроен на печать с лучшим качеством, но с меньшей скоростью страницы. Подход, который мы выбрали, состоял в том, чтобы написать симуляцию, которая моделировала задачи печати как случайные события различной продолжительности и времени поступления.
Выходные данные выше показывают, что при печати 5 страниц в минуту среднее время ожидания варьировалось от 17 секунд до 376 секунд (около 6 минут). При более высокой скорости печати минимальное значение составляло 1 секунду, а максимальное — всего 28. Кроме того, в 8 из 10 запусков со скоростью 5 страниц в минуту задачи печати все еще находились в очереди в конце часа.< /p>
Поэтому мы, возможно, убеждены в том, что замедление работы принтера для повышения качества не является хорошей идеей. Студенты не могут позволить себе так долго ждать своих работ, особенно когда им нужно приступить к следующему уроку. Шестиминутное ожидание было бы слишком долгим.
Этот тип симуляционного анализа позволяет нам ответить на многие вопросы, известные как вопросы "что, если". Все, что нам нужно сделать, это изменить параметры, используемые при моделировании, и мы можем моделировать любое количество интересных вариантов поведения. Например,
Что, если число учащихся увеличится, а среднее количество учащихся увеличится на 20 человек?
Что делать, если сегодня суббота и учащимся не нужно идти на занятия? Могут ли они позволить себе ждать?
Что, если размер средней задачи печати уменьшится, поскольку Python — такой мощный язык, а программы, как правило, намного короче?
На все эти вопросы можно ответить, изменив описанную выше симуляцию. Однако важно помнить, что симуляция хороша настолько, насколько хороши предположения, которые использовались для ее построения. Реальные данные о количестве заданий на печать в час и количестве учащихся в час были необходимы для построения надежного моделирования.
Как бы вы изменили симуляцию принтера, чтобы отразить большее количество учащихся? Предположим, что число студентов удвоилось. Вам нужно сделать некоторые разумные предположения о том, как была собрана эта симуляция, но что бы вы изменили? Измените код. Также предположим, что длина среднего задания на печать сократилась вдвое. Измените код, чтобы отразить это изменение. Наконец, как бы вы параметризовали количество студентов, вместо того, чтобы изменять код, мы хотели бы сделать количество студентов параметром моделирования.
Подробнее о книге "Книги по запросу" в книжном магазине Гарварда. Информацию о пользовательской печати можно найти здесь.
Благодаря нашей услуге "Книги по запросу" наши клиенты могут печатать книги в мягкой обложке из электронных файлов, доступных в Интернете, включая ранее недоступные названия, такие как оригинальная рукопись Льюиса Кэрролла для Алисы в стране чудес, Приключения Алисы под Граунд (1886 г.), Исторический очерк Гротона, Массачусетс, 1655-1890 (1894 г.) и Химия изготовления шляп (1906 г.) навсегда изменила британскую индустрию производства головных уборов.
Мы можем напечатать миллионы наименований (включая Google Книги), находящихся в общественном достоянии, а также тысячи наименований с разрешения издателя и заказать их!
Какое отношение наш робот-книгопечататель имеет к Парку Юрского периода?
Посмотрите захватывающий и информативный короткометражный фильм наших сотрудников Jurassic Books!
Печатайте книги по запросу с помощью Espresso Book Machine и Google Книг. Видео от Google.
Поиск по базам данных книг
Текущие базы данных включают:
- Harvard Book Store On Demand Books
Довольно обширная база данных книг по запросу - Google Книги
- Интернет-архив
- Проект Гутенберг
- Галлика
И базы данных постоянно растут!
Как заказать книгу Google:
Найдя книгу в Google Книгах, нажмите на текст "Получить эту книгу в печати".
Из доступных вариантов выберите "Книги по запросу".
На следующей странице нажмите кнопку "Получить" рядом с параметром "Книжный магазин Гарварда".
Вы будете перенаправлены к записи книги на нашем сайте, где вы сможете купить книгу, выполнив нашу обычную процедуру онлайн-оформления заказа.
Отказ от ответственности, время обработки и изменение размера
Google Книги, являющиеся общественным достоянием, представляют собой отсканированные коллекции ряда библиотек, в том числе библиотеки Гарвардского университета, и могут содержать примечания и другие знаки. Гарвардский книжный магазин не делает никаких заявлений и не дает гарантий в отношении содержания Google Книг, а Google Книги не подлежат возврату.
Пожалуйста, подождите 3–5 рабочих дней, прежде чем ваш заказ будет обработан и ваша книга будет напечатана. Книги печатаются в порядке поступления запросов, поэтому длина нашей очереди может сильно различаться. Если книга нужна вам быстро, выберите приоритетную доставку, которая будет поставлена в начало очереди.
Обратите внимание, что некоторые заголовки могут нуждаться в переформатировании для удобства чтения. Мы делаем это бесплатно для вас, но это может увеличить время обработки вашего заказа на 1–3 рабочих дня.
Свяжитесь с нашим менеджером по печати по запросу напрямую, чтобы задать вопросы или назначить встречу.
По телефону: (617) 475-8303 с понедельника по пятницу с 10:00 до 16:00
Классические сумки
Большие сумки и сумки
различных стилей,
размеров и дизайнов, а также кружки, закладки и многое другое!
Доставка и самовывоз
Мы отправляем в любую точку США, а заказы на сумму более 75 долларов США доставляются бесплатно по почте!
Примечательные подписанные книги: вступайте в клуб!
Присоединяйтесь к нашему Клубу подписанных первых изданий (или оформите подарочную подписку) на подписанную книгу с большим литературным достоинством, которая будет доставляться вам ежемесячно.
Независимый книжный магазин
на Гарвардской площади
© 2022
Гарвардский книжный магазин
Все права защищены
Контакты
Гарвардский книжный магазин
1256 Massachusetts Avenue
Cambridge, MA 02138
Читайте также: