Trường Đại học Hải Phòng Khoa: Công nghệ thông tin

Đề tài: Thuật toán di truyền và ứng dụng giải bài toán người du lịch.     Giảng viên hướng dẫn:  Th.S LÊ ĐẮC NHƯỜNG          Sinh viên:   Bùi Thị Hạnh. Hoàng T.Thu Hiền Trần Hồng Lân 1

Nội dung trình bày:

2

I: Giải thuật di truyền.         *Khái niệm,

Giải thuật di truyền là một kỹ thuật của khoa học máy tính nhằm  tìm kiếm giải pháp thích hợp cho các bài toán tối ưu tổ hợp.

Giải thuật di truyền là một phân ngành của giải thuật tiến hóa vận  dụng các nguyên lý của tiến hóa như  di truyền, đột biến, chọn lọc  tự nhiên, và trao đổi chéo

3

ng

I: Giải thuật di truyền.         *  T  t ư ưở

Mô phỏng các hiện tượng tự nhiên: Kế thừa và đấu tranh sinh tồn  để cái tiến.

Ví dụ: Sự tiến hóa của loài thỏ.

Thỏ đần  độn, chậm  chạp

Thỏ thông  minh nhanh  nhẹn

Thỏ bị  loại bỏ

4

ng

I: Giải thuật di truyền.         *  T  t ư ưở ầ ể Qu n th  ban đ u

5

ng

I: Giải thuật di truyền.         *  T  t ư ưở Quá trình sinh s nả

6

ng ắ ầ

i, b t đ u quá trình sinh

I: Giải thuật di truyền.         *  T  t ư ưở ạ ể ầ Qu n th  còn l s nả

7

ng

I: Giải thuật di truyền.         *  T  t ư ưở ế ệ Th  h  sau .

8

I: Giải thuật di truyền.         *  L u đư ồ

9

ư ồ ậ ả ơ ả L u đ  thu t gi i c  b n.

I: Giải thuật di truyền.         *  Các toán t

di truy n

Văn bản  của bạn.

Biểu  diễn cá  thể.

Đột biến Toán tử

Hàm  mục  tiêu.

di truyền

Lai tạo

Lai  ghép

10

I: Giải thuật di truyền.         *  Các toán t

di truy n

ễ ể ể:

v Bi u di n cá th   Là vi c ánh x  các tham s  c a bài toán lên m t chu i có chi u dài  ị xác đ nh.

ố ủ ệ ề ạ ộ ỗ

ấ ộ ư

ả ề ề ầ ể ấ ả ỗ ụ v M t hàm m c tiêu (fitness): ầ ỗ  L y m t chu i NST là đ u vào và tr  v  giá tr  t chu i NST đó đ  đánh giá trên v n đ  c n gi ị ượ ng tr ng cho  ế i quy t.

ạ ử tái t o

v Toán t Là quá trình các chu i đ tiêu..

11

ỗ ượ ự ụ ọ ộ ị c l a ch n tùy thu c vào giá tr  hàm m c

I: Giải thuật di truyền.         *  Các toán t

di truy n

ơ ở ẹ ớ

ủ ề ề ằ ạ

v Lai ghép.    Phép lai là quá trình hình thành NST m i trên c  s  NST cha m ,    ộ    b ng cách ghép m t hay nhi u đo n gen c a hai (hay nhi u) NST  cha    m  khác nhau.

ü Lai ghép một điểm cắt, nhiều

ü Lai ghép nhi u ề

điểm cắt

đo nạ

ộ ế

ộ ố ạ ặ ộ

v Đ t bi n  ế Đ t bi n là tình tr ng NST con không có m t (ho c m t s ) tính  ẹ tr ng có trong mã di truy n c a cha m .

12

ề ủ ộ ạ

I. Giải thuật di truyền.         *  Đ u tranh sinh  ấ t nồ

ừ ầ

ể ế ẹ ể

ữ Ch n nh ng NST t  qu n th  k t qu  theo m t quy  ế ệ ớ ế ắ t c nào đó thay th  cho cha m  đ  sinh ra th  h  m i.

Phương thức 2

Phương thức 3

Phương thức  1

TT

Chọn những cá thể  ưu tú nhất

Tráo đổi hoàn toàn  05 cha mẹ bằng con.

Tráo đổi ngẫu nhiên (k  con mẹ thay thế  bằng  k  con con)

13

ướ

c gi

ậ i thu t

I. Giải thuật di truyền.         *  Các b

ướ

ủ ấ

ọ        B c 1: Ch n mô hình cho gi

ề i pháp c a v n đ .

ướ

ỉ        B c 2: Ch  đ nh cho m i gi

ộ i pháp m t ký hi u

ệ ố

ướ

ấ        B c 3: Tìm hàm s  thích nghi cho v n đ  và tính h  s  thích nghi cho t ng gi

i pháp

ệ ố

ướ

ệ ự ạ

ể ự

ế

B c 4: D a trên h  s  thích nghi c a các gi

i pháp đ  th c hi n s  t o sinh (reproduction) và bi n

ươ

ế

ế

hóa    các gi

i pháp. Các ph

ng th c bi n hóa g m: lai ghép (cross over), đ t bi n (mutation).

ướ

ạ ỏ

ệ ố       B c 5: Tính các h  s  thích nghi cho các gi

i pháp m i là lo i b  nh ng gi

ấ ể ỉ i pháp kém nh t đ  ch

ộ ố

ấ ị

cong gi

ữ ạ  l

i m t s  nh t đ nh các gi

i pháp

ướ

ư

ượ

ố ư

ươ

ư ế

ỳ ấ

ế       B c 6: N u ch a tìm đ

c gi

i pháp t

i  u hay t

ng đ i khá nh t hay ch a h t  h n k   n đ nh,

tr  l

ở ạ ướ i b

c th  4 đ  tìm gi

i pháp m i.

ướ

ượ

ố ư

ặ ế

ể ấ

ế

B c 7: Tìm đ

c gi

i pháp t

i  u ho c n u th i gian cho phép đ  ch m d t thì báo cáo k t qu  tính

đ

c.ượ

14

ị i du l ch.

ộ ứ ạ

ườ II. Bài toán ng ị         *Đ nh nghĩa, đ  ph c t p

vĐ nh nghĩa. ị ầ ồ

ướ

Cho  đ   th   đ y  đ   n  đ nh  vô  h

ủ ng,  có    tr ng                                                                                                                          s  G = (V, E). Tìm  chu trình → ộ

ư ậ

→ → →  v1 v2      … vn v1 V i vi  ọ M t  chu  trình  nh   v y  còn  g i  là  chu  trình

Hamilton.

15

vĐ  ph c t p ộ ứ ạ ộ ớ Bài toán TSP thu c l p bài toán NP­Khó.

ườ

III: Gi

i bài toán ng

ằ i du l ch b ng GA. v    Mã hóa bài toán (đ  th ) ồ ị

Ø Đồ thị được mã hóa bằng danh sách mảng các điểm và tọa độ.

Ø Trọng số trong cột đầu tiên là số hiệu của đỉnh, trọng số thứ hai

Ø Khoảng cách giữa hai đỉnh M(xi, yi) và N(xj, yj) của đồ thị (trọng

là hoành độ, trọng số thứ ba là tung độ.

16

số cho cạnh) được tính theo công thức:

ườ

III: Gi

i bài toán ng

i du l ch b ng GA.

v    Mã hóa bài toán(chu trình)

Ø Chu trình đ ụ

ằ ượ ứ ự ố ệ ủ c mã hóa b ng m ng có th  t các s  hi u c a

ỉ ả ủ ồ ị ỉ đ nh. Ví d  chu trình c a đ  th  10 đ nh:

ỗ ủ ộ

ố ề ộ ấ ả ượ ạ ằ ØM i chu trình có thông s  v  chi phí c a toàn b  chu trình đó. Chi  ạ t c  các c nh t o nên chu trình. ổ c tính b ng t ng đ  dài t phí này đ

ờ ả ả ậ ØM i chu trình là 1 l i gi i, trong gi ư ề i thu t di truy n coi đó nh

17

ỗ 1cá th . ể

III: Giải bài toán người du lịch bằng GA. v  Khởi tạo quần thể

Ø Quần thể ban đầu được khởi tạo bằng cách sinh ngẫu nhiên các

Ø Số lượng chu trình khởi tạo là một nửa số kích thước cá thể tối

chu trình.

Ø  Việc sinh ngẫu nhiên sử dụng hàm đột biến. Ø Số kích thước cá thể tối đa có thể tùy biến theo số đỉnh của đo

đa.

18

thị cần giải, ở đây chọn kích thước quần thể là 100 cá thể.

III: Giải bài toán người du lịch bằng GA.

v  Lai ghép

ể ầ

Ø  Lai ghép th c hi n trên 2 cá th  đ uvào

