Professional Documents
Culture Documents
Đạ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
I: Giải thuật di truyền.
* Tư tưởng
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
Thỏ thông
độn, chậm
minh nhanh
chạp
nhẹn
Thỏ bị
loại bỏ
4
I: Giải thuật di truyền.
* Tư tưởng
Quần thể ban đầu
5
I: Giải thuật di truyền.
* Tư tưởng
Quá trình sinh sản
6
I: Giải thuật di truyền.
* Tư tưởng
Quần thể còn lại, bắt đầu quá trình sinh
sản
7
I: Giải thuật di truyền.
* Tư tưởng
Thế hệ sau.
8
I: Giải thuật di truyền.
* Lưu đồ
Lưu đồ thuật giải cơ bản.
9
I: Giải thuật di truyền.
* Các toán tử di truyền
Biểu
diễn cá
thể. Hàm
Văn bản
của bạn. mục
tiêu.
Đột biến Toán tử
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ượng trưng cho
chuỗi NST đó để đánh giá trên vấn đề cần giải quyết.
v
Toán tử tái tạo
Là quá trình các chuỗi được lựa chọn tùy thuộc vào giá trị hàm mục
tiêu..
11
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.
13
I. Giải thuật di truyền.
* Các bước giải thuật
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
II. Bài toán người du lịch.
*Đị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.
vĐộ phức tạp
Bài toán TSP thuộc lớp bài toán NPKhó.
15
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
là hoành độ, trọng số thứ ba là tung độ.
Ø
Khoảng cách giữa hai đỉnh M(xi, yi) và N(xj, yj) của đồ thị (trọng
số cho cạnh) được tính theo công thức:
16
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
phí này được tính bằng tổng độ dài tất cả các cạnh tạo nên chu trình.
ØMỗi chu trình là 1 lời giải, trong giải thuật di truyền coi đó như
1cá thể.
17
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
chu trình.
Ø
Số lượng chu trình khởi tạo là một nửa số kích thước cá thể tối
đa.
Ø
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
thị cần giải, ở đây chọn kích thước quần thể là 100 cá thể.
18
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<child.;length – p; 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ương thức đột biến được thực hiện dựa trên 1 cá thể đầu
vào
Ø
Thực hiện đột biến bằng tráo đổi các điểm trên gen cho nhau.
Ø
Số lần tráo đối được sinh ngẫu nhiên từ trong khoảng 5% chiều
dài chu trình.
Ø
Vị trí điểm tráo cũng được sinh ngẫu nhiên trong quá trình chạy.
21
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
Ø
Chọnlọc để đảm bảo tính cân bằng của quần thể
[Số cá thể ở, l thế hệ] = [Kích thước mặc định] + [Số cá thể mới
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)
3.Loại bỏ cá thể thứ a kém thích nghi nhất từ cá thể đứng đầu danh sách quần
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<population .size() – 1; i++)
{
Min =I;
For(j =i+1;j<population.size();j++)
{
If(population.get(j).cost<population.get(min).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.
v
Chọn lọc tự nhiên
v
Với quần thể khởi tạo ban đầu được tiến hóa ngẫu nhiên và
thích nghi với điều kiện chọn lọc.
v
Các cá thể kém thích nghi sẽ bị loại thải và cá thể tốt nhất
được chọn làm lời giải.
v
Việc tiến hóa diễn ra qua một số thế hệ, ở mỗi thế hệ ta thực
hiện lai ghép và đột biến ngẫu nhiên trên toàn quần thể.
25
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