Giải thuật di truyền giải bài toán băng thông đồ thị (Có code)

75 134 0
Giải thuật di truyền giải bài toán băng thông đồ thị (Có code)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Công nghệ thông tin đóng vai trò quan trọng trong sự phát triển của xã hội trong thời đại ngày nay. Công nghệ thông tin đã trở thành nhân tố quan trọng, là cầu nối trao đổi giữa các thành phần của xã hội toàn cầu, của mọi vấn đề. Việc nhanh chóng đưa ứng dụng công nghệ thông tin vào quá trình tự động hóa trong sản xuất kinh doanh là vấn đề đang, đã và sẽ luôn được quan tâm bởi lẽ công nghệ thông tin có vai trò rất lớn trong các hoạt động kinh tế, sản xuất kinh doanh, bán hàng, xúc tiến thương mại, quản trị doanh nghiệp. Lý thuyết đồ thị là một trong những lý thuyết quan trọng được sử dụng nhằm ứng dụng công nghệ thông tin trong giải quyết các vấn đề thực tế. Từ các bài toán phát sinh trong công nghiệp, kĩ thuật, chúng ta sử dụng các cách thức mô hình hóa nhằm đưa về một bài toán tương đương và sử dụng các giải thuật đã có để giải quyết. Bài toán băng thông đồ thị (graph bandwidth) được định nghĩa từ vấn đề thiết kế tự động các mạch điện tử và là một bài toán NPđầy đủ, tức là không có một giải thuật hiệu quả với thời gian đa thức để giải quyết. Giải thuật di truyền là một trong những giải thuật xấp xỉ nổi bật để giải quyết những bài toán NPđầy đủ. Vì tính tương thích này mà em đã lựa chọn đề tài “Giải thuật di truyền giải bài toán băng thông đồ thị” làm đề tài khóa luận tốt nghiệp.

