Proseminar: Mathematische Modellierung Thema: Evakuierung in Notsituationen Bearbeitet von: Patrick Volkmer Carolin Krämer Eva Jennewein Sandra Dörr 1 0. Einleitung: Wahrscheinlich war jeder schon einmal in der Situation, dass er sich in einer Menschenmenge wiedergefunden hat und sich Gedanken darüber gemacht hat, was passiert, wenn just in diesem Moment Panik ausbrechen würde. Dazu kommt noch, dass es in der Vergangenheit zahlreiche solche Situationen gab, bei denen häufig Opfer zu beklagen waren. Zum Beispiel musste 1997 im Düsseldorfer Stadion eine Person während eines Konzertes sterben und über 300 wurden verletzt. Dies hätte vielleicht verhindert werden können, wenn vorher ein geeigneter Evakuierungsplan vorgelegen hätte! Hier beginnt unser Proseminar „Mathematische Modellierung“ mit dem Thema: Evakuierung in Notsituationen. Ziel ist es eine realistische Einschätzung der Evakuierungszeit eines beliebigen Gebäudes zu erhalten. Hierbei ist es wichtig auftauchende Probleme frühzeitig aufzudecken und in unsere Überlegungen einzubringen. Fragen, die wir uns gestellt haben, sind zum Beispiel: Wo befinden sich Ausgänge? Welche davon werden primär genutzt? Wo besteht die Gefahr, dass sich in Gängen oder Fluren ein Stau bildet? Wieviele Personen befinden sich durchschnittlich in dem Gebäude? … 0.1. Aufgabenstellung: Mit diesem Hintergrund sollen wir ein Programm entwickeln, das uns ermöglicht eine Evakuierungszeit zu berechnen. Um dies ein wenig zu vereinfachen und zu veranschaulichen beziehen wir uns hier auf das Gebäude 42 der Universität Kaiserslautern. Grundriss Gebäude 42, Uni KL 2 1. Phasenmodell: Bei unserer Vorgehensweise brauchen wir so etwas wie einen roten Faden, der uns bei der Lösung des Problems leitet. Hierzu verwenden wir aus der Informatik ein sehr bekanntes Modell, das SE-Phasenmodell: Problem ↓ Anforderungsanalyse Anforderungsspezifikation ↓ Systementwurfsanalyse Systementwurfsspezifikation ↓ Detailentwurfsanalyse Detailentwurfsspezifikation ↓ Codierung und Integration Ausführbares Programm Anforderungsspezifikation: Eine Anforderunsanalyse wird durchgeführt, um das Problem vollständig zu verstehen. Wir haben uns in dieser Phase Gedanken darüber gemacht, welche Faktoren eine Evakuierung beeinflussen können. (siehe Kapitel 1.1) Systementwurfsspezifikation: Man sucht sich in der Umwelt passende Modelle, um das Problem angemessen zu modellieren. Unsere Modell-Ansätze werden wir zu einem späteren Zeitpunkt vorstellen. (siehe Kapitel 2.) Detailentwurfsspezifikation: Ein gefundenes Modell wird nun speziell auf das gestellte Problem angepasst. Daraus entstehen fertige Algorithmen. Wir haben hierzu einen Lösungsansatz näher bearbeitet. Ausführbares Programm: Nach der Kodierung und Integration der eben gefundenen Algorithmen, steht nun ein fertiges Software-System zur Verfügung. Hier haben wir einen ersten Programmentwurf implementiert. 1.1 Anforderungsspezifikation: Unsere Anforderungsanalyse hat eine Reihe von Faktoren ergeben, die eine Evakuierung beeinflussen. Diese haben wir in einer Tabelle zusammengefasst. Die Tabelle ist sicher nicht vollständig, zeigt aber, dass das Problem der Evakuierung ein sehr komplexes Problem ist. 3 Tabelle: Faktoren, die eine Evakuierung beeinflussen Notfallart Feuer Gas Wasser Explosion Notfallort Nachbargebäude Abgeschlossener Raum Oberes Stockwerk Erdgeschoss Keller Ausgang Zeitpunkt der Notfalls Während des Semesters Vorlesungsfreie Zeit Veranstaltung Messe Pause Personenanzahl Vollbesetzung Kleinere Gruppen Einzelpersonen Art der Personen Studenten Kinder/Jugendliche Erwachsenen Senioren Behinderte Menschen Gemischt Ausgänge Türen Notausgänge Fenster Größe Anzahl Ort Notsignale Schilder Feuermelder Rauchmelder Gebäudeausstattung Sitzreihen Tische Stühle Informationstafeln 4 2. Unsere Lösungsansätze: 1. Strom • Flüssigkeitsstrom • Elektrischer Strom 2. Verkehrsplanung 3. Automaten 4. Knoten und Kanten Wie man anhand der Lösungsansätze sehen kann, könnte man unser Problem auf ganz unterschiedliche Art und Weise angehen. 2.1. Modelle aus der Physik: Strom Unsere erste Idee zur Lösung unseres Problems kam aus der Physik. Wir wollten die Menschenmenge, die das Gebäude verlassen muss, als Menschenstrom modellieren, also als eine zusammenhängende Menge. Die Physik lieferte uns dazu zwei Modellansätze. Zum einen das Modell des Flüssigkeitsstroms, zum anderen das des elektrischen Stroms. 2.1.1. Flüssigkeitsstrom: Bei Flüssigkeiten unterscheidet man drei Arten der Strömung. Tritt bei einer Strömung keinerlei Reibung auf, so spricht man von idealer Strömung. Diese Art der Strömung kommt in der Realität allerdings nicht vor. Von laminarer Strömung spricht man immer dann, wenn die inneren Reibungskräfte groß im Verhältnis zu den beschleunigenden Kräften sind. Gedachte Flüssigkeitsschichten können ungehindert aneinander vorbeigleiten und durchmischen sich nicht. Sind dagegen die beschleunigenden Kräfte der Flüssigkeit groß im Verhältnis zu den inneren Reibungskräften, die inneren Reibungskräfte damit vernachlässigbar, so spricht man von turbulenter Strömung. Es kommt zur Ausbildung von Wirbeln, die gedachten Flüssigkeitsschichten durchmischen sich. Wir gehen bei unserem Problem zunächst von laminarer Strömung der Menschenmenge aus. Uns stellt sich dann die Frage, was an Hindernissen und Weggabelungen mit der Strömung passiert, ob „Turbulenzen“ entstehen, ob die laminare Strömung dort also in turbulente Strömung umschlägt. Zur Beschreibung laminarer Strömungen sind uns aus der Physik einige wichtige Größen bekannt. Die Reibungskraft FR, die der Bewegung der Flüssigkeit entgegengesetzt ist, ist proportional zum Querschnitt A und zum Geschwindigkeitsgefälle dv/dh. FR = η ∗ A ∗ dv dt 5 Die Proportionalitätskonstante η wird als Viskosität bezeichnet. Sie ist eine Stoffkonstante. ( 2 g ∗ r 2 ∗ ∆ρ ∗ 9 v η = ) (g: Erdbeschleunigung, r: Kugelradius, ∆ρ: Dichte, v: Sinkgeschwindigkeit der Kugel) Durchströmt eine laminare Flüssigkeit ein Rohr, so gilt das Gesetz von HagenPoiseuille. Der Strom ist die Änderung des Volumens mit der Zeit. I= dV π ∗ r 4 ∗ ∆p = dt 8 ∗η ∗ l (r: Rohrradius, ∆p: Druckdifferenz, η: Viskosität, l: Rohrlänge) Aus dem Gesetz von Hagen-Poiseuille ergeben sich eine Gleichung für die Reibungskraft der Rohrströmung FR = 8 ∗ π ∗ η ∗ l ∗ v und das Stokessche Gesetz FR = 6 ∗ π ∗ η ∗ r ∗ v Die Reynolds-Zahl gibt den Wert an, an dem eine laminare Strömung in eine turbulente Strömung umschlägt. Sie ist definiert durch Re = ρ ∗r ∗v η Bei unserer Arbeit mit dem Modell des Flüssigkeitsstroms sind wir allerdings leider relativ schnell auf eine Tatsache gestoßen, die sich auf unseren Menschenstrom nicht übertragen lässt. Für Flüssigkeiten, die ein Rohr durchfließen gilt A ∗ v = constant das heißt, verkleinert sich der Querschnitt der Rohrs, so erhöht sich die Fließgeschwindigkeit. Dies ist für eine Menschenmenge, die ein Gebäude verlässt, unrealistisch. An Engstellen, wie z. B. Türen, wird sich die Geschwindigkeit der hinausströmenden Menge sicher nicht erhöhen. Dieser Widerspruch zum gewählten Modell hat uns veranlasst, den Ansatz nicht mehr weiter zu verfolgen. 6 2.1.2. Elektrischer Strom: Bei dem elektrischen Strom muss man zwei verschiedene Schaltungen unterscheiden, die Reihenschaltung und die Parallelschaltung. Wir zeigen in einer kleinen Gegenüberstellung die Unterschiede zwischen diesen beiden Schaltungen: Widerstand R Reihenschaltung R ges = ∑ R i i=1,…,n Stromstärke I I ges = I1 = I 2 = ... = I n Spannung U U ges = ∑ U i Ohmsches Gesetz U = R *I ⇒ I ges = ∑ I i i=1,…,n Ui U j = = I ges Ri R j Parallelschaltung 1 R ges = ∑ i=1,…,n Ri i=1,…,n U ges = U 1 = U 2 = ... = U n ⇒ I i * R i = I j * R j = U ges Widerstand, Stromstärke und Spannung können auch noch anders definiert werden. Bei diesen Definitionen können wir verschiedene Variablen auf unser Problem übertragen. Widerstand: Leiterlänge 1 R = ρ * = spezifischer Widerstand * Leiterquerschnitt A = spezifischer Widerstand * Stromstärke: ∆Q Ladung I= = Zeit ∆t = Spannung: U= Menschenanzahl(n ) Zeit ∆E elektr.Energie = Ladung ∆Q = " Panik" Menschenanzahl(n ) 7 Ganglänge Gangbreite Mit diesen Gleichungen können wir nun eine Gleichung für die Zeit herleiten. U I ∆Q ∆n = I= ∆t ∆t R= Es gilt: P U= I ⇒R= ⇒U= U ∆n ∆t P n t wobei die Leistung P so definiert ist: P= = ⇒R= ⇒t= w Arbeit = t Zeit F * s Kraft * Weg = t Zeit F*s * t n² R * n² F*s An diesem Punkt lassen wir diesen Ansatz fallen, da wir keine Werte für ρ und F finden können, die auf unser Problem passen. Wir haben Verschiedenes ausprobiert, um auf die Werte zu kommen, aber stoßen dabei immer wieder auf Widersprüche. Zum Beispiel kommt es vor, dass sich die Zeit rauskürzt, oder das die Proportionalität zwischen Kraft und Widerstand mit der Realität nicht übereinstimmt. Anmerkung: Um auf die Evakuierungszeit zu kommen, können wir auch eine andere, einfachere s s ⇒t= Gleichung benutzen: v = t v Wenn wir dabei von einer Person ausgehen, die sich in der Mitte des Audimax befindet und mit einer durchschnittlichen Geschwindigkeit von 1,3 m/s in Richtung Ausgang des Gebäudes geht, erhalten wir einen Wert von t ≈ 21,56s. Die Schrittgeschwindigkeit wurde von uns empirisch ermittelt. Da wir dieses Modell aber nicht auf mehrere Personen übertragen konnten, ließen wir diesen Ansatz auch fallen. 8 2.2. Modell aus der Verkehrsplanung Ein weiterer Ansatz zur Lösung unseres Problems war die Verkehrsplanung. Dabei sollte die Menschenmenge analog zu Autoströmen betrachtet werden. Diesen Ansatz haben wir allerdings gleich verworfen, da fahrende Autos wesentlich mehr eingeschränkt sind als sich fortbewegende Menschen. Während Autos im fließenden Verkehr nur geradeaus bzw. an Kreuzungen zusätzlich links und rechts fahren können, sind Menschen in der Lage, spontan ihre Richtung zu ändern. Außerdem müssen Menschen keine Verkehrsregeln beachten. 2.3. Modell aus der Informatik: Automaten Eine kurze Definition vorweg: Ein Automat ist ein Modell zum Beschreiben des Ablaufs der Problemlösung. Wir werden das spätere Programm in der Programmiersprache Java implementieren. Dazu muss bemerkt werden, dass Java eine objekt-orientierte (OO) Sprache ist. Mit diesem Hintergrund machen wir uns Gedanken über die Modellierung von Menschen als Automaten. Nun ist jedes Objekt definiert durch seine Zustände und die Werte seiner Variablen. Diese sind in unserem Fall: - momentane Position getPos(); Bewegungsrichtung moveforward(double meter); Richtung ändern turn(double grad); bevorzugter Ausgang getDoor(); alternativer Ausgang getAltDoor(); Parameter für Zulässigkeit obiger Operationen boolean isOK; Stellen wir uns also vor, eine Menschenmasse sei als Menge von Automaten implementiert. Da unser Algorithmus später auf ein beliebiges Szenario “losgelassen“ wird, hat er iterative Gestalt. Nehmen wir aber zur Verdeutlichung des auftretenden Problems bei diesem Ansatz das konkrete Beispiel Audimax 42-115 der UNI KL: Irgendein Mensch sitzt zunächst in einer beliebigen Reihe des Hörsaals. Bei Eintritt der Notsituation ermittelt die Methode getPos() den aktuellen Aufenthaltsort. Dann wird per getDoor() der bevorzugte Ausgang errechnet. Je nachdem, wie die bisher gesammelten Daten zueinander stehen, entschließt sich die Person mittels turn und anschließendem moveforward links oder recht die Sitzreihe entlang zu gehen, bis sie ans Ende des Ganges kommt. Dort wird überprüft ob der mit getDoor() gefundene Ausgang immer noch isOK = true ist, sollte dies nicht der Fall sein, so errechnet getAltDoor() einen alternativen Ausgang. isOK = false wird genau dann angenommen, wenn der Ausgang blockiert ist, egal ob durch Personen oder durch verschlossene Türen. Sukzessive geht dies mit turn moveforward und getDoor bzw. getAltDoor so weiter, bis die Person an einem Ausgang angekommen ist. Prinzipiell geht das. Aber: 9 Es treten Konfliktsituationen auf, wenn zum Beispiel zwei Personen an sich kreuzenden Wegen aufeinander treffen. Wer hat hier Priorität und bekommt somit die Ressourcen zugesprochen? Dies lässt sich noch durch eine Zufallsfunktion entscheiden, allerdings muss jetzt gespeichert werden, dass mindestens eine Person in mindestens einem wartenden Zustand ist. Da es sich aber um einen speicheraufwendigen Algorithmus handelt, nehmen die einzelnen Speicherzustände in unserem Audimax mit etwa 660 Menschen astronomische Werte an. Um diese Werte zu verwalten stehen uns heute zwar normale PC’s zur Verfügung, allerdings auf Kosten der Rechenzeit. Der PC berechnet zuerst alle Zustände und arbeitet diese erst danach schrittweise ab. Da wir es im wahrsten Sinne des Wortes “eilig“ haben und es sich um Rechenzeiten um circa 15 bis 20 Minuten dreht, eignet sich diese Art der Lösung für unser Problem nicht. Für spätere Ansätze diesbezüglich sei dem Leser nochmals gesagt, dass der Algorithmus prinzipiell umsetzbar ist! 2.4. Modell aus der Graphentheorie: Knoten und Kanten 2.4.1. Allgemeine Grundlagen Dieses Thema war für uns ein ganz ungekanntes Gebiet und wir mussten uns erst in den Stoff einarbeiten. Hierzu ist es erst mal wichtig herauszufinden, was überhaupt ein Knoten bzw. eine Kante ist. In der Theorie unterscheidet man zwischen den statischen Komponenten und den dynamischen Komponenten. - Statische Komponenten sind Komponenten, die vorgegeben sind und die wir nicht verändern können, wie Knoten und Kanten. Knoten entsprechen Entscheidungspunkten, das können bei uns Ende von Sitzreihen, Ausgänge von Räumen/Gebäuden oder Kreuzungen sein. Kanten sind die Verbindungswege zwischen den einzelnen Knoten, wie z.B. Gänge, Flure, Wege oder Straßen. - Dynamische Komponente können sich jederzeit verändern. Sie sind individuell. Dazu gehören u.a. Bewegungsgeschwindigkeit, Kapazität (Fassungsvermögen) und Ausfallwahrscheinlichkeit. Diese kann man als zeitabhängige Funktionen über die Knoten und Kanten darstellen. 10 2.4.2. Anwendung auf unser Problem Diese Grundlagen galt es jetzt auf unser Problem anzuwenden. Als erstes betrachten wir den Audimax. Hierzu überlegen wir uns zuerst, wie wir die Verteilung der Knoten im Raum wählen müssen. Anschließend verbinden wir die Knoten miteinander. Die Knoten und Kanten orientieren sich an den Sitzreihen des Audimax. Das Ergebnis sieht wie folgt aus: Diese Bild zeigt unser Ergebnis. Die drei roten Punke stellen die Ausgänge dar. Wenn man dort angekommen ist, ist man außerhalb des Gebäudes. Die schwarzen Punkte befinden sich alle im Inneren des Gebäudes. Der Punkt A kennzeichnet den Eingangsbereich, der für mehrere Räume als Fluchtweg dient. Als nächstes belegten wir die Kanten mit ihren Abständen zwischen den Knoten. Diese Zahlen errechneten wir aus dem Grundriss des Audimax. Die Angabe ist in Meter gewählt. Mit Hilfe dieser Daten berechneten wir, von jedem Knoten den schnellsten Weg, um ins Freie zugelangen. Dies machten wir nach der Methode des „Kürzesten Weg“. 11 Knoten nach Ausgang A nach 1 B nach 1 C nach 1 C nach 2 D nach 1 D nach 2 E nach 1 E nach 3 F nach 1 F nach 3 G nach 2 H nach 2 I nach 3 J nach 3 Berechnete Entfernung 22,56 m 16,2 m 33,9 m 18 m 31,2 26 m 31,2 m 26 m 33,9 m 18 m 10 m 18 m 18 m 10 m Kürzester Weg + + + + + + + + + + Diese Tabelle zeigt das Ergebnis, welches sich aus dieser Methode ergab. Wir haben der Einfachheit halber unwahrscheinliche Ergebnisse weggelassen. Die mit einem + gekennzeichneten Ergebnisse sind diejenigen, mit dem geringsten Abstand zum Ausgang. Hier nach wären die Ausgänge 2 und 3 die am Meisten genutzten Ausgänge, wenn alle Anwesenden sich nur nach dem kürzesten Weg entscheiden würden. Die Menschen würden sich an diesen beiden Ausgänge stauen. Mit der Realität wäre dieses Ergebnis nicht zu vereinbaren. Nun überlegen wir, wie wir unser Modell verbessern können, um ein sinnvolleres Ergebnis zu erhalten. Die Kanten, die ja unsere Gänge im Hörsaal sind, können nicht beliebig viele Menschen fassen. Deshalb müssen wir uns Kapazitäten der einzelnen Kanten überlegen, die uns angeben, wie viele Menschen pro Zeiteinheit durch die Gänge gehen können. Dazu betrachteten wir die einzelnen Weglängen. Eine Person braucht einen Meter nach vorne und es können immer zwei Personen nebeneinander gehen, ohne sich gegenseitig zu behindern. Das heißt auf eine Kante mit einer Weglänge von 8m passen 16 Personen Kante ( Dieses Verfahren haben wir in manchen Fällen etwas geändert, da uns die Begebenheiten des Raumes bekannt sind, z.B. die Kante C nach G fasst nur 8 Personen, da dieser Weg für mehr Personen zu eng ist. 12 Dies führte uns zu folgendem Ergebnis: Rote Punkte: Ausgänge; schwarze Punkte: Knoten; schwarze Zahlen: Abstände in m; blaue Zahlen: Kapazitäten; grüne Zahlen: Anzahl der Personen im jeweiligen Abschnitt. Um einen Raum evakuieren zu können, müssen sich Leute in diesem befinden. In unserem Fall sind das 660 Personen ( im Audimax). Um die Rechnung etwas zu vereinfachen belegen wir unsere Knoten mit Personen, das heißt wir gehen davon aus, dass sich die Personen an den einzelnen Punkten befinden. Hierzu überlegen wir uns erst, wie viel Personen sich zwischen den Knoten befinden. Die stellen die grünen Zahlen im Bild oben dar. Dieses Ergebnis erhält man durch Auszählen der Sitzplätze Es befinden sich also 440 Personen im gesamten oberen Teil ( zwischen den Knoten B, C, D, E und F) und jeweils 110 rechts und links der grünen Linie im unteren Teil. Diese Personen müssen jetzt im nächsten Schritt auf die einzelnen Knoten verteilt werden. Hierzu teilen wir die Zahlen erst einmal auf die einzelnen Gebiete auf. 13 Aus diesen Zahlen ermitteln wir dann die Belegung unserer Knoten. Wir überlegen uns dabei nur, wo werden die einzelnen Leute wohl hingehen. Nehmen wir einmal Knoten D. Dieser Knoten bekommt aus vier Teilgebieten Leute zugeteilt. Aus dem Viereck, in dem 60 Personen sitzen werden etwa 15 zu D gehen (60/ Anzahl der Knoten) und aus dem Stück, wo sich 50 Personen befinden wird etwa die Hälfte diesen Knoten wählen, also 25 Personen. Von den 220 werden 55 Leute zu Knoten D gehen und etwa 27 Menschen kommen aus dem letzten Teil zum Knoten D. ( Es sollte hierbei erwähnt werden, dass wir uns bei den letzten beiden Werten überlegt hatten, dass der Knoten B doppelt zählt, was bedeutet, dass ihm wegen den räumlichen Begebenheiten – hier befindet sich eine Doppeltür - die doppelte Anzahl von Menschen zufließen) Für Knoten D erhalten wir: 15+25+55+27=122 Personen. Knoten A B C D E F G H I J Anzahl der Personen 0 222 42 122 122 42 15 40 40 15 Diese Tabelle stellt unsere Wahl, der Belegung der Punkte dar. Jetzt fehlt eigentlich nur noch zu erläutern, was mit einer Zeiteinheit gemeint ist. Diese Größe wird berechnet, in dem man sich überlegt, wie lange brauch eine Person zum Beispiel vom Punkt G durch den Ausgang 2 bis sie draußen ist. Hierzu dient die Gleichung v = s/t. Wir erhalten, wenn wir die Formel nach t auflösen: t = s/v. Die Strecke s ist uns mit 10m bereits bekannt und v ist variabel, denn die Geschwindigkeit von einer reinen Männergruppe ist anders, als die von einer Frauengruppe oder gemischten Gruppe. Wir gehen hier immer von einer Männergruppe aus, die sich mit einer Geschwindigkeit von 1,3 m/s bewegt. Hieraus folgt: t = 10m/ 1,3m/s = 7,7s Dieser Wert entspricht einer Zeiteinheit. Anhand dieser jetzt vorgestellten Evakuierungszeit nun beginnen. 14 Größen kann unsere Berechnung der 2.4.3. Berechnung der Evakuierungszeit a: Audimax Ausgangssituation: Schwarze Zahlen: Anzahl der Personen an den Knoten; blaue Zahlen: Kapazitäten; rote Zahlen: Anzahl der evakuierten Personen Diese Situation rechnen wir auf eine Zeiteinheit um. Dies ist nicht unbedingt notwendig, jedoch macht es die Rechnung leichter. Bei der Rechnung haben wir überlegt, wie viele Menschen sich wo nach jeweils einer Zeiteinheit befinden. Schauen wir uns das einmal bei der ersten Zeiteinheit an: Betrachten wir Knoten E. Während einer Zeiteinheit verlassen 50 Personen diesen Knoten. Diese Zahl kommt zustanden, wenn man sich überlegt, dass nach Knoten F 20 und nach Knoten I auch 20 Personen „abfließen“. Zu Knoten B gehen 10 Personen. 15 Dieses Verfahren macht man für jeden Knoten. Dieses System wird solange durchgeführt, bis alle Personen aus dem Gebäude sind. Die Rechnung sieht folgendermaßen aus: 16 17 Wir erhielten, dass der Audimax nach 12 Zeiteinheiten vollkommen leer war. Da eine Zeiteinheit ja 7,7s ist erhalten wir: 12 *7,7 = 92,4s. Nach dieser Zeit ist der Raum evakuiert. Dieses Verfahren ist nun auf alle anderen Räume übertragbar. Dies haben wir dann auch für die anderen Hörsäle analog gemacht. 18 b: Mittlerer Hörsaal Hier sitzen 150 Personen. In diesem Hörsaal ist ein Notausgang. 19 c: Kleiner Hörsaal Dieser Raum ist mit 60 Personen belegt und hat keinen Notausgang. 20 Diese Zeiten geben an, wie schnell man die einzelnen Säle evakuieren kann, wenn immer nur einer besetzt ist. Was ist aber wenn alle Säle belegt sind? Unsere Überlegung hierbei ist, dass wir davon ausgehen, dass alle Personen, die durch den Eingangsbereich das Gebäude verlassen, alle den selben Ausgang benutzen. Die Zeit ändert sich auch nur in diesem Bereich. Die Personen, die durch die Notausgänge gehen sind nicht betroffen. Dazu ist es notwendig noch einmal zuschauen, wie die Leute im Eingangsbereich, sprich am Knoten A, an- bzw. abfließen. . Man sieht, da sich die Personen am Knoten A erst ansammeln und dann ab der 11ten abfließen. Die drei Hörsäle sind nach 15 Zeiteinheiten evakuiert. Das entspricht einer Zeit von 115,5s. In dieser Zeit sind insgesamt 870 Personen evakuiert, wenn sich alle diese Leute mit einer Geschwindigkeit von 1,3m/s bewegen und keine Panik ausbricht. 21 3. Das Programm Nachdem unser Modell nun steht, gilt es ein Programm zu schreiben, das dem Benutzer die voraussichtliche Evakuierungszeit berechnet und Vorschläge zur Raumaufteilung, je nach den individuellen Voraussetzungen, ausgibt. In diesem Abschnitt wird die Funktionsweise unseres fertigen Programms erklärt. Wichtig zu wissen ist für den Leser, dass wir in der Implementierung selbst eigentlich zweigleisig fahren: Zum einen werden ausschließlich die oben genannten Ausgaben berechnet und zum anderen die eingelesenen Daten bezüglich einer normierten Grafik angezeigt. Zur besseren Verständlichkeit beschäftigen wir uns zuerst mit der Ermittlung der Evakuierungszeit und Platzierung der Ausgänge. Der Benutzer tätigt zu Beginn verschiedene Eingaben: - Anzahl der Personen im Hörsaal - Art des Publikums (hat Einfluss auf die Bewegungsgeschwindigkeit) - Fläche des Gebäudes - Anzahl der zur Verfügung stehenden Ausgänge - deren jeweilige Breite - Genauigkeitsgrad Als erstes berechnet das Programm den Radius des Hörsaals und den Umfang. Dann werden die Ausgänge generiert, dies geschieht, indem, dem Kreis entsprechend, 360° durch die Anzahl der gewünschten Ausgänge geteilt wird. Verbindet man nun die Ausgänge miteinander, entsteht ein regelmäßiges n-Eck. Somit ist die Genauigkeit in Stufe 1 erreicht. Die Kantenlänge nennen wir S1. Da es sich bei einem Teilstück des n-Ecks um ein gleichschenkliges Dreieck handelt und wir schon einen Winkel und die beiden Längen der Schenkel wissen, können wir mittels: „In jedem beliebigen Dreieck ist das Quadrat über einer Seite gleich der Summe der Quadrate über den beiden anderen Seiten, verringert um das doppelte Produkt aus diesen beiden anderen Seiten und dem Cosinus des eingeschlossenen Winkels.“ die Länge von S1 errechnen. Formel: a² = b² + c² - 2*a*b*cos(α). Wobei α der eingeschlossene Winkel zwischen b und c ist. 22 Um einen weiteren Knoten zu setzen und somit die Genauigkeit zu verbessern, rechnet der Algorithmus T1 aus und setzt bei (r/2, T1) weitere Knoten. Das entspricht der Genauigkeit der Stufe 2. Von diesen Knoten ausgehend lässt sich wiederum ein regelmäßiges n-Eck konstruieren. Sukzessive erhalten wir S2, ... und T2, ... . Je mehr Knoten wir setzen, desto realistischer ist am Ende die berechnete Evakuierungszeit, allerdings ist es auch hier sinnvoll bei etwa T5 zu stoppen, da sonst zu große Ungenauigkeiten seitens der graphischen Darstellung auftreten. Wir sind nun an einer Stelle angelangt, wo wir über die gegebene Örtlichkeit ein Netz aus Knoten und Kanten gelegt haben. Mittels eines stochastischen Prinzips lässt sich die Menschenmenge auf die einzelnen Knoten aufteilen, was dem Zustand unmittelbar nach Eintritt der Notsituation entspricht. Jetzt gelangen die Personen über die jeweiligen Kanten Ti, deren Kapazitäten sich durch deren Länge und Breite ergeben, sukzessive zu den Ausgängen. Natürlich kommt es durch die verschiedenen Kapazitäten der Gänge und Breiten der Ausgänge zu Stauungen, wie im richtigen Leben. Sobald der Letzte das Gebäude verlassen hat werden die einzelnen Zeiten über den Kanten miteinander verrechnet und die Evakuierungszeit ausgegeben. Jetzt muss noch die graphische Ausgabe implementiert werden: Da ein Hörsaal mit 1000 Quadratmeter genauso dargestellt werden muss wie ein Übungsraum mit 100 Quadratmeter, müssen wir eine normierte Grafik erstellen. Unsere Fenstergröße wird auf 600 x 600 dpi festgelegt. Mittels verschiedener von Java bereitgestellter Funktionen lassen wir zunächst einen Kreis zeichnen. Auf diesem werden wie oben beschrieben die Ausgänge generiert. Dann wird vom selben Mittelpunkt aus ein Kreis mit dem Radius r/2 gezeichnet. So erhalten wir sukzessive obiges Bild. Wenn noch die Knoten untereinander und mit den Ausgängen verbunden wurden, steht die fertige Ausgabe. Zwar gibt die Simulation nur das Ergebnis für einen Saal aus, doch können mehrere Gebäude durch Hintereinanderausführung des Algorithmus modelliert werden. 23 4. Ausblick: Dieses Programm kann man nun ganz nach den Vorlieben eines eventuellen Käufers individuell erweitern. Wenn der potentielle Käufer eine wesentlich genauere Zeitangabe wünscht, dann müsste man den Raum mit mehr Knoten belegen. Vielleicht würde auch eine Simulation der Evakuierung in Echtzeit einen Interessenten überzeugen. Aber was auf jeden Fall noch zugefügt werden müsste, wäre die Möglichkeit, den Grundriss eines beliebigen Gebäudes vorgeben zu können. 24