ساعت شروع/پایان بهرهبرداری و هدوی هر بازه را برای خط اصلی و خط توسعه وارد کنید؛ الگوریتم بهصورت خودکار زمانبندی کامل اعزامها، تعداد ناوگان موردنیاز و چرخش قطارها را تولید میکند.
R1 = شروع + زمانسیر(A→B) + حداقلتوقف). برای پوشش کامل مسیر پیش از این لحظه، تعدادی قطار بهصورت شبانه در ایستگاه B مستقر میشوند («بازه پرکردن»)؛ زمان این اعزامها نه از ابتدای روز بهجلو، بلکه بهعقب از R1 و با گام هدوی هدف محاسبه میشود — یعنی آخرین اعزام «پرکردن» همیشه دقیقاً یک هدوی پیش از R1 قرار میگیرد و گذار به اعزام واقعی، بدون هیچ افت هدوی، کاملاً روی شبکهٔ زمانی مینشیند. تنها انعطاف مجاز، در همان نخستین اعزام روز است که ممکن است چند دقیقه دیرتر از ساعت شروع رسمی باشد (چون هنوز سرویس واقعی برای محافظت وجود ندارد). از R1 به بعد، اعزام از B با فرمول
حداکثر(رسیدن + حداقلتوقف , آخریناعزامB + هدویهدف)
محاسبه میشود؛ یعنی توقف پایانه بهصورت خودکار تا سقف تعیینشده افزایش مییابد تا زمانبندی با هدوی هدف هماهنگ بماند (دقیقاً همان مکانیزم «زمان بازیابی» که در برنامههای واقعی مشاهده میشود؛ حداقل هدوی در این فرمول هرگز نقض نمیشود). هر بار که هدوی در میانهٔ روز تنگتر میشود، قطارهای در راه هنوز با هدوی قدیمی فاصله دارند؛ برای جلوگیری از تأخیر واکنش B (که در غیر اینصورت تا رسیدن نخستین ورودی واقعیِ متعلق به هدوی جدید، در حدود زمانسیر(A→B) طول میکشد)، به همان شیوهٔ «بازه پرکردن» شبانه، قطار(های) لازم مستقیماً و از قبل در B مستقر میشوند — اما فقط برای همان بازهٔ گذار و فقط بهاندازهٔ کمبود واقعی (اگر قطار واقعی بهموقع برسد، همان استفاده میشود و قطار اضافه ساخته نمیشود). این ردیفهای ورود تازه — چه در ابتدای روز/بازهٔ گذار در B و چه در سمت A هنگام رشد ناوگان — با برچسب کهربایی مشخص میشوند و برچسب دقیقاً میگوید ورودی از کدام ایستگاه است: «ورودی A» برای قطاری که تازه در ایستگاه A وارد سرویس شده، یا «ورودی B» برای قطاری که مستقیماً در ایستگاه B مستقر شده (نام واقعی هر ایستگاه در برچسب جایگزین A/B میشود). قرینهٔ همین منطق برای شلشدن هدوی هم برقرار است، اما بدون هیچ شمارش سفر یا ترتیب انتخابیِ از پیش تعیینشده: هرگاه در یک ایستگاه چند قطار همزمان آماده باشند، اعزام بعدی به قطاری داده میشود که دیرتر از همه آزاد شده (نه قطاری که بیشتر منتظر مانده). وقتی تقاضا زیاد است این انتخاب اثری ندارد، چون همهٔ قطارها بهنوبت دوباره به کار گرفته میشوند؛ اما بهمحض شلشدن هدوی و کاهش تعداد اعزامهای لازم، همیشه تازهترین قطار آزاد برندهٔ اسلات بعدی میشود و قطارهای مازاد که در بازهٔ پرترافیک ساخته شده بودند، دیگر هرگز نوبتشان نمیرسد — همانجا که آخرین بار رسیدهاند میمانند، بدون هیچ پرچم یا محاسبهٔ جداگانه. ردیف آخر هر قطار در جدول با برچسب «(خروجی — پارک در …)» و نام ایستگاه محل توقف مشخص میشود؛ زمان این خروجی خودش نشان میدهد که آیا واقعاً مازاد میانهروز بوده (زمانی بهمراتب زودتر از پایان بهرهبرداری) یا صرفاً بهدلیل رسیدن ساعت پایان خط، آخرین اعزام روز بوده است. در نهایت با یک شبیهسازی رویداد-محور، قطارها به هر اعزام تخصیص داده میشوند (تا رسیدن به حداقل ناوگان تئوریک) و در صورت کمبود ناوگان، هشدار نمایش داده میشود.
اعزام پایان بهرهبرداری: آخرین اعزام مسافری (از هر دو طرف A و B) همیشه دقیقاً روی ساعت پایان بهرهبرداری قرار میگیرد. اگر پیشروی منظم هدوی از این ساعت رد شود (یعنی آخرین اعزام منظم کمتر از end باشد ولی بعدی از آن بگذرد)، ۴ اعزام آخر حذف و با ۴ اعزام جدید جایگزین میشوند: فاصله از انکر (پنجمین اعزام مانده به آخر، که خودش دستنخورده میماند) تا end روی ۴ بخش تقسیم میشود — بخشهای کوچکتر (floor) ابتدا و بخشهای بزرگتر (باقیماندهٔ تقسیم) انتها — مثلاً هدوی ۱۰ دقیقه و end=22:00: آرایهٔ منظم به ...۲۱:۱۵، ۲۱:۲۵، ۲۱:۳۵، ۲۱:۴۵، ۲۱:۵۵ میرسد (بعدی ۲۲:۰۵ > ۲۲:۰۰)، انکر=۲۱:۱۵، فاصله ۴۵ دقیقه روی ۴ بخش [۱۱،۱۱،۱۱،۱۲] تقسیم میشود، پس اعزامهای جدید ۲۱:۲۶، ۲۱:۳۷، ۲۱:۴۸ و ۲۲:۰۰ خواهند بود. اگر برای یکی از این ۴ اسلات (در هر دو سمت A یا B) قطار واقعیای آماده نباشد و طبق روال معمول لازم بود یک «ورودی» تازه ساخته شود، بهجای آن اعزام عقب میافتد تا لحظهٔ آمادهشدن همان قطار واقعیِ در راه — بدون ساختن قطار مصنوعی.
اگر گزینهٔ «ایستگاه B پایانه/دپو ندارد» فعال باشد، هیچ قطاری دیگر مستقیماً در B «مستقر» نمیشود: هر ردیفی که طبق منطق بالا قرار بود از B آغاز شود (چه استقرار شبانه پیش از شروع بهرهبرداری، چه ورودی میانروزی) بهجای آن یک اعزام مانوری واقعی و بدون مسافر از A دریافت میکند که دقیقاً بهاندازهٔ «زمان مانور A→B» (پیشفرض: همان زمان سیر A→B) زودتر از لحظهٔ موردنیاز در B حرکت میکند؛ این مانورها در جدول با برچسب قرمز «مانور بدون مسافر» و در خروجی اکسل بهعنوان یک اعزام عادی از A ثبت میشوند. به همین ترتیب، در سمت دیگر: قطاری که به B میرسد و طبق منطق بالا آخرین ردیف روزش بود (یعنی پیشتر بهعنوان «خروجی — پارک در B» نمایش داده میشد) دیگر در B نمیماند، بلکه بلافاصله پس از حداقل آمادهسازی (حداقلتوقف B) بهصورت مانوری و بدون مسافر به A بازمیگردد (جایی که پایانه/دپو دارد و پارک در آن معتبر است)؛ این ردیفها هم با برچسب قرمز «مانور بدون مسافر (بازگشت)» در جدول و در خروجی اکسل بهعنوان یک اعزام عادی از B ثبت میشوند.
فایل خروجی اکسل خط اصلی (برنامهٔ کارشناس آمار) و فایل واحد کنترل فنی (GridPreview) را بارگذاری کنید تا شمارههای واقعی رام قطار بهصورت خودکار بر اساس ساعت اعزام جایگذاری شوند.
فایل اکسلی که کارشناس آمار از شبیهساز خروجی گرفته (خط اصلی، شامل بلوک اعزام از غدیر و اعزام از وکیلآباد).
فایل اکسل واحد کنترل فنی، شامل ستونهای «مسیر»، «زمان اعزام»، «شماره قطار».
تایمتیبل تأییدشده را بارگذاری کنید تا دو جدول جداگانه برای «خط اصلی» و «فرودگاه» — با ساعت حضور راهبر روی سکو، بهترتیب ساعت اعزام — تولید شود.
فایل اکسل خروجی شبیهساز (خط اصلی + فرودگاه) که بهعنوان نسخهٔ اجرایی تأیید شده است.
| غدیر → وکیلآباد | وکیلآباد → غدیر | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ردیف | وضعیت | ساعت حضور روی سکو | ساعت اعزام | توضیحات | ردیف | وضعیت | ساعت حضور روی سکو | ساعت اعزام | توضیحات | |
| غدیر → فرودگاه | فرودگاه → غدیر | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ردیف | وضعیت | ساعت حضور روی سکو | ساعت اعزام | توضیحات | ردیف | وضعیت | ساعت حضور روی سکو | ساعت اعزام | توضیحات | |