Interaktives Graphentheorie-Lernen
Interaktives Graphentheorie-Lernen
Guest User
Using app without sign in
Löser für Standortplanung
Findet das optimale zentrale Hub zur Minimierung der durchschnittlichen Entfernung
Wählen Sie einen Algorithmus und generieren Sie Schritte, um die Visualisierung zu beginnen
Das Standortproblem wählt, wo Einrichtungen wie Lager oder Kliniken eröffnet werden, um eine Menge von Nachfragepunkten zu minimalen Gesamtkosten zu bedienen, und wägt dabei Eröffnungskosten gegen Servicedistanzen ab. Die meisten Varianten, darunter k-Median und k-Center, sind NP-schwer.
Praktische Löser kombinieren mehrere Ideen. Greedy-Algorithmen eröffnen die Einrichtung mit dem besten Verhältnis von Kosten zu abgedeckter Nachfrage und erzielen beweisbare Approximationsgarantien. Lokale Suche tauscht offene und geschlossene Einrichtungen, solange Verbesserung möglich ist. Exakte Lösungen für mittlere Größen nutzen gemischt-ganzzahlige Programmierung, und große Instanzen verwenden Lagrange-Relaxation oder clusterbasierte Heuristiken wie k-Means, um Kandidatenstandorte zu setzen.
Standortplanung entscheidet über Lager- und Verteilzentrumsplatzierung in Lieferketten, Mobilfunkmast- und Ladeabdeckung, Krankenhaus- und Feuerwachen-Standorte für den Notfalleinsatz sowie die Platzierung von Content-Delivery-Servern. Es ist ein Vorzeigeproblem von Operations Research und Logistikanalytik.
Das Problem wägt zwei gegenläufige Kosten ab: Standorte zu eröffnen kostet Geld, doch jeder eröffnete Standort verkürzt den Weg zu den Kunden. Exakt formuliert ist es ein ganzzahliges Programm; in der Praxis nimmt man eine gierige Heuristik mit lokaler Verbesserung.
// Exakt (klein): jede Teilmenge von Standorten prüfen
bestes = unendlich
für jede nichtleere Teilmenge S der Kandidatenstandorte:
kosten = Summe eröffnungskosten[f] für f in S
für jeden Kunden c:
kosten += min über f in S von servicekosten[f][c]
bestes = min(bestes, kosten)
// Gierig (groß): den Standort mit der größten Ersparnis öffnen
S = {}
wiederhole:
f* = geschlossener Standort mit größter Kostensenkung
wenn f* zu öffnen die Kosten nicht senkt: abbrechen
S = S + {f*}
// Danach: lokale Suche mit Tausch, Öffnen und SchließenEntscheidend ist, dass Kunden stets dem für sie günstigsten eröffneten Standort zugewiesen werden, der einzige echte Freiheitsgrad ist also die Wahl der zu öffnenden Teilmenge. Das verwandelt ein scheinbar kontinuierliches Problem in ein kombinatorisches über Teilmengen, und genau das macht es NP-schwer: es gibt 2 hoch n Teilmengen und keinen bekannten Weg, sie in Polynomialzeit zu durchlaufen.
Entscheide bei drei Kandidatenstandorten und vier Kunden, welche Standorte zu eröffnen sind, indem alle Teilmengen verglichen werden.
Beispielgraph: Eröffnungskosten: F1 kostet 10, F2 kostet 8, F3 kostet 6. Servicekosten je Kunde: F1 bedient C1 und C2 für 2 und 3, C3 und C4 aber für je 9; F2 bedient C3 und C4 für 2 und 3, C1 und C2 aber für 8 und 7; F3 bedient alle vier für je 5.
Optimal ist es, ausschließlich F3 zu eröffnen, mit Gesamtkosten 26. Dabei lohnt es sich innezuhalten: F3 ist für keinen Kunden der bevorzugte Standort, und dennoch ist genau diese Teilmenge optimal. Eine Heuristik, die jeden Kunden seinem günstigsten Servicestandort zuordnet, würde F1 und F2 eröffnen und bei 28 landen. Allein der Ausgleich zwischen Eröffnungs- und Servicekosten zählt, und kundenweises Denken erfasst ihn nicht.
Zeit: NP-schwer; exakt O(2^n · n · m) · Speicher: O(n · m)
Bei n Kandidatenstandorten und m Kunden prüft die exakte Aufzählung alle 2 hoch n nichtleeren Teilmengen und ordnet für jede die m Kunden ihrem günstigsten eröffneten Standort zu, mit O(n) je Kunde, was O(2 hoch n mal n mal m) ergibt. Das ist nur bis etwa 20 bis 25 Standorte praktikabel. Das Problem ist NP-schwer, ein exakter Polynomialzeitalgorithmus ist also nicht zu erwarten. Die gute Nachricht: die Variante ohne Kapazitäten ist approximierbar, es gibt Algorithmen mit konstantem Faktor um 1,5 auf Basis von LP-Rundung und lokaler Suche. Das steht im Gegensatz zur Graphfärbung, für die keine brauchbare Approximation bekannt ist. Das gierige Verfahren, das je Schritt den Standort mit der größten Ersparnis öffnet, hat eine logarithmische Garantie und schneidet praktisch gut ab.
Welche Variante passt, hängt davon ab, ob die Standorte Kapazitätsgrenzen haben und wie viele Kunden es gibt.
| Alternative | Vorzuziehen, wenn | Kosten |
|---|---|---|
| Exakte Aufzählung oder ganzzahlige Programmierung | Weniger als etwa 25 Kandidatenstandorte und du brauchst das beweisbare Optimum. | O(2^n · n · m) |
| Gierig plus lokale Suche | Große Instanzen. Nach maximaler Ersparnis öffnen und anschließend Standorte tauschen, öffnen und schließen. | O(n^2 · m) je Durchgang |
| Standortwahl mit Kapazitäten | Jeder Standort hat eine Obergrenze der bedienbaren Nachfrage. Deutlich schwieriger. | NP-schwer |
| K-Means | Es gibt keine Eröffnungskosten und du willst Kunden nur in k geografische Zonen gruppieren. | O(n · k · i · d) |
| K-Median | Du willst genau k Standorte ohne Eröffnungskosten öffnen und die Gesamtdistanz minimieren. | NP-schwer |
Den ganzen Artikel lesen: Operations Research and Graph Theory
Verwandte Algorithmen: K-Means Logistik-Clustering, Flottendisposition (mTSP), Kapazitätsbeschränkte Tourenplanung (CVRP)