Моделирующая программа. Симулятор парикмахерской

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    181,81 Кб
  • Опубликовано:
    2015-06-06
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Моделирующая программа. Симулятор парикмахерской













КУРСОВАЯ РАБОТА

по дисциплине «Программирование»

«Моделирующая программа. Симулятор парикмахерской»

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ

1.1 Назначение разработки

1.2 Основание для разработки

1.3 Требования к программе

1.3.1 Входные данные

1.3.2 Выходные данные

1.3.3 Процессы обработки

1.3.4 Требования пользователя

1.3.5 Функциональные требования

1.3.6 Требования к условиям эксплуатации

1.3.7 Требования к численности и квалификации персонала

1.3.8 Требования по стандартизации и унификации

1.3.9 Требования к программной совместимости

1.3.10 Результирующие компоненты изделия

1.3.11 Этапы разработки программы

1.3.13 Требования к документации

2. ВАРИАНТ ЗАДАНИЯ

3. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

4. ТЕХНИЧЕСКИЙ ПРОЕКТ

4.1 Сценарий диалога с пользователем

4.2 Детализация алгоритма СМО

5. РАБОЧИЙ ПРОЕКТ

5.1 Основные переменные, константы и типы модуля

5.2 Отладка и тестирование программного продукта

5.3 Руководство пользователю

Заключение

Библиографический список

Приложение

ВВЕДЕНИЕ

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

Случайный характер потока заявок (требований), а также, в общем случае, и длительности обслуживания приводит к тому, что в системе массового обслуживания происходит случайный процесс. По характеру случайного процесса, происходящего в системе массового обслуживания (СМО), различают системы марковские и немарковские. В марковских системах входящий поток требований и выходящий поток обслуженных требований (заявок) являются пуассоновскими. Пуассоновские потоки позволяют легко описать и построить математическую модель системы массового обслуживания. Данные модели имеют достаточно простые решения, поэтому большинство известных приложений теории массового обслуживания используют марковскую схему. В случае немарковских процессов задачи исследования систем массового обслуживания значительно усложняются и требуют применения статистического моделирования, численных методов с использованием ЭВМ.

Независимо от характера процесса, протекающего в системе массового обслуживания, различают два основных вида СМО:

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

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

В системах с ограниченным ожиданием может ограничиваться:

длина очереди;

время пребывания в очереди.

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

Все системы массового обслуживания различают по числу каналов обслуживания:

одноканальные системы;

многоканальные системы.

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

В данной курсовой работе решается задача одноканальной СМО с ожиданием. Программа реализуется на языке С++ в среде программирования Borland Builder 6.0.

1. ТЕХНИЧЕСКОЕ ЗАДАНИЕ

.1 Назначение разработки

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

1.2 Основание для разработки

Данный программный продукт разрабатывается как курсовая работа.

1.3 Требования к программе

.3.1 Входные данные

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

1.3.2 Выходные данные

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

1.3.3 Процессы обработки

Моделирование работы парикмахерского салона и вывод различных вероятностей, описанных выше.

1.3.4 Требования пользователя

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

·работа в условиях графического режима;

·реалистичность представления моделируемого объекта;

·однозначность и наглядность представления результатов моделирования.

1.3.5 Функциональные требования

Программа должна удовлетворять следующим функциональным требованиям:

·доступное изображение статистических показателей;

·большое количество различных статистических данных;

1.3.6 Требования к условиям эксплуатации

-операционная система Windows XP SP3 и выше;

-язык программирования С++;

-среда программирования Borland C++ Builder 6 и выше;

-разрешение экрана не менее 800x600 точек.

1.3.7 Требования к численности и квалификации персонала

Для работы с программой требуется один человек, квалифицированный в области СМО и алгоритмизации, обладающий средней квалификацией в программировании на языке С++.

1.3.8 Требования по стандартизации и унификации

Нотация идентификаторов и терминология комментариев во всех компонентах среды должны соответствовать терминологии, используемой в вычислительной технике. Сценарий диалога с пользователем должен отвечать стандартам приложений ОС семейства Windows.

1.3.9 Требования к программной совместимости

Код программы должен быть написан на стандартном языке С++ с использованием стандартных компонент библиотеки Borland Builder 6.0.

1.3.10 Результирующие компоненты изделия

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

1.3.11 Этапы разработки программы

-проектирование структуры программы;

