Канал может обслуживать одновременно только одну заявку. Обслуживание заявок производится в таком порядке: сначала в очереди нет ни одной машины, и колонка свободна. В момент поступления машины начинается его обслуживание. Если следующая машина приезжает в тот момент, когда канал занят, то она становится в очередь. Далее дисциплина обслуживания такова: обслуживается машина, стоящая первая в очереди.
(См. Приложение).
По полученному графику определяем следующие характеристики работы СМО:
- Среднее время задержки (автомобилей):
Тех. обслуживание: (11+38+26) /3 = 25
Простой ремонт: нет задержки
Средний ремонт: 265 / 6 = 44,2
Сложный ремонт: 42 / 2 =21
- Средняя длина очереди (автомобилей):
,Где: T(n) – конечное время работы системы;
T0, T1, T2 … - промежуток времени, в течении которого в системе находилось соответственно 0, 1, 2 и более требований.
Тех. обслуживание: T(n)=546; T0=471; T1=75; g(n) = 75 / 546 = 0,14
Простой ремонт: нет очереди
Средний ремонт:T(n)=515; T0=249; T1=128, T2=108, T3=29; g(n) = (128+108*2+29*3) / 515 = 0,84
Сложный ремонт: T(n)=493; T0=451; T1=42; g(n) = 42 / 491 = 0,09
- Максимальная длина очереди (автомобилей): L(max) = 3 машины
- Коэффициент использования устройства (блоков на СТО):
; ;Тех. обслуживание: Un = 480 / 546 = 0,88 => 88% - работает, 12% - простой;
Простой ремонт: Un = 92/ 517 = 0,18 => 18% - работает, 72% - простой;
Средний ремонт: Un = 316 / 546 = 0,61 => 61% - работает, 39% - простой;
Сложный ремонт: Un = 221 / 546 = 0,45 => 45% - работает, 55% - простой.
3.3 Блок – схема
3.4 Перевод модели на язык программирования
3.4.1 Выбор языка программирования
Структурное программирование – это технология создания программ, позволяющая путем соблюдения определенных правил уменьшить время разработки и количество ошибок, а также облегчить возможность модификации программы.
Разные типы процессоров имеют разный набор команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня. Языком самого низкого уровня является язык ассемблера, который просто представляет каждую команду машинного кода в виде специальных символьных обозначений, которые называются мнемониками. С помощью языков низкого уровня создаются очень эффективные и компактные программы, так разработчик получает доступ ко всем возможностям процессора. Т .к. наборы инструкций для разных моделей процессоров тоже разные, то каждой модели процессора соответствует свой язык ассемблера, и написанная на нем программа может быть использована только в этой среде. Подобные языки применяют для написания небольших системных приложений, драйверов устройств и т. п.
С помощью языка программирования создается текст, описывающий ранее составленный алгоритм. Чтобы получить работающую программу, надо этот текст перевести в последовательность команд процессора, что выполняется при помощи специальных программ, которые называются трансляторами. Трансляторы бывают двух видов: компиляторы и интерпретаторы. Компилятор транслирует текст исходного модуля в машинный код, который называется объектным модулем за один непрерывный процесс. При этом сначала он просматривает исходный текст программы в поисках синтаксических ошибок. Интерпретатор выполняет исходный модуль программы в режиме оператор за оператором, по ходу работы, переводя каждый оператор на машинный язык.
Языки программирования высокого уровня не учитывают особенности конкретных компьютерных архитектур, поэтому создаваемые программы на уровне исходных текстов легко переносятся на другие платформы, если для них созданы соответствующие трансляторы.
Си – был создан в 70- е годы первоначально не рассматривался как массовый язык программирования. Он планировался для замены ассемблера, чтобы иметь возможность создавать такие же эффективные и короткие программы, но не зависеть от конкретного процессора. Он во многом похож на Паскаль и имеет дополнительные возможности для работы с памятью.
Си++ - объектно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980г.
3.4.2 Программа
Принятые сокращения:
tk – количество минут (в нашей программе tk = 7200, т.е. 5 дней);
kol – количество машин, прибывших на СТО за 5 дней;
st – счетчик машин, поступивших на СТО за 5 дней;
i – переменная;
j – кол-во машин, поступивших на тех. обслуживание;
r1 - кол-во машин, поступивших на простой ремонт;
r2- кол-во машин, поступивших на средний ремонт;
r3- кол-во машин, поступивших на сложный ремонт;
k, l, m, n – переменные;
p – случайное число;
s_to – выручка на блоке тех. обслуживания за 5 дней;
s_pr– выручка по простому ремонту за 5 дней;
s_sr– выручка по среднему ремонту за 5 дней;
s_sl– выручка по сложному ремонту за 5 дней;
SUM– общая выручка на СТО за 5 дней.
Программныйкод:
#include<iostream.h>
#include<math.h>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
int tk,kol,i=0,j=0,r1=0,r2=0,r3=0,k=1,l=1,m=1,n=1;
float p, st=0, s_to=0, s_pr=0, s_sr=0, s_sl=0, SUM;
cin>>tk;
while (st<=tk)
{
p = - log(rand()))/32767*14;
st=st+p;
i++;
}
kol=i;
for (i=1; i<=kol; i++)
{
p=float(rand())/32767;
if (p<=0,12) {j++; r2++;}
else if (p>0,12 && p<=0,36) j++;
else if (p>0,36 && p<=0,57) r1++;
else if (p>0,57 && p<=0,78) r2++;
else r3++;
}
while (k<=j)
{
p= float(rand())/32767*300+100;
s_to=s_to+p;
k++;
}
while (l<=r1)
{
p=float(rand())/32767*400+50;
s_pr=s_pr+p;
l++;
}
while (m<=r2)
{
p=float(rand())/32767*1300+100;
s_to=s_to+p;
k++;
}
while (n<=r3)
{
p=float(rand())/32767*2200+350;
s_sl=s_sl+p;
n++;
}
SUM=s_to+s_pr+s_sr+s_sl;
cout<<"viruchka za 5 dnei ravna"<<SUM<<endl;
}
Рис.9 Результат выполнения программы
Заключение
Широкое внедрение электронно-вычислительной техники во все сферы нашей жизни в последнее время, вызвало бурный рост технологий, связанных с применением в них средств вычислительной техники. Одной из наиболее крупных отраслей развития технологий с применением ЭВМ, является математическое моделирование, которое достаточно просто (в отличие от аналогового моделирования) может быть реализовано на ЭВМ разных модификаций и возможностей. Связано это с тем, что при математическом моделировании модель представляет собой определенную последовательность математических зависимостей и динамика такой модели представляет собой изменение параметров зависимостей в результате выполнения расчетов. Математическое моделирование тесно связано с имитационным моделированием. Одним из разделов математического моделирования, являются модели систем массового обслуживания и их изучение.
В данном курсовом проекте была построена имитационная модель СТО с использованием программы С++, при этом мы использовали программу моделирования процесса с N обрабатывающими устройствами и с очередью. В результате моделирования мы вычислили: выручку на СТО за 5 дней, построили график обслуживания автомобилей, программу и блок-схему.
Список использованной литературы
1. Емельянов А.А. «имитационное моделирование экономических процессов» 2002г
2. Советов В.Я., Яковлев С.А. «Моделирование системы» 2001г.
3. Соболь И.М. «Метод Монте-Карло» 1968г.
4. Шеннон Р. «Имитационное моделирование систем – искусства и науки» 1978г.
5. «Машинные имитационные эксперименты с моделями экономических систем» под редакцией Нейлера.
6. Бусленко М.П. «Моделирование сложных систем».
7. Кеольтон В., Лод А. «Имитационное моделирование. Классика CS» издание 3-е, 2004г.