बाधा प्रोग्रामिंग आपको जो चाहिए वह है। प्रचार-आधारित सीपी में, आप (ए) खोज पेड़ में वर्तमान विकल्प बिंदु पर निर्णय लेने के बीच वैकल्पिक होते हैं और (बी) जहां तक आप कर सकते हैं उस निर्णय के परिणामों का प्रचार करना। ध्यान दें कि आप प्रत्येक समस्या परिवर्तनीय x
के लिए संभावित मानों के D
को बनाए रखने के द्वारा ऐसा करते हैं, जैसे कि D(x)
x
के मानों का सेट है जिसे अभी तक वर्तमान खोज पथ से बाहर नहीं किया गया है। आपकी समस्या में, आप इसे बुलीयन वैरिएबल के बड़े सेट, x_ij
पर कम करने में सक्षम हो सकते हैं, जहां x_ij
सत्य iff event i
ईवेंट j
से पहले है। प्रारंभ में D(x) = {true, false}
सभी चर के लिए। एक निर्णय केवल एक अनिश्चित चर के डोमेन को कम कर रहा है (एक बूलियन वैरिएबल के लिए इसका मतलब है कि अपने डोमेन को एक मूल्य, सत्य या गलत, जो असाइनमेंट के समान है) को कम करना है। यदि किसी भी x
के लिए खोज पथ D(x)
खाली हो जाता है, तो आप मृत अंत तक पहुंच गए हैं और बैकट्रैक करना है।
यदि आप स्मार्ट हैं, तो आप प्रत्येक विफलता से सीखने की कोशिश करेंगे और अनावश्यक खोज से बचने के लिए खोज पेड़ के पीछे पीछे हटने की कोशिश करेंगे (इसे बैकजंपिंग - उदाहरण के लिए, यदि आप इसकी पहचान करते हैं स्तर 7 पर पहुंचने वाले मृत अंत के कारण आप स्तर 3 पर किए गए चुनाव के कारण थे, केवल 6 स्तर पर बैकट्रैकिंग में कोई बात नहीं है क्योंकि कोई समाधान इस उपट्री में आपके द्वारा स्तर 3 पर किए गए विकल्प के अनुसार मौजूद है!)।
अब, आपके डेटा में आत्मविश्वास की अलग-अलग डिग्री हैं, तो आपके पास वास्तव में अनुकूलन समस्या है। यही है, आप केवल ऐसे समाधान की तलाश नहीं कर रहे हैं जो को सत्य होना चाहिए, लेकिन एक जो आपके भीतर मौजूद ट्रस्ट की डिग्री के अनुसार अन्य "मुलायम" बाधाओं को सर्वोत्तम रूप से संतुष्ट करता है। आपको यहां क्या करना है उद्देश्य फ़ंक्शन पर संतुष्ट/उल्लंघन किए गए आंशिक बाधाओं के दिए गए सेट पर स्कोर असाइन करना है। जब भी आप पाते हैं कि वर्तमान खोज पथ सबसे पहले मिले समाधान पर बेहतर नहीं हो सकता है तो आप अपनी खोज को छीनना चाहते हैं।
यदि आप बूलियन दृष्टिकोण के लिए जाने का निर्णय लेते हैं, तो आप लाभप्रद रूप से एसएटी सॉल्वर देख सकते हैं, जो इस तरह की समस्याओं से फाड़ते हैं। लेकिन पहली जगह जो मैं देखता हूं वह MiniZinc पर है, एक सीपी भाषा जो कला बाधाओं की पूरी तरह से विभिन्न राज्यों पर आधारित है।
शुभकामनाएँ!
असल में, मुझे विश्वास है कि आप बाधाओं के आधार पर प्रोग्रामिंग के बारे में बात कर रहे हैं, इसमें कुछ संभावनाएं हैं। [इस] (http://www.cse.unsw.edu.au/~tw/wecai2002.pdf) की तरह कुछ? – Amadan
धन्यवाद; यह मेरे लिए अनुवर्ती करने के लिए बहुत सारी लीड प्रदान की गई है। मैं इस "उत्तर" को चिह्नित करूंगा यदि केवल मुझे क्लिक करने के लिए टिक मार्क मिल सके। –
हालांकि इसका कोई जवाब नहीं है, भले ही यह आपको सही दिशा में ले जाए। अपने निष्कर्षों को अपने उत्तर में सारांशित करने के लिए स्वतंत्र महसूस करें, और इसे जांचें; मुझे यकीन है कि मैं इस बिंदु पर जितना अधिक कर सकता हूं उससे अधिक विस्तृत होगा। – Amadan