8- محاكاة سوق مركزي
عرض المشكلة:
يصل الزبائن بسياراتهم للتسوق في سوق مركزي.
موق السوق يتسع لـ 650 سيارة. إذا لم يتمكن الزبون من
إيجاد موقف لسيارتة يغادر بدون أن يتسوق. المسافة التي يسيرها الزبون من الموقف
الى داخل السوق تستغرق في المتوسط 60 ثانية. الزبائن
يقوموا بشراء مابين 5 إلى 100 قطع موزعة توزيعا
متساويا. الزبائن الذين يشتروا 10 قطع أو أقل يستخدموا
لذلك سلال والتي يوجد منها 70 سلة بالسوق. الزبائن
الذين يشتروا أكثر من 10 قطع يستخدموا لذلك
عربات والتي يوجد منها 650 عربة بالسوق. زمن
التسوق لكل زبون يعتمد على عدد القطع المشتراه وهو 10 ثوان لكل قطعة. بعد
إختيارهم للمشتريات يلتحق المتسوقون بأقصر طابور محاسبة والتي يبلغ عددها 17
محاسب. الزبائن الذين أشتروا أقل من 10 قطع بإستطاعتهم
الوقوف بطابور خاص سريع للمحاسبة. زمن المحاسبة يستغرق 2 ثانية لكل قطعة
مشتراه، بالإضافة إلى زمن الدفع الذي يستغرق إما 25 أو 30
أو 35 ثانية. هذا الزمن الإضافي يعتمد على طريقة الدفع إما
نقدا أو بشيك ( سند مصرفي) او بطاقة إعتماد والتي لها نفس الإحتمال في الإستخدام.
بعد نهاية الحساب يتجه الزبون إلى سيارته في حوالي 60 ثانية ويحمل مشترياته
ويغادر الموقف. معدل وصول الزبائن إلى السوق المركزي موزع أسيا مبتدا بـ 600
زبون في الساعة لمدة نصف ساعة و 900 زبون في الساعة لمدة
ساعة و 450 زبون في الساعة لمدة ساعة و 300
زبون في الساعة لبقية يوم التسوق.
1-
أجر محاكاة
لمدة 3 ساعات.
2-
عين الزمن transit time الإنتقالي للزبائن.
3-
عين فعالية
موقف السيارات و عربات التسوق وللسلال والمحاسبين.
4-
جدول عدد
الزبائن في السوق المركزي بالدقيقة.
عرض البرنامج:
; GPSS World Sample File -
SUPERMRK.GPS, by Gerard F. Cummings
**********************************************************************
*
*
*
Supermarket Simulation Model
*
*
Time Unit = 1/10 Of a Second
*
**********************************************************************
RMULT 1187
First EQU 2
Last EQU 18
Qty VARIABLE (RN1@96+5)
Finance VARIABLE (RN1@3+1)#50+200
Transit TABLE M1,10000,10000,7 ;Time in system
Items TABLE
P$Quantity,10,10,10
;No. of items bought
Shoppers
TABLE
X$Customers,100,50,12 ;No. of shoppers
Baskt STORAGE 70
Cart STORAGE 650
Park STORAGE 650
Checkout
VARIABLE
(P$Quantity)#20+P$Payment
Tshop VARIABLE P$Quantity#100
INITIAL
X$Customers,0
**********************************************************************
Beg TRANSFER Both,,Lost ;Tries
to park or leaves
ENTER
Park
;Park in parking lot
ADVANCE
600
;Time to walk from car
SAVEVALUE
Customers+,1 ;One more customer
ASSIGN Quantity,V$Qty ;Param
quantity = No.
;
items bought
ASSIGN Payment,V$Finance ;Param payment = Method
; payment
TEST LE
P$Quantity,10,Qcart ;Items
>10 Get cart
GATE SNF Baskt,Qcart ;Check
basket available
QUEUE Basket
;Queue for a basket
ENTER Baskt
;Get a basket
DEPART Basket
;Leave queue
ASSIGN Carrier,Baskt
;Param carrier
; assigned baskt
TRANSFER
,Shop
;Proceed to shop
**********************************************************************
Qcart QUEUE Carts
;Queue for a cart
ENTER Cart
;Get a cart
DEPART Carts
;Depart carts queue
ASSIGN Carrier,Cart
;Param carrier assigned cart
Shop ADVANCE V$Tshop
;Shopping time elapses
TEST LE
P$Quantity,10,Norm
;Items < 10 go to express
COUNT L
Where,First,Last,1,Q ;Any empty checkouts?
TEST E P$Where,0,Norm ;Some
empty checkouts?
QUEUE Xpress
;Queue at express
SEIZE Xpres
;Get express checkout
DEPART Xpress
;Depart express queue
ADVANCE
V$Checkout
;Checkout time
RELEASE Xpres
;Free express checkout
LEAVE P$Carrier
;Leave the basket
TRANSFER
,Fin
**********************************************************************
Norm SELECT MIN Minque,First,Last,,Q ;Find
minimum queue
QUEUE P$Minque
;Join the min queue
SEIZE P$Minque
;Get the checkout
DEPART P$Minque
;Depart the queue
ADVANCE
V$Checkout ;Checkout time
RELEASE
P$Minque
;Free the checkout
LEAVE P$Carrier
;Leave the cart
Fin TABULATE Transit
;Record transit time
TABULATE
Items
;Record items bought
SAVEVALUE
Customers-,1 ;One customer
leaves
ADVANCE
600
;Walk to the car
LEAVE Park
;Leave the car park
TERMINATE
Lost TERMINATE
;One customer
lost
**********************************************************************
* Arrivals for 0 - 30 min.
GENERATE
(Exponential(1,0,60)),,,300 ;A Customer
; arrives
TRANSFER
,Beg
* Arrivals for 30 - 90 min.
GENERATE
(Exponential(1,0,40)),,18000,900 ;Arrival rate
; after .5 hours
TRANSFER
,Beg
* Arrivals for 90 - 150 min.
GENERATE
(Exponential(1,0,80)),,54000,450 ;Arrival rate
; after 1.5 hrs
TRANSFER
,Beg
* Arrivals for 150 min +
GENERATE
(Exponential(1,0,120)),,90000 ;Arrival after
; 2.5 hours
TRANSFER
,Beg
**********************************************************************
GENERATE
600
;Xact each minute
TABULATE
Shoppers
;Record number of customers
TERMINATE
1
*********************************************************************
النموذج منظم في عدة
أجزاء. بعد تعريف كائنات المتغير Variable Entities و Storage Entities و إستهلال قيم الحفظ Savevalues توجد ثلاثة
أجزاء للنموذج.
المتعاملين في الجزء
الأعلى في النموذج يمثلوا الزبائن القادمين لموقف السيارات، إذا وجد متعامل كائن
المخزن المسمى Park ممتلئ فإنه يغادر المحاكاة، وهذا يمثل زبون غادر بدون دخول السوق.
الزبائن الذين يتمكنوا من الدخول يتحصلوا علي عربة أو سلة ويستمروا في التسوق، إذا
كان مع الزبون أكثر من 10 قطع يلتحق بأقصر طابور محاسبة. قالب TEST في
الجزء الثالث من النموذج يقوم بهذا الإختبار ويرسل مثل هذا المتعامل إلى القالب
المرمز Normal ، الطابور الأقصر يتحدد بقالب SELECT في
الجزء الرابع من النموذج والذي يضع رقم كائن الطابور المناسب في معلم المتعامل
المسمى Minque . للمتعاملين الذين لديهم 10 قطع أو أقل فإن قالب COUNT في الجزء
الثالث من النموذج يفحص كائنات الطابور المرقمه من 4 وحتى 20 لنقطة محاسبة خالية، فإذا لم توجد واحدة يلتحق المتعامل بطابور
المحاسبة السريع. الجزء ما قبل الأخير من النموذج يحتوى على عدة قوالب GENERATE والتي تفتح وتقفل turn on and off عند الوقت
المناسب لتغير من معدل الوصول، كان من الممكن إستخدام قالب GENERATE
واحد بمتغير دالي يعتمد علي ساعة المحاكاة. المتعاملين في الجزء الأخير توقت
المحاكاة وتجدول أعداد الزبائن عند نهاية كل دقيقة و تنقص عداد الإنهاء.
إجراء المحاكاة:
نختار File / Open ثم SUPERMRKثم Open،
نخلق المحاكاة بإختيار Command /
Create Simulation ثم نختار Command /
START وأكتب 180 ثم OK
تنتهي المحاكاة بعد دخول 180
متعامل قالب TERMINATE 1
وهذا يمثل مرور 3 ساعات علي عمل السوق. كالعادة
يكتب التقرير العياري إلى الملف Supermrk.1.1
وكذلك يستعرض ذاتيا في نافذة التقارير.
مناقشة النتائج:
من الجدول الإنتقالي Table Transit أن متوسط زمن التسوق
كان 23640 ثانية أو 394 دقيقة. من التقرير
الجزئي لكائن المخزن نرى أن أقصى تعداد لم يصل قط السعة المتوفرة. لهذا فإنه يوجد
دائما اماكن متوفرة في موقف السيارات و أعداد كافية من السلال والعربات، ولكن
نلاحظ وجود عدد كبير 397 من الزبائن منتظرين في طوابير
المحاسبة، فهم بهذا يمضوا في المتوسط وقت اطول في الإنتظار عنه في التسوق. الجدول Table Shoppers يعطي مدرج تكراري
للزبائن في السوق معاين sampled
عند نهاية كل دقيقة، يوجد في المتوسط 398.7 متسوق، تقريبا أكثرهم
ينتظروا في طوابير المحاسبة.
داخل المحاكاة:
لنستعرض الآن حالة نهاية المحاكاة عند توليد
التقرير. لنستخدم الأمر SHOW
للنظر إلى بعض الصفات العددية للنظام والتي تمثل بأجزاء من الألف. أولا نشاهد
متوسط الفعالية للسلال، إختار Command / SHOW ثم أكتب في صندوق الحوار SR$Basktبعد ذلك فعالية العربات، إختار Command / SHOW وفي صندوق الحوار أكتب SR$Cart ثم فعالية مواقف
السيارات، إختار Command /
SHOW وفي صندوق
الحوار أكتب SR$Park،
أسهل طريقة لمشاهدت هذه الفعاليات يكون عن طريق فتح نافذة المخازن Storages Window ، لنختار Window / Simulation Window / Storages . هذا يبين كائنات المخازن الممثلة للعربات
والسلال و مواقف السيارات، من قيم الإستخدام الأقصى نرى أن ليس هناك اي من هذه
الإمكانيات استخدم كليا خلال المحاكاة. يمكننا أن نشاهد الآن المدرج التكراري
لأوقات التسوق، نختار Window / Simulation Window / Table Window
إضغط على Transit
ثم إختار OK، يمكنك أن تشاهد
المدرجات التكرارية للقطع المشتراه وللزبائن في السوق، هذه الجداول مسماه Items و Shoppers . لنلقي نظرة على
أماكن تواجد المتعاملين، نختار
Window
/ Simulation Window / Blocks Window
لاحظ وجود العديد من المتعاملين في قالب QUEUE (قالب رقم 30)
التالي لقالب SELECT
ينتظروا دخول قالب SEIZE
هؤلاء المتعاملون يمثلوا الزبائن الذين يحاولوا دفع الحساب.
لننظر الآن إلى طوابير المحاسبين، نختار Window / Simulation Window / Facilities
Window
إستخدم عامود الإنزلاق في جانب النافذة
لتتحرك إلى التسهيلة الممثلة لطابور المحاسبة السريع ( أو كبر النافذة لأقصاها)

