Sut i Dracio Clyflwr y System

Cyflwr y system yw gyfluniad yr unigolion o amgylch y system. Gall cael ei mesur mewn nifer o ffyrdd wahanol - er enghraiff, gall cyflwr system bod nifer o gwsmeriaid sy'n aros ym mhob nod.

Mae gan Ciw yr opsiwn i gychwyn draciwr cyflwr (tracker) er mwyn tracio cyflwr y system wrth i'r efelychiad mynd yn ei flaen. Mae gan y dracwyr hyn nifer o ddefnyddiau: gallwch cael holl hanes cyflwr y system, o hyn gallwch cael tebygolrwyddau cyflwr, ac mae ganddo defnydd wrth archwilio i mewn i lwyrglo.

Y draciwr diofyn yw'r StateTrack nad yw'n gwneud dim. Mae nifer o dracwyr cyflwr eraill y gallwch eu defnyddio, sy'n recordio cyflwr y system mewn nifer o ffyrdd. Mae'r gwrthrychau hyn yn etifeddu o'r dosbarth sylfaenol StateTracker, ac felly gall tracwyr cyflwyr newydd cael eu ysgrifennu yn yr un modd. Ar gyfer rhestr ac esboniad o'r holl dracwyr cyflwr sydd gan Ciw ar hyn o bryd, gweler Rhestr Tracwyr Cyflwr.

Enghraifft: ystyriwch ciw M/M/1. Mae'r traciwr SystemPopulation yn diffinio cyflwr fel y nifer o unigolion sydd yn y system:

>>> import ciw
>>> N = ciw.create_network(
...    arrival_distributions=[ciw.dists.Exponential(0.1)],
...    service_distributions=[ciw.dists.Exponential(0.2)],
...    number_of_servers=[1]
... )

>>> ciw.seed(1)
>>> Q = ciw.Simulation(N,
...     tracker=ciw.trackers.SystemPopulation()
... )
>>> Q.simulate_until_max_time(250)

Nawr gallwn weld hanes y system:

>>> Q.statetracker.history 
[[0.0, 0],
 [1.44291..., 1],
 [10.84369..., 0],
 [15.87259..., 1],
 [17.34491..., 0],
 [22.71318..., 1],
 [25.69774..., 0],
 ...
]

Mae hyn yn dangos roedd y system mewn cyflwr 0 o amser 0.0 i 1.44291, roedd mewn cyflwr 1 o amser 1.44291 i 10.84369, aeth nôl i gyflwr 0 o 10.84369 i amser 15.87259, ac yn y blaen.

O hwn gallwn cael cyfrannau'r amser yr oedd y system ym mhob cyflwr:

>>> Q.statetracker.state_probabilities() 
{0: 0.55425..., 1: 0.24676..., 2: 0.13140..., 3: 0.06757...}

Felly roedd y system mewn cyflwr 0 (dim unigolion yn y system) 55.4% o'r amser, mewn cyflwr 1 (un unigolyn yn y system) 24.7% o'r amser, cyflwr 2 (dau unigolyn yn y system) 13.1% o'r amser, a chyflwr 3 (tri unigolyn yn y system) 6.8% o'r amser.

Os oes angen amser-twymo ac amser-oeri wrth gyfrifo'r tebygolrwyddau cyflwr, gallwn mewnbynnu cyfnod arsylwi. Er enghraifft, os hoffwn canfod cyfrannau'r amser yr oedd y system ym mhob cyflwr, rhwng dyddiadau :code;`50` ac 200, yna gallwn defnyddio'r canlynol:

>>> Q.statetracker.state_probabilities(observation_period=(50, 200)) 

Nodwch bod tracwyr gwahanol yn cynrychioli gwahanol cyflyriau mewn gwahanol ffyrdd, gweler Rhestr Tracwyr Cyflwr ar gyfer rhestr o'r holl dracwyr.