-разработка сценария диалога с пользователем;

-разработка основных алгоритмов;

-проектирование формата файлов;

-программирование алгоритмов и структур данных;

-отладка и тестирование программы;

-документирование.

1.3.13 Требования к документации

Перечень представляемых документов:

-задание на курсовую работу;

-техническое задание на разработку;

-описание структуры программы;

-описание сценария диалога с пользователем;

-схемы основных алгоритмов;

-описание форматов данных и файлов;

-контрольные примеры и результаты программы;

-листинги основных программных модулей;

-краткая эксплуатационная документация.

Все документы оформляются на листах формата A4, на одной стороне листа, и представляются в виде пояснительной записки.

Документы по содержанию должны соответствовать ГОСТ 34.201-89, 34.602-89, 19.701-90.

программа парикмахерский моделирование симулятор

2. ВАРИАНТ ЗАДАНИЯ

Парикмахерская имеет трех мастеров, каждый из которых на обслуживание одного клиента тратит в среднем 10 минут. Клиенты образуют простейший поток со средним числом поступлений 12 человек в час. Клиенты становятся в очередь, если к моменту их прихода в очереди менее трех человек, в противном случае они покидают парикмахерскую.

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

3. КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Система массового обслуживания имеет один канал. Входящий поток заявок на обслуживание потока имеет интенсивность λ. Интенсивность потока обслуживания равна μ (т. е. в среднем непрерывно занятый канал будет выдавать μ обслуженных заявок). Длительность обслуживания - случайная величина, подчиненная показательному закону распределения. Заявка, поступившая в момент, когда канал занят, становится в очередь и ожидает обслуживания.

Рассмотрим систему с ограниченной очередью. Предположим, что независимо оттого, сколько требований поступает на вход обслуживающей системы, данная система (очередь + обслуживаемые клиенты) не может вместить более N-требований (заявок), из которых одна обслуживается, а (N-1) ожидают. Клиенты, не попавшие в ожидание, вынуждены обслуживаться в другом месте, и такие заявки теряются. Наконец, источник, порождающий заявки на обслуживание, имеет неограниченную (бесконечно большую) емкость.

Обозначим T - количество тактов, которые пройдут до прихода клиента. Эта величина вычисляется по формуле:


Где R - случайная величина, лежащая в границе [0.01…0.99].

Рассчитаем статистику для одноканальной СМО с ожиданием и ограниченной длиной очереди, равной (N-1).

Тогда вероятность того, что канал обслуживания свободен и в системе нет ни одного клиента, равна:

p0=clientNo/taktAll, где

clientNo - число тактов, когда в парикмахерской нет ни одного клиента,

taktAll - число тактов за рабочий день.

вероятность отказа в обслуживании заявки:

Pотк = clientMiss/clientAll, где

clientMiss - число упущенных клиентов,

clientAll - число всех клиентов.

Средняя длина очереди:

Pоч = statOcher/taktAll, где

statOcher - сумма всех клиентов в очереди.

Вероятность того, что все мастера заняты:

Pbusy = masterYes/taktAll, где

masterYes - количество тактов, когда все мастера заняты работой.

Среднее число клиентов в парикмахерской:

Pin = statClin/taktAll, где

statClin - сумма числа всех клиентов в парикмахерской.

4. ТЕХНИЧЕСКИЙ ПРОЕКТ

4.1 Сценарий диалога с пользователем

Работу пользователя с разрабатываемой программой представим в виде сценария, заданного ориентированным графом переходов. Вершины графа поставим в соответствие основным окнам и диалогам программы, а дугами будем отображать все возможные переходы между ними. На каждой дуге запишем пункт меню или идентификатор кнопки, при выборе которых происходит соответствующий переход. Граф представлен на рис. 1. По графу легко проследить возможные переходы пользователя по диалогам. Например, при запуске программы открывается главное меню. В нем нажав клавишу «Сгенерировать» запускается моделирование работы парикмахерской с выводом статистики.

рис.1

Определим внешний вид окон, присутствующих в графе на рис. 1. Вид главного окна дан на рис. 2:

Рис. 2

Окно включает следующие основные элементы управления: переход к генератору осуществляется с помощью кнопки Button1. За выход отвечает кнопка Button2. Также на форме располагается элемент Label, который демонстрирует название программы.


Рис. 3

За непосредственную генерацию отвечает кнопка Button3, а за выход в меню кнопка Button4. Вывод статистических показателей производится в форму Edit(1-8).

Окно генератора после выполнения программы представлено на рисунке 4:

Рис. 4

После выполнения генерации всплывающее окно сообщает пользователю об этом. Внешний вид окна представлен на рисунке 5:

Рис. 5

4.2 Детализация алгоритма СМО

Разработаем q-схему и граф-схему алгоритма моделирования работы парикмахерской и нахождения различных вероятностей, данный в условии задания. Они показаны на рисунках 6 и 7 соответствено.

Q-схема:

Рис.6

S1 собирает необслуженные заявки, а S2 - обслуженные.

5. РАБОЧИЙ ПРОЕКТ

.1 Основные переменные, константы и типы модуля

double potokCl - плотность прихода клиентов.

double timeOne - среднее время работы над одним клиетом.

int timeAll - количество тактов в 8-часовом рабочем дне.

int p1,p2,p3 - используются для выражения занятости мастеров.

int timeWork1,2,3 - используются для выражения времени работы над конкретным клиентом у мастера 1, 2 и 3 соответственно.

5.2 Отладка и тестирование программного продукта

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

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

Рис. 8

Исходное состояние окна программы

Рис. 9

Результат работы программы со 112 клиентами

Рис. 10

Результат работы программы со 113 клиентами

5.3 Руководство пользователю

Разрабатываемая программа предназначена для моделирования работы парикмахерской в течении рабочего дня и нахождения различных вероятностей.

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

К выходным данным относятся вычисление различных вероятностей и их вывод в текстовом варианте.

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

ЗАКЛЮЧЕНИЕ

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

С позиции моделирования процесса массового обслуживания ситуации, когда образуются очереди заявок (требований) на обслуживание, возникают следующим образом. Поступив в обслуживающую систему, требование присоединяется к очереди других (ранее поступивших) требований. Канал обслуживания выбирает требование из находящихся в очереди и приступает к его обслуживанию. После завершения процедуры обслуживания очередного требования канал обслуживания приступает к обслуживанию следующего требования, если таковое имеется в блоке ожидания.

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

Примерами систем массового обслуживания могут служить:

. посты технического обслуживания автомобилей;

. посты ремонта автомобилей;

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

. станции технического обслуживания автомобилей;

. аудиторские фирмы;

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

. телефонные станции и т. д.

Основными компонентами системы массового обслуживания любого вида являются:

-входной поток поступающих требований или заявок на обслуживание (генератор);

-дисциплина очереди;

-механизм обслуживания.

Входной поток требований. Для описания входного потока требуется задать вероятностный закон, определяющий последовательность моментов поступления требований на обслуживание и указать количество таких требований в каждом очередном поступлении. При этом, как правило, оперируют понятием «вероятностное распределение моментов поступления требований». Здесь могут поступать как единичные, так и групповые требования (требования поступают группами в систему). В последнем случае обычно речь идет о системе обслуживания с параллельно-групповым обслуживанием.

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

-первым пришел - первый обслуживаешься;

-пришел последним - обслуживаешься первым;

-случайный отбор заявок;

-отбор заявок по критерию приоритетности;

-ограничение времени ожидания момента наступления обслуживания (имеет место очередь с ограниченным временем ожидания обслуживания, что ассоциируется с понятием «допустимая длина очереди»).

Механизм обслуживания определяется характеристиками самой процедуры обслуживания и структурой обслуживающей системы. К характеристикам процедуры обслуживания относятся: продолжительность процедуры обслуживания и количество требований, удовлетворяемых в результате выполнения каждой такой процедуры. Для аналитического описания характеристик процедуры обслуживания оперируют понятием «вероятностное распределение времени обслуживания требований».

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

Структура обслуживающей системы определяется количеством и взаимным расположением каналов обслуживания (механизмов, приборов и т. п.). Прежде всего следует подчеркнуть, что система обслуживания может иметь не один канал обслуживания, а несколько; система такого рода способна обслуживать одновременно несколько требований. В этом случае все каналы обслуживания предлагают одни и те же услуги, и, следовательно, можно утверждать, что имеет место параллельное обслуживание.

Система обслуживания может состоять из нескольких разнотипных каналов обслуживания, через которые должно пройти каждое обслуживаемое требование, т.е. в обслуживающей системе процедуры обслуживания требований реализуются последовательно. Механизм обслуживания определяет характеристики выходящего (обслуженного) потока требований.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.Дж. Либерти, Б. Джонс C++ за 21 день, 2010.

