Bài thu hoạch này sẽ trình bày một số vấn đề về bài toán tối ưu tổ hợp trongkhoa học máy tính, cách giải các bài toán đó sử dụng các metaheuristic; giới thiệubài toán người bán hàng với
Trang 1BÀI THU HOẠCH MÔN HỌC THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
ĐỀ TÀI:
GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG BẰNG GIẢI
THUẬT MÔ PHỎNG LUYỆN KIM
GIÁO VIÊN HƯỚNG DẪN:
PGS.TS ĐỖ VĂN NHƠN HỌC VIÊN: VƯƠNG ĐỨC HIỀN MSHV: CH1301087
LỚP: CAO HỌC KHÓA 8
Trang 2MỤC LỤC:
LỜI MỞ ĐẦU 3
Chương 1 : KHÁI QUÁT VỀ BÀI TOÁN TỐI ƯU TỔ HỢP 4
1.1 Bài toán tối ưu tổ hợp với metaheuristic 4
1.2 Bài toán người bán hàng 5
1.2.1 Giới thiệu chung 5
1.2.2 Mô tả bài toán 8
1.2.3 Các giải thuật giải bài toán 9
Chương 2 : GIẢI BÀI TOÁN NGƯỜI BÁN HÀNG BẰNG GIẢI THUẬT MÔ PHỎNG LUYỆN KIM 13
2.1 Giải thuật mô phỏng luyện kim 13
2.1.1 Giới thiệu chung 13
2.1.2 Nội dung giải thuật 14
2.1.3 Áp dụng vào bài toán TSP 19
2.2 Chương trình giải bài toán TSP sử dụng thuật giải luyện kim 21
KẾT LUẬN 23
TÀI LIỆU THAM KHẢO 24
Trang 3LỜI MỞ ĐẦU
Bài toán tối ưu tổ hợp là một bài toán có nhiều ứng dụng trong thực tiễn và
lý thuyết, góp phần xây dựng nên các thuật toán hữu hiệu Metaheuristic là mộtcách gọi chung cho các giải thuật heuristic trong việc giải quyết các bài toán tổ hợpkhó Bài thu hoạch này sẽ trình bày một số vấn đề về bài toán tối ưu tổ hợp trongkhoa học máy tính, cách giải các bài toán đó sử dụng các metaheuristic; giới thiệubài toán người bán hàng với các giải thuật để giải nó; tìm hiểu giải thuật mô phỏngluyện kim Simulated Annealing và áp dụng vào giải bài toán người bán hàng
Bên cạnh các tìm hiểu lý thuyết, bài thu hoạch còn xây dựng một chươngtrình demo mô phỏng cách giải quyết bài toán người bán hàng theo thuật giải luyệnkim Chương trình đã mô tả, biểu diễn được vấn đề bài toán và đưa ra được kết quả
là đường đi ngắn nhất qua các thành phố trong thời gian nhanh, sử dụngmetaheuristic trong suy luận
Trang 4CHƯƠNG 1 : KHÁI QUÁT VỀ BÀI TOÁN TỐI ƯU TỔ HỢP1.1 Bài toán tối ưu tổ hợp với metaheuristic
Bài toán tối ưu tổ hợp là bài toán chỉ quan tâm đến một cấu hình “tốt nhất”theo một nghĩa nào đấy Đây là bài toán có nhiều ứng dụng trong thực tiễn và lýthuyết tổ hợp đã đóng góp một phần đáng kể trong việc xây dựng những thuật toánhữu hiệu Mục đích của bài toán tối ưu tổ hợp là tìm lời giải tốt nhất trong các lờigiải có thể và không gian tìm kiếm lời giải của bài toán là rời rạc Nhiều bài toán tối
ưu tổ hợp có độ phức tạp tính toán cao và được phân loại thuộc lớp NP khó Việctìm ra lời giải tối ưu cho các bài toán này cho các hệ thống song song lớn nhất cũngkhông thể hoàn thành được trong giới hạn thời gian cho phép vì vậy các kỹ thuậtheuristic cho việc giải các bài toán tổ hợp theo hướng xấp xỉ đã được phát triển đểtìm ra các lời giải gần tối ưu (hay xấp xỉ) trong giới hạn thời gian cho phép Bàitoán người du lịch (TSP) là một bài toán cổ điển thuộc lớp NP được nghiên cứu sâutrong lĩnh vực tối ưu tổ hợp
Metaheuristic là một cách gọi chung cho các giải thuật heuristic trong việcgiải quyết các bài toán tổ hợp khó Metaheuristic bao gồm những chiến lược khácnhau trong việc khám phá không gian tìm kiếm bằng cách sử dụng những phươngthức khác nhau và phải đạt được sự cân bằng giữa tính đa dạng và chuyên sâu củakhông gian tìm kiếm Một cài đặt thành công của metaheuristic trong một bài toán
tổ hợp phải cân bằng giữa sự khai thác được kinh nghiệm thu thập được trong quátrình tìm kiếm để xác định được những vùng với những lời giải có chất lượng caogần tối ưu Những ví dụ của metaheuristic bao gồm giải thuật luyện kim (SA) , giảithuật di truyền (GA) , giải thuật đàn kiến (ACO) ,…Giải thuật đàn kiến làmetaheuristic dùng chiến lược của kiến trong thế giới thực để giải bài toán tối ưu
SA xuất phát từ phương thức xác suất và kỹ thuật luyện bao gồm việc nung và điềukhiển làm nguội các kim loại để đạt được trạng thái năng lượng nhỏ nhất Trong khi
Trang 5đó giải thuật di truyền dựa trên ý tưởng từ cơ chế di truyền trong sinh học và tiếntrình tiến hóa trong cộng đồng các cá thể của một loài.
Với độ phức tạp tính toán cao của các bài toán tối ưu tổ hợp cũng như đòihỏi về mặt thời gian, việc giải các bài toán này yêu cầu cần phải có những cài đặtsong song hóa hiệu quả của các giải thuật để giải quyết chúng Song song hóa cácgiải thuật metaheuristic phải đạt được 2 yêu cầu : đa dạng hóa để khám phá đượcnhiều vùng trong không gian tìm kiếm và tăng tốc độ tìm kiếm Nhiều mô hình songsong hoá đã được đề xuất cho nhiều metaheuristic ACO và GA đều là các cách tiếpcận dựa trên tập cá thể và vì vậy khá tự nhiên cho việc xử lý song song Tuy nhiên
SA thì vốn đã mang tính tuần tự và rất chậm cho các bài toán với không gian tìmkiếm lớn nhưng vẫn có một vài kỹ thuật song song hóa có thể được áp dụng để tăngtốc độ tìm kiếm
1.2 Bài toán người bán hàng
1.2.1 Giới thiệu chung
a Tổng quan:
Bài toán người bán hàng (Travellng Salesman Problem - TSP) là một bài
toán khá nổi tiếng trong lĩnh vực tối ưu tổ hợp được nghiên cứu trong lý thuyếtkhoa học máy tính Nội dung của nó khá đơn giản, nó được phát biểu như sau: Chomột danh sách các thành phố và khoảng cách giữa chúng, nhiệm vụ là phải tìmđường đi ngắn nhất có thể mà chỉ thăm mỗi thành phố đúng 1 lần
Bài toán được lần đầu tiên đưa ra như một vấn đề toán học vào năm 1930 và
là một trong số những bài toán được nghiên cứu chuyên sâu trong lĩnh vực tổ hợpthời đó Nó được sử dụng như một sự đánh giá cho nhiều phương thức tối ưu khácnhau Thậm chí bài toán là thuộc lớp NP khó , một lượng rất lớn các heuristic vàphương thức tìm kiếm cụ thể đã được biết đến vì vậy một vài trường hợp của bàitoán với khoảng chục nghìn thành phố đã được giải quyết
Trang 6TSP có một vài ứng dụng thậm chí trong dạng thức nguyên thuỷ của nó nhưlập kế hoạch, logistic, và sản xuất các microchip Thay đổi đi chút ít nó xuất hiệnnhư một bài toán con trong rất nhiều lĩnh vực như việc phân tích gen trong sinh học.Trong những ứng dụng này, khái niệm thành phố có thể thay đổi thành khách hàng,các điểm hàn trên bảng mạch, các mảnh DNA trong gen, và khái niệm khoảng cách
có thể biểu diễn bởi thời gian du lịch hay giá thành, hay giống như sự so sánh giữacác mảnh DNA với nhau Trong nhiều ứng dụng, các hạn chế truyền thống như giớihạn tài nguyên hay giới hạn thời gian thậm chí còn làm cho bài toán trở nên khóhơn
Trong lý thuyết của độ phức tạp tính toán, phiên bản quyết định của bài toán TSP thuộc lớp NP-complete 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 tồi nhất cho bất kỳ giải thuật nào cho bài toán TSP tăng theo hàm mũ với số lượng thành phố, vì vậy thậm chí nhiều trường hợp với vài trăm thành phố cũng đã mất vài năm CPU để giải một cách chính xác
b Lịch sử bài toán:
Nguồn gốc của bài toán người du lịch đến nay vẫn chưa rõ ràng Một cuốnsách cho người du lịch từ năm 1832 đã đề cập tới vấn đề và bao gồm vài ví dụ vềcác đường đi từĐức qua Thụy Sỹ nhưng không chứa đựng ý nghĩa toán học nào
Vấn đề toán học liên quan tới bài toán người du lịch đã được nhắc đến trongnhững năm 1800 bởi nhà toán học Ireland W R Hamilton và nhà toán học ngườiAnh Thomas Kirkman Trò chơi Icosian Game của Hamilton là một trò đố vui dựatrên cơ sở tìm chu trình Hamilton Dạng tổng quát của bài toán TSP được nghiêncứu bởi các nhà toán học suốt những năm 1930 ở đại học Harvard, đáng chú ý làKarl Menger người đã định nghĩa bài toán, xem xét giải thuật Brute-force và quansát thấy tính không tối ưu của heuristic dựa trên láng giềng gần nhất
Trang 7Hassler Whitney ở đại học Princeton đưa ra tên “Bài toán người bán hàng”ngay sau đó.
Trong những năm 1950 và 1960 , bài toán trở nên ngày càng phổ biến tronggiới nghiên cứu khoa học ở châu Âu và Mỹ Những đóng góp đáng chú ý được kểđến như George Dantzig, Delbert Ray Fulkerson và Selmer M Johnson tại RANDCorporationởSanta Monica, những người đã trình bày bài toán như bài toán sốnguyên tuyến tính và phát triển phương thức cắt cho lời giải của nó Với nhữngphương thức mới này họ đã giải được tối ưu một trường hợp có 49 thành phố bằngcách xây dựng một chu trình và chứng minh rằng không còn chu trình nào ngắnhơn Trong những thập kỷ tiếp theo, bài toán được nghiên cứu bởi rất nhiều nhànghiên cứu từ toán học, khoa học máy tính, hóa học,vật lý và những ngành khác
Richard M Karp năm 1972 chứng minh rằng bài toán chu trìnhHamiltonthuộc lớp NP-đầy đủ, và qua đó chỉ ra tính NP khó (NP-hardness ) của bàitoán TSP Điều này giải thích một cách khoa học cho độ phức tạp tính toán của việctìm lời giải tối ưu cho bài toán
Nhiều thành tựu đã đạt được trong suốt những năm cuối thập kỷ 1970 và
1980, khi Grötschel, Padberg, Rinaldi và những người khác cố gắng giải một cáchchính xác một thể hiện của bài toán với 2392 thành phố, sử dụng phương pháp mặtphẳng cắt và nhánh cận
Trong những năm 1990 Applegate, Bixby, Chvátal, và Cook đã phát triển
chương trìnhConcorde mà đã được sử dụng nhiều trong việc giải các bài toán TSP
cho đến nay Gerhard Reinelt đã công bố thư viện TSPLIB vào năm 1991, đó làmột tập các thể hiện của bài toán TSP với nhiều độ khó khác nhau, và đã được sửdụng bởi nhiều nhóm nghiên cứu khác nhau để so sánh kết quả Năm 2005, Cook vànhững người khác đã tính được độ dài tối ưu cho chu trình với thể hiện của bài toánTSP lên tới 33,810 thành phố , được lấy ra từ bài toán xây dựng layout cho
Trang 8microchip, cho tới nay vẫn là thể hiện lớn nhất trong các thể hiện ở TSPLIB.Nhiềuthể hiện khác với hàng triệu thành phố , lời giải tìm được có thể chứng minh nằmsai khác 1% so với lời giải tối ưu.
1.2.2 Mô tả bài toán
Hình 1.1 Mô tả bài toán
Phát biểu bài toán:
Có một người giao hàng cần đi giao hàng tại n thành phố Anh ta xuất phát
từ một thành phố nào đó, đi qua các thành phố khác để giao hàng và trở về thành phố ban đầu Mỗi thành phố chỉ đến một 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 sao cho tổng độ dài các cạnh là nhỏ nhất.
TSP có thể được mô hình như một đồ thị , các đỉnh của đồ thị tương ứng vớicác thành phố và các cạnh thì tương ứng với đường nối giữa các thành phố, chiềudài của một cạnh tương ứng với khoảng cách giữa 2 thành phố Một đường đi trongbài toán TSP là một chu trình Hamilton trên đồ thị và một lời giải tối ưu của bàitoán là chu trình Hamilton ngắn nhất
Thường thì đồ thị là đồ thị đầy đủ , vì vậy mọi cặp cạnh đều được nối bởi cáccạnh Đây là bước đơn giản hóa bài toán vì việc tìm chu trình Hamilton trong một
đồ thị đầy đủ là dễ Các bài toán mà không phải 2 thành phố nào cũng được nối vớinhau có thể được chuyển đổi thành đồ thị đầy đủ bằng cách thêm những cạnh có độ
Trang 9dài lớn giữa cách thành phố này , những cạnh sẽ không xuất hiện trong chu trình tốiưu.
1.2.3 Các giải thuật giải bài toán
a Lời giải chính xác
Lời giải trực tiếp nhất có thể là thử tất cả các hoán vị và xem hoán vị nào làtốt nhất (dùng brute-force) Thời gian chạy cho cách tiếp cận này là O(n!), vì vậycách tiếp cận này thậm chí không thể thực hiện với chỉ 20 thành phố Một trong sốnhững ứng dụng mới đây nhất của quy hoạch động là giải thuật có độ phức tạp
O(n22n) và yêu cầu không gian bộ nhớ là hàm mũ
Cải thiện tốc độ cho cách giải thuật trên là hầu như không thể Ví dụ, thậmchí là rất khó tìm một giải thuật chính xác cho bài toán TSP chạy trong độ phức tạp
Thực hiện nhánh cận và cắt cho các bài toán cụ thể , đây là phương thức
sử dụng để giải quyết các bài toán với số lượng lớn thành phố Cách tiếpcận này đang giữ kỷ lục hiện tại giải quyết được bài toán TSP với 85,900thành phố
Lời giải chính xác cho bài toán với 15,112 thành phố ở Đức từ TSPLIB đãđược tìm ra năm 2001 sử dụng phương thức lát cắt đề xuất bởi George Dantzig, RayFulkerson, và Selmer Johnsonvào năm 1954, dựa trên lập trình tuyến tính Quá trình
Trang 10tính toán đã được thực hiện trong mạng máy tính gồm 110 bộ vi xử lý tại đại họcRice University và Princeton University Tổng thời gian tính toán tương đương với22.6 năm trong một máy đơn vi xử lý tốc độ 500 MHz Vào tháng 5-2004, bài toánngười du lịch thăm tất cả 24,978 thành phố ở Thụy Điển đã được giải quyết: đoạnđường ngắn nhất vào khoảng 72,500 kilomet đã được tìm thấy và đã được chứngminh rằng không có đường đi nào ngắn hơn.
Vào tháng 3- 2005, bài toán người du lịch với 33,810 điểm trong 1 mạch in
đã được giải quyết sử dung công cụ Concorde TSP Solver: Đoạn đường tối ưu dài
66,048,945 đơn vị đã được tìm thấy và đã được chứng minh không có đường đi nàongắn hơn tổng khối lượng tính toán mất khoảng 15.7 năm CPU (Cook et al, 2006).Vào tháng 4 năm 2006 một bài toán với 85,900 điểm cũng đã được giải quyết bởi
Concorde TSP Solver, và mất khoảng 136 năm CPU.
b Heuristic và các thuật giải xấp xỉ
Rất nhiều heuristics và giải thuật xấp xỉ có thể đưa ra nhanh chóng lời giảitốt đã được đề xuất Các phương thức hiện đại có thể tìm lời giải cho bài toán cựclớn (hàng triệu thành phố) trong khoảng thời gian chấp nhận được với lời giải xấp
xỉ chỉ khác 2-3% so với lời giải tối ưu
Một vài kiểu heuristic đã được tìm ra như:
Giải thuật láng giềng gần nhất nearest neighbour (NN) (hay còn gọi là giảithuật tham lam (greedy algorithm)) để cho người du lịch chọn thành phố gần nhấtchưa thăm trong lần di chuyển tiếp theo Giải thuật này nhanh chóng đưa ra mộtđường đi ngắn và hiệu quả Cho khoảng N thành phố phân bố ngẫu nhiêu trên mặtphẳng trung bình giải thuật này đưa ra lời giải có chiều dài xấp xỉ 1.25 * lần chiềudài của đường đi tối ưu
Trang 11Tuy nhiên, có nhiều cách sắp xếp đặc biệt các thành phố làm cho giải thuật
NN đưa ra đường đi tồi tệ nhất (Gutin, Yeo, and Zverovich, 2002) Điều này đúngcho cả bài toán TSP đối xứng và bất đối xứng (Gutin and Yeo, 2007)
Gần đây một heuristic mới được đưa ra là Match Twice and Stitch (MTS)(Kahng, Reda 2004) MTS đã cho thấy tính hiệu quả hơn hẳn so với những heuristicxây dựng hiện tại MTS thực hiện hai lần khớp tuần tự, mà lần khớp thứ 2 đượcthực hiện sau khi xóa tất cả các cạnh của lần khớp thứ nhất, để đưa ra tập tất cả cácchu trình Sau đó chu trình được đóng lại để đưa ra đường đi cuối cùng
Chuyển cặp, hay heuristic Lin-Kernighan.
Kỹ thuật chuyển cặp hay '2-opt' bao gồm việc lặp lại việc xóa 2 cạnh và thaychúng bằng hai cạnh khác nối đoạn tạo bởi cạnh bị xóa tạo thành đường di ngắnhơn Đây là trường hợp đặc biệt của phương thức k-opt
k-opt heuristic
Lấy một đường đi và xóa k cạnh đôi một không có điểm chung Xây đựng lạiđường đi từ những mảnh còn lại để không có hai mảnh đường đi nào lối với nhau(không nối hai điểm đầu cuối của 2 mảnh với nhau sẽ tạo thành đường đi khépkín) Điều này làm đơn giản hóabài toán TSP thành bài toán đơn giản hơn rất
nhiều Mỗi điểm đầu cuối có thể được nối tới 2k − 2 điểm khác có thể: trong số 2ktổng số điểm đầu cuối có thể, trừ rahai điểm đầu cuối của mảnh đang xem xét Bài toán đơn giản hóa 2k thành phố TSP có thể giải sử dụng brute force để
tìm tổ hợp tốt nhất của các mảnh ban đầu Kỹ thuật k-opt là trường hợp riêng của
kỹ thuât V-opt hay variable-opt Kỹ thuật phổ biến của k-opt là 3-opt, được giớithiệu bởi Shen Lin của Bell Labs vào năm 1965 Có một trường hợp đặc biệt của3-opt khi mà cách cạnh là có thể không nhất thiết không có điểm chung (haitrong số các cạnh kề với nhau) Trong thực tế, có thể đạt được những phát triểnđáng kể của kỹ thuật 2-opt không nhất thiết phải sử dụng 3-opt bằgn cách giới
Trang 12hạn 3-changes thành trườn hợp riêng với hai cạnh xóa đi nối với nhau Kỹ thuậtnày được gọi là 2.5-opt nằm giữa 2-opt và 3-opt, hiểu theo cả 2 nghĩa của chấtlượng lời giải đạt được và thời gian để tìm được lời giải.
V'-opt heuristic
Kỹ thuật variable-opt method giống như , nhưng là sự tông quát hóa của k-opt kỹthuật Trong khi kỹ thuật k-opt xóa đi một số lựong cố định (k) cạnh từ đường điban đầu kỹ thuật variable-opt không xóa đi một số lượng cạnh cố định Thay vìvậy nó phát triển tập này khi quá trình tìm kiếm tiếp tục Phương thức nổi tiếngtrong gia đình này là phương thức Lin-Kernighan Shen Lin vàBrianKernighanlần đầu tiên đưa ra phương thức của họ năm 1972 và nó là heuris ticđáng tin cậy nhát cho việc giải bài toán người du lịch trong suốt hai thập
kỷ Những kỹ thuật tiên tiến hơn được phát triển tại Bell Labs cuối những năm
1980 bởi David Johnson và đội nghiên cứu của ông Những phương thức này ,đôi khi được gọi là Lin-Kernighan-Johnson xây dựng trên phương thức Lin-Kernighan , thêm ý tưởng từ tabu search và evolutionary computing Kỹ thuật cơ
sở Lin-Kernighan technique mang lại kết quả được đảm bảo ít nhất là bằn so với3-opt Phương thức Lin-Kernighan-Johnson tính một đường đi Lin-Kernighan ,
và sau đó xáo trộn đường đi bằng cách đột biến (xóa ít nhất 4 cạnh và nối lạiđường đi bằng cách khác , sau đó thực v-opttrên đường đi mới ) Quá trình độtbiến thường đủ để di chuyển đường đi ra khỏi cục bộ địa phương (localminimum) Kỹ thuật V-opt được xem như một trong số những heuristic mạnhcho bài toán và có thể giải quyết các trường hợp đặc biệt, như bài toán chu trìnhHamilton và những bài toán TSP không phải metricmà những heuristic kháckhông giải quyết được