كيف يمكنني تحديد كيفية احتواء الصناديق الصغيرة برمجياً في حزمة أكبر؟

StackOverflow https://stackoverflow.com/questions/140406

  •  02-07-2019
  •  | 
  •  

سؤال

هل يعرف أحد البرامج أو الخوارزميات الموجودة لحساب حجم الحزمة لشحن عناصر متعددة؟

لدي مجموعة من العناصر في قاعدة بيانات المخزون لدينا مع تحديد أبعاد الطول والعرض والارتفاع.بالنظر إلى هذه الأبعاد، أحتاج إلى حساب عدد العناصر المشتراة التي ستتناسب مع أحجام الصناديق المحددة مسبقًا.

هل كانت مفيدة؟

المحلول

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

البديل، بالطبع، هو البدء بخوارزمية بسيطة حقًا (مثل "تكديس العناصر" ببساطة) وحساب حد أعلى معقول للشحن باستخدام ذلك، ثم إذا كان باستطاعة القائمين على التعبئة البشرية القيام بعمل أفضل، فستحقق ربحًا طفيفًا.أو قم بخصم الأسعار المحسوبة قليلاً على افتراض أن التعبئة الخاصة بك ليست مثالية.

نصائح أخرى

إن الأدبيات المتعلقة بـ "تعبئة الصناديق ثلاثية الأبعاد" بعيدة وواسعة.يمكنك الحصول على نظرة عامة جيدة من خلال تتبع منشورات البروفيسور ديفيد بيسنجر.كما نشر أيضًا أحد التطبيقات القليلة عالية الجودة لتعبئة الصناديق باستخدام الكود المصدري: 3dbpp.c

مجموعة الأدوات اللوجستية الخاصة بي pyShipping يأتي مع تطبيق 3D Bin Packing لتطبيقات التخزين.إنها تنفذ بشكل أساسي 4D Bin Packing (الحجم والوزن ثلاثي الأبعاد) وتحصل على حل مقبول لأحجام الطلبات النموذجية (بضع عشرات من الحزم) في أقل من وقت تشغيل ثانٍ.يتم استخدامه في الإنتاج (أي المستودع) منذ بضعة أشهر لتحديد الحد الأعلى لصناديق الشحن التي سيتم استخدامها.غالبًا ما يكون عمال المستودعات قادرين على التعبئة بشكل أكثر كفاءة إلى حد ما، لكن هذا أمر جيد بالنسبة لي.

Pisinger هو أحد الأكاديميين القلائل الذين ينشرون رمز العمل.وذكر في إحدى أوراقه مشكلة "الحد الأدنى من العمق".

هنا عملي و خوارزمية فعالة لتعبئة الصندوق المستطيل ثلاثي الأبعاد الذي يضبط ارتفاع الصندوق المرفق.

وهنا التنفيذ في بي أتش بي.

هل تحاول معرفة عدد الأنواع الفردية التي تناسب حزمة ذات حجم معين، أم أنك تحاول مزج الأنواع أيضًا؟

يبدو أنك تحاول حل المشكلة مشكلة الحقيبة.قد تتمكن من العثور على بعض الخوارزميات التي يمكن تكييفها وفقًا لمتطلباتك المحددة.فقط افهم أنه سيكون من الصعب العثور على فعال الخوارزمية، حيث أن المشكلة هي NP كاملة (على الرغم من أنه اعتمادًا على متطلباتك المحددة، قد تتمكن من العثور على تقريب فعال، أو قد تكون مدخلاتك صغيرة بما يكفي بحيث لا يهم).

إذا كان سيتم تعبئة الصناديق يدويًا، فقد تفكر في كتابة خوارزمية من شأنها أن تفعل ما معقول سيفعل الإنسان.السبب الذي يجعلني أقترح ذلك هو أنه ما لم تكن ترغب في طباعة تعليمات التعبئة لكل طلب، فسيتعين على الشخص الذي يقوم بالتعبئة الخاصة بك أن يتدرب على كيفية ملاءمة العناصر المطلوبة في أي عدد من الصناديق المخصصة لها طلب.

قد يؤدي هذا بعد ذلك إلى قدوم القائمين على التعبئة البشرية إلى SO للسؤال عن كيفية التمرين برمجيًا على كيفية تعبئة عناصر n في صناديق m.:-P (قد يسألون أيضًا أنت للقيام بذلك، أطلب منك التعليمات، وما إلى ذلك).

طالما أن الخوارزمية الخاصة بك تفعل ما سيفعله أي إنسان عاقل، فسأقبل شخصيًا تقدير الشحن الخاص بها.

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

ربما يبدو هذا واضحًا، ولكن قد يكون من المفيد حفظ المشكلة، ثم القيام ببعضها يدويًا.العثور على الحل الأكثر فعالية للمدخلات والمربعات العشوائية في NP-hard، ولكن عن طريق تقييد مساحة المشكلة، وقبول بعض عدم الكفاءة، قد يكون حجم NP شيئًا معقولًا، وعن طريق الحفظ، قد تكون قادرًا على جلب "الحالة الشائعة" "لقد انخفض الوقت بشكل كبير.

قد يكون من المفيد أيضًا التفكير في الأشياء من حيث التعبئة الهرمية.

وبعد الكثير من البحث وجدت جيثب مستودع قد يساعد شخص ما.وظيفة PackingService.Pack() يأخذ قائمة Container وقائمة Item(ق) ليتم تعبئتها كمعلمة وإرجاع النتيجة التي تحتوي على الكثير من المعلومات بما في ذلك

"الحاوية (الحاويات) المعبأة بالنسبة المئوية وقائمة العناصر المعبأة وغير المعبأة"

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top