.. _priority-custs: ========================= Sut i Osod Blaenoriaethau ========================= Gall Ciw aseinio blaenoriaethau i ddosbarthau cwsmer. I wneud hwn rydym yn mapio dosbarthau cwsmer i ddosbarthau blaenoriaeth, gan ychwanegu hwn fel allweddair wrth greu gwrthrych Network. Dangosir enghraifft:: priority_classes={'Class 0': 0, 'Class 1': 1, 'Class 2': 1} Mae hwn yn dangos mapiad o dri dosbarth cwsmer i ddau ddosbarth blaenoriaeth. Mae gan gwsmeriaid dosbarth 0 y flaenoriaeth fwyaf, a'i rhoddir yn nosbarth blaenoriaeth 0. Rhoddir cwsmeriaid dosbarth 1 a 2 yn ddosbarth blaenoriaeth 1; mae ganddynt yr un flaenoriaeth a'i gilydd, ond llai o flaenoriaeth na chwsmeriaid dosbarth 0. Nodwch: * Po leiaf yw rhif y dosbarth blaenoriaeth, po fwyaf yw'r flaenoriaeth. Mae gan gwsmeriaid yn nosbarth blaenoriaeth 0 mwy o flaenoriaeth na chwsmeriaid yn nosbarth blaenoriaeth 1, sydd a fwy o flaenoriaeth na chwsmeriaid yn nosbarth blaenoriaeth 2, ayyb. * Indecsau Python yw dosbarthau blaenoriaeth, felly os oes 5 dosbarth blaenoriaeth **rhaid** eu labelu 0, 1, 2, 3, 4. Fe fydd hepgor rhif, neu enwi dosbarthau blaenoriaeth unrhyw beth arall heblaw cyfanrifau cynyddol o 0, yn achosi gwall. * Mae disgyblaeth blaenoriaeth yn anrhagdarfiedig. Mae cwsmeriaid pob amser yn gorffen eu gwasanaeth ac nid yw'n cael eu darfu gan gwsmeriaid gyda blaenoriaeth uwch. I weithredu hwn, crëwch wrthrych Network gan ychwanegu'r allweddair :code:`Priority_classes` gyda'r mapiad:: >>> import ciw >>> N = ciw.create_network( ... arrival_distributions={'Class 0': [ciw.dists.Exponential(5)], ... 'Class 1': [ciw.dists.Exponential(5)]}, ... service_distributions={'Class 0': [ciw.dists.Exponential(10)], ... 'Class 1': [ciw.dists.Exponential(10)]}, ... priority_classes={'Class 0': 0, 'Class 1': 1}, ... number_of_servers=[1] ... ) Rhedwn yr efelychiad, yn cymharu'r amseroedd aros cwsmeriaid dosbarth 0 a dosbarth 1. Dylai cwsmeriaid gyda mwy o flaenoriaeth cael amser aros cymedrig llai na'r cwsmeriaid gyda llai o flaenoriaeth:: >>> ciw.seed(1) >>> Q = ciw.Simulation(N) >>> Q.simulate_until_max_time(100.0) >>> recs = Q.get_all_records() >>> waits_0 = [r.waiting_time for r in recs if r.customer_class==0] >>> sum(waits_0)/len(waits_0) 0.1866109... >>> waits_1 = [r.waiting_time for r in recs if r.customer_class==1] >>> sum(waits_1)/len(waits_1) 7.6103100...