शून्य-एक पूर्णांक लीनियर प्रोग्रामिंग (ILP) में बूलियन तर्क संचालन को व्यक्त करें


58

मेरे पास कुछ पूर्णांक साथ एक पूर्णांक रैखिक कार्यक्रम (ILP) है जिसका उद्देश्य बूलियन मूल्यों का प्रतिनिधित्व करना है। के पूर्णांक होना करने के लिए और धारण करने के लिए विवश कर रहे हैं या तो 0 या 1 ( )।xixi0xi1

मैं इन 0/1-मूल्यवान वैरिएबल पर बूलियन संचालन को व्यक्त करना चाहता हूं, रैखिक बाधाओं का उपयोग कर रहा हूं। मैं यह कैसे कर सकता हूँ?

विशेष रूप से, मैं (बूलियन और), (बूलियन OR), और (बूलियन नहीं) सेट करना चाहता हूं । मैं बूलियन मूल्यों के रूप में 0/1 की स्पष्ट व्याख्या का उपयोग कर रहा हूं: 0 = गलत, 1 = सच। मैं यह कैसे सुनिश्चित करने के लिए ILP बाधाओं को लिखता हूं कि वांछित के रूप में से संबंधित हैं ?y1=x1x2y2=x1x2y3=¬x1yixi

(इसे सर्किटसैट से आईएलपी में कमी के लिए पूछने के रूप में देखा जा सकता है, या एसएटी को आईएलपी के रूप में व्यक्त करने का तरीका पूछा जा सकता है, लेकिन यहां मैं ऊपर दिखाए गए तार्किक संचालन को एन्कोड करने का एक स्पष्ट तरीका देखना चाहता हूं।)

जवाबों:


66

तार्किक और: रैखिक बाधाओं का उपयोग करें , , , , जहाँ एक पूर्णांक बनने के लिए विवश है। यह वांछित रिश्ते को लागू करता है। (बहुत साफ है कि आप इसे केवल रैखिक असमानताओं के साथ कर सकते हैं , हं?)y1x1+x21y1x1y1x20y11y1

तार्किक OR: रैखिक अवरोधों का उपयोग करें , , , , जहाँ पूर्णांक बनने के लिए विवश है।y2x1+x2y2x1y2x20y21y2

लॉजिकल : उपयोग करें ।y3=1x1

तार्किक निहितार्थ: (यानी, ) को व्यक्त करने के लिए , हम तार्किक या के लिए निर्माण को अनुकूलित कर सकते हैं। विशेष रूप से, रैखिक बाधाओं , , , , जहाँ को पूर्णांक बनने के लिए विवश किया जाता है।y4=(x1x2)y4=¬x1x2y41x1+x2y41x1y4x20y41y4

जबरन तार्किक निहितार्थ: यह व्यक्त करने के लिए कि को पकड़ना चाहिए, बस रैखिक बाधा (यह मानते हुए कि और पहले से ही बूलियन मानों के लिए विवश हैं)।x1x2x1x2x1x2

XOR: प्रकट करने के लिए (अनन्य या की और ), का उपयोग रैखिक असमानताओं , , , , , जहां पूर्णांक बनने के लिए विवश है।y5=x1x2x1x2y5x1+x2y5x1x2y5x2x1y52x1x20y51y5


और, एक बोनस के रूप में, एक और तकनीक जो अक्सर शून्य-एक (बूलियन) चर और पूर्णांक चर के मिश्रण वाली समस्याओं को तैयार करते समय मदद करती है:

बूलियन के लिए कास्ट (संस्करण 1): मान लीजिए कि आपके पास एक पूर्णांक चर , और आप को परिभाषित करना चाहते हैं ताकि यदि और यदि । यदि आप अतिरिक्त रूप से जानते हैं कि , तो आप रैखिक असमानताओं का उपयोग कर सकते हैं , , ; हालाँकि, यह केवल तभी काम करता है जब आप पर एक ऊपरी और निचले बाउंड को जानते हैं । या, यदि आप जानते हैं किकुछ निरंतर लिए (अर्थात, ) , तो आप यहाँ वर्णित विधि का उपयोग कर सकते हैंxyy=1x0y=0x=00xU0y1yxxUyx|x|UUxUU। यह केवल तभी लागू होता है जब आप ऊपरी सीमा पर जानते हों।|x|

बूलियन के लिए कास्ट (संस्करण 2): चलो एक ही लक्ष्य पर विचार करें, लेकिन अब हम पर एक ऊपरी बाध्यता नहीं जानते हैं । हालाँकि, मान लें कि हम जानते हैं कि । यहां बताया गया है कि आप एक रेखीय प्रणाली में उस बाधा को कैसे व्यक्त कर सकते हैं। सबसे पहले, एक नया पूर्णांक चर । असमानताओं को , , । फिर, उद्देश्य फ़ंक्शन का चयन करें ताकि आप कम से कम करें । यह केवल तभी काम करता है जब आपके पास पहले से कोई उद्देश्य नहीं था। यदि आपके पास गैर-नकारात्मक पूर्णांक चर और आप उन सभी को डालना चाहते हैं, ताकि यदिxx0t0y1yxt=xytnx1,,xnyi=1xi1 और यदि , तो आप वेरिएबल को असमानताओं से हैं , , और उद्देश्य फ़ंक्शन को परिभाषित करते हैं। को कम करने के लिए । फिर से, यह केवल और कुछ नहीं करता है एक उद्देश्य फ़ंक्शन को परिभाषित करने की आवश्यकता है (यदि, कलाकारों के अलावा बूलियन के लिए, आप केवल परिणामी ILP की व्यवहार्यता की जांच करने की योजना बना रहे थे, चर के कुछ फ़ंक्शन को कम करने / अधिकतम करने की कोशिश नहीं करते हैं)।yi=0xi=0nt1,,tn0yi1yixiti=xiyit1++tn


कुछ उत्कृष्ट अभ्यास समस्याओं और काम किए गए उदाहरणों के लिए, मैं फॉर्मर इंटेगर लीनियर प्रोग्राम्स: ए रोजेज्स गैलरी की सिफारिश करता हूं ।


कौन सा रैखिक प्रोग्रामिंग सॉल्वर इसे हल कर सकता है? * * .lp या * .mps- प्रारूप में बाधा के एक तरफ एक निश्चित पूर्णांक और एक चर नहीं होना चाहिए।
बॉक्सि

4
@ बॉक्सी, मुझे * .lp या * .mps प्रारूप के बारे में कुछ नहीं पता, लेकिन हर पूर्णांक रैखिक प्रोग्रामिंग सॉल्वर को इसे हल करने में सक्षम होना चाहिए। ध्यान दें कि यदि आपके पास जैसा कुछ है , तो यह बराबर है , जो आपके इच्छित प्रारूप में हो सकता है। xyyx0
DW

-मैंने फिर चेक किया। lp_solve इसे हल कर सकता है, लेकिन उदाहरण के लिए qsopt नहीं कर सकता। मुझे पता नहीं क्यों। लेकिन धन्यवाद <3
बॉक्सी

@ बॉक्सी, मैंने अभी-अभी QSopt ऑनलाइन एप्लेट GUI को चेक किया था और जब मैं को परिवर्तित करता हूं , तो यह इस प्रकार की बाधाओं को संभाल सकता है , इसलिए मुझे यकीन नहीं है कि क्या चल रहा है। (मैंने * .lp प्रारूप का उपयोग किया।) मुझे आश्चर्य होगा कि कोई भी ILP सॉल्वर इन प्रणालियों को संभालने में असमर्थ था। यदि आपके पास QSopt के बारे में और प्रश्न हैं, तो आपको संभवतः उन्हें QSopt सहायता फ़ोरम में ले जाना चाहिए। xyxy0
डीडब्ल्यू

1
@ प्रमोद, अच्छी पकड़! उस त्रुटि को स्पॉट करने के लिए धन्यवाद। आप बिल्कुल सही कह रहे है। मैंने उस मामले को कैसे मॉडल किया जाए, इस बारे में एक नया प्रश्न पूछा है और जब हम उस एक का उत्तर प्राप्त करेंगे तो मैं इस उत्तर को अपडेट करूंगा।
DW

19

लॉजिकल एंड रिलेशन को तीन बाधाओं (दूसरे समाधान की तरह) के बजाय एक सीमा बाधा में मॉडल किया जा सकता है । इसलिए तीन बाधाओं के बजाय इसे एकल श्रेणी के अवरोधों का उपयोग करके लिखा जा सकता है इसी तरह, तार्किक OR:

y1x1+x21,y1x1,y1x2,
0x1+x22y11.
02y1x1x21.

नहीं के लिए, ऐसा कोई सुधार उपलब्ध नहीं है।

सामान्य रूप से ( -way और) बाधा होगी: इसी तरह OR के लिए: y=x1x2xnn

0xinyn1.
0nyxin1.

इस पत्र में एक बहुत ही सिमिलर दृष्टिकोण है: ncbi.nlm.nih.gov/pmc/articles/PMC1865583
अब्देलोनेम महमूद आमेर

3

मुझे XOR y = X1⊕x2 के लिए कम समाधान मिला (x और y द्विआधारी 0, 1 हैं)

बस एक पंक्ति: X1 + x2 - 2 * z = y (z कोई पूर्णांक है)


ILP में समानता व्यक्त करने के लिए, आपको दो असमानताओं की आवश्यकता है। इसके अलावा, समाधान से बचने के लिए , आपको दो और असमानताओं की आवश्यकता है, । इसलिए इस उत्तर में DW के उत्तर में छह असमानताओं की तुलना में चार असमानताएं और एक अतिरिक्त चर है। 0 y 1x1=1,x2=0,z=200,y=1990y1
जीके

ILP में एक समानता व्यक्त करने के लिए केवल एक समीकरण की आवश्यकता होती है, यह LP सिद्धांत और सॉफ्टवेयर जैसे Gurobi या CPLEX दोनों में सत्य है। @jIk, मुझे लगता है कि आप का अर्थ है "व्यक्त करना" एक " " को दो असमानताओं की आवश्यकता है। "b
व्हाइटग्रीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.