1. Trang chủ
  2. » Công Nghệ Thông Tin

nghiên cứu giải thuật ga và giải bài toán chiếc balo loại 2

15 916 46

Đ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

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 226,58 KB

Nội dung

Thuật giải di truyền - Genetic Algorithm là một trong những thuật giải tìm kiếm lời giải tối ưu đã đáp ứng được yêu cầu của nhiều bài toán và ứng dụng.. Hiện nay, thuật toán di truyền đư

Trang 1

HỌC VIỆN KỸ THUẬT QUÂN SỰ

KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN MÔN HỌC

TRÍ TUỆ NHÂN TẠO

Đề Tài

Nghiên Cứu Giải Thuật GA

Giải Bài Toán Chiếc Balô Loại 2

GIẢNG VIÊN BỘ MÔN:

HỌC VIÊN THỰC HIỆN:

TP HCM, THÁNG 08 NĂM 2012

Trang 2

NHẬN XÉT

CỦA GIẢNG VIÊN BỘ MÔN

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

-

Trang 3

LỜI CẢM ƠN

Trước hết, cho em gửi lời cảm ơn chân thành nhất đến

TS NGÔ HỮU PHÚC - Giảng viên Bộ môn Khoa Học Máy Tính Người đã giảng dạy và truyền đạt chúng em kiến thức về môn học đồng thời là người hướng dẫn và định hướng cho em trong quá trình hoàn thiện Bài tập này

Em đã cố gắng thật nhiều để hoàn thành Bài tập Tuy nhiên, kết quả tìm hiểu chưa hoàn thiện còn nhiều thiếu sót Rất mong Thầy xem xét và đóng góp ý kiến để kết quả tìm hiểu được hoàn thiện hơn./

Học Viên Thực Hiện Giảng Thanh Trọn

Trang 4

NỘI DUNG TÌM HIỂU

Nội dung nghiên cứu của Bài Tập bao gồm những thành phần sau:

1 Giới Thiệu Bài Toán Chiếc Ba Lô Loại 2

2 Tìm Hiểu Giải Thuật GA

3 Ứng Dụng Giải Thuật GA Vào Giải Bài Toán Chiếc BaLô Loại 2

4 Cài Đặt Ứng Dụng

Trang 5

1 Mô Tả Bài Toán Chiếc Ba Lô Loại 2

Bài toán xếp ba lô hay cũng được gọi là bài toán cái túi, là một bài toán tối ưu hóa tổ hợp Bài toán được đặt tên từ vấn đề chọn những gì quan trọng

có thể nhét vừa trong một cái túi với giới hạn khối lượng để mang theo trong một chuyến đi

Giả sử Nội dung bài toán được phát biểu dựa theo hành động của một kẻ

trộm: Một kẻ trộm đột nhập vào một cửa hiệu tìm thấy có n mặt hàng có trọng

lượng và giá trị khác nhau, nhưng hắn chỉ mang theo một cái túi có sức chứa về

trọng lượng tối đa là M Vậy kẻ trộm nên bỏ vào ba lô những món nào và số

lượng bao nhiêu để đạt giá trị cao nhất trong khả năng giới hạn của cái túi mà hắn có thể mang đi được

Dạng bài toán quyết định của bài toán xếp ba lô là câu hỏi "có thể đạt được một giá trị nhiều nhất là bao nhiêu theo phát biểu của bài toán"

Ta có n loại đồ vật, x1 tới xn Mỗi đồ vật xj có một giá trị pj và một khối lượng wj Khối lượng tối đa mà ta có thể mang trong ba lô là C Mỗi vật có thể

được chọn hoặc không được chọn

(Ảnh minh họa)

Trang 6

Thực tiễn có rất nhiều bài toán tối ưu với không gian tìm kiếm rất lớn cần phải giải quyết Vì vậy, việc đòi hỏi tìm ra một thuật giải tốt và vận dụng trí tuệ nhân tạo vào giải quyết bài toán là rất cần thiết đặc biệt với những bài toán có không gian tìm kiếm lớn Thuật giải di truyền - Genetic Algorithm là một trong những thuật giải tìm kiếm lời giải tối ưu đã đáp ứng được yêu cầu của nhiều bài toán và ứng dụng Hiện nay, thuật toán di truyền được ứng dụng rất rộng rãi trong các lĩnh vực phức tạp, nó chứng tỏ được hiệu quả trong các vấn đề khó có thể giải quyết bằng các phương pháp thông thường hay các phương pháp cổ điển, nhất là trong các bài toán cần có sự lượng giá, đánh giá sự tối ưu của kết quả thu được Chính vì vậy, thuật giải di truyền đã trở thành đề tài nghiên cứu thú vị và đem đến nhiều ứng dụng trong thực tế

