2008-09-26 4 views
38

क्या कोई भी मौजूदा सॉफ़्टवेयर या एल्गोरिदम के बारे में जानता है ताकि एकाधिक आइटम शिपिंग के लिए पैकेज आकार की गणना हो सके?मैं कैसे प्रोग्राम को बड़े पैमाने पर छोटे बक्से में फिट करने के लिए निर्धारित कर सकता हूं?

मेरे पास हमारे इन्वेंट्री डेटाबेस में लंबाई, चौड़ाई और ऊंचाई डाइम्सियंस परिभाषित किए गए आइटमों का एक गुच्छा है। इन आयामों को देखते हुए मुझे गणना करने की आवश्यकता है कि कितने खरीदे गए आइटम पूर्वनिर्धारित बॉक्स आकार में फिट होंगे।

+0

सहित जानकारी का बहुत कुछ शामिल है लेता है दिलचस्प सवाल सबसे पहले मैं बॉक्स के लिए उपलब्ध क्षेत्र की तुलना में प्रत्येक आइटम के क्षेत्र की गणना करने के तरीकों के बारे में सोच रहा था, लेकिन यह वास्तव में काम नहीं करता है जब आपके पास ऐसी चीजें हैं जो सही cubes नहीं हैं ... आपके पास स्थान हो सकता है बॉक्स के बिना * उपयोग योग्य * अंतरिक्ष के बिना छोड़ दिया। एचआरएम ... –

+0

धन्यवाद इस सवाल के शीर्षक में सुधार के लिए रिच बी के लिए बीटीडब्ल्यू। विशेष रूप से "प्रोग्रामिक रूप से" एक ला हाल ही में एसओ पॉडकास्ट जोड़ना। – polara

+0

@ पोलारा: कोई चिंता नहीं। – GEOCHET

उत्तर

46

यह Bin Packing समस्या है, और यह एनपी-हार्ड है। वस्तुओं और संकुलों की छोटी संख्या के लिए, आप बस हर संभावना की कोशिश करने के लिए ब्रूट फोर्स विधि का उपयोग करने में सक्षम हो सकते हैं। इसके अलावा, आपको किसी प्रकार की एक उदारता का उपयोग करने की आवश्यकता होगी। विकिपीडिया आलेख में कुछ विवरण हैं, जिन कागजात के बारे में आप शायद जांच करना चाहते हैं।

वैकल्पिक रूप से, विकल्प वास्तव में सरल एल्गोरिदम (जैसे कि 'स्टैकिंग' आइटम) से शुरू करना है और उस पर शिपिंग पर उचित ऊपरी बाउंड की गणना करना है, तो यदि आपके मानव पैकर्स बेहतर कर सकते हैं, तो आप मामूली लाभ या अपनी गणना की कीमतों को थोड़ा सा मान लीजिए कि आपका पैकिंग आदर्श नहीं है।

+1

आपकी परिभाषा सटीक है, और मैंने आपके उत्तर को वोट दिया क्योंकि यह कुछ उपयोगी संदर्भ जानकारी प्रदान करता है। आदर्श रूप में मैं एक तैयार समाधान ढूंढना चाहता हूं। – polara

+0

पोलारा: क्या आपको कोई समाधान मिला? – embedded

6

क्या आप यह देखने की कोशिश कर रहे हैं कि एक ही प्रकार का एक विशेष आकार पैकेज में कितना फिट बैठता है, या आप प्रकारों को मिश्रण करने की कोशिश कर रहे हैं?

लगता है जैसे आप Knapsack Problem को हल करने का प्रयास कर रहे हैं। आप इसके लिए कुछ एल्गोरिदम ढूंढ पाएंगे जो आपकी विशिष्ट आवश्यकताओं के अनुकूल हो सकते हैं। बस समझें कि कुशल एल्गोरिदम खोजना मुश्किल होगा, क्योंकि समस्या एनपी पूर्ण है (हालांकि आपकी विशिष्ट आवश्यकताओं के आधार पर आप एक कुशल अनुमान प्राप्त कर सकते हैं, या आपके इनपुट इतने छोटे हो सकते हैं कि यह पर्याप्त नहीं हो मामला)।

+0

आपका विवरण और संदर्भित लिंक भी सटीक हैं। जैसा कि बिन पैकिंग समस्या के मामले में अरकनिड ने संदर्भित किया था, बॉक्स में सामानों को बदलने की क्षमता से अलग संभावित समाधानों की एक चरम संख्या हो सकती है। – polara

+2

ओपी द्वारा पोस्ट की गई समस्या Knapsack का एक उदाहरण नहीं है। –

2

