MÔI TRƯỜNG THỬ NGHIỆM

Một phần của tài liệu giải thuật di truyền bài toán cây steiner (Trang 59 - 64)

Chương trình thực hiện các giải thuật đề xuất ở trên được cài đặt trên ngôn ngữ lập trình VC++, IDE Visual Studio 6.0 và chạy trên môi trường Windows.

Các thử nghiệm được tiến hành trên máy tính có cấu hình như sau: Chip Intel pentium 2.4GHz, RAM 512MB, cài đặt hệ điều hành Windows XP.

Để so sánh hiệu quả của thuật toán, các giá trị tối ưu và thời gian tính so với các giải thuật xấp xỉ khác. Thuật toán thứ nhất là thuật toán được phát triển từ những năm 1980 của hai tác giả Takahashi và Matsuyama (ký hiệu là GT1), thuật toán thứ hai là một giải thuật được đưa ra bởi hai tác giả người Đức: T. Koch và A. Martin[18] (được ký hiệu là GT2) và thuật toán thứ ba là thuật toán GASTP phát triển bới sinh viên Nguyễn Việt Phương-KHMT-K44-DHBKHN.

Kết quả của hai thuật toán GT1 và GT2 thu được trên máy tínhSun SPARC 20 Model 71, GASTP được chạy trên máy tính Celeron 2Ghz, 256Mbyte Ram.

3. Cài đặt thử nghiệm

3.1. Các tham số

Các tham số của chương trình bao gồm:

• Kích thước quần thể: popSize.

• Số thế hệ: numGen.

• Tỷ lệ lưu giữ: luugiu.

• Xác suất lai ghép hai cha mẹ: lai2.

• Xác suất lai ghép nhiều cha mẹ: laiNhieu.

• Số cha mẹ trong phép lai ghép nhiều cha mẹ: nParent.

• Xác suất đột biến chuẩn: DBchuan.

• Xác suất đột biến đổi chỗ: DBdoicho.

• Xác suất đột biến đảo đoạn: DBdao.

• Xác suất đột biến xóa đỉnh: DBdel.

• Xác suất đột biến thêm đỉnh: DBadd.

• Lựa chọn một trong các phép chọn lọc:

- Chọn lọc cạnh tranh. Kích thước cạnh tranh: nCanhTranh. - Chọn lọc cá thể con tốt nhất.

- Chọn lọc xếp hạng tuyến tính. n+: nCong. - Chọn lọc xếp hạng phi tuyến. c: cPT.

• Số lần chạy của chương trình: Repeat.

Để tiến hành so sánh và đánh giá kết quả, chương trình được chạy với các tham số như sau:

a. Các tham số chạy chương trình để so sánh hiệu quả làm việc của các phép lai ghép

Chương trình chạy với bốn bộ tham số như sau:

• Tham số cho giải thuật GL2: Kích thước quần thể là 200, số thế hệ là 500, tỷ lệ lưu giữ là 40%, đột biến đảo đoạn là 30%, đột biến chuẩn là 30%, đột biến thêm đỉnh là 1%, đột biến xóa đỉnh là 1%, sử dụng phép chọn lọc xếp hạng tuyến tính với n+=1.9, sử dụng phép lai ghép hai cha mẹ.

• Tham số cho giải thuật GL3: Kích thước quần thể là 200, số thế hệ là 500, tỷ lệ lưu giữ là 40%, đột biến đảo đoạn là 30%, đột biến chuẩn là 30%, đột biến

thêm đỉnh là 1%, đột biến Delete Node là 1%, sử dụng phép chọn lọc xếp hạng tuyến tính với n+=1.9, sử dụng phép lai ghép ba cha mẹ.

• Tham số cho giải thuật GL5: Kích thước quần thể là 200, số thế hệ là 500, tỷ lệ lưu giữ là 40%, đột biến đảo đoạn là 30%, đột biến chuẩn là 30%, đột biến thêm đỉnh là 1%, đột biến xóa đỉnh là 1%, sử dụng phép chọn lọc xếp hạng tuyến tính với n+=1.9, sử dụng phép lai ghép năm cha mẹ.

• Tham số cho giải thuật GL7: Kích thước quần thể là 200, số thế hệ là 500, tỷ lệ lưu giữ là 40%, đột biến đảo đoạn là 30%, đột biến chuẩn là 30%, đột biến thêm đỉnh là 1%, đột biến xóa đỉnh là 1%, sử dụng phép chọn lọc xếp hạng tuyến tính với n+=1.9, sử dụng phép lai ghép bảy cha mẹ.

