Tải bản đầy đủ (.pdf) (41 trang)

Tìm hiểu các thuật toán tìm đường đi trong hệ thống thông tin địa lý

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.01 MB, 41 trang )

Trang 0





ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ




LÊ QUANG LỢI



ỨNG DỤNG CÁC THUẬT TOÁN TÌM ĐƯỜNG ĐI
TRONG HỆ THỐNG THÔNG TIN ĐỊA LÝ


LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN





HÀ NỘI - 2013
HỌC VIÊN: LÊ QUANG LỢI
HƯỚNG DẪN KHOA HỌC:
PGS.TS. NGUYỄN HẢI CHÂU


ỨNG DỤNG CÁC THUẬT TOÁN TÌM ĐƯỜNG ĐI
TRONG HỆ THỐNG THÔNG TIN ĐỊA LÝ


HÀ NỘI -2013

Trang 1





ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ


LÊ QUANG LỢI


TÌM HIỂU CÁC THUẬT TOÁN TÌM ĐƯỜNG ĐI
TRONG HỆ THỐNG THÔNG TIN ĐỊA LÝ
Ngành: Công nghệ thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60 48 05


LUẬN VĂN THẠC SĨ

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS NGUYỄN HẢI CHÂU





HÀ NỘI - 2013
Trang 2





Mục lục
Lời mở đầu 5
Chương 01: Giới thiệu bài toán tìm đường đi 7
1.1 Giới thiệu bài toán TSP 7
1.1.1 Bài toán TSP 7
1.1.2 Một số giải thuật giải quyết bài toán TSP 8
1.2 Giải thuật Genertic TSP 11
1.2.1 Giới thiệu giải thuật GA 11
1.2.2 Giải thuật GA TSP 14
1.3 Ứng dụng của TSP trong hệ thống thông tin địa 15
Chương 02: Hệ quản trị CSDL không gian 16
2.1 Hệ thống thông tin địa lý 16
2.1.1 Giới thiệu về hệ thống thông tin địa lý 16
2.1.2 Kiến trúc cơ bản một hệ thống thông tin địa lý 17
2.2 CSDL không gian PostGres và PostGIS 19
2.2.1 Giới thiệu 19
2.2.2 Kiến trúc PostGres 20
2.2.3 Kiểu dữ liệu không gian 21
2.2.4 Hàm hỗ trợ xử lý dữ liệu trong Gis 22
2.2.5 Truy vấn dữ liệu không gian 22

Chương 03: Thực nghiệm và kết quả 25
3.1 Các chương trình, module thực hiện bài toán 25
3.1.1 Giới thiệu module thực nghiệm bài toán 25
3.1.2 Cài đặt các module phục vụ bài toán TSP 30
3.2 Thực nghiệm với dữ liệu bản đồ OpenStreetMap 33
3.2.1 Dữ liệu OpenStreetMap 33
3.2.2 Thao tác dữ liệu OSM 34
3.2.3 Áp dụng các thuật toán TSP truy vấn dữ liệu OSM 35
3.3 Kết quả thực hiện 35
3.3.1 Xây dựng Dữ liệu Mẫu 35
3.3.2 Kết quả trên dữ liệu mẫu 38
Tài liệu tham khảo 40




Trang 3




Danh mục từ, từ viết tắt
TT
Từ, từ viết tắt
Chú giải
1
CSDL
Cơ sở dữ liệu
2
XML

Extended Markup Language
3
GEOS
Geometry Engine - Open Source
4
GIS
Geographic Information System
5
WKT
Well-Know Text
6
HQT CSDL
Hệ quản trị CSDL
7
SQL
Structed Query Language
8
TSP
Traveling Salesman Problem
9
GA
Genetic Algorithm
10
OSM
Open Street Map
Danh mục bảng
TT
Tên bảng
Trang
1

Bảng 1.1 Một số thuật toán và độ phức tạp tính toán
9
2
Bảng 3.1 Các gói phần mềm được cài đặt và cấu hình chạy TSP
24
3
Bảng 3.2 Một số hàm routing điển hình
25
4
Bảng 3.3: Các đối trong câu lệnh truy vấn SQL
27
5
Bảng 3.4 Thư viện cài đặt cùng PostGis
30
Danh mục hình vẽ, biểu đồ
TT
Hình
Trang
1
Hình 2.1: Chéo hóa đơn
11
2
Hình 2.2: Chéo hóa bội
12
3
Hình 2.3: Kiến trúc hệ thống thông tin địa lý
16
4
Hình 2.4 Layer cơ bản trong dữ liệu bản đồ
17

5
Hình 2.5 Kiến trúc PostGres
19
6
Hình 2.6 Dữ liệu Raster và cách số hóa.
20
7
Hình 3.1 bản đồ dữ liệu mẫu
34


Trang 4




Lời cam đoan
Tôi xin cam đoan luận văn “ỨNG DỤNG CÁC THUẬT TOÁN TÌM ĐƯỜNG ĐI
TRONG HỆ THỐNG THÔNG TIN ĐỊA LÝ” được thực hiện của tác giả dưới sự hướng
dẫn của thầy PGS.TS Nguyễn Hải Châu. Toàn bộ nội dung được trình bày không hề có sự
sao chép từ các luận văn khác. Các kiến thức, hình ảnh, trích dẫn để được chỉ rõ nguồn tài
liệu tham khảo một cách cụ thể và rõ ràng.
Nếu có nội dung nào trong luận văn vi phạm các quy định đề ra của nhà trường tôi xin
hoàn toàn chịu trách nhiệm theo đúng các quy định đề ra.
Hà nội, ngày … Tháng … năm 2013
Người cam đoan


