यद्यपि आपका प्रश्न यह नहीं कहता है, मैं यह मान रहा हूं कि आप विंडो को ओवरलैप नहीं करना चाहते हैं।
इस समस्या के लिए एक दृष्टिकोण चोको जैसे एक बाधा समाधान का उपयोग करना है । एक बस अपनी समस्या एन्कोडिंग के नीचे लिखता है, एक स्मार्ट तरीके से कार्य करने के लिए सॉल्वर को ट्यून करता है, और फिर इसे चलने देता है। इसका मतलब यह है कि आपको जो भी सोचने की ज़रूरत है वह समस्या को एन्कोडिंग का एक अच्छा तरीका खोजने पर खर्च होगा, न कि एक एल्गोरिथ्म को तैयार करने और प्रोग्रामिंग और ट्यूनिंग करने पर। यहां आपको आरंभ करने के लिए आंशिक उत्तर दिया गया है।
मान लें स्क्रीन आकार है कि द्वारा ।xmax×ymax
प्रत्येक विंडो के लिए, , आप चर का एक सेट होगा एक्स मैं , y मैं , ज मैं , डब्ल्यू मैं और बाधाओंWixi,yi,hi,wi
- xi,yi,hi,wi≥0
- xi+wi≤xmax
- yi+hi≤ymax
- शायद खिड़कियों के न्यूनतम आकार पर भी कुछ अड़चनें, जैसे, और इसके बाद।hi≥100
- पहलू की कमी: अगर पहलू अनुपात 3: 4, बाधा की तरह कुछ हो सकता है , जहां ε गैर सही खिड़की के लिए अनुमति देने के लिए कुछ छोटे गैर शून्य त्रुटि शब्द है आकार, अन्यथा आप समस्या को कम कर सकते हैं।4hi−ϵ≤3wi≤4hi+ϵϵ
अब आपको विंडो ओवरलैप की देखभाल करने की आवश्यकता है। खिड़कियों की एक जोड़ी के लिए, , जहां मैं ≠ j , आप निम्नलिखित की तरह की कमी, उत्पन्न करेंगे जो कब्जा है कि कोई कोने डब्ल्यू जे भीतर प्रकट होता है डब्ल्यू मैं । के लिए ( एक्स , वाई ) ∈ { ( एक्स जे , y जे ) , ( एक्स जे + डब्ल्यू जे , y जे ) , ( एक्स जे , yWi,Wji≠jWjWi , बाधा उत्पन्न करें:(x,y)∈{(xj,yj),(xj+wj,yj),(xj,yj+hj),(xj+wj,yj+hj)}
- ।¬(xi≤x≤xi+wj∧yi≤y≤yi+hj)
इस प्रकार निर्दिष्ट बाधाएं केवल गैर-अतिव्यापी खिड़कियों का वर्णन करती हैं जो स्क्रीन के किनारों पर फैलती नहीं हैं, जो कुछ न्यूनतम आकार की बाधाओं को पूरा करती हैं, और जो उनके पहलू अनुपात को संरक्षित करती हैं।
एक अच्छा फिट पाने के लिए, आपको एक मीट्रिक निर्दिष्ट करने की आवश्यकता है जो कैप्चर करता है कि एक अच्छा लेआउट होने का क्या मतलब है। एक संभावना यह है कि आप खिड़कियों को आकार में लगभग बराबर रखना चाहते हैं और / या "सफेद स्थान" को कम से कम करना चाहते हैं। मुझे नहीं लगता कि यह चोको का उपयोग करके निर्दिष्ट किया जा सकता है, लेकिन यह एक और बाधा समाधान के साथ संभव हो सकता है (कोई और यहां मदद करने में सक्षम हो सकता है)।
चोको एक एकल चर के रूप में निर्दिष्ट एक उद्देश्य फ़ंक्शन को अधिकतम करने के लिए अनुमति देता है। इस विचार के आधार पर, आप निम्नलिखित को अधिकतम कर सकते हैं:
एक बाधा लिख कर अधिकतम करने के लिए और कह चोको सी ओ एस टी ।cost=∑i(hi+wi)cost