Ø  Thực hiện lai ghép 1 điểm cắt với vị trí cắt là ngẫu nhiên : Ø  Cắt từ điểm p đến hết chu trình của C2 đưa vào chu trình mới, lấy một ví dụ p = 5:

Ø  Xét từ đầu đến cuối chu trình 1, nạp dần các điểm chưa có trong con lai theo thứ tự

duyệt ta được chu trình mới:

19

Tính l

i chi phí cho chu trình m i:

Private circle hybridize( circle cl, circle c2)

{          Circle child =new circle (c1.getLength());

Random rand = new Random();

int  p =rand.nextInt(child.length ­ 1)

int I =0;j =0,k=0;

For(i =p; i< child.length; i++){

child.vertex[j] =c2.vertex[i];

j++;

}

For(i = 0; i < child.length; i++){

For(j=0;j

If (c1.vertex[i] == child.length.vertex[j])

Break;

Else

If (j == child.length – p ­ 1){

K++

Child.vertex[j+k] = c1. Vertex[i];

} }}

20

III: Gi

i bài toán ng

i du l ch b ng GA.

ườ ế ộ v  Đ t bi n.

Ø Ph vào

ươ ứ ộ ế ượ ệ ự ể ầ ự ng th c đ t bi n đ c th c hi n d a trên 1 cá th  đ u

ệ ế ằ ổ

Ø  Th c hi n đ t bi n b ng tráo đ i các đi m trên gen cho nhau.  ề ẫ c sinh ng u nhiên t Ø  S  l n tráo đ i đ

ộ ố ượ ự ố ầ ừ ả ể  trong kho ng 5% chi u

dài chu trình.

Ø  V  trí đi m tráo cũng đ

21

ị ể ượ ẫ ạ c sinh ng u nhiên trong quá trình ch y.

private Circle mutate(Circle c)

{

Int n = c.getLength();

Circle nextgen = new circle(n);

Nextgen.setCircle(n, c.getCircle());

Random rand = new Random();

Int count = rand.nextInt (mutateCoefficien) +1;

Int p1,p2, temp;

While(count >0 )

{

P1 = rand.nextInt(n);

P2 = rand.nextInt(n);

Temp = nextgen.vertex[p1];

Nextgen.vertex[p1] = nextgen.vertex[p2];

Nextgen.vertex[p2] = temp;

Count ­­;

}

Return nextgen;

}

22

III: Gi

i bài toán ng

i du l ch b ng GA.

ườ ọ ọ ự v  Ch n l c t

ị  nhiên

ể ặ ị

ể ớ

ủ , l th  h ] = [Kích th

ầ ướ c m c đ nh] + [S  cá th  m i

ọ ọ

ọ ọ ể ả Ø Ch nl c đ  đ m b o tính cân b ng c a qu n th ế ệ ể ở ố         [S  cá th   sinh] Ø Cách th c ch n l c cá th  đánh giá d a trên chi phí c a m i chu trình

ự Cách thức chọn lọc tự nhiên.

ế

1. S p x p qu n th  theo chi phí tăng d n.

ỉ ố

2. L a ch n ng u nhiên l ch  s  : a (0 < a < l)

ạ ỏ

ể ứ

ấ ừ

ể ứ

cá th  đ ng đ u danh sách qu n

3.Lo i b  cá th  th   a kém thích nghi nh t t th .ể

ạ ế

ạ ằ

ướ

4. Lo i đ n khi s  cá th  còn l

i b ng kích th

ặ ị c m c đ nh.

23

private void sortList()

{

int i =0, j =0,min;

Circle temp;

For(I =0;i

{

Min =I;

For(j =i+1;j

{

If(population.get(j).cost

Min =j;

}

Temp = population.get(i);

Population.add(I, population.get(min));

Population.remove(i+1);

Population.remove(min);

Population.add(min, temp);

}

24

III: Gi

i bài toán ng

i du l ch b ng GA.

ọ ọ ự

ị  nhiên

ườ v  Ch n l c t

v Với quần thể khởi tạo ban đầu được tiến hóa ngẫu nhiên và

v Các cá thể kém thích nghi sẽ bị loại thải và cá thể tốt nhất

thích nghi với điều kiện chọn lọc.

v Việc tiến hóa diễn ra qua một số thế hệ, ở mỗi thế hệ ta thực

được chọn làm lời giải.

25

hiện lai ghép và đột biến ngẫu nhiên trên toàn quần thể.

ả ơ ự ắ Xin chân thành c m  n s  l ng nghe c a các th y cô  ừ giáo và r t mong s  góp ý t

ủ  phía quý th y cô!!

26