.И.В. Зотов, Э.И. Ватутин, Д.Б. Борзов Процедурно-ориентированное программирование на C++, 2008.

ПРИЛОЖЕНИЕ

//---------------------------------------------------------------------------

#include <vcl.h>

#include <math.h>

#include <stdlib.h>

#include <stdio.h>

#include <time.h>

#pragma hdrstop

#include "Unit2.h"

#include "Unit3.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"*Form2;

//---------------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{->Text="0";->Text="0";->Text="0";->Text="0";->Text="0";->Text="0";->Text="0";->Text="0";

}

//---------------------------------------------------------------------------__fastcall TForm2::Button2Click(TObject *Sender)

{->Text="0";->Text="0";->Text="0";->Text="0";->Text="0";->Text="0";->Text="0";->Text="0";->Visible = false;->Visible = true;

}

//---------------------------------------------------------------------------__fastcall TForm2::Button1Click(TObject *Sender)

{( time(NULL) );potokCl = 0.1, randNext = 0, timeOne = 0.05;timeAll=( (8*60*60)/30 ), timeNext = 0, timeLast = 0, clientFirst = 1, clientIn=0, newClient=0;timeWork1=0, timeWork2=0, timeWork3=0, p1=0, p2=0, p3=0, clientMiss=0, clientApply=0, ochered=0;neObsluzhen=0, clientAll=0, netClient1=0, netClient2=0, netClient3=0, masterYes2=0, statOcher2=0, statOcher3=0;;statClin=0, statClin2=0;clientNo=0, taktAll=(8*60*60)/30, masterYes1=0, statOcher=0;

//-=====- главный цикл( ; timeAll > 0; timeAll-- )

{( clientFirst == 1 )

{= 1 + rand()%99;= randNext/100;= (-1/potokCl)*log(randNext);= timeNext;-;

}( timeLast == 0 )

{++;= 1;= 1 + rand()%99;= randNext/100;= (-1/potokCl)*log(randNext);= timeNext;

}( newClient==1 )

{( (clientIn+1)<7 )

{++;( p1==0 )

{= 1 + rand()%99;= randNext/100;= (-1/timeOne)*log(randNext);++;-;

}

{( p2==0 )

{= 1 + rand()%99;= randNext/100;= (-1/timeOne)*log(randNext);++; -;

}

{( p3==0 )

{= 1 + rand()%99;= randNext/100;= (-1/timeOne)*log(randNext);

p3++;-;

}

}

}

}

{++;-;

}

}( p1==1 ) timeWork1--;( p1==1&&timeWork1==0 )

{--;++;-;

}( p2==1 ) timeWork2--;( p2==1&&timeWork2==0 )

{--;++;-;

}( p3==1 ) timeWork3--;( p3==1&&timeWork3==0 )

{--;++;-;

}( timeLast !=0 ) timeLast--;(clientIn==0)

{++;

}(p1==1&&p2==1&&p3==1)

{++;

}=0;=statOcher+ochered;=statClin+clientIn;

}( ochered>0 )

{= clientMiss + ochered;

}( (clientIn-ochered)>0 )

{= clientApply + (clientIn-ochered);

}= ( clientMiss+clientApply );= clientMiss/clientAll;= clientNo;= taktAll;= netClient1/netClient2;= masterYes1/netClient2;=statOcher;=statOcher2/taktAll;=statClin/taktAll;count;count2;count3;count4;count5;count6;count7;count8;=FloatToStr(neObsluzhen); //не обслужен2=FloatToStr(netClient3); //отсутствие в парикмахерской

count3=FloatToStr(masterYes2); //все мастера заняты=FloatToStr(clientAll);=IntToStr(clientMiss);=IntToStr(clientApply);7=FloatToStr(statOcher3); //среднее число очереди=FloatToStr(statClin2); // среднее число клиентов

ShowMessage("Моделирование завершено!");->Text=count4;->Text=count;->Text=count2;->Text=count3;->Text=count5;->Text=count6;->Text=count7;->Text=count8;

}

//---------------------------------------------------------------------------

Похожие работы на - Моделирующая программа. Симулятор парикмахерской

 

Не нашел материал для своей работы?
Поможем написать качественную работу
Без плагиата!