praktikum 1

Benutzeravatar
Maradatscha
Computerversteher
Computerversteher
Beiträge: 353
Registriert: 2. Okt 2006 18:53

praktikum 1

Beitrag von Maradatscha »

nasch_traffic_B(tf , vmax , s1 ini, s2 ini, pT , pU , pR )
sollte wohl eher
nasch_traffic_B(N, tf , vmax , s1 ini, s2 ini, pT , pU , pR )

sein
seh ich das richtig?

Pascha
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 242
Registriert: 6. Jun 2007 14:03

Re: praktikum 1

Beitrag von Pascha »

N ist doch die Anzahl der Zellen(Spalten) in einer Reihe, also Länge der Vektoren s1_ini und s2_ini oder täusche ich mich da?

Benutzeravatar
Maradatscha
Computerversteher
Computerversteher
Beiträge: 353
Registriert: 2. Okt 2006 18:53

Re: praktikum 1

Beitrag von Maradatscha »

vergesst es
wer lesen kann ist klar im vorteil, ich hatte warum auch immer bei der a) N mit in meinen Code gepackt ganz am Anfang, das steht aber gar nicht in der Aufgabenstellung wie ich gerade bemerke.
danke

d_s
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 134
Registriert: 24. Jan 2008 17:27

Re: praktikum 1

Beitrag von d_s »

Ich finde, folgender Ausschnitt aus dem Aufgabentext ist recht verwirrend formuliert (der erste Satz hat über 70 Wörter):
3b. Falls der Abstand d (in Zellen) eines Fahrzeugs auf der rechten Spur zum nächsten
Fahrzeug auf der rechten Spur nicht größer ist als die Geschwindigkeit v (in Zellen),
wird die Geschwindigkeit auf d - 1 reduziert und mit einer “Überholwahrschein-
lichkeit” pU auf die linke Spur gewechselt, falls der Abstand zum nachfolgenden
Fahrzeug auf der linken Spur mindestens so gross ist wie die erlaubte Maximalge-
schwindigkeit und ggf. die Geschwindigkeit des Autos auf die Größe der Lücke d - 1
zum vorausfahrenden Fahrzeug reduziert (Kollisionsvermeidung). Falls nicht uber-
holt wird, wird ggf. die Geschwindigkeit des Autos auf die Größe der Lücke d - 1
(auf linker und rechter Spur) reduziert (Kollisionsvermeidung und Verbot, rechts zu
überholen).
Was genau soll das Fahrzeug jetzt wann tun? Ich versuche mal, den Text in Pseudocode umzusetzen:

Code: Alles auswählen

IF auf rechter Spur AND Abstand nach vorne <= Geschwindigkeit THEN
    Geschwindigkeit = Abstand nach vorne rechts - 1

    IF Überholen? AND Abstand nach hinten links >= Maximalgeschwindigkeit THEN
        auf linke Spur wechseln
        Geschwindigkeit = Abstand nach vorne links - 1, falls Abstand zu gering
    ELSE
        Geschwindigkeit = Abstand nach vorne links - 1, falls Abstand zu gering
        Geschwindigkeit = Abstand nach vorne rechts - 1, falls Abstand zu gering
    ENDIF
ENDIF
Insbesondere verstehe ich nicht, was der ELSE-Zweig soll. Zumindest die zweite Zeile des ELSE-Zweiges ist redundant zur zweiten Codezeile, wird also nie etwas ändern.

Pascha
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 242
Registriert: 6. Jun 2007 14:03

Re: praktikum 1

Beitrag von Pascha »

*deleted* ;)

Alexis1987
Windoof-User
Windoof-User
Beiträge: 41
Registriert: 29. Apr 2007 16:58

Re: praktikum 1

Beitrag von Alexis1987 »

Hallo,

Ich hätt da mal ne Frage zur Aufgabenstellung.
Für mich persönlich gibt die Aufgabestellung keinen Aufschluss darüber ob sich die Fahrzeuge "rundenbasiert" oder "in Echtzeit" Bewegen.

Ich meine:
Angenommen ich habe eine Straße S1 und 2 Fahrzeuge A1, A2.
Habe ich soeben die neue Position von A1 anhand der Abstände und der Geschindigkeit ermittelt, eröffnen sich mir 2 Möglichkeiten:

1. Ich setzte A1 sofort auf die neue Position. Und errechne nun mit dem veränderten Zustand von S1 die neue Position von A2. (rundenbasiert)

