ФГОУ СПО «Волгоградский технологический коледж»
«Проект защитил
с оценкой »
А.И Сухинин
30.05.05
Моделирование работы порта
Курсовой проект
КП 11. 230105. 51. 0232 ПЗ
Разработчик А.И. Сухинин
30.05.05
Рук.проекта А.А. Теткин
30.05.05
Содержание
1. Введение
2. Имитационное моделирование
3. Теория массового обслуживания
4. Описание системы4.1 Модельное время4.2 Классы и объекты
4.2.1 Класс Tanker4.2.3 Класс Tug4.2.4 Класс Port
4.2.2 Производный класс Tanker44.3 События и методы5. Программная реализация алгоритма
6. Анализ результатовработы программы
7. Заключение
8. Список использованной литературы
ЕСЛИ НУЖНА ПРОГРАММА НА С++ ОБРАЩАЙТЕСЬ: saneek93@mail.ru
Оформление и правка возможна
1. Введение
Описание реальных отношений между экономическими объектами и производственными процессами наиболее рационально и в полной мере осуществляется с помощью моделей имитационного типа.
Термин имитационное моделирование означает, что речь идет о моделях с помощью, которых нельзя вычислить или предсказать результат и поэтому с их помощью проводиться вычислительный эксперимент при заданных исходных данных.
Метод имитационного моделирования дает возможность широкого использования математического аппарата и вычислительной техники для исследования хода экономических и производственных процессов .
Таким образом, сущность имитационного моделирования состоит в том, что с помощью ЭВМ воспроизводится поведение исследуемой системы, а исследователь, управляя ходом процесса и анализируя получаемые результаты, делает выводы о ее свойствах и качестве поведения. Поэтому под имитацией следует понимать численный метод проведения на ЭВМ экспериментов с алгоритмами, описывающими поведение системы и определения интересующих нас функциональных характеристик.
Имитационное моделирование является экспериментальной и прикладной методологией, имеющей целью: описать поведение систем; построить теории и гипотезы, которые могут объяснить наблюдаемое поведение; использовать эти теории для предсказания будущего поведения системы, т.е. тех воздействий, которые могут быть вызваны изменениями в системе или изменениями способов ее функционирования.
Целью данной курсовой работы является разработкаимитационной модели очереди с разнотипными заявками т.е модели работы порта. Основой для разработки модели в данной курсовой работе является метод имитационного моделирования. Так же курсовая работа предполагает создание программы на языке C++, обеспечивающей ввод исходной информации, ее обработку, реализацию алгоритма имитации процесса и выдачу необходимой информации.
2. Имитационное моделирование
Имитационное моделирование — метод, позволяющий строить модели, описывающие процессы так, как они проходили бы в действительности. Такую модель можно «проиграть» во времени как для одного испытания, так и заданного их множества. При этом результаты будут определяться случайным характером процессов. По этим данным можно получить достаточно устойчивую статистику.
Имитационное моделирование — это метод исследования, при котором изучаемая система заменяется моделью, с достаточной точностью описывающей реальную систему и с ней проводятся эксперименты с целью получения информации об этой системе. Экспериментирование с моделью называют имитацией (имитация — это постижение сути явления, не прибегая к экспериментам на реальном объекте).
Имитационное моделирование — это частный случай математического моделирования. Существует класс объектов, для которых по различным причинам не разработаны аналитические модели, либо не разработаны методы решения полученной модели. В этом случае математическая модель заменяется имитатором или имитационной моделью.
Имитационным моделированием иногда называют получение частных численных решений сформулированной задачи на основе аналитических решений или с помощью численных методов.
Имитационная модель — логико-математическое описание объекта, которое может быть использовано для экспериментирования на компьютере в целях проектирования, анализа и оценки функционирования объекта.
Возникновение теории управления запасами можно связать с работами Ф.Эджуорта и Ф. Харриса, появившимися в конце XIX – начале XX вв., в которых исследовалась простая оптимизационная модель определении экономичного размера партии поставки для складской системы с постоянным равномерным расходом и периодическим поступлением хранимого продукта.
Запасами называется любой ресурс на складе, который используется для удовлетворения будущих нужд. Примерами запасов могут служить полуфабрикаты, готовые изделия, материалы, различные товары, а также такие специфические товары, как денежная наличность, находящаяся в хранилище. Большинство организаций имеют примерно один тип системы планирования и контроля запасов. В банке используются методы контроля за количеством наличности, в больнице применяются методы контроля поставки различных медицинских препаратов.
К имитационному моделированию прибегают, когда: дорого или невозможно экспериментировать на реальном объекте; невозможно построить аналитическую модель: в системе есть время, причинные связи, последствие, нелинейности, стохастические (случайные) переменные; необходимо сымитировать поведение системы во времени.
Цель имитационного моделирования состоит в воспроизведении поведения исследуемой системы на основе результатов анализа наиболее существенных взаимосвязей между ее элементами или другими словами — разработке симулятора (англ. simulation modeling) исследуемой предметной области для проведения различных экспериментов.
Имитационное моделирование позволяет имитировать поведение системы во времени. Причём плюсом является то, что временем в модели можно управлять: замедлять в случае с быстропротекающими процессами и ускорять для моделирования систем с медленной изменчивостью. Можно имитировать поведение тех объектов, реальные эксперименты с которыми дороги, невозможны или опасны. С наступлением эпохи персональных компьютеров производство сложных и уникальных изделий, как правило, сопровождается компьютерным трёхмерным имитационным моделированием.
3. Теория массового обслуживания
Предметом теории массового обслуживания является количественная сторона процессов, связанных с массовым обслуживанием.
Целью теории является разработка математических методов отыскания основных характеристик процессов массового обслуживания, для оценки качества функционирования обслуживающей системы.
Последовательность событий условно обозначим потоком. Поток, состоящий из требований на обслуживание, будет являться потоком требований.
Поток требований, нуждающихся в обслуживании и поступающих в обслуживающую систему, называется входящим потоком. Поток требований, покидающих обслуживающую систему, называется выходящим потоком.
Задачей теории массового обслуживания является отыскание функциональных зависимостей величин, характеризующих качество функционирования обслуживающей системы, от характеристик входящего потока, параметров, характеризующих возможности одного обслуживающего аппарата, и способов организации всей обслуживающей системы в целом. Качество функционирования системы существенно зависит от того, как организовано управление процессом обслуживания, поэтому задача отыскания количественных характеристик организации управления является очень важной.
В области промышленного производства приходится очень часто сталкиваться с задачами массового обслуживания. Так, например, массовое обслуживание имеет место при обеспечении заводами-поставщиками и фабриками предприятий-потребителей и торговой сети своей продукцией. Обеспечение производства сырьем также носит характер массового обслуживания.
Организация взаимодействия между цехами в пределах предприятия представляет собой пример задач того же типа, только на более низкой ступени. В масштабах цеха теория массового обслуживания начинается со снабжения цеха сырьем и заканчивается организацией обслуживания и ремонта станков.
Большое количество проблем, связанных с массовым обслуживанием, должно быть решено при производственном планировании. В этом случае затраты усилий на детальное изучение количественной стороны процессов планирования даст большой экономический эффект и позволит более глубоко проникнуться в природу этих процессов.
Немалую пользу может оказать теория массового обслуживания на стадии технического проектирования. При проектировании весьма важным является вопрос о загруженности оборудования. Так, еще в процессе технического проектирования необходимо определить нужное количество оборудования и его мощность исходя из объемов работ, которые должны выполняться при помощи этого оборудования. При решении этой задачи необходимо учитывать такие случайные факторы, как время обслуживания, выход из строя отдельных устройств за счет поломок и время, требуемое для их устранения, а также ряд факторов, от которых будет зависеть эксплуатация этого проектируемого оборудования.
Использование методов теории может помочь также при осуществлении выбора лучшего, наиболее экономичного проекта из нескольких возможных.
Теория массового обслуживания поможет правильно организовать производство с целью наибольшего удовлетворения потребителей продукцией предприятия, являющейся выходящим потоком. Выяснение приоритетов потребителей должно осуществляться маркетинговыми службами с помощью анкетирования и опросов.
Теория массового обслуживания может оказать большую помощь при проектировании технических устройств и различных систем, имеющих целью удовлетворение массовых потребностей. Правильный выбор параметров таких систем позволяет избежать многих узких мест в производственных потоках, неполной загрузки отдельных звеньев обслуживающих систем, обеспечит значительную экономию материальных ресурсов. Применение методов теории позволяет установить, какие результаты могут быть достигнуты при эксплуатации проектируемого устройства еще задолго до его создания.
4. Описание системы
В африканском порту танкеры загружаются сырой нефтью, которую затем морским путем доставляют по назначению. Мощности порта позволяют загружать
на более трех танкеров одновременно. Танкеры, прибывающие в порт через каж-
дые11± 7 ч, относятся к трем различным типам. Относительная частота появ-
ления танкеров данного типа и время, требуемое на их погрузку, приведены в
табл. 1. Относительную частоту следует понимать как вероятность того, что
прибывший танкер относится к данному типу.
Таблица 1. Характеристики типов танкеров
Тип
Относительная частота
Время погрузки, ч
1
0,25
18 ±2
2
0,55
24 ±3
3
0,20
36 ± 4
В порту имеется один буксир, услугами которого пользуются все танкеры при
причаливании и отчаливании. Причаливание и отчаливание занимает по одному
часу, причем, если в услугах буксира нуждаются сразу несколько танкеров, при-
оритет отдается операции причаливания.
Судовладелец предлагает дирекции порта заключить контракт на перевозку нефти в Великобританию и обеспечить выполнение условий контракта с помощью 5 танкеров особого, четвертого типа, для погрузки которых требуется 21 ± 3 ч. После погрузки танкер отчаливает и следует в Великобританию, там разгружается и затем снова возвращается в африканский порт для погрузки. Время цикла
обращения танкера, включая время разгрузки, составляет 240 ± 24 ч.
Фактором, осложняющим перевозку нефти, являются штормы, которым подвер-
гается порт. Интервал времени между штормами распределен экспоненциально
с математическим ожиданием 48 ч, причем шторм продолжается 4 ± 2 ч. Во вре-
мя шторма буксир не работает.
Перед заключением контракта руководство порта решило определить влияние,
которое окажут пять дополнительных танкеров на функционирование порта.
Выводы предлагается сделать по результатам имитации работы порта в течение
одного года (8760 ч) при условии заключения предлагаемого контракта Оцени-
ваемые величины — время пребывания в порту дополнительных танкеров и уже
работающих танкеров трех типов.4.1 Модельное время
За единицу модельного времени примем 1 мин, чтобы не связывать себя мало-
вероятным предположением, что все события занимают промежутки времени,
кратные одному часу. Интервал времени между штормами будем генерировать так: (int)(get_exp(mu)*60), где mu= 1/48 = 0,021. Для генерации равномерного рас-
пределения (для интервалов между прибытиями танкеров, времени погрузки и
цикла обращения) будем использовать функцию getuniform( ), которая разыгры-
вает абсолютное значение отклонения от среднего, а затем с вероятностью 0,5
прибавляет его к среднему либо вычитает из него. Этот способ позволяет умень-
шить в два раза значение делителя при взятии остатка, а значит, снизить ошиб-
ку, возникающую из-за того, что 32 768 не делится нацело на этот делитель.4.2 Классы и объекты
Продолжаем наращивать арсенал приемов, используемых для объектного представления динамических систем. Рассмотрим особенности поставленной задачи: Буксир имеет две разных очереди на обслуживание — на причаливание и на отчаливание. Заявки из очереди на отчаливание обслуживаются только в том случае, если очередь на причаливание пуста. Система соединяет в себе свойства как открытой, так и замкнутой. Количество заявок первых трех типов является переменной неограниченной величиной, так как они поступают из внешнего входного потока и, будучи обслуженными, покидают систему, после чего их дальнейшая судьба не отслеживается. Количество же заявок дополнительного, четвертого типа является постоянным, каждая из них периодически возвращается на обслуживание в систему, и за ними нужно продолжать следить в промежутках между периодами обслуживания (путешествие из Африки в Великобританию на разгрузку нефти и обратно). В связи с этим заявки первых трех типов будем называть неименованными, а заявки четвертого типа — именованными.
Три типа неименованных заявок, разумеется, можно описать одним классом,
так как они различаются только значениями своих неизменяемых полей дан-
ных — частотой встречаемости и временем обслуживания. Так как неименован-
ные заявки постоянно находятся под контролем некоторого обслуживающего
устройства — буксира или порта, — метод run( ) для них не нужен, их постоянно
будут «вести» другие объекты, а после выхода из порта они как объекты переста-
ют существовать. В противоположность этому именованные заявки после выхо-
да из порта пускаются «в самостоятельное плавание», продолжая существовать в качестве полноправных объектов системы. В это время они сами должны сле-
дить за собой и в конце концов зафиксировать момент следующего прибытия на
погрузку. Очень показательна разница между механизмами фиксации прибытия
неименованных и именованных заявок. Неименованные заявки поступают из
случайного входного потока, поэтому время их прибытия разыгрывается с помо-
щью ГСЧ, а само событие инициируется принимающей стороной — буксиром.
Прибытие же именованной заявки буксиром не разыгрывается — она сама дает
знать о прибытии в порт, посылая буксиру соответствующее сообщение.
Указанные различия в поведении говорят о том, что неименованные и именованные заявки одним классом представлять нельзя, так как эти различия являются
существенными. Для отображения поведения именованной заявки нам понадо-
бятся и дополнительные поля данных, и дополнительные методы. Но и описы-
вать их совершенно разными классами тоже нехорошо. Дело в том,что после причаливания как те, так и другие заявки будут находиться в общей очере-
ди на погрузку.Но если в очереди будут заявки разных классов, какой
же тогда класс подставлять в шаблон в качестве значения параметра, коим как
раз и является имя класса? Получается, что и один класс, и два разных класса —
неудовлетворительныерешения.
Ответ приходит сам собой — конечно же, следует применить наследование. Внимательное изучение того, что происходит в системе и что нужно отразить в программе, позволяет сделать вывод, что все поля данных и методы неименованных заявок покрываются именованными, последние же расширяются некоторым
множеством дополнительных полей и методов, например run( ), а некоторые ме-
тоды переопределяются (например, count()). Поэтому базовым классом будет
класс неименованных заявок, а производным от него расширенный класс име-
нованных заявок. Проблема с «разнотипностью элементов» списка тоже решает-
ся наилучшим образом. Напомним, что в качестве данных в элементе списка вы-
ступает не сам объект, а указатель на него, поэтому в качестве параметра
шаблона можно задать имя базового класса — неименованных заявок. По прин-
ципу подстановки указатель на объект производного класса является и указателем на объект базового класса, поэтому указатель на именованную заявку — объект производного класса — можно смело заносить в элемент списка.
Конкретизируем рассуждения, перечислив поля базового класса Tanker и производного класса Tanker4.4.2.1 Класс Tanker
Неизменяемые поля данных: уникальный идентификатор объекта; можно назначить равным текущему значению счетчика прибытий; тип танкера (1, 2 или 3); среднее значение времени обслуживания на погрузке; максимальное отклонение от среднего значения.
Изменяемые поля данных: Время, проведенное в системе на текущий момент, начиная от постановки в очередь к буксиру на причаливание; код текущего состояния (1 — в очереди на причаливание, штормит; 2 — в очереди на причаливание, шторма нет, 3 — причаливание; 4 — в очереди на погрузку; 5 — погрузка; 6 — в очереди на отчаливание, штомит; 7 — в очередина отчаливание, шторма нет; 8 — отчаливание).
4.2.2 Производный класс Tanker4
Неизменяемые поля данных: среднее значение времени в пути на разгрузку и обратно (14 400 мин); максимальное отклонение от среднего значения (1440 мин); связь с объектом Буксир для посылки ему сообщения о своем прибытии.
Изменяемые поля данных: добавляется еще одно возможное значение кода текущего состояния: 9 — в пути на разгрузку или обратно; время до прибьргия на причаливание; поле данных имеет смысл лишь для состояния 9.
По аналогии с предыдущими задачами буксир и порт должны быть объявлены
«друзьями» танкера. Интересный нюанс заключается в том, что дружествен-
ность нужно отдельно объявить и в производном классе Тапкег4, так как по пра-
вилам С++ она не наследуется.
Довольно много полей данных приходится вводить для класса Буксир (Tug). Это связано с тем, что буксир является связующим звеном между танкерами и пор-
том, а кроме того следует учитывать еще и влияниештормов.4.2.3 Класс Tug
Неизменяемые поля данных: среднее значение интервала времени между прибытиями танкеров первых трех типов (660 мин); максимальное отклонение от среднего значения (420 мин); длительность причаливания и отчаливания (60 мин); средняя продолжительность шторма (240 мин); максимальное отклонение от среднего значения (120 мин); параметр экспоненциального распределения для интервала времени между штормами (0,021); указатель на объект класса Port для взаимодействия с ним.
Изменяемые поля данных: время до следующего прибытия танкера одного из трех типов; время до окончания причаливания; время до окончания отчаливания; очередь танкеров на причаливание; очередь танкеров на отчаливание; причаливающий (отчаливающий) танкер; текущая длина очереди на причаливание (вычисляемое поле); текущая длина очереди на отчаливание (вычисляемое поле); время до начала следующего шторма; время до окончания шторма. 4.2.4 Класс Port
Класс Port моделируется как обычный многоканальный узел обслуживания
с общей очередью.
Неизменяемые поля: количество терминалов для погрузки (3); указатель на объект класса Tug.
Изменяемые поля: очередь танкеров на погрузку; массив указателей на обслуживаемые в данный момент танкеры; массив значений времени, оставшегося до окончания погрузки на каждом из терминалов; текущая длина очереди (вычисляемое поле). 4.3 События и методы