1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo đồ án trí tuệ nhân tạo: xây dựng chương trình giải quyết bài toán chiếc ba lô loại 1 theo giải thuật gen và phương pháp chọn là bánh xe roulette

11 841 1

Đ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 11
Dung lượng 122,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BÁO CÁO BÀI TẬP LỚN Đề Tài:Không gian trạng thái được mô tả là bài toán chiếc ba lô loại 1,xây dựng chương trình giải quyết bài toán theo giải thuật gen và phương pháp chọn là bánh xe roulette. I)Mô tả bài toán: Bạn có một số các vật mà bạn có thể cầm theo trong chuyến du lịch  Mỗi vật có một trọng lượng và một giá trị.  Có một cái túi giới hạn trọng lượng bạn có thế cầm theo.  Mỗi vật chỉ được chọn tối đa 1 lần.  Bạn muốn cầm các vật mang theo với max giá trị.  Đồ vật: 1 2 3 4 5 6 7  Giá trị: 5 8 3 2 7 9 4  T.lượng: 7 8 4 10 4 6 4  Khối lượng tối đa có thể mang là 22 đơn vị.  Xếp đồ vật để có giá trị lớn nhất? Phương pháp giải quyết vấn đề:dùng giải thuật gen và phương pháp chọn roulette. II. Xây dựng B1:Mã Hóa  Mã hóa nhị phân (Binary encoding) là kiểu thông dụng nhất: nghiên cứu đầu tiên về thuật toán Gen sử dụng kiểu mã hóa này và bởi vì nó đơn giản  Trong mã hóa nhị phân, mọi nhiễm sắc thể là chuỗi bits - 0 hoặc 1.  Cá thể (Chromosome) A: 101100101100101011100101 Cá thể (Chromosome) B: 111111100000110000011111 Mã hóa nhị phân đưa ra nhiều khả năng của nhiễm sắc thể với một số lượng nhỏ các gen đẳng vị.  Các mã hóa này thường không tự nhiên cho nhiều bài toán và thỉnh thoảng sai sau khi thực hiện các phép toán crossover and/or mutation  Encoding: 0 = not exist, 1 = exist in the Knapsack Chromosome: 1010110 Generate random population of n chromosomes: a) 0101010 b) 1100100 c) 0100011 B2:xây dựng hàm thích nghi Lựa chọn kết quả tối ưu đc cho là gần với kết

Trang 1

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

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO MÔN HỌC TRÍ TUỆ NHÂN TẠO

Giáo viên hướng dẫn: Ngô Hữu Phúc

HÀ NỘI 3/2010

Trang 2

BÁO CÁO BÀI TẬP LỚN

Đề Tài:Không gian trạng thái được mô tả là bài toán chiếc ba lô loại 1,xây dựng

chương trình giải quyết bài toán theo giải thuật gen và phương pháp chọn là bánh

xe roulette

I)Mô tả bài toán:

Bạn có một số các vật mà bạn có thể cầm theo trong chuyến du lịch

 Mỗi vật có một trọng lượng và một giá trị

 Có một cái túi giới hạn trọng lượng bạn có thế cầm theo

 Mỗi vật chỉ được chọn tối đa 1 lần

 Bạn muốn cầm các vật mang theo với max giá trị

 Đồ vật: 1 2 3 4 5 6 7

 Giá trị: 5 8 3 2 7 9 4

 T.lượng: 7 8 4 10 4 6 4

 Khối lượng tối đa có thể mang là 22 đơn vị

 Xếp đồ vật để có giá trị lớn nhất?

Phương pháp giải quyết vấn đề:dùng giải thuật gen và phương pháp chọn roulette

Trang 3

II Xây dựng

B1:Mã Hóa

 Mã hóa nhị phân (Binary encoding) là kiểu thông dụng nhất:

nghiên cứu đầu tiên về thuật toán Gen sử dụng kiểu mã hóa này và bởi vì nó đơn giản

 Trong mã hóa nhị phân, mọi nhiễm sắc thể là chuỗi bits - 0 hoặc 1

 Cá thể (Chromosome) A: 101100101100101011100101

Cá thể (Chromosome) B: 111111100000110000011111

Mã hóa nhị phân đưa ra nhiều khả năng của nhiễm sắc thể với một số lượng nhỏ các gen đẳng vị

 Các mã hóa này thường không tự nhiên cho nhiều bài toán và thỉnh thoảng sai sau khi thực hiện các phép toán crossover and/or mutation

 Encoding: 0 = not exist, 1 = exist in the Knapsack

Chromosome: 1010110

Generate random population of n chromosomes:

a) 0101010

b) 1100100

c) 0100011

B2:xây dựng hàm thích nghi

Lựa chọn kết quả tối ưu đc cho là gần với kết quả mà ta cần tìm nhất

a) 0101010: Benefit= 19, Weight= 24

b)1100100: Benefit= 20, Weight= 19

c)0100011: Benefit= 21, Weight= 18

Ta chọn phương án b,c!

Trang 4

B3:xây dựng phương pháp chọn cho sự kết hợp

Các nhiễm sắc thể được chọn từ quần thể là các cha cho lai ghép (crossover) Với phương pháp chọn bánh xe roulette

 Cha được chọn qua độ thích nghi của chúng

 Nhiễm sắc thể tốt hơn, nhiều ngẫu nhiên hơn phải được chọn

