Toán tử di truyền

Một phần của tài liệu Nghiên cứu ảnh hưởng của chất liệu sợi dệt và quá trình nhuộm tới khả năng ngăn ngừa tia uv của vải (Trang 96)

4.5.1. Toán tử lai ghép

4.5.1.1. Lai ghép một điểm cắt (One-point Crossover)

Hình 4-14 Minh họa phương pháp lai ghép một điểm cắt

Lai ghép theo điểm cắt là phương pháp lai ghép đơn giản và thường gặp nhất, có tính trực quan và có thể áp dụng đối với các phương pháp mã hóa lời giải dưới dạng xâu. Phương pháp này tiến hành như sau:

 Chọn ngẫu nhiên 1 điểm cắt trên nhiễm sắc thể cha mẹ.

Bƣớc 1.Tính tổng độ thích nghi của các cá thể trong quần thể. Ta gọi tổng này là S.

Bƣớc 2.Phát sinh một số ngẫu nhiên r trong khoảng [0…S]

Bƣớc 3.Duyệt lại toàn bộ quần thể, tính tổng độ thích nghi của các cá thể bắt đầu từ nhiễm sắc thể đầu tiên. Ta gọi là s. Khi nào s > r thì ta dừng với nhiễm sắc thể hiện tại.

~ 96 ~

 Mỗi cá thể cha mẹ khi đó sẽ bị phân chia thành 2 phần. Khi đó mỗi cá thể con sẽ được tạo ra bằng cách ghép chéo 2 phần của cá thể cha mẹ.

4.3.1.2. Lai ghép đồng bộ (Uniform Crossover)

Để thực hiện lai ghép đồng bộ ta thực hiện các bước sau:

 Sinh ngẫu nhiên một mặt nạ ghép gồm một chuỗi bit 0 hoặc 1 có độ dài bằng cá thể cha mẹ.

 Duyệt từng bit trên chuỗi mặt nạ. Xét vị trí thứ k, nếu bit trên mặt nạ có giá trị là 1 gene ở vị trí tương ứng của cha mẹ 1, cha mẹ 2 sẽ gán lần lượt cho con 1 và con 2. Ngược lại nếu bit trên mặt nạ có giá trị là 0 ta sẽ gán theo cách đảo lại, tức là gene của cha mẹ 1 sẽ gán cho con 2 và cha mẹ 2 sẽ gán cho con 1.

Hình 4-15 Minh họa phương pháp lai ghép đồng bộ

4.5.2. Toán tử đột biến Đột biến đảo giá trị Đột biến đảo giá trị

 Chọn một (hoặc một số) vị trí ngẫu nhiên để tiến hành đảo bit.  Lật giá trị của bit tại vị trí đã chọn.

Ví dụ:

Trước đột biến : 1 0 0 1 1 1 0 1 Sau đột biến : 1 0 1 1 1 0 0 1

~ 97 ~

CHƢƠNG 5

KẾT QUẢ THỰC NGHIỆM

Dựa trên các trình bày trong chương trước, chương này trình bày về các cài đặt thử nghiệm thuật toán di truyền lai giải bài toán OCST. Các kết quả thực nghiệm được phân tích và đánh giá để thấy hiệu quả của thuật toán.

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

Để thử nghiệm đánh giá hiệu quả của thuật toán đề xuất so với các thuật toán khác, và để so sánh hiệu quả của các phương pháp mã hóa, và các toán lai ghép, hai thử nghiệm khác nhau với HGA đã được thực hiện.

 Thử nghiệm thứ nhất là tiến hành thực hiện HGA trên 11 bộ test chuẩn mà thường được dùng khi so sánh hiệu quả của các thuật toán giải bài toán OCST do F. Rothlauf cung cấp trong [32]. Mục đích chính của thử nghiệm này là để đánh giá hiệu quả của HGA so với các thuật toán đã có trước đó.  Thử nghiệm thứ hai được tiến hành trên các bộ dữ liệu kích thước lớn được

sinh ngẫu nhiên theo mô tả của tác giả Thomas Fischer trong [41]. Nhằm mục đích đánh giá hiệu quả của thuật toán, và ảnh hưởng của các phương pháp mã hóa, các toán tử di truyền đến chất lượng lời giải của HGA.

5.1.1. Dữ liệu thực nghiệm Bộ test chuẩn Bộ test chuẩn

Trong [32] F. Rothlauf cung cấp 11 bộ test chuẩn là với đặc điểm là:

 Các bộ test Palmer6, Palmer12, Palmer24 được Palmer đưa ra vào năm 1994. Trong các bộ test này, giá trị nhu cầu (demand) giữa các đỉnh tỉ lệ nghịch

~ 98 ~

với khoảng cách giữa chúng. Đồ thị trong bộ test gồm các nút tương ứng với vị trí các thành phố của Mỹ.

 Berry cùng một số tác giả khác giới thiệu 3 bộ test cho bài toán OCST. 1 bộ có kích thước 6 đỉnh và 2 bộ kích thước 35 đỉnh. Cả 2 bộ 35 đỉnh đều sử dụng chung một ma trận nhu cầu.

 Năm 2001 Raidl đề xuất một số bộ test cho bài toán OCST với số đỉnh từ 10 tới 100. Các giá trị về khoảng cách và nhu cầu giữa các đỉnh được sinh ngẫu nhiên.

Các bộ test này được đa số tác giả của các giải thuật meta-heuristic đề xuất gần đây sử dụng để đánh giá hiệu năng của thuật toán giải bài toán OCST.

Bảng 5-1 liệt kê kích thước bộ test và giá của cây khung tốt nhất đã tìm được tương ứng với 11 bộ test chuẩn. Các bộ test này đều có đầu vào là một đồ thị đầy đủ.

Bảng 5-1 Các bộ test chuẩn Tên Kích thƣớc Giá trị tốt nhất đã biết Berry6 6 534 Berry35 35 16915 Berry35u 35 16167 Palmer6 6 693180 Palmer12 12 3428509 Palmer24 24 1086656 Raidl10 10 53674 Raidl20 20 157570 Raidl50 50 806864 Raidl75 75 1717491 Raidl100 100 2561543

~ 99 ~

Bộ test ngẫu nhiên

Do các bộ test chuẩn chỉ giới hạn kích thước đồ thị là 100 đỉnh, nên các bộ thử nghiệm kích thước lớn đã được tạo ra để thực hiện so sánh hiệu quả thuật toán. Trong thử nghiệm thứ hai, hai bộ test có kích thước đồ thị là 200 đỉnh đã được sử dụng.

 Bộ test NE-RAND-200 là bộ test trong đó khoảng cách giữa các đỉnh là các giá trị ngẫu nhiên (phi Euclidean), độ lớn của khoảng cách được lấy ngẫu nhiên trong khoảng giá trị

 Bộ test E-RAND-200 là bộ test trong đó khoảng cách giữa các đỉnh là khoảng cách Euclidean. TRong bộ test này thì khoảng cách giữa 2 đỉnh được tính theo công thức ⌊√ ⌋, trong đó và

lần lượt là tọa độ của đỉnh và đỉnh .

5.1.2. Các tham số cho các thử nghiệm

HGA đã được cài đặt bằng ngôn ngữ lập trình C++, sử dụng công cụ biên dịch là Microsoft Visual-C++ 2008, và chương trình thử nghiệm đã được chạy trên các máy tính với cấu hình Pentium IV 2.4GHz, RAM 512 MB, cài hệ điều hành Windows XP. Các tham số cho các thử nghiệm như sau:

Các bộ test chuẩn

 Kích thước quần thể: 100 cá thể.

 Điều kiện dừng giải thuật: sau 10000 thế hệ.  Xác suất đột biến: 10%.

 Mỗi bộ test được thực hiện trên cả 6 phương pháp mã hóa Prufer, CB-TCR,

LB, NB, LNB, NetKeys và hai loại lai ghép chạy độc lập. Như vậy với mỗi bộ test ta có 12 cấu hình.

 Mỗi cấu hình được chạy 20 lần, và giá trị trung bình được sử dụng để so sánh.

~ 100 ~

Với hai bộ test khởi tạo ngẫu nhiên là NE-RAND-200 và E-RAND-200 có một số điểm thay đổi so với việc chạy trên các bộ test chuẩn như sau:

 Điều kiện dừng của giải thuật: sau 1000 thế hệ.

 Mỗi bộ test thực hiện trên ba loại mã hóa là CB-TCR, NB, LNB.

5.2. Kết quả thực nghiệm

5.2.1. Kết quả trên các bộ test chuẩn

Dưới đây là bảng thống kê kết quả chạy trên các bộ test chuẩn với các thông số sau:  Best: Giá của cây khung tốt nhất mà giải thuật tìm được trên 20 lần chạy

(càng nhỏ càng tốt).

