• 0
minix

ممكن المساعدة في طرق حل مشكلة جدول الدروس الاسبوعي ؟

سؤال

:wub: اخوان احتاج الى اي شئ يخدم في دراسة مشكلة جدول الدروس الاسبوعي

وهو مشروع التخرج

احتاج الى اي مقالة او برنامج او كود يساعدني في التعامل مع بيانات مدخلة وهي عبارة عن الدروس والبرنامج يقوم بطريقة توزيعها مع مراعاة الشروط وهي عدم التكرار والتضارب

سؤال اضافي .. ماهو اسم المشكلة علميا ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

14 إجابة على هذا السؤال .

  • 0

اخوان احتاج الى اي شئ يخدم في دراسة مشكلة جدول الدروس الاسبوعي

وهو مشروع التخرج

احتاج الى اي مقالة او برنامج او كود يساعدني في التعامل مع بيانات مدخلة وهي عبارة عن الدروس والبرنامج يقوم بطريقة توزيعها مع مراعاة الشروط وهي عدم التكرار والتضارب

سؤال اضافي .. ماهو اسم المشكلة علميا ؟

السلام عليكم ورحمة الله وبركاته

قمت بعمل مشروع فى هذا المجال بعنوان (برنامج الخطة الدراسية)

وهذا رابط البرنامج (مجانى مفتوح المصدر)

http://www.kutub.info/library/book/2015

البرنامج يقوم بعمل جدول المواد الدراسية ... والمحاضرين .... والمكان.... والزمان

حيث يتم وضع المواعيد من قبل المستخدم ويقوم البرنامج بالكشف عن التضارب والتاكد ان المحاضر متفرغ ... المكان فاضى .... وهكذا

طبعا سبب ان البرنامج لايوزع بشكل الى 100% هو طلب المستخدمين منى ذلك (حتى لا ادخل فى متاهة معهم) ... وان يكون البرنامج مفيد فى الكشف عن التعارض والطباعة فقط

حيث ان عملية التوزيع تدخل فيها عوامل كثيرة تتغير بسرعة مثل دكتور يريد ان ياتى فى ايام معينة واخر يرد ان ياتى يوم واحد فقط

ده غير ان فى مواد يكون لها ساعات كثيرة وفى الواقع تاخذ ساعات اقل ويتم افراغ المكان لمواد اخرى

كل كلية تدير هذا الامر بشكل خاص بها

من الناحية العملية ... هذا برنامج واقعى

لكن من الناحية العلمية ... انا غير راضى بما صنعته لان البرنامج يمكن ان يحقق كل شىء بشكل الى اذا توفر لى الوقت المناسب لعمل ذلك

لكن كنت وقتها مضغوط جدا فى الوقت ومطالب بانجاز محدد فى وقت محدد

اتمنى البرنامج يفيدك

والله الموفق

تم تعديل بواسطه PWCT Maker
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك استاذ

لكن المشكلة انه الكتيب الذي اصفته حضرتك يتكلم بالVFP

وهذا لم اتعامل معه

ساستفيد من الكتيب علميا اكثر من برمجيا

لكن كيف توصلت الى صنع البرنامج ؟ الاساس الذي استفدت منه ارجو ان ترفقه لي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لكن المشكلة انه الكتيب الذي اصفته حضرتك يتكلم بالVFP

نعم هذا صحيح.... ولكن يفضل ان تستخدم تقنيات احدث من ال VFP لانها توقفت عن التطوير

لكن كيف توصلت الى صنع البرنامج ؟ الاساس الذي استفدت منه ارجو ان ترفقه لي

البرنامج لايشتمل على اكثر من تطبيق لاساسيات البرمجة (هياكل البيانات Data Structure وجمل التحكم Control Structure )

بشكل متسلسل ومنطقى غير معقد ... وغير مستخدم لخوارزمية شهيرة

فقط احتمال ... احتمال ... يتم تغطيته وهكذا

اقترح عليك دراسة اساسيات البرمجة + محاولة التفكير فى استخدام هذه الاساسيات فى التنفيذ

وسوف تجد المنتدى ملىء بالعديد من الدروس والشروحات التى تفيدك باذن الله

نقطة اخى ... لا ارى فى الموضوع ذكاء صناعى .... فالمسالة فقط مجرد تحكم بشكل متوقع ومتسلسل لان الاحتمالات محددة وقليلة ومحصورة

والله الموفق

-1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
البرنامج لايشتمل على اكثر من تطبيق لاساسيات البرمجة (هياكل البيانات Data Structure وجمل التحكم Control Structure )

بشكل متسلسل ومنطقى غير معقد ... وغير مستخدم لخوارزمية شهيرة

فقط احتمال ... احتمال ... يتم تغطيته وهكذا

نقطة اخى ... لا ارى فى الموضوع ذكاء صناعى .... فالمسالة فقط مجرد تحكم بشكل متوقع ومتسلسل لان الاحتمالات محددة وقليلة ومحصورة

شكرا لك استاذ

كنت اظن ان المسالة تحتاج اساليب البحث الذكية لانها تتطلب شرطين كما تعلم وهو شرط عدم التكرار وعدم التضارب

وشبهتها بمشكلة الوزراء الثمانية ايضا عملية بحث وترتيب حسب شروط معينة

ساسمع نصيحتك وادرس اساسيات البرمجة ولكن قصدت لك سابقا ماهي المقالات التي اعتمد فيها على دراسة هذا المفهوم وليس دراسة البرمجة نفسها

او الفوكس برو

انا ابرمج تطبيقات فيجول سي شارب وبيسك دوت نت

لكن ما احتاجه هو فهم طريقة التعامل مع المواد لكي تظهر دروس متكاملة وفق شروط

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

سؤال اضافي .. ماهو اسم المشكلة علميا ؟

اعتقد اخي انك تتكلم عن نوع من المشاكل يسمى ب Assignment Problems

قطة اخى ... لا ارى فى الموضوع ذكاء صناعى .... فالمسالة فقط مجرد تحكم بشكل متوقع ومتسلسل لان الاحتمالات محددة وقليلة ومحصورة

بالعكس هذه احدى المشكلات المعروفه ب Constrained Optimization problems والتي تندرج تحت الذكاء الاصطناعي AI

كذلك الاحتمالات ليست محصوره عندما يكون عندك عدد 1000 استاذ و عدد اكبر من الكورسات او الكلاسات ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كذلك الاحتمالات ليست محصوره عندما يكون عندك عدد 1000 استاذ و عدد اكبر من الكورسات او الكلاسات ..

للتوضيح كنت اقصد بالاحتمالات المحددة ... كل مايتطلب جملة if لمعالجته

واحتمالات التعارض المحددة التى قابلتنى كانت على مااتذكر

1 - ان يكون الاستاذ اساسا يعطى محاضرة فى نفس الوقت

2 - ان يكون هناك محاضرة فى نفس المدرج

3 - ان يكون الكلاس او طلاب الفرقة لديهم محاضرة فى نفس الوقت

وهكذا

اى احتمالات التعارض المحددة التى اقصدها (التعارض فى المكان والزمان والاساتذة )

اما كون عدد الاساتذة كبير او المدرجات او الكورسات .... فيتم معالجة ذلك بجمل for حسب العدد

وبداخلها جمل if تدرس الاحتمالات من خلال فحص مصفوفة يتم تحديثها بعد كل عملية توزيع

والله الموفق

تم تعديل بواسطه PWCT Maker
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بالعكس هذه احدى المشكلات المعروفه ب Constrained Optimization problems والتي تندرج تحت الذكاء الاصطناعي AI

كلام سليم

هذا التوع من المشاكل يحل بأكثر من خوارزميه مثل الخوارزميه الجينيه او مستعمرة النمل او مستعمرة النحل وغيرها الكثير ..

ما عليك الا ان تقوم بعمل حساب منطقي لما هي القيود الصعبه والقيود السهله لديك ..

القيود الصعبه :- هي القيود التي يجب ان تحل نهائيا اثناء عمل البرنامج كالتضاربات بين محاظرات المدرسين مثل ان لا يكون للمدرس محاظرتين في نفس الفتره الزمنيه وفي نفس اليوم , او ان لا يكون هنالك محاظرتين في نفس الغرفه وفي نفس الفتره الزمنيه وغيرها من القيود المهمه والصعبه وهذه القيود يجب حلها بشكل اساسي ويجب ان تظهر في نهاية البرنامج لذالك تحل في بداية عمل النظام وهذا ما يسمى خوارزمية البناء للحل الاولي والتي تستطيع ان تعملها بأي طريقه تريد , حتى انه بأمكانك عملها بشكل ثابت ..

القيود السهله :- وهي القيود التي تريد ان تقلل منها اثناء عمل البرنامج مثل ان لا يكون لنفس المدرس اكثر من ثلاث محاظرات متتاليه في نفس اليوم او ان لا يكون للمدرس محاظره منفرده في اليوم وغير ذالك من القيود ولكي تتطلع اكثر تابع هذا الرابط الخوارزميه الجينيه

موجود فيه بعض الشروحات عن مشكلة جدولة المواد ..

هنالك الكثير من الخوارزميات تابع الرابط هذا للاخ الدكتور عماد حمدي حل مشكلة اضطراب جدول مواعيد الرحلات الجوية باستخدام الـ Meta-heuristics Solving the flight perturbation problem with meta-heuristics

وراجع القسم جيدا هنالك الكثير من الامور والشروحات التي تفيدك في هذا الموضوع ..

بالتوفيق

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

للتوضيح كنت اقصد بالاحتمالات المحددة ... كل مايتطلب جملة if لمعالجته

واحتمالات التعارض المحددة التى قابلتنى كانت على مااتذكر

1 - ان يكون الاستاذ اساسا يعطى محاضرة فى نفس الوقت

2 - ان يكون هناك محاضرة فى نفس المدرج

3 - ان يكون الكلاس او طلاب الفرقة لديهم محاضرة فى نفس الوقت

وهكذا

اى احتمالات التعارض المحددة التى اقصدها (التعارض فى المكان والزمان والاساتذة )

اما كون عدد الاساتذة كبير او المدرجات او الكورسات .... فيتم معالجة ذلك بجمل for حسب العدد

وبداخلها جمل if تدرس الاحتمالات من خلال فحص مصفوفة يتم تحديثها بعد كل عملية توزيع

اخي الكريم معروف ان حل هذا النوع من المشكلات هو NP-hard اتحدث بالعموم هنا ..

كذلك ان الطريقه التقليديه بالبرمجه لحل هذا النوع من المشاكل ليس الافضل بل وغير مجدي في احيان كثيره ..

فالافضل هنا هو شرح المشكله والسؤال عن الحل declarative paradigm

بدلا من عرض الsequence steps لحل المشكله imperative paradigm

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طيب اخي عيسى لوكان الامر كذلك

اعطني ما اعتمد عليه في العمل

يعني مقالات او كتيبات او ما استيطع ان اعتمد عليه في انجاز مشروعي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا اخي اقسم بالله العلي العظيم انه موضوعك هكذا نزل ضغطي :sad: كتبت اجابه الك ومع الاسف الجهاز فصل مرتين وليس مره واحده :angry: .. ومع ذالك لن ايأس

---------

اولا :- نظام جدولة المواعيد الدراسيه هو عباره عن نظام يقوم بتوزيع الدروس على الغرف والفترات الزمنيه في الاسبوع الدراسي ..