b. Các tham số chạy chương trình để so sánh hiệu quả làm việc của các phép đột biến

Chương trình chạy với bốn bộ tham số như sau:

• Tham số cho giải thuật GD1: Kích thước quần thể là 200, số thế hệ là 500, lai ghép nhiều cha mẹ, số cha mẹ là 5, xác suất lai ghép là 40%, xác suất đột biến là 30%, sử dụng phép chọn lọc là chọn lọc tuyến tính với n+=1.9, phép đột biến sử dụng là đột biến chuẩn.

• Tham số cho giải thuật GD2: Kích thước quần thể là 200, số thế hệ là 500, lai ghép nhiều cha mẹ, số cha mẹ là 5, xác suất lai ghép là 40%, xác suất đột biến là 30%, sử dụng phép chọn lọc là chọn lọc tuyến tính với n+=1.9, phép đột biến sử dụng là đột biến đổi chỗ.

• Tham số cho giải thuật GD3: Kích thước quần thể là 200, số thế hệ là 500, lai ghép nhiều cha mẹ, số cha mẹ là 5, xác suất lai ghép là 40%, xác suất đột biến là 30%, sử dụng phép chọn lọc là chọn lọc tuyến tính với n+=1.9, phép đột biến sử dụng là đột biến thêm đỉnh.

• Tham số cho giải thuật GD4: Kích thước quần thể là 200, số thế hệ là 500, lai ghép nhiều cha mẹ, số cha mẹ là 5, xác suất lai ghép là 40%, xác suất đột biến là 30%, sử dụng phép chọn lọc là chọn lọc tuyến tính với n+=1.9, phép đột biến sử dụng là đột biến xóa đỉnh.

• Tham số cho giải thuật GD5: Kích thước quần thể là 200, số thế hệ là 500, lai ghép nhiều cha mẹ, số cha mẹ là 5, xác suất lai ghép là 40%, xác suất đột biến là 30%, sử dụng phép chọn lọc là chọn lọc tuyến tính với n+=1.9, phép đột biến sử dụng là đột biến đảo đoạn.

c. Các tham số chạy chương trình để so sánh hiệu quả làm việc của các phép chọn lọc

• Tham số cho giải thuật GC1: Kích thước quần thể là 200, số thế hệ là 500, tỷ lệ lưu giữ là 40%, đột biến chuẩn có xác suất là 30%, đột biến đảo đoạn có xác suất là 30%, đột biến xóa đỉnh có xác suất là 1%, đột biến thêm đỉnh có

xác suất là 1%, sử dụng lai ghép năm cha mẹ, xác suất là 40%. Phép chọn lọc sử dụng là chọn lọc xếp hạng tuyến tính với n+=1.9.

• Tham số cho giải thuật GC2: Kích thước quần thể là 200, số thế hệ là 500, tỷ lệ lưu giữ là 40%, đột biến chuẩn có xác suất là 30%, đột biến đảo đoạn có xác suất là 30%, đột biến xóa đỉnh có xác suất là 1%, đột biến thêm đỉnh có xác suất là 1%, sử dụng lai ghép năm cha mẹ, xác suất là 40%. Phép chọn lọc sử dụng là chọn lọc cá thể con tốt nhất.

• Tham số cho giải thuật GC3: Kích thước quần thể là 200, số thế hệ là 500, tỷ lệ lưu giữ là 40%, đột biến chuẩn có xác suất là 30%, đột biến đảo đoạn có xác suất là 30%, đột biến xóa đỉnh có xác suất là 1%, đột biến thêm đỉnh có xác suất là 1%, sử dụng lai ghép năm cha mẹ, xác suất là 40%. Phép chọn lọc sử dụng là chọn lọc xếp hạng phi tuyến với c = 0.9.

• Tham số cho giải thuật GC4: Kích thước quần thể là 200, số thế hệ là 500, tỷ lệ lưu giữ là 40%, đột biến chuẩn có xác suất là 30%, đột biến đảo đoạn có xác suất là 30%, đột biến xóa đỉnh có xác suất là 1%, đột biến thêm đỉnh có xác suất là 1%, sử dụng lai ghép năm cha mẹ, xác suất là 40%. Phép chọn lọc sử dụng là chọn lọc cạnh tranh với kích thước cạnh tranh là 3.