Best known: Giá của cây khung tốt nhất đã tìm được bởi giải thuật chính xác và một số giải thuật khác trước đây (càng nhỏ càng tốt).

%: Được tính theo công thức sau: (Best – Best known)/Best known * 100%.  Avg: Giá trị trung bình giá của cây khung được tính trên 20 lần chạy (càng

nhỏ càng tốt).

Gens: Gọi G là số thế hệ tối thiểu để chương trình tìm ra cây khung tốt nhất trên lần chạy đó thì Gens được tính bằng trung bình của G trên 20 lần chạy.  Time: Gọi T là thời gian tối thiểu để chương trình chạy được G thế hệ thì

Time được tính bằng trung bình của T trên 20 lần chạy.

Std: Độ lệch chuẩn của giá tốt nhất tìm được tính trên 20 lần chạy.

√ ∑

~ 101 ~

Bảng 5-2 Kết quả chạy các bộ test chuẩn sử dụng mã hóa Prufer và CB-TCR

GAPSO

Best known

Prufer CB-TCR

Best % Avg Std Gens Time Best % Avg Std Gens Time

Berry6 One Point 534 534 0.00 534.0 0.00 5.2 0.0 534 0.00 534.0 0.00 0.8 0.0 Uniform 534 0.00 534.0 0.00 3.4 0.0 534 0.00 534.0 0.00 0.5 0.0 Berry35 One Point 16915 27591 183.99 33184.0 6236.06 2829.7 52.6 16915 2.81 17003.2 144.22 1052.0 35.9 Uniform 23601 148.48 29213.4 6266.31 3731.3 72.1 16915 0.00 16915.0 0.00 753.2 26.5 Berry35u One Point 16167 19181 18.64 20413.8 918.79 2414.6 42.6 16878 4.40 17387.6 422.10 3546.7 100.4 Uniform 17696 9.46 18852.0 868.32 3079.6 56.4 16329 1.00 17131.0 616.54 4448.4 123.7 Palmer6 One Point 693180 693180 0.00 693180.0 0.00 5.4 0.0 693180 0.00 693180.0 0.00 0.9 0.0 Uniform 693180 0.00 693180.0 0.00 6.2 0.0 693180 0.00 693180.0 0.00 1.8 0.0 Palmer12 One Point 3428509 3428509 0.00 3489292.6 49396.05 68.9 0.3 3428509 0.00 3434081.8 11463.67 68.1 0.4 Uniform 3428509 0.00 3471216.0 37472.32 79.6 0.3 3428509 0.00 3430054.2 4635.60 294.2 1.7 Palmer24 One Point 1086656 1087520 0.08 1139075.2 78429.11 1491.0 14.7 1086656 0.00 1087926.8 482.38 1177.5 19.3 Uniform 1086656 0.00 1138711.0 81569.70 993.8 10.0 1086656 0.00 1087353.8 543.78 630.5 10.0 Raidl10 One Point 53674 53674 0.00 58719.7 6439.29 86.1 0.2 53674 0.00 53674.0 0.00 25.4 0.1 Uniform 53674 0.00 56105.5 2431.50 25.7 0.1 53674 0.00 53674.0 0.00 49.9 0.2 Raidl20 One Point 157570 170446 8.17 253625.7 37028.81 875.4 7.1 157570 0.00 160392.9 3457.47 856.2 11.1 Uniform 163426 3.72 236696.5 42793.40 622.8 5.3 157570 0.00 157570.0 0.00 328.5 4.1 Raidl50 One Point 806864 1841549 128.24 2244796.7 316019.06 4721.9 178.0 806864 0.00 814444.4 6515.24 6055.5 381.6 Uniform 1573306 94.99 1824945.0 178570.49 2652.3 58.1 806864 0.00 810731.6 5312.76 4604.6 218.0 Raidl75 One Point 1717491 4356293 153.64 5382134.7 544679.06 5189.2 232.0 1719849 0.14 1802044.4 70707.06 8772.4 861.5 Uniform 4053431 136.01 4736686.3 460487.55 4193.4 260.3 1732841 0.89 1848816.0 74270.73 7871.9 892.7 Raidl100 One Point 2561543 7719865 201.38 10302515 1374954.6 7815.0 585.3 2580665 0.75 2767487.5 93754.84 9630.1 1507.4 Uniform 6725252 162.55 7839514.0 734122.09 5002.4 451.8 2674690 4.42 2760716.6 51667.80 8934.6 1924.4

~ 102 ~

Bảng 5-3 Kết quả chạy các bộ test chuẩn sử dụng mã hóa NetKeys và NB