Lời cảm ơn Đầu tiên em xin gửi lời cảm ơn chân thành đến thầy giáo, cô giáo khoa Tốn - Cơng nghệ Trường Đại học Hùng Vương, người dạy dỗ, trang bị cho em kiến thức chuyên môn suốt bốn năm học suốt thời gian thực khóa luận tốt nghiệp Để hồn thành khóa luận tốt nghiệp, đặc biệt em xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo ThS Nguyễn Hùng Cường – giảng viên Trường Đại học Hùng Vương Thầy dành nhiều thời gian quý báu bảo, nhiệt tình giúp đỡ em suốt q trình thực khóa luận tốt nghiệp, đồng thời thầy người giúp em lĩnh hội thêm nhiều kiến thức Em xin gửi lời cảm ơn chân thành sâu sắc tới gia đình, bạn bè người sát cánh bên em, chia sẻ, động viên em suốt trình học tập thời gian em thực khóa luận tốt nghiệp Tuy nhiên với thời gian kinh nghiệm làm việc thân em chưa nhiều nên khóa luận khó tránh khỏi hạn chế Em hi vọng nhận ủng hộ tạo điều kiện giúp đỡ thầy bạn bè để khắc phục tồn mở rộng nghiên cứu thêm đề tài Em xin chân thành cảm ơn! Phú Thọ, tháng năm 2014 Sinh viên Nguyễn Thị Thương Hiền Mục lục Lời cảm ơn Danh sách hình vẽ Danh sách bảng Mở đầu Chương Tổng quan lý thuyết đồ thị 11 1.1 Khái niệm đồ thị 11 1.2 Biểu diễn đồ thị máy tính 14 1.2.1 Ma trận kề 14 1.2.2 Danh sách cạnh 15 1.2.3 Danh sách kề 17 1.3 Sự phân lớp toán 19 1.3.1 Lớp toán P 20 1.3.2 Lớp toán N P 20 1.3.3 Bài tốn N P –khó 21 1.3.4 Bài toán N P -đầy đủ 22 Chương Giải thuật di truyền tiến hóa 24 2.1 Mã hóa chuỗi nhiễm sắc thể 26 2.1.1 Mã hóa theo giá trị 27 2.1.2 Mã hóa hoán vị 27 2.1.3 Mã hóa theo cấu trúc 28 2.2 Hàm thích nghi 28 2.3 Đấu tranh sinh tồn 28 2.4 Thao tác lai ghép 30 2.4.1 Lai ghép theo điểm cắt 30 2.4.2 Lai ghép đồng 32 2.4.3 Cơ chế lựa chọn cá thể cha-mẹ 33 2.5 Thao tác đột biến 35 2.5.1 Đột biến đảo bit 36 2.5.2 Đột biến đổi giá trị 36 2.5.3 Đột biến đảo đoạn 37 2.6 Khởi tạo quần thể 37 2.7 Cách thức nạp lại quần thể 38 2.7.1 Nạp lại sau lai ghép 38 2.7.2 Nạp lại kích thước quần thể lớn 39 Chương Giải tốn băng thơng đồ thị giải thuật di truyền 41 3.1 Bài tốn băng thơng đồ thị 41 3.1.1 Bài toán 41 3.1.2 Phân tích tốn 41 3.1.3 Biểu diễn đồ thị toán 42 3.2 Xây dựng thao tác giải thuật di truyền tốn băng thơng đồ thị 42 3.2.1 Biểu diễn nhiễm sắc thể 42 3.2.2 Hàm thích nghi 43 3.2.3 Đấu tranh sinh tồn 43 3.2.4 Thao tác lai ghép 44 3.2.5 Thao tác đột biến 45 3.2.6 Khởi tạo quần thể 46 3.2.7 Kết chương trình thử nghiệm 46 Chương Các kết cài đặt thử nghiệm 4.1 Giao diện chương trình 53 53 4.2 Dữ liệu thử nghiệm 54 4.3 Môi trường thử nghiệm 55 4.4 Tiến hành cài đặt thử nghiệm 55 4.4.1 Thử nghiệm với liệu 55 4.4.2 Thử nghiệm thay đổi tham số giải thuật di truyền 56 Kết luận 65 Tài liệu tham khảo 66 Tài liệu tham khảo 66 Phụ lục 67 Danh sách hình vẽ 1.1 Đồ thị vô hướng 12 1.2 Đồ thị có hướng 13 1.3 Biểu diễn đồ thị ma trận kề 15 1.4 Đồ thị biểu diễn danh sách cạnh 16 1.5 Biểu diễn danh sách cạnh mảng 16 1.6 Biểu diễn danh sách móc nối 16 1.7 Đồ thị biểu diễn danh sách kề 17 1.8 Biểu diễn danh sách kề đồ thị 18 1.9 Biểu diễn danh sách móc nối đồ thị 19 2.1 Sơ đồ giải thuật di truyền 26 2.2 Phương pháp lai ghép theo điểm cắt 31 2.3 Phương pháp lai ghép đồng 32 2.4 Phương pháp đột biến đảo bít 36 2.5 Phương pháp đột biến đảo giá trị 36 2.6 Phương pháp đột biến đảo đoạn 37 4.1 Giao diện chương trình 53 4.2 Kết liệu test5 dùng giải thuật di truyền 57 4.3 Sơ đồ thể giá trị băng thông thay đổi xác suất lai 58 4.4 Sơ đồ thể thời gian chạy thay đổi xác suất lai 58 4.5 Sơ đồ giá trị băng thông thay đổi xác suất đột biến 59 4.6 Sơ đồ thời gian chạy thay đổi xác suất đột biến 60 4.7 Sơ đồ giá trị băng thông thay đổi số lượng quần thể 61 4.8 Sơ đồ thời gian chạy thay đổi số lượng quần thể 62 4.9 Sơ đồ giá trị băng thông thay đổi số hệ 63 4.10Sơ đồ thời gian chạy thay đổi số hệ 64 Danh sách bảng 4.1 So sánh giải thuật đệ quy giải thuật di truyền 56 4.2 Kết test5 thay đổi xác suất lai 57 4.3 Kết thu thay đổi xác suất đột biến 59 4.4 Kết thu thay đổi độ lớn quần thể 61 4.5 Kết thu thay đổi số hệ 63 Mở đầu Lý chọn đề tài khóa luận Cơng nghệ thơng tin đóng vai trò quan trọng phát triển xã hội thời đại ngày Công nghệ thông tin trở thành nhân tố quan trọng, cầu nối trao đổi thành phần xã hội toàn cầu, vấn đề Việc nhanh chóng đưa ứng dụng cơng nghệ thơng tin vào q trình tự động hóa sản xuất kinh doanh vấn đề đang, quan tâm lẽ công nghệ thơng tin có vai trò lớn hoạt động kinh tế, sản xuất kinh doanh, bán hàng, xúc tiến thương mại, quản trị doanh nghiệp Lý thuyết đồ thị lý thuyết quan trọng sử dụng nhằm ứng dụng công nghệ thông tin giải vấn đề thực tế Từ tốn phát sinh cơng nghiệp, kĩ thuật, sử dụng cách thức mơ hình hóa nhằm đưa toán tương đương sử dụng giải thuật có để giải Bài tốn băng thông đồ thị (graph bandwidth) định nghĩa từ vấn đề thiết kế tự động mạch điện tử tốn NP-đầy đủ, tức khơng có giải thuật hiệu với thời gian đa thức để giải Giải thuật di truyền giải thuật xấp xỉ bật để giải tốn NP-đầy đủ Vì tính tương thích mà em lựa chọn đề tài “Giải thuật di truyền giải tốn băng thơng đồ thị” làm đề tài khóa luận tốt nghiệp Mục tiêu khóa luận - Cài đặt giải thuật di truyền giải toán băng thông đồ thị Đưa kết gần tối ưu tốn băng thơng đồ thị với thời gian chạy đa thức - Nghiên cứu ảnh hưởng kĩ thuật tác động lên giải thuật di truyền nhằm cải thiện hiệu chạy Nhiệm vụ nghiên cứu - Tìm hiểu tốn băng thơng đồ thị - Tìm hiểu giải thuật di truyền - Cài đặt trực tiếp giải thuật di truyền giải tốn băng thơng đồ thị Phương pháp nghiên cứu - Phương pháp nghiên cứu tự luận: Đọc nghiên cứu tài liệu, giáo trình có liên quan đến tốn băng thơng đồ thị giải thuật di truyền - Phương pháp nghiên cứu thực nghiệm: Từ ý tưởng ban đầu, triển khai thực ý tưởng cách có hệ thống - Phương pháp tổng kết kinh nghiệm: Qua việc nghiên tham khảo tài liệu, giáo trình từ rút kinh nghiệm để áp dụng vào việc nghiên cứu - Phương pháp lấy ý kiến chuyên gia: Lấy ý kiến giảng viên trực tiếp hướng dẫn, giảng viên khác để hoàn thiện mặt nội dung hình thức khóa luận Đối tượng phạm vi nghiên cứu - Đối tượng: tốn băng thơng đồ thị, giải thuật di truyền, ngơn ngữ lập trình C , Windows forms - Phạm vi: tốn băng thơng đồ thị, giải thuật di truyền Ý nghĩa khoa học Đưa giải thuật để giải tốn băng thơng đồ thị với thời gian chạy đa thức kết xấp xỉ Bố cục khóa luận Khóa luận chia thành bốn chương: Chương 1: Nhắc lại khái niệm đồ thị, cách biểu diễn đồ thị máy tính phân lớp toán Chương 2: Giới thiệu giải thuật di truyền tiến hóa Chương 3: Đưa phương pháp giải tốn băng thơng đồ thị giải thuật di truyền Chương 4: Các kết cài đặt thử nghiệm 10 + Thay đổi số lượng quần thể, giữ nguyên giá trị xác suất lai 0.25, xác suất đột biến 0.10, số hệ 1000 Ta thu kết quả: Bảng 4.4: Kết thu thay đổi độ lớn quần thể Hình 4.7: Sơ đồ giá trị băng thông thay đổi số lượng quần thể 61 Hình 4.8: Sơ đồ thời gian chạy thay đổi số lượng quần thể Ta thấy với số lượng quần thể lớn thời gian chạy lớn giá trị băng thông đạt nhỏ (tức tiến gần đến kết tối ưu) 62 + Thay đổi số hệ, giữ nguyên giá trị xác suất lai 0.25, xác suất đột biến 0.10, số lượng quần thể 400 Ta thu kết quả: Bảng 4.5: Kết thu thay đổi số hệ Hình 4.9: Sơ đồ giá trị băng thơng thay đổi số hệ 63 Hình 4.10: Sơ đồ thời gian chạy thay đổi số hệ Ta thấy số hệ lớn thời gian chạy lớn giá trị băng thông đạt nhỏ (tức tiến gần đến kết tối ưu) 64 Kết luận Nội dung khóa luận nghiên cứu giải thuận di truyền tiến hóa để áp dụng giải tốn băng thơng đồ thị Trong tồn khóa luận, em khảo sát vấn đề lí thuyết sau: - Tìm hiểu tốn băng thơng đồ thị - Tìm hiểu giải thuật di truyền tiến hóa - Áp dụng giải thuật di truyền tiến hóa giải tốn băng thơng đồ thị Em cài đặt thành cơng chương trình giải tốn băng thơng đồ thị ngơn ngữ C Windows Forms Chương trình mơ tả đồ thị hình ảnh trực quan dễ nhìn, dễ sử dụng Có thể tạo đồ thị ngẫu nhiên với số đỉnh số cạnh tùy ý nhỏ 1000 đồ thị đọc vào từ tệp Chương trình chạy giải thuật đệ quy giải thuật di truyền Kết hiển thị lên hình giá trị băng thơng thời gian chạy thể giá trị nhãn đỉnh đồ thị Từ người sử dụng dễ dàng so sánh khác hai giải thuật đệ quy giải thuật di truyền Tuy nhiên, đề tài khó tránh khỏi hạn chế khó xác định tham số cho phù hợp với liệu, phải thử kiểm tra với nhiều tham số khác cho kết mong muốn Do đó, em mong ủng hộ góp ý nhiệt tình từ thầy giáo, giáo bạn bè để đề tài mở rộng phát triển tốt 65 Tài liệu tham khảo [1] Lê Minh Hồng Giải thuật lập trình, Đại học sư phạm Hà Nội, (1999-2005) [2] Phạm Cơng Ngơ Lập trình C từ đến nâng cao, Nhà xuất Lao động-Xã hội [3] Nguyễn Đức Nghĩa Tối ưu hóa: quy hoạch tuyến tính rời rạc, Nhà xuất giáo dục, (1999) [4] TS Nguyễn Đình Thúc Lập trình tiến hóa, Nhà xuất giáo dục [5] http://en.wikipedia.org/wiki/Graph_bandwidth 66 Phụ lục Cài đặt hàm thủ tục giải thuật di truyền để giải tốn băng thơng đồ thị: + Thủ tục khởi tạo quần thể private void KhoiTaoQuanThe() { Random rd = new Random(); bool [] DanhDau = new bool[MaxN]; int k; GiaTriBangThong = MaxN + 1; for (int i = 1; i

Ngày đăng: 26/02/2019, 13:28

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan