2.3.1. Một số đặc điểm của giao thông ở Việt Nam
Hệ thống giao thông nước ta tương đối phức tạp. Sự phức tạp này đến từ nhiều yếu tố khác nhau. Một mặt, cơ sở hạ tầng giao thông nước ta còn chưa phát triển, trong khi lượng phương tiện tham gia giao thông ngày càng tăng với mức độ chóng mặt. Mặt khác, sự thiếu ý thức của người dân khi tham gia giao thông cũng là cho hệ thống giao thông trở nên hỗn độn.
Hệ thống giao thông trước hết gồm các hệ thống đường xá, hệ thống đèn giao thông và các biển báo. Hầu hết các đường xá ở nước ta nhỏ hẹp, đặc biệt là trong các thành thị. Nhiều ngã ba, ngã tư không có đèn giao thông, hay có đèn gioa thông nhưng thời gian bật đèn xanh đèn đỏ chưa hợp lý. Nhiều tuyến đường một chiều, hai chiều có dải phân cách không phù hợp tạo ra những hành vi rẽ trái, rẽ phải hoặc quay đầu không đúng của người tham gia giao thông.
Ở nước ta hiện nay có nhiều loại phương tiện giao thông khác như gồm xe đạp, xe máy, ô tô, xe buýt, thâm chí cả các phương tiện không đạt tiêu chuẩn an toàn như xe ba gác, xích lô. Lượng phương tiện tham gia giao thông là rất lớn, trong khi hệ thống đường xá nhỏ hẹp nên thường xảy ra nhiều ách tắc, đặc biệt là trong các giờ cao điểm.
Một trong những yếu tố quan trọng ảnh hưởng tới giao thông của nước ta chính là yếu tố con người. Do ý thức chưa cao, cộng thêm sự thiếu hiểu biết về các tín hiệu, biển báo, nên sự di chuyển của người tham gia giao thông là rất tùy tiện. Điều đó càng làm tăng tính hỗn độn của giao thông Việt Nam.
Từ những đánh giá trên về thực trạng giao thông của nước ta, tôi đã đưa ra những ý tưởng xây hệ thống mô phỏng sao cho phù hợp. Do hệ thống mô hình dựa trên Agent trong việc mô phỏng nên việc đầu tiên cần làm là xác định các yếu tố môi trường, xác định các Agent trong một hệ thống giao thông.
28
Trước khi đi vào trình bày chi tiết thiết kế các thành phần của hệ thống mô phỏng, phần này sẽ đưa ra các ý tưởng về cách thức xây dựng hệ thống. Đầu tiên, tôi xin đưa ra ý tưởng về xây dựng hệ thống đường xá, đóng vai trò môi trường trong hệ thống giao thông. Tiếp theo sẽ là mô tả chi tiết các ý tường về xây dựng Agent đóng vai trò người tham gia giao thông. Các ý tưởng xây dựng Agent sẽ bao gồm xây dựng các hành vi, các thuộc tính và mục tiêu của Agent.
2.3.2. Xây dựng hệ thống đường xá
Ở những phần trên, tôi đã trình bày về một số hệ thống mô phỏng giao thông trước đây. Đây đều là những hệ thống mô phỏng cho phép tạo ra hệ thống đường từ các thành phần cơ bản. Tuy nhiên, như đã đề cập, hệ thống giao thông Việt Nam khá phức tạp, không theo một quy luật nào. Việc xây dựng hệ thống đường xá của Việt Nam bằng các công cụ mô phỏng này là rất khó khăn. Vì vây, một thành phần quan trọng cần xây dựng trong hệ thống mô phỏng giao thông Việt Nam chính là hệ thống đường xá. Hệ thống đường xá đóng vai trò môi trường trong hệ thống mô phỏng giao thông sử dụng mô hình dựa trên Agent (ABM). Tôi cũng đã cố gắng xây dựng các thành phần cơ bản để tạo nên đường xá. Các thành phần này sẽ giúp tạo ra nhiều mô hình đường xá khác nhau, vì thế mà ta có thể mô phỏng được nhiều hệ thống giao thông phức tạp trong thực tế.
Với một hệ thống giao thông phức tạp gồm nhiều tuyến đường, ta có thể chia chúng thành các vùng, các đoạn đường nhỏ hơn. Tôi đã xây dựng hệ thống đường xá từ các thành phần đơn giản là vùng đường và các đoạn đường trong mỗi vùng. Đây có thể coi là thành phần cơ bản nhất của hệ thống đường xá cũng như hệ thống mô phỏng giao thông.
Mỗi vùng sẽ có các lối vào và các lối ra. Giữa mỗi lối vào và một lối ra của một vùng đường sẽ có một đoạn đường nào đó. Hướng của đoạn đường là hướng từ lối vào đến lối ra. Khi ghép nhiều vùng đường với nhau, các đoạn đường trên các vùng sẽ tạo với nhau thành các tuyến đường. Các Agent đóng vai trò người lái xe trên đường có thể chọn cho mình một tuyến đường đi gồm nhiều đoạn đường nối tiếp nhau, từ vùng này sang vùng kia để có thể đến nơi mà mình muốn đến.
Như vậy trong mỗi vùng, các đoạn đường giữa một lối vào và một lối ra không nhất thiết là duy nhất một đoạn đường mà nó có thể là một chuỗi các đoạn đường nối tiếp nhau. Điều này là rất hữu ích vì nó có thể giúp tạo ra các vùng đường tùy ý.
29
Chẳng hạn như ta có thể thiết kế một vùng vòng xuyến bằng cách xấp xỉ các đoạn đường cong của vòng xuyến thành các đoạn đường thẳng ngắn nối tiếp nhau.
Từ các thành phần cơ bản như vùng đường, các đoạn đường trong mỗi vùng, ta có thể xây dựng được nhiểu hệ thống giao thông phong phú, đa dạng và phức tạp trong thực tế. Cách thiết kế các thành phần đường xá mà tôi đưa ra không chỉ giúp tạo ra một cách linh động các hệ thống giao thông mà còn có tác dùng nâng cao hiệu quả trong việc tính toán cách lái xe của cácAgent đóng vai trò người tham gia giao thông. Trước khi mô tả tác dụng này ở phần mô tả các thuật toán, tôi xin đưa ra các ý tưởng về xây dựng các Agent đóng vai trò người tham gia giao thông ở phần tiếp theo.
2.3.3. Xây dựng Agent đóng vai trò người tham gia giao thông
Phần trước đã đề cập đến cách thức thiết kế đường xá nhằm tọa ra một hệ thống giao thông bất kỳ. Dù hệ thống giao thông này có phức tạp cỡ nào, ta luôn có thể tìm được một tuyến đường từ một lối vào đến một lối ra khỏi toàn bộ hệ thống giao thông. Ở đây, ta giả thiết các Agent khi bắt đầu tại một đầu vào sẽ có mục tiêu là sẽ đi đến một đầu ra nào đó của hệ thống và mục tiêu này là không đổi trong suốt quá trình di chuyển của Agent. Giả sử trên một hệ thống giao thông được tạo ra chỉ có một Agent đang di chuyển, thì việc di chuyển của Agent hết sức đơn giản. Agent đó chỉ cần di chuyển theo một tuyến đường định trước, đi hết đoạn đường này sang đoạn đường khác hay từ vùng đường này sang vùng đường khác rồi kết thúc di chuyển khi đến đích. Nhưng khi có nhiều Agent trên hệ thống này, ngoài việc tuân thủ các luật lệ của môi trường ở đây là hệ thống đường xá, các Agent cần chú ý đến các Agent khác khi di chuyển. Tùy từng tình huống, và cũng tùy vào các Agent khác nhau mà cách di chuyển của nó sẽ khác nhau. Trong phần này, tôi xin trình bày về các hành vi và các thuộc tính của mỗi Agent.
Các hành vi cơ bản của mỗi Agent
Để di chuyển, các Agent cần có các hành động hợp lý tùy từng tình huống. Mỗi hành động này các Agent sẽ đảm bảo một số yêu cầu là: Hướng đến đích, không va chạm với lề đường và không va chạm với các Agent khác. Tôi xin đưa ra các hành động cơ bản nhất của mỗi Agent bao gồm:
30
Tăng tốc
Giảm tốc
Đánh lái hay hành động điều chỉnh hướng xe
Các Agent sẽ thực hiện tăng tốc khi vận tốc hiện tại đang thấp hoặc đang ở trạng thái dừng và phải đảm bảo ở phía trước không có Agent nào. Việc giảm tốc sẽ được thực hiện khi các Agent nhận thấy nếu duy trì ở vận tốc hiện tại thì sẽ gây ra va chạm với Agent khác hoặc va chạm với lề đường… Để điều chỉnh xe theo đúng hướng đi của đường hoặc cần điều chỉnh hướng đi để tránh các Agent khác, mỗi Agent đều cần phải có hành động là đánh lái.
Xây dựng các thuộc tính đặc trưng cho mỗi Agent
Tùy từng tình huống khác nhau mà các Agent sẽ đưa ra các hành động khác nhau. Tuy nhiên, kể cả khi gặp cùng một tình huống, những Agent khác nhau cũng sẽ chọn các hành động khác nhau. Sự khác nhau này được tạo ra bởi sự khác nhau về thuộc tính của các Agent.
Dựa vào những nhận xét trên, tôi đã xây dựng các thuộc tính mang tính đặc trưng cho mỗi Agent. Giá trị của các thuộc tính này sẽ phụ thuộc vào từng loại phương tiện tham gia giao thông. Theo hệ quả, giá trị của các thuộc tính này sẽ ảnh hưởng đến lựa chọn hành động lái xe của từng Agent đóng vai trò người tham gia giao thông. Các thuộc tính đó gồm:
Tốc độ tối đa
Mức độ tăng tốc
Tốc độ an toàn
Khoảng thời gian dự tính
Tốc độ tối đa là tốc độ lớn nhất mà Agent có thể đạt được cho dù di chuyển trên bất kỳ đoạn đường nào, dù có hay không có Agent phía trước. Các loại xe khác nhau sẽ có tốc độ khác nhau, chẳng hạn như tốc độ tối đa của ô tô thường cao hơn của các loại phương tiện khác. Giá trị của thuộc tính này sẽ ảnh hưởng đến sự lưu thông trên đường.
31
Mức độ tăng tốc chỉ khả năng tăng tốc của Agent. Các Agent sẽ thực hiện hành
động tăng tốc khi đang ở tốc độ thấp hoặc đang ở trạng thái dùng trong khi phía trước không có xe nào. Cũng như tốc độ tối đa, mức độ tăng tốc của các Agent khác nhau là khác nhau. Mức độ tăng tốc của ô tô thường cao hơn xe máy và xe đạp. Mức độ tăng tốc của các Agent rất có ảnh hưởng đến sự lưu thông trên đường. Chẳng hạn như tại các đoạn ùn tắc, các xe khi thoát khỏi đám đông mà tăng tốc càng nhanh sẽ càng tạo khoảng trống cho các xe phía sau nhanh hơn.
Tốc độ an toàn là giá trị có liên quan mật thiết đến lựa chọn đánh lái của các Agent. Khi cần đánh lái, các Agent cần giảm tốc độ xuống tốc độ an toàn. Ví dụ, khi một người đang đi xe với một vận tốc nào đó mà nhận thấy sẽ va chạm vào xe khác phía trước nếu duy trì hướng và vận tốc hiện tại. Nếu vận tốc hiện tại lớn hơn vận tốc an toàn thì người này nhất thiết phải giảm tốc độ, nếu không thì người đó có thể xem xét xem việc đánh lái để tránh xe phía trước.
Khoảng thời gian dự tính là quãng thời gian sắp tới mà mỗi Agent cần xác định
cách lái xe tốt nhất cho mình. Giá trị của thuộc tính này thường nhỏ, từ vài trăm miligiây đến vài giây. Giá trị này có ảnh hưởng đến cách lựa chọn hành động của các Agent. Giả sử một Agent đang chuyển động với vận tốc 30km/h và giá trị của thuộc tính này là 600 miligiây thì Agent này cần xác định được cách lái tốt nhất trong quãng đường 4.98m sắp tới.
Thuộc tính tốc độ an toàn thể hiện tính cẩn thận của các người lái, trong khi
thuộc tính khoảng thời gian dự tính thể hiện sự “nhìn xa trông rộng” của người lái.
2.4. Kết luận chương II
Trong chương này, tôi đã trình bày những khái niệm cơ bản về Agent và hệ thống đa Agent cũng như sự ưu việt của nó so với đối tượng. Chương này cũng đã nêu ra phương pháp mô phỏng dựa trên Agent. Đây là một phương pháp tiên tiến trong lĩnh vực mô phỏng những hệ thống phức tạp trong thế giới thực. điều đó thể hiện qua những ứng dụng của nó trong thực tiễn.
32
Chương III: XÂY DỰNG PHẦN MỀM MÔ PHỎNG HỆ THỐNG GIAO THÔNG
3.1. Ngôn ngữ lập trình và công cụ phát triển.
Chương trình được phát triển bằng ngôn ngữ lập trình Microsoft Visual C# trên nền tảng .Net Framework 4.0 sử dụng bộ công cụ lập trình Visual Studio 2013.
Thư viện đồ họa GDI+ của .Net Framework để tạo giao diện đồ họa cho cơ sở hạ tầng giao thông và các phương tiện tham gia giao thông.
3.2. Tổ chức dữ liệu cho chương trình ứng dụng.
Chương trình được phát triển bằng ngôn ngữ thuần hướng đối tượng C# nên dữ liệu chương trình được tổ chức dưới dạng các lớp đối tượng. Một số lớp có thể kể đến như lớp DiemDung, DenTinHieu, Xe, BanDo…
Dữ liệu về hạ tầng giao thông và các trạng thái giao thông được lưu trữ bằng các thuộc tính tĩnh trong lớp BanDo, cung cấp thông tin các làn đường, thông tin cần thiết để các phương tiện giao thông có thể chạy trong đó.
3.2.1. Đèn tín hiệu giao thông
Lớp đèn tín hiệu mô phỏng hoạt động của các đèn tín hiệu trong bản đồ giao thông.
Lớp này bao gồm các thuộc tính chính như:
timeR: thời gian đèn đỏ của cột đèn.
timeY: thời gian đèn vàng của cột đèn.
timeG: thời gian đèn xanh của cột đèn.
status: màu sắc đèn hiện tại (Đỏ/Xanh/Vàng).
tstatus: thời gian của đèn hiện tại.
Location: vị trí đặt đèn tín hiệu.
33
3.2.2. Làn đường
Lớp làn đường mô tả thông tin chi tiết về các làn đường trong bản đồ giao thông. Lớp này bao gồm các thuộc tính chính như:
pStart: tọa độ điểm đầu làn đường.
pEnd: tọa độ điểm cuối làn đường.
dorong: độ rộng của làn đường.
tenduong: tên đường.
enable: làn đường có được phép di chuyển không.
lanPhiaTruoc: Các làn đường phía trước làn đường hiện tại
lanPhiaSau: Các làn đường phia sau làn đường hiện tại.
type: các loại xe được phép lưu thông trên đường.
3.2.3. Điểm dừng/điểm xuất phát hành trình
Lớp điểm dừng mô tả chi tiết các thông số phương tiện vào/ra bản đồ. Lớp này bao gồm các thuộc tính:
in_flow: lưu lượng phương tiện giao thông khởi hành từ điểm dừng vào bản đồ.
out_flow: xác suất 1 phương tiện giao thông đi trên con đường đó thoát khoi bản đồ tại điểm dừng.
Location: vị trí của điểm dừng.
lanDuong: Làn đường tác dụng của điểm dừng.
Tùy thuộc vào tính mà xác định được khi nào một phương tiện giao thông xuất phát từ bản đồ cũng như khả năng thoát khỏi một bản đồ hay tiếp tục di chuyển của phương tiện đang lưu thông trên đường.
34
3.2.4. Bản đồ giao thông.
Lớp bản đồ gồm các thuộc tính tĩnh mô tả chi tiết cơ sở hạ tầng giao thông cũng như các xe đang tham gia lưu thông trên đường. Lớp bản đồ bao gồm một số thuộc tính chính như:
dentinhieu: mô tả danh sách các đèn tín hiệu hiện có trên bản đồ.
diemdung: danh sách các điểm dừng/điểm khởi hành có trên bản đồ.
lanDuong: làn đường tác dụng của đèn tín hiệu.
listxe: danh sách các xe lưu thông trên bản đồ.
ratio: tỉ lệ bản đồ, là số pixcel tương ứng với 1mét chiều dài thực tế.
timeupdate: thời gian cập nhật tình trạng giao thông.
Khi các phương tiện giao thông chạy trên đường, bản đồ sẽ gửi các thông tin giao thông do phương tiện yêu cầu. Dựa vào các thông tin đó, phương tiện giao thông có các điều chỉnh và hành vi tương ứng.
3.2.5. Phương tiện giao thông.
Lớp xe mô tả thông tin về một phương tiện khi tham gia lưu thông trên đường. Lớp này bao gồm các thuộc tính chính như:
type: loại phương tiện giao thông.
name: tên phương tiện giao thông.
v: vận tốc hiện tại của phương tiện.
maxspeed: vận tốc tối đa cho phép của phương tiện.
avgspeed: vận tốc trung bình của phương tiện.
infringe: xác suất vi phạm luật giao thông của phương tiện.
level: mức độ ưu tiên của phương tiện khi tham gia giao thông.
chieuRong: chiều rộng của phương tiện.
chieuDai: chiều dài của phương tiện.
angle: góc giữa hướng đi của phương tiện với trục Ox.
35
Location: vị trí hiện tại của phương tiện trên bản đồ.
huong: hướng di chuyển, làn đường mà phương tiện đang lưu thông.