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

Áp dụng thuật toán di truyền giải bài toán tối ưu tuyến xe buýt

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.98 MB, 68 trang )

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

NGUYỄN THANH HÀO

ÁP DỤNG THUẬT TOÁN DI TRUYỀN
GIẢI BÀI TOÁN TỐI ƢU TUYẾN XE BUÝT

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

Hà Nội – 2014


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

NGUYỄN THANH HÀO

ÁP DỤNG THUẬT TOÁN DI TRUYỀN
GIẢI BÀI TOÁN TỐI ƢU TUYẾN XE BUÝT

Ngành: Công nghệ Thông tin
Chuyên ngành: Hệ thống Thông tin
Mã số: 60480104

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

NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. Tạ Tuấn Anh


Hà Nội – 2014


3

LỜI CAM ĐOAN
Tôi xin cam đoan luâ ̣n văn này hoàn toàn do tôi thực hiện.
Các đoạn trích dẫn và số liệu sử dụng trong luận văn đều được dẫn nguồn và có
đô ̣ chính xác cao nhấ t trong pha ̣m vi hiể u biế t của tôi. Kế t quả của luâ ̣n văn chưa
từng đươ ̣c công bố trong bấ t cứ công triǹ h nào khác.
Hà nội, ngày 22 tháng 09 năm 2014
Học viên

Nguyễn Thanh Hào


4
LỜI CẢM ƠN
Sau 2 năm học tập và rèn luy ện tại trường Đại học Công nghê ̣ – Đa ̣i
học Quốc Gia Hà Nội, đến nay em đã hoàn thành chương triǹ h h ọc tập và
luận văn tốt nghiệp Thạc sĩ chuyên ngành Hê ̣ thố ng Thông tin.
Để có được những kết quả khiêm tốn ngày hôm nay, em xin trân trọng
cảm ơn:
 Ban giám hi ệu nhà trường đó quan tâm, tạo điều kiện thuận lợi cho
chúng em học tập và rèn luyện tốt.
 Các Thầy, Cô trong Khoa Công nghê ̣ Thông tin đã tận tâm giảng
dạy, truyền đạt những kiến thức nền tảng là hành trang quý báu để
chúng em bước vào đời.
Em xin đặc biệt bày tỏ lòng kính trọng và biết ơn chân thành đến Thầy
giáo, Tiến sĩ Tạ Tuấn Anh, người đã trực tiếp hướng dẫn tận tình và tạo

mọi điều kiện giúp em hoàn thành đư ợc luận văn tốt nghiệp này. Em xin
cảm ơn Thầy.
Em cũng xin được cảm ơn đến các anh, chị học viên lớp K18-HTTT đã
tạo điều kiện, giúp đỡ em trong thời gian vừa qua.
Cuối cùng, em xin được gửi lời cảm ơn đến gia đình và bạn bè, những
người đã luôn ở bên, động viên và khích lệ em trong suốt chặng đường học
tập đã qua.
Hà Nội, ngày 22 tháng 9 năm 2014
Nguyễn Thanh Hào


5
MỤC LỤC
DANH MỤC CÁC THUẬT NGỮ VÀ KÝ HIỆU VIẾT TẮT ........................ 7
MỤC LỤC HÌNH ................................................................................................ 8
MỞ ĐẦU .............................................................................................................. 9
Mục đích, lý do chọn đề tài ............................................................................... 9
Đối tượng, phạm vi nghiên cứu của luận văn.................................................... 9
Bố cu ̣c trin
̀ h bày và đóng góp mới của tác giả ................................................ 10
CHƢƠNG 1 – MÔ HÌNH BÀI TOÁN THIẾT KẾ TUYẾN BUÝT ............ 11
1.1. Biểu diễn dạng đồ thị mạng xe buýt ......................................................... 11
1.1.1. Nút trong mạng .................................................................................. 11
1.1.2. Cung trong mạng ............................................................................... 12
1.2. Hyperpath ................................................................................................. 13
1.2.1. Chiến lược đi trong hyperpath ........................................................... 14
1.2.2. Chi phí trên hyperpath ....................................................................... 15
1.2.3. Hyperpath có chi phí nhỏ nhất ........................................................... 16
1.2.4. Thuật toán tìm hyperpath có chi phí nhỏ nhất ................................... 16
1.3. Mô hình bài toán quy hoạch tuyến xe buýt .............................................. 23

1.4. Kết luận..................................................................................................... 24
CHƢƠNG 2 – THUẬT TOÁN DI TRUYỀN GIẢI BÀI TOÁN THIẾT KẾ
TUYẾN VÀ TẦN SUẤT XE BUÝT ................................................................ 25
2.1. Tối ưu đa mục tiêu .................................................................................... 25
2.2. Thuật toán di truyền.................................................................................. 27
2.2.1. Các thành phần của thuật toán di truyền............................................ 27
2.2.2. Cấu trúc thuật toán di truyền ............................................................. 28
2.3. Giải bài toán TRDNP ............................................................................... 28
2.3.1. Phân công xe ...................................................................................... 29
2.3.2. Thiết kế tuyến .................................................................................... 29
2.3.3. Thiết lập tần suất ................................................................................ 30
2.3.4. Các bước chính trong xử lý bài toán TRNDP ................................... 31
2.3.5. Thuật toán lai ghép và đột biến ......................................................... 32


6
2.3.6. Thuật toán phân lớp các nghiệm........................................................ 33
2.4. Kết luận..................................................................................................... 35
CHƢƠNG 3 – CHƢƠNG TRÌNH MÔ PHỎNG THUẬT TOÁN DI
TRUYỀN GIẢI BÀI TOÁN THIẾT KẾ TUYẾN VÀ TẦN SUẤT XE
BUÝT .................................................................................................................. 36
3.1. Công cụ phát triển chương trình ............................................................... 36
3.1.1. Giới thiệu tổng quan về C++ ............................................................. 36
3.1.2. Giới thiệu tổng quan về Code::Blocks............................................... 37
3.2. Giới thiệu về chương trình ....................................................................... 38
3.3. Các hàm chức năng................................................................................... 40
3.4. Một số ví dụ thử nghiệm chương trình ..................................................... 42
3.4.1. Ví dụ 1 ............................................................................................... 42
3.4.2. Ví dụ 2 ............................................................................................... 44
3.5. Kết luận..................................................................................................... 46

CHƢƠNG 4 – THỬ NGHIỆM CHƢƠNG TRÌNH VỚI BÀI TOÁN CỦA
THÀNH PHỐ ĐÀ NẴNG ................................................................................. 47
4.1. Mô hình mạng lưới giao thông xe buýt trên Google Earth ...................... 47
4.1.1. Giới thiệu phần mềm Google Earth ................................................... 47
4.1.2. Xây dựng dữ liệu đầu vào .................................................................. 49
4.2. Các kết quả đạt được ................................................................................ 51
4.3. Kết luận..................................................................................................... 52
KẾT LUẬN ........................................................................................................ 53
TÀI LIỆU THAM KHẢO ................................................................................ 54
PHỤ LỤC ........................................................................................................... 56


7
DANH MỤC CÁC THUẬT NGỮ VÀ KÝ HIỆU VIẾT TẮT
STT
1
2
3
4
5
6

Từ
TRDNP
NSGA
STL
IDE
SHT
DSHT


Nghĩa
Transit Route Network Design Problem
Non-dominated Sorting Genetic Algorithm
Standard Template Library
Integrated Development Environment
Shortest HyperTree
Dantzig Shortest HyperTree


8
MỤC LỤC HÌNH
Hình 1.1: Ví dụ mạng xe buýt............................................................................ 11
Hình 1.2: Biểu diễn dạng đồ thị ........................................................................ 12
Hình 2.1: Ánh xạ từ tập chấp nhận vào tập giá trị. ......................................... 26
Hình 2.2: Mặt Pareto ......................................................................................... 27
Hình 2.3: Nhiễm sắc thể mô tả thủ tục phân công xe. .................................... 29
Hình 2.4: (a) Đồ thị ví dụ. (b) Nhiễm sắc thể mô tả công việc thiết kế tuyến. 30
Hình 2.5: Mô hình chọn lọc cá thể qua các thế hệ .......................................... 31
Hình 2.6: (a) Thuật toán lai ghép. (b) Thuật toán đột biến ............................. 32
Hình 2.7: Khoảng cách giữa các cá thể trên đường cong pareto .................... 34
Hình 3.1: Giao diện đồ họa của Code::Blocks ................................................. 37
Hình 3.2: Đồ thị mạng lưới giao thông minh họa ví dụ 1 ............................... 42
Hình 3.2: Đồ thị các nghiệm ví dụ 1 qua các thế hệ ........................................ 43
Hình 3.3: Đồ thị các nghiệm ví dụ 2 qua các thế hệ ........................................ 45
Hình 3.4: Sơ đồ thiết kế tuyến buýt của ví dụ 2 ................................................ 45
Hình 4.1: Các tính năng trong cửa sổ Google Earth ....................................... 47
Hình 4.2: Các điểm giao cắt và con đường xe buýt có thể đi (6m) .................. 49
Hình 4.3: Đồ thị phân bố nghiệm cho thành phố Đà Nẵng qua các thế hệ ... 51
Hình 4.4: Các tuyến buýt (trong 1 nghiệm) sau khi tính toán qua 100 thế hệ 52



9
MỞ ĐẦU
Mục đích, lý do chọn đề tài
Ngày nay, giải quyết ùn tắc giao thông là một bài toán vô cùng nan giải
đối với các thành phố trên thế giới. Để giải quyết vấn đề này, Nhà nước đang
khuyến khích người dân sử dụng phương tiện giao thông công cộng nhằm hạn
chế xe cá nhân, giảm ách tắc trong thành phố. Chính vì vậy, việc quy hoạch
mạng lưới giao thông công cộng tác động lớn tới việc lưu thông phương tiện
trong khu vực đô thị, ảnh hướng tới kinh tế, xã hội.
Tại các thành phố lớn ở Việt Nam, mạng lưới xe buýt đã trở nên phổ biến
và lưu thông hàng ngày trên các tuyến đường trong đô thị cũng như vùng ngoại
ô. Một đặc điểm của giao thông xe buýt tại thành phố như Hà Nội là có lưu
lượng người rất lớn. Trong giờ cao điểm, các tuyến xe buýt không đáp ứng được
hết nhu cầu của người đi dẫn đến ùn tắc giao thông trên các tuyến đường. Một lí
do chủ yếu là các con đường trong thủ đô không được quy hoạch rộng ngay từ
đầu, và số lượng người tập trung quá đông đúc.
Để tránh tình trạng xảy ra như với Hà Nội, tại các thành phố đang thời kì
xây dựng cơ sở hạ tầng giao thông như Đà Nẵng, cần có một quy hoạch tổng thể
về các con đường và tuyến xe đảm bảo tránh ùn tắc khi dân số vùng tăng lên hay
tham gia giao thông công cộng trong giờ cao điểm. Bên cạnh đó, việc nhu cầu đi
lại tăng cao sẽ dẫn đến các khó khăn về mặt chi phí vận hành cũng như thiết kế
các tuyến xe buýt làm sao đảm bảo lợi ích về mặt thời gian cũng như tiền bạc
cho người dân. Vì vậy, mục đích của nghiên cứu này là áp dụng thuật toán di
truyền giải bài toán tối ưu tuyến xe buýt trong mạng giao thông đô thị. Nghiệm
của bài toán sẽ cho ta biết cấu hình của các tuyến xe và tần suất tương ứng tuyến
xe đó, với mục đích tiết kiệm chi phí vận hành hệ thống xe buýt và chi phí đi lại
cho người sử dụng.
Đối tƣợng, phạm vi nghiên cứu của luận văn
Đối tượng nghiên cứu của luận văn là thuật toán di truyền và các thuật