Trong khuôn khổ của đề tài này, em xin trình bày nội dung của giải thuật di truyền - Genetic Algorithm và ứng dụng của nó trong việc giải quyết bài toán Chiếc ba lô loại 2 với phương pháp lựa chọn

2 Tìm Hiểu Giải thuật Di Truyền Genetic Algorithm - GA

2.1 Khái quát về giải thuật Di Truyền

Lịch sử ra đời của giải thuật di truyền

Trước tiên, ý niệm về giải thuật di truyền đã được một số nhà sinh vật học đưa ra từ những năm 50-60, thế kỉ XX A.S Fraser là người tiên phong nêu lên sự tương đồng giữa sự tiến hóa của sinh vật và chương trình tin học giả tưởng về Genetic Algorithms – viết tắc là GA

Tuy nhiên, chính John Henry Holland mới là người triển khai ý tưởng

và phương pháp giải quyết vấn đề dựa theo sự tiến hóa Từ những bài giảng, bài báo của mình, ông đã đúc kết các ý tưởng vào trong cuốn sách đầu tay Adaptation in Natural and Artificial Systems, xuất bản năm 1975 Dựa trên lý thuyết cơ bản về GA của Holand, Keneth De Jong

đã triển khai và chứng minh những thành quả do ông thực hiện đã góp phần quan trọng trong việc tạo ra nền tảng toán học cho lý thuyết GA

Trang 7

Lần đầu tiên Holand nghiên cứu các giải thuật này, chúng hoàn toàn không có tên Do nguồn gốc của phương pháp này là từ các gen di truyền, Holand đã đặt tên cho nó là thuật giải di truyền

Các đặc điểm, đặc trưng của giải thuật di truyền

Giải thuật di truyền đã mô phỏng sự chọn lọc tự nhiên và di truyền Trong tự nhiên, các cá thể khỏe, có khả năng thích nghi với môi trường tốt

sẽ được tồn tại và phát triển ở các thế hệ sau Mỗi cá thể có cấu trúc gen đặc trưng cho tính chất của cá thể đó

Trong quá trình sinh sản, các cá thể con có thể thừa hưởng các phẩm chất của cha mẹ, cấu trúc gen của nó mang một phần cấu trúc gen của cha mẹ Ngoài ra, trong quá trình tiến hóa, có thể xảy ra hiện tượng đột biến, cấu trúc gen của cá thể con có thể chứa các gen mà cả cha mẹ đều không có

Trong giải thuật di truyền, mỗi cá thể được mã hóa bởi một cấu trúc

dữ liệu mô tả cấu trúc gen của cá thể đó, ta gọi nó là nhiễm sắc thể Mỗi nhiễm sắc thể được tạo thành từ các đơn vị được gọi là gen

Giải thuật di truyền sẽ làm việc trên các quần thể gồm nhiều cá thể Một quần thể ứng với một giai đoạn phát triển gọi là một thế hệ

Từ một thế hệ được tạo ra, giải thuật di truyền bắt chước sự chọn lọc

tự nhiên và di truyền để biến đổi các thế hệ

Các thành phần của giải thuật di truyền

1 Khởi tạo quần thể - Initializetion

Là quá trình tạo quần thể đầu tiên trong giải thuật, là nơi xuất phát quá trình tiến hóa, bao gồm tất cả các giá trị thô ban đầu Tùy theo vấn đề của bài toán mà có cách khởi tạo khác nhau

Quá trình được thực hiện bằng cách tạo ngẫu nhiên một số cá thể chấp nhận được để được một quần thể phù hợp với kích thước quần thể được quy định sẵn

Trang 8

2 Hàm thích nghi - Fitness Function

Gán giá trị thích nghi cho mỗi cá thể Giá trị thích nghi càng sát với thực tế thì độ chính xác sẽ càng cao

3 Lựa chọn để kết hợp lại - Selection For Recombine

