الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل هناك خوارزمية لمثل هذه المشكلة

بدأه aymen1968 في 21 يوليو 2011 · 4 رد · 857 مشاهدة · في الرياضيات والخوارزميات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

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

المشكلة ببساطة أن معملا يستورد قضبانا من الحديد بطول معين وليكن 430 سم ثم يقومون بقصها حسب رغبة الزبائن وليكن حسب الجدول التالي

الكمية المطلوبة الطول المطلوب اسم الزبون

a 165 50

b 135 60

c 125 65

d 195 60

e 210 70

f 100 100

... الخ

وعلى مشرف الإنتاج في هذا المعمل أن يعطي أمرا بترتيب هذه الأطوال للحصول على أقل هدر ممكن فمثلا يمكن أن يجمع الأطوال بمجموعات مثلا ( 165،135،125) وهذه مجموعها 425 طبعا مع مراعاة الكميات ثم يأخذ مجموعة أخرى وهكذا

بمعنى نأخذ مثلا الأطوال 165،135،125 ذات المجموع 425 وبذلك يبقى من القضيب 5 سم وهو هدر مقبول نوع ما ذلك أن قضيب الحديد قيمته مرتفعة طبعا نراعي الكميات أي أن الطول 125 يراد منه 65 قطعة و الطول 135 يراد منه 60 قطعة والطول 165 يراد منه 50 قطعة وبذلك نعطي للآلة أمر بقص 50 قضيب لثلاثة أقسام بهذه الأطوال وبذلك يبقى من الطول 125 - 15 قطعة لم تقص بعد والطول 135 - يبقى منه 10 قطعة لم تقص أيضا يعاد إدخال هذين الطولين إلى الإجراء ليعاد وضعهما ضمن خطة القص ، وهكذا .

والسؤال الآن كيفية برمجة إجراء للقيام بمثل هذه المهمة عن مشرف الإنتاج بحيث يقوم البرنامج بوضع خطة الإنتاج وترتيب الأطوال حسب مجموعات ومراعاة الكميات مع الأطوال . أو هل هناك خوارزمية لمثل هذه المشكلة .

#2

لست متأكداً ولكن والله أعلم بأن هذه تدخل تحت Linear Programming وتحديداً طريقة الSimplex. هنا تجد Simplex جافا أبلت مع المصدر.

#3

وعليكم السلام ..

في مثل هذه الحاله تستطيع ان تبني Costs عن طريق ال violations او ال penalty لانه اذا استطعت ان تقوم بهذا الامر وهذا طبعا ينطبق على القيم والاطوال التي تريد .. يعني مثلا نقول انك تريد هذه الاطوال التي اردت من خلال الجدول التي وضعت وعلى اساسه تحسب الزيادات الفائضه بانها penalty .. طبعا كيف يكون هذا الامر هذا يحتاج منك ان تحسب ماهي الزيادات المتوقعه او تقول :-

اذا كانت الزياده 5 سم فتمثل 5 penalty وعلى اساس ذالك تبدأ في عملية القص حسب الاطوال المتاحه لديك وتحسب مجموع الزيادات = costs وتستخدم الخوارزميه التي تريد لكي تقلل من هذه الزيادات او ال penalty بما يسمى minimize objective function . اما الخوارزميه فتستطيع ان تستخدم العديد من خوارزميات optimization solution مثل ال Genetic algorithm او tabu search او simulated annealing وغيرها الكثير من الخوارزميات .

تحياتي

#4

السلام عليكم

أشكر لكما اهتمامكما ولكن سيد حسان هل يمكن التوضيح أكثر

#5

طيب ..

اخي الموضوع انك بحاجه لخوارزميه تساعدك على قطع قضبان الحديد باقل قيمه تخسرها اي باقل فائض وهنا انت بحاجه لخوارزميه تساعدك في التقليل من هذا الفائض .. لذالك تقوم بعمل عقوبات penalty على الزيادات التي تحصل اثناء القص وتعمل عمليات تبديل بين درجات القص للحصول على اقل فائض ممكن ..

شوف مثل هكذا :-

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

50 (165)+ 60(135) + 65 (125)+ 60(195) + 70 ( 210) + 100(100)

الان الوضع الطبيعي دون محاولة تقليل الزيادات تحضر هذه القطع التي باطوال 430 التي تستوردها وتبدأ بالقص ولنقول بشكل تسلسلي كما هو المطلوب منك في الجدول يعني تبدأ باول طلبيه وتبدأ بالقص ..

تمام ؟ اتمنى تكون وصلت الفكره لحد الان ..

هذا نسميه الحل المبدأي يعني يعمل الامر الاساسي اي توفير الطلبيات ولكن دون مراعات خساره المحل .. الان الذي تريده هو ان تقلق من هذه الخسارات التي تحصل بمعنى الزيادات .. لذا قلت لك اجعل كل سنتيمتر يمثل penalty وقم بعد ذالك بعمل الخوازرزميه ..

كيف تعمل ال penalty ؟

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

الان دور الخوازميه ولنقول انك ستخدم خوارزميه بسيطه يعني التطبيق الاساسي لل local search مثلا مع انها توصل الى حلول جيده ولكنها بيست مثاليه ..

الان الخوارزميه بعد ان تجد هذا الشكل الموجود حاليا او الحل المبدأي تقوم ب عمل تبديلات يعني مثلا قص قطعه من التي بطول 165 وقطعه من 195 وقطعه من 210 وتحسب مثلا كم الطول .. الان اذا كان الطول اكثر من الطول المتوفر يعني 430 فلا تقبل الحل وترجع تختار تبديل عشوائي من جديد اذا كانت الاطوال الجديده المختاره افضل من الحل السابق يعني مجموع قيمة ال penalty اقل من القيمه السابقه الحل المبدأي تعتمد هذا الحل وتبدأ بعمل اختيار عشوائي من جديد .. وهكذا حتى تصل الى افضل حل تريده بعد عدد معين من الدورات والذي يعطيك في النهايه انه قص القطعه التي بطول كذا مع القطعه التي بطول كذا .. وهنا تصل الى افضل طريقه قص ..

ان شاء الله تكون وصلت الفكره وشرح الخوارزميه البسيطه ..

تحياتي

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…