Najlepsza książka na temat implementacji metody Simplex?

14

Interesuje mnie implementacja SM dla zadania LP, jednak słyszałem o możliwych pułapkach: książka Cormena mówi, że możliwe jest posiadanie danych wejściowych, które sprawią, że naiwna implementacja zachowa się w wykładniczym czasie. Słyszałem również, że naiwna implementacja może zapętlać dane.

Czy istnieje książka / artykuł / źródło wyjaśniające niuanse praktycznego wdrażania SM?

Z góry dziękuję.

litewski
źródło
1
Pętla: patrz en.wikipedia.org/wiki/Bland's_rule
Maverick Woo

Odpowiedzi:

13

Zdecydowanie polecam artykuł Bixby, „ojca” CPLEX, który analizuje nie tylko aspekty wdrażania (poprawionego) algorytmu simpleksowego: Robert E. Bixby , Rozwiązywanie rzeczywistych programów liniowych: dekada i więcej postępu , operacje Research (50) 2002, 3-15 .

vb le
źródło
12

Algorytmu simpleks nie ma w P. CLRS stwierdza zatem, że chociaż w praktyce działa on „dobrze”, istnieją pewne dane wejściowe powodujące, że algorytm działa w czasie wykładniczym. Jest to ściśle związane z algorytmem, a nie z jego implementacją: staniesz przed nim niezależnie od tego, jak dokładnie zaimplementujesz algorytm. Jednak LP jest w P. Zostało to udowodnione przez Khachiana w 1979 roku, jednak jego algorytm elipsoidy nie jest praktyczny. Obecnie metody punktów wewnętrznych są szeroko stosowane. Pierwszy został odkryty przez Karmarkara w 1984 roku.

Jeśli jesteś zainteresowany praktycznymi wdrożeniami, spójrz na:

GUROBI, darmowy do użytku akademickiego, jest obecnie najlepszym dostępnym optymalizatorem (wersja równoległa dla pamięci sekwencyjnej i współdzielonej):

http://www.gurobi.com

biblioteka GLPK:

http://www.gnu.org/software/glpk/

jest to projekt typu open source, zapewniający wdrożenia dla:

  • podstawowe i podwójne metody simpleks
  • metoda pierwotnego podwójnego punktu wewnętrznego
  • metoda rozgałęziona
  • tłumacz GNU MathProg
  • interfejs aplikacji (API)
  • samodzielny solver LP / MIP
Massimo Cafaro
źródło
12
W rzeczy samej. Zdecydowanie odradzam samodzielne wdrażanie simpleks, chyba że o to chodzi w tym ćwiczeniu. Jeśli chcesz go po prostu użyć, metody z półki są znacznie lepsze. Ponadto CPLEX jest bezpłatny do użytku akademickiego, jeśli jest to odpowiednie dla Ciebie.
Suresh Venkat
1
Czy są jakieś rozproszone (jak MPI) implementacje LP typu open source?
Tomek Tarczynski
3
@ Tomek LP jest P-kompletny i jest mało prawdopodobne, aby miał wydajną równoległość.
Marcus Ritt,
@Tomek: Simphony zapewnia wersję rozproszoną, która obecnie działa w dowolnym środowisku obsługiwanym przez protokół przekazywania wiadomości PVM (MPI nie jest jeszcze obsługiwany). Ten sam kod źródłowy można również skompilować dla architektur pamięci współużytkowanej za pomocą dowolnego kompilatora zgodnego z OpenMP. Zobacz oddziałandcut.org i mocno powiązaną stronę internetową COIN-OR: coin-or.org
Massimo
9
CPLEX jest prawdopodobnie najlepszą obecnie dostępną implementacją LP (dlatego ludzie płacą za nią tyle), ale prawie wszystkie powszechnie stosowane implementacje będą działały znacznie lepiej niż cokolwiek, co sam programujesz. Obejmuje to pakiety matematyczne, klonowe i MATLAB. Istnieje wiele implementacji, w tym kilka całkiem dobrych darmowych (na przykład QSopt, która jest bezpłatna, jeśli nie planujesz używać jej w celach komercyjnych), więc samodzielne programowanie jest warte jedynie nauki.
Peter Shor,
9

Książka programowania liniowego Vanderbei zawiera wiele szczegółów niskiego poziomu ... Ale jak sugerują inne odpowiedzi / komentarze, wdrożenie LP Solvera jest trudnym i niewdzięcznym zadaniem. Solver z półki jest prawdopodobnie najlepszą drogą ... (Istnieją również solwery LP typu open source ...)

Sariel Har-Peled
źródło
6

To nie tylko naiwne implementacje, które czasem zachowują się wykładniczo. W rzeczywistości uważam, że wszystkie znane reguły deterministyczne i losowe mają wielomianowe najgorsze dane wejściowe. Większość znanych danych wejściowych, które powodują takie zachowanie w najgorszym przypadku, ma wysoce ustrukturyzowane, powiązane pytanie:

Struktura instancji patologicznych dla algorytmów simpleks

Jednak w praktyce SM działa dobrze. Zostało to sformalizowane przez wprowadzenie wygładzonej analizy, która jest w zasadzie analizą najgorszego przypadku z lekko zaburzonymi danymi wejściowymi. Zgodnie z tą analizą SM jest czasem policyjnym, innymi słowy, dla każdego wejścia (nawet patologicznego) występuje niewielkie zaburzenie, które pozwala algorytmowi na dobre działanie. Ten wgląd został przekształcony w losowy algorytm, który działa w czasie rzeczywistym. Jednak, o ile rozumiem, wciąż trwa debata na temat tego, czy ten algorytm kwalifikuje się jako „prawdziwy” algorytm simpleksowy. Nie jestem również świadomy, czy standardowe pakiety implementują coś podobnego do tego, ale powinieneś być w stanie znaleźć implementację, jeśli będziesz szukać, ponieważ wynik ma ponad 5 lat.

Artem Kaznatcheev
źródło
1

Możesz sprawdzić Luenberger, Ye, Programowanie liniowe i nieliniowe, wydanie 3. Wydaje się to dość wyczerpujące, ale nie dotarłem jeszcze wystarczająco daleko, aby powiedzieć, czy całkowicie odpowiada na twoje pytanie.

marshallf
źródło