Разработка программной реализации алгоритма

 

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

В программной реализации используются следующие частные переменные:

· i, j - используются для хранения вспомогательных индексных значений;

· t - дискретные отсчёты времени периода моделирования;

· tin – входящий поток, время прихода посетителя (момент поступления в систему следующего требования);

· ton [ ] - моменты завершения обработки требований соответствующими элементам массива обрабатывающими устройствами, то есть массив для сохранения интервалов времени ухода посетителей;

· Cena –цена обслуживания клиента;

· r – число отказов пользователям;

· m – число обслуженных посетителей;

R -выручка парикмахерской за период моделирования

Программная реализация алгоритма производится в несколько этапов:

1. Подключение в программу заголовочных файлов:

#include //включение в программу текстов заранее подготовленных файлов

#include<iostream.h> //содержит потоки данных ввода/вывода

#include<math.h> //хранятся математически функции

#include<conio.h> //

#include<stdlib.h> //

# include <values.h> //содержит описания данных

#define //определение параметров модели и прочих исходных данных на глобальном уровне, описанной в п.

#define RCLIENTS x1[discrete(p1)]

float x1[]={7,8,9,10,11,12,13,14,15};

float p1[]={0.05, 0.05, 0.05, 0.2, 0.2, 0.2, 0.05, 0.05, 0.15};

#define CENA x2[discrete(p2)]

floatx1[]={10,12,13,14,15,16,17,18,19};

floatp1[]={0.05, 0.05, 0.05, 0.05, 0.05, 0.2, 0.2, 0.2, 0.15};

#defineC (125*125*125*125*5) //объявление мультипликативного конгруэнтного метода, которое описывается в п.1.3.

#definen 2 // общее число парикмахеров

#defineT (8*60*30) // период моделирования (в мин.)

2. Генерация мультипликативным конгруэнтным методом псевдослучайной последовательности чисел:

floatrand(void) //генерация псевдослучайной последовательности с равномерным распределением

{

static unsigned long int u=C;

// static – модификатор для того, чтобы локальная переменная u сохраняла значение между двумя последующими обращениями к этой функции

u=u*C; //С - константа

returnu/float(0xfffffffful); // (0xfffffffful) – максимально беззнаковые целое число, заданное в шестнадцатеричной форме.

}

3. Вызов функций моделирования:

//функция моделирования показательного распределения, описанная в п.1.7.

unsigned int discrete(float p[ ])

{

float s, r;

int k=0;

s=p[ ];

r=rand();

while (s<r)

{

k++;

s+=s+p[k];

}

returnk;

}

4. Инициализация

unsigned long int i,j,cost, R,r,n,k;

float t, tin;

m=0; k=0; R=0;

5. Запускпрограммы

tin=RIN;

for(i=0;i<T;i++)

6. Обработказавершения

for(j=0;j<N;j++) if(ton[j]==i)

{

m++;

 ton[j]=-1;

}

7. Обработка очередного входящего события

if(i==tin)

{

     j=0; while((ton[j]!=-1) && (j<N)) j++;

     if(j!=N)

     {

    i=RCLIENTS;

n++;

for(;t<N;i++)

if(rand1()<=P)

{

cost=cost+a*CENA;

k++;

}

     } else r++;

     tin=RIN+i;

}

}

8. Выводимые результаты:

cout<<"........................ Rezultati modelirovaniya..............................";

cout<<"1.Posetili parikmakherskuy:"<<n<<" chel"<<endl;

cout<<"2.Iz nikh obclujeno: "<<m<<" chel"<<endl;

cout<<"3. Iz nikh ne obclujeno: "<<r<<endl;

cout<<"5Viruchka sostavila: "<<n*cost<<" rub"<<endl;

getch();

}

 

Моделирование программы с заданными параметрами

 

Запустив программу, написанную на языке С++, мы получили следующие результаты согласно исходным данным:



Рис3. Результат выполнения разработанной программы

 

При данном количестве парикмахеров– 2, было рассчитано:

· Общее количество посетителей-25 человек;

· Общее количество обслуженных клиентов-20человек;

· Oбщее количество отказов-5 человек;

· Полученная прибыль составила 13690руб.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: