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

Ứng dụng giải thuật di truyền cho bài toán người đi du lịch bằng winform c

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 (2.6 MB, 76 trang )

ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KINH TẾ
KHOA HỆ THỐNG THÔNG TIN KINH TẾ

N
H

TẾ

H

U



----------

H


C

KI

KHÓA LUẬN TỐT NGHIỆP
ẠI

ỨNG DỤNG GIẢI THUẬT DI TRUYỀN CHO BÀI TOÁN

TR


Ư



N

G

Đ

NGƯỜI DU LỊCH BẰNG WINFORM C#

SINH VIÊN THỰC HIỆN:
HỒ MINH TOÀN

Khóa học: 2014-2018


ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KINH TẾ
KHOA HỆ THỐNG THÔNG TIN KINH TẾ

N
H

TẾ

H

U




----------

H


C

KI

KHÓA LUẬN TỐT NGHIỆP
ẠI

ỨNG DỤNG GIẢI THUẬT DI TRUYỀN CHO BÀI TOÁN

TR

Ư



N

G

Đ

NGƯỜI DU LỊCH BẰNG WINFORM C#


Sinh viên thực hiện:

Giảng viên hướng dẫn:

Hồ Minh Toàn

TS. Hồ Quốc Dũng

Lớp: K48A - Tin học kinh tế

Huế, 04/2018


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

LỜI CÁM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với những sự
hỗ trợ, giúp đỡ và hướng dẫn của người khác. Lời đầu tiên em xin chân thành
cảm ơn tất cả các thầy cô trường Đại học kinh tế - Đại học Huế và đặc biệt là Quý
Thầy, Cô trong khoa Hệ thống thông tin kinh tế là những người đã truyền đạt
cho em rất nhiều kiến thức quý báu, tạo nền tảng kiến thức vững chắc cho tương
lai của em, đã tạo điều kiện, giúp đỡ em thực hiện khóa luận này.
Em xin chân thành cám ơn Thầy Hồ Quốc Dũng là người trực tiếp hướng

U




dẫn cho em tiếp cận với cơ sở thực tập. Thầy cũng là người đã hướng dẫn tận

H

tình, luôn tạo những cơ hội cho em phát triển và tạo động lực cho em trong quá

TẾ

trình làm đề tài khóa luận này. Ngoài ra, thầy còn truyền đạt bổ sung những kiến

N
H

thức của em còn thiếu sót, cách làm việc và rất nhiều điều quý báu khác.

KI

Em cũng xin chân thành gửi lời cám ơn đến Ban lãnh đạo Quý Công Ty Cổ


C

phần may và thương mại Gio Linh, các anh chị trong phòng Kỹ thuật đã cho em có

H

cơ hội được thực tập tại công ty, cảm ơn sự chỉ bảo nhiệt tình và sự quan tâm của

ẠI


tất cả các anh chị khi em thực tập tại công ty.

G

Đ

Cuối lời, với lòng biết ơn sâu sắc một lần nữa em xin chân thành cảm ơn tất

N

cả mọi người đã quan tâm và giúp đỡ em có thể hoàn thành khóa luận này.

Ư



Trong quá trình thực tập, cũng như là quá trình làm bài báo cáo thực tập,

TR

khó tránh khỏi những sai sót, rất mong Quý Thầy, Cô bỏ qua. Đồng thời do trình
độ lý luận và kinh nghiệm thực tiễn còn hạn chế nên bài báo cáo không thể tránh
khỏi những thiếu sót, em rất mong muốn nhận được ý kiến đánh giá và đóng góp
của Quý Thầy, Cô để em học thêm được nhiều kinh nghiệm và sẽ hoàn thành tốt
hơn trong sự nghiệp trong tương lai.
Em xin chân thành cám ơn !
Huế, ngày 30 tháng 4 năm 2018
Sinh viên thực hiện


Hồ Minh Toàn

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang i


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

MỤC LỤC
LỜI CÁM ƠN ......................................................................................................... i
MỤC LỤC ..................................................................................................................... ii
DANH MỤC HÌNH VẼ ......................................................................................... v
DANH MỤC BẢNG BIỂU ................................................................................... vi
DANH MỤC TỪ VIẾT TẮT ............................................................................... vii

U



PHẦN I : ĐẶT VẤN ĐỀ ........................................................................................ 1

TẾ

H

1. Lý do chọn đề tài .............................................................................................. 1


N
H

2. Mục tiêu nghiên cứu......................................................................................... 2

KI

2.1 Mục tiêu tổng quát ......................................................................................... 2


C

2.2 Mục tiêu cụ thể ............................................................................................... 2

H

3. Đối tượng và phạm vi nghiên cứu .................................................................... 2

Đ

ẠI

3.1 Đối tượng nghiên cứu ..................................................................................... 2

G

3.2 Phạm vi nghiên cứu ........................................................................................ 2




N

4. Phương pháp nghiên cứu .................................................................................. 2

TR

Ư

5. Ý nghĩa khoa học và thực tiễn .......................................................................... 3
5.1. Ý nghĩa khoa học .......................................................................................... 3
5.2. Ý nghĩa thực tiễn ........................................................................................... 3
6. Nội dung khóa luận .......................................................................................... 3
PHẦN II: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU ....................................... 5
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ...................................................................... 5
1.1 Bài toán người du lịch .................................................................................... 5
1.1.1 Lịch sử bài toán ........................................................................................... 5

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang ii


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

1.1.2. Phát biểu bài toán ....................................................................................... 7
1.2 Độ phức tạp của bài toán người du lịch .......................................................... 9
1.2.1 Độ phức tạp tính toán .................................................................................. 9
1.2.2 Độ phức tạp tính toán của bài toán người du lịch ...................................... 12

1.3 Thuật toán di truyền ..................................................................................... 12
1.3.1. Lịch sử của thuật toán di truyền ............................................................... 12
1.3.2. Đặc điểm của thuật toán di truyền ............................................................ 13

U



1.3.3. Áp dụng thuật toán di truyền cho bài toán người du lịch ......................... 18

TẾ

H

1.4. Ứng dụng của thuật toán di truyền .............................................................. 19
1.5. Các công trình liên quan ............................................................................. 21

KI

N
H

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ THUẬT TOÁN ..................................32


C

2.1. Giải thuật đề xuất ........................................................................................ 32

H


2.2. Mã hóa đường đi ........................................................................................ 32

ẠI

2.3. Sơ đồ lớp ..................................................................................................... 34

N

G

Đ

2.4. Xây dựng chương trình ............................................................................... 34



2.4.1 Lớp DuongDi ............................................................................................ 35

TR

Ư

2.4.2. Lớp QuanThe ........................................................................................... 39
2.4.3 Lớp ThuatToanDiTruyen ................................................................................ 41
2.4.4. Winform Form1 ....................................................................................... 44
2.4.5 Winform Form 2 ....................................................................................... 49
2.4.6 Hàm Main ................................................................................................. 52
2.5. Giới thiệu về chương trình .......................................................................... 52
CHƯƠNG 3: THÍ NGHIỆM VÀ ĐÁNH GIÁ ..........................................................55

3.1. Mô tả bài toán vào thực tế ........................................................................... 55

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang iii


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

3.2. Kết quả chạy chương trình đối với các mẫu thí nghiệm .............................. 58
3.3.Thí nghiệm chương trình với số thành phố tăng dần .................................... 60
3.4. Kết luận ....................................................................................................... 61
3.5. So sánh Thuật toán di truyền với kỹ thuật tối ưu khác ................................ 62
PHẦN III: KẾT LUẬN VÀ KIẾN NGHỊ ...............................................................63
1. Kết quả đạt được ............................................................................................ 63
2. Đóng góp và thực tiễn .................................................................................... 63

U



3. Hạn chế và hướng phát triển .......................................................................... 64

TR

Ư




N

G

Đ

ẠI

H


C

KI

N
H

TẾ

H

DANH MỤC TÀI LIỆU THAM KHẢO ...................................................................65

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang iv



GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

DANH MỤC HÌNH VẼ

Hình 1. 1: Lịch sử bài toán .................................................................................. 7
Hình 1. 2: Đường đi và khoảng cách giữa các điểm .......................................... 8
Hình 1. 3: Máy Turing ....................................................................................... 10
Hình 1. 4: Quan hệ giữa các lớp độ phức tạp quan trọng ............................... 12
Hình 1. 5: Sơ đồ Giải thuật thuật toán di truyền .............................................. 15

U



Hình 2. 1: Sơ đồ các lớp cho thuật toán di truyền ............................................ 34

TẾ

H

Hình 2. 2: Giao diện Form 1 ............................................................................. 53
Hình 2. 3: Giao diện Form 2 ............................................................................. 54

N
H

Hình 3. 1: Hình 5 địa điểm được chọn từ Google Map ................................... 56



C

KI

Hình 3. 2: Biểu đồ thời gian chạy thuật toán di truyền khi số địa điểm tăng

TR

Ư



N

G

Đ

ẠI

H

lên ........................................................................................................................ 61

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang v



GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

DANH MỤC BẢNG BIỂU

Bảng 1. 1: Khoảng cách giữa các địa điểm ........................................................ 9
Bảng 1. 2: Các lớp độ phức tạp ......................................................................... 11
Bảng 2. 1: Mẫu thí nghiệm 5 địa điểm .............................................................. 55
Bảng 2. 2: Mẫu thí nghiệm 10 địa điểm ............................................................ 56
Bảng 2. 3: Mẫu thí nghiệm tên 50 địa điểm...................................................... 57

TR

Ư



N

G

Đ

ẠI

H


C


KI

N
H

TẾ

H

U



Bảng 3. 1: Thời gian chạy thuật toán qua các địa điểm .................................. 60

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang vi


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

DANH MỤC TỪ VIẾT TẮT

Từ viết tắt

Tiếng Anh


Tiếng Việt

TSP

Travelling Salesman Problem

Bài toán người du lịch

GA

Genetic Algorithm

Thuật toán di truyền

Jobshop Scheduling Problem Bài toán lập lịch Job Shop
Hàm cơ sở bán kính

Radial Basis Function

TR

Ư



N

G


Đ

ẠI

H


C

KI

N
H

TẾ

H

U

RBF



JSP

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang vii



GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

PHẦN I : ĐẶT VẤN ĐỀ
1. Lý do chọn đề tài
Hiện nay trong ngành khoa học máy tính, việc tìm kiếm lời giải tối ưu cho
bài toán là vấn đề luôn được các nhà khoa học đặc biệt quan tâm. Mục đích chính
của các thuật toán tìm kiếm lời giải là tìm ra lời giải tối ưu cho bài toán trong thời
gian nhỏ nhất. Với không gian tìm kiếm lớn có lời giải một cách tối ưu là một vấn
đề khó khăn cho các thuật toán. Từ đó cần thiết phải có những thuật giải tốt và sử
dụng kỹ thuật trí tuệ nhân tạo để giải quyết tốt các bài toán có không gian lớn.
Bài toán người du lịch (Travelling Saleman Problem - TSP) được nêu ra lần

U



đầu 1930 là một bài toán được nghiên cứu rộng rãi trong lĩnh vực khoa học máy

TẾ

H

tính. Nó thường dùng làm thước đo cho nhiều phương pháp tối ưu. Từ những năm
1940 có rất nhiều bài báo, những công trình nghiên cứu giải quyết bài toán này.

N
H


Tuy vậy, sau hơn nữa thế kỷ nghiên cứu, bài toán vẫn chưa được giải. Vì vậy, bài

KI

toán người du lịch được xếp vào trong danh mục những bài toán khó - chưa có lời


C

giải tối ưu cho dạng bài toán này. Tuy nhiên, bài toán người du lịch lại còn được

ẠI

gần tối ưu cho loại bài toán này.

H

ứng dụng nhiều ứng dụng trong cuộc sống hàng ngày. Do đó, cần đưa ra lời giải

G

Đ

Giải thuật di truyền (Genetic Algorithm - GA) là kỹ thuật phỏng theo quá

N

trình thích nghi và tiến hóa của các quần thể sinh học dựa trên học thuyết Darwin.


Ư



GA là phương pháp tối ưu ngẫu nhiên bằng cách mô phỏng theo sự tiến hóa của con

TR

người hay của sinh vật. Chính vì vậy GA đã trở thành một trong những đề tài
nghiên cứu thu hút được nhiều sự quan tâm và hiện nay đã và đang đem đến rất
nhiều ứng dụng trong thực tiễn. Tư tưởng của thuật toán di truyền là mô phỏng hiện
tượng tự nhiên, là kế thừa và đấu tranh sinh tồn. GA là một thuật giải và mục tiêu
của GA không nhằm đưa ra lời giải chính xác tối ưu mà là đưa ra lời giải tương đối
tối ưu. Thuật toán này sử dụng các nguyên lý di truyền về sự thích nghi và sự sống
các cá thể thích nghi nhất trong tự nhiên.
Chính vì sự hấp dẫn và đặc biệt của bài toán người du lịch cũng như thuật
toán di truyền. Đồng thời xuất phát từ nhu cầu tìm đường đi ngắn nhất với một giải
thuật tốt cho không gian tìm kiếm rộng lớn, áp dụng cho bài toán tối ưu tổ hợp

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 1


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

trong thực tế. Nhằm giúp người giao hàng sẽ tìm được một chu trình tối thiểu các
chi phí giúp tăng lợi nhuận. Từ những lý do trên tôi đã chọn đề tài: “ỨNG DỤNG

GIẢI THUẬT DI TRUYỀN CHO BÀI TOÁN NGƯỜI ĐI DU LỊCH BẰNG
WINFORM C#” để có thể hoàn thành hoàn chỉnh chương trình để đưa ra một lộ
trình đi tối ưu nhất.
2. Mục tiêu nghiên cứu
2.1 Mục tiêu tổng quát
+ Xây dựng chương trình Winform tìm chu trình có đường đi ngắn nhất cho
bài toán người du lịch bằng giải thuật di truyền.

H

U



+ Ứng dụng giải thuật di truyền cho bài toán người du lịch

TẾ

2.2 Mục tiêu cụ thể

+ Nghiên cứu lịch sử, tư tưởng, lý thuyết và cơ sở lý luận của bài toán

N
H

người du lịch và thuật toán di truyền.

KI

+ Nghiên cứu cách cài đặt thuật toán bằng ngôn ngữ C# Winform và thực



C

hiện cài đặt thật toán.

H

+ Áp dụng Bài toán người du lịch và thuật toán di truyền vào đề tài.

Đ

ẠI

+ Tiến hành kiểm thử thuật toán, đánh giá tính hiệu quả.

G

3. Đối tượng và phạm vi nghiên cứu



N

3.1 Đối tượng nghiên cứu

Ư

+ Bài toán người du lịch.


TR

+ Thuật toán di truyền.
3.2 Phạm vi nghiên cứu
Bao gồm:
+ Thuật toán di truyền.
+ Bài toán người du lịch.
+ Cách áp dụng thuật toán để giải bài toán và các vấn đề liên quan, ứng dụng.
4. Phương pháp nghiên cứu
- Phương pháp nghiên cứu tài liệu lý thuyết:
+ Nghiên cứu tìm hiểu các phương pháp giải bài toán người du lịch.
+ Nghiên cứu Thuật toán di truyền áp dụng cho bài toán người du lịch.

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 2


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

+ Cơ sở lý thuyết bài toán người du lịch, thuật toán di truyền và các vấn đề
liên quan.
- Phương pháp hỏi ý kiến chuyên gia:
+ Tham khảo, hỏi ý kiến của giáo viên hướng dẫn
+ Các anh chị khóa trước cũng như các anh chị trong nhóm hỏi đáp tư vấn
về C# để củng cố và hiểu rõ vấn đề liên quan đến đề tài.
- Phương pháp phân tích thiết kế:
+ Phân tích, xây dựng chương trình theo tư tưởng của thuật toán và yêu cầu

của bài toán cũng như đề tài đưa ra.



- Phương pháp thực nghiệm:
+ Thử nghiệm bài toán trên dữ liệu.


C

5.1. Ý nghĩa khoa học

KI

5. Ý nghĩa khoa học và thực tiễn

N
H

+ Đánh giá, kiểm tra và đưa ra kết quả.

TẾ

H

U

+ Lựa chọn ngôn ngữ lập trình cài đặt thuật toán: C# Winform.

H


+ Áp dụng lý thuyết thuật toán di truyền để áp dụng trong các bài toán tối

ẠI

ưu tổ hợp.

Đ

+ Đánh giá hiệu quả thuật toán di truyền.

N

G

5.2. Ý nghĩa thực tiễn

Ư



+ Thuật toán di truyền có thể áp dụng trong các bài toán thực tế: lập lịch đi

TR

hành trình với chi phí tối thiểu.
+ Đề tài khóa luận đóng góp như là một công cụ hỗ trợ để người bán hàng
có một chu trình đường đi ngắn nhất nhằm giúp giao hàng tiết kiệm được chi phí đi
lại cũng như thời gian của người bán hàng. Kết quả, kinh nghiệm thu được khi thực
hiện đề tài khóa luận này sẽ giúp người bán hàng nắm bắt được đường đi của mình

đưa ra với chu trình ngắn nhất tránh lãng phi thời gian cũng như các chi phí khác.
6. Nội dung khóa luận
Bố cục của Khóa luận gồm có 3 chương với nội dung như sau:
- Chương 1: Cơ sở lý thuyết.

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 3


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

Nội dung này trình bày lịch sử, nội dung, độ phức tạp của bài toán người du
lịch. Lịch sử, tư tưởng, các bước thực hiện của thuật toán di truyền.
- Chương 2: Thiết kế form và áp dụng thuật toán di truyền, bài toán
người du lịch để tìm chu trình ngắn nhất.
Nội dung này trình bày các bước tạo Form, cài đặt thuật toán di truyền để
giải quyết bài toán người du lịch. Trình bày các lớp cụ thể được cài đặt trong chương
trình và mối quan hệ giữa các lớp để thực hiện thuật toán. Chương trình chi tiết cài
đặt thuật toán di truyền để giải bài toán người du lịch viết bằng ngôn ngữ C#.
- Chương 3: Thí nghiệm và đánh giá.



Nội dung này trình bày kết quả thí nghiệm khi chạy thuật toán di truyền với

H


U

số lượng địa điểm tăng dần, theo dõi thời gian chạy chương trình và đưa ra biểu đồ

TR

Ư



N

G

Đ

ẠI

H


C

KI

N
H

TẾ


kết quả đồng thời kết luận về thời gian chạy thuật toán.

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 4


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

PHẦN II: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Bài toán người du lịch
1.1.1 Lịch sử bài toán
Bài toán người du lịch (Travelling Salesman Problem - TSP) [1], [2] là một
bài toán NP-Khó ( NP-hard - là bài toán chưa tìm ra lời giải tối ưu cho dạng tổng
quát), thuộc thể loại tối ưu rời rạc hay tổ hợp được nghiên cứu trong vận trù học
hoặc lý thuyết khoa học máy tính.
Bài toán được phát biểu như sau: Cho một danh sách các thành phố và

U



khoảng cách giữa chúng, tìm chu trình ngắn nhất đi qua mỗi địa điểm đúng một lần.

TẾ

H


Bài toán người du lịch thường được dùng làm thước đo cho nhiều phương

N
H

pháp tối ưu hóa. Đã được các nhà toán học và khoa học máy tính chú ý bởi nó rất
dễ mô tả và rất khó giải quyết.

KI

Mặc dù bài toán rất khó giải trong trường hợp tổng quát, có nhiều phương


C

pháp giải chính xác và gần đúng đã được biết đến, do đó đã tìm ra để giải quyết

H

một số vấn trường hợp có tới hành chục nghìn thành phố.

Đ

ẠI

Trong lý thuyết của độ phức tạp tính toán [3], phiên bản quyết định của bài

G


toán TSP thuộc lớp NP-đầy đủ (- lớp NP-đầy đủ là một lớp các bài toán quyết định).



N

Vì vậy không có giải thuật hiệu quả nào cho việc giải bài toán TSP. Hay nói cách

Ư

khác, giống như thời gian chạy xấu nhất cho bất kỳ giải thuật nào cho bài toán TSP

TR

tăng theo hàm mũ và số lượng thành phố , vì vậy thậm chí nhiều trường hợp vài trăm
thành phố cũng đã mất vài trăm CPU để giải một cách chính xác (bài toán chỉ tương
đối đúng).
Một cuốn sổ tay dành cho người du lịch xuất bản 1832 có đề cập đến bài
toán này và có ví dụ cho chu trình trong nước Đức và Thụy Sĩ, nhưng không chứa
bất kỳ nội dung toán học nào.
Bài toán người du lịch được định nghĩa trong thế kỷ 19 bởi nhà toán học
Ireland William Rowan Hamilton và nhà toán học Anh Thomas Kirkman. Trò chơi
Icosa [4] của Hamilton là một trò chơi giải trí dựa trên việc tìm kiếm chu trình
Hamilton. Trường hợp tổng quát của TSP có thể được nghiên cứu lần đầu tiên bởi

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 5



GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

các nhà toán học ở Vienna và Harvard trong nhũng năm 1930, đặc biệt Karl
Menger, người đã định nghĩa bài toán, xem xét thuật toán hiển nhiên nhất cho bài
toán và phát hiện ra thuật toán láng giềng gần nhất là không tối ưu.
Hassler Whitney ở đại học Princeton đưa ra tên bài toán người du lịch ngay
sau đó.
Trong những năm 1950 và 1960, bài toán trở nên phổ biến trong giới nghiên
cứu khoa học ở Châu Âu và Mỹ. George Dantzig, Delbert Ray Fulkerson và Selmer
M.Johnson ở công ty RAND tại Santa Moncia [5] đã có đóng góp quan trọng cho bài
toán này, biểu diễn bài toán này dưới dạng quy hoạch nguyên và đưa ra phương pháp



mặt phẳng cắt để tìm ra lời giải. Bằng phương pháp này họ đã giải được tối ưu một

H

U

trường hợp 49 thành phố bằng cách xây dựng một chu trình và chứng minh không có

TẾ

chu trình nào ngắn hơn.

N
H


Trong những thập niên tiếp theo, bài toán được nghiên cứu bởi nhiều nhà

KI

nghiên cứu trong các lĩnh vực toán học, khoa học máy tính, hóa học, vật lý và các


C

ngành khác.

[6] chứng minh rằng bài toán chu trình

H

Năm 1972, Richard M.Karp

ẠI

Hamilton là NP-đầy đủ, kéo theo bài toán TSP cũng là NP-đầy đủ. Đây cũng là một

Đ

lý giải toán học cho sự khó khăn trong việc tìm kiếm chu trình ngắn nhất.

N

G


Cuối thập niên 1970 và 1980 khi Grotschel [7], Padberg, Rinaldi và cộng

Ư



sự [8] đã giải được những trường hợp lên đến 2393 thành phố, sử dụng phương

TR

pháp mặt phẳng cắt và nhánh cận.
Trong thập niên 1990 Applegate, Bixby, Chavátal và Cook [9] phát triển một
chương trình mang tên Concorde giải được nhiều trường hợp có độ kỷ lục lớn hiện nay.
Năm 1991 Gerhard Reinnelt xuất bản một bộ dữ liệu các trường hợp có độ khó
khác nhau mang tên TSPLIB [10] và nó đã được sử dụng bởi nhiều nhóm nghiên cứu
để so sánh kết quả
Năm 2005 Cook và cộng sự đã giải được một trường hợp có 33810 thành
phố, xuất phát từ một bài toán thiết kế vi mạch.

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 6


GVHD: TS. Hồ Quốc Dũng



Khóa luận tốt nghiệp


H

U

Hình 1. 1: Lịch sử bài toán

TẾ

1.1.2. Phát biểu bài toán

N
H

Bài toán người du lịch được phát biểu như sau:

KI

Có một người du lịch muốn viếng thăm tại n thành phố. Xuất phát từ một


C

thành phố nào đó, đi qua các thành phố khác để du lịch và trở về thành phố ban
đầu, biết chi phí đi lại và khoảng cách giữa các thảnh phố. Mỗi thành phố chỉ đến một

ẠI

H

lần và khoảng cách từ một thành phố đến các thành phố khác đã được biết trước.


Đ

Hãy tìm một chu trình (một đường đi khép kín thõa mãn các điều kiện trên) sao cho

N

G

tổng độ dài các cạnh là nhỏ nhất.



Bài toán người du lịch [1], [2] có thể được mô hình hóa như một đồ thị vô

TR

Ư

hướng có trọng số, trong đó mỗi thành phố là một đỉnh của đồ thị. Khoảng cách
giữa hai thành phố là độ dài cạnh. Đây là vấn đề cực tiểu hóa với điểm đầu và điểm
cuối là cùng một đỉnh sau khi thăm hết các đỉnh còn lại đúng một lần. Mô hình này
thường là một đồ thị đầy đủ (giữa mỗi cặp đỉnh đều có cạnh). Nếu không có đường
giữa hai thành phố thì có thể thêm một cạnh với độ dài đủ lớn vào đồ thị mà không
ảnh hưởng đến kết quả tối ưu sau cùng.
Được biểu diễn bằng toán học có đồ thị vô hướng G=(V,E) với
V={v1,v2,...,vn} là tập các đỉnh hoặc nút và E{(vi,vj) : vi,vj ∈ V } là tập hợp các cạnh.

Mỗi đỉnh vi đại diện cho một thành phố vi ∈ V và mỗi cạnh (vi,vj) ∈ V là khoảng
cách giữa hai thành phố i,j.


SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 7


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

Một chu trình như vậy còn gọi là chu trình Hamilton và cũng là một giải
pháp tốt cho TSP để tối thiểu chi phí, chu trình Hamilton là chu trình nó đi qua tất
cả các đỉnh của đồ thị đúng một lần. Một đồ thị đầy đủ, luôn tồn tại chu trình
Hamilton.
Bài toán trở thành tìm cực tiểu :

𝑥1𝑛
𝑥2𝑛
….�
𝑥𝑛𝑛

xij = 0 khi không có đường đi từ i đến j.

(1)



….
….
….

…..

U

𝑥12
𝑥22
….
𝑥𝑛2

H

𝑥11
𝑥21
X = �….
𝑥𝑛1

TẾ

đến j.

�����
Min 𝑍 = ∑𝑛𝑖=1 ∑𝑛𝑗=1 𝑋𝑖𝑗 với i,j = 1,
𝑛 n € N (n > 0), Xij là khoảng cách đi từ i

N
H

Ta có ví dụ sau: Cho danh sách các thành phố được đánh số 1,2,3,4,5,6 như

TR


Ư



N

G

Đ

ẠI

H


C

KI

Hình 1.2 và khoảng cách giữa các thành phố được cho như Bảng 1.1.

Hình 1. 2: Đường đi và khoảng cách giữa các điểm

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 8


GVHD: TS. Hồ Quốc Dũng


Khóa luận tốt nghiệp

Bảng 1. 1: Khoảng cách giữa các địa điểm
1

2

3

4

5

1

0

5

8

15

10

2

5


0

12

18

9

3

8

12

0

10

13

4

15

18

10

0


7

5

10

9

13

7

0

U



Địa điểm

10
9
13
7
0

N
H

15

18
10
0
7

KI

5
8
0 12
12 0
18 10
9 13


C

=

0
5
8
15
10

H

G








TẾ

H

Từ bảng trên ta có ma trận khoảng cách giữa các thành phố lập được :

ẠI

1.2 Độ phức tạp của bài toán người du lịch







(2)

G

Đ

1.2.1 Độ phức tạp tính toán

N


Lý thuyết độ phức tạp tính toán [3] là một nhánh của lý thuyết tính toán

Ư



trong lý thuyết khoa học máy tính và toán học tập trung vào phân loại các vấn đề

TR

tính toán theo độ khó nội tại của chúng. Ở đây, độ phức tạp tính toán được hiểu là
một vấn đề có thể giải được bằng máy tính, cũng có thể hiểu là một tập các trường
hợp và lời giải cho các trường hợp đó.
Một vấn đề được coi là khó nếu lời giải của nó đòi hỏi nhiều tài nguyên,
bất kể sử dụng thuật toán nào. Lý thuyết độ phức tạp tính toán chuyển ý tưởng trực
quan này thành mệnh đề toán học chặt chẽ, bằng cách đưa ra các mô hình tính toán
để nghiên cứu các vấn đề này và tính lượng tài nguyên cần thiết để giải quyết
chúng chẳng hạn như thời gian hay bộ nhớ, lưu lượng thông tin liên lạc, số lượng
cổng logic trong mạch, số lượng bộ xử lý. Nhiệm vụ của lý thuyết độ phức tạp tính
toán là xác định các giới hạn của những gì máy tính có thể làm và không thể làm.

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 9


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp


Các mô hình tính toán và các thông số phức tạp [3]:
+ Máy Turing là một mô hình toán học cho một máy tính tổng quát. Nó là
thiết bị lý thuyết thao tác trên các ký hiệu nằm trên một dãi băng. Máy Turing không
nhằm thiết kế thiết bị tính toán trên thực tế, mà chỉ là một thiết bị trừu tượng đại diện
cho máy tính. Người ta tin rằng nếu một vấn đề có thể giải quyết bởi một thuật toán,
thì cũng có một máy Turing giải quyết vấn đề đó. Tất cả các mô hình tính toán hiện
nay chẳng hạn như máy RAM, Trò chơi cuộc sống của Conway, automat tế bào hay
bất kì ngôn ngữ lập tình nào cũng đều có thể tính được trên máy Turing. Do máy
Turing phù hợp cho việc nghiên cứu bằng toán học và được xem là mạnh ngang bất



kỳ mô hình tính toán nào, máy Turing là mô hình toán phổ biến nhất trong lý thuyết

TR

Ư



N

G

Đ

ẠI

H



C

KI

N
H

TẾ

H

U

độ phức tạp tính toán.

Hình 1. 3: Máy Turing
+ Các thông số phức tạp: Để định nghĩa cụ thể thời gian và bộ nhớ cần thiết
để giải quyết vấn đề, cần định rõ một mô hình tính toán cụ thể. Thời gian cần thiết
cho một máy Turing M giải quyết dữ liệu vào X là số lượng lần chuyển trạng thái,
hay số bước của máy trước khi máy ngừng và có thể thông báo kết quả. Một máy
Turing chạy trong thời gian f(n) nếu thời gian máy sử dụng cho tất cả các dữ liệu
vào kích thước n là không f(n). Mặc dù thời gian và bộ nhớ là hai thông số phổ biến
nhất, nhiều thông số phức tạp khác cũng có thể xem là tài nguyên tính toán. Các

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 10



GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

thông số độ phức tạp được định nghĩa tổng quát bởi các tiên đề độ phức tạp Blum,
một vài thông số độ phức tạp khác được dùng trong lý thuyết độ phức tạp bao gồm
độ phức tạp truyền thông, độ phức tạp mạch và độ phức tạp cây quyết định.
+ Các lớp độ phức tạp:
Một lớp độ phức tạp là một tập hợp các vấn đề có độ phức tạp tương tự
nhau. Các lớp độ phức tạp thường được định nghĩa theo các yếu tố như sau : Thể
loại vấn đề, Mô hình tính toán, Loại tài nguyên bị giới hạn và giới hạn cụ thể.
+ Các độ phức tạp quan trọng :

H

U



Bảng 1. 2: Các lớp độ phức tạp
Lớp độ phức tạp

Mô hình tính toán

DTIME

Máy Turing đơn định

P


Máy Turing đơn định

EXPTIME

Máy Turing đơn định

Thời gian 2poly(n)

NTIME(f(n))

Máy Turing không đơn định

Thời gian f(n)

NP

Máy Turing không đơn định

Thời gian poly(n)

NEXPTIME

Máy Turing không đơn định

Thời gian2poly(n)

Máy Turing đơn định

Bộ nhớ f(n)


Máy Turing đơn định

Bộ nhớ O (log n)

PSPACE

Máy Turing đơn định

Bộ nhớ poly(n)

EXPSPACE

Máy Turing đơn định

Bộ nhớ 2poly(n)

NSPACE(f(n))

Máy Tuirng không đơn định

Bộ nhớ f(n)

NL

Máy Turing không đơn định

Bộ nhớ O (log n)

NPSPACE


Máy Turing không đơn định

Bộ nhớ poly(n)

NEXPSPACE

Máy Turing không đơn định

Bộ nhớ 2poly(n)

TẾ

N
H

KI


C

H

ẠI

Đ

N

G


TR

Ư



DSPACE(f(n))
L

Giới hạn tài nguyên

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Thời gian f(n)
Thời gian poly(n)

Trang 11


GVHD: TS. Hồ Quốc Dũng



Khóa luận tốt nghiệp

H

U


Hình 1. 4: Quan hệ giữa các lớp độ phức tạp quan trọng

TẾ

Theo định lý Savitch thì PSPACE = NPSPACE và EXPSPACE =

N
H

NEXPSPACE.

KI

1.2.2 Độ phức tạp tính toán của bài toán người du lịch


C

Bài toán người di du lịch (TSP) thuộc lớp bài toán NP-Khó (Lớp các bài
toán không có giải thuật trong thời gian đa thức).

ẠI

H

Việc thực hiện liệt kê hết tất cả các chu trình là điều gần như không thể với

Đ

số đỉnh lớn (đồ thị đỉnh phải duyệt n! chu trình). Số chu trình phải duyệt tăng rất


N

G

nhanh khi số đỉnh n càng lớn. Ngay với 1 đồ thị 100 đỉnh, việc duyệt toàn bộ cũng



là điều kiện rất khó thực hiện.

TR

Ư

1.3 Thuật toán di truyền
1.3.1. Lịch sử của thuật toán di truyền
Ý niệm về thuật toán di truyền đã được một số nhà sinh vật học đưa ra từ
những năm 50-60, thế kỉ XX. A.S.Fraser [11] là người tiên phong nêu lên sự tương
đồng giữa sự tiến hóa của sinh vật và chương trình tin học giả tưởng về Genetic
Algorithms (GA)
Tuy nhiên, chính John Henry Holland [12] mới là người triển khai ý tưởng
và phương pháp giâỉ quyết vấn đề dựa theo sự tiến hóa.
Thuật toán di truyền là thuật toán tối ưu ngẫu nhiên dựa trên cơ chế chọn
lọc tự nhiên và tiến hóa di truyền. Nguyên lý cơ bản của thuật toán di truyền đã

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 12



GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

được tác giả J.H.Holland giới thiệu vào năm 1962. Cơ sở toán học đã được phát
triển từ cuối những năm 1960 và đã được giới thiệu trong cuốn sách đầu tiên của
Holland “Adaptive in Natural and Artificial Systems” [12]. Thuật toán di truyền
được ứng dụng đầu tiên trong hai lĩnh vực chính : tối ưu hóa và học máy.
Trong lĩnh vực tối ưu hóa thuật toán di truyền được phát triển nhanh chóng
và ứng dụng trong nhiều lĩnh vực khác nhau như tối ưu hàm, xử lý ảnh, bài toán
hành trình người du lịch, nhận dạng hệ thống và điều khiển. Thuật toán di truyền
cũng như các thuật toán tiến hóa nói chung, hình thành dựa trên quan niệm cho
rằng, quá trình tiến hóa tự nhiên là quá trình hoàn hảo nhất, hợp lý nhất và tự nó đã

U
H

thế hệ trước bởi tính kế thừa và đấu tranh sinh tồn.



mang tính tối ưu. Quá trình tiến hóa tối ưu ở chổ, thế hệ sau bao giờ cũng tốt hơn

TẾ

Lần đầu tiên Holand nghiên cứu các giải thuật này, chúng hoàn toàn không

N
H


có tên. Do nguồn gốc của phương pháp là từ gen di truyền, Holand đã đặt tên cho

KI

nó là thuật toán đi truyền.


C

Thuật toán di truyền không chú trọng đến giải pháp duy nhất và chính xác

H

như phương pháp cổ điển, trái lại GA xét đến toàn bộ các giải pháp và chọn lấy giải

ẠI

pháp tương đối tốt nhất nếu không nói là tối ưu. GA tuy dựa trên tính ngẫu nhiên

Đ

nhưng có hướng dẫn bởi hàm số thích nghi, do đó không có nghĩa là đoán mò như

N

G

nhiều người hiểu lầm, trái lại GA có một nền tảng toán học vững chắc.




1.3.2. Đặc điểm của thuật toán di truyền

TR

Ư

Thuật toán di truyền [13] đã mô phỏng sự chọn lọc tự nhiên và di truyền .
Trong tự nhiên các cá thể khỏe, có khả năng thích nghi với môi trường tốt sẽ được
tồn tại và phát triển ở các thế hệ sau. Mỗi cá thể có cấu trúc gen đặc trưng cho tính
chất của cá thể đó.
Trong quá trình sinh sản, các cá thể con có thể thừa hưởng các phẩm chất
của cha mẹ, cấu trúc gen của nó có thể xảy ra hiện tượng đột biến, cấu trúc gen của
cá thể con có thể chứa các gen mà cả cha mẹ đều không có.
Trong giải thuật di truyền, mỗi cá thể được mã hóa bởi một cấu trúc dữ liệu
mô tả cấu trúc gen của cá thể đó, ta gọi nó là nhiễm sắc thể. Mỗi nhiễm sắc thể
được tạo thành từ các đơn vị được gọi là gen.

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 13


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

Thuật toán di truyền được sử dụng đặc biệt cho những bài toán có yêu cầu
tìm kiếm tối ưu toàn cục với không gian tìm kiếm lớn và không thể kiểm soát nhờ

khả năng duyệt qua không gian tìm kiếm đại diện mà không thực sự đi qua từng
điểm của toàn bộ không gian.
Phương pháp tìm kiếm GA duy trì và xử lý một tập các lời giải được gọi là
quần thể. Các cá thể của quần thể ở thế hệ tiếp theo được tạo ra bằng cách lai ghép
và đột biến ngẫu nhiên các cá thể của quần thể ở thế hệ trước, các cá thể tồn tại sinh
sản ở thế hệ sau là các cá thể phát triển và thích nghi với môi trường.
Giải thuật di truyền sẽ làm việc trên các quần thể gồm nhiều cá thể. Một



quần thể ứng với một giai đoạn phát triển gọi là một thế hệ. Từ một thế hệ được tạo

H

U

ra, giải thuật di truyền bắt chước sự chọn lọc tự nhiên và di truyền để biến đổi các

TẾ

thế hệ.

N
H

Giải thuật di truyền bao gồm 4 bước chính: Mã hóa lời giải, khởi tạo quần

KI

thể, sử dụng các phép toán di truyền và đánh giá độ thích nghi. Sau đó chúng ta lại



C

sinh ra một quần thể mới bằng phép chọn lọc rồi tiếp tục sử dụng các phép toán di

H

truyền và đánh giá độ thích nghi của các cá thể trong quần thể.Thuật giải được thực

ẠI

hiện qua càng nhiều thế hệ thì lời giải đưa ra càng tối ưu.

Đ

Muốn dùng thuật toán di truyền phải xác định và thực hiện được các bước

N

G

của thuật toán di truyền [14]:



Bước 1: Khởi tạo quần thể các nhiễm sắc thể.

TR


Ư

Bước 2: Xác định giá trị thích nghi của từng Nhiễm sắc thể.
Bước 3: Sao chép lại các nhiễm sắc thể dựa vào giá trị thích nghi của chúng
và tạo ra những nhiễm sắc thể mới bằng các phép toán di truyền.
Bước 4: Loại bỏ những thành viên không thích nghi trong quần thể.
Bước 5: Chèn những nhiễm sắc thể mới vào quần thể để hình thành một
quần thể mới.
Bước 6: Kiểm tra điều kiện, nếu mục tiêu tìm kiếm đạt được thì dừng lại,
nếu không thì trở lại bước 3.

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 14


GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp

TR

Ư



N

G


Đ

ẠI

H


C

KI

N
H

TẾ

H

U



Sơ đồ Thuật toán Di truyền:

Hình 1. 5: Sơ đồ Giải thuật thuật toán di truyền

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 15



GVHD: TS. Hồ Quốc Dũng

Khóa luận tốt nghiệp
Cấu trúc giải thuật di truyền tổng quát [15]:
Bắt đầu
Gán t = 0;
Khởi tạo P(t)
Tính độ thích nghi cho các cá thể thuộc P(t);
Khi (điều kiện dừng chưa thỏa) lặp:
t=t+1
Chọn lọc P(t)
Lai P(t)

U



Đột biến P(t)

H

Hết lặp

TẾ

Kết thúc

N
H


- Khởi tạo quần thể: Quần thể ban đầu được khởi tạo bằng cách sinh ngẫu nhiên

KI

các chu trình, số lượng chu trình khởi tạo là không quá ít , cũng không quá nhiều.

H

cá thể hay là độ tốt của lời giải.


C

- Tính độ thích nghi: là đánh giá hay mục tiêu thể hiện tính thích nghi của

ẠI

- Chọn lọc: trong tự nhiên quá trình chọn lọc và đấu tranh sinh tồn đã làm

Đ

thay đổi các cá thể trong quần thể, những cá thể thích nghi được với điều kiện sống

N

G

thì có khả năng đấu tranh lớn hơn do đó có thể tồn tại và sinh sản. Các cá thể không




thích nghi được dần mất đi. Chọn lựa các cá thể trong GA là cách chọn các cá thể

TR

Ư

có độ thích nghi tốt đưa vào thế hệ tiếp theo hoặc để cho lai ghép, với mục đích
sinh ra cá thể mới tốt hơn. Có nhiều phương pháp lựa chọn cá thể tốt:
+ Chọn lọc dùng bánh xe Roulette (Roulette Wheel Selection): Đây được
xem là phương pháp chọn lọc đơn giản nhất, ở đó mỗi cá thể trong quần thể chiếm
một khe trong vòng trong Roulette có độ rộng tỷ lệ với giá trị hàm mục tiêu của cá
thể. Mỗi lần quay vòng tròn chúng ta nhận được một cá thể và coi như đó là cách
lựa chọn chuỗi tái tạo.
Thực hiện bằng cách Tính tổng giá trị thích nghi của tất cả các cá thể của quần
thể và gọi là tổng thích nghi. Phát sinh một số ngẫu nhiên n trong khoảng từ 0 đến tổng

SVTH: Hồ Minh Toàn - K48A Tin Học Kinh Tế

Trang 16


×