Skip to content

Commit 82d2fcb

Browse files
#TDP - 6 Add new label
Middle time working -> Total info Middle count working PC -> Total info Percent wait -> compution from totalWork
1 parent bd6706a commit 82d2fcb

9 files changed

+377
-261
lines changed

ModelingSystemInfiniteQueue/ModelingInfinityQeueForm.cpp

Lines changed: 95 additions & 260 deletions
Large diffs are not rendered by default.

ModelingSystemInfiniteQueue/ModelingInfinityQeueForm.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include "ModelingSystemInfinityQueuePC.h"
23

34
namespace ModelingSystemInfiniteQueue {
45

@@ -434,7 +435,9 @@ namespace ModelingSystemInfiniteQueue {
434435
}
435436
#pragma endregion
436437
private:
437-
System::Void setTextForLabelEveryMachine(System::Windows::Forms::Label^ curLabel, int const& totalTimeExectuionTasksCurPC, int const& totalTimeWaitCurPC,int const& totalTimeQueueCurPC, int const& maxCountTaskInQueueCurPC,int const& maxTimeCurrentQueueCurPC, int const& completeTask, int const& countTaskInQueueAfterTask, int const& countQueue);
438+
439+
System::Void setTextForLabelEveryMachine(System::Windows::Forms::Label^ curLabel, ModelingSystemInfinityQueuePC& PC,int countTaskInQueueAfterTask);
440+
438441
System::Void Tb_startInteervalGetTask_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e);
439442
System::Void Tb_endInteervalGetTask_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e);
440443
System::Void Tb_probabilityGetTaskSecond_KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e);

ModelingSystemInfiniteQueue/ModelingSystemInfiniteQueue.vcxproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,12 +133,17 @@
133133
<Reference Include="System.Xml" />
134134
</ItemGroup>
135135
<ItemGroup>
136+
<ClCompile Include="function.cpp" />
136137
<ClCompile Include="ModelingInfinityQeueForm.cpp" />
138+
<ClCompile Include="ModelingSystemInfinityQueuePC.cpp" />
137139
</ItemGroup>
138140
<ItemGroup>
141+
<ClInclude Include="function.h" />
142+
<ClInclude Include="include.h" />
139143
<ClInclude Include="ModelingInfinityQeueForm.h">
140144
<FileType>CppForm</FileType>
141145
</ClInclude>
146+
<ClInclude Include="ModelingSystemInfinityQueuePC.h" />
142147
</ItemGroup>
143148
<ItemGroup>
144149
<EmbeddedResource Include="ModelingInfinityQeueForm.resx">