GAPSO

Best known

NetKeys Encoding Node Biased Encoding

Best % Avg Std Gens Time Best % Avg Std Gens Time

Berry6 One Point 534 534 0 534 0 3.6 0 534 0 534 0 0 0 Uniform 534 0 534 0 3 0 534 0 534 0 0 0 Berry35 One Point 16915 18389 8.71 19156.4 217.5084 7047.6 4749.8 16915 0 16915 0 235.3 11.4 Uniform 16915 0 17609.6 211.6372 5634.6 3527.9 16915 0 16915 0 45.4 2.3 Berry35u One Point 16167 16930 4.71 17517.8 125.07 4782.5 2455.7 19287 19.3 20935.3 667.51 2113.2 67.8 Uniform 16847 4.2 16904.5 31.74 7094.7 3861.4 19704 21.8 20658.7 567.64 2432.6 124.7 Palmer6 One Point 693180 693180 0 693180 0 4.8 0 693180 0 693180 0 0.4 0 Uniform 693180 0 693180 0 4.6 0 693180 0 693180 0 0 0 Palmer12 One Point 3428509 3428509 0 3462562.1 36934.35 90.6 0.9 3428509 0 3428509 0 3.7 0 Uniform 3428509 0 3442480.4 23761.04 137.6 1.4 3428509 0 3428509 0 5.1 0 Palmer24 One Point 1086656 1086656 0 1108280.4 31403.59 2830 227.6 1088998 0.22 1125225.6 38197.38 1499.7 33.8 Uniform 1086656 0 1086812.6 469.8 1003.9 79.9 1087380 0.07 1115704 40293.91 586 13.2 Raidl10 One Point 53674 53674 0 53674 0 42.9 0.3 53674 0 53674 0 0.9 0 Uniform 53674 0 53674 0 19.9 0.1 53674 0 53674 0 0.7 0 Raidl20 One Point 157570 157570 0 172049.7 14375.61 2508 107.6 157570 0 157570 0 634.8 9.4 Uniform 157570 0 159831.2 3163.16 1246 57.8 157570 0 157570 0 39.5 0.6 Raidl50 One Point 806864 1088998 34.96 1125225.6 38197.38 8536.7 224.8 807818 0.12 812767.9 5175.26 2425.2 207.2 Uniform 1087380 34.76 1115704 40293.91 7486.6 256.2 807272 0.05 813364.4 5789.04 2082.9 190 Raidl75 One Point 1717491 2538654 47.81 3143543.5 295752.4 8642.9 2721.7 1717491 0 1744710.7 43147.63 2672 749.6 Uniform 2135646 24.35 3262561.6 411689.6 9162.5 2958.6 1717491 0 1772050.4 96114.34 4506.7 1377.9 Raidl100 One Point 2561543 3977546 55.28 4527241.7 213745.7 9254.1 7344.7 2561543 0.54 2694811.2 94505.38 5109 2837.5 Uniform 3543652 38.34 4342509.4 351847.7 8765.3 7688.3 2561543 0.45 2705055.9 80452.51 3365.2 1595.6

~ 103 ~

Bảng 5-4 Kết quả chạy trên các bộ test chuẩn sử dụng mã hóa LNB và LB

GAPSO

Best known

Link Node Biased Encoding Link Biased Encoding

Best % Avg Std Gens Time Best % Avg Std Gens Time

