1 svar
77 visningar
Siasia är nöjd med hjälpen
Siasia 36
Postad: 16 dec 2023 15:45

Trafiksimulering

Jag har tre filer där bilar kommer in från höger och ska sorteras in i den övre filen "lane_west" om den har ett "W", och "lane_south" om den har ett "S".

Om det är fullt i den första filen hamnar de i en kö och släpps in vart efter.

Detta har jag skrivit för att sortera bilarna från första filen in i south eller west:

Def step(self):

   # Om sista platsen i west är fri och första bilen i kön heter 'W', flytta den till lane_west, samma för south
   if self.lane_west.last_free() and self.generator.step() == 'W':
       self.lane_west.enter(self.lane.remove_first()) # Lägg in den första bilen i "lane" in i "lane_west"
   elif self.lane_south.last_free() and self.generator.step() == 'S':
       self.lane_south.enter(self.lane.remove_first())# Flytta trafikljuset från lane2 till lane

Problemet tror jag är att "self.generator.step" inte väljer den bil jag vill ha, bilen längst till vänster i "lane" (markerad i bilden).

 

Följande info får inte ändras, utan det är Def step ovan som ska ändras, alternativt lägga till en ny metod.

def step(self):
"""Make one time step, reporting the desination of the next vehicle
(or None)."""
ind = self._arrivals[self._internal_time]
self._internal_time = (self._internal_time + 1) % len(self._arrivals)
# if == 1 -> W, if == 2 -> S, else -> None
return 'W' if ind == 1 else 'S' if ind == 2 else None

def remove_first(self): # Tar bort fordon i filens 1a position & returnera fordonet
v = self._the_lane[0]
self._the_lane[0] = None # Första position sätts till ledig
return v

class Lane:
def __init__(self, length): # Skapar tom fil, dvs inga fordon
self._the_lane = [None for x in range(length)] # Initiera alla elm till None (tomma positioner)

 

 

Jag misstänker alltså att det är "self.generator.step() == 'W'" som är felet och som behöver bytas ut, men jag vet inte hur jag ska tänka.

 

Jag testade även att byta ut mot denna, men den sa ifrån:

def get_first(self):
return self._the_lane[0]

Laguna Online 28603
Postad: 17 dec 2023 12:08

Behöver du ingen hjälp mer?

Svara Avbryt
Close