toán liên quan tới việc giải bài toán thiết kế tuyến và tần suất xe buýt nhằm tối
ưu thời gian đi lại cho người dân và thời gian xe chạy trên đường của nhà điều
hành.
Phạm vi nghiên cứu của luận văn là giải thuật di truyền NSGA-II
(nondominated sorting genetic algorithm) tối ưu đa mục tiêu áp dụng cho bài
toán xe buýt đã nêu ở trên.


10
Bố cu ̣c trin
̀ h bày và đóng góp mới của tác giả
Toàn bộ nội dung luận văn được trình bày trong 4 chương:
Chƣơng 1 – Mô hình bài toán thiết kế tuyến buýt: Giới thiệu cách biểu diễn
mạng xe buýt dưới dạng đồ thị, sau đó, phát biểu mô hình bài toán quy hoạch
mạng xe buýt dưới dạng bài toán tối ưu đa mục tiêu hai mức.
Chƣơng 2 – Thuật toán di truyền giải bài toán thiết kế mạng xe buýt:
Chương này trình bày các kiến thức tổng quan về tối ưu đa mục tiêu và thuật
toán di truyền. Sau đó, trình bày một số nét cơ bản để giải bài toán bằng thuật
toán di truyền.
Chƣơng 3 – Chƣơng trình mô phỏng thuật toán di truyền giải bài toán thiết
kế tuyến và tần suất xe buýt: Giới thiệu về cấu trúc chương trình, các hàm
chức năng, cách biểu diễn dữ liệu đầu vào, đầu ra và các công nghệ, thư viện
được sử dụng để viết chương trình.
Chƣơng 4 – Thử nghiệm chƣơng trình với bài toán của thành phố Đà Nẵng:
Giới thiệu về mô hình hóa mạng lưới giao thông xe buýt thành phố Đà Nẵng,
các tham số đầu vào của mô hình và kết quả minh họa khi chạy chương trình mô
phỏng thuật toán NSGA-II.
Cuối cùng, trong phần kết luận: tác giả trình bày những đóng góp của cá
nhân, những khó khăn khi làm luận văn, và hướng phát triển tiếp theo của đề tài.
Phƣơng pháp nghiên cƣ́u

Trong quá trình làm luận văn, tác giả nghiên cứu theo phương pháp:
 Lựa chọn tham khảo các nghiên cứu thuộc lĩnh vực đang làm theo sự
định hướng của thầy hướng dẫn.
 Trao đổi với bạn bè, đồng nghiệp để có thể có được những ý tưởng tốt.
 Tham khảo ý kiến của các chuyên gia qua các bài báo, tham dự
seminar về giao thông tại đơn vị công tác.
Báo cáo này là kết quả của phương pháp nghiên cứu trên, và nỗ lực của
tác giả.


11
CHƢƠNG 1 – MÔ HÌNH BÀI TOÁN THIẾT KẾ TUYẾN BUÝT
Chương này trình bày cách biểu diễn mạng xe buýt dưới dạng đồ thị, sau
đó, phát biểu mô hình bài toán quy hoạch mạng xe buýt dưới dạng bài toán tối
ưu đa mục tiêu hai mức.

Hình 1.1: Ví dụ mạng xe buýt [13]
1.1. Biểu diễn dạng đồ thị mạng xe buýt
Để thuận tiện trong việc xử lý các bài toán giao thông đô thị, mạng xe
buýt (còn gọi là mạng trung chuyển) được mô hình dưới dạng một đồ thị có
hướng 𝐺 = 𝑁, 𝐴 ; trong đó N là tập các đỉnh (nút) và A là tập các cung (cạnh)
có hướng. Trong dạng đồ thị sắp được trình bày, nút được chia thành 6 loại và
cung được chia thành 5 dạng.
1.1.1. Nút trong mạng
Trong đồ thị mô tả mạng xe buýt, các nút được dùng để biểu diễn các địa
điểm thực tế mà tại đó đã khảo sát nhu cầu đi, đến của người sử dụng; các điểm
dừng đỗ xe buýt và một số loại nút ảo được thêm vào để thuận tiện cho việc giải
các bài toán liên quan.
 Nút nguồn (origin node) biểu diễn địa điểm mà tại đó có nhu cầu đi tới
những nút khác trong mạng. Trong đồ thị, nút nguồn không có nút liền

trước và có ít nhất một nút liền sau. Chú ý rằng, với hai nút X và Y: X là
nút liền trước của nút Y nếu XY là một cạnh; X nút liền sau của nút Y,
nếu YX là cạnh của đồ thị. [13]
 Nút đích (destination node) biểu diễn điểm đến của người sử dụng xuất
phát từ các nút khác trong mạng. Trong đồ thị, nút đích không có nút liền
sau và có ít nhất một nút liền trước. [13]
Trong thực tế, tại một địa điểm sẽ có những hành khách đến và đi từ các
nút khác nhau trong thành phố. Do đó, địa điểm này sẽ được biểu diễn bằng một
nút nguồn và một nút đích.
 Platform là các điểm đón, trả khách tại các điểm dừng, đỗ xe. [13]


