Mantıksal ve: lineer kısıtlamalar kullanın y1≥x1+x2−1 , y1≤x1 , y1≤x2 , 0 ≤ y1≤ 1 , y1 bir tamsayı olduğu sınırlanmıştır. Bu istenen ilişkiyi zorlar. (Bunu sadece doğrusal eşitsizliklerle yapabildiğiniz için çok temiz , öyle mi?)
Mantıksal OR: lineer kısıtlamalar kullanın y2≤ x1+ x2 , y2≥ x1 , y2≥ x2 , 0 ≤ y2≤ 1 , y2 , bir tam sayı olduğu sınırlanmıştır.
Mantıksal değil: Kullanım y3= 1 - x1 .
Mantıksal ima: ifade etmek için y4= ( x1⇒ x2) (yani, y4= ¬ x1∨ x2 mantıksal VEYA için), uyum konstrüksiyonunda. Özel olarak, lineer kısıtlamalar kullanımı y4≤ 1 - x1+ x2 , y4≥ 1 - x1 , y4≥x2 , 0≤y4≤1 ,y4 kısıtlı bir tam sayı olduğu.
Zorunlu mantıksal uygulama: x1⇒x2 tutması gerektiğini ifade etmek için, sadece x1≤x2 doğrusal sınırını kullanın ( x1 ve x2 zaten boole değerleriyle sınırlı olduğu varsayılarak ).
XOR: y5=x1⊕x2 (münhasır veya x1 ve x2 ) ifadesini ifade etmek için , y5≤x1+x2 , y5≥ x1- x2 , y5≥ x2- x1 doğrusal eşitsizlikleri kullanın 2 - x 1 , y5≤ 2 - x1- x2 , 0 ≤ y5≤ 1 ,y5 bir tam sayı olması sınırlanmıştır.
Ve bir bonus olarak, sıfır-bir (boolean) değişkenlerle tamsayı değişkenlerinin bir karışımını içeren problemleri formüle ederken sıklıkla yardımcı olan bir teknik daha:
Boolean (versiyon 1) yayınla: bir tamsayı değişken olduğunu varsayalım x ve tanımlamak istediğiniz y ki y= 1 ise x ≠ 0 ve y= 0 ise x = 0 . Ayrıca 0 ≤ x ≤ U olduğunu biliyorsanız , o zaman doğrusal eşitsizlikleri 0 ≤ y≤ 1 , y≤ x , x ≤ Uy ; ancak, bu yalnızca bir üst ve alt sınır bağlı olduğunu biliyorsanız çalışır.x . Veya, eğer biliyorsan| x | ≤U (yani,- U≤ x ≤ U ) bazı sabitU , o zamanburadaaçıklanan yöntemi kullanabilirsiniz. Bu, yalnızca| x |.
Boolean için Oyuncular (sürüm 2): Aynı hedefi göz önüne alalım, ama şimdi x üzerinde bir üst sınır tanımıyoruz . Ancak, x ≥ 0 olduğunu bildiğimizi varsayalım . İşte bu kısıtlamayı lineer bir sistemde nasıl ifade edebileceğinizi açıklayabilirsiniz. İlk önce, yeni bir tamsayı değişkeni t . Eşitsizlikler ekleyin 0 ≤ y≤ 1 , y≤ x , t = x - y . Eğer en aza indirmek, böylece Sonra, objektif fonksiyonu seçmek t . Bu sadece zaten nesnel bir işleve sahip değilseniz işe yarar. Eğer n varsanNegatif olmayan tamsayı değişkenleri x1, … , Xn böylece ve, boole için hepsini döküm istiyorum yben= 1 eğer xben≥ 1 ve yben= 0 eğer xben= 0 , o zaman tanıtabilirsiniz n değişkenler t1, … , Tn eşitsizlikleri ile 0 ≤ yben≤ 1 , yben≤ xben ,tben= xben- yben ve değerlerinit1+ ⋯ + tn asgariye indirmek için amaç işlevini tanımlayın. Yine, bu sadece nesnel bir işlev tanımlamak için başka hiçbir şeyin işe yaramadığı durumlarda (eğer yayınlar dışında, boolean dışında, sonuçta elde edilen ILP'nin fizibilitesini kontrol etmeyi planlıyorsanız, değişkenlerin bazı fonksiyonlarını en aza indirmeye / en üst düzeye çıkarmaya çalışmıyorsanız).
Bazı mükemmel uygulama problemleri ve çalışılmış örnekler için Tamsayılı Doğrusal Programları Formüle Etme: Bir Rogues 'Gallery .