این نرمافزار به صورت متن باز بوده و به صورت رایگان قابل استفاده میباشد، کاربران میتوانند تحت قوانین GNU AGPL به توزیع و تغییر آن بپردازند.
قابلیت سفارشی کردن و تغییر زبان آن. در حال حاضر زبانهای فارسی و انگلیسی در این نرم افزار موجدند.
الگوریتم تولید کاملا خودکار که اجازه تولید نیمه خودکار و همچنین دستی را نیز میدهد.
پیاده سازی مستقل از چارچوب نرمافزاری و قابل اجرا روی لینوکس، ویندوز، مک و دیگر محیطهایی که میتوانند از نرمافزار QT[1] پشتیبانی کنند.
دارای قالب ورودی قدرتمند و انعطاف پذیر از نوع XML که اجازه ویرایش توسط یک ویرایشگر xml را نیز به ما میدهد.
قابلیت مشاهده جدول زمانبندی تولید شده به صورت ناکامل بدون نیاز به متوقف کردن عملیات تولید جدول(به صورت html یا از روی دیسک سخت).
جدول زمانبندی نتیجه شده میتواند به صورت xml یا html ذخیره شود.
حالتهای مختلف برای تقسیم بندی دانشجویان: از طریق سال، گروه و زیرگروه. این نرم افزار اجازه ایجاد سال و گرئه با همپوشانی را میدهد و اجازه داشتن زیرگروههای متداخل را نمیدهد. همچنین میتوان گروههای اختصاصی نیز تعریف کرد.
هر محدودیت یک درصد وزنی دارد، از 0.0% تا 100.0%(برخی از محدودیتهای خاص فقط میتوانند درصد وزنی 100% داشته باشند).
بیشینه ساعات در هر روز(دوره): 60( میتواند افزایش یابد، ولی به نظر نمیآید نیازی باشد!)
بیشینه تعداد روزهای کاری در هر هفته:28( میتواند افزایش یابد، ولی به نظر نمیآید نیازی باشد!)
بیشینه تعداد اساتید: 700
بیشینه گروههای دانشجویان: 15000( میتواند افزایش یابد، ولی به نظر نمیآید نیازی باشد!)
بیشینه تعداد دروس: 1000( میتواند افزایش یابد، ولی به نظر نمیآید نیازی باشد!)
تعداد نا محدود برای برچسب[2] کلاسها
بیشینه تعداد کلاسها :5000( میتواند افزایش یابد، ولی به نظر نمیآید نیازی باشد!)
بیشینه تعداد اتاقها:1000( میتواند افزایش یابد، ولی به نظر نمیآید نیازی باشد!)
بیشینه تعداد ساختمانها:100( میتواند افزایش یابد، ولی به نظر نمیآید نیازی باشد!)
مدت زمان قابل تغییر برای هر کلاس درس(هر کلاس درس میتواند 1 ساعت، 2 ساعت و یا بیشتر باشد)
قابلیت اختصاص چند استاد و یا چند گروه دانشجویان برای هر درس.
بیشینه تعداد محدودیتهای زمانی:10000( میتواند افزایش یابد، ولی به نظر نمیآید نیازی باشد!)
بیشینه تعداد محدودیتهای مکانی:10000( میتواند افزایش یابد، ولی به نظر نمیآید نیازی باشد!)
مجموعه بزرگ و انعطاف پذیری از محدودیتهای زمانی:
محدودیتهای اساسی و اجباری زمانی
محدودیت بیشنیه فاصلههای زمانی[3] در هر هفته
محدودیت حداقل روزها بین بین درسها(به منظور ایجاد توازن در کلاسها در هفته)
محدودیت زمانی ترجیهی یک کلاس
محدودیت زمانهای ترجیهی برای یک کلاس
محدودیت زمانهای ترجیهی برای چند کلاس (میتوان یک گروه از درسها را با توجه به استاد، موضوع درس، برچسب درس یا دانشجویان و مجموعهای از دورههای زمانی و زمانهخای ترجیهی را مشخص کرد)
محدودیت روی زمانهای تفریح
محدودیت بیشینه ساعتهای روزانه برای دانشجویان
محدودیت بیشینه ساعتهای روزانه برای اساتید
محدودیت در دسترس نبودن یک گروه از دانشجویان
محدودیت بیشینه روزهای کاری یک استاد در هفته
محدودیت در دسترس نبودن یک استاد
محدودیت بیشنیه فاصلههای زمانی یک استاد در هر هفته
محدودیت کلاسها با ساعت شروع مشابه
محدودیت کلاسها با زمان شروع مشابه
محدودیت عدم همپوشانی کلاسها
محدودیت حداقل فاصلهها بین کلاسها
محدودیت دو کلاس متوالی و پی در پی
محدودیت دو کلاس هم گروه
محدودیت دو کلاس متوالی(نه الزاما پی در پی)
محدودیت کلاسهایی که روز دانشجویان را پایان میدهند
محدودیت بیشینه فاصلههای زمانی هر استاد در یک روز
محدودیت بیشینه ساعتهای متوالی متوالی برای اساتید
محدودیت بیشینه ساعتهای متوالی برای دانشجویان
محدودیت بیشینه ساعت بازههای زمانی روزها در هر هفته برای اساتید
محدودیت بیشینه ساعت بازههای زمانی روزها در هر هفته برای دانشجویان
مجموعه بزرگ و انعطاف پذیری از محدودیتهای مکانی:
محدودیتهای اساسی و اجباری مکانی
محدودیت عدم در دسترس بودن اتاقها
محدودیت اتاق ترجیهی یک کلاس
محدودیت اتاق ترجیهی یک درس
محدودیت اتاق ترجیهی برای یک برچسب درسی
محدودیت روی بیشینه تعویض ساختمان در یک روز برای اساتید
محدودیت روی بیشینه تعویض ساختمان در یک روز برای دانشجویان
محدودیت حداقل فاصله زمانی بین تغییر ساختمانها برای هر استاد
محدودیت حداقل فاصله زمانی بین تغییر ساختمانها برای دانشجویان
محدودیت استادی که یک اتاق ترجیهی دارد
محدودیت گروه دانشجویانی که یک اتاق ترجیهی دارند
حداکثر تغییر ساختمانها در روز برای یک استاد
حداکثر تغییر ساختمانها در روز برای همه استاد
حداکثر تغییر ساختمانها در روز برای گروه دانشجویان
حداکثر تغییر ساختمانها در روز برای همه دانشجویان
این نرم افزار از الگوریتم اکتشافی[4] استفاده میکند، به این ترتیب که کلاسها را به ترتیب مرتب کرده و از مشکل ترین آنها شروع میکند. در صورتی که امکان چیدن این کلاس نباشد، به عنوان یک کلاس با ویژگی غیر قابل چیده شدن مطرح میشود، در نتیجه کاربر میتواند با تغییر خصوصیات آن به رفع مشکل به وجود آمده اقدام نماید. این الگوریتم کلاسها را به صورت بازگشتی جا به جا میکند تا برای کلاسهای جدید فضا ایجاد شود و در حالتی که امکان قرارگیری کلاس جدید در جدول زمانبندی نباشد به عقب باز گشته[5] و ترتیب رسیدگی به کلاسها را تغییر میدهد. کد مربوط به این عملیات در شاخه زیر قرار دارد:
src/engine/generate.cpp
وقتی که یک کلاس قرار است در محل زمانی خود قرار بگیرد، در صورتی که چند بازه زمانی مختلف برای آن وجود داشته باشد، بازهای انتخاب میشود که کمترین تعداد کلاسهای مخالف[6] وجود داشته باشد و به طور بازگشتی بین این حالتهای مختلف جا به جا میشود. برای این که از افتادن به درون حلقههای تکراری جلوگیری شود، از یک آرایهی مرجع از کلاسها استفاده شده است که در هر بار کلاس چیده شده در زمانبندی از داخل این آرایه حذف میشود.
بیشترین عمق(سطح) برای بازگشت در این الگوریتم 14 در نظر گرفته شده است. بیشترین تعداد فراخوانیهای بازگشتی معادل با دو برابر کلاسهای داخلی(2*nInternalActivities) است. برای این عدد مقادیر دیگری نیز امتحان شده اند نظیر 2 * (تعداد کلاسهای قرار گرفته در زمانبندی +1 )، عدد کنونی الزاما بهترین عدد ممکن نیست و ممکن است با توجه به حالتهای دیگر نتیجه بهتری نیز به دست بیاید، اما در بین اعداد امتحان شده و ورودیهای آزمایشی انتخاب شده برای برنامه این عدد از بقیه اعداد نتیجه بهتری در برداشت.
اما این برنامه چگونه به زمانهای آزاد و فواصل بین کلاسهای دانشجویان رسیدگی میکند؟ برای این منظور برای هر زیرگروه مجموع ساعتهای هفتگی محاسبه شده، سپس هنگام تولید جدول، مجموع زمان ساعتهای درسی و فواصل بین آنها نباید از بیشتر از مجموع همه ساعتهای هفتگی برای هر زیرگروه شود.
ساختار جواب به صورت آرایهای از زمانها(times[MAX_ACTIVITIES]) و اتاقهای(rooms[MAX_ACTIVITIES) است، همانطور که قبلا گفته شد کلاسها به تریتب سختی شرایط آنها چیده شده و سخت ترین آنها اول قرار میگیرد. عملیات مرتبسازی در generat_pre.cpp انجام میشود. همچنین در این فایل تعدادی ماتریس ساخته میشود که کار با آنها به مراتب از کار کردن مستقیم با لیست محدودیتها راحت تر است. تولید زمانبندی به صورت بازگشتی انجام میشود. فرض کنید به کلاس شماره n رسیده باشیم، permutation[added_act] (permutation[i] added_act - از 0 تا gt.rules.nInternalActivities کلاسها را به صورت مرتب نگه میدارد، سخت ترین اول قرار دارد، و این ترتیب ممکن است در هنگام ایجاد جدول تغییر کند.) در این الگوریتم هر بازه زمانی کنترل میشود و برای هر بازه کلاسهایی که با permutation[added_act] تداخل دارند مشخص میشوند. سپس این بازههای زمانی مرتب شده و بازهای که کمترین لیست از کلاسهایی برخوردی را دارد اول قرار میگیرد. سپس برای اولین، دومین و ... آخرین بازه: کلاسها از داخل این بازه خالی شده و permutation[added_act] داخل آن قرار گرفته و تلاش میشود دیگر کلاسها با روشی مشابه به صورت بازگشتی درون جدول زمانبندی قرار بگیرند. بیشترین سطح برای بازگشت 14 است و بیشترین تعداد فراخوانی برای این روش، random_swap(act, level) برابر 2* nInternalActivities است.
در صورتی که امکان قرار دادن permutation[added_act] با این روش نبود(از محدودیت 2* nInternalActivities عبور کردیم)، سپس بهترین بازه زمانی انتخاب میشود و permutation[added_act] درون آن قرار گرفته و دیگر کلاسهای دارای تلاقی با آن از این بازه خارج شده و در لیست کلاسهای رسیدگی نشده قرار میگیرند. با این روش مقدار added_act ممکن است کم شود. سپس مسیر همه تلاشها و کلاسهای پاک شده در بازههای زمانی و فعالیتهای صورت گرفته در باره قرار دادن این کلاس در زمانبندی ذخیره شده تا در آینده از مراجعه دوباره به آنها جلوگیری شود.
در صورتی که سطح بازگشت بزرگتر یا مساوی 5 بود، عملیات random_swap فقط در بازه زمانی اول(بهترین بازه) جستجو میکند. بنابر این در سطح صفر برای همه بازههای زمانی عملیات جستجو صورت میگیرد، برای سطوح 1 تا 4 هم به همین صورت، در سطح صفر فقط بازه اول(بهترین) و برای سطوح 6 به بعد هم باز فقط اولین بازه زمانی(بهترین) بررسی میشود. وقتی به سطح 13 رسیدیم، به سطح 4 برگشته و بازه بعدی را انتخاب میکنیم و به همین ترتیب کار را ادامه میدهیم.
این مستند شامل یک راهنمای جامع به همراه تعداد زیادی مثال میباشد. در این مستند سعی شده است تا نحوه کار کردن با برنامه به صورت کاملا ساده توضیح داده شود تا افرادی که دارای دانش اولیه کار با رایانه هستند توانایی کار کردن با این نرم افزار را داشته باشند. در صورتی که قسمتی از راهنما دچار ابهام بود و یا نکات تکمیلی به نظر شما خواننده گرامی رسید، خوشحال خواهم شد در صورتی که با آدرسهای پست الکترونیکی زیر، آن را با من نیز در میان بگذارید:
تنها کاری که باید برای اجرای این برنامه انجام داد، انتقال پوشه حاوی فایلهای آن به محل مورد نظر است.
این نرمافزار یک برنامه کاملا ساخت یافته به صورت QT-Application است، شما باید این راهنما را به دقت مطالعه کنید تا بتوانید از همه راهنماییها و هشدارها در زمینه استفاده صحیح از برنامه مطلع شوید.
در این برنامه شما امکان ذخیره و باز کردن فیال را دارید. این برنامه دارای گزینه مستقلی برای چاپ برنام تولید شده در محیط برنامه نیست. پس از عملیات ایجاد جدول زمانبندی، جداول تولید شده در پوشه result قرار میگیرند. در قسمت چاپ جدول در این مستند میتوانید با نحوه چاپ جدول آشنا شوید.
مجموعه دادههای خود را به صورت منظم و مداوم ذخیره کنید، مخصوصا اگر میخواهید محدودیتها را اضافه و یا ویرایش کنید. در حال حاضر این نرمافزار قابلیت برگشت[7] ندارد. در برخی موارد بازگرداندن آخرین تغییر بسیار دشوار است. همچنین در صورتی که برنامه نتوانست بعد از مدت زمانی طولانی راه حلی برای شرایط مشخص شده پیدا کند، شاید بخواهید تغییرات را به شرایط قبلی بازگردانید ولی اینکه آخرین تغییرات کدام بوده اند ذخیره نشده اند، در نتیجه باید این کار را به صورت دستی انجام دهید.
مجموعه دادههای ذخیره شده تنها شامل تنظیمات اولیه، کلاسها و محدودیتها میباشد و جدولهای زمانبندی تولید شده را شامل نمیشود.
در صورتی که میخواهید جدولهای تولید شده نیز ذخیره شوند، باید مسیر زیر را دنبال کنید:
جدول ← ذخیره دادهها+جدول با نام.... . در این صورت جداول تولید شده در فایل xml نیز ذخیره میشوند. توجه داشته باشید که جداول به صورت خودکار در پوشه result ذخیره میشوند.
دادهها شامل تنظیمات اولیه، کلاسها و محدودیتها میباشد و جدولهای زمانبندی تولید شده را شامل نمیشود.
نام و توضیحات در مورد موسسه داده های اختیاری هستند. نام وشخص شده برای موسسه در در محل عنوان بالای همه جداول تولید شده چاپ میشوند. توضیحات نیز در ابتدای جدول زمانبندی چاپ میشوند. از توضیحات برای بیان مشکلات، آخرین محدودیتهای اضافه شده، محدودیتهای لازم و یا محدودیتهایی که باید ویرایش شوند استفاده میشود. مواظب به روزرسانی مداوم توضیحات باشید، توضیحات قدیمی همانند توضیحات غلط ممکن است مسئله ساز شوند.
بیشتر موسسات آموزشی فقط نیازمند روزهای شنبه تا چهارشنبه (برخی موسسات پنجشنبه) هستند. این عبارتها در جدول هم چاپ میشوند. منظور از ساعت همان یک بازهزمانی است. ساعتها نیز در جدول چاپ میشوند، لذا توصیه میشود از عبارات کوتاه شده استفاده شود. شما میتوانید از هر عبارتی به جای بازههای زمانی استفاده کنید.
شما باید همواره موظب باشید که همه دورهها طول یکسان داشته باشند، چرا که این برنامه بین طولهای مختلف فرقی نمیگذارد و هنگام تخصیص بازه زمانی همه آنها را یک بازه زمانی(با طول مشابه برابر 1) در نظر میگیرد. (مگر مواردی که بازهای را به منظور خاصی اضافه میکنید، مثلا در مثال 4، میتوان بازه 10:00-09:35 را اضافه کرد و آن را همیشه برای زمان تفریح و یا زمان خالی (با منظور کردن یک محدودیت زمان تفریح) در نظر گرفت.)
مثال 1 |
مثال 2 |
مثال 3 |
مثال 4 |
مثال 5 |
1st Period |
Period 1 |
1 |
08.05 – 08.50 |
08.05 |
بنابراین با مثالهای بالا، یک کلاس با طول 1، همواره 45 دقیقه و فعالیت با طول 2، 90 دقیقه زمان میگیرد. فعالیتها نمنیتوانند طولی به صورت غیر صحیح (مثلا 1.5) داشته باشند. در صورتی که موسسه شما دارای کلاسهایی با مدت زمان نختلف است، مثلا کلاسها 90 دقیقهای، 120 دقیقهای و 60 دقیقهای، بازههای زمانی را به صورت 30 دقیقهای تعریف نید. به این صورت کلاسهای 60 دقیقهای، 90 دقیقهای و 120 دقیقهای به ترتیب طولهایی برابر 2، 3 و 4 خواهند داشت. در صورتی که برنامه نتوانست جدولی برای شما تولید کند، باید به فکر افزایش تعداد بازهها و یا افزایش تعداد روزها باشید. در صورتی که برنامه خیلی راحت و بدون مشکل هم به نتیجه رسید، روزها و بازههای زمانی را کنترل کنید، شاید تعداد آنها خیلی زیاد باشد!
برای اضافه کردن اساتید، درسها، برچسب کلاسها و اتاقها و ساختمانها. این اسامی نیز در جدول چاپ میشوند، لذا از اسامی کوتاه استفاده کنید. منظور از برچسب کلاس، یک توضیح اختیاری برای یک کلاس است. به طور مثال تمرین و یا آزمایشگاه. در صورتی که یک کلاس با طول 2 واحد بخواهد در بازههای فرد(اول، دوم، سوم و ..) شروع شود، برچسب فعالیت باید فرد باشد، در صورتی که یک کلاس حتما باید صبح برگزار شود، برچسب آن میتواند صبح باشد.
توصیه میشود قبل از اضافه کردن برچسب فعالیتها، فصل مربوط به محدودیتها و بخش مربوط به زمانهای ترجیهی را به طور کامل مطالعهکنید.
برای اضافه کردن برچسب فعالیتها خیلی مواطب باشید، پیشنهاد من این است که از برچسب فقط برای اعمال محدودیت استفاده کنید، البته ابتدا تلاش کنید تا محدودیت را بدون برچسب اعمال کنید، چون بسیار راحت تر است.
در مورد اتاقها، هر اتاق ظرفیت 1 دارد، بنابر این همواره یک کلاس میتواند در یک اتاق برگزار شود. شما الزامی به اضافه کردن ساختمان ندارید، فقط وقتی ساختمان اضافه کنید که میخواهید از محدودیتهای مربوط به آن استفاده کنید(مانند بیشینه تغییر بین ساختمانها). در صورتی که ساختمانهای متعددی اضافه کردید، مواظب باشید که در ساختمانهای مختلف، اتاقهای هم نام نباید وجود داشته باشند، لذا بهتر است قسمتی از نامن ساختمان را نیز در نام اتاق منظور کنید.
فهمیدن تفاوت بین سالها، گروهها، زیرگروهها، کلاس[10]ها، بخشها و دسته[11]ها بسیار مهم است، اما ساده نیست! لطفا مثالها و تعاریف را به دقت مطالعه کنید.
سال: مجموعهای از دانشجویان که در یک سطح از دروس هستند(و یا با هم در یک سال وارد موسه شده اند)
گروه: مجموعهای از دانشجویان که کلاسهای مشابهی دارند. لذا این افراد اساتید مشابه و دروس مشابهی در زمان مشابه دارند.
دسته: مجموعهای از گروهها که ممکن است کلاسهایی را به صورت موازی و در یک زمان با هم داشته باشند.
کلاس(بخشی از تقسیم بندی اول): مجموعهای از دانشجویان که کلاسهای مشابه دارند. این نرم افزار اجازه استفاده از عبارتclass را نمیدهد، برای این که این عبارت به معانی دیگر نیز در زبان گفتگو به کار میرود. با توجه به شرایط گوناگون، یک دانشجو میگوید که او کلاس A یا کلاس1 و یا کلاس 1A را دارد. در این مثال برنامه به 1 میگوید سال، A یک بخش از یک طبقه و 1A یک گروه.
مثال :
در یک مدرسه ابتدایی آلمانی 4 سال وجود دارد، اما در آنجا تعدادی گروه مختلف وجود دارد. مثلا گروه های 1A, 1B, 1C, 2A, 2B, 2C, 3A, 3B, 4A, 4B . برای وارد کردن اولین سال این مثال عدد 1 را وارد کنید. سپس با انتخاب دستهها، سال را به صورت خودکار تقسیم کنید. تعداد دستهها را به 3 افزایش داده و آنها را A و B و C در نخستین دسته بنامید.سپس به گروهها نگاه کنید و ببینید چه اتفاقی افتاده است.
درس(بخش از دسته دوم): مجموعه ای از دانش آموزان که معمولا کلاسهای یکسان دارند.
course |
subject (duration) |
Biology |
Biology (4),
chemistry (1), physics (2) |
یک کلاس معمولا دارای یک موضوع درسی، یک مجموعه از دانشجویان، یک استاد و یک طول مشخص است. کلاسها همچنین میتوانند شامل برچسب کلاس، چند مجموعه از دانشجویان و نیز چند استاد باشند.
قبل از اینکه به اضافه کردن کلاس بپردازید، باید یک طرح کلی از کلاسها را آماده کنید. در حال حاضر این نرمافزار کمکی در این مرحله ارائه نمیکند. این طرح اولیه میتواند شامل موارد زیر باشد:
· آیا همه دانشجویان تعداد کافی و درست از کلاسها را دارند؟
· آیا همه اساتید تعداد کافی و درست از کلاسها را دارند؟
· آیا امکان دارد که کلاسهای مختلف یک موضوع درسی به صورت موازی برگزار شوند؟
برای اضافه کردن یک کلاس، کافی است که دانشجویان، موضوع درس و اساتید را انتخاب کنید. برای این منظور کافی است گزینه مورد نظر را انتخاب کرده و سپس کلید Enter را فشار دهید و یا می توانید روی گزینه موردنظرتان دبل کلیک کنید.
معمولا یک کلاس دارای یک موضوع درسی، یک مجموعه از دانشجویان و یک استاد است. در این صفحه باید تعداد ساعتهای این کلاس را نیز در قسمت "تقسیم کن به ... کلاس در هر هفته" مشخص کنید. محدودیت حداقل تعداد روزهای لازم بین دو کلاس در اینجا یکی از مهمترین محدودیت ها است.
مثال:
درس جغرافی هفتهای 1 جلسه برگزار میشود. برای اضافه کردن آن کافی است مجموعه دانشآموزان، استاد و نام درس را انتخاب کرده و آن را به کلاسهای دیگر اضافه کرد(با فشرد کلید"کلاس کنونی را اضافه کن").
درس هنر در دو جلسه متوالی در یک روز هفته برگزار میشود. بعد از اضافه کردن دانشجو،استاد و نام درس، طول را برابر 2 قرار میدهیم.
درس زبان، در 4 بجلسه غیر متوالی و در روزهای مختلف برگزار میشود، بعد از اضافه کردن دانشجو،استاد و نام درس، عدد مربوط به قسمتهای کلاس را از یک به 4 افزایش داده و با افزایش درصد وزنی به 100، برای هر روز طول 1 را انتخاب میکنیم. در صورتی که بخواهیم این حالت را اضافه کنیم، ولی کلاسها لازم نباشد جلسات حتما در 4 روز متفاوت برگزار شوند، درصد وزنی را برابر 95 قرار میدهیم.
بعد از اضافه کردن همه کلاسها، به قسمت آمارها رفته و کلاسها را کنترل کنید.
به طور کلی دو راه برای اضافه کردن کلاسهای دو هفته یکبار وجود دارد
منظور از این عبارت این است که 2 یا جند استاد به گروهی از دانشجویان در یک بازه زمانی درس بدهند. در این گونه موارد مواظب اتاق خانگی باشید، چون اتاق خانگی یک استاد اجازه اضافه کردن تیم اساتید را نمیدهد. در این گونه موارد از اتاق ترجیهی استفاده کنید.
برای تیم اساتید، یک کلاس باید حداقل 2 استاد داشته باشد. کافیست یک کلاس را با همه اساتید مورد نظر گروه دانشجویان و درس مربوطه اضافه کنید.
یک کلاس به 4 کلاس در طول هفته تقسیم شده است. فقط یکی از این جلسات باید توسط 2 استاد اداره شود. برای این حالت دو راه مختلف وجود دارد:
راه اول: یک کلاس ایجاد کرده و آن را به 4کلاس مختلف تقسیم کنید برای آن فقط یک استاد انتخاب کنید، در این حالت شماره یکی از این 4 جلسه را به خاطر بسپارید و سپس یک کلاس یک جلسهای با استاد دیگر بدون گروهی از دانشجویان بسازید. حالا با استفاده از محدودیت شروع مزمان با کلاس دیگر را برای کلاس احیر درست کرده و برای کلاس دیگر همان شماره را وارد کنید.
راه دوم: یک ککلاس را با سه جلسه و یک استاد اضافه کرده و سپس کلاس دیگری را به صورت تک جلسه ای با دو استاد اضافه کنید.
هر محدودیتی یک وزن دارد. در صورتی که این محدودیت 100% باشد، یعنی این محدودیت حتما باید اعمال شود. در صورتی که وزن آن کمتر باشد، به این معنی است خوب است اعمال شود ولی الزامی نیست. این برنامه با توجه به مقدار درصد وزنی، برای اعمال محدودیت تلاش میکند.
همواره قبل از اضافه کردن یک محدودیت جدید، از قابل تولید بودن جدول مطمئن شوید، ممکن است محدودیت جدید قابل تولید شدن نباشد. با اضافه شدن هر محدودیت جدید، سرعت تولید جدول کمتر میشود، لذا فقط محدودیتهای لازم را اضافه کنید.
چگونه یک محدودیت درست و مناسب اضافه کنیم؟ به نظر من همه محدودیتها باید وزنی نزدیک 100% داشته باشند، مخصوصا در مورد محدودیتهایی که دارای یک مقدار دیگر بیشینه نیز باشند(مانند روزها، دورها و فاصلهها) محدودیت در مورد حداقل روزها بین کلاسها از حساسیت کمتری برخوردار است، چون این محدودیت باید همیشه 100% باشد.
خوب است که ابتدا یستی از محدودیتها تهیه شده و بر اساس اهمیت مرتب شوند. اما توصیه نمیشود که مهمترین محدودیت دارای درصد وزنی 100 باشد، بعدی 99 و تا آخر.
محدویتهای اساسی عبارتنداز:
· محدودیتهای زمانی: محدودیتهای اجباری اساسی برای زمان
· محدودیتهای مکانی: محدودیتهای اجباری اساسی برای مکانی
این محدودیتها همیشه باید درصد وزنی 100 داشته باشند و باید همیشه در دادهها منظور شوند. محدودیتهای اساسی اجباری برای زمان برای تضمین این مسئله است که یک استاد در یک لحظه چند درس را ارائه ندهد. محدودیتهای اساسی اجباری برای مکان تضمین میکنند که در یک لحظه در یک اتاق چند درس ارائه نشود.
محدودیتهای در دسترس نبودن و زمانهای تفریح عبارتند از:
· محدودیتهای زمانی(اساتید) یک استاد در دسترس نیست.
· محدودیتهای زمانی(دانشجویان) مجموعهای از دانشجویان در دسترس نیستند
· محدودیتهای مکانی(اتاقها) یک اتاق در دسترس نیست
· محدودیتهای زمانی(ترکیبی) زمانهای تفریح(در دسترس نبودن همه اساتید + همه دانشجویان)
ممکن است در برخی شرایط اساتید، دانشجویان و یا اتاقها در دسترس نباشند. این محدودیتها باید درصد وزنی 100% داشته باشند. در صورتی که یک استاد و یا گروهی از دانشجویان محدودیت در دسترس نبودن داشته باشد، ممکن است این بازه "آزاد" یک فاصله زمانی[13]باشد. بنابر این در صورتی که از محدودیتهایی در مورد فواصل زمانی هم استفاده میکنید؛ توجه بیشتری داشته باشید.
مثال:
یک استاد روزهای 3یکشنبه و سهشنبه در موسسهی دیگری تدریس میکند. در این صورت میتوان از محدودیت در دسترس نبودن استاد استفاده کرد.
یک گروه از دانشجویان در روزهای دوشنبه در بازههای اول و دوم باید در موسسه دیگری حاضر باشند. در این صورت میتوان از محدودیت در دسترس نبودن مجموعهای از دانشجویان استفاده کرد. در جدول زمانبندی دانشجویان علامت ----- ظاهر میشود.
یک واحد درسی با دانشکدهی دیگری به صورت مشترک ارائه میشود. در این صورت با مسئول زمانبندی دانشکده دیگر صحبت کرده و مشخص کنید که کدام دانشکده در کدام بازه زمانی میتواند از کلاس استفاده کند. برای در نظر گرفتن محدودیت میتوان از محدودیت در دسترس نبوردن اتاق استفاده کرد.
محدودیت زمان تفریح، راه سادهای برای بیان کردن در دسترس نبودن همه اساتید و دانشجویان است.
یک موسسه تمام وقت در صبح و بعد از ظهر شنبه تا پنجشنبه کلاس دارد، اما نباید در بعد از ظهر پنجشنبه کلاس داشته باشد. برای این منظور محدودیت زمان تفریح را برای تعریف بعد از ظهرهای پنجشنبه به عنوان زمان تفریح اضافه کنید(در دسترس نبودن همه دانشجویان + همه اساتید)
زمان ناهار دانشجویان و اساتید همیشه در بازه هفتم قرار دارد. از محدودیت زمان تفریح برای بازه هفتم همه روزهای هفته استفاده کنید. البته شاید بهتر باشد تا از ابتدا بازه هفتم را در بین بازهها وارد نکنیم!
این محدودیت از محدودیتهای زمانی است: حداقل تعداد روزها بین گروهی از کلاسها. میتوانید قسمت اضافه کردن کلاس را نیز برای این محدودیت مطالعه کنید. در صورتی که جلسات مختلف کلاس باید در روزهای مختلف باشند ولی این ازام اجباری نیست، میتوانید محدودیت حداقل روزها را با وزنی کمتر از 100 اضافه کنید. در صورتی که یک کلاس را اضافه کنید، این کار به طور خودکار انجام میشود. بنابر این، در حالت ایده آل همه کلاسها در روزهای مختلف قرار دارند و در بدترین حالت همه محدودیتها نادیده گرفته شده و جلسات مختلف کلاس در یک روز قرار میگیرند.
اگر بخواهیم کلاسها در روزهای مختلف قرار بگیرند ولی اجباری در آن نباشد، و در صورت قرار گرفتن در یک روز بخواهیم به صورت متوالی قرار بگیرند، محدودیت حداقل روزهای بین جلسات را اضافه کرده و سپس در محل متوالی بودن جلسات، علامت میزنیم. بنابراین در حالتت ایده آل همه حلسات در روزهای مختلف قرار میگیرند و در غیر این صورت اگر در یک روز قرار بگیرند، حداکثر دو جلسه میتوانند به صورت متوالی قرار بگیرند. بنابراین غیر ممکن است که 3 جلسه مختلف یک کلاس در یک روز قرار بگیرند. در بد ترین حالت، در روزهای مختلف هر کدام دو جلسه متوالی داریم.
در قرار دادن محدودیتها، مواظب باشید که دانشجویان دارای بازههای خالی باشند، در غیر این صورت در صورت پر بودن زمان دانشجویان، با اضافه کردن محدودیتهای 100%، جدول زمانبندی غیرقابل تولید میشود.
همچنین مواظب حالتی که دانشجویان بازه زمانی خالی در جدول نداشته باشند باشید، جدول ممکن است غیر قابل تولید شود، زیرا در جدولهایی که کاملا پر هستند، کلاسهای دروس مشابه به صورت موازی زمانبندی میشوند
به مثال زیر توجه کنید:
درس |
کلاس(طول) |
علوم
طبیعی |
زیست
شناسی(2)، شیمی(2)،
فیزیک(2) |
در صورتی که استاد زیست شناسی بخواهد قفط یک کلاس با طول 2 بگیرد، اساتید فیزیک و شیمی هم باید فقط یک کلاس ب طول 2 بگیرند و یا کلاسهای دوجلسهای با طول 1 بگیرند. در صورتی که استاد هنر بخواهد 3 جلسه با طول بگیرد، ولی استاد فرانسه بخواهد 4 جلسه با طول 1 داشته باشد، جدول غیر قابل حل میشود.
هر دو استاد دلایل کافی دارند که چرا جلسهای با طول 1 یا دوجلسه متوالی میخواهند. درس فرانسه باید به صورت 4 جلسه متوالی باشد تا یادگیری بهتر صورت پذیرد و درس هنر به صورت عملی است و بهتر است که جلساتی با طول 2 داشته باشد.
بنا بر این بهتر است در مورد تداخلهای اینچنینی زودتر فکر کرد. با اساتید صحبت کنید و شرایط را توضیح دهید و یک راه حل پیدا کنید. یک راه حل احتمالی به این ترتیب است: استاد فرانسه 4 جلسه مجزا با درصد وزنی 100% داشته باشد(با محدودیت حداقل تعداد روزها). این به این معنی است که استاد درس هنر فقط میتواند برای کلاسش 4 جلسه داشته باشد که 2تا از آنها دارای طول 2 و 2تای دیگر طول 1 دارند. در این صورت دیگر نیازی به محدودیت حداقل روزها نیست، چرا که محدودیت کلاس فرانسه خود به خود این محدودیت را نیز اعمال میکند. همچنین نرمافزار در مورد پی در پی بودن کلاسهای زبانهای فرانسه و انگلیسی نیز مراقب خواهد بود، چون درسهای علوم طبیعی نیاز به کلاسهایی با طول 2 دارند. نگاهی هم به دروس علوم طبیعی بیاندازیم. این بدین معناست که غیرممکن است همه درسها دارای تنها یک جلسه کلاس با طول 2 باشند. در صورتی که فیزیک و انگلیسی توسط یک استاد تدریس شوند، بنابراین فیزیک نمیتواند دارای 2 بازه متوالی باشد. در صورتی که فیزیک و فرانسه توسط یک استاد تدریس شوند، پس هیچ درسی از علوم طبیعی نمیتواند 2 بازه متوالی داشته باشد.
محدودیتهای بیشینه و حداقل بازههای زمانی در هر روز عبارتند از:
· محدودیت زمانی(اساتید): بیشینه ساعتهای روزانه برای یک استاد
· محدودیت زمانی(اساتید): بیشینه ساعتهای روزانه برای همه اساتید
· محدودیت زمانی(اساتید): حداقل ساعتهای روزانه برای یک استاد
· محدودیت زمانی(اساتید): حداقل ساعتهای روزانه برای همه اساتید
· محدودیت زمانی(دانشجویان): بیشینه ساعتهای روزانه برای یک گروه از دانشجویان
· محدودیت زمانی(دانشجویان): بیشینه ساعتهای روزانه برای همه گروههای دانشجویان
· محدودیت زمانی(دانشجویان): حداقل ساعتهای روزانه برای یک گروه از دانشجویان
· محدودیت زمانی(دانشجویان): حداقل ساعتهای روزانه برای همه گروههای دانشجویان
محدودیتهای بیشینه و حداقل بازههای زمانی در متوازن شدن چینش کلاسها در روزها موثرند.
گروه |
کلاسها در هر هفته |
1A, 1B |
20, 19 |
فرش کنید در هر هفته 5 روز و در هر روز 6 ساعت داشته باشید، بنابراین کلا 30 باز در طول هفته داریم. دانشجویان تعداد متفاوتی از کلاسها(جلسات) را در هر هفته دارند.
بنا بر این بدون اعمال هیچ گونه محدودیتی، ممکن است گروه 1B 6 جلسه از شنبه تا 2 شنبه، یک جلسه در سه شنبه و صفر جلسه در چهارشنبه داشته باشد.
دانشجویان در سال اول و دوم، نمیتوانند مدت زمان زیادی را روی یک موضوع خاص تمرکز کنند، بنابراین بهتر است تا بیشینه ساعتهای روزانه را محدود کنیم. محدودیت بیشینه ساعتهای روزانه برای یک گروه از دانشجویان با بیشینه 4 و درصد وزنی 100% را برای سال اول وارد کنید. نمیتوان برای دیگر سالها نیز این محدودیترا اضافه کرد، چرا که در این صورت جدول غیر قابل حل میشود.(البته ممکن است بتوانید این محدودیت را به سالهای دیگر با درصد وزنی کمتر اعمال کنید.)
محدودیت بیشینه ساعتهای روزانه برای یک گروه از دانشجویان با بیشینه 5 و درصد وزنی 100% را برای سال دوم وارد کنید. نمیتوان برای سالهای 3 و 4 نیز این محدودیت را اضافه کرد.
دیگر نیازی به اضافه کردن محدودیت بیشینه ساعتهای روزانه برای یک گروه از دانشجویان با بیشینه 6 نیست، چرا که جدول شما روزانه فقط 6 بازه زمانی دارد.
شما نیازی به اضافه کردن محدودیت حداقل ساعتهای روزانه برای یک گروه از دانشجویان برای گروههای 4A و 4B ندارید، چون نیازی نیست! شما نمیتوانید این محدودیت را با 5 بازه برای گروه 3A وارد کنید، ولی ممکن است بسیار دشوار باشد. شما نمیتوانید این محدودیت را برای گروه 3B وارد کنید. بنابراین پیشنهاد میکنم که محدودیت 4 بازه زمانی در هر روز را برای سال سوم وارد کنید. این کار در صورتی که سال2 حداقل 4 بازه در هر هفته بگیرد، مفید است.
شما میتوانید محدودیت حداقل ساعتهای روزانه برای یک گروه از دانشجویان را با حداقل 4 بازه برای گروه 1A وارد کنید، ولی ممکن است بسیار دشوار شود. شما نباید این محدودیت را برای گروه 1B وارد کنید. بنابراین پیشنهاد میکنم محدودیت حداقل 3 بازه در هر روز را برای سال 1 وارد کنید.
به جای استفاده از محدودیت بیشینه بازهها در هر روز میتوانید از زمانهای ترجیهی استفاده کنید. این دو روش یکشان نیستند، ولی خیلی شبیهاند، سریع تر بوده و ممکن است قدری قویتر باشد.
این کار را میتوان برای اساتید هم انجام داد، اما مواظب باشید، چرا که محدودیت بیشینه بازهها در هر روز تنها زمانی مفید است که موسسه شما تعداد زیادی بازه در هر روز داشته باشد.
محدودیت حداقل بازههای روزانه برای یک استاد همیشه مفید نیست(به نظر من). قبل از اضافه کردن این محدودیت لازم است که از محددیت بیشینه بازهها در هر روز را برای داشتن یک جدول متعادل استفاده کرد. در مورد استفاده کردن از محدودیت بیشینه روزها در هر هفته برای تک تک اساتید فکر کنید، این کار ممکن است خیلی بهتر باشد، چرا که این محدودیت بسیار محکم تر است و نیازی بهاین نیست که استاد خود را با برنامههای موسسه تطبیق دهد.
در مورد محدودیت حداقل ساعتهای روزانه برای همه اساتید احتیاط کنید. در صورتی که از این محدودیت با مقدار 2 استفاده کنید ولی در زمان مشابه استادی داشته باشید که تنها یک بازه در کل هفته تدریس میکند، جدول قابل تولید نیست. دو راه حل برای این کار وجود دارد:
1- به جای این که محدودیت حداقل ساعتهای روزانه برای همه اساتید را وارد کنید، برای تک تک اساتید به صورت جداگانه محدودیت حداقل ساعتهای روزانه را وارد کنید.
2- برای استادی که مشکل دارد یک کلاس با نام استاد ولی بدون دانشجو وارد کنید. در صورتی که محدودیت اتاق خانگی برای استاد دارید، احتیاط کنید.
این محدودیت عبارت است از:
محدودیت زمانی(اساتید): بیشینه روزها در هر هفته برای یک استاد
این محدودیت در صورتی که دارای قرارداد همکاری با موسسه باشیم که طی آن باید تعدادی روزهای مشخص استاد با موسسه همکاری کند، اهمیت پیدا میکند.
در صورتی که محدودیت بیشینه روزهای هفته را با مقدار 3 و درصد وزنی 100% وارد کنید و این استاد دارای کلاسی باشد که 4 جلسه دارد و دارای محدودیت حداقل تعداد روزهای بین جلسات با درصد وزنی 100 باشد، جدول غیر قابل تولید میشود. احتیاط کنید، اکثر کلاسها این محدودیت را دارند.
بسیاری از اساتید دوست دارند تا یک روز آزاد داشته باشند. آمار مربوط به استاد را کنترل کنید، ببینید که آیا استاد میتواند یک روز خالی داشته باشد یا نه. در این صورت باید تعداد بازههای هر روز برای یک استاد کوچکتر یا مساوی تعداد بازههای هر هفته در جدول زمان بندی منهای تعداد بازهای هر روز باشد.
در صورتی که نیاز به محدودیتی نظیر بیشینه روزها در هر هفته برای گروهی از دانشجویان داشتید، کافی است که یک کلاس با برای آن گروه از دانشجویان اضافه کنید ولی استادی به آن اضافه نکنید و به طول آن را به اندازه مورد نیاز مشخص کنید.
برای اضافه کردن محدودیتهای بیشینه روزها در هفته برای گروهی از دانشجویان و نیز بیشینه روزها برای همه اساتید، در مورد اثرات مشابه آن در محدودیتهای حداقل ساعتهای روزانه برای یک گروه از دانشجویان و حداقل ساعتهای روزانه برای همه اساتید بررسی کنید.
محدودیتهای بیشینه فاصلههای زمانی عبارتند از:
· محدودیت زمانی (اساتید): بیشینه فواصل زمانی هر هفته برای یک استاد
· محدودیت زمانی (اساتید): بیشینه فواصل زمانی هر هفته برای همه اساتید
· محدودیت زمانی (اساتید): بیشینه فواصل زمانی هر روز برای یک استاد
· محدودیت زمانی (اساتید): بیشینه فواصل زمانی هر روز برای همه اساتید
· محدودیت زمانی (دانشجویان): بیشینه فواصل زمانی هر هفته برای یک گروه از دانشجویان
· محدودیت زمانی (دانشجویان): بیشینه فواصل زمانی هر هفته برای همه گروههای دانشجویان
منظور از فاصله زمانی، یک بازه زمانی استفاده نشده بین دو کلاس، بین یک کلاس و یک زمان تفریح و یا بین دو زمان تفریح است. این بدین معناست که مثلا بازههای زمانی اول و آخر که بنا به دلیلی استفاده نمیشوند، فاصله زمانی نیستند(چون بین دو فعالیت قرار نمیگیرند) و یا مثلا زمانهای تفریح که کلاسی در آنها نیست به عنوان فاصلهزمانی محسوب نمیشوند. از اینجا به بعد به جای عبارت فاصله زمانی، از معادل انگلیسی آن، یعنی گپ استفاده میکنم.
در صورتی که به هر دلیلی، نباید بین کلاسهای دانشجویان فاصله باشد، و کلاسها باید به صورت پشت سرهم زمانبندی شوند، محدودیت بیشینه گپها در هر هفته برای همه دانشجویان را برابر صفر قرار دهید و وزن آن را 100% منظور کنید.
اگر قرار باشد برای دانشجویان یک سال گپ داشته باشیم و برای دانشجویان سال دیگر نیازی به گپ نباشد، از محدودیت بیشینه گپها در هرهفته برای یک گروه از دانشجویان استفاده میکنیم و برای گروههایی که نباید گپ داشته باشند، مقدار آن را صفر و وزن آن را 100% در نظر میگیریم.
در صورتی که دانشجویان یک سال اجازه داشته باشند که در هر هفته یک گپ داشته باشند، برای آن سال محدودیت بیشینه گپها در هر هفته برای یک گروه از دانشجویان را با مقدار 1 و درصد وزنی 100% اضافه میکنیم.
در ابتدا با درصد وزنی 100% و مقادیر زیاد بیشینه گپهای هفته برای همه اساتید شروع کنید و سعی کنید تا جدول را تولید کنید، اگر نشد مقدار را مرحله به مرحله کاهش دهید.
به نظر میآید که عادلانه باشد که از محدودیت بیشینه گپها در هر هفته برای همه اساتید استفاده کنیم به جای اینکه برای هر استاد به صورت جداگانه از محدودیت بیشینه گپها در هر هفته برای یک استاد استفاده کنیم.
در صورتی که از محدودیت بیشینه گپها در هر هفته برای یک استاد به جای بیشنیه گپها برای همه اساتید استفاده کردید، مواظب باشید که برای همه اساتید محدودیت را اعمال کنید.
در صورتی که اکثر اساتید، حداکثر 3 گپ در هفته داشته باشند و برخی از آنها 2 گپ، محدودیت بیشینه فاصلههای زمانی برای همه اساتید در هفته را با مقدار 3 و درصد وزنی 100% اعمال کرده ، سپس برای بقیه اساتید که گپ آنها 3 نیست، محدویت بیشینه فواصل زمانی در یک هفته برای ایک استاد را با مقدار 2(یا کمتر) و با وزن 100% وارد کنید.
در صورتی که اکثر اساتید گپ 2 داشته باشند و برخی از آنها گپ 3، دیگر نمیتوان مانند حالت قبل عمل کرد، چون همیشه مقدار کمتر از اولویت بیشتری برخودار است. برایاین کار باید محدودیت بیشینه فواصل زمانی در هفته برای همه اساتید را با مقدار 2 وارد کرد و سپس برای آن دسته از اساتیدی که نیاز به 3گپ دارند یک کلاس با نام درس گپ با طول 1 اضافه کرد. در این حالت در مورد اتاق خانگی اساتید مراقب باشید.
شما محدودیت بیشینه 2 گپ در هفته برای همه اساتید را وارد کردهاید، اما در این حالت برخی از اساتید دو گپ به صورت متوالی در یک روز دارند و شما نمیخواهید این حالت اتفاق بیفتد. برای این منظور، محدودیت بیشینه 1 گپ در هر روز را نیز برای اساتید به طور همزمان وارد کنید.
شاید کسی باشد که بگوید من به محدودیت حداقل تعداد گپها در هر هفته نیاز داردم. در این برنامه محدودیتی با این عنوان و موضوع وجود ندارد، اما دو محدودیت هستند که میتوانند این کار را انجام دهند:
1- استفاده از محدودیت بیشینه ساعتهای متوالی.
2- میتوان مانند حالت قبل از کلاسهای بدون دانشجو استفاده کرد و به همراه آن در صورت نیاز از محدودیت زمان ترجیهی.
محدودیتهای بیشینه ساعتهای متوالی عبارتند از:
· محدودیت زمانی(اساتید): بیشینه ساعتهای متوالی برای یک استاد
· محدودیت زمانی(اساتید): بیشینه ساعتهای متوالی برای همه اساتید
· محدودیت زمانی(دانشجویان): بیشینه ساعتهای متوالی برای یک گروه از دانشجویان
· محدودیت زمانی(دانشجویان): بیشینه ساعتهای متوالی برای همه دانشجویان
این محدودیت میتواند به منظور اعمال حداقل گپها در هر روز به کار برود. در صورتی که یک نفر بیشیینه ساعتهای متوالی با مقدار 4 را بگیرد، این بدین معنی است که وی نمیتواند به بیش از 3 ساعت متوالی تدریس کند. بنابر این در صورتی که او در روز 4 ساعت کار کند، بنابراین او خداقل یک گپ میگیرد. در صورتی که او در هفته 7 ساعت تدریس کند، حداقل 2 گپ در روز میگیرد.
محدودیتهای دانشجویانی که زود شروع میکنند، عبارت انداز:
· محدودیتزمانی(دانشجویان) : گروه دانشجویان که زودتر شروع میکنند
· محدودیتزمانی(دانشجویان) : همه دانشجویان که زودتر شروع میکنند
در صورتی که از این محدودیت استفاده کنید، روز دانشجویان همیشه در اولین بازه زمانی با یک کلاس شروع میشود. ( مگر زمانی که از محدودیت در دسترس نبودن اساتید، دانشجویان و یا اتاقها و زمان تفریح استفاده کرده باشید)
در صورتی که اکثر دانشجویان با سرویس به موسسه میآیند، همه آنها در ساعت اول میرسند و در این ساعت معمولا اجازه گپ داده نمیشوند. به این منظور از محدودیت همه دانشجویان که زودتر شروع میکنند با درصد وزنی 100% استفاده کنید تا همه آنها در اولین بازه زمانی کلاس داشته باشند.
در صورتی که اکثر دانشجویان با سرویس به موسسه میآیند، همه آنها در ساعت اول میرسند و در این ساعت به سال اولیها اجازه گپ داده نمیشود ولی سال بالاییها میتوانند گپ داشته باشند. به این منظور از محدودیت گروه دانشجویان که زودتر شروع میکنند با درصد وزنی 100% استفاده کنید تا همه سال اولیها در اولین بازه زمانی کلاس داشته باشند.
در صورتی که اکثر دانشجویان با سرویس به موسسه میآیند، همه آنها در ساعت اول میرسند و در این ساعت معمولا اجازه گپ داده نمیشوند. اما هیچ کدام از دانشجویان اجازه ندارند زود تر از ساعت چهارم، پنجم و یا ششم به خانه برگردند. به این منظور از محدودیت همه دانشجویان که زودتر شروع میکنند با درصد وزنی 100% استفاده کنید تا همه آنها در اولین بازه زمانی کلاس داشته باشند و همچنین از محدودیت از محدودیت حداقل ساعتهای روزانه برای همه دانشجویان با مقدار 4 و درصد وزنی 100% استفاده کنید.
محدودیت دو کلاس پی در پی عبارت است از:
· محدویت زمانی(کلاسها): 2 کلاس پی در پی اند
حدودیت دو کلاس پی در پی بدین معنی است که دو کلاس در یک روز قرار دارند و هیچی گپ، زمان تفریح یا کلاس دیگری بین آنها نیست.
مثال
دانشجویان ابتدا با یک استاد کلاس زبان تخصصی داشته و بلافاصله پس از آن باید با استاد دیگری کلاس مکالمه زبان داشته باشند.
برای رسیدن به هدف بالا، میتوان محدودیت دو کلاس پی در پی هستند را به آن فعالیتها اضافه کرد.
محدودیت دو کلاس متوالی عبارت است از:
· محدودیت زمانی (کلاسها): 2 کلاس متوالیاند.
معنی محدویت دو کلاس متوالی اند این است که کلاس اول قبل از کلاس دوم زمانبندی شود.(نه الزاما در یک روز)
در صورتی که دانشجویان درس فیزیک و آزمایشگاه آن را بخواهند در یک روز داشته باشند، میتوانی از این محدودیت استفاده کرد.
در استفاده کردن از این محدودیت احتیاط کنید، چرا که اعمال آن باعث میشود قوانین سختی برای تولید جدول اعمال شود.
به نظر من این محدودیت بسیار خوب است، ولی در مورد استفاده نا به جا از آن احتیاط کنید! فرض کنید استادی دو درس ارائه دهد و بخواهد این دو درس به ترتیب باشند(موضوع دو درس مربوط بوده و به هم وابسته اند)، مثلا یکی در شنبه و دیگری در یکشنبه. اعمال این محدودیت با محدودیت دو کلاس متوالی قابل اجرا است ولی مشکلی که درست میشود این است که ممکن است که جدول زمانبندی بسیار مقید شده است. فرض کنید بنا بر دلایلی مانند مریضی، استاد درس نتواند روز دیگری بیاید و به این ترتیب مجبور است کلاس روز دیگر را هم تعطیل کند، چرا که این دروس به هم وابسته اند! برای این کار بهتر است از محدودیت دو کلاس پی در پی استفاده کنید که هر دو کلاس در یک روز باشند.
محدودیت حداقل فاصلههای زمانی(گپ) بین مجموعهای از کلاسها عبارت است از:
· محدودیت زمانی(کلاسها): حداقل فاصلههای زمانی(گپ) بین مجموعه از کلاسها
منظور از محدودیت حداقل فاصلههای زمانی(گپ) بین دو مجموعه ای از کلاسها، به معنی حداقل تعداد بازههای زمانی بین دو کلاس است. بنابراین میتوان این محدودیت را نقطه مقابل محدودیت دو کلاس پی در پی در نظر گرفت.
محدودیتهای زمانیهای ترجیهی عبارت اند از:
· محدودیت زمانی(کلاسها): یک کلاس یک زمان ترجیهی شروع دارد.
· محدودیت زمانی(کلاسها): یک کلاس مجموعهای از بازهای زمانی ترجیهی دارد.
· محدودیت زمانی(کلاسها): مجموعهای از کلاسها، مجموعهای از بازهای زمانی ترجیهی دارند.
· محدودیت زمانی(کلاسها): مجموعهاز زیر کلاسها، مجموعهای از بازهای زمانی ترجیهی دارند.
· محدودیت زمانی(کلاسها): یک کلاس مجموعهای از زمانهای ترجیهی شروع دارد.
· محدودیت زمانی(کلاسها): مجموعهای از کلاسها، مجموعهای از زمانهای شروع ترجیهی دارند.
· محدودیت زمانی(کلاسها): مجموعهای از زیرکلاسها، مجموعهای از زمانهای شروع ترجیهی دارند.
محدودیت زمانهای ترجیهی یک محدودیت بسیار مهم و قدرتمند است، شما با این محدویتها تقریبا توانایی انجام هر کاری را دارید! مخصوصا محدودیت مجموعهاز زیر کلاسها، مجموعهای از بازهای زمانی ترجیهی دارند، بسیار سودمند است. این محدودیت میتواند در مورد کلاسهایی که استاد یکسان دارند، دانشجویان یکسانی دارند و موضوع درسی یا برچسب یکسانی دارند خیلی مفید باشد.
تفاوت میان زمان شروع ترجیهی و بازه زمانی ترجیهی چیست؟
در صورتی که کلاس مربوط به این محدودیتها دارای طول یک باشد، عملا تفاوتی بین آنها نیست، این تفاوت برای زمانی است که طول کلاسها حداقل 2 باشد. به مثال زیر توجه کنید:
1st Period |
allowed |
در صورتی که از محدودیت بازه زمانی ترجیهی استفاد کنید، یک کلاس با طول دو میتواند در بازه اول یا بازه دوم شروع شود، اما اگر از محدودیت زمان ترجیهی شروع کلاس استفاده کنید، کلاس میتواند در بازههای 1، 2، 3 و 5 شروع شود که البته برخی از این بازهها قابل زمانبندی نیستند ( مثلا بازه 3 و 5)، اما برنامه این را جزئ خطا حساب نمیکند.
مثال
دروس اصلی در یک مدرسه 4 بار در هفته تدریس میشوند. ممکن است حالتی انفاق بیفتد که طی آن یک مجموعه از دانش آموزان همیشه یکی از درسهای اصلی خود را در ساعت آخر داشته باشند که نتیجه خوبی ندارد، چرا که دانش آموزان در این زمان همیشه خستهاند و بازدهی کمتری دارند.
برای جلوگیری از این اتفاق میتوان محدودیت مجموعهاز زیر کلاسها، مجموعهای از بازههای زمانی ترجیهی دارند را اضافه کرد. بخش شماره 1 را انتخاب کنید، یک موضوع اصلی را انتخاب کنید، زمانهای ترجیهی کلاسها را در بازههای 1 تا 4 را انتخاب کنید، محدودیت را اضافه کنید، این کار را یک بار دیگر نیز تکرار کنید اما این بار با بخش شماره 2. با این کار امکان ندارد که کلاسها در بازه زمانی پنجم یا بازههای دیرتر قرار بگیرند، با این کار حداقل دو کلاس هستند که در بازه چهارم یا بازههای قبلی قرار دارند. پیشنهاد من برای وزن این محدودیت همان 100% میباشد، اما در صورتی که محدودیت اعمال شده خیلی پیچیده باشد و پیاده کردن آن سخت، میتوان این مقدار را کمتر کرد و یا فقط وزن 100% را برای بخش اول در نظر گرفت. اما اگر تولید جدول همچنان ساده باشد، میتوان برای همه چهار جلسه مختلف کلاس این محدودیت را اعمال کرد. اما در اعمال این سیاست نیز دقت کنید، برخی از جلسات کلاس بهتر است در ساعات پایانی باشند(مانند جلسات حل تمرین گروهی)، لذا نباید همیشه این محدودیت را با این سبک اجرا برای کلاسهای مختلف به کار برد. بنا براین بدیهی است که نباید این محدودیت را برای همه کلاسهای جدول به کار برد، چرا که علاوه بر مشکل ذکر شده، این کار ممکن است سبب غیر قابل تولید شدن جدول نیز بشود. در بسیاری از موارد محدودیت زمان در دسترس بودن استاد نیز میتواند نتیجه مشابه این محودیت را برای ما داشته باشد( و یا محدودیت در دسترس نبودن اتاقها).
در صورتی که یک استاد فقط در یک بازه زمانی خاص میتواند حضور داشته باشد، میتوان از محدودیت زمان شروع ترجیهی برای یک کلاس استفاده کرد.
در همه مدارس، همه گروههای مختلف دانشآموزان حق دارند که در ساعت اول درس ریاضی را داشته باشند. برای این منظور میتوان با استفاده از محدودیت یک کلاس مجموعهای از زمانهای ترجیهی شروع دارد، این امر را میسر کرد.
در صورتی نیاز باشد که یک کلاس با طول 2 در بازههای فرد آغاز شود، میتوان یک برچسب با عنوان "فرد" در نظر گرفت و محدودیت مجموعهای از کلاسها، مجموعهای از زمانهای شروع ترجیهی دارند را برای همه بازههای اول، سوم و پنجم اضافه کرد. در این حالت از محدودیت مجموعهای از کلاسها، مجموعهای از بازههای زمانی ترجیهی دارند استفاده نکنید، چرا که معنی این محدودیت با این مقادیر این میشود که قابلیت اضفه شدن کلاسهایی با طول وجود ندارد!
در صورتی که کلاس الزاما باید در صبح برگزار شود، میتوان یک برچسب با عنوان "صبح"را درست کرد و به آن کلاس نسبت داد، سپس با استفاده از محدودیت مجموعهای از کلاسها، مجموعهای از بازههای زمانی ترجیهی دارند برای اعماب این نظر استفاده کرد.
محدویتهای زمان شروع مشابه عبارتنداز:
· محدودیت زمانی(کلاسها): مجموعهای از کلاسها که دارای زمان شروع مشابهاند (ساعت+روز)
· محدودیت زمانی(کلاسها): مجموعهای از کلاسها که دارای روز شروع مشابهاند (هر ساعتی)
· محدودیت زمانی(کلاسها): مجموعهای از کلاسها که دارای ساعت شروع مشابهاند (هر روزی)
در همه مدارس، همه گروههای مختلف دانشآموزان حق دارند که در ساعت اول درس ریاضی را داشته باشند. برای این منظور میتوان با استفاده از محدودیت مجموعهای از کلاسها که دارای ساعت شروع مشابهاند (هر روزی)، این امر را میسر کرد.
در حالت سادهتر، شما نیازی به محدودیت مجموعهای از کلاسها که دارای زمان شروع مشابهاند (ساعت+روز) ندارید، کافیست همه اساتید و دانشجویان مورد نیاز را به یک کلاس منتقل کنید. اما با نی کار فقط میتوانید یک اتاق بگیرید، در زیر مثالهایی در این باره آمده است:
در کلاسها دانشجویان دختر و پسر وجود دارند، و شما میخواهید که کلاس تربیت بدنی را به صورت جداگانه برای آنها برنامه ریزی کنید. شما این کار را با درست کردن یک دسته جدید میتوانید انجام دهید، اما در صورتی که جدول کاملا پر باشد، این به معنی برگزاری هم زمان دو کلاس میشود. در صورتی که دو کلاس برای آنها در نظر گرفته باشید- با استاد و گروه دانشجویان متفاوت- میتوانید محدودیت مجموعهای از کلاسها که دارای زمان شروع مشابهاند (ساعت+روز) را برای این دو گروه اضافه کنید. این کار در صورتی که تعداد گروهها و کلاسها در سال فرد نباشند، بسیار خوب عمل میکند.
استاد درس ادبیات، در هفته چهار جلسه برای یک گروه از دانشجویان کلاس دارد. اما در یکی از این چهار جلسه، یک استاد دیگر هم برای تدریس به کلاس میآید. بنابراین شما نمیتوانید این استاد را به کلاس اضافه کنید، چون در جلسه دیگر در جای دیگری مشغول به تدریس است. برایاین کار دو راه حل وجود دارد:
راه اول: اضافه کردن یک کلاس دیگر. در این کلاس استاد دیگر هم به کلاس اضافه میشود و با استفاده از محدودیت مجموعهای از کلاسها که دارای زمان شروع مشابهاند (ساعت+روز)، میتوان آن را با یکی از 4 جلیه دیگر کلاس منطبق کرد. در صورتی که یکی از استاید دارای کلاس خانگی باشد، این کار موجب میشود که استاد دیگر نیز در همان اتاق تدریس کند.
راه دوم: یک کلاس با هر دو استاد به طول 1 اضافه کنید. کلاس دوم را برای درس ادبیات با استاد آن درس و طول 3 هم اضافه کنید. کلاس تکی را به محدودیت حداقل تعداد روزها برای کلاسها اخیر اضافه کنید.
محدویت نداشتن همپوشانی عبارت است از:
· محدودیت زمانی(کلاسها): مجموعهای از کلاسها که همپوشانی ندارند
کلاسهایی که دارای استاد مشترک، اتاق مشترک و یا مجموعه دانشجویان مشترک هستند، هیچگاه مشکل همپوشانی ندارند. ( با توجه به محدودیتهای اساسی اجباری زمانی و مکانی). بنابر این تنها در موارد خاص از این محدودیت استفاده میشود.
مثال:
شما دو نفر دارید که بسیار ماهر هستند و دارای مهارت خاصی میباشند و میتوانید که یکی از آنها در بعضی از زمانها در دسترس نیست(مثلا مریض است) و لذا باید فرد دیگر کار او را انجام دهد. بدیهی است که این کار فقط زمانی امکان دارد که شخص دوم در آن زمان کلاس دیگری نداشته باشد. برای این کار از محدودیت مجموعهای از کلاسها که همپوشانی ندارند میتوان استفاده کرد.
محدودیتهای اتاق خانگی عبارتند از:
· محدودیت مکانی(اساتید): استادی که اتاق خانگی دارد
· محدودیت مکانی(اساتید): استادی که مجموعهای از اتاقهای خانگی دارد
· محدودیت مکانی(اساتید): مجموعهای از دانشجویان که یک اتاق خانگی دارند.
· محدودیت مکانی(اساتید): مجموعهای از دانشجویان که مجموعهای از اتاقهای خانگی دارند.
اتاق خانگی به معنی اتاق پیشفرض است و زمانی اعمال میشود که محدودیت اتاق ترجیهی ناشته باشیم.
بسیاری از مؤسسات برای گروهها یا اساتید اتاق خانگی دارند. در صورتی که همه گروههای دانشجویی ( و یا همه اساتید) اتاق خانگی داشته باشند، نیازی به اضافه کردن محدودیت اتاق خانگی نیست، چون در این حالت هیچ گاه تداخلی روی نمیدهد. درصورتی محدودیت اتاق خانگی را اضافه کنید که برخی از گروهها (یا اساتید) دارای اتاق مشترک باشند و یا شما بخواهید کلاس خانگی را در جدول نشان دهید.
درصورت که یک کلاس بیش از یک استااد و یا بیش از یک گروه از دانشجویان داشته باشد، برنامه نمیتواند از محدودیت اتاق خانگی استفاده کند، در این حالت باید از محدودیت اتاق ترجیهی استفاده کنید.
از محدودیت اتاق خانگی استاد و محدودیت اتاق خانگی دانجویان در یک زمان استفاده نکنید، این کار ممکن است موجب غیر قابل تولید شدن جدول شود.
قبل از اضافه کردن محدودیت اتاق خانگی، در باره اضافه کردن محدویت اتاق ترجیهی هم فکر کنید، شاید این محدویت مناسب تر باشد.
مثال:
همه اساتید باید اتاق خانگی داشته باشند اما متاسفانه تعداد اساتید از تعداد اتاقها در این مؤسسه بیشتر است. مؤسسه 5 روز کاری و در هر روز 6 بازه زمانی دارد. بنا بر این مؤسسه در طول هفته دارای 30 بازه زمانی است. حالا تعداد بازههایی را که هر استاد در طول هفته در اتاق خانگیاش درس میدهد بشمارید. خواهید دید که برخی از اساتید ساعتهای زیادی را در اتاق خانگی خود درس میدهند ولی اساتیدی هم وجود دارند که ساعتهای کمتری در اتاق خانگی خود حضور دارند. این مسئله ممکن است به خاطر نیمه وقت بودن آن اساتید باشد و یا ممکن است این اساتید یک درس را در اتاق خانگی خود و درس دیگری را در آزمایشگاه تدریس کنند. برخی از اساتید هم کلا نیازی به اتاق خانگی ندارند، چرا که درس آنها در باید در یک اتاق خاص تدریس شود (مثلا آزمایشگاه). حالا دوباره تعداد اساتیدی که اتاق خانگی نیاز دارند را بشمارید، شاید در حال حاضر تعداد اتاقها کافی باشد. اگذ نبود میتوانید یکی از دوحالت زیر را بررسی کنید:
حالت اول: کنترل کنید که آیا دو استاد(یا بیشتر) میتوانند یک اتاق را به صورت مشترکی به عنوان اتاق خانگی استفاده کنند ؟ در این حالت نباید مجموع بیشینه ساعتهایی که این اساتید درس میدهند از بیشینه ساعتهای مؤسسه بیشتر باشد و نیز در یک زمان هم تدریس نککند. در این حالت میتوانید به این اساتید اتاق مشترک بدهید. (با استفاده از محدودیت استادی که اتاق خانگی دارد)
حالت دوم: شاید شما تا این اندازه خوش شانس نباشید که بتوانید به برخی از اساتید اتاق مشترک بدهید! در این حالت یک (یا بیشتر) استاد نیازمند دو(یا بیشتر) کلاس خانگی است. (محدودیت استادی که مجموعهای از اتاقهای خانگی دارد). قبل از استفاده از این استفاده از این محدودیت، در باره استفاده کردن از محدودیت یک کلاس که یک اتاقی ترجیهی دارد فکر کنید، شاید با این محدودیت هم بتوان مشکل ر حل کرد.
در باره اساتیدی که در یک کاتاق مخصوص تدریس میکنند کنترل کنید که آیا میتوان اتاق خانگی به آنها اختصاص داد یا خیر. فرض کنید یک استاد درس ریاضی و فیزیک1 تدریس مسکند و استاد دیگر درس زبان و فیزیک 2. دروس فیزیک باید در آزمایشگاه ارائه شوند و در نتیجه در هر زمان فقط یک استاد میتواند در آزمایشگاه تدرس کند. حالا اگر یک اتاق را به عنوان اتاق خانگی این اساتید برای تدریس دو درس ریاضی و زبان در نظر بگیرید، وقتی یک استاد در آزمایشگاه است، استاد دیگر میتواند در اتاق خانگی مشترک تدریس کند و بالعکس.
درمواردی که شما یک اتاق مخصوص را با دانشکده دیگری به صورت مشترک استفاده میکنید، احتیاط کنید، در این موارد بایذ از محدودیت در دسترس نبودن اتاق نیز استفاده کنید. مثلا یک آزمایشگاه فیزیک وجود دارد ولی شما نمیتوانید همیشه از آن استفاده کنید، چرا که در برخی از زمانها دانشکده دیگر باید از این اتاق استفاده کند.
در برخی موارد بهتر است که اساتیدی که دارای کمترین تعداد بازههای زمانی تدریس درس در اتاق خانگی هستند، با هم در یک اتاق شریک شوند.
همانند محدودیتهای مروبط به زمان شروع مشابه، محدودیتهای اتاق ترجیهی عبارتند از:
· محدودیت مکانی(درس): درسی که یک اتاق ترجیهی دارد.
· محدودیت مکانی(درس): درسی که مجموعهای از اتاقهای ترجیهی دارد.
· محدودیت مکانی(درس+کلاس): برچسب درس + کلاس که یک اتاق ترجیهی دارد.
· محدودیت مکانی(درس+کلاس): برچسب درس + کلاس که مجموعهای از اتاقهای ترجیهی دارد.
· محدودیت مکانی(کلاس): کلاسی که یک اتاق ترجیهی دارد.
· محدودیت مکانی(کلاس): کلاسی که مجموعهای اتاق ترجیهی دارد.
محدودیت اتاق ترجیهی دارای اولویت بیشتری نسبت به محدودیت اتاق خانگی است. این محدودیت معمولا برای اتاقهای خاص استفاده میشود.
مثال
درس شیمی همیشه باید در آزمایشگاه شیمی ارائه شود. محدودیت درسی که یک اتاق ترجیهی دارد را در صورتی که تنها یک آزمایشگاه شیمی دارید اضافه کنید و در صورتی که بیش از یک آزمایشگاه شیمی دارید از محدودیت درسی که مجموعهای از اتاقهای ترجیهی دارد استفاده کنید.
درس فیزیک همیشه باید در آزمایشگاه فیزیک اراوه شود، ولی در صورتی که این آزمایشگاه شلوف باشد میتوان در آزمایشگاه شیمی هم آن را ارائه داد. درحال حاضر امکانی برای پیاده سازی این حالت وجود ندارد، اما شرایط مشابهی قابل پیاده سازی است: درس فیزیک باید همیشه در آزمایشگاه فیزیک یا آزمایشگاه شیمی ارائه شود. برای این حالت محدودیت درسی که مجموعهای از اتاقهای ترجیهی دارد را اضافه کنید. اما با این کار ممکن است حتی در حالتی که آزمایشگاه فیزیک خالی است، آزمایشگاه شیمی اختصاص داده شود. برای جلوگیری از این اتفاق باید به صورتی دستی خودتان کنترل کنید.
درس زیست شناسی برای سالهای 3 تا 7 باید همیشه در آزمایشگاه زیست ارائه شود، اما نه برای سالهای 4 و 6. برای همه سالهای 3 تا 7 برجسبی با عنوان "نیازمند اتاق" اضافه کنید. محدودیت برچسب درس + کلاس که یک اتاق ترجیهی دارد را با وزن 100% اضافه کنید. سپس محدودیت درسی که یک اتاق ترجیهی دارد را با وزن 100% اضافه کنید.
فرض کنید که شما باید چندین اتاق را برای یک کلاس اختصاص دهید. چند کلاس با یک موضوع و احتمالا یک استاد و بدون گروهی از دانشجویان اضافه کنید. محدودیت مجموعهای از کلاسها که دارای زمان شروع مشابهاند (ساعت+روز) را برای اتصال همه کلاسها به هم اضافه کنید. شما نیازی به اضافه کردن استاد ندارید ولی اضافه کردن آن میتواند در کنترل کردن نهایی جدول مفید باشد.
یک کلاس در هفته چهار جلسه دارد. تنها یکی از این چهار جلسه نیازمند آزمایشگاه است و در کلاس خانگی برگزار نمیشود. برای این منظور کلاس را به حالت عادی اضافه کنید و محدودیت کلاسی که مجموعهای اتاق ترجیهی دارد را برای یکی از این جلسات کلاس اضافه کنید.
محدودیتهای مربوط به ساختمان عبارتند از:
· محدودیت مکانی(اساتید): بیشینه تغییرات بین ساختمانها در یک روز برای یک استاد
· محدودیت مکانی(اساتید): بیشینه تغییرات بین ساختمانها در یک روز برای همه اساتید
· محدودیت مکانی(اساتید): بیشینه تغییرات بین ساختمانها در یک هفته برای یک استاد
· محدودیت مکانی(اساتید): بیشینه تغییرات بین ساختمانها در یک هفته برای همه اساتید
· محدودیت مکانی(اساتید): حداقل فاصلههای زمانی بین تغییرات ساختمان برای یک استاد
· محدودیت مکانی(اساتید): حداقل فاصلههای زمانی بین تغییرات ساختمان برای همه اساتید
· محدودیت مکانی(دانشجویان): بیشینه تغییرات بین ساختمانها در یک روز برای یک مجموعه از دانشجویان
· محدودیت مکانی(دانشجویان): بیشینه تغییرات بین ساختمانها در یک روز برای همه مجموعههای دانشجویان
· محدودیت مکانی(دانشجویان): بیشینه تغییرات بین ساختمانها در یک هفته برای یک مجموعه از دانشجویان
· محدودیت مکانی(دانشجویان): بیشینه تغییرات بین ساختمانها در یک هفته برای همه مجموعههای دانشجویان
· محدودیت مکانی(دانشجویان): حداقل فاصلههای زمانی بین تغییرات ساختمان برای یک مجموعه از دانشجویان
· محدودیت مکانی(دانشجویان): حداقل فاصلههای زمانی بین تغییرات ساختمان برای همه مجموعههای دانشجویان
این محدودیتها تنها زمانی استفاده میشود که بیش از یک ساختمان داشته باشیم
مثال
فرض کنید که استاد یک درس را را باید در یک ساختمان و درس دیگر را در اتاقی در ساختمان دیگر ارائه دهد، در صورتی که این ساختمان ها با هم فاصله داشته باشد و کلاسها هم پشت سر هم باشد، شاید استاد نتواند به موقع در کلاس بعدی حاضر شود. برای حل مشکل میتوان از محدودیت حداقل فاصلههای زمانی بین تغییرات ساختمان برای یک استاد استفاده کرد.
در صورتی که مشکل بالا برای همه اساتید وجود داشته باشد، یعنی همه اساتید کلاسهایی در ساختمانهای مختلف داشته باشند، میتوان از محدودیت حداقل فاصلههای زمانی بین تغییرات ساختمان برای همه اساتید استفاده کرد. به این ترتیب کلاسها بلافاصله پشت سر هم قرار نمیگیرند.
مسئله بالا ممکن است برای گروههای دانشجویان هم اتفاق بیفتد، بنابراین میتوان محدودیتهای متناظر حداقل فاصلههای زمانی بین تغییرات ساختمان برای یک مجموعه از دانشجویان و نیز حداقل فاصلههای زمانی بین تغییرات ساختمان برای همه مجموعههای دانشجویان را به کار برد.
با استفاده از این قسمت قبل از تولید جدول زمانبندی، میتوانید اطلاعات مربوط به اساتید و دانشجویان را کنترل کنید. با استفاده از این گزینه میتوانید از درست اضافه شدن همه کلاسها مطلع شوید. همچنین برای اضافه کردن محدودیت هم استفاده از آمار وضعیت موجود میتواند مفید باشد.
شاید همه جداول زمانبندی قابل تولید نباشند، در صورتی که برنامه نتوانست جدول را تولید کند، محدودیتها را کنترل کنید و برخی از آنها را تغییر داده یا حذف کنید. هیچ گاه تعداد زیادی محدودیت را یکباره اضافه نکنید و هر چند وقت یک بار یک فایل جدید ذخیره کنید تا از فایلهای مراحل قبل به عنوان پشتیبان بتوانید استفاده کنید.
دو راه مختلف برای تولید جدول وجود دارد:
· جدول زمانبندی: تولید جدول جدید
· جدول زمانبندی: تولید حالتهای مختلف
تولید یک جدول یک فرایند کاملا تصادفی است. بنا بر این ممکن است تولید یک جدول چند ثانیه زمان ببرد ولی تولید جدول دیگر با همان خصوصیات زمان بیشتری را نیاز داشته باشد. همچنین نتیجه جدول در دفعات مختلف تولید احتمالا با یکدیگر فرق خواهد داشت، مگر در حالتهایی که محدودیتهای کاملا محکمی وضع شده باشد.
در حالت اول، تنها یک جدول تولید میشود. اما در حالت دوم با توجه به خواسته کاربر، به تعداد دلخواه جدول تولید میشود.
در صورتی که از گزینه تولید یک جدول استفاده کردید، میتوانید نتایج جدول را به صورت زیر ببینید:
جدول زمانبندی: دیدن(دانشجویان)
جدول زمانبندی: دیدن(اساتید)
جدول زمانبندی: دیدن(اتاقها)
همچنین میتوانید نتیجه را در پو[15]شه نتایج[16] در شاخه نصب برنامه مشاهده کنید. دیدن نتایج در آنها راحت تر نیز است. در آنجا جدولهای مختلفی با خصوصیات مختلف و نیز کاربردهای گوناگون قرار دارد.
توصیه میکنم که قبل از تولید جدول چهار کار زیر را انجام دهید:
1. از قبل با اساتید در مورد همه محدودیتهایی که میخواهید اعمال کنید هماهنگ کنید. شاید در برخی از موارد تغییراتی لازم باشد.
2. فایل conflict.txt را که در پوشه نتایج قرار دارد برای آگاهی از تداخلها بررسی کنید.
3.
در
صورتی که مؤسسه بخواهد از تاخیر اساتید در کلاسها
جلوگیری کند، میتوانید فایل Teachers' Free Periods
را که در پوشه نتایج است بررسی
کنید.
4. قبل از انتشار رسمی جدول و مطلع کردن دنشجویان، خوب است که اساتید با آن توافق کرده و نسخهای از آن را برای بررسی بیشتر داشته باشند.
[1] محیط متن باز تولید نرم افزار که این نرم افزار با استفاده از آن تولید شده است. برای اطلاعات بیشتر میتوانید به qt.nokia.com مراجعه کنید
[2] tag
[3] gap
[4] heuristic algorithm
[5] backtrack
[6] conflict
[7] undo
[8] comment
[9] period
[10] class
[11] category
[12] break
[13] gap
[14] gap
[15] folder
[16] result