Mass service theory: basic examples¶
Let's begin to master the EventSimulation
library toolkit for the analytical study of discrete event logic and mass service system (MSS) models.
Mass service theory includes tools for analysing the performance of complex systems that deal with repeatedly occurring stochastic events and allow the evaluation of system characteristics such as the presence of queues, average waiting time before service starts or average equipment downtime.
The common components of any mass service system are the presence of an inbound flow of requests, a given system structure (number and capacity of storage units, queues and other service devices), time to service requests and service discipline (the algorithm for distributing requests to handlers, selecting requests from the queue and forming queues).
The EventSimulation
library allows you to program systems based on discrete event logic. In such systems, the time between events can be expressed in relative values, and simulation is based on events rather than on an explicitly defined continuous time vector, as in simulation of graphical models created from blocks.
First, let's install this library in our system (this step is performed once, comment out the following line when running it again).
Let's consider the simplest situation - when five clients "came" to our system with an interval of 1 unit of time between them, and servicing each of them took 1.5 units of time.
1.0: Новый клиент
2.0: Новый клиент
2.5: Уход клиента, который пришел в 1.0
3.0: Новый клиент
3.5: Уход клиента, который пришел в 2.0
4.0: Новый клиент
4.5: Уход клиента, который пришел в 3.0
5.0: Новый клиент
5.5: Уход клиента, который пришел в 4.0
6.5: Уход клиента, который пришел в 5.0
Inside the arrival
function, for each customer, the arrival time is logged and a leave event is created and stored in the dispatcher (Scheduler
) along with an anonymous function that will be called by the dispatcher when the time comes.
The value x.now
is taken from the dispatcher state vector.
If we want to analyse a situation with an unlimited number of incoming objects or events, it will not be enough to process clients in a loop. We will need a source of events, which we will create using repeat_register
.
1.0: Новый клиент
2.0: Новый клиент
2.5: Уход клиента, который пришел в 1.0
3.0: Новый клиент
3.5: Уход клиента, который пришел в 2.0
4.0: Новый клиент
4.5: Уход клиента, который пришел в 3.0
5.0: Новый клиент
5.5: Уход клиента, который пришел в 4.0
6.0: Новый клиент
6.5: Уход клиента, который пришел в 5.0
7.0: Новый клиент
Clients still arrive once every 1 time unit, but now their queue is infinite. The simulation duration is defined in the go!(s, 7)
command as 7 time units.
Let's add a counter of clients to our model. To do this we need to define the structure CounterState
, which will be initialised for the dispatcher Scheduler
when it is created.
It should be noted that redefining already created structures usually requires reloading the Julia kernel (e.g. by means of GUI Engee).
0.07: Новый клиент (клиентов в очереди 1)
0.42: Новый клиент (клиентов в очереди 2)
1.07: Уход клиента, который пришел в 0.07 (клиентов в очереди 2)
1.12: Новый клиент (клиентов в очереди 2)
1.42: Уход клиента, который пришел в 0.42 (клиентов в очереди 2)
1.75: Новый клиент (клиентов в очереди 2)
2.12: Уход клиента, который пришел в 1.12 (клиентов в очереди 2)
2.66: Новый клиент (клиентов в очереди 2)
2.75: Уход клиента, который пришел в 1.75 (клиентов в очереди 2)
2.86: Новый клиент (клиентов в очереди 2)
3.63: Новый клиент (клиентов в очереди 3)
3.66: Уход клиента, который пришел в 2.66 (клиентов в очереди 3)
3.86: Уход клиента, который пришел в 2.86 (клиентов в очереди 2)
4.41: Новый клиент (клиентов в очереди 2)
4.63: Уход клиента, который пришел в 3.63 (клиентов в очереди 2)
Finally we realise a classical system with the following parameters:
- the incoming flow of requests has a Poisson distribution
- the distribution of service time is exponential
- the number of servicing servers/request handlers is equal to 1
- the service queue is infinite,
- service discipline is called FCFS (FIFO) from first in, first served or first in, first out.
To be on the safe side, let's put libraries that may not be in the system by default.
After installing them in the system, we can simulate M/M/1 LMS using the following algorithm.
The structure MMQueue
accumulates statistics on the current work of the dispatcher (in the course of the current simulation) and allows us to obtain, as an output of the function run!
, the average value of the difference between the arrival and departure times of each particular object (mean( d-a )
) that passed through the system during the simulation 1 000 000
time units.
We see that with an event rate of 1.11, 3 out of 20 runs resulted in exceeding the specified average service time.
We have explored basic techniques for modelling mass maintenance systems. Engee allows inserting into simulation loops the invocation of external information systems or the running of models placed on the canvas, so mass service theory tools can become an important part of the chain of systems reliability analysis.
{"id": "2ba8d281-9e8e-4b0c-9831-925239e768ca", "data": [{"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y1", "yaxis": "y", "legendgroup": "y1", "line": {"color": "rgba(0, 154, 250, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0014986434662100923, 0.0022455085612301806, 0.00180280667043764, 0.003358738522049709, 0.0022856860110587185, 0.0014773395111221665, 0.002615974477159666, 0.012482908552718941, 0.003744785320720201], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y2", "yaxis": "y", "legendgroup": "y2", "line": {"color": "rgba(227, 111, 71, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.004236348757587494, 0.004506547157481222, 0.0063578383221232215, 0.0036200548439846436, 0.0009060886932403811, 0.008583880617931028, 0.004713402274835077, 0.017485042508208704, 0.013835202997946272], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y3", "yaxis": "y", "legendgroup": "y3", "line": {"color": "rgba(62, 164, 78, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0014969359665697457, 0.0015262846581820533, 0.0016523872666823758, 0.0002646247782567279, 0.007389618589934588, 0.010418019415940005, 0.0033055084419204572, 0.0038864446092263805, 0.016857805961442596], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y4", "yaxis": "y", "legendgroup": "y4", "line": {"color": "rgba(195, 113, 210, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0005894852942092133, 0.0003482175082172301, 0.0008870652279292512, 0.0038964549719162633, 0.00808047512540333, 0.0001270001881006344, 0.007704717331931121, 0.0043245684461151734, 0.007824605165514642], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y5", "yaxis": "y", "legendgroup": "y5", "line": {"color": "rgba(172, 142, 24, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.003329578990683979, 0.001567194404273664, 0.004298124641764933, 0.002647358690497814, 0.003989669532864726, 0.0006274833005757152, 0.009900908899635574, 0.010042864346661018, 0.024286374854722848], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y6", "yaxis": "y", "legendgroup": "y6", "line": {"color": "rgba(0, 170, 174, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.007406329171919412, 0.0032813365498371994, 0.006604410456475307, 0.00070258218624486, 0.0028179461541956163, 0.007319125262141624, 0.0029093307609084906, 0.009665639751141542, 0.05546983649809922], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y7", "yaxis": "y", "legendgroup": "y7", "line": {"color": "rgba(237, 94, 147, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0038580425164251864, 0.0020781753227534505, 0.0011830549470817076, 0.0011752734305734425, 0.004263093098126891, 0.0026698007772454346, 0.01213148962112831, 0.0006693138047348945, 0.03193412369408666], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y8", "yaxis": "y", "legendgroup": "y8", "line": {"color": "rgba(198, 130, 37, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.00013714829548416851, 0.00019379700921928755, 0.0032604571780059377, 0.005856324827832271, 0.005511193286022231, 0.00011584099061590081, 0.01640382074448743, 0.0033114059746319757, 0.012893064671145149], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y9", "yaxis": "y", "legendgroup": "y9", "line": {"color": "rgba(0, 169, 141, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.003706090183733579, 0.001352962596152807, 0.0009936808751564996, 0.0021594139600213946, 0.008014796552797354, 0.0007368512129951599, 0.0055102441335355135, 0.00014694816734972527, 0.02338050117481494], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y10", "yaxis": "y", "legendgroup": "y10", "line": {"color": "rgba(142, 151, 30, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.001939849103147262, 0.003101349905991646, 0.00028469536297981435, 0.001900638117428688, 0.0017410188530246895, 0.00867151871155225, 0.012352935948647614, 0.011063385555341698, 0.009463694977454029], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y11", "yaxis": "y", "legendgroup": "y11", "line": {"color": "rgba(0, 169, 204, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.00548587325116312, 0.0005804411151881794, 0.0011671744657784089, 0.005917701832306443, 0.0011800025607744402, 0.012012786110566331, 0.0038691957367136265, 0.008736383258456826, 0.020209441577511145], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y12", "yaxis": "y", "legendgroup": "y12", "line": {"color": "rgba(155, 127, 233, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.00040995808765798003, 0.0001607667997219897, 0.0027397598043273907, 0.003051541759012344, 0.005006766611099889, 0.004582868969265963, 0.0010594637621984537, 0.01159670896842524, 0.011257403889373352], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y13", "yaxis": "y", "legendgroup": "y13", "line": {"color": "rgba(97, 141, 246, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0027636366444762084, 0.004961083246854958, 0.001537446567602796, 0.002399177249677753, 6.986920243723382e-05, 0.0014790978029425306, 0.0022532487463795547, 0.0004677165562951835, 0.004740501433868283], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y14", "yaxis": "y", "legendgroup": "y14", "line": {"color": "rgba(240, 96, 115, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0008335768265749222, 0.002011259808284649, 0.0023594111719921207, 0.00031282944815991254, 0.0008038576347105808, 0.0025875425494810145, 0.009891930521567671, 0.002015223750460482, 0.016938899708251798], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y15", "yaxis": "y", "legendgroup": "y15", "line": {"color": "rgba(221, 101, 182, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0023563473233448873, 0.0016096423571314578, 0.004599693628882351, 0.003898012037287124, 0.005482483031902907, 0.00225168489863381, 0.0011617348713076625, 0.0009598743506891161, 0.014904636533575877], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y16", "yaxis": "y", "legendgroup": "y16", "line": {"color": "rgba(108, 159, 51, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0011080424922751408, 0.0007606514437124012, 0.0005995267126031045, 0.0024331249457472115, 0.0005294529019109762, 0.0004932567810713717, 0.002096602968832073, 0.015402122769636817, 0.006236108814934971], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y17", "yaxis": "y", "legendgroup": "y17", "line": {"color": "rgba(0, 154, 250, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0017094183998382917, 0.004136354416709009, 0.0023842386339649746, 0.0002995013116644518, 0.0021162115037320905, 0.001003621749648298, 0.00286084668608777, 0.004018677197921372, 0.018668369635882587], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y18", "yaxis": "y", "legendgroup": "y18", "line": {"color": "rgba(227, 111, 71, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0082906279072954, 0.004312487382682306, 0.00012939702382241958, 0.0018798644385511487, 0.0027213667726011526, 0.0013225945675623407, 0.009115819734903718, 0.0021506043336567693, 0.031491534719506165], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y19", "yaxis": "y", "legendgroup": "y19", "line": {"color": "rgba(62, 164, 78, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.0021627132832620077, 0.0012368839999161718, 1.6108662044156397e-05, 0.0034371191080966312, 0.004192408877098819, 0.008053602666574733, 0.011030068999756448, 0.002603421527618055, 0.002094440713706791], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y20", "yaxis": "y", "legendgroup": "y20", "line": {"color": "rgba(195, 113, 210, 1.000)", "shape": "linear", "dash": "solid", "width": 1}, "y": [0.005100577332864287, 0.003159508789113863, 0.003155206696361823, 0.002976934178319235, 0.00348543307727045, 0.012026635032551525, 0.002597815870978737, 0.006843762979601431, 0.005332398185913245], "type": "scatter", "x": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 9, "currentCount": 9}}}, {"showlegend": true, "mode": "lines", "xaxis": "x", "colorbar": {"y": 0.48958333333333337, "title": {"text": ""}, "len": 0.9039260717410325, "x": 0.9934383202099738}, "name": "y21", "yaxis": "y", "legendgroup": "y21", "line": {"color": "rgba(255, 0, 0, 1.000)", "shape": "linear", "dash": "dash", "width": 1}, "y": [0.03, 0.03], "type": "scatter", "x": [-84.72400000000002, 85.72400000000002], "zaxis": null, "z": null, "metadata": {"shouldEnableSmartZoom": false, "smartZoomParams": {"minCount": 25000, "maxCount": 2, "currentCount": 2}}}], "config": {"showlegend": false, "xaxis": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [0.2, 0.4, 0.6000000000000001, 0.8], "range": [0.07599999999999996, 0.924], "domain": [0.0658209390492855, 0.9934383202099738], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["0.2", "0.4", "0.6", "0.8"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "y", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "paper_bgcolor": "rgba(255, 255, 255, 1.000)", "annotations": [{"yanchor": "top", "xanchor": "center", "rotation": 0, "y": 1, "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 20}, "yref": "paper", "showarrow": false, "text": "Среднее время обслуживания", "xref": "paper", "x": 0.5296296296296296}], "height": 400, "margin": {"l": 0, "b": 20, "r": 0, "t": 20}, "plot_bgcolor": "rgba(255, 255, 255, 1.000)", "yaxis": {"showticklabels": true, "gridwidth": 0.5, "tickvals": [0, 0.010000000000000002, 0.020000000000000004, 0.030000000000000006, 0.04000000000000001, 0.05000000000000001], "range": [-0.0016475031730374956, 0.057133448333180875], "domain": [0.03762029746281716, 0.9415463692038496], "mirror": false, "tickangle": 0, "showline": true, "ticktext": ["0.00", "0.01", "0.02", "0.03", "0.04", "0.05"], "zeroline": false, "tickfont": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 11}, "zerolinecolor": "rgba(0, 0, 0, 1)", "anchor": "x", "visible": true, "ticks": "inside", "tickmode": "array", "linecolor": "rgba(0, 0, 0, 1)", "showgrid": true, "title": {"text": "", "font": {"color": "rgba(0, 0, 0, 1)", "family": "sans-serif", "size": 15}}, "gridcolor": "rgba(0, 0, 0, 0.1)", "tickcolor": "rgb(0, 0, 0)", "type": "linear"}, "width": 858.09375}}