Chcę wyrazić następujące ograniczenie w całkowitym programie liniowym:
Mam już zmienne całkowite i obiecuję, że . Jak mogę wyrazić powyższe ograniczenie w formie odpowiedniej do użycia z całkowitym programem do programowania liniowego?- 100 ≤ x ≤ 100
Będzie to prawdopodobnie wymagało wprowadzenia dodatkowych zmiennych. Jakie nowe zmienne i ograniczenia muszę dodać? Czy można to zrobić czysto za pomocą jednej nowej zmiennej? Dwa?
Równolegle jest to pytanie, jak wymusić ograniczenie
w kontekście, w którym mam już ograniczenia sugerujące i .0 ≤ y ≤ 1
(Moim celem jest naprawienie błędu w https://cs.stackexchange.com/a/12118/755 .)
Odpowiedzi:
Myślę, że mogę to zrobić za pomocą jednej dodatkowej zmiennej binarnej :δ∈ { 0 , 1 }
Aktualizacja
Zakłada się, że jest zmienną ciągłą . Jeśli ograniczymy do wartości całkowitej , wówczas drugie ograniczenie można uprościć do:x x y - 101 δ ≤ x ≤ - y + 101 ( 1 - δ )x y- 101 δ≤ x ≤ - y+ 101 ( 1 - δ)
źródło
źródło
źródło