Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
2,09 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN TỰ ĐỘNG -o0o - BÁO CÁO BÀI TẬP NHĨM THUẬT TỐN DI TRUYỀN NHĨM 1 Mai Thiện Quang – 1512640 Nguyễn Trọng Phúc – 1512534 Lương Hữu Phú Lộc – 1511844 Bùi Tấn Phát – 1512396 Phạm Ngọc Khôi Nguyên – 1512221 Đề : Dùng thuật tốn di truyền tìm x є [0; 5] cho hàm số đạt giá trị lớn I Giải thuật di truyền dùng code Pyton: Giải thuật di truyền - Thông số khởi tạo: + Số lượng cá thể quần thể: 20 + Số bit dùng để mã hóa: 10 bit + Tỉ lệ đột biến: 1% - Thực giải thuật: + Giải thích phép di truyền: Chọn lọc: Đầu tiên giữ lại ½ số lượng cá thể tốt có quần thể (10 cá thể) Từ 10 cá thể lựa chọn ngẫu nhiên để có quần thể có 20 cá thể Thuật tốn sau: Tạo số nhiên x có giá trị từ 0.0 đến 1.0 Sử dụng hàm numpy.histogram(x, [0.0, b, c, d, e, …, 1.0] ): x giá trị ngẫu nhiên tạo trên, tham số mảng mảng có 11 (tạo thành 10 khoảng ứng với 10 số) phần tử có giá trị tăng dần từ 0.0 đến 1.0 Chọn phần tử mảng cho khoảng cách liên tiếp phần tử mảng có số thấp có độ lớn lớn phần tử có số cao Hàm numpy.histogram() so sánh giá trị x nằm khoảng để trả mảng có giá trị vị trí khoảng Ví dụ: count=numpy.histogram(0.1, [0.0, 0.21, 0.39, 0.54, 0.67, 0.77, 0.84, 0.91, 0.94, 0.97, 1.0]) trả mảng [1, 0, 0, 0, 0, 0, 0, 0, 0, 0] Sau sử dụng hàm indx=numpy.where(count==1), hàm trả vị trí phần tử có giá trị mảng: indx=0 Lặp bước 20 lần ta có 20 số Sử dụng số để lấy cá thể thuộc 10 cá thể cịn lại, ta có quần thể gồm 20 cá thể Thuật tốn từ quần thể 20 cá thể ban đầu ta chọn 10 cá thể tốt xếp chúng với độ phù hợp giảm dần, cá thể có độ phù hợp lớn số thấp Tham số mảng truyền vào hàm numpy.histogram() có tính chất để tăng xác suất giá trị ngẫu nhiên x rơi vào vùng có số thấp hay nói cách khác cá thể có độ phù hợp lớn tần số xuất quần thể cao Lai ghép: quần thể có 20 cá thể vừa tạo bước trên, ta chọn 10 cặp cá thể để lai ghép tạo 20 cá thể Tạo đột biến với tỉ lệ 1% tổng số gen quần thể ta quần thể + Điều kiện hội tụ: quần thể trải qua 60 hệ có 20 hệ liên tiếp cho độ phù hợp sai lệch nhỏ 0.000005 Đồ thị hàm số f(x) = 4x4 – 5x3 + e-2x – 7sin(x) – 3cos(x) với x є [0; 5] Hàm số đạt giá trị lớn ymax = 1880.8615287661821 x = 5.0 Chương trình thực giải thuật ngôn ngữ Python Tập tin HW1_G1_Code1 tập tin HW1_G1_Code2 đính kèm Kết toán thực theo giải thuật di truyền - Lần 1: Hàm số đạt giá trị lớn ymax = 1880.8615287661821 x = 5.0 Thuật toán hội tụ sau 32 hệ - Lần 2: Hàm số đạt giá trị lớn ymax = 1880.8615287661821 x = 5.0 Thuật toán hội tụ sau 22 hệ - Lần 3: Hàm số đạt giá trị lớn ymax = 1880.8615287661821 x = 5.0 Thuật toán hội tụ sau 25 hệ Nhận xét - huật tốn khác ề số lượng hệ trải ua, nhiều nh n chung ẫn đưa kết uả xác - Đồ thị biểu thị độ phù hợp tốt qua hệ, ta thấ đồ thị ẫn c n tha đổi nhiều chưa ph ng, tu nhiên ề sau th đồ thị có xu hướng ph ng bám dần giá trị max hàm số - V hàm số nà hàm đồng biến nên uả thuật toán max x 5.0, d m nên ta chưa thấ hiệu ì gi trị x ằng th ật t n ng t : iải th ật - h ng số khởi tạo: Vùng khảo sát: [0,5] Hàm số khảo sát: Số lượng cá thể uần thể : 40 Số lượng bit mã hóa: 10 bit 102 số ỉ lệ đột biến: 1% hực thuật toán G : ề giống ới l thu ết học Có số đặc điểm phần làm atlab: Chọn lọc: chọn nửa cá thể tốt bỏ nửa cá thể xấu gh p: bố m chọn ngẫu nhiên từ cá thể ua chọn lọc iêu chu n x t hội tụ: m i hệ, lưu lại giá trị max ính độ lệch chu n 20 giá trị max 20 hệ gần nhất, nhỏ 0.001 m giá trị max hàm số (sự hội tụ giá trị max 20 hệ gần nhất) Code Matlab r ng nh ) - - ết ả h ng: đồ thị thể giá trị max ua m i hệ giá trị trung b nh hàm số ua m i hệ Đồ thị thực hàm số max x=5 ần 1: ần 2: ần 3: - - hận x t: huật tốn khác ề số lượng hệ trải ua, nhiều nh n chung ẫn đưa kết uả xác Đồ thị bên phải biểu thị tness trung b nh, ta thấ đồ thị ẫn c n tha đổi nhiều chưa ph ng, tu nhiên ề sau th đồ thị có xu hướng ph ng bám dần giá trị max hàm số V hàm số nà hàm đồng biến nên max x 5.0, d m nên ta chưa thấ hiệu uả thuật toán h m giá trị lớn hàm Hàm số thực kết uả: max( (x)) khoảng [0,5] x = 2.0 ần 1: max x = 1.999 ần 2: max x = 1.9892 ần 3: hận x t: h n chung thuật toán ẫn m giá trị max hàm số (dù có sai số nhỏ) III ì gi trị - - x ng Toolbox GA Optimization Matlab ưu : oolbox áp dụng cho toán m hàm tness thuật tốn ga o muốn m max hàm (x) ta m hàm –f(x) Đầu ên, toolbox cầu đầu tness unc on, le (.m) a iết le (.m) có chứa hàm tness –f(x) Sử dụng toolbox p mi a on chọn ga, nhập tên le chứa hàm, tù chọn th ng số - Sau thiết lập th ng số, bấm Start trị tness trung b nh ua m i hệ đ ch ng ta uan sát giá trị tness tốt giá Giá trị hàm – (x) -1 hội tụ x = Giá trị max hàm (x) hội tụ x = n - - : hi sử dụng oolbox, có hội tụ ề giá trị tness tốt giá trị tness trung b nh cách làm đáng n cậ code iết phần hóm thử cho hội tụ giá trị tness trung b nh gần kh ng thể hội tụ lại (có thể phần code chưa tối ưu) h n chung kết uả sử dụng code tự iết sử dụng oolbox m giá trị lớn hàm số ua giải thuật di tru ền tương đối xác ...Đề : Dùng thuật tốn di truyền tìm x є [0; 5] cho hàm số đạt giá trị lớn I Giải thuật di truyền dùng code Pyton: Giải thuật di truyền - Thông số khởi tạo: + Số lượng cá... thể: 20 + Số bit dùng để mã hóa: 10 bit + Tỉ lệ đột biến: 1% - Thực giải thuật: + Giải thích phép di truyền: Chọn lọc: Đầu tiên giữ lại ½ số lượng cá thể tốt có quần thể (10 cá thể) Từ 10... ngôn ngữ Python Tập tin HW1_G1_Code1 tập tin HW1_G1_Code2 đính kèm Kết toán thực theo giải thuật di truyền - Lần 1: Hàm số đạt giá trị lớn ymax = 1880.8615287661821 x = 5.0 Thuật toán hội tụ sau