Cancel
Showing results for 
Search instead for 
Did you mean: 

Fahrzeug Überholen

Experimenter
Experimenter

Hallo Leute,

 

ich bin gerade dabei für mein Seminar eine Autobahnstrecke zu simulieren.

Da ich bis jetzt keine Erfahrung mit Plant gemacht habe, hätte ich eine Frage zur Überholung von Fahrzeugen. In dem Modell wird jede Spur mit einem Weg dargestellt.

 

Wie kann ich ermitteln, ob ein Weg auf einer bestimmten Position frei ist. 

Denn ich möchte auf der linken Spur überholen aber die Kollision vermeiden.

 

Es wäre schön, wenn mir jemand sagen könnte, wie ich das am besten lösen kann.

 

Vielen Dank für eure Hilfe.

 

 

 

9 REPLIES 9

Re: Fahrzeug Überholen

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

es gibt einige Wege:

 

Sie könnten es auf eine Kollision ankommen lassen. Die Methode umlagern gibt false zurück, wenn die Position auf dem Weg bereits besetzt ist. Sie könnten es versuchen, bis umlagern true zurückgibt.

 

siehe auch hier: http://www.bangsow.de/detail.php?id=620

 

Sie können auch versuchen, auf eine Lücke zu warten. Dazu müssten Sie überprüfen, ob irgendein Fahrzeug sich "neben" Ihrem Fahrzeug befindet (für alle Fahrzeuge auf der Überholspur kein Fahrzeug mit bugPos >= aktuelles Fahrzeug heckPos oder heckPos <= aktuelles Fahrzeug bugPos).

bugPos und heckPos sind nicht überwachbar, deshalb müssten Sie ein wiederholtes Prüfen / Umlagern programmieren (z.B. x Versuche im Abstand von y sek. als Rekursion mit methAufr).

 

 

 

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Fahrzeug Überholen

Experimenter
Experimenter

 

Hallo Steffen_B,

 

vielen Dank für die schnelle Antwort.

Da ich in Plant Anfänger bin, hätte ich eine einfache Frage und zwar, wie spricht man genau die Fahrzeuge auf den Wegen an?

 

Weg1.fahrzeug?

 

Vielen Dank für deine Mühe.

 

VG

Re: Fahrzeug Überholen

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

am einfachsten über weg.inhaltsListe, Plant Simulation schreibt eine Tabelle mit BE, Anfangs- und Endposition (siehe Hilfe). Diese Tabelle könnten Sie dann mit Hilfe einer Schleife auswerten.

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Fahrzeug Überholen

Experimenter
Experimenter

Hallo Steffen_B,

 

ich habe eine inhaltsListe generiert,die eine Tabelle mit BE, Anfangs- und Endposition erzeugt. 

Allerdings kriege ich immer den Fehler, wenn ich die Tabelle mit Hilfe einer Schleife auswerten möchte. Woran könnte das liegen?

 

Danke schon mal im Voraus

 

VG

Re: Fahrzeug Überholen

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

Wenn Sie eine Tabelle ansprechen, müssen Sie zwei Zahlen übergeben (Spalte, Zeile).

Daneben sollten Sie erst bei zwei Einträgen in der Tabelle suchen:

 

is
do 
 
  for local n := 2 to Weg1Tabelle.dim loop
   obj1 := Weg1Tabelle[n,1];
   obj2 := Weg1Tabelle[n-1,1];
    if obj1.heckPos - obj2.bugPos <=3 then
     if obj1.umlagern(Weg2,(obj1.bugpos+obj1.laenge+0.1))=true then
      obj1.umlagern(Weg2,(obj1.bugpos+obj1.laenge+0.1));
     else
      obj1.speed :=obj2.speed*1.2;
     end;
    end;   
  next;

end;

 

 

Beim Umlagern sollten Sie überprüfen, ob der Platz auf Weg2 verfügbar ist (analog mit Inhaltsliste).

 

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Fahrzeug Überholen

Experimenter
Experimenter

Danke für die schnelle Antwort. 

 

Lieder hat das nicht funtioniert, da die rechte Seite der Zuweisung nicht mit der linken Seite kompatibel ist. 

 

obj1 := Weg1Tabelle[n,1];

Re: Fahrzeug Überholen

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

es fehlt die Deklaration der Variablen; die Variablen obj1 und obj2 müssen den typ object haben:

 

is

  obj1: object;

  obj2: object;
do 
 
  for local n := 2 to Weg1Tabelle.dim loop
   obj1 := Weg1Tabelle[n,1];
   obj2 := Weg1Tabelle[n-1,1];
    if obj1.heckPos - obj2.bugPos <=3 then
     if obj1.umlagern(Weg2,(obj1.bugpos+obj1.laenge+0.1))=​true then
      obj1.umlagern(Weg2,(obj1.bugpos+obj1.laenge+​0.1));
     else
      obj1.speed :=obj2.speed*1.2;
     end;
    end;   
  next;

end;

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net

Re: Fahrzeug Überholen

Experimenter
Experimenter

Leider selbst die Deklaration der Variablen hat nicht viel gebracht.

 

Aber vielen Dank trotzdem.

 

Re: Fahrzeug Überholen

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

Dim gibt bei der Tabelle xDim*yDim zurück.

Die Reihenfolge bei der Adressierung in einer Tabelle ist Spalte,Zeile.

 

Das ergibt folgendes:

 

is
 obj1: object;
 obj2: object;
do
 if Weg1Tabelle.ydim>=2 then
   for local n := 2 to Weg1Tabelle.ydim loop
    obj1 := Weg1Tabelle[1,n];
    obj2 := Weg1Tabelle[1,n-1];
  
        if obj1.heckPos - obj2.bugPos <=3 then
         if obj1.umlagern(Weg2,(obj1.bugpos+obj1.laenge+0.1))=false then
               obj1.speed :=obj2.speed*1.2;
         end;
        end;  
     next; 
  end;
  end;

 

 

Steffen Bangsow
freelance simulation specialist  
web: www.bangsow.eu
mail: steffen@bangsow.net