शायद यह स्पष्ट होगा, लेकिन समस्या को याद करने के लिए यह उपयोगी हो सकता है, फिर उनमें से कुछ हाथ से करें। एनपी-हार्ड में मनमाने ढंग से इनपुट और बक्से के लिए सबसे प्रभावशाली समाधान ढूंढना, लेकिन समस्या स्थान को प्रतिबंधित करके, और कुछ अक्षमता को स्वीकार करके, एनपी आकार कुछ उचित हो सकता है, और याद करके, आप "सामान्य मामले" "काफी समय नीचे।

यह पदानुक्रमित पैकिंग के मामले में चीजों के बारे में सोचने में भी मदद कर सकता है।

+0

धन्यवाद। हां, अरविनिड द्वारा भी ह्यूरिस्टिक्स का सुझाव दिया गया था। इसका आवेदन शिपिंग शुल्कों की गणना करना था, और मैं कल्पना कर सकता था कि पूरी तरह से स्वचालित समाधान सभी प्रकार के अव्यवहारिक व्यवस्थाओं के साथ आ रहा है। – polara

4

यदि बक्से हाथ से पैक किए जाने हैं, तो आप एक एल्गोरिदम लिखने पर विचार कर सकते हैं जो उचित मानव करेगा जो करेगा। कारण यह है कि मैं इसका सुझाव देता हूं क्योंकि जब तक आप प्रत्येक आदेश के लिए पैकिंग निर्देशों को मुद्रित नहीं करना चाहते हैं, तो जो कोई भी आपके पैकिंग कर रहा है उसे कसरत करने की ज़रूरत है कि वे आदेशित वस्तुओं को कैसे फिट करने जा रहे हैं, हालांकि इसे कई बॉक्सों में आवंटित किया गया है आदेश।

यह आपके मानव पैकर्स को एसओ में आने के लिए प्रेरित कर सकता है कि कैसे प्रोग्रामिंग रूप से कसरत करने के लिए एम बॉक्स में एन आइटम पैक करना है। :- पी (वे आप से ऐसा करने के लिए भी पूछ सकते हैं, निर्देशों के लिए पूछ सकते हैं आदि)।

जब तक आपका एल्गोरिदम एक उचित इंसान करता है, तब तक मैं व्यक्तिगत रूप से अपने शिपिंग अनुमान को स्वीकार करता हूं।

13

पर "3 डी बिन पैकिंग" साहित्य दूर-दूर तक है। Professor David Pisinger के प्रकाशनों को ट्रैक करके आप एक अच्छा अवलोकन प्राप्त कर सकते हैं।उन्होंने स्रोत कोड के साथ बिन पैकिंग के कुछ उच्च गुणवत्ता कार्यान्वयन में से एक प्रकाशित किया: 3dbpp.c

मेरा खुद का रसद टूलकिट pyShipping गोदाम अनुप्रयोगों के लिए 3 डी बिन पैकिंग कार्यान्वयन के साथ आता है। यह मूल रूप से 4 डी बिन पैकिंग (3 डी आकार & वजन) लागू कर रहा है और दूसरे रनटाइम के तहत सामान्य क्रम आकार (कुछ दर्जनों पैकेज) के लिए स्वीकार्य समाधान प्राप्त करता है। इसका इस्तेमाल अब कुछ महीनों के लिए उत्पादन (जिसका मतलब गोदाम) में किया जाता है ताकि उपयोग किए जाने वाले शिपिंग क्रेट्स की ऊपरी सीमा निर्धारित हो सके। वेयरहाउस कर्मचारी अक्सर कुछ और कुशलता से पैक करने में सक्षम होते हैं लेकिन यह मेरे साथ ठीक है।

3

मेटाएरिस्टिक्स वास्तविक दुनिया बिन पैकिंग समस्याओं से निपटने के लिए अच्छे हैं जब कई पैकेज और/या कई बाधाएं हैं। एक खुला स्रोत जावा कार्यान्वयन Drools Planner है।

6

पिसिंगर कुछ अकादमिकों में से एक है जो working code पोस्ट करते हैं। अपने एक पत्र में उन्होंने "न्यूनतम गहराई" समस्या का उल्लेख किया है।

3 डी आयताकार बॉक्स पैकिंग के लिए एक व्यावहारिक और efficient algorithm है जो संलग्न बॉक्स की ऊंचाई समायोजित करता है।

और यहां php में एक कार्यान्वयन है।

0

बहुत सारी खोज के बाद मुझे GitHub भंडार मिला है जो किसी की मदद कर सकता है। समारोह PackingService.Pack()Container की सूची और Item (रों) की सूची पैरामीटर और वापसी परिणाम के रूप में पैक किया जा करने के लिए जो

"कंटेनर (रों) प्रतिशत और पैक और अनपैक आइटमों की सूची में पैक"

संबंधित मुद्दे