Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 61 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
61
Dung lượng
656,79 KB
Nội dung
- ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KINH TẾ HUẾ KHOA HỆ THỐNG THÔNG TIN KINH TẾ ́ in h tê ́H uê -o0o - ̣c K KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC ho ĐỀ TÀI: ại ÁP DỤNG THUẬT TOÁN DI TRUYỀN ĐỂ GIẢI Tr ươ ̀n g Đ BÀI TOÁN NGƯỜI DU LỊCH Giáo viên hướng dẫn: Sinh viên thực hiện: TS Nguyễn Đình Hoa Cương Thái Công Danh Lớp: K47 Tin Học Kinh Tế MSV: 13K4081015 Huế, 2017 - Khóa luận tốt nghiệp GVHD: TS Nguyễn Đình Hoa Cương Lời Cám Ơn ́ Tr ươ ̀n g Đ ại ho ̣c K in h tê ́H Để hồn thành tốt khố học vừa qua khoá luận tốt nghiệp này, em nhận hướng dẫn, giúp đỡ góp ý nhiệt tình q thầy trường Đại học Kinh Tế Huế chia sẻ, gắn bó gia đình, bạn bè người thân Trước hết, em xin chân thành cảm ơn đến quý thầy cô trường Đại học Kinh Tế Huế, đặc biệt thầy tận tình dạy bảo cho em suốt thời gian học tập trường Em xin gửi lời biết ơn sâu sắc đến Tiến sĩ Nguyễn Đình Hoa Cương Người thầy dành nhiều thời gian, tâm huyết để hướng dẫn nghiên cứu giúp em hoàn thành luận văn tốt nghiệp Đồng thời, em xin cảm ơn quý anh, chị ban lãnh đạo Công ty FPT Software Đà Nẵng tạo điều kiện cho em thực tập để có liệu hồn thành tốt luận văn Cuối em muốn gửi lời cảm ơn đến gia đình em, tất bạn vè người thân người giúp đỡ, chia sẻ dẫn cho em điều bổ ích suốt trình theo học vừa Mặc dù có nhiều cố gắng hồn thiện khóa luận tất tâm huyết khả mình, nhiên khơng thể tránh khỏi thiếu sót, mong đóng góp q báu q thầy bạn Huế, tháng năm 2017 SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang i Khóa luận tốt nghiệp GVHD: TS Nguyễn Đình Hoa Cương MỤC LỤC LỜI CÁM ƠN i MỤC LỤC ii DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÍ HIỆU iv DANH MỤC CÁC SƠ ĐỒ, ĐỒ THỊ v DANH MỤC CÁC BIỂU BẢNG .vi ́ uê PHẦN I: ĐẶT VẤN ĐỀ ́H Lý chọn đề tài: tê Mục tiêu nghiên cứu: .2 Đối tượng phạm vi nghiên cứu: in h Phương pháp nghiên cứu: Nội dung khóa luận: ̣c K PHẦN II: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU CHƯƠNG 1: CƠ SỞ LÝ LUẬN .4 ho 1.1 Bài toán người du lịch (Traveling Salesman Problem – TSP) ại 1.1.1 Lịch sử: Đ 1.1.2 Phát biểu toán: .5 1.1.3 Lý thuyết độ phức tạp tính tốn: ươ ̀n g 1.2 Thuật toán di truyền (Genetic Algorithm) .10 1.2.1 Lịch sử thuật toán di truyền 10 1.2.2 Tư tưởng thuật toán di truyền .12 Tr 1.2.3 Khởi tạo quần thể 15 1.2.4 Phép chọn lọc 15 1.2.5 Phép lai (cross over) 15 1.2.6 Phép đột biến (mutation) 15 1.2.7 Điều kiện dừng 16 1.3 Áp dụng thuật toán di truyền để giải toán người du lịch 16 1.3.1 Khởi tạo quần thể 16 1.3.2 Tính độ thích nghi cho cá thể 17 SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang ii Khóa luận tốt nghiệp GVHD: TS Nguyễn Đình Hoa Cương 1.3.3 Phép chọn lọc 18 1.3.4 Phép lai: .18 1.3.5 Phép đột biến .19 1.3.6 Điều kiện dừng 19 1.4 Các cơng trình có liên quan: 20 CHƯƠNG 2: CÀI ĐẶT THUẬT TOÁN DI TRUYỀN ĐỂ GIẢI BÀI TOÁN NGƯỜI DU LỊCH 25 ́ uê 2.1 Phân tích thiết kế hướng đối tượng 25 ́H 2.2 Cài đặt thuật toán di truyền để giải toán người du lịch 28 tê 2.2.1 Lớp thành phố 28 2.2.2 Lớp Danh Sách Thành Phố: 29 in h 2.2.3 Lớp Chu Trình: 31 2.2.4 Lớp Quần Thể: 33 ̣c K 2.2.5 Cài đặt thuật toán di truyền .35 2.2.6 Hàm Main: .40 ho 2.2.7 Thêm thành phố đầu vào cho chương trình 41 ại 2.3 Kết chương trình .44 Đ CHƯƠNG 3: THÍ NGHIỆM CHƯƠNG TRÌNH 45 3.1 Thí nghiệm chương trình với số thành phố tăng dần .45 ươ ̀n g 3.2 Thí nghiệm kết chương trình với số hệ tăng dần 46 3.3 So sánh thời gian chạy thuật toán di truyền với thuật toán duyệt sâu (DFS – Depth first search ) .47 Tr 3.4 Kết Luận 50 TÀI LIỆU THAM KHẢO 53 SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang iii Khóa luận tốt nghiệp GVHD: TS Nguyễn Đình Hoa Cương DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÍ HIỆU DFS Depth first search – Thuật toán duyệt sâu TSP Travelling Salesmen Problem - Bài toán người du lịch P Polynomial – đa thức NP Non-Polynomial – đa thức Tr ươ ̀n g Đ ại ho ̣c K in h tê ́H ́ Genetic Algorithm – Thuật toán di truyền uê GA SV: Thái Cơng Danh-K47 Tin Học Kinh Tế Trang iv Khóa luận tốt nghiệp GVHD: TS Nguyễn Đình Hoa Cương DANH MỤC CÁC SƠ ĐỒ, ĐỒ THỊ Hình 1.1: Ví dụ toán người du lịch .6 Hình 1.2: Chu trình với độ dài ngắn Hình 1.3: Mơ tả lớp độ phức tạp thuật toán .9 Hình 1.4: Lưu đồ thuật tốn thuật toán di truyền 14 ́ Hình 1.5: Ví dụ cách biểu diễn giải pháp theo lộ trình 17 ́H Hình 1.6: Ví dụ khởi tạo quần thể gồm n chu trình .17 Hình 1.7: Áp dụng phép lai với toán người du lịch .19 tê Hình 1.8: Áp dụng phép đột biến với toán người du lịch 19 h Hình 2.1: Biểu đồ lớp (Class diagram) cho thuật tốn di truyền 27 in Hình 2.2: File input.txt 42 ̣c K Hình 2.3: Kết chạy thuật toán 44 Hình 3.1: Biểu đồ thời gian chạy chương trình số thành phố tăng dần 46 ho Hình 3.2: Biểu đồ so sánh thời gian chạy thuật toán di truyền so với thuật toán Tr ươ ̀n g Đ ại DFS 50 SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang v Khóa luận tốt nghiệp GVHD: TS Nguyễn Đình Hoa Cương DANH MỤC CÁC BIỂU BẢNG Bảng 1.1: Các cột mốc lịch sử toán người du lịch Bảng 1.2: Các lớp độ phức tạp thuật toán .8 Bảng 1.3: Số lượng chu trình số đỉnh đồ thị tăng lên: 10 Bảng 3.1: Thời gian chạy chương trình số thành phố tăng dần 45 ́ uê Bảng 3.2: Kết chạy chương trình số hệ tăng dần 47 Tr ươ ̀n g Đ ại ho ̣c K in h tê ́H Bảng 3.3: So sánh thuật toán di truyền thuật toán duyệt sâu (DFS) .49 SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang vi Khóa luận tốt nghiệp GVHD: TS Nguyễn Đình Hoa Cương PHẦN I: ĐẶT VẤN ĐỀ Lý chọn đề tài: Bài toán người du lịch (hay cịn gọi tốn người bán hàng) toán tiếng thuộc lớp toán tối ưu tổ hợp Tuy phát biểu toán đơn giản, việc giải cho tìm kết tốt thời gian chấp nhận vấn đề nan giải Hiện nay, việc tìm lời giải hiệu cho ́ uê toán nhà khoa học, nhà nghiên cứu tiếp tục tìm tịi, thử nghiệm Những hướng giải không ngừng phát triển, từ thuật ́H tốn tảng hay đưa hướng giải mới, sáng tạo Nhưng tê mục đích cuối cùng, sâu xa việc giải tốn thuộc lớp toán NP-Đầy đủ (NP-Complete) toán người du lịch tiền đề để giải tất in h tốn cịn lại thuộc lớp toán này, chứng minh lớp độ phức tạp ̣c K thuật toán P = NP, vấn đề lâu gây nhiều tranh cãi lý thuyết độ phức tạp tính tốn ho Thuật toán di truyền (Genetic Algorithm) hướng mới, sáng tạo việc giải toán người du lịch Nó vận dụng tư tưởng tiến hóa tự ại nhiên, gần gũi với người để giải toán Ý tưởng thuật toán xuất phát từ Đ quan sát thấy rằng, q trình tiến hóa tự nhiên thường mang tính tối ưu, tức hệ sau thường kế thừa phát triển hệ trước Thuật tốn cho ươ ̀n g kết khả quan so sánh với thuật toán khác thời gian chạy chấp nhận Bên cạnh đó, điểm thú vị thuật tốn áp dụng khái Tr niệm sinh học gần gũi tự nhiên tiến hóa, lai ghép, chọn lọc tự nhiên để áp dụng vào cài đặt Khiến vừa dễ hiểu, dễ hình dung, lại cho ta thấy rõ ràng cách thức thực thuật tốn Chính thế, thuật tốn di truyền thu hút đông nhà nghiên cứu sâu vào tìm tịi phát triển Xuất phát từ tìm hiểu, nghiên cứu toán người du lịch thuật toán di truyền, xem xét tính ứng dụng chúng giải vấn đề thực tế tìm lộ trình ngắn thành phố thực tế, áp dụng thuật tốn vào cơng cụ đồ, Em định chọn đề tài: “Áp dụng thuật tốn di SV: Thái Cơng Danh-K47 Tin Học Kinh Tế Trang Khóa luận tốt nghiệp GVHD: TS Nguyễn Đình Hoa Cương truyền để giải tốn người du lịch” làm đề tài khóa luận tốt nghiệp để nghiên cứu sâu vấn đề Mục tiêu nghiên cứu: - Mục tiêu tổng quát: Dựa nghiên cứu cụ thể toán người du lịch thuật toán di truyền để xây dựng chương trình giải tốn người du lịch, kiểm thử tính hiệu thuật tốn ́ - Mục tiêu cụ thể: tê truyền, lịch sử, tư tưởng, bước thực thuật toán ́H Nghiên cứu sở lý luận toán người du lịch thuật toán di Nghiên cứu cách cài đặt thuật tốn ngơn ngữ lập trình Java cài đặt h thuật toán di truyền in Tiến hành kiểm thử thuật tốn, đánh giá tính hiệu thời gian ̣c K chạy thuật toán Đối tượng phạm vi nghiên cứu: ho - Đối tượng nghiên cứu: Thuật toán di truyền áp dụng để giải toán ại người du lịch Đ - Phạm vi nghiên cứu: Phạm vi đề tài bao gồm thuật toán di truyền, toán người du lịch, cách áp dụng thuật toán di truyền để giải toán người du lịch ươ ̀n g vấn đề liên quan Phương pháp nghiên cứu: - Phương pháp nghiên cứu tài liệu: sử dụng kiến thức tìm hiểu từ Tr tài liệu sách vở, báo chí, internet Chủ động tìm hiểu vấn đề liên quan đến đề tài, tham khảo nội dung liên quan đến thuật toán di truyền, tốn người du lịch để có hiểu biết xác vấn đề -Phương pháp hỏi ý kiến chuyên gia: Tham khảo, hỏi ý kiến chuyên gia, nhà nghiên cứu am hiểu vấn đề để củng cố thêm kiến thức đề 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 cách hợp lý, khoa học, phù hợp với tư tưởng thuật tốn SV: Thái Cơng Danh-K47 Tin Học Kinh Tế Trang Khóa luận tốt nghiệp GVHD: TS Nguyễn Đình Hoa Cương Nội dung khóa luận: Nội dung khóa luận gồm có chương: Chương 1: Cơ sở lý luận Chương trình bày tồn nội dung lý thuyết đề tài nghiên cứu Bao gồm lịch sử, cách phát biểu toán người du lịch, lý thuyết độ phức tạp tính tốn, độ phức tạp tốn người du lịch,… Trình bày tư tưởng, lịch sử, bước để thực thuật toán di truyền cách áp dụng thuật toán di truyền ́ uê trường hợp giải toán người du lịch ́H Chương 2: Cài đặt thuật toán di truyền để giải toán người du lịch tê Chương mơ tả cách thức cài đặt thuật tốn cách chi tiết, bao gồm phân tích thiết kế chương trình, cách xây dựng lớp theo phương pháp lập trình in Chương 3: Thí nghiệm chương trình h hướng đối tượng cách cài đặt chương trình cụ thể ngơn ngữ lập trình Java ̣c K Chương trình bày kết kiểm thử chương trình, xác minh tính xác, thời gian chạy so sánh hiệu chương trình với thuật Tr ươ ̀n g Đ ại ho toán liên quan SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang Khóa luận tốt nghiệp GVHD: TS Nguyễn Đình Hoa Cương 2.2.6 Hàm Main: Trong cách cài đặt này, đồ thị sinh ngẫu nhiên với số đỉnh người dùng nhập vào, sau ta tiến hành khởi tạo quần thể thực thuật toán di truyền: import java.util.Random; import java.util.Scanner; Đ ại ho ̣c K in h tê ́H uê public static void main(String[] args) { //Sinh Scanner input = new Scanner(System.in); System.out.print("Nhap vao so luong can sinh: "); int soThanhPho = input.nextInt(); input.nextLine(); int x,y = 0; System.out.println("Ket qua sinh: "); for (int i=1;i