ModelingSystemInfiniteQueue/ModelingSystemInfiniteQueue.vcxproj.filters

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,26 @@
1818
<ClCompile Include="ModelingInfinityQeueForm.cpp">
1919
<Filter>Исходные файлы</Filter>
2020
</ClCompile>
21+
<ClCompile Include="ModelingSystemInfinityQueuePC.cpp">
22+
<Filter>Исходные файлы</Filter>
23+
</ClCompile>
24+
<ClCompile Include="function.cpp">
25+
<Filter>Исходные файлы</Filter>
26+
</ClCompile>
2127
</ItemGroup>
2228
<ItemGroup>
2329
<ClInclude Include="ModelingInfinityQeueForm.h">
2430
<Filter>Файлы заголовков</Filter>
2531
</ClInclude>
32+
<ClInclude Include="include.h">
33+
<Filter>Файлы заголовков</Filter>
34+
</ClInclude>
35+
<ClInclude Include="ModelingSystemInfinityQueuePC.h">
36+
<Filter>Файлы заголовков</Filter>
37+
</ClInclude>
38+
<ClInclude Include="function.h">
39+
<Filter>Файлы заголовков</Filter>
40+
</ClInclude>
2641
</ItemGroup>
2742
<ItemGroup>
2843
<Text Include="log.txt">
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
#include "ModelingSystemInfinityQueuePC.h"
2+
#include "function.h"
3+
4+
5+
ModelingSystemInfinityQueuePC::ModelingSystemInfinityQueuePC(int numberPC,double probabilityGetTaskPC, double startIntervalTimeExecutionTaskPC,
6+
double endIntervalTimeExecutionTaskPC)
7+
{
8+
this->numberPC = numberPC;
9+
this->probabilityGetTaskPC = probabilityGetTaskPC;
10+
this->startIntervalTimeExecutionTaskPC = startIntervalTimeExecutionTaskPC;
11+
this->endIntervalTimeExecutionTaskPC = endIntervalTimeExecutionTaskPC;
12+
}
13+
14+
15+
ModelingSystemInfinityQueuePC::~ModelingSystemInfinityQueuePC()
16+
{
17+
}
18+
19+
20+
int ModelingSystemInfinityQueuePC::getTimeExectuinOneTask()
21+
{
22+
return countCompletePC!=0 ? totalTimeExectuionTasksPC / countCompletePC : 0;
23+
}
24+
25+
int ModelingSystemInfinityQueuePC::getMiddleTimeWorkForOneTask()
26+
{
27+
return countCompletePC!=0 ? std::round(totalTimeExectuionTasksPC / countCompletePC) : 0;
28+
}
29+
30+
int ModelingSystemInfinityQueuePC::getMiddleTimeQueueForOneTask()
31+
{
32+
return countQueuePC != 0 ? std::round(totalTimeQueuePC / countQueuePC) : 0;
33+
}
34+
35+
int ModelingSystemInfinityQueuePC::getMiddleTimeBusyPC()
36+
{
37+
38+
return countBusyPC != 0 ? std::round(totalTimeExectuionTasksPC / countBusyPC) : 0;
39+
}
40+
41+
42+
void ModelingSystemInfinityQueuePC::completeTask()
43+
{
44+
45+
this->totalTimeExectuionTasksPC += this->currentTimeExecutionPC;
46+
this->countCompletePC++;
47+
48+
std::reverse(this->listTimeExecutionTasksPC.begin(), this->listTimeExecutionTasksPC.end());
49+
this->listTimeExecutionTasksPC.pop_back();
50+
if (this->listTimeExecutionTasksPC.size() != 0)
51+
std::reverse(this->listTimeExecutionTasksPC.begin(), this->listTimeExecutionTasksPC.end());
52+
if (this->listTimeExecutionTasksPC.size() == 0)
53+
this->currentTimeExecutionPC = 0;
54+
else
55+
this->currentTimeExecutionPC = 1;
56+
}
57+
58+
void ModelingSystemInfinityQueuePC::saveSizeQueueIfExists(int const& countTask)
59+
{
60+
if (countTask > 1 && this->maxCountTaskInQueuePC < countTask - 1)
61+
this->maxCountTaskInQueuePC = countTask - 1;
62+
}
63+
64+
void ModelingSystemInfinityQueuePC::calculateTimeInQueue(int const& countTask)
65+
{
66+
if (countTask > 1)
67+
{
68+
this->totalTimeQueuePC++;
69+
this->timeCurrentQueuePC++;
70+
}
71+
else
72+
{
73+
if (this->timeCurrentQueuePC > this->maxTimeQueuePC)
74+
this->maxTimeQueuePC = this->timeCurrentQueuePC;
75+
if (this->timeCurrentQueuePC != 0)
76+
{
77+
this->timeCurrentQueuePC = 0;
78+
this->countQueuePC++;
79+
}
80+
}
81+
}
82+
83+
84+
void ModelingSystemInfinityQueuePC::computitionPC(ModelingSystemInfinityQueuePC* PCs[])
85+
{
86+
if (this->listTimeExecutionTasksPC.size() != 0)
87+
{
88+
if (this->tempTimeWait != this->totalTimeWaitPC)
89+
{
90+
this->tempTimeWait = this->totalTimeWaitPC;
91+
this->countBusyPC++;
92+
}
93+
if (this->currentTimeExecutionPC >= std::round(this->listTimeExecutionTasksPC[0]))
94+
{
95+
completeTask();
96+
if (this->numberPC == 1)
97+
{
98+
switch (giveNumberPC(this->probabilityGetTaskSecondPCAfterFirstPC, this->probabilityGetTaskThirdPCAfterFirstPC))
99+
{
100+
case 1:
101+
PCs[0]->listTimeExecutionTasksPC.push_back(getRandom_uniformRealDistribution(PCs[0]->startIntervalTimeExecutionTaskPC, PCs[0]->endIntervalTimeExecutionTaskPC));
102+
break;
103+
case 2:
104+
PCs[1]->listTimeExecutionTasksPC.push_back(getRandom_uniformRealDistribution(PCs[1]->startIntervalTimeExecutionTaskPC, PCs[1]->endIntervalTimeExecutionTaskPC));
105+
break;
106+
default:
107+
PCs[0]->listTimeExecutionTasksPC.push_back(getRandom_uniformRealDistribution(PCs[0]->startIntervalTimeExecutionTaskPC, PCs[0]->endIntervalTimeExecutionTaskPC));
108+
break;
109+
}
110+
}
111+
}
112+
else
113+
{
114+
this->currentTimeExecutionPC++;
115+
saveSizeQueueIfExists(this->listTimeExecutionTasksPC.size());
116+
calculateTimeInQueue(listTimeExecutionTasksPC.size());
117+
118+
}
119+
}
120+
if (this->listTimeExecutionTasksPC.size() == 0)
121+
this->totalTimeWaitPC++;
122+
123+
}
124+
125+
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#pragma once
2+
#ifndef MODELINGSYSTEMINFINITYQUEUEPC_H
3+
#define MODELINGSYSTEMINFINITYQUEUEPC_H
4+
#include "include.h"
5+
6+
class ModelingSystemInfinityQueuePC
7+
{
8+
public:
9+
ModelingSystemInfinityQueuePC(int numberPC,double probabilityGetTaskPC, double startIntervalTimeExecutionTaskPC,
10+
double endIntervalTimeExecutionTaskPC);
11+
~ModelingSystemInfinityQueuePC();
12+
13+
void computitionPC(ModelingSystemInfinityQueuePC* PCs[]);
14+
int getTimeExectuinOneTask();
15+
int getMiddleTimeWorkForOneTask();
16+
int getMiddleTimeQueueForOneTask();
17+
int getMiddleTimeBusyPC();
18+
double probabilityGetTaskSecondPCAfterFirstPC = 0;
19+
double probabilityGetTaskThirdPCAfterFirstPC = 0;
20+
21+
std::vector<double> listTimeExecutionTasksPC; //ñîäåðæèò âðåìÿ âûïîëíåíèÿ êàæäîãî çàäàíèÿ ÝÂÌ
22+
23+
const double& getProbabilityGetTaskPC() const { return probabilityGetTaskPC; }
24+
const double& getStartIntervalTimeExecutionTaskPC() const { return startIntervalTimeExecutionTaskPC; }
25+
const double& getEndIntervalTimeExecutionTaskPC() const { return endIntervalTimeExecutionTaskPC; }
26+
const int& getTotalTimeExectuionTasksPC() const { return totalTimeExectuionTasksPC; }
27+
const int& getCountCompletePC() const { return countCompletePC; }
28+
const int& getTotalTimeWaitPC() const { return totalTimeWaitPC; }
29+
const int& getCurrentTimeExecutionPC() const { return currentTimeExecutionPC; }
30+
const int& getTotalTimeQueuePC() const { return totalTimeQueuePC; }
31+
const int& getMaxTimeQueuePC() const { return maxTimeQueuePC; }
32+
const int& getTimeCurrentQueuePC() const { return timeCurrentQueuePC; }
33+
const int& getMaxCountTaskInQueuePC() const { return maxCountTaskInQueuePC; }
34+
const int& getCountBusyPC() const { return countBusyPC; }
35+
const int& getCountQueuePC() const { return countQueuePC; }
36+
const int& getCountTaskInQueueAfterGetAllTaskPC() const { return countTaskInQueueAfterGetAllTaskPC; }
37+
private:
38+
int numberPC = 0;
39+
40+
double probabilityGetTaskPC = 0;
41+
42+
//Èíòåðâàë âûïîëíåíèå ÝÂÌ
43+
double startIntervalTimeExecutionTaskPC = 0;
44+
double endIntervalTimeExecutionTaskPC = 0;
45+
46+
47+
//Îáùåå âðåìÿ âûïîëíåíèÿ çàäà÷ è êîëè÷åñòâî ÝÂÌ
48+
int totalTimeExectuionTasksPC = 0;
49+
int countCompletePC = 0;
50+
51+
//îáùåå âðåìÿ ïðîñòîÿ êàæäîé ÝÂÌ
52+
int totalTimeWaitPC = 0;
53+
54+
//âðåìÿ âûïîëíåíèÿ çàäà÷è äëÿ êàæäîé ÝÂÌ
55+
int currentTimeExecutionPC = 0;
56+
57+
//îáùåå âðåìÿ î÷åðåäè â êàæäîé ÝÂÌ
58+
int totalTimeQueuePC = 0;
59+
60+
//ìàêñèìàëüíîå âðåìÿ î÷åðåäè
61+
int maxTimeQueuePC = 0;
62+
63+
//Âðåìÿ äëÿ êàæäîé îòäåëüíîé î÷åðåäè äëÿ ïîèñêà ñàìîé äîëãîé î÷åðåäè
64+
int timeCurrentQueuePC = 0;
65+
66+
//Ìàêñèìàëüíàÿ î÷åðåäü êàæäîé ÝÂÌ
67+
int maxCountTaskInQueuePC = 0;
68+
69+
//Êîëè÷åñòâî ðàç çàíÿòîñòè
70+
int countBusyPC = 0;
71+
int tempTimeWait = 0;
72+
73+
//Êîëè÷åñòâî î÷åðåäåé
74+
int countQueuePC = 0;
75+
76+
//Êîëè÷åñòâî çàäà÷ îñòàâøèõñÿ â î÷åðåäè
77+
int countTaskInQueueAfterGetAllTaskPC = 0;
78+
79+
80+
void completeTask();
81+
void saveSizeQueueIfExists(int const& countTask);
82+
void calculateTimeInQueue(int const& countTask);
83+
84+
85+
};
86+
87+
#endif
88+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#include "include.h"
2+
double getRandom_uniformRealDistribution(double const& start, double const& end)
3+
{
4+
std::mt19937 gen((std::random_device())());
5+
std::uniform_real_distribution<> nd(start, end);
6+
double res = std::abs(int((nd(gen)) * 100 + 0.5) / 100.0);
7+
return res;
8+
}
9+
10+
11+
int giveNumberPC(double const& prob1, double const& prob2)
12+
{
13+
double random = getRandom_uniformRealDistribution(0.0, 1.0);
14+
if (random > 0 && random < prob1)
15+
return 1;
16+
else
17+
{
18+
if (random >= prob1 && random <= prob1 + prob2)
19+
return 2;
20+
else
21+
return 3;
22+
}
23+
return 0;
24+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#pragma once
2+
#ifndef FUNCTION_H
3+
#define FUNCTION_H
4+
5+
double getRandom_uniformRealDistribution(double const& start, double const& end);
6+
int giveNumberPC(double const& prob1, double const& prob2);
7+
#endif
8+
#pragma once
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#pragma once
2+
#ifndef INCLUDE_H
3+
#define INCLUDE_H
4+
5+
#include <iostream>
6+
#include <cmath>
7+
#include <random>
8+
#include <time.h>
9+
#include <vector>
10+
#include <algorithm>
11+
#include <map>
12+
13+
#endif

0 commit comments

Comments
 (0)