Tiwtorial II: Archwilio'r Gwrthrych Simulation¶
Yn y tiwtorial diwethaf, diffinion ac efelychon ni ein banc am ddiwrnod:
>>> import ciw
>>> N = ciw.create_network(
... arrival_distributions=[ciw.dists.Exponential(0.2)],
... service_distributions=[ciw.dists.Exponential(0.1)],
... number_of_servers=[3]
... )
>>> ciw.seed(1)
>>> Q = ciw.Simulation(N)
>>> Q.simulate_until_max_time(1440)
Gadewch i ni archwilio'r gwrthrych Simulation Q
.
Er bod ein system ond yn cynnwys un nod (y banc), mae'r gwrthrych Q
wedi'i chreu o dri.
Gallwn mynedu'r nodau gan ddefnyddio:
>>> Q.nodes
[Arrival Node, Node 1, Exit Node]
Y Nod Dyfodi: (
Arrival Node
) Dyma le mae cwsmeriaid yn cael eu creu. Caiff ei silio yma, ac fe allant nhw balcio, cael eu gwrthod neu gael eu hanfon i nod wasanaeth. Gallwn ei mynedu gan ddefnyddio:>>> Q.nodes[0] Arrival Node
Nodau Wasanaeth: Dyma le mae cwsmeriaid yn ciwio ac yn derbyn gwasanaeth. Gallwn feddwl am hwn fel y banc ei hun. Gallwn ei mynedu gan ddefnyddio:
>>> Q.nodes[1] Node 1
Yr Allanfa: (
Exit Node
) Pan mae cwsmeriaid yn gadael y system, caiff eu casglu fan hyn. Yna, pan hoffwn ddarganfod beth ddigwyddodd yn ystod rhediad yr efelychiad, gallwn ffeindio'r cwsmeriaid yma. Gallwn ei mynedu gan ddefnyddio:>>> Q.nodes[-1] Exit Node
Unwaith bod yr efelychiad wedi rhedeg, mae'r gwrthrych Simulation yn aros yn yr union gyflwr a wnaeth e gyrraedd ar ddiwedd rhediad yr efelychiad.
Felly, mae’r gwrthrych Simulation ei hun yn gallu rhoi gwybodaeth ynglŷn â beth wnaeth digwydd yn ystod y rhediad.
Mae'r Exit Node
yn cynnwys holl gwsmeriaid gwnaeth gorffen gwasanaeth yn y banc, yn y drefn a wnaethon nhw adael y system:
>>> Q.nodes[-1].all_individuals
[Individual 2, Individual 3, Individual 5, ..., Individual 300]
Mae'r nod gwasanaeth hefyd yn cynnwys cwsmeriaid, rheina sydd dal yn aros neu yn derbyn gwasanaeth ar yr union amser gwnaeth rhediad yr efelychiad gorffen. Yn y rhediad yma, roedd yna tri cwsmer ar ôl yn y banc ar ddiwedd y dydd:
>>> Q.nodes[1].all_individuals
[Individual 304, Individual 306, Individual 307]
Gadewch i ni edrych ar yr unigolyn cyntaf i orffen gwasanaeth, Individual 2
.
Mae unigolion yn cario cofnodion data, sy'n cynnwys gwybodaeth fel dyddiad dyfodi, amser aros, a'r dyddiad gadael:
>>> ind = Q.nodes[-1].all_individuals[0]
>>> ind
Individual 2
>>> len(ind.data_records)
1
>>> ind.data_records[0].arrival_date
7.936299...
>>> ind.data_records[0].waiting_time
0.0
>>> ind.data_records[0].service_start_date
7.936299...
>>> ind.data_records[0].service_time
2.944637...
>>> ind.data_records[0].service_end_date
10.88093...
>>> ind.data_records[0].exit_date
10.88093...
Nid yw hwn yn ffordd effeithlon o weld canlyniadau. Yn y tiwtorial nesaf byddwn yn edrych i mewn i eneradu rhestrau o gofnodion i allu cael ystadegau cryno.