BÀI tập lớn TRÍ TUỆ NHÂN tạo GIẢI THUẬT DI TRUYỀN

18 1.8K 2
BÀI tập lớn TRÍ TUỆ NHÂN tạo   GIẢI THUẬT DI TRUYỀN

Đ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

TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN VIỆN CÔNG NGHỆ THÔNG TIN KINH TẾ ~~~~~~*~~~~~~ BÀI TẬP LỚN TRÍ TUỆ NHÂN TẠO Đề tài: Tìm hiểu giải thuật di truyền Giảng viên hướng dẫn: ThS Lưu Minh Tuấn Sinh viên thực hiện: Đồng Văn Thịnh Lớp :CNTT49A Hà Nội,12/2010 MỤC LỤC MỤC LỤC .2 LỜI NÓI ĐẦU PHẦN I: THUẬT TOÁN DI TRUYỀN I.Giới thiệu: II Nội dung 2.1 Cơ sở lý thuyết 2.2 Cấu trúc thuật toán di truyền tổng quát .7 2.3 Các công thức thuật giải di truyền PHẦN II: ỨNG DỤNG 10 I.Ứng dụng 10 II.Chương trình 11 PHẦN III: KẾT LUẬN 16 I.Ưu điểm 17 II Khuyết điểm 17 III Ý kiến thân 17 LỜI NÓI ĐẦU Trong ngành khoa học máy tính, tìm kiếm lời giải tối ưu cho toán vấn đề nhà khoa học máy tính đặc biệt quan tâm Mục đích thuật toán tìm kiếm lời giải tìm lời giải tối ưu cho toán thời gian nhỏ Các thuật toán tìm kiếm thông tin / vét cạn ( tìm kiếm danh sách, đồ thị ) sử dụng phương pháp đơn giản trực quan thuật toán tìm kiếm có thông tin sử dụng heurictics để áp dụng tri thức cấu trúc không gian tìm kiếm nhằm giảm thời gian cần thiết cho việc tìm kiếm sử dụng nhiều với không gian tìm kiếm nhỏ không hiệu tìm kiếm không gian tìm kiếm lớn Tuy nhiên, thực tiễn có nhiều toán tối ưu với không gian tìm kiếm lớn cần phải giải Vì vậy, việc đòi hỏi thuật giải chất lượng cao sử dụng kỹ thuật trí tuệ nhân tạo đặc biệt cần thiết giải toán có không gian tìm kiếm lớn Thuật giải di truyền (genetic algorithm) kỹ thuật tìm kiếm lời giải tối ưu đáp ứng yêu cầu nhiều toán ứng dụng Hiện nay, thuật toán di truyền với logic mờ ứng dụng rộng rãi lĩnh vực phức tạp Thuật toán di truyền kết hợp với logic mờ chứng tỏ hiệu vấn đề khó giải phương pháp thông thường hay phương pháp cổ điển, toán cần có lượng giá, đánh giá tối ưu kết thu Chính vậy, thuật giải di truyền trở thành đề tài nghiên cứu thú vị đem đến nhiều ứng dụng thực tiễn Ngày nay, GA ứng dụng nhiều lĩnh vực khoa học, kinh doanh giải trí Đầu tiên phải kể đến toán tối ưu bao gồm tối ưu số tối ưu tổ hợp sử dụng GA để tìm lời giải toán người du lịch (Travelling Salesman Problems - TSP) Ứng dụng GA thiết kế điều kiển robo Hầu có ngành CNTT phát triển quan tâm đến lĩnh vực thiết kế robo nhằm giúp người tiết kiệm sức lao động giải phóng người thoát khỏi công việc nguy hiểm, đặc biệt thi “Robocon” Châu Á_ Thái Bình Dương nước khu vực quan tâm Ngoài phần cơ, để robo tiến hành hoạt động đơn giản đi, đứng… robo cần phải trang bị chương trình lập trình dựa thuật toán ngôn ngữ thích hợp Nhờ vào lịch trình cài đặt với trí tuệ nhân tạo…, robo định hướng thực hoạt động người Tuy nhiên, việc tìm kiếm lời giải tốt cho hành động robo đơn giản Theo nhà khoa học máy tính, thuật giải di truyền thuật toán tối ưu giúp robo vạch lộ trình di chuyển Với lý trên, em chọn đề tài: “Thuật giải di truyền ứng dụng” PHẦN I: THUẬT TOÁN DI TRUYỀN I.Giới thiệu: Thuật toán di truyền thuật toán tối ưu ngẫu nhiên dựa chế chọn lọc tự nhiên tiến hóa di truyền Nguyên lý thuật toán di truyền Holland giới thiệu vào năm 1962 Cơ sở toán học phát triển từ cuối năm 1960 giới thiệu sách Holland, Adaptive in Natural and Artificial Systems Thuật toán di truyền ứng dụng hai lĩnh vực chính: tối ưu hóa học tập máy Trong lĩnh vực tối ưu hóa thuật toán di truyền phát triển nhanh chóng ứng dụng nhiều lĩnh vực khác tối ưu hàm, xử lý ảnh, toán hành trình người bán hàng, nhận dạng hệ thống điều khiển Thuật toán di truyền thuật toán tiến hóa nói chung, hình thành dựa quan niệm cho rằng, trình tiến hóa tự nhiên trình hoàn hảo nhất, hợp lý tự mang tính tối ưu Quan niệm xem tiên dề dúng, không chứng minh được, phù hợp với thực tế khách quan Quá trình tiến hóa thể tính tối ưu chỗ, hệ sau tốt (phát triển hơn, hoàn thiện hơn) hệ trước tính kế thừa dấu tranh sinh tồn II Nội dung 2.1 Cơ sở lý thuyết Thuật toán di truyền gồm có bốn quy luật lai ghép, đột biến, sinh sản chọn lọc tự nhiên sau: 2.1.1 Quá trình lai ghép (phép lai) Quá trình diễn cách ghép hay nhiều đoạn gen từ hai nhiễm sắc thể cha-mẹ để hình thành nhiễm sắc thể mang đặc tính cha lẫn mẹ Phép lai mô tả sau: Chọn ngẫu nhiên hai hay nhiều cá thể quần thể Giả sử chuỗi nhiễm sắc thể cha mẹ có chiều dài m Tìm điểm lai cách tạo ngẫu nhiên số từ đến m-1 Như vậy, điểm lai chia hai chuỗi nhiễm sắc thể cha-mẹ thành hai nhóm nhiễm sắc thể m1 m2 Hai chuỗi nhiễm sắc thể lúc m11+m22 m21+m12 Đưa hai chuỗi nhiễm sắc thể vào quần thể để tiếp tục tham gia trình tiến hóa 2.1.2 Quá trình đột biến (phép đột biến): Quá trình tiến hóa gọi trình đột biến tính trạng không thừa hưởng từ hai chuỗi nhiễm sắc thể cha-mẹ Phép đột biến xảy với xác suất thấp nhiều lần so với xác suất xảy phép lai Phép đột biến mô tả sau: Chọn ngẫu nhiên số k từ khoảng ≥ k ≥ m Thay đổi giá trị gen thứ k Đưa nhiễm sắc thể vào quần thể để tham gia trình tiến hóa 2.1.3 Quá trình sinh sản chọn lọc (phép tái sinh phép chọn) Phép tái sinh: trình cá thể chép dựa độ thích nghi Độ thích nghi hàm gán giá trị thực cho cá thể quần thể Phép tái sinh mô sau: Tính độ thích nghi cá thể quần thể, lập bảng cộng dồn giá trị thích nghi (theo thứ tự gán cho cá thể) ta tổng độ thích nghi Giả sử quần thể có n cá thể Gọi độ thích nghi cá thể thứ i Fi, tổng dồn thứ i Ft.Tổng độ thích nghi Fm Tạo số ngẫu nhiên F có giá trị đoạn từ đến Fm Chọn cá thể k thỏa mãn F ≥ Ft đưa vào quần thể hệ Phép chọn: trình loại bỏ cá thể xấu để lại cá thể tốt Phép chọn mô tả sau: Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần Loại bỏ cá thể cuối dãy, để lại n cá thể tốt 2.2 Cấu trúc thuật toán di truyền tổng quát Thuật Bước toán di truyền 1: Khởi bao gồm tạo bước quần thể sau: nhiễm sắc thể Bước 2: Xác định giá trị thích nghi nhiễm sắc thể Bước 3: Sao chép lại nhiễm sắc thể dựa vào giá trị thích nghi chúng tạo nhiễm sắc thể phép toán di truyền Bước 4: Loại bỏ thành viên không thích nghi quần thể Bước 5: Chèn nhiễm sắc thể vào quần thể để hình thành quần thể Bước 6: Nếu mục tiêu tìm kiếm đạt dừng lại, không trở lại bước Sơ đồ thuật toán: Bắt đầu Khởi tạo quần thể Mã hóa biến Đánh giá độ thích nghi Chọn lọc Lai ghép Đột biến Thỏa điều kiện dừng Thỏa Không Kết Kết thúc 2.3 Các công thức thuật giải di truyền Tính độ thích nghi eval(vi)của nhiễm sắc thể vi(i =1 kích thước quần thể): f (vi ) eval (vi ) = kichthuocq uanthe ∑f (vi Với f(vi) hàm mục tiêu i= Tìm tổng giá trị thích nghi quần thể: F = kichthuocq uanthe eval ∑ (vi ) i= Tính xác suất chọn pi cho nhiễm sắc thể vi: eval (vi ) pi = kichthuocq uanthe eval ∑ (vi ) i= Tính xác suất tích lũy qi cho nhiễm sắc thể: i qi = ∑ pi j =1 Tiến trình chọn lọc thực cách quay bánh xe rulet kích thước quần thể lần Mỗi lần chọn nhiễm sắc thể từ quần thể hành vào quần thể theo cách sau: Phát sinh số ngẫu nhiên r khoảng [0, 1] Nếu r < q1thì chọn nhiễm sắc thể v1, ngược lại chọn nhiễm sắc thể vi (2 ≤ i ≤ kích thước quần thể) cho qi-1 < r ≤ qi PHẦN II: ỨNG DỤNG I.Ứng dụng Tìm đáp số cho phương trình X2 = 64 Đây toán đơn giản để giúp ta hiểu rõ bước thuật toán di truyền Giải toán di truyền theo bước sau: Bước 1: Chúng ta sử dụng hệ nhị phân để xây dựng mô hình toán.Ta dùng bit nhị phân để mã hóa cho đáp số toán.Gỉa sử ta đáp số toán, ta chọn số đáp số có ký hiệu cho đáp số Bảng chọn lựa: Thứ tự Nhị phân Thập phân 0100 0101 21 1010 10 1000 24 Bước 2: Tìm hàm số thích nghi tính hệ số thích nghi cho đáp số.Ta chọn hàm số thích nghi sau: f(X) = 1000 – (X2 – 64) Vậy, đáp số có hệ số thích nghi f gần 1000 đáp số Khảo sát kết tính được: Thứ tự Nhị phân Thập phân 1 (X) 21 10 24 0100 0101 1010 1000 X2 - 64 Hệ số thích - 48 377 36 512 nghi f(x) 952 623 964 488 10 Bước 3:Ta thấy, hệ số thích nghi đáp số cách xa 1000.Do đó, cần tạo đáp số cách biến hóa đáp số cũ Ta thấy, số 10 có hệ số thích nghi cao nên chọn để tạo sinh biến hóa.Đồng thời số 21 24 có hệ số thích nghi thấp bị loại Gỉa sử ta lai ghép hai số 10 theo hình sau : Bước 4:Tính hệ số thích nghi cho quần thể Thứ tự Nhị phân Thập phân X2 - 64 Hệ số thích (X) nghi f(x) 0100 - 48 952 1010 10 36 964 1000 1000 0110 28 968 Bước 5:May mắn tìm kết X = với hệ số thích nghi cao 1000 Vậy kết toán X = II.Chương trình _ Khai báo: #include "stdio.h" #include"conio.h" #include "stdlib.h" #include "math.h" int CT[10]; int n=4; int GTTN[10]; int kq; 11 int Max1,Max2; int Max1moi=0,Max2moi=0; int A[5],B[5]; _ Các đoạn code: + Code khởi tạo quần thể: void Taoquanthe(int n) { for(int i=0;i

Ngày đăng: 10/07/2016, 22:30

Từ khóa liên quan

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

Tài liệu liên quan