حاول ان ترسم شكل للجدول يحتوي على الايام والفترات الزمنيه والغرف , وقم بمحاولة توزيع الدروس بشكل يوضح لك كيفية بناء النظام , كنت قد كتبت لك سابقا عن القيود الصعبه والقيود السهله راجع المشاركه السابقه , هذه القيود تتوزع الى نوعين قيودسهله وقيود صعبه ..

النظام المفروض يعمل بجزئيين :- اول جزء حل مشكلة القيود الصعبه Hard constraints وجعلها صفر اي لا يوجد اي اكراهات ..

والجزء الثاني حل القيود السهله Soft Constraints ومحاولة التخفيف منها ..

---

* الجزء الاول :- وضع الدروس في الفترات الزمنيه بالاعتماد على شروط وقيود مهمه تسمى ( Hard Constraints) ولازم حلها مئه بالمئه في اول مرحله من النظام مثل :-

كل المحاضرات التابعه للماده يجب ان تجدول , بمعنى انها يجب ان توضع في فتره زمنيه معينه , اذا لم تجدول اي ماده سيكون هنالك عملية اكراه او ما يسمى Violation بمقدار نقطه واحده ( ولك ان تحدد الارقام بناء على الجامعه او المدرسه او بأمكانك عمل استبان )

مثال اخر :-

لا يجب ان تتواجد محاضرتين في نفس الفتره ونفس الغرفه , وفي حال حصل هذا الامر يكون هنالك violation بمقدار نقطه واحده .. يعني مثلا لو كان عنا محاضره في فتره زمنيه وفي غرفه معينه فاذا تواجد هنالك محاضره ثانيه في نفس الغرفه ونفس الفتره تحسب كا اكراه بمقادار واحد violation .

كما اشرت ان النظام يتكون من جزئين الاول يسمى الحصول على الحل المبدأي initial solution والذي يكون فيه لا وجود للقيود الصعبه المهمه ( Hard Constrains ) وطبعا هنالك العديد من الامور والطرق لحلها ولكن تستطيع ان تختار اي طريقه تريدها اهم شيء ان نحصل على جدول لا يحتوي على اي اكراهات من النوع الصعب ( Hard Constraints ) ثم بعد ان نحصل على هذا الحل المبدأي او الجدول الخالي من كل هذه التظاربات ننتقل الى الخطوه الثانيه والذي سوف نطبق فيها الخوارزميه لكي نقوم بتحسين وتقليل عدد او مشاكل القيود السهله ( Soft Constraints )

يوجد امر مهم جدا يجب ان نعمله لانه يعتبر هو الركيزه الاساسيه التي سوف نكمل ونستطيع عمل باقي الامور عليها ..

كما اشرت سابقا النظام الهدف منه جدولة المحاضرات باقل عدد ممكن من القيود السهله ( Soft constraints ) وبدون اي تواجد للقيود الصعبه ( Hard Constraints ) , لذالك في هذه الحاله نعطي كل قيد سهل وصعب رقم معين حسب اهمية وصعوبة حله لكي نحصل على قيمة التكلفه او الفتنس للجدول وتساعدنا في حل النظام ..ن , حدد لكل قيد صعب وسهل في حال ضهوره رقم معين يعتبر كوزن يجب التخفيف منه للقيود السهله وحله نهائيا للقيود الصعبه , يعني يجب ان تكون حل القيود الصعبه بعد اول جزء صفر وايظا اثناء عمل النظام لا يجب ان تظهر ..

ببساطه اول قيد مثلا ان لا يكون محاضرتين في نفس الفتره الزمنيه وفي نفس الغرفه لذالك عند حصول هذا القيد او هذه المشكله على سبيل المثال نقوم باحتساب قيمة تسمى اكراه ونعطيها رقم 1 وهذا قيد صعب .. ..

ونفس الامر للقيود السهله..

* الجزء الثاني :- حل والتخفيف من القيود السهله ( Soft Constraints )

مثال على القيود السهله لكل محاضره يجب ان يكون عدد الطلبه مساوي او اقل من سعة الغرفه ( مقاعد الغرفه يساوي او اقل من عدد الطلاب المسموح لهم في هذه المحاضره التابعه لماده معينه ) ..

مثال اخر :- المحاضرات التابعه لنفس المجموعه او المنهاج الدراسي , يجب ان تكون متقاربه لبعضها البعض , بمعنى لو كان لدينا محاضرتين تابعتين لنفس المنهاج وكانت اول محاضره في اول فتره في اليوم والمحاضره الثانيه التابعه لنفس المنهاج في اخر فتره زمنيه في اليوم يكون لدينا هنا اكراه , بمعنى انه كل محاضره تكون منفرده وبعيده عن المحاضره الثانيه التي يجمعهما نفس المنهاج تحسب لها نقطتان كأكراه . ومن ثم تطبق الخوارزميه التي تريد ولكي تحصل وتعرف انواع هذه الخوارزميات تستطيع ان تتابع المشاركه السابقه والتي اشرت بها الى شرح قام به الاخ الدكتور عماد , وايظا شرح الخوارزميه الجينيه ..

-----------&&&&&---------

شرح طريقة حساب الكوست او الفتنس فنكشن للجدول او ما يسمى مقياس الكفائه ..

ببساطه لنفرض مثلا اننا لدينا القيد السهل الذي نرغب في تحسينه وهو ان لا يكون مادتنين لنفس الدفعه في نفس الفتره الزمنيه ( طبعا وفي غرف مختلفه لانه اذا كانت مادتين في نفس الغرفه وفي نفس الفتره الزمنيه تكون دائما قيد صعب يجب حله نهائيا )

اذا لنفرض ان شكل الجدول كان كالتالي :-

هذا مثلا جدول ليوم واحد من الاسبوع :- الاثنين مثلا

post-168424-066565600 1285801237_thumb.j

اذا الان نريد ان نحسب قيمة الفتنس فنكشن او مقدار الكفائه :-

هنا لاحظ انه لنفس المدرس 2 محاضرتين في نفس الفتره الزمنيه بالتالي هنا يكون لدينا قيد صعب وتكون قيمته 10 حسب القيمة الثابته التي نعطيها للقيود الصعبه والتي ستكون نفس الشيء 10 وهذه القيود لا يجب ان تظهر في الجزء الثاني من النظام بمعنى اننا نكون قد انتهينا منها من غير رجعه في الجزء الاول من النظام .

ايظا في الفتره الزمنيه 9 -10 لنفرض ان الماده 7 والماده 11 لنفس المجموعه من الطلبه ( الدفعه والتخصص في السنه الدراسيه ) وهما في نفس الفتره الزمنيه فهنا يكون لدينا قيد سهل نحاول حله او تحسينه في الجزء الثاني من النظام من خلال التبديلات وتطبيق الخوارزميه لذا بما ان هذا القيد موجود اذا يكون لدينا قيد سهل قيمته 5 مثلا حسب ما اعطيناها من قيمة في الشاشه الرئيسيه فبعض القيود السهله يكون لها قيم مثلا 3 او 2 او 1 ... من 1 الى 5 حسب اهمية القيد ..

اذا مثل ما لاحظنا من خلال المثال السابق نريد ان نحسب قيمة الفتنس او التكلفه

( Costs ) للجدول كامل فتكون :-

10 + 5 = 15 نقطه ..

ومن هنا يكون عمل الخوارزمية والتبديلات للتقليل من هذا الرقم قد الامكان ..

ونفس الامر طبعا بالنسبه لبقية القيود السهله والصعبه ..

ف يالمرفقات ورقه بحثيه تشرح الموضوع وبعض الخوارزميات بها ..