d. Các tham số chạy các bộ dữ liệu I160, I320, I640 và bộ dữ liệu thực tế

• Tham số khi chạy bộ dữ liệu I160: Kích thước quần thể 100, số thế hệ 100, tỷ lệ lưu giữ là 40%, xác suất lai ghép là 40%, xác suất đột biến chuẩn là 30%, xác suất đột biến đảo đoạn là 30%, xác suất đột biến thêm đỉnh là 5%, xác suất đột biến xóa đỉnh là 5%. Sử dụng phương pháp chọn lọc tuyến tính với n+ = 1.9. Các bộ dữ liệu được chạy lần lượt với các giải thuật GL2, Gl3, Gl5, GL7, với mỗi tham số chạy 50 lần, lấy kết quả tốt nhất đem so sánh.

• Tham số khi chạy bộ dữ liệu I320: Kích thước quần thể là 200, số thế hệ là 200, tỷ lệ lưu giữ là 40%, xác suất lai ghép là 40%, xác suất đột biến chuẩn là 30%, xác suất đột biến đảo đoạn là 30%, xác suất đột biến xóa đỉnh là 5%, xác suất đột biến thêm đỉnh là 5%, sử dụng phép chọn lọc xếp hạng tuyến tính, n+=1.9. Các bộ dữ liệu được chạy lần lượt với các giải thuật GL2, Gl3, Gl5, GL7, với mỗi tham số chạy 20 lần, lấy kết quả tốt nhất đem so sánh.

• Tham số khi chạy bộ dữ liệu I620: Kích thước quần thể là 200, số thế hệ là 500, tỷ lệ lưu giữ là 40%, xác suất lai ghép là 40%, xác suất đột biến chuẩn là 30%, xác suất đột biến đảo đoạn là 30%, xác suất đột biến xóa đỉnh là 5%, xác suất đột biến thêm đỉnh là 5%, sử dụng phép chọn lọc xếp hạng tuyến tính, n+=1.9. Các bộ dữ liệu được chạy lần lượt với các giải thuật GL2, Gl3, Gl5, GL7, với mỗi tham số chạy 20 lần, lấy kết quả tốt nhất đem so sánh.

• Tham số khi chạy bộ dữ liệu thực tế: Kích thước quần thể là 100, số thế hệ là 100, tỷ lệ lưu giữ là 40%, xác suất lai ghép là 40%, xác suất đột biến chuẩn là 30%, xác suất đột biến đảo đoạn là 30%, xác suất đột biến xóa đỉnh là 5%, xác suất đột biến thêm đỉnh là 5%. Sử dụng phép chọn lọc xếp hạng tuyến tính, n+=1.9. Các bộ dữ liệu được chạy lần lượt với các giải thuật GL2, Gl3,

Gl5, GL7, với mỗi tham số chạy 20 lần, lấy kết quả tốt nhất đem so sánh.

3.2.Các hàm chính trong chương trình

- Hàm thực hiện giải thuật di truyền:

void SteinerTreeGraph::Genetic()

- Hàm đột biến thêm đỉnh:

int SteinerTreeGraph::DBAddNode(byte *a, double costa)

- Hàm đột biến đảo đoạn:

bool SteinerTreeGraph::DBDaoDoan(byte *a)

- Hàm đột biến xóa đỉnh:

int SteinerTreeGraph::DBDeleteNode(byte *a, double costa)

- Hàm chọn lọc cạnh tranh:

void SteinerTreeGraph::ChonLocCanhTranh(int t)

- Hàm chọn lọc cá thể con tốt nhất:

void SteinerTreeGraph::ChonLocCaTheConTotNhat()

- Hàm chọn lọc không tuyến tính thích nghi:

void SteinerTreeGraph::ChonLocKhongTTThichNghi()

- Hàm lai ghép hai cha mẹ:

bool SteinerTreeGraph::Crossover(int p1, int p2)

- Hàm đột biến đổi chỗ:

bool SteinerTreeGraph::InsertMutation(byte *a)

- Hàm lai ghép nhiều cha mẹ:

void SteinerTreeGraph::MultiCrossover(int nParent)

- Hàm đột biến chuẩn:

bool SteinerTreeGraph::UniformMutation(byte *a)

- Hàm tối ưu cây:

Một phần của tài liệu giải thuật di truyền bài toán cây steiner (Trang 59 - 64)

Tải bản đầy đủ (DOC)

(77 trang)
w