12
Ví dụ 1.1. Tại các bến xe buýt thông thường chỉ có một platform, nhưng tại một
bến trung chuyển, sẽ có nhiều platform. Chẳng hạn, tại điểm trung chuyển Cầu
Giấy, tuyến xe 38 và 07 sẽ đón khách tại cùng một platform.
 Nút dừng (stop node) biểu điễn một patform của một bến, một điểm trung
chuyển xe buýt. [13]
 Nút lên (boarding node) biểu diễn một vị trí platform ứng với tuyến xe
buýt, là nơi hành khách có thể đi lên tuyến xe buýt đó. [13]
 Nút xuống (alighting node) biểu diễn một vị trí tại platform ứng với một
tuyến xe buýt, là nơi hành khách đi xuống từ tuyến xe buýt đó. [13]
Ví dụ 1.2. Tại platform của tuyến xe buýt 38 và 07, điểm đón (trả) khách của hai
tuyến xe này được biểu diễn bởi 2 nút lên (xuống).

Hình 1.2: Biểu diễn dạng đồ thị [13]
1.1.2. Cung trong mạng
 Cung (line arc) mô tả một tuyến xe buýt cụ thể nối hai điểm đón, trả
khách. [13]



13
 Cung xuống (alighting arc) nối nút xuống với nút dừng. Luồng trên cung
này biểu thị lượng hành khách xuống điểm dừng cụ thể từ một tuyến xe
buýt. [13]
 Cung dừng (stopping node) nối nút xuống với nút lên. Cung này mô tả về
số chỗ trống trên tuyến xe buýt khi hành khách vừa xuống điểm dừng.
[13]
 Cung bộ (walking arc) nối điểm nguồn với một platform hoặc platform
với điểm đích. Cung bộ biểu diễn thời gian hành khách phải đi từ nhà tới
bến xe buýt và thời gian đi từ điểm dừng tới địa điểm mong muốn. [13]
 Cung lên (boarding arc) nối nút dừng với nút lên. Cung này biểu thị lượng
hành khách lên được tuyến xe buýt mong muốn. [13]
Dạng đồ thị vừa trình bày ở trên cần khá nhiều bộ nhớ khi cài đặt, bởi vì
bao gồm nhiều loại cung, nút. Tuy nhiên, việc biểu diễn này sẽ thuận tiện cho
việc mô hình và giải các bài toán liên quan tới mạng xe buýt. Phần tiếp theo
trình bày về khái niệm hyperpath - một khái niệm quan trọng dùng để tính toán
tới lượng hành khách trên các tuyến xe buýt.
1.2. Hyperpath
Trong thực tế, khi sử dụng xe buýt để đi tới địa điểm mong muốn, hành
khách thường đi theo một tập hợp các tuyến xe buýt theo một chiến lược nhất
định [4,5]. Tại một bến xe buýt trong cách đi đó, hành khách có thể bắt các xe
khác nhau nằm trong chiến lược đi của mình để tới đích. Và chiến lược đi này là
một cách mô tả cho khái niệm hyperpath mà ta sắp trình bày.
Xét một đồ thị có hướng 𝐺 = (𝑁, 𝐴) và một cặp nút nguồn - đích (r-s).
Một dãy các nút và các cung liên tiếp của đồ thị G tạo thành một đường đi cơ
bản (gọi tắt là đường đi). [9]
Định nghĩa 1.1: [3] Đồ thị con 𝐻𝑝 = (𝑁𝑝 , 𝐴𝑝 , 𝜋𝑝 ) trong đó 𝑁𝑝 ⊂ 𝑁, 𝐴𝑝 ⊂ 𝐴 và
𝜋𝑝 là véc tơ thực có số chiều |𝐴𝑝 | là một hyperpath nếu:
 𝐻𝑝 không có chu trình và chứa ít nhất một cung.

 Nút r không có nút liền trước và nút s không có nút liền sau.
 Với mọi nút 𝑖 ∈ 𝑁𝑝 − {𝑟, 𝑠}, có ít nhất một đường đi nối r với s đi qua i,
và i có ít nhất một nút liền sau.
 Vectơ 𝜋𝑝 thỏa mãn
𝑗 ∈𝑁𝑝

𝜋𝑖𝑗 = 1, ∀𝑖 ∈ 𝑁𝑝

𝜋𝑖𝑗 ≥ 0 , ∀𝑖, 𝑗 ∈ 𝐴𝑝
Mỗi phần tử 𝜋𝑖𝑗 biểu thị xác suất hành khách đi qua cung (𝑖, 𝑗) ∈ 𝐴𝑝 .


14
Qua cách định nghĩa hyperpath, có thể thấy mỗi chiến lược đi xe buýt của
người sử dụng sẽ tương ứng với một hyperpath. Phần tiếp theo sẽ phân tích cách
đi của hành khách trong một hyperpath.
1.2.1. Chiến lược đi trong hyperpath
Xét hyperpath H p  ( N P , Ap , Tp ) trên đồ thị G  ( N , A) ; trong đó, tap là xác
suất hành khách đi vào cung a của hyperpath H p (gọi tắt là hyperpath p). Khi có
nhiều cung đi ra khỏi một nút trên hyperpath, luồng giao thông sẽ đi theo các
cung khác nhau dựa trên xác suất tap . [9]
Để tiện cho các tính toán về sau, ta đưa ra các kí hiệu:
 OUTP (i) : tập các cung xuất phát từ nút i của hyperpath p.
 WA và BA lần lượt là cung bộ và cung lên của đồ thị G.
 S p : tập các điểm dừng của hyperpath p.


f a : tần suất của tuyến xe buýt đi trên cung a. Chú ý rằng, với cách xây

dựng đồ thị mô tả mạng trung chuyển đã trình bày ở trên, trên một cung