Có nhiều phương pháp để chọn các nhiễm sắc thể tốt nhất, như: chọn lọc roulette wheel, chọn lọc xếp hàng, chọn lọc cạnh tranh:

Roulette wheel selection

Các cá thể cha mẹ được chọn theo độ thích nghi của chúng Nhiễm sắc thể tốt hơn có cơ hội cao hơn để tham dự vào thế hệ tiếp theo

Thuật giải chọn lọc roulette của Davis, như sau:

Tính tổng giá trị thích nghi của tất cả thành viên quần thể và gọi nó là tổng thích nghi - total fitness

Phát sinh một số n là số ngẫu nhiên trong khoảng từ 0 đến tổng thích nghi

Trả lại thành viên quần thể đầu tiên mà độ thích nghi của nó cộng với độ thích nghi của các thành viên quần thể trước đó lớn hơn hay bằng n…

Tournament selection

Chọn lọc cạnh tranh 2 – 2 - tournament selection

Hai nhiễm sắc thể khác nhau được chọn ngẫu nhiên và được

so sánh với nhiễm sắc thể tồn tại Nếu nhiễm sắc thể I1 không tốt hơn nhiễm sắc thể I2 nghĩa là: f(I1) ≤ f(I2), thì nhiễm sắc thể I1 chết đi và bị loại ra khỏi quần thể Quá trình này lặp lại đến hết N nhiễm sắc thể còn lại

Chọn lọc cạnh tranh 3 - 3-tournament selection

Trang 9

Giống như trên, ba nhiễm sắc thể khác nhau được chọn ngẫu nhiên và được so sánh Nếu chúng ta có f(I1) ≤ f(I2) và f(I1) ≤ f(I3), thì nhiễm sắc thể I1 chết đi và bị loại ra khỏi quần thể Quá trình này lặp lại đến hết N nhiễm sắc thể còn lại

Rank selection

Phương pháp này sẽ sắp hạng cá thể dựa trên độ thích nghi của chúng Cá thể xấu nhất sẽ có giá trị 1, kế tiếp là 2, v.v…và

cá thể tốt nhất sẽ có độ thích nghi N - N là số nhiễm sắc thể trong quần thể

Ngoài ra còn có những phương pháp lựa chọn khác như: Boltzman selection, Steady state selection, Elitism

4 Mã hóa

Mã hóa chuỗi Gene của mỗi cá thể thành dạng thích hợp có thể

sử dụng mã hóa nhị phân, mã hóa giá trị, mã hóa hoán vị

5 Lai ghép

Sau khi chọn được các cặp Nhiễm sắc thể dùng để lai, ta tiến hành cắt ghép để tạo được các nhiễm sắc thể mới - con mới

Có nhiều hình thức lai ghép: Lai 1 điểm, lai nhiều điểm, lai bằng các phép toán nhị phân, …

6 Đột biến

Sau khi lai ghép, để tạo sự đa dạng quần thể, ta làm phép đột biến đối với một vài cá thể Trên chuỗi Gene, tại 1 vài vị trí, làm thay đổi giá trị của 1 đoạn gene nào đó

7 Đánh giá cá thể

Khi đã có quần thể mới, ta tiến hành kiểm tra đánh giá xem

cá thể nào tốt nhất, cá thể nào tồi Loại bỏ bớt những cá thể tồi để lặp lại các bước trên đó Chắc chắn rằng việc chọn cá thể sẽ thông qua kết quả, hay mục đích của vấn đề Các cá thể tốt được chọn lọc để

Trang 10

đưa vào thế hệ sau Sự lựa chọn này được thực hiện dựa vào độ thích nghi với môi trường của mỗi cá thể

8 Tiêu chuẩn kết thúc

Không có quá trình nào là không thể kết thúc Quá trình tiến hóa

có thể dừng lại sau một khoảng tgian được quy định - một số thế hệ hoặc sau khi đã hội tụ - không thể tìm thêm được cá thể tốt hơn

Thoát khỏi quá trình tiến hóa quần thể, dựa vào bài toán