نافذة التسهيلات الممثلة لطابور المحاسبة
السريع
لاحظ ان جميع محطات المحاسبة محملة لأقصاها ولها طوابير
طويلة ماعدى طابور الخدمة السريع، واضح ان على إدارة السوق تجنب هذا الزحام وإلا
سيفقدوا الكثير من الزبائن. أقفل نوافذ الرسومات المفتوحه ودعنا نجرب إضافة 10
محطات محاسبة وننظر إذا كان هذا سيحل بعض هذه المشاكل، غير قيمة السطر المرمز بـ Last إلى28
هذا سيزيد عدد محطات المحاسبة من 17 إلى 27
بإختيار Command / Custom
وفي صندوق الحوار أكتب Last EQU 28 ثم إضغط OK إختار Command / Clear ثم OKإبدأ المحاكاة بإختيار Command / START وأكتب 180 ثم OK. بعد نهاية المحاكاة أنظر إلى ألإحصائيات المهمة التي ناقشناها سابقا ودون ملاحظاتك. أوجد العدد الأمثل لمحطات المحاسبة التي تفي لخدمة الزبائن ولا ترهق إدارة السوق بإستخدام عدد محاسبين أكثر من الضروري (زيادة رواتب). هذا يستعرض مشكلة إدارة السوق في ضبط التوازن بين التكلفة والدخل وإرضاء الزبائن.