Generowanie interesujących problemów optymalizacji kombinatorycznej

9

Prowadzę kurs meta-heurystyki i muszę wygenerować ciekawe przykłady klasycznych problemów kombinatorycznych dla projektu semestralnego. Skupmy się na TSP. Zajmujemy się wykresami wymiarów200i większe. Próbowałem oczywiście wygenerować wykres z macierzą kosztów z wartościami pobranymi z losowegoU(0,1)i odkrył, że (zgodnie z oczekiwaniami) histogram kosztu ścieżki (sporządzony przez próbkowanie wielu losowych ścieżek) ma bardzo wąski rozkład normalny (μ jest  100 ale σ wynosi około 4). Moim zdaniem oznacza to, że problem jest bardzo łatwy, ponieważ większość losowych ścieżek będzie poniżej średniej, a ścieżka kosztu minimalnego jest bardzo zbliżona do ścieżki losowej.

Wypróbowałem więc następujące podejście: Po wygenerowaniu U(0,1)-macierz, weź długi losowy spacer po wykresie i losowo (Bernoulli z p=0.5) podwoić lub zmniejszyć o połowę wartość krawędzi. To zwykle obniża wszystkie wartości, ostatecznie osiągając zero, ale jeśli zrobię odpowiednią liczbę kroków, mogę uzyskać rozkład zμ na około 2 i σ na około 1.

Moje pytanie brzmi: czy to w ogóle dobra definicja interesującego problemu? Idealnie chciałbym mieć instancję, która jest wysoce multimodalna (dla najpopularniejszych funkcji sąsiedztwa) i która ma bardzo niewiele ścieżek w pobliżu wartości minimalnej, tak aby większość przypadkowych rozwiązań była bardzo daleka od optymalnej. Drugim pytaniem jest, biorąc pod uwagę ten opis, jak mogę wygenerować instancje o takich cechach?

Alejandro Piad
źródło
3
Poszukać bibliotek testów porównawczych TSP, badanych w OR (np. Szukać prac nad TSP przez Applegate i in., Np. Tutaj )?
Neal Young,
2
Istnieje TSPLIB z wieloma instancjami.
adrianN
Dzięki, sprawdziłem link i jest on pomocny, ale moje pytanie dotyczy generowania instancji nie dlatego, że chcę rozwiązać konkretną instancję, ale raczej dlatego, że szukam wglądu w to, co sprawia dobre problemy kombinatoryczne, wglądu, który można później rozszerzyć na inne problemy oprócz TSP.
Alejandro Piad
powiązany post: cstheory.stackexchange.com/questions/739/…
Neal Young
1
@Alejandro, problem ukrytej kliki może być przykładem tego, czego szukasz. Możesz także poszukać informacji o tym, które przypadkowe przypadki satysfakcji są uważane za trudne.
Neal Young,

Odpowiedzi:

6

Jedno ogólne podejście do generowania trudniejszych instancji jest następujące:

  • Zacznij od przypadkowego wystąpienia problemu.
  • Osadź „ukryty backdoor”: losowo wybierz dobre rozwiązanie (takie, które prawdopodobnie będzie znacznie lepsze niż jakiekolwiek rozwiązanie, które już istnieje) i zmodyfikuj instancję problemu, aby wymusić osadzenie tego rozwiązania w instancji problemu.

Na przykład w przypadku TSP możesz wykonać następujące czynności. Wygeneruj przypadkową instancję problemu, wybierając losowąU(0,1)macierz kosztów. Następnie dostosuj wystąpienie problemu, aby ukryć w nim znacznie lepsze rozwiązanie: losowo wybierz wycieczkę, która odwiedza każdy wierzchołek dokładnie raz, i zmniejsz wagi krawędzi na tej trasie (np. Wygeneruj go losowo zU(0,c) gdzie c<1; zmniejszyć istniejącą wagę; lub zmodyfikuj istniejącą krawędź z pewnym stałym prawdopodobieństwem). Ta procedura dostosowywania zapewnia, że ​​optymalnym rozwiązaniem będzie, z dużym prawdopodobieństwem, ta wybrana trasa specjalna. Jeśli masz szczęście i wybierzesz rozsądne osadzenie, nie będzie łatwo rozpoznać, gdzie ukryłeś specjalne rozwiązanie.

To podejście wywodzi się z ogólnych pomysłów w kryptografii, w których chcemy tworzyć jednokierunkowe problemy z zapadnią: gdzie problem jest trudny do rozwiązania bez znajomości tajnej zapadni, ale przy wiedzy o tajnej zapadni problem staje się bardzo łatwy. Było wiele prób osadzenia tajnych zapadni w różnych trudnych problemach (przy jednoczesnym zachowaniu twardości problemu, nawet po dodaniu zapadni), z różnym powodzeniem. Ale to ogólne podejście wydaje się być wykonalne dla twoich celów.