2. Ich errechne erst noch die neue Position von A2 anhand des "alten" Zustandes von S1 und setzte dann A1 und A2 gleichzeitig auf Ihre neuen Positionen. (Echtzeit)

Ich persönlich denke das 2. die Richtigere Version ist da sie der Realität wesentlich näher kommt.
Außerdem würden sich bei der 1. Möglichkeit unterschiedliche Resultate ergeben je nachdem ob man die Straße "linksrum" oder "rechtrum" abarbeitet.

Nichtsdestoweniger würde ich gerne Wissen was ihr dazu sagt.
Es könnte ja gut sein das ich mich Irre, irgendetwas überlesen habe oder etwas schlichtweg nicht verstanden habe.

Gruß Alexis
Der Tofu-Burger schmeckt ausgezeichnet, wenn man ihn Kurz vor dem Verzehr durch ein saftiges T-Bone-Steak austauscht.

kde
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 123
Registriert: 19. Dez 2006 10:29
Kontaktdaten:

Re: praktikum 1

Beitrag von kde »

@Alexis1987
die neue position eines autos speicherst du immer zum nächsten simulationszeitpunkt. wenn du dir also gerade die autos zum zeitpunkt t in deiner matrix anschaust, musst du die neuen positionen einen zeitpunkt später (t+1) speichern. du hast also keine probleme damit, dass sich autos gegenseitig in die quere kommen, weil sich positionen nicht gleichzeitig ändern.

@d_s
du hast den else-teil meiner meinung nach falsch zusammengefasst:
es müsste eher so aussehen:

Code: Alles auswählen

IF auf rechter Spur AND Abstand nach vorne <= Geschwindigkeit THEN
    Geschwindigkeit = Abstand nach vorne rechts - 1

    IF Überholen? AND Abstand nach hinten links >= Maximalgeschwindigkeit THEN
        auf linke Spur wechseln
        Geschwindigkeit = Abstand nach vorne links - 1, falls Abstand zu gering
    ELSE, falls Abstand zu gering
        Geschwindigkeit = MIN(Abstand nach vorne links - 1, Abstand nach vorne rechts - 1)
    ENDIF
ENDIF
daher ist der teil auch nicht redundant.
Zuletzt geändert von kde am 29. Apr 2008 18:17, insgesamt 2-mal geändert.
Tutor in SE: Design (& Construction) SS 2011

Pascha
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 242
Registriert: 6. Jun 2007 14:03

Re: praktikum 1

Beitrag von Pascha »

Also ich hatte die gleiche Frage, habe es dann aber nach der 2. Version gemacht, da mir das auch sinnvoller vorkam und, wie du es schon gesagt hast, würde man verschiedene Resultate kriegen, wenn man die Reihenfolge ändert.

Benutzeravatar
Maradatscha
Computerversteher
Computerversteher
Beiträge: 353
Registriert: 2. Okt 2006 18:53

Re: praktikum 1

Beitrag von Maradatscha »

mir fehlt eine geschwindigkeit
wie schnell fährt ein auto, wenn es überholt, und keiner vor ihm auf der linken spur fährt?
das auto soll ja zunächst abbremsen, sodass es nicht mit dem vordermann auf der rechten spur kollidiert, dann links rausscheren und so schnell fahren, dass es nicht auf den linken vordermann auffährt. wie schnell fährt es also, wenn niemand vor ihm ist?

kde
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 123
Registriert: 19. Dez 2006 10:29
Kontaktdaten:

Re: praktikum 1

Beitrag von kde »

sobald das auto überholt hat es die geschwindigkeit distanz_nach_vorne_rechts-1. diese wird nach dem überholvorgang nicht erhöht, sondern höchstens nochmal reduziert, falls nach vorne_links zu wenig platz ist. wenn links kein auto fährt, behält es also die geschw. distanz_nach_vorne_rechts-1.
eventuell wird durchs trödeln noch 1 abgezogen.
Tutor in SE: Design (& Construction) SS 2011

Benutzeravatar
Maradatscha
Computerversteher
Computerversteher
Beiträge: 353
Registriert: 2. Okt 2006 18:53

Re: praktikum 1

Beitrag von Maradatscha »

nur mal angenommen unsere autofahrer fahren immer rechts dh die wahrscheinlichkeit wieder nach rechts einzuscheren ist 1
dann würde ein auto zum überholen ansetzen und dann gleich wieder einscheren
also nie überholen
richtig?

kde
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 123
Registriert: 19. Dez 2006 10:29
Kontaktdaten:

Re: praktikum 1

Beitrag von kde »

mhh, das kommt ja darauf an wie schnell das auto, welches überholt werden soll, fährt und wie groß die distanz zwischen den autos ist.
bei kleinen geschwindigkeiten und distanzen mag das sein, aber wenn z.b. das auto vorne mit 1 fährt und 8 einheiten hinter diesem befindet sich ein auto mit geschwindigkeit 8 und setzt nun zum überholen an, dann wird dessen geschw. nur auf 7 reduziert. die distanz zwischen den beiden autos ist jetzt aber viel kleiner als die geschwindgkeit des überholenden autos, also wird es nicht wieder rechts einscheren, sondern weiterhin links bleiben.
Tutor in SE: Design (& Construction) SS 2011

ivoch
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 199
Registriert: 3. Mär 2004 10:51

Re: praktikum 1

Beitrag von ivoch »

Die Geschwindigkeit v jedes fahrenden Autos wird mit einer “Trödelwahrscheinlichkeit”
pT um 1 reduziert.

Was soll dieser Satz bedeuten? Ich hab ihn 20 mal gelesen und kann immer noch nicht verstehen, was damit gemeint ist.

Und was ist mit den anderen 2 Wahrscheinlichkeiten pU und pR? Was für Werte können sie bekommen?

kde
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 123
Registriert: 19. Dez 2006 10:29
Kontaktdaten:

Re: praktikum 1

Beitrag von kde »

pT, pU und pR sind werte zwischen 0.0 und 1.0 (also z.b. 0.63).
du kannst also z.b. eine zufallszahl würfeln (rand) und dann schauen ob deine wahrscheinlichkeit pT größer oder kleiner als das würfelergebnis ist.
je nachdem ziehst du eben 1 von der geschwindigkeit ab (pT), überholst (pU) oder fährt recht rüber (pR).
Tutor in SE: Design (& Construction) SS 2011

Benutzeravatar
infinity_dev
Mausschubser
Mausschubser
Beiträge: 44
Registriert: 16. Okt 2006 01:32

Re: praktikum 1

Beitrag von infinity_dev »

Wir haben eine Situation bei der b) entdeckt, in der ein spurwechselndes Auto mit einem anderen kollidieren kann:

Code: Alles auswählen

S2  =

                                  |
                                  v
  - 1.  - 1.  - 1.  - 1.  - 1.    3.  - 1.  - 1.  - 1.    3.  - 1.  - 1.    1.  - 1.  - 1.    2.  - 1.
  - 1.    3.  - 1.  - 1.  - 1.  - 1.  - 1.  - 1.    0.  - 1.  - 1.    2.  - 1.  - 1.    2.  - 1.  - 1.
                                                    ^
                                                    |
S1  =

                                                    |
                                                    v
  - 1.    2.  - 1.  - 1.  - 1.  - 1.    0.  - 1.    1.  - 1.    0.  - 1.  - 1.  - 1.  - 1.  - 1.  - 1.
  - 1.  - 1.  - 1.  - 1.    3.  - 1.  - 1.    1.  - 1.  - 1.  - 1.    1.  - 1.  - 1.  - 1.  - 1.  - 1.
Die in der jeweils oberen Zeile markierten Autos sind die kollidierenden Autos. Sie kollidieren an der markierten Stelle in der unteren Zeile der linken Straße (S2). Bei der Simulation war die Bummelwahrscheinlichkeit=0, die Spurwechselwahrscheinlichkeiten=1 und max.Speed=3. Das Auto mit der 3 kann die Spur nicht wechseln, da unmittelbar vor ihm auf der rechten Spur ein Auto fährt. In der zweiten Zeile von S2 wird also eine 3 eingetragen. Das Auto mit 1 in S1 wechselt die Spur, da nach hinten ausreichend (>=max.Speed) Platz ist und reduziert seine Geschwindkeit auf 0. Damit landet es aber auf der gleichen Position, auf der gerade die 3 eingetragen wurde, die damit überschrieben wird.

Daher müsste es in der Regel 3b mMn statt
"falls der Abstand zum nachfolgenden Fahrzeug auf der linken Spur mindestens so gross ist wie die erlaubte Maximalgeschwindigkeit"
so lauten:
"falls der Abstand zum nachfolgenden Fahrzeug auf der linken Spur größer ist wie die erlaubte Maximalgeschwindigkeit"

Antworten

Zurück zu „Archiv“