Lê Quang Lợi
Trang 5





Lời mở đầu
Luận văn “ỨNG DỤNG CÁC THUẬT TOÁN TÌM ĐƯỜNG ĐI TRONG HỆ THỐNG
THÔNG TIN ĐỊA LÝ”. Được tác giả thực hiện dưới sự hướng dẫn của thầy hướng dẫn
PGS.TS Nguyễn Hải Châu, giảng viên khoa Công nghệ Thông tin trường Đại học Công
nghệ - Đại học Quốc gia Hà nội. Tác giả đã và giảng viên hướng dẫn thông qua các buổi
gặp mặt trực tiếp, trao đổi qua email đã thống nhất được một số phần thực hiện như sau.
- Mục tiêu luận văn:Luận văn phải đạt được
o Tìm hiểu hệ thống thông tin địa lý
o Tìm hiểu một số thuật toán tìm đường đi: TSP
o Triển khai dữ liệu mẫu cho phép thực nghiệm bài toán
- Cơ sở lý thuyết:
o Hệ thống thông tin địa lý: kiến trúc,tiền xử lý dữ liệu, biểu diễn dữ liệu, truy
vấn dữ liệu
o Cơ sở dữ liệu không gian
o Hệ quản trị CSDL PostGres, PostGIS,pgRouting
o Giải thuật: GA, Branch-Bound, Heuristic
- Thực nghiệm: Luận văn được thực nghiệm với dữ liệu mẫu
o Thiết lập môi trường triển khai CSDL PostGres và các thư viện mở rộng như
PostGIS, pgRouting, osm2pgrouting …
o Dữ liệu mẫu OSM
o Xây dựng dữ liệu mẫu cho bài toán TSP
o Thực thi truy vấn dữ liệu với hàm pgr_TSP trong pgRouting
- Các nội dung được trình bày trong cuốn báo cáo luận văn
o Chương 01: Bài toán tìm đường đi (TSP)
o Chương 02: CSDL không gian
o Chương 03: Thực nghiệm bài toán

Sau một thời triển khai luận văn tác giả đã hoàn thành được các hạng mục đã thống nhất
với giảng viên hướng dẫn với kết quả tốt và đúng tiến độ đề ra.

Trang 6




Tóm tắt kết quả đạt được của luận văn
- Về Cơ sở lý thuyết: Luận văn đã thực hiện
o Tìm hiểu được các nội dung cơ sở lý thuyết theo mục tiêu đề ra và phần lý
thuyết do Giảng viên hướng dẫn giao phó.
o Xây dựng cuốn báo cáo toàn văn và cuốn báo cáo tóm tắt luận văn
- Về Thực nghiệm: Luận văn đã thực hiện được
 Cài đặt thành công các thư việc xây dựng nên môi trường của một hệ thống
thông tin địa địa lý cho thực nghiệm bài toán
 Cấu hình CSDL cho phép triển khai dữ liệu mẫu
 Triển khai dữ liệu mẫu: dữ liệu OSM từ hệ thống OpenStreetMap
 Thực nghiệm thành công các hàm cài đặt bài toán TSP trong thư viện
pgRouting
 Xây dựng được ứng dụng web nhỏ cho truy vấn dữ liệu mẫu


Trang 7




Chương 01: Giới thiệu bài toán tìm đường đi
1.1 Giới thiệu bài toán TSP

1.1.1 Bài toán TSP
Traveling Salesman Problem (TSP): Dựa trên công việc của nhân viên giao hàng
Anh ta xuất phát từ cửa hàng tới các điểm giao hàng (thành phố), mỗi thành phố chỉ được
phép đi qua một lần và quay trở lại thành phố xuất phát. Anh ta sẽ phải tìm ra đường đi để
tổng chiều dài tới các thành phố là nhỏ nhất.
- Phát biểu bài toán TSP [2]: Cho đồ thị trọng số G = (V, E), trong đó trọng số C
ij

(cung nối giữa điểm i với điểm j) là một số không âm. Tìm ra đường đi tới toàn bộ các
node còn lại với tổng chi phí là nhỏ nhất.
- Giải thuật hình thức giải quyết bài toán TSP.
Input: n node mảng giá trị trọng số c(i,j) i, j=1, n /* Bắt đầu với node 1*/
Output: tập vector của các node và tập tổng chi phí tương ứng.
/* khởi đầu các giá trị */
C=0; cost=0 ; visits=0; e=1; /* e = vị trí thăm node 1*/
for r = 1 to n-1 do{ /* tính chi phí */
chọn node j với
minimum = c(e,j) = min(c(e,k); visits(k) = 0 và k = 1, ,n);
cost = cost+ minimum; e = j; C(r) = j
}
C(n)=1; cost=cost+ c(e,1);
Bài toán TSP được xếp vào lớp bài toán tối ưu và độ phức tạp nằm trong lớp các bài toán
NP-hard [1]. Với giải thuật thông thường thì có N! trường hợp tìm kiếm và độ phức tạp
tương ứng O(N!).
- Một số ứng dụng: TSP là một bài toán được xếp vào trong lớp bài toán tìm kiếm
tối ưu. Bài toán được ứng dụng trong nhiều lĩnh vực, khi gặp bài toán có phát biểu tương
tự. Bài toán có thể giải quyết các vấn đề như lập lịch, tìm đường đi trong bản đồ, thiết kế
mạch điện tử, bài toán nhân viên đi giao hàng …
Trang 8





