Bài viết này trình này hướng tiếp cận chia để trị để tăng tốc độ mô phỏng di tản trong tình huống thiên tai. Giải pháp này được áp dụng để tăng tốc độ chạy các mô phỏng di tản trong tình huống lũ lụt.
Trang 1ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ ĐẠI HỌC ĐÀ NẴNG, SỐ 12(97).2015, QUYỂN 2 41
CHIA ĐỂ TRỊ: GIẢI PHÁP HỮU HIỆU ĐỂ TĂNG TỐC ĐỘ
MÔ PHỎNG DI TẢN TRONG TÌNH HUỐNG THIÊN TAI
DIVIDE AND CONQUER APPROACH: AN EFFICIENT MEASURE TO ACCELERATE
SIMULATION OF EVACUATION IN CASE OF NATURAL DISASTERS
Lê Văn Minh, Phạm Tuấn Anh
Trường Cao đẳng Công nghệ Thông tin, Đại học Đà Nẵng; vanminh.le246@gmail.com, anhpt.fit@gmail.com
Tóm tắt - Hiện nay, thiên tai ngày càng xảy ra thường xuyên với
cường độ ngày càng mạnh hơn trước Hậu quả mà thiên tai gây ra
cũng ngày càng nghiêm trọng hơn Trước vấn đề thiên tai, di tản là
một giải pháp được nhiều quốc gia tính đến để bảo vệ người dân.
Để đánh giá một giải pháp cụ thể nào đó, chúng ta cần xây dựng mô
phỏng Tuy nhiên, việc thực hiện một mô phỏng rất tốn thời gian và
tài nguyên Để khắc phục vấn đề này, chúng ta có thể nghĩ đến việc
chia một mô phỏng lớn thành nhiều mô phỏng nhỏ hơn Bài báo này
trình này hướng tiếp cận chia để trị để tăng tốc độ mô phỏng di tản
trong tình huống thiên tai Giải pháp này được áp dụng để tăng tốc
độ chạy các mô phỏng di tản trong tình huống lũ lụt
Abstract - Nowadays, natural disasters happen more frequently
with more destructive power The consequences of these disasters are also more serious For the mitigation, evacuation is taken into account by many governments to save their people In order to evaluate a certain mitigating solution, the simulation of evacuation becomes necessary However, the simulation requires time and resources to be executed In order to overcome this problem, we can think of dividing a big simulation into many smaller ones This paper presents the divide and conquer approach to accelerate this kind of simulation, especially in case of inundation
Từ khóa - mô phỏng; mô hình hoá; hướng tiếp cận tác tử; chia để
trị; thành phần liên thông
Key words - computer simulation; modeling; agent-based approach;
divide and conquer; connected components
1 Đặt vấn đề
Ngày nay, thiên tai xuất hiện ngày càng thường xuyên với
cường độ mạnh hơn trước Đối với Việt Nam, lũ lụt là một
dạng thiên tai rất phổ biến và những hậu quả mà nó để lại đến
nay vẫn còn là một vấn đề nhức nhối Một khi lũ lụt xảy ra,
cách tốt nhất để bảo vệ tính mạng của người dân là di tản họ
đến những toà nhà cao tầng hoặc vùng đất cao Câu hỏi được
đặt ra ở đây là với một địa phương cụ thể (phố cổ Hội An là
một ví dụ) thì liệu số lượng nhà cao tầng, hoặc các vùng đất
cao có đủ gần và đủ chỗ để cứu toàn bộ dân cư hay không
Trong trường hợp dân cư của địa phương đó ngày càng đông
theo thời gian, thì nên xây thêm những toà nhà cao tầng ở đâu
để đảm bảo được sự an toàn cho di tản (và hiển nhiên là vẫn
đảm bảo các lợi ích chính trị và xã hội đặt ra)
Để trả lời câu hỏi trên, hướng tiếp cận thuyết phục nhất
đối với chính quyền và người dân (kể cả những người không
biết về công nghệ thông tin) là mô phỏng tin học (gọi tắt là
mô phỏng) Chúng ta xây dựng một mô hình mô phỏng việc
di tản của người dân khi có lũ lụt Kết quả chạy trên mô
phỏng sẽ là một tiêu chí tin cậy để giúp chúng ta đưa ra quyết
định cụ thể trong trường hợp này là xây thêm các toà nhà cao
tầng ở đâu Một ví dụ đơn giản như sau: Nếu chúng ta có 2
lựa chọn là xây nhà cao tầng ở vị trí A và vị trí B, thì kết quả
từ mô phỏng cho thấy vị trí A cứu được nhiều người hơn hẳn
vị trí B sẽ dẫn đến quyết định chọn giải pháp A
Hiện tại, những mô phỏng kiểu này đã được xây dựng
và cho những kết quả ổn định ở mức độ chấp nhận được
Vấn đề ở đây là mô phỏng như thế sẽ có độ phức tạp rất
lớn Nghĩa là tốn rất nhiều thời gian và tài nguyên máy tính
để có thể chạy ra kết quả trong thời gian mong đợi Chúng
ta cần phải tìm cách tăng tốc độ của mô phỏng này
Bài báo này trình bày ứng dụng của hướng tiếp cận chia
để trị đối với các thành phần liên thông trong đồ thị để tăng
tốc độ mô phỏng di tản trong tình huống thiên tai (cụ thể ở
đây là lũ lụt) Phương pháp này có thể được mở rộng để
ứng dụng trong tất cả các bài tài toán di tản khác (ví dụ bài toán di tản trong tình huống xảy ra sóng thần)
2 Kết quả nghiên cứu và khảo sát
Trước khi bắt đầu phần khảo sát, chúng tôi trình bày tóm tắt một số khái niệm để người đọc dễ dàng theo dõi
Mô phỏng tin học (computer simulation) còn được gọi tắt
là “mô phỏng” là một phần mềm mô tả lại một hiện tượng
cụ thể nào đó
2.1 Mô phỏng bằng phương trình toán học
Hướng tiêp cận đầu tiên được sử dụng để đánh giá một hiện tượng nào đó là mô phỏng bằng phương trình toán học Với hướng tiếp cận này, hiện tượng được mô tả bằng các phương trình toán học (hoặc tổng quát hơn là các mô hình toán học) Hệ thống máy tính sẽ thực hiện các lệnh dựa trên mô hình toán học này để đưa ra những đánh giá hoặc những dự đoán nào đó
Hướng tiếp cận này tỏ ra rất ưu việt khi dự đoán một hiện tượng tự nhiên nào đó, ví dụ mô phỏng sự lan truyền của sóng thần hoặc cụ thể hơn đó là mô phỏng SIR sự phát tán của bệnh dịch [1] Câu hỏi được đặt ra ở đây là liệu mô hình toán học vẫn hữu dụng khi mô phỏng di tản của người dân trong tình huống xảy ra lũ lụt vì các phương trình toán học khó có thể mô phỏng chính xác quyết định của con người
2.2 Mô phỏng theo hướng tác tử
Hướng tiếp cận này cung cấp cho nhà nghiên cứu một cái nhìn đơn giản hơn đối với chính hệ thống mà họ đang cần đánh giá Ví dụ, một nhà nghiên cứu về sinh vật sẽ gặp rất nhiều khó khăn khi hình dung một hệ sinh thái bằng các phương trình toán học, để từ đó mô phỏng quá trình cần bằng sinh thái, để có thể đưa ra được dự đoán về các hậu quả khi mất cân bằng sinh thái Nhưng, những nhà nghiên cứu này lại rất giỏi trong việc mô tả từng cá thể hoặc từng loài cụ thể trong môi trường Vì thế, cách hiệu quả nhất để mô phỏng trong
Trang 242 Lê Văn Minh, Phạm Tuấn Anh những trường hợp này đó là mô phỏng từng cá thể đơn giản
vào hệ thống máy tính (gọi là tác tử), sau đó chạy chương trình
mô phỏng này, rồi đánh giá kết quả thu được từ mô phỏng
Thực tế cho thấy hướng tiếp cận tác tử này đã mang lại
nhiều thành công trong các lĩnh vực liên quan đến xã hội,
các lĩnh vực mà các phương trình toán học gặp khó khăn
hoặc không thể mô tả được Ví dụ, trong lĩnh vực sinh thái
với mô phỏng của DeAngelis năm 1992 [2], nghiên cứu
của Tesfatsion trong lĩnh vực kinh tế [3] và Gilbert trong
lĩnh vực khoa học xã hội [4]
Với những thành tựu trong các lĩnh vực nghiên cứu xã
hội, hướng tiếp cận này đã thúc đẩy chúng tôi tiếp tục ứng
dụng nó trong việc nghiên cứu di tản khi có hoả hoạn
2.3 Thành tựu của mô phỏng theo hướng tác tử đối với di tản
Trong những năm gần đây, với nhu cầu ngày càng cao
về việc đánh giá an toàn của một toà nhà, nhiều nghiên cứu
về di tản đã được thực hiện Tiêu biểu trong số đó là các
nghiên cứu của Smith 2008 [5] Mặc dù mô phỏng này mô
tả thuần tuý quyết định của con người trong việc tìm đường
đến một vị trí an toàn cụ thể nào đó, chúng tôi cho rằng có
thể mở rộng hướng tiếp cận trong mô phỏng này để áp dụng
vào những trường hợp cụ thể khác
2.4 Hướng tiếp cận chia để trị
Hướng tiếp cận chia để trị (Divide and conquer [6]) đã được
đề xuất từ lâu và được sử dụng để cải tiến nhiều thuật toán cổ
điển (Ví dụ: thuật toán sắp xếp, thuật toán nhân 2 số nguyên
lớn) Ý tưởng của hướng tiếp cận này vốn rất đơn giản: Chia
một bài toán lớn thành nhiều bài toán nhỏ hơn, giải các bài toán
nhỏ hơn rồi tổng hợp kết quả lại Tuy vậy, việc chia như thế nào
để đảm bảo kết quả tổng hợp của các bài toán nhỏ đúng bằng
kết quả của bài toán ban đầu mới là vấn đề phức tạp
3 Đề xuất phương pháp
3.1 Mô tả bài toán
3.1.1 Mô tả mô phỏng
Trong hiện tượng thiên tai “bị ngập lụt”, các phương tiện
giao thông cơ giới sẽ có thể gặp phải những trục trặc khi di
chuyển Do đó, để tính đến tình huống xấu nhất, chúng ta cân
nhắc đến di tản mà tất cả người dân đều đi bộ Kịch bản lũ lụt
có thể hình dung như sau: Ban đầu có P người ở trong một
thành phố Thành phố này đã bị ngập lụt và bị chia cắt thành
nhiều vùng cô lập khác nhau Những người này đi bộ đến toà
nhà cao tầng gần nhất để trú ẩn Sau một khoảng thời gian T,
những người đến được nơi trú ẩn được xem là sống sót Bài
toán ở đây là với một cấu trúc địa lý xác định của thành phố
(đường đi, nhà cửa), với số lượng N người, và trong một
khoản thời gian T thì liệu sẽ có bao nhiêu người sống sót
3.1.2 Mô phỏng hành vi con người trong di tản
Mục đích chính của nghiên cứu này là một giải pháp để
tăng tốc độ chạy một mô phỏng, chúng tôi đơn giản hoá hành
vi con người đến mức có thể Trên thực tế, chúng tôi hướng
các thực nghiệm của mình theo hướng KISS (Keep It Simple
and Stupid) được đề xuất bởi Axelrod 1997 [7] Hành vi của
con người trong di tản được mô tả đơn giản là tìm đường đi
ngắn nhất từ vị trí hiện tại đến nơi trú ẩn gần nhất
Để thực hiện chương trình mô phỏng, chúng tôi cũng
đề xuất sử dụng nền tảng mô phỏng GAMA [8] Giải pháp
được đưa ra ở phần tiếp theo sẽ tìm cách tăng tốc độ của
mô phỏng này
3.1.3 Tham số đầu vào và kết quả đầu ra
Với cách mô phỏng bài toán như trên, chúng ta có thể nhận ra 3 tham số đầu vào cơ bản của bài toán đó là: bản
đồ địa lí của thành phố (M), dân cư của thành phố (P) và khoảng thời gian di tản (T)
Cũng từ mô tả, kết quả đầu ra sẽ là số người di chuyển đến điểm trú ẩn (S) Ngoài ra, để so sánh đánh giá giải pháp, chúng tôi quan tâm đến một kết quả khác, đó là thời gian chạy chương trình mô phỏng (ET, viết tắt từ “Execution Time”)
3.2 Giải pháp thực hiện
3.2.1 Ý tưởng
Trong tình huống xảy ra lũ lụt, sẽ có một số con đường, một số điểm nút giao thông bị ngập trong nước, do vậy sẽ hình thành các vùng bị cô lập Ý tưởng đưa ra ở đây là chúng ta sẽ chia các thành phần cô lập đó thành những vùng nhỏ hơn và thực hiện mô phỏng trên những hình nhỏ hơn này, rồi sau đó tổng hợp kết quả lại
3.2.2 Các định nghĩa liên quan
Môi trường di tản ở đây là địa bàn một thành phố, bản
đồ của thành phố được mô tả bởi hệ thống thông tin địa lý (GIS) Hệ thống này được chuyển thành đồ thị vô hướng
Đồ thị trong bài toán này là vô hướng bởi vì chúng ta cân nhắc đến di tản bằng đi bộ, mọi con đường đều được đi
2 chiều Từ đó ta có các định nghĩa sau:
Gọi G=(V, E), trong đó E là tập hợp các cạnh của đồ thị đại diện cho các đoạn đường và V là tập hợp các đỉnh đại diện cho các nút giao thông (ngã ba, ngã tư)
Gọi W là tập trọng số mô tả thời gian di chuyển của mỗi người từ đỉnh này đến đỉnh khác Ví dụ: wij= dt (với
wij W, eij E, ij V) nghĩa là một người đi từ đỉnh i đến đỉnh j sẽ mất một thời gian dt
Gọi D(VD, ED) là thành phần bị ngập trong nước: với
ED E là tập hợp các đường và VD V là tập hợp các nút giao thông bị ngập trong nước
Gọi G’ = (V’, E’) là đồ thị mô tả bản đồ có thể di chuyển được của người dân Trong đó V’ = V\VD; E’ = E\ED Gọi n= |V’| là số đỉnh của đồ thị và m = |E’| là số cạnh của đồ thị này
Gọi CC là tập hợp các thành phần liên thông trong G’ Gọi r = |CC| là số lượng các thành phần liên thông, ta có: 1
≤ r ≤ n Gọi Gi=(Vi, Ei)(Gi CC) là thành phần liên thông thứ i của đồ thị G’ và Pi (1 ≤ i ≤ r) là tập hợp số người ở khu vực tương ứng với thành phần liên thông đó
3.2.3 Mô tả thuật toán
Ở đây, để rút gọn, chúng ta có thể mô tả trước các thuật toán liên quan, rồi sau đó thuật toán chính sẽ gọi các thuật toán này Các thuật toán liên quan bao gồm:
Weakly Connected Component (G’): Thuật toán này tìm tất cả các thành phần liên thông của đồ thị có hướng G’ Ở đây, để đơn giản, chúng tôi sử dụng thuật toán DFS,
và độ phức tạp của thuật toán này là O(m) [6]
Simulate (Gi, Pi, T): Thuật toán này sẽ thực hiện mô phỏng Pi con người di chuyển trên đồ thị Gi Ứng với mỗi người, thuật toán này thực hiện thuật toán Dijkstra để tìm
Trang 3ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ ĐẠI HỌC ĐÀ NẴNG, SỐ 12(97).2015, QUYỂN 2 43 đường đi ngắn nhất Vì thuật toán Dijkstra có độ phức tạp
là O(m + nlog(n)) (với m = |E| và n = |V|) [6], thuật toán
này sẽ có độ phức tạp là O(P (m + nlog(n)))
1 Function DivideConquerSimulate(G’,P,T):
2 CC = WeaklyConnectedComponent(G’)
3 For each Gi in CC:
4 Si = Simulate(Gi,Pi,T)
5 End for
6 Return Sum(Si)
7 End function
Đoạn mã 1 Thuật toán chia để trị
4 Thực nghiệm và đánh giá
4.1 Áp dụng đối với di tản ở Hội An
Để minh họa cho phương pháp đề xuất, chúng tôi tiến hành
xây dựng mô phỏng đối với khu vực Hội An (Hình 1 là bản đồ
được chụp từ Google Map) Đầu vào của bài toán bao gồm:
Bản đồ thông tin địa lý: Bản đồ này mô tả đường phố
và các toà nhà, bao gồm cả trường hợp bị ngập nước
(Hình 2 mô tả các yếu tố địa lý của thành phố khi có
hiện tượng ngập lụt) Màu xanh lá cây thể hiện khu
vực bị ngập với mức nước xấp xỉ 1 mét
Số người ban đầu trong thành phố P và sự phân bố cụ
thể của từng người
Thời gian di tản tối đa T
Đầu ra của bài toán bao gồm:
Tỉ lệ sống sót (S) là tỉ lệ phần trăm số người đến được
toà nhà cao tầng trong thời gian T so với tổng số dân P;
Thời gian thực hiện của máy tính (ET)
Hình 1 Bản đồ phố cổ Hội An (nguồn Google Map)
Hình 2 Bản đồ ngập lụt của Hội An ứng với mức nước
(Ái Nghĩa:9,54m, Câu Lâu: 4,14m)
(Nguồn từ Phần mềm quản lý lũ lụt Quảng Nam)
4.2 Đánh giá thực nghiệm
Ở phần này, chúng tôi sẽ dùng thực nghiệm để đánh giá
giải pháp mà chúng tôi đã đề xuất Trước hết, chúng ta biết
rằng sự phân bố của người dân trong thành phố là ngẫu
nhiên Để đảm bảo được tính tin cậy của chương trình,
chúng tôi thực hiện chạy mô phỏng 100 lần với sự phân bố
1 Ghi chú: Theo thống kê vào năm 2008, dân số của Hội An vào khoản 120.000 người
dân cư khác nhau Ứng với mỗi sự phân bố dân cư, chúng tôi thực hiện chạy cả 2 mô phỏng:
Mô phỏng với toàn bộ bản đồ;
Mô phỏng sử dụng thuật toán chia để trị
Hình 3 So sánh kết quả từ 2 giải thuật
4.2.1 Đánh giá sự tin cậy của giải pháp
Ở phần trên, chúng tôi đã đề ra giải pháp tăng tốc độ
mô phỏng Điều đầu tiên cần chứng minh đó là liệu mô phỏng ban đầu và mô phỏng chia để trị có cho ra cùng một kết quả
Kết quả thu được từ mô phỏng (Hình 3) cho thấy rằng kết quả từ việc áp dụng thuật toán chia để trị trên mô phỏng hoàn toàn trùng với kết quả của của mô phỏng đối với toàn
bộ bản đồ Lý do cơ bản cho kết quả này là: Vì các đồ thị con là các thành phần liên thông, nên mỗi thành phần này tách biệt lẫn nhau; kéo theo, người dân trên mỗi vùng liên thông sẽ không di chuyển sang vùng khác Do đó, nếu chạy
mô phỏng trên toàn bộ bản đồ thì số lượng người sống sót của mỗi vùng tách biệt sẽ hoàn toàn giống như việc chạy
mô phỏng trên từng vùng tách biệt đó
Do đó, kết quả từ mô phỏng (trong trường hợp này là
số lượng người sống sót) của toàn bộ bản đồ đúng bằng tổng kết quả mô phỏng từ tất cả các thành phần liên thông
4.2.2 Đánh giá tốc độ
Như đã trình bày, tốc độ chạy một mô phỏng như thế này hoàn toàn phụ thuộc vào số lượng người dân Một cách
dễ hiễu hơn, nếu chúng ta muốn mô phỏng việc di tản của
1000 dân cư thì thuật toán tìm đường sẽ phải được lặp lại
1000 lần Do đó, trong phần này chúng tôi thực hiện chạy
mô phỏng nhiều lần với các số lượng dân cư tăng dần tương ứng (10.000, 20.000, … 100.000)1
Với mỗi giá trị của dân cư, chúng tôi vẫn thực hiện 100 lần mô phỏng tương ứng với 100 sự phân bố khác nhau Thời gian thực hiện mô phỏng (Execution Time, gọi tắt là ET) của cả 2 thuật toán sẽ được ghi lại và kết quả sẽ là giá trị trung bình của 100 lần chạy này
Kết quả từ Hình 4 cho thấy, giải pháp chia để trị mà chúng tôi đề xuất đã giảm đáng kể thời gian tính toán cho một mô phỏng Trường hợp mô phỏng với số dân cao nhất, thời gian chạy mô phỏng trên toàn bộ bản đồ sẽ gần 3 ngày, trong khi
đó, với thuật toán chia để trị chỉ mất chưa đến 2 giờ
Trang 444 Lê Văn Minh, Phạm Tuấn Anh
Hình 4 So sánh thời gian thực hiện mô phỏng
5 Kết luận
Trước hết, bài báo này không hướng tới việc trình bày
một mô hình mô phỏng chính xác với thực tế Ở đây chỉ
trình bày phương pháp tăng tốc độ thực thi một mô phỏng
di tản bằng hướng tiếp cận chia để trị Kết quả nghiên cứu
thực nghiệm đã cho thấy độ tin cậy và tính hiệu quả của
phương pháp này
Nếu xét về tính áp dụng thì giải pháp này có thể được
áp dụng trong tất cả các bài toán mô phỏng mà môi trường
mô phỏng được mô hình hoá về đồ thị và trong môi trường
đó có sự phân chia thành các vùng riêng biệt Và với từng
bài toán cụ thể, chúng ta có thể nghĩ đến việc nghiên cứu
giải pháp khắc phục Chúng tôi xin nêu ra ở đây 2 ví dụ để
người đọc có thể tiếp tục nghiên cứu nếu có hứng thú:
1 Mô phỏng di tản khi xảy ra động đất Như ta đã biết
là động đất có thể sẽ phá huỷ các con đường, các cây
cầu Điều này sẽ gây ra các vùng tách biệt nhau
2 Mô phỏng cháy rừng mà bên trong rừng có sông
suối Như đã biết, trong rừng núi thường có thêm
sông suối Một cách tự nhiên thì sông suối sẽ phân chia môi trường thành những khu vực, mà nếu có cháy rừng thì ngọn lửa cũng khó vượt qua từ nơi này đến nơi khác
Với những bài toán thuộc dạng này, nếu chúng ta đã có sẵn mô phỏng thì hoàn toàn có thể áp dụng giải pháp chia
để trị để tăng tốc độ thực hiện mô phỏng này
Về hướng pháp triển, chúng tôi đang nghiên cứu việc áp dụng giải pháp này trên môi trường tính toán song song Vì mỗi bài toán nhỏ là độc lập nhau, nên chúng ta hoàn toàn có thể đưa bài toàn vào một hệ thống tính toán lưới (Grid computing hoặc cluster machine) Một khi các bài toán nhỏ được xử lý song song, tốc độ sẽ còn tăng lên đáng kể
TÀI LIỆU THAM KHẢO
[1] Li J and Zou X., Generalization of the Kermack-McKendrick SIR Model to a Patchy Environment for Disease with Latency, Math Model Nat Phenom Vol 4, No 2, pp.92-118, 2009
[2] DeAngelis D., Gross L., Individual-Based Models and Approaches
in Ecology, Chapman and Hall, New York, 1992
[3] Tesfatsion L., Agent-based computational economics: growing economies from the bottom up, Artificial Life, vol 8, p 55-82, 2002 [4] Gilbert N., Troitzsch K G., Simulation For The Social Scientist, Open University Press, 2005
[5] Smith J L., Agent-Based Simulation of Human Movements During Emergency Evacuations of Facilities, American Society of Civil Engineers, pp 1-10, 2008
[6] Anany V Levitin, Introduction to the Design and Analysis of Algorithms, Addison Wesley, 2002
[7] Axelrod R., The Complexity of Cooperation: Agent-Based Models of Competition and Colla- boration, Princeton University Press, 1997 [8] A Drogoul, B Gaudou, A Grignard, N Marilleau, P Taillandier and J.D Zucker, “GAMA: Multi-level and Complex Environment for Agent-based Mod- els and Simulations (demonstration),” in the
2013 inter- national conference on Autonomous agents and multi-agent systems, pp 1361–1362, 2013
(BBT nhận bài: 27/07/2015, phản biện xong: 27/09/2015)