Rozwiązanie programowania liniowego w jednym przejściu z uporządkowanymi zmiennymi

9

Mam rodzinę problemów z programowaniem liniowym: maksymalizuj dox z zastrzeżeniem ZAxb, x0. ElementyZA, b, i do są liczbami całkowitymi nieujemnymi, dościśle pozytywne. (x powinien być również integralny, ale będę się tym martwić później).

W mojej aplikacji często zdarza się, że współczynniki A i c są takie, że uproszczony algorytm jednoprzebiegowy zapewnia optymalne rozwiązanie dla każdego wyboru b: algorytm jednoprzebiegowy określa elementy x1,,xn po kolei, wybierając każdy xj być największą możliwą wartością zgodną z już ustalonymi wartościami x1,,xj1. W języku simpleks sekwencja wprowadzania zmiennych jest po prostux1 do xni kończy się po nkroki. To oszczędza dużo czasu w porównaniu do full-on simplex.

Ten algorytm działa, gdy kolumny A i elementy czostały posortowane od „taniego” do „drogiego”. „Tania” zmienna to kolumnaA z ogólnie małymi wartościami, dla których odpowiedni element c jest duży: dla tego elementu x otrzymujesz dużą wydajność przy niewielkim zapotrzebowaniu na ograniczenie b. Algorytm mówi więc „najpierw wykonaj proste czynności”.

Moje pytanie brzmi: jaką właściwość A i c zapewniłby nas, że ten uproszczony algorytm działa dla wszystkich b? Moje początkowe przypuszczenie było takie, że niezerowe elementyA powinna rosnąć w każdym rzędzie, ale to nie jest poprawne.

Oto kilka przykładów c=(1,1,1): A1=(111123320), A2=(001302032), A3=(111100101), A4=(101010011). Dla wszystkich tych algorytm sekwencyjny zapewnia optymalne rozwiązanie dla wszystkich wartościb (przez eksperymenty numeryczne). A3 jest jedynym, dla którego działają również wszystkie permutacje kolumn. A1 i A3 są szczególnie zaskakujące, ponieważ (1,1,3) wygląda drożej niż (1,3,0) i (1,1,1) droższe niż (1,0,0).

Byłbym niezmiernie wdzięczny za wszelkie wskazówki do literatury, za wszelkie podobne problemy lub sugestie. Musiały istnieć inne przypadki, w których niektóre zmienne można określić jako „tańsze” niż inne i można je bezpiecznie wykonać jako pierwsze. Po całej pracy nad programowaniem liniowym na przestrzeni lat wydaje się, że coś podobnego musiało się wydarzyć, ale nie udało mi się go znaleźć.

Robert Almgren
źródło

Odpowiedzi:

4

Prawdopodobnie najbardziej znanym przypadkiem, w którym znany jest chciwy algorytm do rozwiązywania LP, jest szczególny przypadek problemu z transportem. Hoffman („O prostych programach liniowych”, w Convexity , tom 7 Proceedings of Symposia in Pure Mathematics , strony 317-327, 1963) udowodnił, że jeśli macierz kosztów dla problemu (maksymalizacji) spełnia właściwość Monge'a (cij+cklcil+ckj kiedy 1i<kn, 1j<ln), wówczas można znaleźć optymalne rozwiązanie w sposób zachłanny, taki jak ten, który opisujesz.

Hoffman ma także artykuł z ankiety („ O chciwych algorytmach, które się udają ”) z 1985 r., W którym omawia znane przypadki, w których chciwy algorytm zapewnia optymalne rozwiązanie LP. Oprócz cytowanej powyżej własnej pracy (o której mówi: „większość problemów programowania liniowego znanych [do 1963 r.] Jako podatnych na zachłanny algorytm stanowiły szczególne przypadki idei Monge'a”), wspomina o interpretacji programowania liniowego Edmondsa uogólnienie matroidów i omówienie przypadku kiedyA jest między innymi nieujemny.

Wyobrażam sobie, że są nowsze wyniki, ale mam nadzieję, że to przynajmniej częściowo odpowiada na twoje pytanie i daje pewne pomysły na to, gdzie jeszcze szukać.

Mike Spivey
źródło
2
Chciałbym podziękować prof. Spiveyowi za jego sugestię. Zajęło mi trochę czasu, aby gonić referencje, ale podam pełniejszy opis jako odpowiedź.
Robert Almgren
3

Dzięki sugestii prof. Spiveya w końcu udało mi się ustalić, co według mnie jest najnowocześniejsze: Ulrich Faigle, Alan J. Hoffman i Walter Kern, „Charakteryzacja nieujemnych macierzy chciwości pudełkowej”, SIAM J. Disc. Matematyka 9 (1996) s. 1-6. Macierz jest „zachłanna”, jeśli algorytm, który opisałem powyżej, zapewnia optymalne rozwiązanie dla wszystkichb. Macierz jest „pudełkowata”, jeśli algorytm zachłanny daje optymalne rozwiązanie z dodatkowym warunkiemxd dla wszystkich b i wszystkich d0. Oczywiście chciwość w pudełku jest silniejszym warunkiem niż chciwość.

Zawsze zakładaj, że c1cn>0. Dowodzą tego Faigle, Hoffman i KernA jest chciwy, jeśli i tylko jeśli nie ma k×(k+1) (dla każdego k) submatrix formularza (r1s1r2s2rksk) z każdym rj>0 i i:si>0risi>1. Podczas wyodrębniania podmacierzy dozwolone są dowolne permutacje wierszy, ale nie kolumn, oraz dowolne podzbiór wierszy i kolumn. Tak więc w szczególności zk=1, niezerowe elementy w każdym rzędzie A musi nie zmniejszać się.

Niestety okazuje się, że w moim problemie matryce nie są chciwymi pudełkami, choć nadal uważam, że są chciwe. Na przykład w moimA1powyżej warunek jest naruszony i ta matryca nie jest chciwa, chociaż jest chciwa. O ile mi wiadomo, nie ma żadnych wyników w identyfikacji chciwych matryc.

Robert Almgren
źródło
Cieszę się, że moja odpowiedź pomogła ci to znaleźć!
Mike Spivey,
3

Najłatwiejszym przykładem czegoś takiego może być frakcyjny problem plecaka, w którym elementy mogą być frakcjonowane. ten problem (i jego podwójny LP) można rozwiązać, sortując przedmioty pod kątem zysku na wagę, wybierając najdłuższą sekwencję w tej kolejności, która jest możliwa, i dzieląc na części ostatni element.

anonimowy
źródło