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 bod max_customers wedi cyrraedd yr Exit Node.

  • 'Arrive': Efelychu nes bod max_customers wedi'i chreu yn yr Arrival Node.

  • 'Accept': Efelychu nes bod max_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)