1.1.2 Một số giải thuật giải quyết bài toán TSP
a) Các thuật toán cơ bản giải quyết TSP:
- Thuật toán Branch-Bound [3]: Duyệt đồ thị theo chiều sâu (đi theo một nhánh),
chuyển nhánh mới khi gặp trường hợp giải quyết bài toán hoặc vượt giá trị ngưỡng (cận).
Luôn duy trì đường đi ngắn nhất và chỉ cập nhật khi tìm ra trường hợp giải quyết(đường
đi có chi phí thấp hơn) có đường đi tốt hơn.
Giải thuật:
T(k) = một tour với k thành phố;
Search(k,T(k-1));
if ( k = = n) { Ghi lại tour với cận B=độ dài tour; /*cập nhật cận*/ }
else {
Tìm k-1 khả năng để thêm k cho tất cả vị trí có thể có trong tour
Trong tất cả các tour tìm ra một tour sao cho độ dài < B hiện tại
Search(k+1,T(k)); /*tìm nhánh mới*/
}
Bản chất của thuật toán Branch-Bound là chuyển tìm kiếm trên đồ thị thành việc
tìm kiếm theo nhánh dựa trên cây tìm kiếm (Branch), với phương pháp tìm kiếm theo độ
sâu (bound) nhất định. Mỗi một nhánh là một trường hợp giải quyết bài toán. Nếu vượt
quá ngưỡng hoặc tìm thấy lời giải cho bài toán thì chuyển sang nhánh mới. Việc xây dựng
hàm đánh giá độ sâu quyết định đến thời điềm dừng thuật toán hoặc chuyển sang nhánh
mới để tìm lời giải tiếp theo. Từng bài toán cụ thể có thể cài đặt hàm đánh giá. Khi xây
dựng cần phải kiểm soát được độ sâu trong quá trình tìm kiếm. Nếu không kiểm soát
được hoặc để độ sâu không hợp lý sẽ làm cho thuật toán có lời giải kém hiệu quả, thậm trí
là không thể tìm ra được lời giải. Nếu để độ sâu lớn thì có nghĩa làm việc tìm kiếm sẽ có
chi phí tốn kém hơn như bùng nổ không gian bộ nhớ hoặc tăng các thao tác tính toán khi
thực hiện theo nhánh hiện tại. Thông thường các thuật toán tìm theo độ sâu được cài đặt
dễ nhất bằng chiếm lược dùng đệ qui.

Trang 9




- Thuật toán Heuristic: với ý tưởng cơ bản là tìm kiếm một lời giải tối ưu hơn
theo các lời giải trước. Thông thường mỗi một giải thuật thường đi kèm với hàm đánh giá
hàm Huristic cho biết thuật toán có thể dừng và đánh giá là tốt hơn hay không. Với mỗi
trường hợp cụ thể thì việc xây dựng hàm Huristic dựa trên các đối và lựa chọn các hằng
số sẽ hướng việc đánh giá cho chiến lược tốt hơn, thậm trí làm tăng hiệu quả thuật toán.
Giải thuật được dựa trên chiến lược cụ thể với hàm kinh nghiệm (heuristic).
Heuristic có nhiều giải thuật. Ở đây tác giả cung cấp giải thuật Nearest Neighbor
Algorithm [1] để minh họa giải thuật Heuristic:
Đầu vào
- N thành phố
- Chi phí giữa các thành phố.
- c (i, j) i, j = 1, . . , n.
- Bắt đầu với thành phố số 1
Đầu ra
- Tập các thành phố cần tới
- Chi phí tới các thành phố.
Bước chính
B01: Khởi tạo
c← 0; Cost ← 0; visits ← 0; e = 1 /* Khởi đầu là thành phố số 1 */
B02: For (1 ≤ r ≤ n )Do {
Chọn điểm j sao cho
minimum = c (e, j) = min{c (e, k); visits (k) = 0 và 1 ≤ k ≤ n }
cost ← cost + minimum – cost;
e ← j;
}

C(r) ← j;
C(n) = 1; cost = cost + c (e, 1)


Trang 10




