ТП курсовая
ТП курсовая
ТП курсовая
КУРСОВАЯ РАБОТА
по дисциплине: «технология программирования»
на тему:
Проверил: Пиняскин В. В.
Махачкала 2011г.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ……………………………………………………………………..3
3. ОСНОВНАЯ ЧАСТЬ……………………………………………………….16
1.Постановка задачи……………………………………………………16
2. Программа……………………………………………………………17
3.Результат……………………………………………………………...25
ЗАКЛЮЧЕНИЕ……………………………………………………………….29
СПИСОК ЛИТЕРАТУРЫ…………………………………………………….30
ВВЕДЕНИЕ
PAGE \* MERGEFORMAT 11
За последнее время в самых разных областях практики возникла
необходимость в решении различных вероятностных задач, связанных с работой
так называемых систем массового обслуживания (СМО). Примерами таких
систем могут служить: телефонные станции, ремонтные мастерские, билетные
кассы, стоянки такси, парикмахерские и т.п.
Сущность машинного моделирования системы состоит в проведении на
ЭВМ эксперимента с моделью этой системы, что способствует уменьшению
риска провала эксперимента, проводимого непосредственно опытным путем.
Тем самым уменьшая экономические затраты, а так же повышая безопасность
персонала при сложном эксперименте, если нет уверенности в положительном
исходе последнего. В настоящее время метод машинного моделирования нашел
широкое применение при разработке обеспечивающих и функциональных
подсистем различных интегрированных АСУ, автоматизированных подсистем
научных исследований и комплексных испытаний, систем автоматизации
проектирования и т.д.
Темой данного курсового проекта как раз и является решение подобной
задачи. Однако, в предложенной задаче будет исследована СМО, в которой
рассматриваются поток поступления заявки в систему и поток обслуживания
заявки системой.
Практическое решение задачи осуществлено с помощью программы,
реализованной в среде C++ Builder 6.
PAGE \* MERGEFORMAT 11
Системы, в которых, с одной стороны, возникают массовые запросы
(требования) на выполнение каких-либо видов услуг, а с другой стороны,
происходит удовлетворение этих запросов, называются системами массового
обслуживания.
Первые задачи теории систем массового обслуживания (ТСМО) были
рассмотрены сотрудниками Копенгагенской телефонной компании, датским
ученым А.К. Эрлангом (1878г. – 1929г.) в период между 1908 и 1922гг. Эти
задачи были вызваны к жизни стремлением упорядочить работу телефонной
сети и разработать методы, позволяющие заранее повысить качество
обслуживания потребителей в зависимости от числа используемых устройств.
Оказалось, что ситуации, возникающие на телефонных станциях, являются
типичными не только для телефонной связи. Работа аэродромов, работа морских
и речных портов, магазинов, терминальных классов, радиолокационных
комплексов, радиолокационных станций и т.д. и т.д. может быть описана в
рамках ТСМО.
Реальные системы, с которыми приходится иметь дело на практике, как
правило, очень сложны и включают в себя ряд этапов (стадий) обслуживания.
Причем на каждом этапе может существовать вероятность отказа в выполнении
или существует ситуация приоритетного обслуживания по отношению к другим
требованиям. При этом отдельные звенья обслуживания могут прекратить свою
работу (для ремонта, наладки и т.д.) или могут быть подключены
дополнительные средства. Могут быть такие обстоятельства, когда требования,
получившие отказ, вновь возвращаются в систему (подобное может происходить
в информационных системах).
Система массового обслуживания включает следующие элементы:
источник требований,
входящий поток требований,
очередь, обслуживающее устройство (обслуживающий аппарат, канал
обслуживания),
выходящий поток требований
Поступление заявки в СМО называется событием. Последовательность
событий, заключающихся в поступлении заявок в СМО, называется входящим
PAGE \* MERGEFORMAT 11
потоком заявок. Последовательность событий, заключающихся в выполнении
заявок в СМО, называется выходящим потоком заявок.
Каналом обслуживания называется устройство в СМО, обслуживающее
заявку. СМО, содержащее один канал обслуживания, называется одноканальной,
а содержащее более одного канала обслуживания – многоканальной (например,
3 кассы на вокзале).
Если заявка, поступающая в СМО, может получить отказ в
обслуживании (в силу занятости всех каналов обслуживания) и в случае отказа
вынуждена покинуть СМО, то такая СМО называется СМО с отказами
(примером такой СМО может служить АТС).
Если в случае отказа в обслуживании заявки могут вставать в очередь, то
такие СМО называются СМО с очередью (или с ожиданием). При этом
различают СМО с ограниченной и неограниченной очередью. Примером
первых СМО может служить мойка для автомашин с маленькой стоянкой для
ожидающих машин, а примером вторых СМО может служить билетная касса
или метрополитен.
Возможны также СМО смешанного типа, когда, например, заявка может
вставать в очередь, если она не очень велика, и может находиться в очереди
ограниченное время и уйти из СМО не обслуженной.
Различают СМО открытого и замкнутого типа. В СМО открытого типа
поток заявок не зависит от СМО (билетные кассы, очередь в булочной). В СМО
замкнутого типа обслуживается ограниченный круг клиентов, а число заявок
может существенно зависеть от состояния СМО (например, бригада слесарей –
наладчиков, обслуживающих станки на заводе).
СМО могут также различаться по дисциплине обслуживания:
обслуживаются ли заявки в порядке поступления, случайным образом или вне
очереди (с приоритетом).
СМО описываются некоторыми параметрами, которые характеризуют
эффективность работы системы.
n – число каналов в СМО;
λ – интенсивность поступления в СМО заявок;
μ– интенсивность обслуживания заявок;
PAGE \* MERGEFORMAT 11
ρ = λ/μ – коэффициент загрузки СМО;
m – число мест в очереди;
ротк- вероятность отказа в обслуживании поступившей в СМО заявки;
Q ≡ pобс - вероятность обслуживания поступившей в СМО заявки
(относительная пропускная способность СМО); при этом
PAGE \* MERGEFORMAT 11
называемые формулами Литтла и применимые только для стационарных
потоков заявок и обслуживания.
Классификация СМО.
Системы массового обслуживания классифицируют по разным признакам.
К таким признакам относятся условия ожидания требования начала
обслуживания. В соответствии с этим признаком системы подразделяются на
следующие виды:
- системы массового обслуживания с потерями (отказами);
- системы массового обслуживания с ожиданием;
- системы массового обслуживания с ограниченной длиной очереди;
- системы массового обслуживания с ограниченным временем ожидания.
Системы массового обслуживания, у которых требования, поступающие в
момент, когда все приборы обслуживания заняты, получают отказ и теряются,
называются системами с потерями или отказами.
Системы массового обслуживания, у которых возможно появление как
угодно длинной очереди требований к обслуживающему устройству,
называются системами с ожиданием.
Системы массового обслуживания, допускающие очередь, но с
ограниченным числом мест в ней, называются системами с ограниченной
длиной очереди.
Системы массового обслуживания, допускающие очередь, но с
ограниченным сроком пребывания каждого требования в ней, называются
системами с ограниченным временем ожидания.
По числу каналов или приборов системы делятся на одноканальные и
многоканальные.
По месту нахождения источника требований системы массового
обслуживания делятся на разомкнутые, когда источник находится вне системы,
и замкнутые, когда источник находится в самой системе. К последнему виду
PAGE \* MERGEFORMAT 11
относится, например, станочный участок, в котором станки являются
источником неисправностей, а следовательно, и требований на их обслуживание.
Одной из форм классификации систем массового обслуживания является
кодовая (символьная) классификация Д. Кендалла. При этой классификации
характеристику системы записывают в виде трех, четырех или пяти символов,
например А \ В\ S, где А — тип распределения входящего потока требований, В
— тип распределения времени обслуживания, S — число каналов
обслуживания.
Для экспоненциального распределения принимают символ М, для любого
(произвольного) распределения — символ G. Запись G / М / 3 означает, что
входящий поток требований пуассоновский (простейший), время обслуживания
распределено по экспоненциальному закону, в системе имеется три канала
обслуживания. Четвертый символ указывает допустимую длину очереди, а
пятый — порядок отбора (приоритета) требований.
С позиции моделирования процесса массового обслуживания ситуации,
когда образуются очереди заявок (требований) на обслуживание, возникают
следующим образом. Поступив в обслуживающую систему, требование
присоединяется к очереди других (ранее поступивших) требований. Канал
обслуживания выбирает требование из находящихся в очереди, с тем, чтобы
приступить к его обслуживанию. После завершения процедуры обслуживания
очередного требования канал обслуживания приступает к обслуживанию
следующего требования, если таковое имеется в блоке ожидания.
Цикл функционирования системы массового обслуживания подобного рода
повторяется многократно в течение всего периода работы обслуживающей
системы. При этом предполагается, что переход системы на обслуживание
очередного требования после завершения обслуживания предыдущего
требования происходит мгновенно, в случайные моменты времени.
2. ЯЗЫК ПРОГРАММИРОВАНИЯ С++
PAGE \* MERGEFORMAT 11
процедурную, обобщённую, функциональную; наибольшее внимание уделено
поддержке объектно-ориентированного программирования.
Язык C++ является производным от языка С. Основным отличием языка
C++ является наличие классов и механизма наследования объектов класса
другими классами. При разработке языка C++ руководствовались следующими
тремя принципами:
1) использование классов не должно приводить к более медленному
выполнению программ по сравнению с программами без классов;
2) программы на С рассматриваются как подмножество программ на C++, то
есть добавление классов не должно приводить к тому, что какие-либо свойства С
не будут включены в C++;
3) не должна снизиться эффективность выполнения программ.
По большей части все три цели были достигнуты. Компилятор C++
способен компилировать большинство программ на С, хотя между этими
языками все же существует некоторое несоответствие. Строгая типизация C++
действительно более строгая, чем в С. В C++ были добавлены некоторые
зарезервированные слова. Среди прочих изменений можно отметить добавление
новой формы комментариев: дополнительно к С-комментариям /*...*/ был
добавлен их новый формат //, означающий, что все, что следует за символами //
до конца строки, является комментарием. Также расширились возможности
ввода и вывода за счет добавления функций обработки потоков cin и cout.
Добавлены исключения, перегрузка операций и форма общего класса под
названием шаблон.
С++ в настоящее время считается господствующим языком,
используемым для разработки коммерческих программных продуктов. В
последние годы это господство слегка поколебалось вследствие аналогичных
претензий со стороны такого языка программирования, как Java, но маятник
общественного мнения качнулся в другую сторону, и многие программисты,
которые бросили С++ ради Jаvа, в последнее время поспешили вернуться к своей
прежней привязанности. В любом случае эти два языка настолько похожи, что,
изучив один из них, вы автоматически осваиваете 90% другого.
PAGE \* MERGEFORMAT 11
С++ является языком программирования общего назначения.
Естественная для него область применения - системное программирование,
понимаемое в широком смысле этого слова. Кроме того, С++ успешно
используется во многих областях приложения, далеко выходящих за указанные
рамки. Реализации С++ теперь есть на всех машинах, начиная с самых скромных
микрокомпьютеров - до самых больших супер-ЭВМ, и практически для всех
операционных систем.
PAGE \* MERGEFORMAT 11
учитывать эффективность. Язык "С с классами" использовался для больших
задач моделирования. Строгой проверке подверглись тогда возможности
написания на нем программ, для которых критичны ресурсы времени и памяти.
В этом языке недоставало перегрузки операций, ссылок, виртуальных функций и
многих других возможностей. Впервые С++ вышел за пределы
исследовательской группы, в которой работал автор, в июле 1983 г., однако
тогда многие возможности С++ еще не были разработаны.
Название С++ (си плюс плюс) , было придумано Риком Маскитти летом 1983
г. Это название отражает эволюционный характер изменений языка С.
Обозначение ++ относится к операции наращивания С. Чуть более короткое имя
С+ является синтаксической ошибкой. Кроме того, оно уже было использовано
как название совсем другого языка. Знатоки семантики С находят, что С++ хуже,
чем ++С. Язык не получил названия D, поскольку он является расширением С, и
в нем не делается попыток решить какие-либо проблемы за счет отказа от
возможностей С.
Изначально С++ был задуман для того, чтобы автору и его друзьям не надо
было программировать на ассемблере, С или других современных языках
высокого уровня. Основное его предназначение - упростить и сделать более
приятным процесс программирования для отдельного программиста. До
недавнего времени не было плана разработки С++ на бумаге. Проектирование,
реализация и документирование шли параллельно. Никогда не существовало
"проекта С++" или "Комитета по разработке С++". Поэтому язык развивался и
продолжает развиваться так, чтобы преодолеть все проблемы, с которыми
столкнулись пользователи. Толчками к развитию служат также и обсуждения
автором всех проблем с его друзьями и коллегами.
С момента выхода в свет первого издания этой книги язык С++ подвергся
существенным изменениям и уточнениям. В основном это касается разрешения
неоднозначности при перегрузке, связывании и управлении памятью. Вместе с
тем, были внесены незначительные изменения с целью увеличить совместимость
с языком С. Были также введены некоторые обобщения и существенные
расширения, как то: множественное наследование, функции-члены со
спецификациями static и const, защищенные члены (protected), шаблоны типа и
PAGE \* MERGEFORMAT 11
обработка особых ситуаций. Все эти расширения и доработки были нацелены на
то, чтобы С++ стал языком, на котором можно создавать и использовать
библиотеки.
Другие расширения, введенные за период между 1985 и 1991 г.г. (такие как
множественное наследование, статические функции-члены и чистые
виртуальные функции), скорее появились в результате обобщения опыта
программирования на С++, чем были почерпнуты из других языков.
Сделанные за эти шесть лет расширения языка прежде всего были направлены
на повышение выразительности С++ как языка абстракции данных и объектно-
ориентированного программирования вообще и как средства для создания
высококачественных библиотек с пользовательскими типами данных в
частности.
Примерно в 1987 г. стало очевидно, что работа по стандартизации С++
неизбежна и что следует незамедлительно приступить к созданию основы для
нее .
Фирма AT&T Bell Laboratories внесла основной вклад в эту работу. Около ста
представителей из порядка 20 организаций изучали и комментировали то, что
стало современной версией справочного руководства и исходными материалами
для ANSI по стандартизации. С++. Наконец, по инициативе фирмы Hewlett-
Packard в декабре 1989 г. в составе ANSI был образован комитет X3J16.
Ожидается, что работы по стандартизации С++ в ANSI (американский стандарт)
станут составной частью работ по стандартизации силами ISO (Международной
организации по стандартизации).
С++ развивался одновременно с развитием некоторых фундаментальных
классов.
Стандартизация языка
Механизм принятия стандарта соответствует процедурам, определяемым
ISO. Хорошее представление о механике работы комитета стандартизации С++
PAGE \* MERGEFORMAT 11
можно получить, читая группу новостей news://comp.std.c++ и отслеживая
материалы комитета.
В состав международного комитета стандартизации C++ (собственно,
рабочая группа ISO) входит по представителю от каждой из стран, пожелавших
принимать участие в процессе стандартизации. Представителем США является
рабочая группа ANSI, в которую входят представители большинства
производителей компиляторов C++, равно как и крупных "игроков",
заинтересованных в развитии языка; есть и люди, ни с какой компанией не
ассоциированные, и представляющие самих себя. Исторически заседания
рабочих групп C++ ISO и ANSI проводятся совместно.
В 1998 году был опубликован стандарт языка ISO/IEC 14882:1998
(известный как C++98), разработанный комитетом по стандартизации C++
(ISO/IEC JTC1/SC22/WG21 working group).
В 2003 году был опубликован стандарт языка ISO/IEC 14882:2003, где
были исправлены выявленные ошибки и недочёты предыдущей версии
стандарта.
В 2005 году был выпущен отчёт «Library Technical Report 1» (кратко
называемый TR1). Не являясь официально частью стандарта, отчёт описывает
расширения стандартной библиотеки, которые, как ожидалось авторами, должны
быть включены в следующую версию языка C++. Степень поддержки TR1
улучшается почти во всех поддерживаемых компиляторах языка C++.
В настоящее время разрабатывается новая версия стандарта,
неофициально называемая C++0x.
C++11 или ISO/IEC 14882:2011 (в процессе работы над стандартом носил
условное наименование C++0x)— новая версия стандарта языка C++, вместо
ранее действовавшего ISO/IEC 14882:2003. Новый стандарт включает
дополнения в ядре языка и расширение стандартной библиотеки, в том числе
большую часть TR1 — кроме, вероятно, библиотеки специальных
математических функций.
C++ Builder
PAGE \* MERGEFORMAT 11
C++ Builder — программный продукт, инструмент быстрой разработки
приложений (RAD), интегрированная среда программирования (IDE), система,
используемая программистами для разработки программного обеспечения на
языке C++.
Изначально разрабатывался компанией Borland Software, а затем её
подразделением CodeGear, ныне принадлежащем компании Embarcadero
Technologies.
C++ Builder объединяет в себе комплекс объектных библиотек (STL, VCL,
CLX, MFC и др.), компилятор, отладчик, редактор кода и многие другие
компоненты. Цикл разработки аналогичен Delphi. Большинство компонентов,
разработанных в Delphi, можно использовать и в C++ Builder без модификации,
но обратное утверждение не верно.
C++ Builder содержит инструменты, которые при помощи drag-and-drop
действительно делают разработку визуальной, упрощает программирование
благодаря встроенному WYSIWYG — редактору интерфейса и пр.
C++ Builder первоначально создавалась только для платформы Microsoft
Windows. Поздние версии, содержащие кроссплатформенную компонентную
библиотеку Borland, поддерживают и Windows, и Linux.
В 2003 году Borland выпустила C++ BuilderX (CBX), написанный при
помощи той же инфраструктуры, что и JBuilder, который при этом был мало
похож на C++ Builder или Delphi. Этот продукт предназначался для разработки
больших программ для крупных предприятий, но коммерческого успеха не
достиг. В конце 2004 года Borland объявила, что продолжит развитие
классического C++ Builder и объединит его со средой разработки Delphi,
прекратив, таким образом, разработку C++ BuilderX.
Спустя примерно год после этого объявления, Borland выпустила Borland
Developer Studio 2006, который включал в себя Borland C++ Builder 2006,
предлагавший улучшенное управление конфигурацией и отладкой. Borland
Developer Studio 2006 — единственный полноценный комплект, содержащий
Delphi, C++ Builder и C# Builder.
В 2007 CodeGear выпустила C++ Builder 2007, в котором реализовала
полную поддержку API Microsoft Windows Vista, увеличила полноту
PAGE \* MERGEFORMAT 11
соответствия стандарту ANSI C++, увеличила скорость компиляции и сборки до
500 %, включила поддержку MSBuild, архитектур баз данных DBX4 и «VCL для
Web», поддерживающий AJAX. Поддержка API Microsoft Windows Vista
включила в себя приложения, изначально оформленные в стиле Vista, и
естественную поддержку VCL для Aero и Vista Desktop. CodeGear RAD Studio
2007 содержит C++ Builder 2007 и Delphi. Также в 2007 CodeGear «воскресила»
марку «Turbo» и выпустила две «Turbo» версии C++ Builder: Turbo C++
Professional и Turbo C++ Explorer (бесплатный), основанных на Borland C++
Builder 2006.
В конце 2008 года компания CodeGear выпустила новую версию RAD
Studio, в которую вошли Delphi 2009 и С++ Builder 2009. В 2009 году в составе
RAD Studio вышел C++ Builder 2010.
Ранее сообщалось, что следующая версия, CodeGear C++ Builder (кодовое
имя «Commodore»), будет обладать поддержкой x86-64 и возможностью
создавать машинный x86-64 код. Однако в 2010 году в состав RAD Studio XE
включена версия C++ Builder XE без этой функциональности.
3. ОСНОВНАЯ ЧАСТЬ
PAGE \* MERGEFORMAT 11
1. Постановка задачи.
Рис.1.
PAGE \* MERGEFORMAT 11
Отказ в обслуживании заявки происходит, когда все m мест в очереди
заняты, т.е. вероятность отказа в обслуживании ротк равна
2. Программа.
Smo.h
#ifndef poH
#define poH
PAGE \* MERGEFORMAT 11
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Grids.hpp>
#include <Chart.hpp>
#include <ExtCtrls.hpp>
#include <Series.hpp>
#include <TeEngine.hpp>
#include <TeeProcs.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
TEdit *Edit4;
TEdit *Edit5;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TLabel *Label5;
TMemo *Memo1;
TButton *Button1;
TStringGrid *StringGrid1;
TStringGrid *StringGrid2;
TChart *Chart1;
PAGE \* MERGEFORMAT 11
TLineSeries *Series1;
TButton *Button2;
TImage *Image1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
smo.cpp
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "po.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
PAGE \* MERGEFORMAT 11
int fact(int a)
{
if(a <= 1)
return 1;
else
return a * fact(a - 1);
}
int n,m;
float l,mu,t,p0,ro,nu,b,p01=0,p02=0,q;
float pot,Q,A,L,tc,q1=1,q2,s=0;
float pk[10],pni[10];
Memo1->Clear();
Chart1->Series[0]->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
n=StrToInt(Edit1->Text);
m=StrToInt(Edit2->Text);
l= StrToFloat(Edit3->Text);
mu=StrToFloat(Edit4->Text);
t= StrToFloat(Edit5->Text);
StringGrid1->RowCount=n+1;
StringGrid2->RowCount=m+1;
PAGE \* MERGEFORMAT 11
StringGrid1->Cells[0][0]="Вероятность занятости ";
StringGrid2->Cells[0][0]="Вероятность очереди";
nu=1/t;
ro=l/mu;
b=nu/mu;
for(int i=1;i<=n;i++)
{
p01+=pow(ro,i)/fact(i);
}
for (int i=1;i<=m;i++)
{
q=1;
for (int j=1;j<=i;j++) q*=n+j*b;
p02+=pow(ro,i)/q;
}
p0=pow(1+p01+pow(ro,n)*p02/fact(n),-1);
PAGE \* MERGEFORMAT 11
Memo1->Lines->Add("p0 = "+FloatToStrF(p0,ffFixed,8,3));
pk[0]= p0;
for(int i=1;i<=n;i++)
{
pk[i]=pow(ro,i)*p0/fact(i);
StringGrid1->Cells[1][i]=FloatToStrF(pk[i],ffFixed,8,2);
}
for(int i=1;i<=m;i++)
{
q=1;
for (int j=1;j<=i;j++) q*=n+j*b;
pni[i]=pk[n]*pow(ro,i)/q;
StringGrid2->Cells[1][i]=FloatToStrF(pni[i],ffFixed,8,2);
}
Q=1-pk[n]*pow(ro,m)/q1;
Memo1->Lines->Add("Относительная пропускная способность =
"+FloatToStrF(Q,ffFixed,8,3));
A= l*Q;
Memo1->Lines->Add("Абсолютная пропускная способность =
"+FloatToStrF(A,ffFixed,8,3));
PAGE \* MERGEFORMAT 11
for (int i=1;i<=m;i++)
{
q2=1;
for (int j=1;j<=i;j++) q2*=n+j*b;
s+=i*pow(ro,i)/q2;
}
L=pk[n]*s;
Memo1->Lines->Add("Среднее число клиентов в очереди =
"+FloatToStrF(L,ffFixed,8,3));
tc=Q/mu+t;
Memo1->Lines->Add("Среднее время пребывания заявки =
"+FloatToStrF(tc,ffFixed,8,3));
Image1->Width=200*(n+m);
Image1->Canvas->Pen->Color = clBlack; // Установка цвета карандаша
Image1->Canvas->Brush->Color = clWhite; // Установка цвета кисти
int h;
// квадратики
for(int i=0;i<=n+m;i++)
{
h=0;
h=(i+1)*120;
Image1->Canvas->Rectangle(30+h,30+50,90+h,90+50);
PAGE \* MERGEFORMAT 11
Image1->Canvas->TextOut(50+h,100,"S"+IntToStr(i));
}
//верх. линии
for(int i=1;i<=n+m;i++)
{
Image1->Canvas->MoveTo(90+120*i,95);
Image1->Canvas->LineTo(90+120*i+60,95);
}
//ниж.a линии
for(int i=1;i<=n+m;i++)
{
Image1->Canvas->MoveTo(90+120*i,125);
Image1->Canvas->LineTo(90+120*i+60,125);
for(int i=0;i<n;i++);
{
Image1->Canvas->TextOut(110+120*i,130,mu*i);
}
}
int z=0;
for(int i=n;i<=n+m;i++)
{
Image1->Canvas->TextOut(110+120*i,130, floor(mu*i+nu*z));
z++;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
PAGE \* MERGEFORMAT 11
{
Chart1->Series[0]->Clear(); // Очистка графика
Memo1->Clear();
n=-1;
m=-1;
Image1->Canvas->FillRect(Rect(0,0,Image1->Width,Image1->Height));
StringGrid1->RowCount=n+1;
StringGrid2->RowCount=m+1;
p01=0;
p02=0 ;
s=0;
}
//---------------------------------------------------------------------------
3. Результат.
Результаты работы программы изображены на рис. 1 и 2.
PAGE \* MERGEFORMAT 11
Рис. 1
Рис 2.
PAGE \* MERGEFORMAT 11
Введем данные:
Количество каналов (обслуживащих устройств), n = 3(рабочих, бригад и т.п.)
Количество заявок в очереди, m =4
Интенсивность потока заявок λ: 10 [час-1]
Интенсивность потока обслуживания μ: 3 [час-1] и tобс = (1/6)часа
Исчисляем показатели обслуживания многоканальной СМО:
1. Интенсивность нагрузки.
PAGE \* MERGEFORMAT 11
Вероятность отказа в обслуживании pотк = 0.010
Значит, 1% из числа поступивших заявок не принимаются к
обслуживанию.
6. Вероятность обслуживания поступающих заявок.
Относительная пропускная способность: Q = 0.990
Следовательно, 99% из числа поступивших заявок будут обслужены.
Приемлемый уровень обслуживания должен быть выше 90%.
7. Абсолютная пропускная способность.
Абсолютная пропускная способность А = 9.901
PAGE \* MERGEFORMAT 11
ЗАКЛЮЧЕНИЕ
PAGE \* MERGEFORMAT 11
СПИСОК ЛИТЕРАТУРЫ
PAGE \* MERGEFORMAT 11