hallo
ich brauche dringend Hilfe
Es geht um NagelSchreckenbergModell.Und ich muss das programmieren in c-progammiersprache.
Ein Überblick dazu.
Das NagelSchreckenbergModell, als ein Vertreter der Zellulären Automaten, ist ein theoretisches
Modell zur Simulation des Strassenverkehrs. Zelluläre Automaten bestehen aus mehreren
Zellen, die einen Zustand haben und sich durch eine Aktualisierungsregel zeitlich entwickeln. Wie
geschaffen für eine Darstellung mit Arrays =)!
Wir wollen eine Ringstrasse simulieren. Diese Strasse ist eingeteilt in kurze Streckenabschnitte, die
Felder des Arrays. Auf jedem dieser Streckenabschnitte beendet sich zu Beginn der Simulation mit
der Wahrscheinlichkeit ro (der Verkehrsdichte) ein Auto. Jedes Auto hat eine zufällige Geschwindigkeit
zwischen 0 und vmax. Die Aktualisierung erfolgt in 4 Schritten:
• Beschleunigen Jedes Auto, dass noch nicht die Maximalgeschwindigkeit vmax erreicht hat,erhöht seine Geschwindigkeit um 1.
• Bremsen Falls der Abstand zum nächsten Auto kleiner ist als die aktuelle Geschwindigkeit,
bremst ein Auto soweit ab, dass es das nächste Auto nicht rammt.
• Trödeln Mit der Wahrscheinlichkeit p trödelt ein Fahrer, die Geschwindigkeit des Autos wird um 1 reduziert.
• Fahren Jedes Auto wird um die Anzahl Felder weitergesetzt, die seiner Geschwindigkeit entspricht.
Da es sich um eine Ringstraÿe handelt, folgt auf das letzte Arrayfeld wieder das erste.
Und die Aufgabe ist:
Ich muss ein Programm schreiben,welches das NagelSchreckenbergModell umsetzt und die zeitliche Entwicklung des Verkehrs auf dem Bildschirm ausgibt. Geeignete Parameterwerte sind zum
Beispiel, Strassenlänge 80 (je nach Breite eurer Anzeige), = 0.2, vmax = 5 und p = 0.15.Für die Erzeugung von Zufallszahlen muss ich zuerst einmal die Header stdlib.h und time.h inkludieren. Dann führt ihr zu Beginn eures Programms die Initialisierung des Zufallszahlengenerators mit srand (( unsigned int) time ( NULL ));
durch. Ganzzahlige Zufallszahlen zwischen 0 und n-1 erzeugt ihr nun mit
( int ) (n * ( rand () / ( RAND_MAX + 1.0))).
Wer dazu eine Ahnung hat schreib mir bitte
ich brauche dringend Hilfe
Es geht um NagelSchreckenbergModell.Und ich muss das programmieren in c-progammiersprache.
Ein Überblick dazu.
Das NagelSchreckenbergModell, als ein Vertreter der Zellulären Automaten, ist ein theoretisches
Modell zur Simulation des Strassenverkehrs. Zelluläre Automaten bestehen aus mehreren
Zellen, die einen Zustand haben und sich durch eine Aktualisierungsregel zeitlich entwickeln. Wie
geschaffen für eine Darstellung mit Arrays =)!
Wir wollen eine Ringstrasse simulieren. Diese Strasse ist eingeteilt in kurze Streckenabschnitte, die
Felder des Arrays. Auf jedem dieser Streckenabschnitte beendet sich zu Beginn der Simulation mit
der Wahrscheinlichkeit ro (der Verkehrsdichte) ein Auto. Jedes Auto hat eine zufällige Geschwindigkeit
zwischen 0 und vmax. Die Aktualisierung erfolgt in 4 Schritten:
• Beschleunigen Jedes Auto, dass noch nicht die Maximalgeschwindigkeit vmax erreicht hat,erhöht seine Geschwindigkeit um 1.
• Bremsen Falls der Abstand zum nächsten Auto kleiner ist als die aktuelle Geschwindigkeit,
bremst ein Auto soweit ab, dass es das nächste Auto nicht rammt.
• Trödeln Mit der Wahrscheinlichkeit p trödelt ein Fahrer, die Geschwindigkeit des Autos wird um 1 reduziert.
• Fahren Jedes Auto wird um die Anzahl Felder weitergesetzt, die seiner Geschwindigkeit entspricht.
Da es sich um eine Ringstraÿe handelt, folgt auf das letzte Arrayfeld wieder das erste.
Und die Aufgabe ist:
Ich muss ein Programm schreiben,welches das NagelSchreckenbergModell umsetzt und die zeitliche Entwicklung des Verkehrs auf dem Bildschirm ausgibt. Geeignete Parameterwerte sind zum
Beispiel, Strassenlänge 80 (je nach Breite eurer Anzeige), = 0.2, vmax = 5 und p = 0.15.Für die Erzeugung von Zufallszahlen muss ich zuerst einmal die Header stdlib.h und time.h inkludieren. Dann führt ihr zu Beginn eures Programms die Initialisierung des Zufallszahlengenerators mit srand (( unsigned int) time ( NULL ));
durch. Ganzzahlige Zufallszahlen zwischen 0 und n-1 erzeugt ihr nun mit
( int ) (n * ( rand () / ( RAND_MAX + 1.0))).
Wer dazu eine Ahnung hat schreib mir bitte