شبیه‌ساز برنامه‌ریزی اعزام قطار V1.11

ساعت شروع/پایان بهره‌برداری و هدوی هر بازه را برای خط اصلی و خط توسعه وارد کنید؛ الگوریتم به‌صورت خودکار زمان‌بندی کامل اعزام‌ها، تعداد ناوگان موردنیاز و چرخش قطارها را تولید می‌کند.

اجرا کاملاً در مرورگر بدون نیاز به اینترنت

خط اصلی

⇄
در صورت پر بودن هر دو فیلد بالا، یک ردیف چک‌خط (با سرعت متفاوت) پیش از اولین اعزام واقعی، در بالای خروجی اکسل خط اصلی درج می‌شود.
اگر بعد از اعزام چک‌خط (هم‌زمان با شروع بهره‌برداری) فاصله تا اولین قطار «پرکردنِ» شبانهٔ باقی‌مانده خیلی زیاد باشد، با این فیلد می‌توان یک اعزام استثنا (مثلاً ۷ دقیقه بعد) بین آن‌ها گنجاند تا هدوی یکنواخت‌تر شود.
اگر تعداد قطارهای «پرکردنِ» شبانهٔ لازم در B از این عدد بیشتر شود، مازاد باید به‌جای استقرار مستقیم در B، به‌صورت مانوری بدون مسافر از A (پس از چک‌خط) اعزام شود تا دقیقاً به‌موقع به B برسد — چون پارکینگ B گنجایش بیشتری ندارد.
مقادیر آماده‌سازی، حداقل هستند و در محاسبه فقط می‌توانند افزایش یابند (هرگز کمتر از این مقدار اعزام انجام نمی‌شود).
در صورت فعال بودن، هر قطاری که طبق شبیه‌سازی باید مستقیماً در B مستقر باشد (چه پیش از شروع بهره‌برداری، چه در طول روز)، به‌جای استقرار مستقیم، به‌صورت مانوری و بدون مسافر از A به B اعزام می‌شود؛ این مانور در جدول و خروجی اکسل به‌عنوان یک اعزام واقعی از A نمایش داده می‌شود اما با برچسب «مانور بدون مسافر» مشخص است.
از ساعتهدوی (دقیقه)

خط فرودگاه (انحرافی)

غدیر ⇄
اعزام بازگشتی چک‌خط از فرودگاه = اعزام کاندید اول از سکوی جنوبی غدیر − ۱۰ دقیقه (خودکار)
زمان کل هر چرخهٔ انحراف: — دقیقه
بازهٔ هدوی خط اصلیاز هر چند قطار، یکی
برای بازه‌هایی که هدوی‌شان در جدول پیش‌فرض نیست، این فیلد خالی می‌ماند و باید دستی مقداردهی شود؛ در غیر این صورت هنگام تولید برنامه هشدار داده می‌شود.
این دیگر یک خط مستقل نیست: از میان ورودی‌های جنوبی به غدیر، اولین ورودی پس از «ساعت شروع بهره‌برداری فرودگاه» به‌جای شانت معمولی به سکوی شمالی، برای یک سفر رفت‌وبرگشت به فرودگاه منحرف می‌شود. پس از آن، ورودی‌های جنوبی شمارش می‌شوند و طبق نسبت فعال در آن لحظه (طبق جدول بالا، یعنی «از هر چند قطار یکی») هر Nاُمین ورودی جنوبی نیز به فرودگاه منحرف می‌شود؛ بقیهٔ ورودی‌ها طبق روال عادی شانت می‌شوند. تا بازگشت قطار منحرف‌شده، هیچ قطار دیگری به فرودگاه اعزام نمی‌شود (فرودگاه در هر لحظه فقط یک قطار می‌پذیرد) — اگر Nاُمین ورودی درست همان لحظه برسد که قطار قبلی هنوز برنگشته، نوبت به ورودی بعدی موکول می‌شود. زمان‌سیر و ناوگان این خط از خودِ خط اصلی گرفته می‌شود و ورودی جداگانه‌ای دیگری ندارد.
لیست خروجی‌های اکسل گرفته‌شده (0)
منطق الگوریتم: برای هر خط، اعزام‌های مبدأ A بر مبنای جدول هدوی از ساعت شروع تا پایان تولید می‌شوند. نخستین لحظه‌ای که یک قطار واقعی (اعزامی از A) به B می‌رسد و آمادهٔ بازگشت می‌شود، «R1» نام دارد (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 ثبت می‌شوند.

تطبیق شماره قطار ترافیک V1.0

فایل خروجی اکسل خط اصلی (برنامهٔ کارشناس آمار) و فایل واحد کنترل فنی (GridPreview) را بارگذاری کنید تا شماره‌های واقعی رام قطار به‌صورت خودکار بر اساس ساعت اعزام جایگذاری شوند.

۱) فایل برنامه (خط اصلی)

فایل اکسلی که کارشناس آمار از شبیه‌ساز خروجی گرفته (خط اصلی، شامل بلوک اعزام از غدیر و اعزام از وکیل‌آباد).

✓ نسخه‌(های) تأییدشدهٔ موجود در پوشهٔ اشتراکی:
یا فایل را از هر مسیر دیگری به‌صورت دستی انتخاب کنید:

۲) فایل کنترل فنی (GridPreview)

فایل اکسل واحد کنترل فنی، شامل ستون‌های «مسیر»، «زمان اعزام»، «شماره قطار».

⚠ تطبیق ناقص — این‌ها با هیچ اعزامی در برنامه مطابقت نداشتند:
تا رفع این موارد (بررسی دستی زمان‌ها در دو فایل)، خروجی اکسل تولید نمی‌شود.
✓ تطبیق کامل انجام شد و فایل خروجی دانلود شد.

لوحهٔ حضور راهبران V1.1

تایم‌تیبل تأییدشده را بارگذاری کنید تا دو جدول جداگانه برای «خط اصلی» و «فرودگاه» — با ساعت حضور راهبر روی سکو، به‌ترتیب ساعت اعزام — تولید شود.

فایل تایم‌تیبل (برنامهٔ تأییدشده)

فایل اکسل خروجی شبیه‌ساز (خط اصلی + فرودگاه) که به‌عنوان نسخهٔ اجرایی تأیید شده است.

✓ نسخه‌(های) تأییدشدهٔ موجود در پوشهٔ اشتراکی:
یا فایل را از هر مسیر دیگری به‌صورت دستی انتخاب کنید:

خط اصلی — لوحهٔ حضور راهبران

غدیر → وکیل‌آباد وکیل‌آباد → غدیر
ردیفوضعیتساعت حضور روی سکوساعت اعزامتوضیحات ردیفوضعیتساعت حضور روی سکوساعت اعزامتوضیحات

فرودگاه — لوحهٔ حضور راهبران

غدیر → فرودگاه فرودگاه → غدیر
ردیفوضعیتساعت حضور روی سکوساعت اعزامتوضیحات ردیفوضعیتساعت حضور روی سکوساعت اعزامتوضیحات