Sut i Efelychu Nes Nifer o Gwsmeriaid PenodolΒΆ
Gall terfynu rhediad efelychiad pan mae nifer penodol o gwsmeriaid wedi pasio trwyddo.
Gall wneud hwn gyda'r dull simulate_until_max_customers
.
Mae'r dull yn cymryd y ddadl max_customers
.
Mae yna tair ffordd o gyfri cwsmeriaid:
'Finish'
: Efelychu nes bodmax_customers
wedi cyrraedd yr Exit Node.
'Arrive'
: Efelychu nes bodmax_customers
wedi'i chreu yn yr Arrival Node.
'Accept'
: Efelychu nes bodmax_customers
wedi'i chreu ac wedi'i derbyn (heb ei wrthod) yn yr Arrival Node.
Pennir y dull cyfri cwsmeriaid gyda'r ddadl opsiynol method
.
Y gwerth diofyn yw 'Finish'
.
Ystyriwch system ciwio M/M/1/3:
>>> import ciw
>>> N = ciw.create_network(
... arrival_distributions=[ciw.dists.Exponential(10)],
... service_distributions=[ciw.dists.Exponential(5)],
... number_of_servers=[1],
... queue_capacities=[3]
... )
I efelychu nes bod 30 cwsmer wedi gorffen gwasanaeth:
>>> ciw.seed(1)
>>> Q = ciw.Simulation(N)
>>> Q.simulate_until_max_customers(30, method='Finish')
>>> len(Q.nodes[-1].all_individuals)
30
I efelychu nes bod 30 cwsmer wedi cyrraedd:
>>> ciw.seed(1)
>>> Q = ciw.Simulation(N)
>>> Q.simulate_until_max_customers(30, method='Arrive')
>>> len(Q.nodes[-1].all_individuals), len(Q.nodes[1].all_individuals), len(Q.rejection_dict[1][0])
(13, 3, 14)
I efelychu nes bod 30 cwsmer wedi'i derbyn:
>>> ciw.seed(1)
>>> Q = ciw.Simulation(N)
>>> Q.simulate_until_max_customers(30, method='Accept')
>>> len(Q.nodes[-1].all_individuals), len(Q.nodes[1].all_individuals)
(27, 3)