Sut i Efelychu Cwsmeriaid Sy'n Balcio¶
Mae Ciw yn gadael i gwsmeriaid balcio (dewis peidio ymuno a chiw) pan maent yn dyfodi, yn ôl ffwythiannau balcio.
Mae'r ffwythiannau yma yn cymryd paramedr n
, nifer o unigolion wrth y nod, ac yn rhoi tebygolrwydd o'r cwsmer balcio.
Er enghraifft, mae ganddynt hwy system M/M/1 lle mae cwsmeriaid:
Byth yn balcio os oes llai na 3 cwsmer yn y system
Yn cael tebygolrwydd 0.5 o balcio os oes rhwng 3 a 6 cwsmer yn y system
Trwy'r amser yn balcio os oes mwy na 6 cwsmer yn y system
Fe allwn ddiffinio'r ffwythiant balcio canlynol:
>>> def probability_of_baulking(n):
... if n < 3:
... return 0.0
... if n < 7:
... return 0.5
... return 1.0
Wrth greu'r gwrthrych Network, rydym yn dweud wrth Ciw pa nod a dosbarth cwsmer mae'r ffwythiant yma yn berthnasol ar gyfer, gyda'r allweddair Baulking_functions
:
>>> import ciw
>>> N = ciw.create_network(
... arrival_distributions={'Class 0': [ciw.dists.Exponential(5)]},
... service_distributions={'Class 0': [ciw.dists.Exponential(10)]},
... baulking_functions={'Class 0': [probability_of_baulking]},
... number_of_servers=[1]
... )
Pan mae'r system wedi gorffen efelychu, cofnodwyd y cwsmeriaid a wnaeth balcio yn baulked_dict
y gwrthrych Simulation.
Geiriadur yw hwn sy'n mapio rhifau nod i eiriaduron.
Mae'r geiriaduron yma yn mapio rhifau dosbarthau cwsmer i restr o ddyddiadau lle wnaeth cwsmer balcio:
>>> ciw.seed(1)
>>> Q = ciw.Simulation(N)
>>> Q.simulate_until_max_time(45.0)
>>> Q.baulked_dict
{1: {0: [9.4589..., 12.8633..., 16.3374..., 18.7384..., 37.8363..., 38.2962...]}}
Nodwch fod balcio yn gweithio ac yn ymddwyn yn wahanol i setio cynhwysedd ciwio.
Mae llenwi cynhwysedd ciwio nod yn arwain at dyfodiadau newydd yn cael eu wrthod* (a chofnodwyd y rhain yn y rejection_dict
), a chwsmeriaid sy'n trosglwyddo o nod arall yn cael eu blocio.
Ar y llaw arall nid yw balcio yn effeithio cwsmeriaid sy'n trosglwyddo o nod arall, a chofnodwyd cwsmeriaid a wnaeth balcio yn y baulked_dict
.
Mae hwn yn golygu os osodwyd trothwy balcio penderfynedig o 5, ond ni osodwyd cynhwysedd ciwio, yna gall nifer o unigolion wrth y nod yna bod yn fwy na 5, oherwydd bod cwsmeriaid sy'n trosglwyddo o nodau arall yn anwybyddu'r trothwy balcio.