مقدمه
در فصلهای گذشته چندین مدل شبیه سازی از سیستم های صفی مورد بررسی قرار گرفت. اگر دقت کرده باشید متوجه میشوید که یک مدل شبیه سازی شامل دستورالعملها یا اعمالی از قبیل اضافه کردن، جستجو کردن، خارج ساختن عضوی از یک لیست،تولید اعداد تصادفی با توزینهای مختلف، جمعآوری مشاهدات و محاسبه آماری آنها میباشد. بعضی از اعمال انجام شده در یک مدل شبیهسازی به سادگی به وسیلهی یک یا چند دستورالعمل از یک زبان معمولی کامپیوتری قابل پیادهسازی میباشند ولی بعضی دیگر نیاز به اطلاعات بیشتر از چگونگی ساختمان دادهها در آن زبان یا مهارت بیشتر در برنامهنویسی دارند. بنابراین یک محدودیت عملی محسوب میشوند.
وجود این محدودیت و همچنین مشترک بودن اعمال موجود در مدلهای شبیه سازی موجب شد که زبانهای مخصوص شبیهسازی نسبت به زبان های عمومی کامپیوتری مثل FORTRAN، تصمیمگیری در مورد انتخاب یک زبان عمومی یا اختصاصی به عوامل گوناگون از قبیل، آگاهی مدل ساز، پیچیدگی مدل، قابلیت دسترسی و ..... بستگی دارد.
در توضیح این چنین میتوان گفت که ممکن است مدل ساز تا به حال از یک زبان مخصوص شبیهسازی استفاده نکرده باشد و در مقابل از یک زبان عمومی آگاهی کافی داشته باشد. مسلم است که مدل ساز ترجیح میدهد که زحمت برنامهنویسی پیچیدهتر را با زبان عمومی به خود بدهد و وقتی را برای یادگیری زبان مخصوص شبیهسازی صرف نکند. از طرفی وجود یا عدم وجود یک زبان شبیهسازی در سیستم کامپیوتری مورد استفاده نیز یک عامل تعیین کننده میباشد.
همان طور که ذکر شد عامل مهم دیگر در تصمیم گیری، پیچیدگی سیستم یا مدل آن است در مورد سیستمهای ساده گاه استفاده از زبانهای عمومی، سادهتر و سریعتر نیز خواهد بود ولی هر چه مدل پیچیدهتر و گستردهتر میشود مشکلات برنامهنویسی آن با زبانهای عمومی بیشتر و امتیاز زبانهای اختصاصی آشکارتر میگردد.
در این فصل به معرفی اختصاری یکی از زبانهای مخصوص شبیهسازی به نام Gpss میپردازیم.
2-3 زبان Gpss
زبان شبیه سازی Gpss برای اولین بار توسط شرکت IBM و در دههی 70 ارائه شد. این زبان برای شبیه سازی سیستمهای گسسته به خصوص سیستمهایی که دارای صف باشند طراحی شده است دارای ورژنهای متعددی است از جمله
Gpss/v , Gpss /H , Gpss/v, Gpss /36, Gpss قدری قویتر و توسعه یافتهتر میباشد. از این به بعد هر جا صحبت از Gpss میشود منظور Gpss v است.
Gpss برای انجام شبیه سازی از تکنیک پردازش فرایندها استفاده میکند و یک مدل شبیهسازی را به یک یا چند فرایند تقسیم کرده به طوری که هر فرایند تشکیل از یک یا چند دستور یا بلاک بوده که میتوانند همزمان با یکدیگر اجرا شوند. هر یک از دستور العملهای Gpss یک فعالیت از سیستم را شبیه سازی میکنند و شامل یک مجموعه پارامترهای ورودی میباشند.
در بخشهای بعدی هر یک به طور مفصل تشریح می شوند.
توجه داشته باشید که در مدلهای Gpss با دو دسته اشیا سر و کار داریم. این دو دسته را میتوان اشیا فاعل و مفعول نامید و به عبارت دیگر یک دسته سرویس دهنده ها و دستهی دیگر سرویس گیرندهها (مشتریها) میباشند. به عنوان مثال در یک سیستم بانکی، باجهها، کارمندان جزو دستهی سرویس دهندهها و مشتریها جز دسته سرویس گیرندهها میباشند. در یک سیستم حمل و نقل مکانهای حمل و تحویل جز دستهی اول و وسایل حمل و نقل (کامیون، اتوبوس و ....) از دستهی دوم می باشند.
در Gpss اشیا دسته اول را facility(وسیله ) و Storage unit (انباره) و اشیا دستهی دوم را Transaction مینامند و به عبارت دیگری اشیا دسته اول را وسایل و انبارهها و اشیا دسته دوم را اشیا موقت نامگذاری میکنیم.
تفاوت وسایل و انبارهها در این است که یک وسیله در یک زمان توسط تنها یک شی موقت اشغال میگردد در حالی که یک انباره به وسیله چند شی موقت (تا حد گنجایش آن) و به طور همزمان اشغال می گردد.
توجه داشته باشید که هر یک از وسایل، انبارهها، اشیا موقت و دیگر اشیا یا ساختارهای یک مدل شبیهسازی دارای مشخصههای تعریف شدهای میباشند. این مشخصهها را مشخصات عددی استاندارد نامگذاری نمودهاند. به عنوان مثال مقدار فعلی ساعت شبیهسازی، تعداد اشیا موقتی که در حال حاضر در یک بلاک قرار دارند ، طول فعلی صف از جمله مشخصات عددی استاندارد میباشند در شرح هر یک از دستورالعملها یا بلاکهای Gpss مشخصات عددی استاندارد مربوط به آن توضیح داده خواهد شد. این مشخصات را همچنین میتوانید در جدول 1-3 در پایان فصل مشاهده نمایید.
قالب کلی دستورات Gpss به صورت زیر میباشد.
Comment و پارامترها نام دستور شماره خط
روند اجرای دستورات نیز از دستورات بالاتر به دستورات پایینتر است.
1-2-3 اشیا موقت
دستور Terminate , Eenerate
ورود و خروج اشیا موقت در مدل یک سیستم به وسیله دستور العملهای Generate A,B,C,D Terminate Aصورت می گیرد. به عبارت دیگر دستور Generate برای ایجاد اشیا موقتی مورد استفاده قرار میگیرد و دستور Terminate آنها را در موقتی که حضورشان دیگر در سیستم مورد نیاز نمیباشد از مدل حذف یا از بین می برد. در واقع هر شیای که به دستور Terminate برسد از سیکل شبیهسازی خارج میشود و حافظهای که با دستور Generate به آن اختصاص داده شده بود آزاد می گردد. شرح پارامترهای دستور Generate عبارت است از
A: متوسط زبان بین تولید اشیا را نشان میدهد. اگر A ذکر نشود مقدار آن برابر صفر گرفته میشود.
B: پارامتر اصلاحی زمان بین ورود، اگر B مقداری ثابت یا یک متغیر باشد، آن گاه زمان بین تولید هر دو شی موقت تصادفی و دارای توزیع یکنواخت در فاصله [A-B,A+B] است. مسلم است که اگر B ذکر نشود یا مقدارش صفر باشد، زمان بین تولید مقدار ثابت A خواهد بود و اگر به جای B نام یک تابع بیاید آنگاه زمان بین تولید اشیا برابر است با حاصلضرب A در مقدار تابع.
C: فاصلهی زمانی تولید اولین شی شبیهسازی از ابتدای شبیهسازی . اگر C ذکر نگردد اولین شی در زمان صفر تولید میشود.
D: تعداد کل اشیا موقتی که در طول شبیهسازی تولید میگردند در صورت ذکر نکردن آن این تعداد نامحدود است. توجه داشته باشید که اگر ذکر پارامتری لازم نباشد جای آن خالی نمیماند و ویرگولها پشت سر هم و بدون فاصله درج میشوند.
مثال 1 دستور Generate 5,1,10,50 پنجاه شی موقتی با فاصلهی زمانی یکنواخت در فاصله (4,6) تولید میکند و اولین شی نیز در زمان 10 تولید میشود.
مثال 2 دستور 100، 5 Generate یکصد شی موقتی را هر 5 ثانیه یک بار تولید می کند.
توجه در مثال 1 زمان اتمام شبیهسازی 510 واحد زمان طول میکشد. و در مثال 2 زمان اتمام شبیهسازی 500 واحد زمان طول میکشد