mà có các cách kết thúc vấn đề khác nhau một khi đạt đến mức yêu cầu Một vài trường hợp thông thường như sau:

 Kết thúc theo kết quả: một khi đạt đến mức giá trị yêu cầu thì chấm dứt ngay quá trình thực hiện

 Kết thúc dựa vào số thế hệ: chọn số thế hệ, quá trình sẽ dừng đúng ngay số thế hệ đã qui định trước, không cần biết kết quả như thế nào

 Tính theo thời gian: không cần biết đã bao nhiêu thế hệ hay kết quả nào, chỉ dựa vào số giờ qui định mà kết thúc

 Tổ hợp: dùng nhiều phương án khác nhau cho vấn đề, chẳng hạn như: chạy theo số thế hệ xong sau đó đánh giá cho chạy theo kết quả, hoặc ngược lại

9 Các Toán Tử Trong giải thuật di truyền

Toán tử lai ghép:

Toán tử lai ghép có trật tự bao gồm các bước sau:

1 Chọn ngẫu nhiên một chuỗi con từ một cá thể cha mẹ - parent

2 Đưa ra một proto_child bằng cách sao chép chuỗi con vào những vị trí tương ứng như trong cá thể cha mẹ

3 Xoá tất cả các ký hiệu từ cá thể cha mẹ thứ hai, lúc này đã có trong chuỗi con Chuỗi còn lại chứa các ký hiệu mà proto_child cần

Trang 11

4 Đặt các ký hiệu vào những vị trí không cố định của proto-child

từ trái sang phải theo trật tự của chuỗi để tạo ra cá thể con

Ví dụ:

Cá thể cha: 9 3 | 8 5 7 1 | 6 4 2

Cá thể con: 3 5 | 2 6 1 4 | 8 7 9 Phân đoạn giữa để cắt các điểm được sao chép vào cá thể con Proto-child 1: x x | 8 5 7 1| x x x

Proto-child 1: x x | 2 6 1 4| x x x Chuỗi bắt đầu từ điểm cắt thứ hai của cá thể cha mẹ thứ hai:

8-7-9-3-5-2-6-1-4 Chuỗi sau khi loại bỏ các phần tử 8, 5, 7 và 1, cũng ở trong

cá thể con đầu tiên là: 9-3-2-6-4 Cuối cùng, chuỗi này được đặt vào proto-child 1 đầu tiên để tạo ra cá thể con - bắt đầu từ điểm cắt thứ hai

Cá thể con thứ nhất: 6 4 | 8 5 7 1 | 9 3 2

Cá thể con thứ hai: 5 7 | 2 6 1 4 |9 3 8

Toán tử đột biến:

Đột biến đảo ngược - Inversion Mutation

Chọn hai vị trí ngẫu nhiên trong một nhiễm sắc thể và sau

đó, nghịch đảo chuỗi giữa hai vị trí này

Ví dụ:

Nhiễm sắc thể : 9 3 8 5 7 1 6 4 2 Sau khi đột biến : 9 3 1 7 5 8 6 4 2

Đột biến chèn - Insertion Mutation

Trang 12

Chọn ngẫu nhiên một gen và sau đó chèn nó vào vị trí ngẫu nhiên

Ví dụ:

Nhiễm sắc thể : 9 3 8 5 7 1 6 4 2 Sau đột biến: 9 3 5 7 8 1 6 4 2

Đột biến thay thế - Displacement Mutation

Chọn ngẫu nhiên một chuỗi con và chèn nó vào một vị trí ngẫu nhiên Đột biến chèn có thể được xem như trường hợp đặc biệt của đột biến thay, trong đó, chuỗi con chỉ chứa một gen

Ví dụ:

Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến: 9 3 6 8 5 7 1 4 2

Đột biến tương hỗ - Reciprocal Exchange Mutation

Chọn ngẫu nhiên hai vị trí và sau đó hoán vị gen trên những

vị trí này

Ví dụ:

Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến: 9 3 1 5 7 8 6 4 2

Đột biến chuyển dịch - Shift Mutation

Trước tiên, chọn ngẫu nhiên một gen, sau đó, dịch chuyển

nó đến một vị trí ngẫu nhiên bên phải hoặc bên trái vị trí của gen

Ví dụ:

Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến (trái): 9 8 3 5 7 1 6 4 2 Sau đột biến (phải): 9 3 5 8 7 1 6 4 2

Trang 13

2.2 Biểu Diễn Giải Thuật của Giải Thuật Di Truyền

Giải thuật của Giải thuật Di truyền được biểu diễn qua các bước sau:

 Bước 1: Khởi tạo quần thể P(0), chỉ số i chỉ thế hệ thứ i

 Bước 2: Lặp đến khi quần thể hội tụ hoặc đạt đến tiêu chuẩn kết thúc

 Đánh giá độ thích nghi của mỗi cá thể trong P(i)

Chọn các cha từ P(i) dựa trên độ thích nghi của chúng trong P(i)

 Áp dụng các toán tử Gen - Crossover, Mutation từ các cha đã chọn để sinh ra các con

Đạt được thế hệ tiếp theo P(i + 1) gồm các cá thể con và cha P(i)

Cài đặt Thuật Toán

Procedure GA

begin

t := 0 ;

initialize P(t) ;

evaluate P(t) ;

while (not termination-condition) do

select P(t) from P(t-1) ;

end;

Step 1 : Initialization

Step 2 : Selection

Step 3-1 : Crossover

Step 3-2 : Mutation

Step 5 : Termination Test

Step 6 : End Step 4 : Evaluation

3 Ứng dụng giải thuật Di Truyền vào Bài toán chiếc Ba lô 2

Ta có thể hình dung mô hình bài toán được giải quyết trong giải thuật di truyền như sau: Gồm một quần thể chứa tất cả các kết quả có thể có được của bài toán, rồi từ đó chọn ra kết quả tốt nhất

Trang 14

Các bước thực hiện:

Khởi tạo đồ vật và trọng lượng tối đa ba lô:

 Tạo ra x đồ vật với khối lượng và giá trị khác nhau (ngẫu nhiên)

 Ấn định khối lượng tối đa của ba lô

Khởi tạo quần thể:

 Tạo ra n chiếc ba lô, mỗi ba lô chứa số lượng các vật là khác nhau, không ba lô nào vượt quá khối lượng tối đa của ba lô

 Số lượng mỗi vật trong balô là một số ngẫu nhiên trong khoảng

từ 0 đến thương số khối lượng của balô với khối lượng của vật

 Tìm balô tốt nhất

Lựa chọn:

 Xếp các balô từ thế hệ trước theo thứ tự và được xếp rank

Thứ tự

Giá trị tăng dần Giá trị tăng dần

 Tính tổng các Rank

 Xác định số cá thể con định tạo ra

 Lặp đến khi đủ số cá thể con

 Lấy ngẫu nhiên 1 số thuộc khoảng (1; tổng Rank)

 Cộng các Rank đến khi được giá trị > giá trị ngẫu nhiên

 Xác định Gene được chọn và đưa vào mảng để lai

Mã hóa:

 Với các Gene được chọn để đem lai, mã hóa chúng thành dạng chuỗi bằng phương pháp mã hóa giá trị

Lai:

 Phương pháp lai được chọn là lai 2 điểm

 Chuỗi gen được chia thành 3 phần, phần 1 có độ dài = ¼ chuỗi gene, phần 2 có độ dài = ½ chuỗi gene, phần 3 là phần còn lại

 Cách lai:

Trang 15

Bố a b c Con 1 a b’ c

Đột biến:

 Dựa vào tỉ lệ đột biến → số lần đột biến → số cá thể đột biến

 Chọn 3 vị trí để đột biến Giá trị đột boiến = vị trí

 Đánh giá

 Giải mã gene: Từ chuỗi mã hóa đưa về dạng bài toán

Sau quá trình lai ghép, quần thể gồm cả các cá thể cha và con

 Vì quần thể có kích thước cố định nên phải đánh giá để chọn ra

n cá thể tốt cho thế hệ kế tiếp

 Lặp lại các bước trên đến khi quần thể hội tụ hoặc sau k thế hệ

Kết Luận:

Tuy giải thuật Genetic Algorithm - GA có thể chậm hơn một số thuật toán khác, song GA lại có các ưu điểm nổi trội như: Dễ thể hiện, không bị rơi vào trạng thái cực trị địa phương, dễ thay đổi hàm thích nghi, … Vì vậy, thuật toán Genetic Algorithm là một lựa chọn thích hợp cho dạng bài toán quyết định Ví dụ như bài toán tìm đường, bài toán chiếc balô

4 Cài Đặt Ứng Dụng

Ngày đăng: 03/07/2015, 15:49

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w