Frage

Ich weiß, dass es einige Planungsprobleme da draußen sind, die NP-hard / NP-vollständig ... aber keiner von ihnen sind in einer solchen Art und Weise erklärt diese Situation zu zeigen, ist auch NP.

Wenn Sie eine Reihe von Aufgaben beschränkt auf eine startAfter startBy und Dauer alle versuchen, eine einzelne Ressource zu verwenden, ... können Sie einen Zeitplan beheben oder identifizieren, dass es nicht ohne eine erschöpfende Suche gelöst werden kann?

Wenn die Antwort „sorry Kumpel, aber das ist NP-vollständig“ , was wäre die beste Heuristik (s?) Zu verwenden, und gibt es Möglichkeiten, um die Zeit, es zu einem nimmt zu verringern) löst einen Zeitplan und b) einen nicht auflösbaren Zeitplan zu identifizieren.

Ich habe (in Prolog) implementiert, um eine grundlegende Konfliktlösung Ziel durch Rekursion, dass Geräte eine „kleinste Fenster zuerst“ Heuristik. Dies findet tatsächlich Lösungen ziemlich schnell, ist aber außergewöhnlich langsam bei ungültigen Pläne zu finden. Gibt es eine Möglichkeit, diese zu überwinden?

Yay für Verbindung Fragen!

War es hilfreich?

Lösung

Der schwierigste Teil der meisten Planungsprobleme in wirklichen Leben ist habhaft eine Zuverlässigkeit und vollständige Reihe von Einschränkungen. Wenn wir das Beispiel der Schaffung eines Hochschul Zeitplan nehmen:

  • Professor A nicht am Morgen aufstehen, ist er auf einer Menge von Ausschüssen, aber niemand wird den Zeitplan Büro über diese Art von Einschränkung
  • sagen
  • Abteilung 1 der Zeitplan durch Laufzeitbeginn muss jedoch Abteilung 2, die die gleichen Zimmer verwendet, ist nicht bereit, auf die Kurse, zu entscheiden, die erst nach alle Schüler angekommen werden laufen
  • Etc

Dann brauchen Sie ein Zeitplan-System, das mit den Veränderungen fertig werden kann, so dass, wenn eine Einschränkung in letzter Minute geändert wird, müssen Sie nicht den kompletten Zeitplan ändern.

Alle oben genannten wird in der Regel in Forschungsarbeiten über Scheduling-Systeme ignoriert. In Bezug auf NP Vollständigkeit eines Planungsproblem gegeben, in wirklichen Leben Sie kümmern sich nicht als auch wenn es nicht NP abgeschlossen ist werden Sie kaum einmal in der Lage sein, zu definieren, was die „beste Lösung“ ist, so gut genug ist gut genug.

Siehe http: //www.asap.cs.nott .ac.uk / Watt / resources / university.html für eine Liste von Papieren, die Ihnen helfen kann, den Einstieg; gibt es noch viele PHDs in Scheduling-Software werden musste.

Andere Tipps

Es gibt oft gute Approximationsalgorithmen für NP-hard / vollständige Optimierungsprobleme wie Terminplanung. Sie könnten die Kursunterlagen von Ahmed Abu Safia auf Approximationsalgorithmen für die Planung abschöpfen oder verschiedene Papiere .

In einem gewissen Sinne alle Public Key-Kryptographie ist mit „weniger harten“ Problemen wie Factoring getan teilweise weil NP-schwere Probleme zu vielen einfachen Fälle darbringen. Es ist die gleiche NP-Vollständigkeit, die sie „moralisch hart“ macht, die sie auch zu viele einfache Probleme gibt, die oft in einem gewissen Fehler fallen optimaler gebunden ist.

Es gibt eine tiefere Theorie der Härte der Annäherung dass bespricht die Grenzen der Approximationsalgorithmen though.

Sie können die dynamische Programmierung verwenden einige dieser Dinge zu lösen. Greedy Algorithmen kommt auch in dem Sinne. Scheduling Theorie ist sowohl tief und schön, aber die beiden finde ich die meisten der Probleme lösen, ich konfrontiert habe. Vielleicht habe ich Glück gehabt.

Was meinst du mit startBy?

Mit startAfter und wenn es nur eine Ressource, dann eine schnelle Lösung könnte sein, topologische Sortierung . Die Beispiel-Algorithmus läuft in linearer Zeit, nicht jedoch den Fehlerfall, wenn der Graph Zyklen enthält.

Hier ist eine, die nicht ist.

Zeitplan eine Reihe von Jobs i = 1,2 ... n auf einer einzigen Maschine, die jeweils einige Zeit dauern t (i), so dass die durchschnittliche Wartezeit minimiert wird.

Lösung: Sortieren in aufsteigender Reihenfolge von t (i). O (n log n)

Gute Liste hier

Betrachten Sie das Scheduling-Problem, das in der Klasse P:

Input:. Liste der Aktivitäten, die die Startzeit und Endzeit umfassen

Sortieren nach Zielzeit.

Wählen Sie die ersten N Elemente dieser sortierten Liste die maximale Menge an Aktivitäten finden Sie in einer bestimmten Zeit einplanen können.

Sie können die Einschränkungen hinzufügen: alle Aktivitäten bei 05.00 enden muss, auch in diesem Fall, wie Sie durch die Liste arbeiten, Stopp, wenn Sie eine Aktivität, das Ende nach dieser Zeit erreichen

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top