có nhiều nhất một tuyến xe buýt.
Trước khi phân tích cách đi của người dùng trên hyperpath H p , ta đưa ra một số
giả thiết về xe buýt và thuộc tính bắt xe của hành khách.
 Hành khách đến các điểm dừng một cách ngẫu nhiên, và luôn luôn lên xe
buýt đầu tiên đến điểm dừng xe của họ (xe buýt này phải thuộc vào tập
tuyến xe trong chiến lược đi của hành khách đó). [4]
 Thời điểm các tuyến xe buýt tới một điểm dừng là độc lập thống kê và có
phân phối mũ, kì vọng bằng nghịch đảo tần suất của tuyến xe đó. [5]
Với các giả thiết như trên, với mọi i thuộc S p , xác suất tap được tính như sau:
a  OUTp (i)  BA

tap  f a / Fip ,

(1.1)

a  OUTp (i) WA

tap  1,

(1.2)

trong đó
Fip 



aOUTp ( i )

fa


Công thức (1.1) cho thấy: tại một điểm dừng, xác suất để hành khách chọn một
tuyến xe buýt tỉ lệ thuận với tần suất của tuyến xe đó. Đối với công thức (1.2),
xác suất để hành khác đi bộ từ bến xe tới đích bằng 1 do chỉ có duy nhất một
cách đi.


15
1.2.2. Chi phí trên hyperpath
Với hyperpath H p  ( Ap , N p , tap ) , kí hiệu: [3, 9]
 V p : tập các đường đi trong H p .
  al nhận giá trị 1 nếu cung a thuộc đường đi l, nhận giá trị 0 trong trường
hợp ngược lại.
  il nhận giá trị 1 nếu nút i thuộc đường đi l, nhận giá trị 0 trong trường
hợp ngược lại.
 L là tập các cung của H p .
Chi phí ca trên một cung a của hyperpath được tính thông qua thời gian di
chuyển ta theo công thức:
  ta

ca   ta
0


aL

nếu a  WA
khac

trong đó,  , là các trọng số được xác định phụ thuộc vào mạng giao thông
thực tế.

Gọi lp là xác suất hành khách đi trên đường đi thứ l của hyperpath p. Dùng
công thức nhân xác suất và một số biến đổi khác, có thể chứng minh được

(1.3)
lp   tap
,
al

aAp



lV p

lp

1

(1.4)

Kí hiệu ip là xác suất hành khách đi qua nút i của p. Xác suất này bằng tổng
xác suất người sử dụng đi qua các đường đi chứa nút i
ip    il ip
lV p

Tương tự, gọi  ap là xác suất người dùng đi qua cung a của hyperpath p. Xác
suất này bằng tổng xác suất hành khách đi qua các đường đi chứa cung a
 ap    al lp
lV p


(1.5)
Trong mô hình bài toán thiết kế tuyến xe buýt sắp trình bày, chi phí trên
một hyperpath gồm hai thành phần: chi phí của thời gian đi trên các cung và chi
phí khi hành khách đợi xe tại các bến. Chi phí trên hyperpath p có dạng cụ thể
như sau
gp 

trong đó



aAp

ap ca 

 kp

F

kS p

kp

(1.6)


16
Fkp 




aOUTp ( k )

fa

1.2.3. Hyperpath có chi phí nhỏ nhất
Khi sử dụng xe buýt để đi từ điểm nguồn r tới điểm đích s, theo thời gian,
hành khách sẽ tìm được chiến lược đi (cách chọn các tuyến xe buýt tại các điểm
chờ xe) sao cho chi phí đi là nhỏ nhất. Chiến lược đi với chi phí nhỏ nhất này là
một cách mô tả về hyperpath với chi phí nhỏ nhất (minimum cost hyperpath).
Bài toán tìm hyperpath có chi phí nhỏ nhất nối cặp điểm r-s được phát biểu như
sau [9]
min g p 



aAp

c 

ap a

 kp

F

kS p

kp


với điều kiện
p  H rs ,
Fkp 



aOUT p ( k )

fa ,

ip    il lp ,
lV p

 ap    al lp ,
lV p

trong đó, H rs là tập hợp các hyperpath nối r với s.
Khi xây dựng được một mạng xe buýt trong thành phố, sau một thời gian,
người sử dụng chỉ đi theo hyperpath có chi phí nhỏ nhất nối giữa nhà với điểm
cần đến. Lúc đó, mạng xe buýt ở trạng thái cân bằng.
1.2.4. Thuật toán tìm hyperpath có chi phí nhỏ nhất
Xét các hyperpath Gh   Nh , Ah  với véc tơ đặc trưng  h và véc tơ giá w h
tại đỉnh cho bởi công thức : [9]
bij /  bik ,   i, j   f h  i 

 i , k  f  i 

 ijh : 

0


h

, otherwise

w ih  g  b,  h  : 1/



 i , j  f h i 

trong đó ij
với mọi cung  i, j  trong đồ thị.
Công thức tính cost của một hyperpath(hpath) h :
b 0

bij ,

,


17
Ch  s , s   0
1
Ch  i , s  



 i , j  f h  i 


bij  aij  Ch  j , s  



 i , j  f h  i 

.

bij

Ký hiệu C *  i, s  là cost của shortest hyperpath his* nối i và s, ta có mệnh đề sau:
Mệnh đề 1: (Phƣơng trình Bellman tổng quát) [3]
Véc tơ cost C * là nghiệm duy nhất của hệ phương trình:
C *  s, s   0
1   bij  aij  C *  j , s   
 i , j i

C *  i, s   min 
 , i  N \ s .
i  FS  i 
b

ij


 i , j i



Để tìm shortest hyperpath từ một node r dến node s trong đồ thị ta có

thuật toán tìm shortest hypertree gốc s (Một đồ thị có hướng, trên đó mọi node
i  s đều được nối với s bởi một shortest hyperpath duy nhất).
Thủ tục tổng quát để tìm shortest hypertree [9]
Thuật toán trình bày dưới đây tìm ra các hyperpath ngắn nhất từ các đỉnh
trong mạng lưới đến một đỉnh D cho trước. Tập hợp các hyperpath ngắn nhất
đến đỉnh D tạo thành hypertree gốc là đỉnh D.
Khởi tạo: Tìm shortest hypertree 𝑇𝑠 gốc ở s; ký hiệu 𝐶(𝑖, 𝑠) là chi phí của

shortest hyperpath 𝑕𝑖𝑠
trên 𝑇𝑠 , 𝑟𝑖 là tập các cung của 𝑇𝑠 đi ra từ nút i.
Bước tổng quát:
Vòng lặp:
Khi tồn tại nút i sao cho:
C  i, s   C '  i, s 

1

với
1   bij  aij  C  j , s   
 i , j i'

C '  i, s   'min 
,
'
i  FS  i 
B  i 






thì cập nhật cost C  i, s  và tập cung  i thành:
C  i, s   C '  i , s 

 2

1   bij  aij  C  j , s   
 i , j i'

i  arg 'min 
.
'
i  FS  i 
B  i 





 3


18
Nhận xét: Giá trị C '  i, s  ở trên chính là C *  i, s  trong phương trình Bellman. Để
tính giá trị này một cách trực tiếp ta cần tính 2 FS i   1 giá trị ứng với 2 FS i   1 tập
con khác rỗng của FS  i  và so sánh chúng để tìm ra giá trị nhỏ nhất. Vậy C ' i, s 
chưa biết, nên để so sánh C  i, s  và C '  i, s  ta thiết lập các thuật toán đựa trên
mệnh đề dưới đây.
Mệnh đề 2:
Ký hiệu f h  i   FS  i  là tập các cung rời node i trong shpath his* , khi đó:

*

aij  C*  j, s   C*  i, s  ,

 i, j   f h  i 

aij  C*  j, s   C*  i, s  ,

 i, j   f h  i  .

*


*

Từ mệnh đề trên, xét tại một node i: Nếu aij  C  j, s   C  i, s  thì việc thêm
cung  i, j  vào tập cung  i sẽ cải thiện được cost C  i, s  hiện tại, và ngược lại.
Thuật toán sửa nhãn
Để tránh các thao tác không cần thiết trong mỗi bước lặp ở bước tổng
quát, mọi node i  N thỏa mãn điều kiện (1) được nhặt vào một list Q. Khi đưa
ra xét một node j  Q bởi toán tử QOUT, thì tập cung tương ứng  j và nhãn
y

Series 1
Series 2
Series 3

4500

Series 4


4000

3500

3000

2500

2000

1500

1000

x
500

0

10

20

30

40

50


60

70

80

90

100

110

120

130

140

150

160

170

180

190

hiện tại được cập nhật theo (2) và (3). Mỗi node i thỏa mãn:
aij  C  j, s   C  i, s  ,


  i, j   BS  j 

sẽ được thêm vào list Q nếu nó chưa có sẵn ở đó bởi toán tử QIN.
Mã nguồn thuật toán sửa nhãn:
Procedure SHT(s):
Begin
comment: intialisation;
C  s, s  : 0;
Q : N \ s ;

for each i  N do
Begin
i : ;
C  i, s  : 

End;
For each  i, s   BS  s  do
Begin


19
i :  i, s  ;
C  i, s  : ais 

1
bis

End;
comment: fetch node j  Q , and find optimal  j , C  j, s  ;

while Q   do
Begin
QOUT  j , Q 

;

FIND   j , FS  j  , C , j  ;

comment: scanning for potential candidates;
For each  i, j   BS  j  do
if aij  C  j, s   C  i, s  then QIN (i, Q)
End
End SHT;
Thủ tục FIND trong thuật toán sửa nhãn
Thủ tục FIND thực hiện tại mỗi node j cho ta cost C(j, s) của shortest hyperpath
h*js và tập  j - các cung đi ra từ j trong h*js ., dựa trên mệnh đề 2, với thời gian cỡ
FS  j  log FS  j  . Nội dung cơ bản của thủ tục FIND: Trước hết ta sắp sếp các

cung trong tập FS(j) theo thứ tự không giảm của a jk  C  k , s  , sau đó thêm dần
từng cung có thể cải thiện được cost hiên tại vào tập  j đến khi đạt được giá trị
cost tối ưu.
Mã nguồn thủ tục FIND
Procedure FIND (  j , FS(j), C, j):
Begin
comment: sort the arcs in FS(j) in non-decreasing order of a jk  C  k , s  ;
SORT (FS(j), a, C);
C  j , s  : a jk1  C  k1 , s  
 j :  j, k1 ;

B   j  : b jk1 ;


 : 2;

1
;
b jk1


20
Comment: scan the sequence of sorted arcs;
While

  FS  j 

and C  j, s   a jk  C  k , s 

do



Begin
Comment: add arc jk to  j and update C  j, s  ;
 j :  j   j, k ;

B   j  : B   j   b jk ;



C  j , s  : C  j, s   C  j , s   a jk  C  k , s 


 B   ;
b jk

j

 :   1

End
End FIND;
Giải thích mã nguồn
Đối với mỗi node j  N \ s ta tìm tập  j , C  j, s  như sau:
Bước 1: Sắp xếp các cung trong FS( j ) theo thứ tự không giảm của a jk  C  k , s  :
a jk1  C  k1 , s   a jk2  C  k2 , s   a jk3  C  k3 , s   ...

Từ đây suy ra:
a jk1  C  k1 , s   a jk  C  k , s  

Để ý rằng a jk  C  k , s  


1
,  .
b jk

1
là cost của hyperpath từ j tới s bằng cách chỉ dùng
b jk

cung  j, k  và shortest hyperpath hk* s nên bất đẳng thức cuối cho ta thấy cung



 j, k1  chắc chắn nằm trong tập

j.

Bước 2:

C  j , s  : a jk1  C  k1 , s  

1
;
b jk1

 j :  j, k1 ;

B   j  : b jk1 ;

 : 2;

Bước 3: Cải thiện cost, tập  j :
Vòng lặp:
 Nếu FS  j   1 thì hiển nhiên C  j, s  ở trên là giá trị tối ưu.
 Nếu FS  j   2 ta thực hiện như sau:


21
Khi   FS  j  và a jk  C  k , s   C  j, s  ( tức thêm cung  j, k  vào  j thì cải


thiện được cost hiện tại), ta cập nhật  j , C  j, s  :

 j :  j   j, k ;

B   j  : B   j   b jk ;



C  j , s  : C  j, s   C  j , s   a jk  C  k , s 

 B   ;
b jk

j

 :   1

Kết thúc bước lặp trên ta tìm được tập cung tối ưu  j , và giá trị tối ưu C  j, s  .
Ý nghĩa của việc sắp xếp cung ở bƣớc 1:
 Tìm ra được cung đầu tiên của tập  j .
 Khi điều kiện a jk  C  k , s   C  j, s  ở bước 3 xảy ra thì ta kết thúc vòng


lặp ngay và đạt được cost nhỏ nhất là cost hiện tại , vì việc thêm các cung
còn lại thuộc tập FS  j  \  j  sẽ không cải thiện thêm cost do điều kiện
...a jk 2  C  k 2 , s   a jk 1  C  k 1 , s   a jk  C  k , s   C  k3 , s  .

Như vậy thay vì kiểm tra trên 2 FS  j   1 tập con của FS  j  như trong
phương trình Bellman , ta chỉ cần kiểm tra nhiều nhất là FS  j   1 lần để tìm ra
tập tối ưu  j .
Thuật toán gán nhãn
Xét nút 𝑖 với giá trị 𝐶(𝑖, 𝑠) và tập r𝑖 tương ứng. Nếu có một cung 𝑖, 𝑗 𝜖𝐹𝑆(𝑖)

sao cho:
𝑎𝑖𝑗 + 𝐶 𝑗, 𝑠 < 𝐶(𝑖, 𝑠)
Thì thêm cung 𝑖, 𝑗 vào r𝑖 sẽ cải thiện được giá trị 𝐶(𝑖, 𝑠). Giá trị
𝑎𝑖𝑗 + 𝐶 𝑗, 𝑠 được xem là giá trị của cung đó. Theo ý tưởng này, có một thuật
toán chọn cạnh trong đồ thị để tạo ra được hypertree nhỏ nhất sau 𝑚 lần lựa
chọn, với 𝑚 là số lượng tối đa các cạnh có trong đồ thị.
Thuật toán DSHT (Dantzig shortest hypertree) thực hiện ý tưởng trên:
Procedure DSHT(s):
Begin
Comment: initialization:
PREORDER (N, BS);
For each 𝑖𝜖𝑁 do
Begin


22
𝑟𝑖 = 𝜙;
𝐵 𝑟𝑖 = 0;
𝐶 𝑖, 𝑠 = +∞;
End;
𝑄= 𝑠 ;
𝐶 𝑠, 𝑠 = 0;
While (𝑄 ≠ ∅) do
Begin
Comment: select (i,j) with minimum arc label;
𝑄𝑂𝑈𝑇(𝑗, 𝑄, 𝑖, 𝑗 );
Comment: check Bellman condition;
If 𝐶 𝑖, 𝑠 > 𝐶 𝑗, 𝑠 + 𝑎𝑖𝑗 then
Comment: updating label
If 𝑟𝑖 = ∅ then

Begin
Comment: inserting first arc
𝑟𝑖 = { 𝑖, 𝑗 };
𝐵 𝑟𝑖 = 𝑏𝑖𝑗 ;
𝐶 𝑖, 𝑗 = 𝐶 𝑗, 𝑠 + 𝑎𝑖𝑗 +

1
𝑏 𝑖𝑗

;

End
Else
Begin
Comment: updating 𝑟𝑖 and 𝐶(𝑖, 𝑠)
𝑟𝑖 = 𝑟𝑖 ∪ { 𝑖, 𝑗 };
𝐵 𝑟𝑖 = 𝐵 𝑟𝑖 + 𝑏𝑖𝑗 ;
𝐶 𝑖, 𝑠 = 𝐶 𝑖, 𝑠 − (𝐶 𝑖, 𝑠 − 𝐶 𝑗, 𝑠 − 𝑎𝑖𝑗 )𝑏𝑖𝑗 /𝐵(𝑟𝑖 );
End
End
End DSHT;
Thủ tục PREORDER sắp xếp tất cả các cung vào của các đỉnh theo thứ tự
không giảm của 𝑎𝑖𝑗 trong thời gian O(m log n). Thủ tục QOUT tìm cung (i,j) có
giá trị nhãn nhỏ nhất và cập nhật đỉnh đi vào đỉnh j hoặc bỏ j ra khỏi hàng đợi Q.
Cuối cùng, thủ tục QIN đưa một đỉnh i và trong Q và gán đỉnh đến đỉnh i là đỉnh
đầu tiên trong danh sách BS(i).


23
Nếu danh sách Q được lập trình dưới dạng cây nhị phân heap thì thủ tục QOUT

và QIN chạy trong thời gian O(log n). Với số cạnh tối đa của đồ thị được chọn là
m, thì thuật toán này có độ phức tạp là O(m log n). Thuật toán DSHT cải tiến
hơn so với thuật toán sửa nhãn trình bày bên trên.
Ghi chú: Cấu trúc dữ liệu heaptree lưu n đối tượng được sắp xếp theo hình dạng
cây nhị phân đầy đủ có tính chất sau:
 Nút i có hai nút con là 2*i và 2*i + 1.
 Nút 1 là nút gốc của cây.
 Giá trị của nút cha nhỏ hơn (hoặc lớn hơn) giá trị hai nút con. Như vậy nút
gốc (nút 1) chứa đối tượng có giá trị nhỏ nhất (hoặc lớn nhất).
1.3. Mô hình bài toán quy hoạch tuyến xe buýt
Khi quy hoạch một mạng giao thông, nhà quản lý quan tâm tới hai mục
tiêu: chi phí điều hành hệ thống xe và chi phí của người sử dụng. Bài toán đặt ra
ở đây là: với một khu vực đã được khảo sát nhu cầu đi lại giữa các địa điểm, hãy
xác định lộ trình và tần suất của các xe buýt, sao cho cực tiểu chi phí vận hành
hệ thống xe và chi phí của người sử dụng.
Các kí hiệu sau được sử dụng trong mô hình bài toán: [1,2,13]
 L : tập các tuyến xe với số lượng các tuyến xe L cố định.
 r  (r1 , r2 ,..., r|L| ) : tập các tuyến xe buýt. Mỗi tuyến xe buýt rk là một dãy có
thứ tự các nút và các cung.
 f  (f1 ,f 2 ,...,f|L| ) : véc tơ tần suất của các tuyến xe buýt.
 H rs : tập các hyperpath nối r với s.
 g p : chi phí trên hyperpath p.


y

Series 1
Series 2
Series 3


4500

Series 4

4000

3500

3000

2500

2000

1500

là lưu lượng hành khách trên hyperpath p.

1000

x
500

0

10

20

30


40

50

60

70

80

90

100

110

120

130

140

150

160

170

180


190

 d rs : lưu lượng hành khách đi từ r tới s.
 ck ( f k ) : thời gian đi từ đầu bến tới cuối bến của tuyến xe buýt k  L .
 Clmax : giới hạn thời gian của một tuyến xe.
 NV : tổng số lượng xe buýt hiện có.
Mô hình của bài toán quy hoạch mạng xe buýt (Transit Route Network Design
Problem - TRNDP) được phát biểu như sau:
|L|

min 1 (r , f )   f k ck (rk ) 2 ,

(1.7)

k 1

min 2 ( y, r , f ) 



r , sOD

d rs g rs ,

(1.8)


24
với điều kiện:

grs  min pHrs g p ,

(1.9)

ck (rk )  ckmax k  L, (1.10)
|L|

 f c (r )  NV
k 1

k k

k

(1.11)

Ở mức dưới của bài toán TRNDP, phương trình (1.9) mô tả tất cả các
hành khách của một cặp OD sẽ sử dụng hyperpath ngắn nhất nối O với D.
Trong mức trên của bài toán bài toán TRNDP, hàm mục tiêu  1 (r , f ) có ý
nghĩa là tổng chi phí của công ty cung cấp dịch vụ xe buýt, hàm mục tiêu
 2 ( y, r , f ) chính là tổng chí phí của người sử dụng.
1.4. Kết luận
Chương 1 đưa ra những khái niệm và cách mô tả mạng xe buýt dưới dạng đồ thị,
đưa ra khái niệm về hyperpath trên đồ thị và phát biểu bài toán hyperpath có chi
phí nhỏ nhất. Sau đó, thiết lập mô hình quy hoạch mạng xe buýt dưới dạng bài
toán tối ưu đa mục tiêu hai mức.


25
CHƢƠNG 2 – THUẬT TOÁN DI TRUYỀN GIẢI BÀI TOÁN THIẾT KẾ

TUYẾN VÀ TẦN SUẤT XE BUÝT
Chương này trình bày các kiến thức tổng quan về tối ưu đa mục tiêu và
thuật toán di truyền. Sau đó, trình bày một số nét cơ bản để giải bài toán TRNDP
bằng thuật toán di truyền NSGA-II.
2.1. Tối ƣu đa mục tiêu
Bài toán tối ưu đa mục tiêu được phát biểu như sau: [2,14,15]
min F ( x)  ( f1 ( x), f 2 ( x),..., f p ( x))T (2.1)
với điều kiện
x  ,

trong đó,
 F ( x)  ( f1 ( x), f 2 ( x),..., f p ( x)) là véc tơ hàm mục tiêu.
 x  ( x1 , x2 ,..., xn )   là biến quyết định.
   F () là ảnh miền chấp nhận được qua ánh xạ F hay còn gọi là không
gian giá trị.
 X là không gian quyết định hay miền chấp nhận được.
Trong tối ưu đa mục tiêu, quan hệ thứ tự có vai trò rất quan trọng đối với
việc đưa ra các định nghĩa về nghiệm tối ưu. Nhờ vào các định nghĩa này mà ta
có thể đưa ra các khái niệm khác nhau cho bài toán tối ưu đa mục tiêu.
Cho p là số tự nhiên lớn hơn 1, u  (u1 , u 2 ,..., u p ) và v  (v1 , v2 ,..., v p ) là hai
véc tơ thuộc R p . Khái niệm về thứ tự giữa hai véc tơ u và v được phát biểu như
sau
Định nghĩa 2.1: véc tơ u được gọi là trội hơn véc tơ v, kí hiệu u  v , nếu ui  vi
với mọi i  1, 2,..., p và u  v .


×