Sut i Osod Dosbarthau Cwsmer Deinamig¶
Mae Ciw yn gadael i gwsmeriaid newid eu dosbarth cwsmer yn tebygoliaethol ar ôl gorffen gwasanaeth.
Hynny yw ar ôl gwasanaeth yn od k mae cwsmer dosbarth i yn newid i fod yn ddosbarth j gyda thebygolrwydd \(P(J=j \; | \; I=i, K=k)\).
Mewnbynnir y tebygolrwyddau yma trwy'r allweddair class_change_matrices
.
Ystyriwch system un nod gyda thri dosbarth cwsmer.
Ar ôl wasanaeth (yn Nod 1) mae cwsmeriaid pendant yn newid dosbarth cwsmer, yr un mor debygol rhwng y ddau ddosbarth cwsmer arall.
Dangosir y class_change_matrices
ar gyfer y system yma:
Mewnbynnir hwn i mewn i'r model efelychu trwy ychwanegu'r allweddair Class_change_matrices
wrth greu gwrthrych Network:
>>> import ciw
>>> N = ciw.create_network(
... arrival_distributions={'Class 0': [ciw.dists.Exponential(5)],
... 'Class 1': [ciw.dists.NoArrivals()],
... 'Class 2': [ciw.dists.NoArrivals()]},
... service_distributions={'Class 0': [ciw.dists.Exponential(10)],
... 'Class 1': [ciw.dists.Exponential(10)],
... 'Class 2': [ciw.dists.Exponential(10)]},
... routing={'Class 0': [[1.0]],
... 'Class 1': [[1.0]],
... 'Class 2': [[1.0]]},
... class_change_matrices={'Node 1': [[0.0, 0.5, 0.5],
... [0.5, 0.0, 0.5],
... [0.5, 0.5, 0.0]]},
... number_of_servers=[1]
... )
Nodwch yn y rhwydwaith yma ond dyfodiadau o ddosbarth cwsmeriaid 0 a ddigwyddir. Yn rhedeg y system yma, gwelwn fod nifer cofnodion gan gwsmeriaid o ddosbarth 1 a 2 yn fwy na sero, gan fod rhai cwsmeriaid dosbarth 0 wedi newid dosbarth cwsmer ar ôl gwasanaeth:
>>> from collections import Counter
>>> ciw.seed(1)
>>> Q = ciw.Simulation(N)
>>> Q.simulate_until_max_time(50.0)
>>> recs = Q.get_all_records()
>>> Counter([r.customer_class for r in recs])
Counter({0: 251, 2: 115, 1: 107})
Nodwch pan ddefnyddir mwy nag un nod, mae angen matrics newid dosbarth ar bob nod. Mae hwn yn golygu gall matrics gwahanol cael ei ddefnyddio ar gyfer pob nod.