Tưởng tượng một roulette wheel nơi tất cả các NST trong quần thể được đặt

lên

 Kích thước của đoạn trong roulete wheel tương ứng với giá trị của hàm thích nghi

 Một hòn bi được lăn trong roulette wheel và NST nơi nó dừng lại được lựa chọn

 NST với giá trị thích nghi lớn sẽ được chọn nhiều hơn

B4:sau khi chọn được các cá thể tốt cho lai ghép,thực hiện thao tác Crossover và mutation là hai phép toán cơ bản của thuật toán gen nhằm tạo nên một quần thể mới có giá trị tốt hơn và đạt được kết quả mà ta tìm kiếm

Trong chương trình này,ta sử dụng phương pháp single_point crossover,two_point và Arithmetic_crossover để lai ghép các cá thể cha

III)Xây dựng chương trình:

Giao diện:

Trang 5

Xây dựng mảng để lưu giá trị,khối lượng vật.

public int [,] knapsack = new int [7, 2] { { 5, 7 }, { 8, 8 }, { 3, 4 }, { 2, 10 }, { 7, 4 }, { 9, 6 }, { 4,4} };

private string [] str_dt = new string [30];

private string [] str_p = new string [30];

private string [] str_f = new string [30];

Khi khởi tạo giá trị quần thể ban đầu:

Trang 6

Mã lệnh thực thi

private void button1_Click( object sender, EventArgs e)

{

//int dem = 0;

lb.Items.Clear();

for ( int i = 0; i < 30; i++)

{

gen_str: string str_ = Random_ks();

if (i==0)

str_dt[i] = str_;

else

for ( int j = 0; j < i; j++)

{

if (str_dt[j] == str_)

goto gen_str;

else

str_dt[i] = str_;

}

}

C# hỗ trợ và giúp chúng ta tạo nên một chuổi tùy ý với các giá trị và khối lượng vật đã gắn cứng trong chương trình

Giá trị và khối lượng các cá thể tương ứng

Trang 7

Botton “value” là hàm thích nghi,lựa chọn các cá thẻ cha tốt cho lai ghép tạo quần thể

Xây dựng hàm Elitism

private string Elitism( string [] str_)

{

int max = 0,sum1=0;

int index = 0,sum2=0;

for ( int i = 0; i < 30; i++)

{

string tmp = str_[i];

for ( int j = 0; j < 7; j++)

{

if ( Convert ToInt16(tmp[j]) == 49)

{

sum1 += knapsack[j, 0];

sum2 += knapsack[j, 1];

}

}

if (sum2 <= 22 && sum1 > max)

{

max = sum1;

index = i;

}

sum1 = sum2 = 0;

}

return str_[index];

 Khi tạo quần thể mới bằng crossover hoặc mutation, có thể làm mất cá thể tốt nhất

Trang 8

Phương pháp Elitism cho phép copy những cá thể tốt (hoặc một vài cá thể

tốt) sang quần thể mới

 Thành phần còn lại của quần thể được tạo từ cách khác

Phương pháp Elitism có thể tăng tốc cho bài toán, vì nó ngăn không làm mất

cá thể tốt

Xây dựng hàm Mutation tạo đột biến trong một cá thể con để tiếp tục lai ghép private void Mutation( string [] str)

{

Random rnd = new Random ();

int index_str = rnd.Next(0,30);

string tmp = str[index_str];

int num = rnd.Next(1, 3);

for ( int i = 0; i < num; i++)

{

int index = rnd.Next(0,6);

if (tmp[index].Equals( "0" ))

{

tmp.Remove(index, 1);

tmp.Insert(index, "1" );

}

else

{

tmp.Remove(index, 1);

tmp.Insert(index, "0" );

}

}

str_p[index_str] = tmp;

}

Xây dựng hàm chọn bánh xe roulette

private int roulette( string [] str_p_)

Trang 9

{

int sum1 =0,sum2=0;

string tmp = "" ;

for ( int i=0;i<30;i++)

{

tmp = str_p_[i];

for ( int j = 0; j < 7; j++)

{

if ( Convert ToInt16(tmp[j]) == 49) {

sum1 += knapsack[j, 1];

}

}

sum2 += sum1;

sum1 = 0;

}

Random rnd = new Random ();

int r = rnd.Next(0,sum2);

int sum3 = 0, sum4 = 0,ret=0;

for ( int i = 0; i < 30; i++)

{

tmp = str_p_[i];

for ( int j = 0; j < 7; j++)

{

if ( Convert ToInt16(tmp[j]) == 49) {

sum3 += knapsack[j, 1];

}

}

sum4 += sum3;

sum3 = 0;

if (sum4 > r)

{

ret = i;

goto end;

}

}

end: return ret;

}

Tiến hành lai ghép và kết quả quần thể thu được sau lai ghép:

Trang 10

Kết quả ta sẽ tìm đc lời giải tốt nhưng không hẳn là tối ưu nhất của bài toán vì phương pháp chọn vẫn chưa thực sự tốt trong các diễn biến thực tế

Trang 11

IV)Các tài liệu tham khảo:

a.Slide bài giảng môn AI của thầy

b. Trang web google.com.vn và các trang khác

Em cảm ơn thầy vì đã dạy em môn Trí tuệ nhân tạo.

Ngày đăng: 25/03/2014, 22:26

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w