Giải thuật: Nearest Neighbor Algorithm cho phép cài đặt bài toán TSP
Giải thuật cố gắng bổ xung một node mới vào trong tập các node hiện tại sao cho
đường đi tới nó là nhỏ nhất, sau đó kiểm tra tập node mới tạo ra có phải là một lời giài(
kết quả) hay không. Nếu không phải thì tiếp tục bổ sung node mới (node này chưa được
bổ sung). Thuật toán chỉ dừng khi hết node được bổ xung hoặc đã tìm ra lời giải. Thao tác
quan trọng là tìm ra node được bổ sung với đường đi tới nó là nhỏ nhất. Với bước đầu để
tìm ra node này sẽ gặp khó khăn với số lượng lớn các node chưa được bổ sung.
Bước 1 Bắt đầu với vector trọng số trong đồ thị G
Bước 2 Thêm node mới với đường đi tới nó là nhỏ nhất (cung) và node này chưa
được thêm.
Bước 3 Tiếp tục bước 02 cho tới khi có chu trình Hamilton.
- Thuật toán GA: là một trong các thuật toán được cài đặt và giải quyết bài toán TSP một
các rất hiệu quả. Với độ phức tạp thời gian và lưu trữ chấp nhận được. GA dựa trên ý
tưởng tiến hóa tự nhiên. Cho phép giải quyết bài toán TSP. GA được trình bày cụ thể
trong phần 1.2 của chương này.
b) So sánh giữa các thuật toán
Một số giải thuật giải quyết bài toán TSP với độ phức tạp thuật toán tương ứng được trình
bày trong bảng 1.1.
Bảng 1.1 Một số thuật toán và độ phức tạp tính toán [1]
tt
Thuật toán

Độ phức tạp
1
Genetic Algorithm
O(kmn)
2
Dynamic programming
O(n
2
2
n
)
3
Branch and Bound
O(n³ln²(n))
4
Nearest Neighbor
O(n
2
)
5
Greedy heuristic
O(n
2
log
2
(n))
Trang 11





1.2 Giải thuật Genertic TSP
1.2.1 Giới thiệu giải thuật GA
- Giới thiệu: Thuật toán GA (Genetic Algorithm) được ra dựa trên học tuyết tiến
hóa của Charles Darwin. Theo thuyết này con sinh ra được thừa hưởng các ưu điểm (gen)
vượt trội của cha và mẹ.
- Ý tưởng: Dựa trên tập dân số cha mẹ. Tiến hành lai tạo hai cá thể cha mẹ theo
gen để tạo ra thế hệ mới (đột biến). Thay thế thế hệ mới cho cha và mẹ nếu có đặc tính tốt
hơn cha mẹ, lặp lại quá trình lai tạo cho tới khi tìm ra tập dân số hoàn toàn mới. Đột biến
thể hiện thế hệ sau tốt hơn thế hệ trước.
- Thuật toán: [2]
B1[initial] Tạo ra dân số ngẫu nhiên của n nhiễm sắc thể.
B2 [Huấn luyện/fitness] Đánh giá hàm huấn luyện f(x) cho mỗi nhiễm sắc thể X cho tập
dân số.
B3 [Tạo dân số mới] Tạo tập dân số mới bằng các lặp đi lặp lại các bước sao cho tạo ra
tập dân số hoàn toàn mới
B3.1 [Lựa chọn/Selection] Chọn hai nhiễm sắc thể từ nhiễn sắc thể cha/mẹ từ tập
dân số với f(x) (Thể lực tốt hơn, cơ hội lựa chọn cao hơn)
B3.2 [Chéo hóa/Crossover] Chéo hóa nhiễn sắc thể từ cha mẹ để tạo ra con mới. Nếu
chéo hóa không được thực hiện thì con sẽ được sao y hệt đặc tính cha mẹ.
B3.3 [Đột biến/mutivation] xác xuất đột biến khi con được sinh ra (Tại vị trí nhiễn
sắc thể x).
B3.4 [Chấp nhận/acception] Đặt con mới vào tập dân số mới
B4 [Thay thế/Replation] Sử dụng dân số mới cho hoạt động tiếp theo của thuật toán
B5 [Thử] Nếu điều kiện cuối cùng là hài lòng, dừng lại, quay trở lại với giải thuật tốt nhất
cho dân số hiện tại.
B6 [Lặp lại] trở lại bước B2

Trang 12





a) Thao tác chính
Các thao tác chính trong GA ảnh hưởng trực tiếp kết quả của GA. Các thao tác này bao
gồm kỹ thuật chéo hóa, hàm xác xuất đột biến.
- Thao tác chéo hóa: thể hiện gép các cặp nhiễm sắc thể từ cha với các cặp nhiễm
sắc thể của mẹ, nhằm mục đích sinh ra thế hệ với các đặc tính kế thừa từ cha/mẹ và có thể
sinh ra các đặc tính(NST) mới tốt hơn cha mẹ. Có nhiều phương pháp chéo hóa, mỗi giải
thuật thuật có thể áp đặt một phương pháp chéo hóa để tăng tính hiệu quả. Ở đây có 2 loại
chéo hóa đó là chéo hóa đơn và chéo hóa bội. Thao tác nhằm tạo ra đột biến (con cái có
đặc tính tốt hơn cha mẹ). Thao tác nhằm thúc đẩy việc tìm ra một giải pháp tốt hơn. Thao
tác quyết định hiệu quả của thuật toán. Có nhiều phương pháp chéo hóa, mỗi bài toán cụ
thể sẽ được được cài đặt riêng sao cho hiệu quả thu được là tốt nhất có thể.
+) Chéo hóa đơn: thể hiện phân tích Gen cha/mẹ thành 2 thành phần (đầu, cuối).
Thực hiện chéo hóa nối phần đầu của cha với phần đầu của mẹ và ngược lại sinh ra 2 con
mới
Kết quả chép hóa phụ thuộc vào vị trí x trong chuỗi Gen của cha và của mẹ. Vị trí
thích hợp thì xác xuất xảy ra đột biến tốt sẽ nhiều hơn.
Ví dụ về chéo hóa đơn: trong ví dụ (xem hình 2.1) tác giả sử dụng chuỗi các bit nhị phân
để mã hóa các gen của cá thể cha/mẹ thực hiện chéo hóa.