لكي تسهل عليك البحث تستطيع استخدام كلمات البحث هذه وستجد الكثير الكثير الكثر من الابحاث والخوارزميات والشروح التي عملت على هذا النوع من المشاكل :-

course timetable او University course timetabling او school timetable problem

بالتوفيق ان شاء الله ..

12.pdf

3

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

نقطة اخى ... لا ارى فى الموضوع ذكاء صناعى .... فالمسالة فقط مجرد تحكم بشكل متوقع ومتسلسل لان الاحتمالات محددة وقليلة ومحصورة

من اين لك هذا الكلام ؟ ؟ ..... رجاءا حار لا تفتي بما ليس لك به علم ....

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

انا كمان مشروع تخرجي جدول المحاضرات الالكتروني

وبدأت فيه هذا الاسبوع عملنا قاعدة البيانات تستقبل ( عدد القاعات - اسمء لمدرسين - المواد - اعدد لطلاب في كل مستوى ...... الخ)

بس اللي حيرني لما احدد الشروط واحدد لكل مستوى القاعة اللي حيحضروا فيها والمادة اللي حيدرسوها

كيف حوزع المحاضرات على الجدول (الايام والفترات الزمنية )

يعني بشكل عشوائي ولا كيف ؟؟

الدكتور كلفني اعمل نموذج مصغر للمشروع بغض النظر عن لاستثنائات والشروط الصعبة

وانا متوقفة عند هذه النقطة (التوزيع الزمني) !!

ارجوا إفادتي .. ولكم جزيل الشكر

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

انا كمان مشروع تخرجي جدول المحاضرات الالكتروني

وبدأت فيه هذا الاسبوع عملنا قاعدة البيانات تستقبل ( عدد القاعات - اسمء لمدرسين - المواد - اعدد لطلاب في كل مستوى ...... الخ)

بس اللي حيرني لما احدد الشروط واحدد لكل مستوى القاعة اللي حيحضروا فيها والمادة اللي حيدرسوها

كيف حوزع المحاضرات على الجدول (الايام والفترات الزمنية )

يعني بشكل عشوائي ولا كيف ؟؟

الدكتور كلفني اعمل نموذج مصغر للمشروع بغض النظر عن لاستثنائات والشروط الصعبة

وانا متوقفة عند هذه النقطة (التوزيع الزمني) !!

ارجوا إفادتي .. ولكم جزيل الشكر

هناك اكثر من طريقه لعملية توزيع المحاضرات , منها اتباع خوارزميات معينه ومنها ان تقوم بذالك عشوائيا ..

وتقريبا افضل طريقه لعملية التوزيع الاولي تكون باستخدام ما يسى largest degree وهذا يعني ان نقوم بترتيب المحاضرات في اول بناء الجدول ( الجدول الاولي) بشكل منطقي من خلال الابتعاد عن التظاربات ..

الطريقه التي اشرت لها تكون من خلال ترتيب المواد بناء على صعوبة حلها اي درجات تضاربها مع المواد الاخرى ومن ثم نقوم بترتيب هذه المحاضرات داخل الجدول بشكل غير متضارب لكي نتخلص من اول مشكله في النظام وهي عدم وجود اي تضاربات بين المواد والمدرسين في الاسبوع , وهذه الطريقه سهله واسرع من باقي الطرق الاخرى في بناء الحل الاولي ومن ثم عمل بقية النظام وتطبيق الخوارزميه الاخرى التي تقوم بتحسين هذا الجدول وتخفيف ما يسمى soft constrain ..

اما ان تعملي اول جدول او ترتيب المحاضرات عشوائيا داخل الجدول كحل اولي فهي ايضا طريقه مستخدمه وفي الغالب في الانظمه التي تستخدم الخوارزميه الجينيه لان الخوارزميه الجينيه تستخدم لحل المشكله طريقة بناء الحل المبدأي عشوائيا ( اي الجدول الاولي ) ..

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .