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
2,16 MB
Nội dung
ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KINH TẾ HUẾ KHOA HỆ THỐNG THÔNG TIN KINH TẾ tế H uế -o0o - nh KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC Ki ĐỀ TÀI: c ÁP DỤNG THUẬT TOÁN DI TRUYỀN ĐỂ GIẢI Đ ại họ 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 GVHD: TS Nguyễn Đình Hoa Cương Khóa luận tốt nghiệp Lời Cám Ơn Đ ại họ c Ki nh tế H uế Để hồn thành tốt khố học vừa qua khố 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 cô 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 hoà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 q 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 quý báu quý thầy cô bạn Huế, tháng năm 2017 SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang i GVHD: TS Nguyễn Đình Hoa Cươ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 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 PHẦN I: ĐẶT VẤN ĐỀ 1 Lý chọn đề tài: .1 uế Mục tiêu nghiên cứu: .2 Đối tượng phạm vi nghiên cứu: H Phương pháp nghiên cứu: tế Nội dung khóa luận: nh PHẦN II: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU CHƯƠNG 1: CƠ SỞ LÝ LUẬN .4 Ki 1.1 Bài toán người du lịch (Traveling Salesman Problem – TSP) c 1.1.1 Lịch sử: họ 1.1.2 Phát biểu toán: .5 1.1.3 Lý thuyết độ phức tạp tính tốn: ại 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 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 GVHD: TS Nguyễn Đình Hoa Cương Khóa luận tốt nghiệp 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 2.1 Phân tích thiết kế hướng đối tượng 25 2.2 Cài đặt thuật toán di truyền để giải toán người du lịch 28 uế 2.2.1 Lớp thành phố 28 H 2.2.2 Lớp Danh Sách Thành Phố: 29 2.2.3 Lớp Chu Trình: 31 tế 2.2.4 Lớp Quần Thể: 33 nh 2.2.5 Cài đặt thuật toán di truyền .35 2.2.6 Hàm Main: .40 Ki 2.2.7 Thêm thành phố đầu vào cho chương trình 41 c 2.3 Kết chương trình .44 họ 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 ại 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 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 GVHD: TS Nguyễn Đình Hoa Cương Khóa luận tốt nghiệp DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÍ HIỆU Genetic Algorithm – Thuật toán di truyền 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 uế GA H Non-Polynomial – đa thức Đ ại họ c Ki nh tế NP SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang iv GVHD: TS Nguyễn Đình Hoa Cương Khóa luận tốt nghiệp 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ì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 uế 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 toán di truyền 27 tế Hình 2.2: File input.txt 42 Hình 2.3: Kết chạy thuật tốn 44 nh Hình 3.1: Biểu đồ thời gian chạy chương trình số thành phố tăng dần 46 Ki 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 Đ ại họ c DFS 50 SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang v GVHD: TS Nguyễn Đình Hoa Cương Khóa luận tốt nghiệp 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 Bảng 3.2: Kết chạy chương trình số hệ tăng dần 47 Đ ại họ c Ki nh tế H uế 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 GVHD: TS Nguyễn Đình Hoa Cương Khóa luận tốt nghiệp PHẦN I: ĐẶT VẤN ĐỀ Lý chọn đề tài: Bài toán người du lịch (hay 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 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 tốn tảng hay đưa hướng giải mới, sáng tạo Nhưng uế mục đích cuối cùng, sâu xa việc giải tốn thuộc lớp toán H NP-Đầy đủ (NP-Complete) toán người du lịch tiền đề để giải tất tốn lại thuộc lớp toán này, chứng minh lớp độ phức tạp tế thuật toán P = NP, vấn đề lâu gây nhiều tranh cãi lý thuyết độ nh phức tạp tính tốn Thuật tốn di truyền (Genetic Algorithm) hướng mới, sáng tạo Ki việc giải toán người du lịch Nó vận dụng tư tưởng tiến hóa tự c 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ừ họ 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 ại 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 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 tố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 toán di SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang GVHD: TS Nguyễn Đình Hoa Cương Khóa luận tốt nghiệp truyền để giải toá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 tố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 toán - Mục tiêu cụ thể: Nghiên cứu sở lý luận toán người du lịch thuật toán di uế truyền, lịch sử, tư tưởng, bước thực thuật toán H Nghiên cứu cách cài đặt thuật tốn ngơn ngữ lập trình Java cài đặt thuật tốn di truyền tế Tiến hành kiểm thử thuật toán, đánh giá tính hiệu thời gian nh chạy thuật toán Đối tượng phạm vi nghiên cứu: Ki - Đối tượng nghiên cứu: Thuật toán di truyền áp dụng để giải toán c người du lịch họ - 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 ại 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ừ 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 toán SV: Thái Công Danh-K47 Tin Học Kinh Tế Trang GVHD: TS Nguyễn Đình Hoa Cương Khóa luận tốt nghiệp 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 trường hợp giải toán người du lịch Chương 2: Cài đặt thuật toán di truyền để giải tốn người du lịch uế Chương mơ tả cách thức cài đặt thuật toá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 tế 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 nh 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 Đ ại họ c Ki tốn liên quan SV: Thái Cơng Danh-K47 Tin Học Kinh Tế Trang GVHD: TS Nguyễn Đình Hoa Cương Khóa luận tốt nghiệp 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; public class XuLyBaiToan { họ c Ki nh 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