Hình 2.1:Chéo hóa đơn
+) Chéo hóa bội: thực hiện chia Gen cha/mẹ thành nhiều thành phần hơn (từ 3
phần riêng biệt trở nên), ví dụ ( xem hình 2.2). Chéo hóa thực hiện thao tác tương tự như
chéo hóa đơn là tuần tự lấy thành phần gen của cha nối với thành phần tiếp theo là gen
của mẹ ghép lại để tạo ra con chung có đặc tính tốt hơn cha mẹ. Hiệu quả của chéo hóa
Trang 13





bội phụ thuộc chia số lượng các thành phần chéo hóa và vị trí chéo hóa. Nếu số thành
phần càng lớn thì tạo con chung càng lớn và như vậy thao tác chéo hóa sẽ diễn ra với
nhiều thao tác hơn mới có thể kết thúc.

Hình 2.2: Chéo hóa bội
- Tính xác xuất đột biến: xây dựng hàm tính toán để xác định con chung sau khi
chéo hóa có đặc tính tốt hơn( trường hợp tốt hơn) để lựa chọn vào thay thế cha/mẹ trong
tập dân số ban đầu. Tiến trình thao tác đột biến sẽ thực hiện ngay sau tiến trình chéo hóa.
Việc xây dựng thao tác đột biến cần phải chú ý tới các yêu cầu nhỏ như
+) Trong quá trình chạy cho phép đạt tới bất kỳ điểm mong muốn nào.
+) Kiểm soát được kích thước nhiễn sắc thể và số lượng đem chéo hóa
+) Kiểm tra sự hợp lệ của gen: Gen được tạo thành phải được kết hợp từ gen
cha/mẹ và có độ dài bằng độ dài cha mẹ.
+) Xác suất đột biến phải được chạy từ mức thấp
b) Các thao tác phụ
- Biểu diễn tập dân số: Dựa trên các đặc tính cha mẹ sẽ đưa ra phương pháp biểu
diễn nhằm thuận tiện cho quá trình lựa chọn, lai tạo có kết quả tốt. Có thể biểu diễn dân
số theo các phương pháp dùng chuỗi nhị phân, các số nguyên hoặc chuỗi ký tự để biểu
diễn.
- Lựa chọn: lấy cặp cá thể cha mẹ ngẫu nhiên thực hiện thao tác lai tạo (chéo hóa).
- Hàm huấn luyện: thể hiện việc xây dựng hàm cho phép tỉ lệ lựa chọn cặp cha mẹ
thực hiện lai tạo gây đột biến với xác xuất thành công là cao nhất có thể. Hàm quyết định
Trang 14




tới số lượng thao tác lựa chọn cặp dân số cha/mẹ. Hàm huấn luyện sẽ được điều khiển bởi

một giá trị ngưỡng.
1.2.2 Giải thuật GA TSP
Giải thuật GA thích hợp cho việc giải quyết các bài toán tìm kiếm tối ưu. Được
ứng dụng ngày càng rộng rãi. Nhiều nghiên cứu và thực nghiệm được công bố áp dụng
GA. TSP là một trường hợp cụ thể để áp dụng GA. Với TSP thì giải thuật GA tỏ ra rất
hiệu quả về kích thước các node (vài nghìn node) và thời gian tìm ra kết quả chỉ mất vài
phút. Độ phức tạp của GA khi cài đặt TSP chỉ là hàm đa thức.
- Ý tưởng: Dựa trên sự lựa chọn các tuyến đường ngẫu nhiên. Lấy ra hai tuyến
đường ngẫu nhiên và tiến hành chéo hóa sẽ có thể tạo ra tuyến đường mới (đột biến) tốt
hơn. Nếu có có kết quả tốt hơn thì thực hiện thay thế tuyến đường cũ bằng tuyến đường
mới.
- Thuật toán: [2]
Bước 01: Tạo lập các tuyến đường ngẫu nhiên (mỗi tuyến một chuỗi các node),
tạo ma trận giá trị đường đi từ thành phố i tớ thành phố j.
Bước 02: Tạo hàm huấn luyện f(x) = 1/x. giá trị hàm này là tiêu trí. X là tổng
chi phí đường đi tới thành phố xác định. Tính các tiêu trí phụ thuộc vào giá trị
của đường đi nếu nó gần với một giá trị ngưỡng.
Bước 3: Tạo ra tập đường đi mới từ hai hai đường đi ngẫu nhiên (tập cha mẹ)
qua thao tác chéo hóa.
Bước 4: Đưa ra tập mới nếu cần thiết. Tập này được cho là ưu việt hơn từ tập
cũ, và có mặt của phần tử đột biến.
Bước 5: Lặp lại Bước 3 và Bước 4 cho tới khi gặp một giải pháp mới tốt hơn.
Các thao tác trong thuật toán GA TSP
+ Tạo lập tập các tuyến đường ngẫu nhiên: thực hiện xây dựng các tuyến đường
ngẫu nhiên tới các node
Trang 15





+ Chéo hóa: Thực hiện lấy ra hai tuyến đường trong tập các tuyết đường ngẫu
nhiên.Coi các tuyến đường này như một Gen. Sau đó thực hiện thao tác chéo hóa
giữa hai tuyến đường để tạo ra các tuyến đường mới từ hai tuyến đường ngẫu
nhiên ở trên
+ Tính toán đột biến: Sau khi thực hiện chéo hóa xong. Tính lại độ dài đường đi
và thực hiện thay thế nếu có đường đi ngắn hơn.
1.3 Ứng dụng của TSP trong hệ thống thông tin địa
Trong thệ thống thông tin địa lý cụ thể là ứng dụng giải quyết một số bài toán liên quan
đến bản đồ. Bài toán TSP cho phép tìm ra đường đi (tour) tối ưu giữa các các điểm được
đánh dấu trên bản đồ. Có thể kể ra các bài toán có thể giải quyết.
- Tìm lộ trình ngắn nhất giữa các nơi giao hàng trên bản đồ cho nhân viên đi giao hàng
với chi phí (theo khoảng cách) là nhỏ nhất.
- Tìm ra lộ trình cho các tuyến xe bus trong một thàng phố.
- Tìm ra lộ trình lái xe cho các lái xe qua các điểm giao thông.

Trang 16




Chương 02: Hệ quản trị CSDL không gian
2.1 Hệ thống thông tin địa lý
2.1.1 Giới thiệu về hệ thống thông tin địa lý
- Hệ thống thông tin: là một thệ thống bao gồm phần cứng, phần mềm và mạng
máy tính được tổ chức theo kiến trúc nhất định nhằm giải quyết một vấn đề cụ thể một
cách hiệu quả. Một hệ thống tin có thể bao gồm thêm yếu tố con người thao tác trên hệ
thống. Một số hệ thống thông tin thể hiện về bản đồ địa lý, địa chất, không gian …
Đặc điểm hệ thống thông tin:
o Hệ thống thường lớn về khả năng tính toán, lưu trữ, xử lý, khả năng đáp ứng
nhanh, có thể mở rộng kiến trúc.

o Thiết các thành phần đặc thù: phần cứng, phần mềm.
o Giải quyết, đáp ứng các bài toán cụ thể.
- Ứng dụng hệ thống thông tin địa lý (Geomtry information system viết tắt GIS): hệ
thống thông tin được thiết lập cho phép thu thập, tiền xử lý, tổ chức, lưu trữ, đảm bảo,
truy vấn dữ liệu … liên quan đến dữ liệu địa lý toàn cầu. Thông tin về địa lý có thể bao
gồm các thông tin về vị trí, địa hình, định vị (vệ tinh), bản đồ, thời tiết, rừng, biển, đất,
sông ngòi …
+ Thu thập: cho phép phát hiện, thu nhận các thông tin dạng thô
+ Tiền xử lý: Các bước loại bỏ dữ liệu không cần thiết, trùng lặp, thông tin/dữ liệu sai
+ Tổ chức: Các thao tác tổ chức thông tin chưa có cấu trúc thành các thông tin lưu trữ
có cấu trúc. Các thông tin này được lưu trữ trong cơ sở dữ liệu (CSDL).
+ Đảm bảo: Thực hiện các thao tác nhằm mục đích dữ liệu luôn sẵn sàng. Phục vụ các
thao tác khác một cách chính xác, kịp thời, nhanh chóng.

Trang 17




2.1.2 Kiến trúc cơ bản một hệ thống thông tin địa lý
Một thệ thống thông tin địa lý cơ bản bao gồm khối (xem trong hình 2.1)
- Kkối server: Lưu trữ, tổ chức, thực thi, cung cấp giao diện (interface) cho các
khối khác. Khối trung tâm chứa dữ liệu, chứa module phần mềm xử lý dữ liệu GIS. Khối
này được xây dựng thành các dịch vụ nhằm mục đích hỗ trợ các tương tác phía người
dùng theo từng mục đích. Nhiện vụ chính để xử lý dữ liệu cỡ lớn và các thao tác nội tại.
- Khối Client: Giao diện trực quan hỗ trự người dùng thao tác với server. Khối này
được xây dựng trên nền tảng ứng dụng winform hoặc webform. Nhiệm vụ chủ yếu hiển
thị giao diện biểu diễn thông tin, hỗ trợ thao tác của người dùng tới khối server
- Khối Mobile: Cho phép truy cập trên nền tảng mobile. Khối cho phép xây dựng
các ứng dụng Mobile với tài nguyên hạn chế. Cho phép tương tác hệ thống với các tiện

ích di động.

Hình 2.3 Kiến trúc hệ thống thông tin địa lý

Trang 18




2.1.3 Bản đồ
- Bản đồ (map): thể hiện đối tượng dữ liệu được biểu diễn một cách trực quan
thông qua vị trí của đối tượng. Các đối tượng luôn chứa các thông tin của nó và thông tin
về vị trí. Các phầm mềm hiển thị dữ liệu bản đồ cung cấp giao diện trực quan bằng hình
ảnh để biểu diễn dữ liệu như GoogleMap, BingMap, YahooMap…
- Dữ liệu bản đồ: là dữ liệu được tích hợp từ nhiều loại dữ liệu khác nhau. Để lưu
trữ người ta xếp dữ liệu cùng mục đích vào cùng một layer (tầng dữ liệu). Hình 2.2 Mô tả
biểu diễn dữ liệu bản đồ được theo các layer.


