Tìm xe phía trước
Tìm đèn tín hiệu
Có xe
Tăng tốc Đi thẳng theo Cập nhật vận tốc hướng hiện tại
Vận tốc lớn
hơn xe trước Vượt xe trước Có chỗ trống
để vượt
Đi theo xe trước Có đèn Tăng giảm tốc độ theo trạng thái đèn S Đ S Đ S Đ S Đ Cập nhật trạng thái xe Start
Hình 3.5.2: Sơ đồ quá trình mô phỏng phương tiện tham gia giao thông.
Phương tiện giao thông khi tham gia giao thông trên đường sẽ lặp đi lặp lại các bước đi tạo thành vòng tuần hoàn khép kín. Vòng tuần hoàn chỉ dừng lại khi có sự tác động của người dùng (khi người dùng bấm nút Stop) hay khi phương tiện vượt ra khỏi phạm vi bản đồ.
Tại mỗi vị trí, phương tiện sẽ kiểm tra xem mình đã đi quá đoạn đường hiện tại chưa. Nếu đã đi quá rồi sẽ tìm đoạn đường tiếp theo để đi. Nếu ở một vị trí nào đó có thể có nhiều hướng đi khác nhau thì sẽ chọn ngẫu nhiên một trong các hướng đó.
Đầu tiên, phương tiện sẽ tìm kiếm một đèn tín hiệu giao thông ở phía trước mình, trong phạm vi nhìn thấy.
44
Nếu tìm thấy đèn tín hiệu sẽ tiến hành đọc trạng thái đèn, sau đó có các hành vi tương ứng với trạng thái đèn:
Đèn vàng: giảm tốc độ
Đèn đỏ: dừng lại.
Đèn xanh: Đi tiếp bình thường.
Tiếp theo, phương tiện giao thông sẽ tìm kiếm các xe phía trước mình. Nếu không tìm thấy xe nào sẽ tăng tốc độ.
Nếu tìm thấy xe phía trước, sẽ kiểm tra xem vận tốc xe mình có lớn hơn xe phía trước không.
Nếu vận tốc không lớn hơn sẽ đi thẳng theo hướng hiện tại.
Trường hợp vận tốc lớn hơn, sẽ tìm chỗ trống hai bên xe phía trước để vượt. Nếu không tìm thấy chỗ trống để vượt sẽ đi theo xe phía trước. Còn tìm được chỗ trống thì sẽ vượt xe phía trước.
Cuối cùng phương tiện giao thông sẽ tính toán quãng đường đi được và cập nhật vận tốc hiện tại.
Sau khi cập nhật trạng thái xe, chương trình sẽ quay lại chu kỳ mới và bắt đầu lại từ đầu từ trạng thái mới.