Имитационное моделирование системы управления запасами с неудовлетворенным спросом

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?ть входного потока равна 1/33,6 ? 0,03 - ее мы иподставим в качестве параметра экспоненциального распределения.

Тогда общая продолжительность моделирования составит

 

312 7 24 = 52 416 ч - тактов модельного времени.

 

Значения же постоянных промежутком времени (4 недели и3 недели) представим в программе в днях (соответственно, 28 и 21).

При инициализации объекта Супермаркет (Supermarket) разыгрываем время, оставшееся до очередного просмотра состояния запасов, как целочисленную случайную величину, равномерно распределенную на временном отрезке 4 недели. Если этот отрезок выразить в часах, то выражение, вычисляющее случайную величину, должно быть таким: rand()2+l; если в днях - (rand)+l)*24. Второевыражение реализует равномерное распределение точнее. Дело в том, что функция rand возвращает целочисленную случайную величину, равномерно распре-деленную на отрезке от 0 до 32 767. Если необходимо снизить верхнюю границуинтервала до некоторого числа К, то конструкция rand %K обеспечит равномерное распределение только в том случае, если 32 768 делится на К без остатка. В противном случае некоторые значения будут более вероятны, другие - менее. Нетрудно заметить, что нарушение равномерности распределения будет тембольше, чем больше К. Например, для К = 3 различиями можно пренебречь,а для К = 32 767 значение 0 будет в два раза вероятнее всех остальных. Поэтому при генерации равномерной случайной величины мы снижаем значение делите-ля, а затем результат умножаем на 24. Этим мы нисколько не нарушаем логику моделирования. Да и с точки зрения здравого смысла, любой человек в описанной в задаче ситуации на вопрос: Сколько времени осталось до проверки? -даст ответ в днях, а не в часах.

 

4.2 Классы и объекты

 

Данная задача по сути представляет собой усложненный вариант процесса случайного блуждания, где в качестве случайной величины выступает текущий запас товара. Система является открытой, а количество заявок в ней - переменной величиной без фиксированной верхней границы. Определяющую рольв системе играет объект Супермаркет, для которого нужно, разумеется, создатькласс. Чтобы накапливать статистику о среднем времени ожидания товара темиклиентами, которые при первом обращении не получили его и дали повторныйзапрос, необходимо создать класс Клиент (Client) и хранить информацию о них вобъектах этого класса. В самом деле, клиенты, сразу получившие товар, в системе не задерживаются, и объекты для них создавать не нужно. То же самое относится и к клиентам, которые, не получив товар, не пожелали ждать. Те же клиенты, которые согласились ждать прибытия очередной партии товара, остаются всистеме, и вплоть до момента получения ими товара информацию о них нужноотслеживать, а именно: вести учет времени ожидания. Для объекта Радиоприемник, тоже участвующего в работе системы, класс создавать нет необходимости, по-скольку на всем протяжении моделирования мы работаем только с количества-ми радиоприемников и никакая статистика по отдельно взятым единицам этоготовара не требуется.

Итак, с классом Клиент все ясно - его полями данных являются уникальныйидентификатор и время, которое он к данному моменту провел в системе, ожи-дая исполнения заказа. Опишем, какие поля данных должен иметь класс Супер-маркет (SuperMarket).

Неизменяемые поля:

интенсивность поступления клиентских запросов (0,03 заявок в час);

периодичность проверок состояния запаса (28 дней);

время исполнения заказа (21 день);

нижний предел количества товара, при выходе за который делается заказ (18);

уровень наличия товара, исходя из которого рассчитывается объем заказа (72);

процент заявок, покинувших систему, из числа тех, которые не застали товар в наличии (80).

Изменяемые поля:

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

время, оставшееся до получения заказа; в случае, если в данный момент мыне ждем заказа, значение равно -1;

время, оставшееся до начала следующей проверки;

объем заказа, получение которого ожидается; в случае отсутствия заказа равен 0;

текущее количество товара;

список указателей на объекты класса Client, ожидающие получения товара. В данном случае именно список, а не массив, так какдлина очереди не имеет верхней границы;

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

 

4.3 События и методы

 

Событий, меняющих состояние объекта Супермаркет, всего три: поступление клиентского запроса, проверка состояния запаса и прибытие заказа. Оформление заказа не является отдельным событием, а входит в алгоритм проверки состояния запаса. Каждому из этих трех событий соответствуют методы, алгоритмическая реализация которых совершенно очевидна, не содержит никаких программных ухищрений и очевидным образом кодирует словесное описание задачи. Объекты класса Client не являются активными участниками процесса моделирования, так как все действия по их созданию, обработке и удалению происходят внутри методов класса SuperMarket. Поэтому метода гип у класса Client нет.

С какой целью задано условие сброса накопленной статистики по истечениипервого года? Дело в том, что если существует стационарный режим, случайныйпроцесс достигает его вне зависимости от начальных условий. Но за какое времяэто произойдет, заранее ответить невозможно. Поэтому, если целью моделирования является получение стационарных характеристик, влияние начальных условий на результаты надо каким-