2012-04-14 11 views
5

मैं ट्रकों में लोडिंग संगमरमर ब्लॉक को अनुकूलित करना चाहता हूं। मुझे नहीं पता, अगर मैं उस उद्देश्य के लिए सॉल्वर फाउंडेशन क्लास का उपयोग कर सकता हूं। इससे पहले, मैं कोड लिखना शुरू करता हूं, मैं इसे यहां पूछना चाहता था।सॉल्वर फाउंडेशन ऑप्टिमाइज़ेशन - 1 डी बिन पैकिंग

  • संगमरमर 1 से 24 टन के बीच किसी भी वजन में हो सकता है।
  • एक ट्रक अधिकतम 24 टन रख सकता है।
  • इसे कई संगमरमर क्यूब्स लोड किया जा सकता है, क्योंकि इसमें 24 टन तक लग सकते हैं, जिसका मतलब है कि वॉल्यूम सीमा नहीं है।
  • समय के आधार पर 200 से 500 विभिन्न संगमरमर ब्लॉक के बीच हो सकता है।

लक्ष्य - लक्ष्य न्यूनतम ट्रक शिपमेंट में संगमरमर ब्लॉक लोड करना है।

यदि मैं परिस्थितियों और लूप के लिए बहुत कुछ लिखने के बिना ऐसा कैसे कर सकता हूं?

क्या मैं उस उद्देश्य के लिए माइक्रोसॉफ्ट सॉल्वर फाउंडेशन का उपयोग कर सकता हूं?

मैंने माइक्रोसॉफ्ट द्वारा प्रदान किए गए दस्तावेज को पढ़ा, हालांकि, मुझे अपने जैसा परिदृश्य नहीं मिला।

M1+ M2 + M3 + .... Mn <=24 यह एक ट्रक शिपमेंट के लिए है।

मान लें कि 200 अलग संगमरमर के वजन हैं और संगमरमर के भार फ़्लोट हैं।

धन्यवाद

+0

क्या आप अपना होमवर्क करने से बाहर निकलने की कोशिश कर रहे हैं या ...? – mellamokb

+0

नहीं, ऐसा कोई वास्तविक जीवन कार्य या होमवर्क नहीं है। मैं अपने आत्म ज्ञान के लिए सीखने की कोशिश कर रहा हूं। मेरा मानना ​​है कि मैं भविष्य में इस ज्ञान का उपयोग कर सकता हूं। इसके अलावा, मैं एक छात्र नहीं हूं। मैं चाहता हूं कि कोडिंग बेहतर सीखें! –

+1

क्या आप बिन पैकिंग एल्गोरिदम से परिचित हैं? यही वह जगह है जहां मैं इस समस्या के करीब आने के लिए शुरू करूंगा। विकीपीडिया पर अच्छी जानकारी है: http://en.wikipedia.org/wiki/Bin_packing_problem – mellamokb

उत्तर

5

आप इस समस्या को हल करने के लिए Microsoft सॉल्वर फाउंडेशन का उपयोग कर सकते हैं। इस तरह के एक समाधान का एक उदाहरण here पाया जा सकता है बिन पैकिंग समस्या के लिए है, जहां OML इस प्रकार है:

Model[ 
    Parameters[Sets,Items,Bins], 
    Parameters[Integers,OrderWidth[Items],BinWidth[Bins]], 

    Decisions[Integers[0,1],x[Items,Bins]], 
    Decisions[Integers[0,1],y[Bins]], 

    Constraints[  
    Foreach[{i,Items},Sum[{j,Bins}, x[i,j]]==1 ], 
    Foreach[{j,Bins}, Sum[{i,Items}, OrderWidth[i]*x[i,j]] <= BinWidth[j]], 
    Foreach[{i,Items},{j,Bins}, y[j] >= x[i,j]] 
    ], 

    Goals[Minimize[UsedBins->Sum[{j,Bins},y[j]]]] 
] 

यह आपके मामले में TruckCapacity (या बस से 24 MarbleWeight और BinWidth को OrderWidth बदलने के लिए आसान होगा)

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