خوارزمية التعبئة ثلاثية الأبعاد
-
21-09-2019 - |
سؤال
أنا أبحث عن تنفيذ حاسم لأي خوارزمية تعبئة صندوق ثلاثي الأبعاد ، أي لتعبئة العديد من المكعبات الصغيرة والمختلفة داخل واحد أو العديد من أكبرها. يمكن أن يختلف الحل من الحل الأمثل.
يجب أن تتم كتابتها في C ، C ++ ، Java ، C#، IronPython ، IronRuby أو أي لغة أخرى يمكن أن تكون من كود .NET.
لقد وجدت هذه الخوارزمية C http://www.diku.dk/hjemmesider/ansatte/pisinger/3dbpp.c ، لكنه لا يدور Cuboids للعثور على أفضل ملاءمة. أنا موافق على عدم تدويرها رأسًا على عقب ، ولكن يجب أن يكون الدوران الأفقي ممكنًا.
المحلول
لقد كتبت خوارزمية تقريبية للحالة التي تصفها أي صناديق مستطيلة ثلاثية الأبعاد ، مع دوران متعامد ، في C ++. يمكنك العثور على النتائج والخوارزمية في الورقة المنشورة:http://www.cs.ukzn.ac.za/publications/erick_dube_507-034.pdf
نصائح أخرى
لقد تحولت Wknechtel/3d-bin-pack C رمز إلى JavaScript. يمكن أن يكون الميناء بسهولة إلى C#.
https://github.com/keremdemirer/3dbinpackingjs
يمكنك تشغيل مثال الحسابات من index.html
ملف ومراجعة التقرير الذي تم إنشاؤه. pack1.js
يحتوي الملف على التطبيق والخوارزمية. لست متأكدًا من كيفية عمل الخوارزمية ولكن النتائج مرضية لحسابات التغليف.
هذه المشكلة هي np-hard. أفضل رهان لك هو خوارزمية التقريب (حتى يحل الشخص العبقري أي مشكلة NP ، أو عثرات زميل محظوظ جدًا في حل ما.) لا أعرف أي خوارزميات تقريبية معروفة لهذه المشكلة لسوء الحظ.
مشروع Java مفتوح المصدر مع دعم لأكبر مساحة ملائمة أولاً: 3D-bin-container
يدور في 2D أو 3D.
يتم النظر في النسخة العامة للمشكلة في "خوارزميات للمتغيرات العامة والقابلة للارتداد لمشكلة تعبئة بن ثلاثية الأبعاد: http://www.3dbinbox.com/public/home/
يمكنك إلقاء نظرة على تقريبي لهذه الخوارزمية.
إنها خوارزمية ذكية أول ملائمة تستند إلى تغطية المساحة القصوى.
https://github.com/mohitesh07/3d-bin-packing
إنه مكتوب في جافا