Hình 2.4: Layer cơ bản trong dữ liệu bản đồ
o Realworld: bản đồ thật. Sự kết hợp của các layer khác
o Land: bản đồ thể hiện dữ liệu về đất đai và vùng miền theo biên giới
o Elevation: thể hiện vùng đất cao thấp theo độ cao.
o Parcels: thể hiện bản đồ theo lô đất/ vùng đất.
o Stresst: thể hiện đường đi trên bản đồ

Trang 19





2.2 CSDL không gian PostGres và PostGIS
2.2.1 Giới thiệu
a) Cơ sở dữ liệu không gian: là Cơ sở dữ liệu lưu trữ đối tượng dữ liệu không gian.
Không gian được đề cập là không gian hai chiều (2D), hoặc không gian 3 chiều (3D)
trong thệ trục tọa độ. Không gian thể hiện vị trí của đối tượng dữ liệu trong hệ trục tọa độ
cụ thể, trong luận văn là hệ trục tọa độc cực OXY.
b) Hệ quản trị CSDL không gian
Hệ quản trị CSDL không gian là hệ quản trị CSDL cho phép tổ chức, lưu trữ, xử lý, truy
vấn, đảm bảo… CSDL không gian.
- PostGres là hệ quản trị CSDL quan hệ, hướng đối tượng. Dùng bảng để lưu trữ
đối tượng dữ liệu không gian. Đối tượng cho phép định nghĩa kế thừa.
Các đặc trưng: [6]
o Mã nguồn mở: cho phép mở rộng hàm, tự xây dựng dựa trên ngôn ngữ C.
o Câu lệnh truy vấn phức tạp
o Đa khóa ngoại
o Hỗ trợ trigger
o Hỗ trợ đa khung nhìn
o Tích hợp transactional
o Hỗ trợ điều khiển đa phiên bản
- PostGis: thư viện mở rộng dựa trên PostGres, bao gồm các hàm thư viện chuyên
thao tác với dữ liệu GIS. Các hàm cho phép tổ chức, trích rút, chuyển đổi, truy vấn,… dữ
liệu không gian.

Trang 20




2.2.2 Kiến trúc PostGres

- Khối Client: thiết lập giao diện tương tác người dùng, kết nối tới khối server và
chuyển tương tác với csdl thông qua server, hiển thị kết quả thông qua giao diện người
dùng.
- Khối server: Xử lý trên khối sever bao gồm các hoạt động như tạo môi trường,
giao diện quản lý dữ liệu, chấp nhận và quản lý các kết nối từ khối Client


Hình 2.5 Kiến trúc PostGres
Trang 21




2.2.3 Kiểu dữ liệu không gian
a) Kiểu dữ liệu GIS [5]: Dữ liệu Vector và dữ liệu Raster là hai kiểu dữ liệu chính được
hỗ trợ trong PostGis. Kiểu dữ liệu thông thường trong PostGres mô tả thuộc tính dữ liệu
GIS.
- Vector: GIS hỗ trợ kiểu POINTS, LINES, POLYLINES,
o Point: Chỉ vị trí trên bản đồ theo chiều X, chiều Y
o Line: Đường đi gồm điểm đầu, điểm cuối
o Polylines: Tập các đường
o Region: Vùng dữ liệu là các đường liên tiếp và đóng kín
Chú ý: Vị trí trong bản đồ địa lý toàn cầu thể hiện kinh độ (lon), vĩ độ (lat)
- Kiểu dữ liệu Raster: bao gồm các cell, mỗi cell diễn tả một vị trí trong Raster với giá trị
nguyên các thuộc tính về màu sắc và vị trí. Khi xuất dữ liệu thành dạng dữ liệu ảnh.


Hình 2.6 Dữ liệu Raster và cách số hóa.
b) Geomtry Colum: lưu trữ thuộc tính đối tượng dữ liệu không gian. Giá trị dữ liệu được
lưu trữ dưới dạng số hoặc dạng chuỗi các số được số hóa. Vì vậy việc thao tác đến các

thuộc tính này không trực quan nên cần phải có các hàm hỗ trợ chuyển đổi qua lại giữa dữ
liệu trực quan và dữ liệu không trực quan. PostGis hỗ trợ các hàm này.
Trang 22