Berry6 One Point 534 534 0 534 0 0.7 0 534 0 534 0 1 0 Uniform 534 0 534 0 0.1 0 534 0 534 0 1 0 Berry35 One Point 16915 16915 0 17576.8 552.92 2390.9 180 16915 0 17298.6 216.2604 750.6 37.3 Uniform 16915 0 17054 128.22 1365.3 89.3 16915 0 16969.8 89.38405 1058.8 51.8 Berry35u One Point 16167 19348 19.68 20230.9 427.2 2945.4 183.2 24039 48.69 26213.8 1165.857 878.9 44.9 Uniform 18915 17 20160.1 710.4 2991.6 198.6 22953 41.97 25414.3 1180.173 438.1 21.8 Palmer6 One Point 693180 693180 0 693180 0 0.3 0 693180 0 693180 0 1.2 0 Uniform 693180 0 693180 0 1.1 0 693180 0 693180 0 1.4 0 Palmer12 One Point 3428509 3428509 0 3428509 0 66.6 0.6 3428509 0 3437026 11515.48 50.9 0.2 Uniform 3428509 0 3428509 0 25.1 0.2 3428509 0 3435163 11775.39 67.8 0.3 Palmer24 One Point 1086656 1087612 0.09 1104003 23663.42 977.5 25.6 1094248 0.69 1146373 33284.36 1015.9 22.6 Uniform 1087498 0.08 1104368 30214.01 1007.8 32.2 1089412 0.25 1120369 23874.25 659.6 14.7 Raidl10 One Point 53674 53674 0 53674 0 8.6 0.1 53674 0 53674 0 16.4 0 Uniform 53674 0 53674 0 5.9 0 53674 0 53674 0 13.1 0 Raidl20 One Point 157570 157570 0 158987 2834 456.3 8.6 157570 0 165142.9 5377.354 851.3 12.1 Uniform 157570 0 159354.1 2851.44 75.3 1.6 157570 0 159940.7 2742.732 202.9 2.8 Raidl50 One Point 806864 827307 2.53 861848.2 22642.93 3343.1 339.2 820280 1.66 896140.7 74826.43 4807 502.5 Uniform 821607 1.83 851980.3 26630.74 3254.5 485.5 812967 0.75 868322.6 43678.86 3445.2 427.4 Raidl75 One Point 1717491 1948017 13.42 2044152 79507.19 6741.5 1890.8 1868023 8.76 2081519 130168.7 5783 1474.4 Uniform 1879504 9.43 2008573 96566.97 5047.7 1520.3 1948700 13.46 2060832 70462.23 5144.7 1827.1 Raidl100 One Point 2561543 3009929 17.5 3166779 159995.89 9060.2 4489.9 3596569 40.40 3858513 139293.8 9730.5 3899.2 Uniform 2803639 9.45 3056390 136932.02 6324.7 5226.4 2868523 11.98 3048616 107446 4919.6 2877.7

~ 104 ~

Bảng 5-2, 5-3 và 5-4 trình bày kết quả của thử nghiệm thứ nhất. Từ bảng kết quả trên ta có thể thấy phương pháp biểu diễn cây bằng chuỗi Prufer là không hiệu quả nhất trong sáu phương pháp mã hóa được sử dụng. Thuật toán HGA dùng mã hóa Prufer chỉ tìm được kết quả tối ưu trên các bộ test với kích thước nhỏ (B6, P6, P12, P24 và R10). Trong khi đó hai phương pháp mã hóa CB-TCRNB cho thấy nó là phương pháp mã hóa phù hợp với thuật toán, vì nó tìm được kết quả tối ưu trên phần lớn các bộ test. Một trong những lý do có thể giải thích cho hiệu quả vượt trội so của chúng với các phương pháp mã hóa khác là nó có xu hướng tạo ra các cây khung dạng cây MST, mà trong bài toán OCST thì cây khung tối ưu thường có dạng là gần với cây MST và cây hình sao.

Phương pháp mã hóa NetKeys cho chất lượng lời giải trung bình khi so sánh với các phương pháp mã hóa còn lại. Tuy nhiên nó đòi hỏi thời gian tính toán lớn nhất. Do vậy phương pháp này không phù hợp khi giải quyết các bài toán có kích thước lớn. Ví dụ với bộ Raidl100, thời gian thực hiện của HGA dùng mã hóa Netkeys là gấp 5 lần so với dùng mã hóa NB với kết quả thu được tương đương.

Phương pháp mã hóa LNB, là sự kết hợp của phương pháp mã hóa NB và LB trong thuật toán lại cho kết quả không tốt hơn kết quả của thuật toán sử dụng các phương pháp mã hóa NB và LB riêng rẽ.

Về tốc độ hội tụ thì thuật toán dùng phương pháp mã hóa NB cho tốc độ hội tụ nhanh nhất so với các phương pháp mã hóa khác. Trong hình 5-1 so sánh tốc độ hội tụ của thuật toán dùng hai phương pháp mã hóa CB-TCR và NB, ta thấy số thế hệ hội tụ của NB thường nhỏ hơn của CB-TCR ít nhất là 2 lần. Ưu điểm về tốc độ hội tụ là một lý do mà ta có thể chọn phương pháp mã hóa NB để sử dụng khi thực hiện trên các bài toán kích thước lớn vì khi đó ta có thể thu được một lời giải xấp xỉ tốt trong một thời gian hợp lý.

~ 105 ~

Một phần của tài liệu Nghiên cứu ảnh hưởng của chất liệu sợi dệt và quá trình nhuộm tới khả năng ngăn ngừa tia uv của vải (Trang 96)