Powstałe problemy mogą być trudne , ale czy będą interesujące z praktycznego punktu widzenia? Nie wiem Bije mnie Wyglądają mi dość sztucznie, ale co ja wiem?

Jeśli twoim głównym celem jest wybranie wystąpień problemów, które są praktycznie istotne i reprezentatywne dla rzeczywistych zastosowań TSP, moja propozycja byłaby zupełnie inna. Zamiast tego zacznij od zbadania rzeczywistych aplikacji TSP, a następnie poszukaj reprezentatywnych wystąpień tych problemów i przekonwertuj je na odpowiadające im wystąpienia TSP - dzięki czemu pracujesz z wystąpieniami problemów wywodzącymi się z rzeczywistego problemu.

DW
źródło
Bardzo podoba mi się to podejście, w rzeczywistości jest bardzo zbliżone do tego, co starałem się wymyślić, i wydaje się, że można je łatwo dostosować do różnych problemów. Moją początkową motywacją były problemy z testami dla studentów, więc nawet jeśli dostaję problemy z prawdziwymi słowami, ale dobrze mnie to radzi w tej dość sztucznej sytuacji (próba oceniania algorytmów uczniów). W każdym razie postaram się dostosować go również do moich potrzeb badawczych, ale będzie to wymagało dokładniejszego spojrzenia, jak to mówisz, w celu ustalenia, czy tak utworzone instancje są wystarczająco reprezentatywne. Wielkie dzięki, masz moją +1 i akceptację.
Alejandro Piad
3

podejście, które często daje wysoką kontrolę nad naturą rozwiązań, polega na konwersji z jednego problemu NP na kompletny problem. teraz definiujesz „interesujące” w swoim pytaniu w sposób statystyczny, ale innym fajnym podejściem jest użycie klasycznych problemów z tej dziedziny. moim ulubionym jest faktoring / SAT. znalezienie „gładkich” liczb z wieloma czynnikami lub liczb pierwszych z tylko dwoma „czynnikami” (jednym i liczbą pierwszą) jest banalne. utwórz instancję SAT, aby rozwiązać faktorowanie, a rozwiązania są czynnikami (w rzeczywistości permutacjami czynników, ale także takich, których nie trudno policzyć z wyprzedzeniem).

zgodnie z tym podejściem istnieje naturalna definicja „interesujących” - twardych przypadków, których nie można rozwiązać w czasie P. i gwarantuje się, że takie podejście spowoduje powstanie trudnych instancji dla faktoryzacji liczb nieładnych, w przeciwnym razie rozwiązałoby to najbardziej otwarte pytanie w teorii złożoności, tj. twardość faktorowania .

następnie ewentualnie przekonwertuj na swój problem, w tym przypadku TSP. aby wypełnić tę odpowiedź, byłoby miło mieć bezpośrednią konwersję SAT do TSP, myślę, że tam są, ale ich nie znam. oto kilka odniesień do faktoringu do SAT w tym pytaniu: zmniejszenie problemu faktoryzacji liczb całkowitych do problemu całkowitego NP

jeśli nie lubisz faktorowania, nadal może być preferowane utworzenie instancji w SAT z różnych powodów. możesz zacząć od losowych instancji SAT dostrojonych do środka w łatwym i trudnym punkcie przejścia itp. lub możesz pracować z twardych instancji DIMACS , generowanych przez społeczność. lub utwórz inne logiczne „programy” w SAT.

vzn
źródło
1
Podoba mi się podejście do konwersji, chociaż nie podajesz dalszych linków związanych konkretnie z TSP, ale i tak dzięki za pomysł, zbadam go głębiej. Masz moje +1.
Alejandro Piad
1
@ alejandro thx ok heres link na ten temat. patrz np. zaczynając od slajdu 28 tutaj [klasa licencjacka!], CMSC 451: SAT, farbowanie, cykl Hamiltonian, slajdy TSP Autor: Carl Kingsford . konwersja SAT → cykl hamiltonowski (TSP). mogą istnieć bardziej wydajne (mniej narzutowe) metody konwersji lub inne dostosowane aspekty w literaturze, jeśli jest to pożądane. mam nadzieję, że usłyszę więcej o swojej pracy, może odpowiedz tutaj lub na moim blogu, jeśli chcesz
vzn
1
Sprawdziłem pdf, bardzo wysoki poziom, ale wystarczająco zrozumiały. Chociaż na razie mam to, czego potrzebuję z odpowiedzią @DW, twoje podejście wydaje mi się bardzo interesujące. Będę musiał spróbować sam. Wcześniej widziałem redukcję (na złożonym kursie licencjackim), ale nie myślałem o jej rzeczywistej implementacji specjalnie do tworzenia trudnych przypadków. Od dłuższego czasu interesuję się optymalizacją i metaheurystyką, a jednym z moich zainteresowań jest tworzenie interesujących problemów z testami porównawczymi. BTW, właśnie sprawdziłem twojego bloga, na pewno wrócę !!!
Alejandro Piad