int TeacherCount=0;
int StudentMax=0;
int ClientCount=0; //Количество посетителей
float Dispersion=0; //Дисперсия
int m=52; //Размер выборки
int ExecutionWaitingTime=0;
int WorkTime=0;
int M=0; //ограничение по колчеству студентов
float N=0; //Количество реализаций
float e=StrToFloat(edAccuracy->Text);
float t=1.7; //Квантиль нормального распределения
TeacherCount=TMod/MatogTeacher; //Максимально допустимое количество пришедших преподавателей
edTeacher->Text=IntToStr(TeacherCount);
StudentMax=TMod/MatogStudent; //Максимально допустимое количество пришедших студентов
for (int i=0;i<m;i++)
{
Execution=Execution+1;
Dispersion=pow(AverageExecution-Execution,2)/(m-1);
}
N=(Dispersion/sqrt(e))*pow(t,2);
while(N>0)
{
N--;
while(M<StudentMax)
{
M++;
if (Order==0) //Самый первый посетитель
{
Order=Order+1;
ClientCount=ClientCount+1;
Execution=Execution+1;
ExecutionWaitingTime=Application+Execution+Calculation;
WorkTime=ExecutionWaitingTime;
}
if (Order>0) //Если есть очередь
{
Order=Order+1;
ClientCount=ClientCount+1;
Execution=Execution+1;
while (WorkTime<=TMod*60)
{
ExecutionWaitingTime=ExecutionWaitingTime+TOrder+Application+Execution+Calculation; //Время выполнения заказа
WorkTime=ExecutionWaitingTime; //Время работы буфетчика
}
}
if (Order>5) //Если очередь слишком большая и нет свободных столиков
{
RefusalCount=RefusalCount+1; //Количество отказавшихся от обслуживания посетителей пишем в счетчик
Order=0;
}
}
Execution=Execution+1;
}
N=(Dispersion/sqrt(e))*pow(t,2);
if (Kanal>1)
{
edRefusal->Text=RefusalCount/Kanal;
edExecutionWaitingTime->Text=FloatToStr(ExecutionWaitingTime/(ClientCount*Kanal));
edDownTime->Text=IntToStr(TMod*60-(WorkTime/Kanal));
edClient->Text=IntToStr(ClientCount+TeacherCount);
edShare->Text=FloatToStr(ClientCount+TeacherCount-RefusalCount);
edAverageExecution->Text=FloatToStr(Execution/N);
}
else
{
edRefusal->Text=RefusalCount; edClient->Text=IntToStr(ClientCount+TeacherCount);
edExecutionWaitingTime->Text=FloatToStr(ExecutionWaitingTime/ClientCount);
edDownTime->Text=IntToStr(WorkTime-TMod*60);
edShare->Text=FloatToStr(ClientCount+TeacherCount-RefusalCount);
edAverageExecution->Text=FloatToStr(Execution/N);
}
}
Результаты работы.
1) Изменение параметра «Количество каналов обслуживания».
Доведем количество каналов обслуживания до двух, например, и посмотрим поведение модели.
Среднее время обслуживания снизилось в два раза: с 218 до 115 секунд.
А вот время простоя возросло в 7 раз: с 163 до 875 секунд.
А при количестве каналов обслуживания – 3 среднее время обслуживания снизилось в четыре раза: с 218 до 51 секунд.
А вот время простоя возросло в 10 раз: с 163 до 1152 секунд.
Таким образом, увеличение количества каналов в студенческой кофейне считаем экономически невыгодным, так как возрастает время простоя, а среднее время сокращается таким образом, что нет никакого выигрыша.
Среднее время обслуживания – Количество каналов (в секундах).
Время простоя кассира – Количество каналов (в секундах).
2) Изменение параметра «Время выполнения заказа».
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.