तार्किक और: रैखिक बाधाओं का उपयोग करें , , , , जहाँ एक पूर्णांक बनने के लिए विवश है। यह वांछित रिश्ते को लागू करता है। (बहुत साफ है कि आप इसे केवल रैखिक असमानताओं के साथ कर सकते हैं , हं?)y1≥x1+x2−1y1≤x1y1≤x20≤y1≤1y1
तार्किक OR: रैखिक अवरोधों का उपयोग करें , , , , जहाँ पूर्णांक बनने के लिए विवश है।y2≤x1+x2y2≥x1y2≥x20≤y2≤1y2
लॉजिकल : उपयोग करें ।y3=1−x1
तार्किक निहितार्थ: (यानी, ) को व्यक्त करने के लिए , हम तार्किक या के लिए निर्माण को अनुकूलित कर सकते हैं। विशेष रूप से, रैखिक बाधाओं , , , , जहाँ को पूर्णांक बनने के लिए विवश किया जाता है।y4=(x1⇒x2)y4=¬x1∨x2y4≤1−x1+x2y4≥1−x1y4≥x20≤y4≤1y4
जबरन तार्किक निहितार्थ: यह व्यक्त करने के लिए कि को पकड़ना चाहिए, बस रैखिक बाधा (यह मानते हुए कि और पहले से ही बूलियन मानों के लिए विवश हैं)।x1⇒x2x1≤x2x1x2
XOR: प्रकट करने के लिए (अनन्य या की और ), का उपयोग रैखिक असमानताओं , , , , , जहां पूर्णांक बनने के लिए विवश है।y5=x1⊕x2x1x2y5≤x1+x2y5≥x1−x2y5≥x2−x1y5≤2−x1−x20≤y5≤1y5
और, एक बोनस के रूप में, एक और तकनीक जो अक्सर शून्य-एक (बूलियन) चर और पूर्णांक चर के मिश्रण वाली समस्याओं को तैयार करते समय मदद करती है:
बूलियन के लिए कास्ट (संस्करण 1): मान लीजिए कि आपके पास एक पूर्णांक चर , और आप को परिभाषित करना चाहते हैं ताकि यदि और यदि । यदि आप अतिरिक्त रूप से जानते हैं कि , तो आप रैखिक असमानताओं का उपयोग कर सकते हैं , , ; हालाँकि, यह केवल तभी काम करता है जब आप पर एक ऊपरी और निचले बाउंड को जानते हैं । या, यदि आप जानते हैं किकुछ निरंतर लिए (अर्थात, ) , तो आप यहाँ वर्णित विधि का उपयोग कर सकते हैंxyy=1x≠0y=0x=00≤x≤U0≤y≤1y≤xx≤Uyx|x|≤U−U≤x≤UU। यह केवल तभी लागू होता है जब आप ऊपरी सीमा पर जानते हों।|x|
बूलियन के लिए कास्ट (संस्करण 2): चलो एक ही लक्ष्य पर विचार करें, लेकिन अब हम पर एक ऊपरी बाध्यता नहीं जानते हैं । हालाँकि, मान लें कि हम जानते हैं कि । यहां बताया गया है कि आप एक रेखीय प्रणाली में उस बाधा को कैसे व्यक्त कर सकते हैं। सबसे पहले, एक नया पूर्णांक चर । असमानताओं को , , । फिर, उद्देश्य फ़ंक्शन का चयन करें ताकि आप कम से कम करें । यह केवल तभी काम करता है जब आपके पास पहले से कोई उद्देश्य नहीं था। यदि आपके पास गैर-नकारात्मक पूर्णांक चर और आप उन सभी को डालना चाहते हैं, ताकि यदिxx≥0t0≤y≤1y≤xt=x−ytnx1,…,xnyi=1xi≥1 और यदि , तो आप वेरिएबल को असमानताओं से हैं , , और उद्देश्य फ़ंक्शन को परिभाषित करते हैं। को कम करने के लिए । फिर से, यह केवल और कुछ नहीं करता है एक उद्देश्य फ़ंक्शन को परिभाषित करने की आवश्यकता है (यदि, कलाकारों के अलावा बूलियन के लिए, आप केवल परिणामी ILP की व्यवहार्यता की जांच करने की योजना बना रहे थे, चर के कुछ फ़ंक्शन को कम करने / अधिकतम करने की कोशिश नहीं करते हैं)।yi=0xi=0nt1,…,tn0≤yi≤1yi≤xiti=xi−yit1+⋯+tn
कुछ उत्कृष्ट अभ्यास समस्याओं और काम किए गए उदाहरणों के लिए, मैं फॉर्मर इंटेगर लीनियर प्रोग्राम्स: ए रोजेज्स गैलरी की सिफारिश करता हूं ।