c) Geomtry Table: Bảng chứa các thuộc tính dữ liệu kiểu Geomtry colum mô tả đối
tượng dữ liệu không gian trong CSDL. .
d) GeomTry Reference: hệ thống quy chiếu (chuyển đổi) các giá trị từ Geomtry colum
sang các giá trị thuộc tính khác.
e) Thuộc tính dữ liệu Goemtry trong Geomtry Table
Trong toàn bộ các bảng chứa thông tin đối tượng dữ liệu không gian đều phải có
cột Geomtry kiểu Geomtry. Dữ liệu này tồn tại nhằm mục đích lưu trữ thông tin về đối
tượng không gian và cho phép khôi phục đối tượng không gian khi có sai hỏng. Geomtry
được sử dụng với hàm trích thông tin (extraction) trong PostGis để khôi phục dữ liệu
không gian cho đối tượng.
2.2.4 Hàm hỗ trợ xử lý dữ liệu trong Gis
GIS cung cấp các loại hàm (định dạng st_namefunction) thao tác:
- Constructor: các hàm cho phép tạo lập giá trị GIS geomtry sang dạng
„well-known text„.
- Output: Chuyển GIS geomtry sang các định dạng khác (WKT, WKB, GML, SVG,
KML).
- Accessor và setter: Hàm cho phép chuyển Geomtry thành các thuộc tính kiểu dữ liệu cơ
bản. Thiết lập hoặc trả về giá thuộc tính đối tượng CSDL.
- Decomposition: Mã hóa kiểu dữ liệu ouput thành giá trị geomtry.
- Composition: Cắt, nối hòa nhập, gom nhóm các đối tượng geomtry.
- Measurement: Đo các đối tượng theo độ dài, diện tích…
2.2.5 Truy vấn dữ liệu không gian
Truy vấn dữ liệu trong cơ sở dữ liệu Postgres được thực hiện bởi ngôn ngữ truy

vấn SQL với tên gọi psql. Đặc tính truy vấn phức được cài đặt cho phép truy vấn dữ liệu
thông thường mà còn cho phép truy vấn dữ liệu không gian và xây dựng câu lệnh truy vấn
phức tạp.

Trang 23




a) Cú pháp chung:
Select <trường dữ liệu> [from <nguồn dữ liệu>
[ where (<điều kiện>)] ]
- Select, from, where là các từ khóa của ngôn ngữ sql.
- Trường dữ liệu: cột dữ liệu trong các bảng, hoặc các trường là kết quả của biểu thức
tính toán. Nếu trường là * thì đại diện cho toàn bộ trường dữ liệu trong bảng. Các trường
được phân biệt bởi dấu phẩy.
- Nguồn dữ liệu: thể hiện nơi lưu trữ dữ liệu. Nguồn có thể là một bảng hoặc nhiều bảng,
thậm trí là function trong postres.
- Điều kiện: biểu thức trả về giá trị true/false. Thể hiện điều kiện lọc dữ liệu. Những dữ
liệu sánh đúng sẽ được trả về.
Ví dụ
TSPTest# Select * from Ways;
Select id, name, x, y from nodes where (id <6);

Chú ý: các thành phần from hoặc where có thể không xuất hiện trong câu lệnh Select. Ví
dụ select (6+7) as add; # kết quả 13.
b) Câu lệnh truy vấn dữ liệu select cơ bản
- Truy vấn dữ liệu từ bảng dữ liệu.
Select * from nodes;
Select id, name from nodes limit 10;

- Truy vấn kết hợp toán tử: có thể sử dụng toán tử +,=,*,/, … cơ bản để thực hiện chế
biến dữ liệu theo cách xây dựng biểu thức trong câu lệnh select để trình bày dữ liệu.
Ví dụ: LV=# select (5+7) as tong; # kết quả 12
- Truy vấn sử dụng hàm được xây dựng sẵn trong postgres như sum, max, min, count …
Ví dụ: LV=# select count(id) from nodes; count: 2080068 (1 row)
c) Truy vấn dữ liệu không gian: CSDL không gian hỗ trợ câu lệnh select để truy vấn dữ
liệu không gian và sử dụng dữ liệu không gian:

Trang 24




Ví dụ LV=# select * from nodes limit 10;
id | lon | lat | numofuse
+ + +
74099711 | 105.11886750 | 10.71018150 | 0
74126839 | 105.85294420 | 21.03145220 | 2
74126842 | 105.85196800 | 21.03159250 | 1
74126845 | 105.85170770 | 21.03160490 | 1
74126847 | 105.85155220 | 21.03155730 | 1
74126849 | 105.85139390 | 21.03139460 | 1
74126850 | 105.85132420 | 21.03132450 | 1
74126851 | 105.85150920 | 21.02971220 | 1
74126852 | 105.85153870 | 21.02950940 | 1
74126854 | 105.85157360 | 21.02837030 | 1
(10 rows)
- Sử dụng hàm PostGIS: hàm St_tên hàm được sử dụng cho phép xử lý dữ liệu Geomtry.
Một số ví dụ sau đây cho thực hiện truy vấn dữ liệu không gian.
SELECT ST_AsEWKT(ST_Transform(

ST_GeomFromEWKT('SRID=4326;
LINESTRING(-73 41, -72 42)'), 32618));
Kết quả :
SRID=32618;LINESTRING(668207.88519421 4540683.52927698,
748464.920715711 4654130.89132385)
- Truy vấn sử dụng hàm trong pgRouting: các hàm trong pgrouting được trình bày cụ thể
trong chương 03. Ví dụ: gọi hàm pgr_tsp trong psql:
Câu lệnh thực hiện bài toán TSP cho 2 node 2 và 3.
TSPTest=# select seq, id1, id2, round (cost:: numeric) as cost from pgr_tsp('select id,x,y
from vertex_table',2,3);
Kết quả
seq | id1 | id2 | cost
+ + +
0 | 1 | 2 | 1
1 | 0 | 1 | 3
2 | 4 | 5 | 1
3 | 5 | 6 | 1
4 | 6 | 7 | 1
5 | 9 | 10 | 1
6 | 12 | 13 | 1
7 | 10 | 11 | 1
(13 rows)

×