Xử lý song song và quy tắc cập nhật mùi mới Max-Min trơn (SMMAS)

Một phần của tài liệu Thuật toán ACO và ứng dụng vào tối ưu hóa (Trang 50 - 60)

4.1 Kết quả thực nghiệm

4.1.3 Xử lý song song và quy tắc cập nhật mùi mới Max-Min trơn (SMMAS)

Tính toán song song nhằm mục đích cải thiện thời gian tính toán, cần thiết đối với những bộ dữ liệu lớn.

Theo tư tưởng của thuật toán Generic ACO (xem hình 3.2) tại mỗi lần lặp các con kiến thực hiện độc lập, chọn cho mình một bộ SNP và tính cho mỗi bộ mà kiến chọn. Sau đó tiến hành cập nhật lại mùi cho mỗi vị trí.

Cập nhật mùi dựa vào (xem công thức 3.3). Quá trình tính toán ảnh hưởng nhiều đến thời gian thực hiện của thuật toán, phụ thuộc vào số lượng cá thể. Nếu mẫu cá thể càng lớn thì càng mất nhiều thời gian tính toán cho . Trong mục 3.3.3.3 nêu cách tính trong bài toán, xét giá trị (k là số vị trí tương tác) với hai nhóm: Cá thể bị bệnh và không bị bệnh, thực hiện tính lần lượt các giá trị với số mẫu cá thể.

Để giảm thời gian tính toán, phân chia số lượng cá thể làm nhiều đoạn thực hiện song song hóa. Sử dụng thư viện hỗ trợ OpenMP, gồm chỉ thị: #pragma omp parallel for và #pragma omp atomic.

Chỉ thị #pragma omp parallel for: Là chỉ thị để OpenMp song song hóa một vòng lặp for bằng cách chia từng đoạn cho các luồng sẽ thực hiện. Ví dụ, với số mẫu cá thể là 2000, vòng lặp for lặp 2000 lần, lúc này CPU hỗ trợ 4 luồng, mỗi luồng thực hiện 2000/4= 500 lần lặp cho từng phần.

Chỉ thị #pragma omp atomic: Chỉ thị nhằm mục đích giúp không xảy ra tranh chấp giữa các luồng khi cùng ghi kết quả.

Hình 4.5 Minh họa OpenMp Quy tắc cập nhật mùi SMMAS

Được Đỗ Đức Đông đề xuất năm 2012[1] và được trình bày trong công thức 1.11. Trong bài báo quy tắc cập nhật mùi được xác định (công thức 3.3)

Quy tắc cập nhật mùi mới SMMAS:

(4.1) Trong đó: ; = và

= N.k.

với k=

(N là số đỉnh).

Kết quả thực nghiệm

Gọi kết quả của bài báo ban đầu là kết quả của thuật toán AntEpiSeeker(1) và kết quả với quy tắc cập nhật mùi mới SMMAS là thuật toán AntEpiSeeker(2).

Đo thời gian chạy

Chạy với bộ dữ liệu của bài báo đưa ra gồm 2000 cá thể (1000 cá thể bị bệnh và 1000 cá thể không bệnh) với 2000 SNPs. Thực hiện chạy lại với số lần lặp cho từng bộ kích thước lớn và nhỏ tương ứng là: iItCountLarge =150; iItCountSmall =300. Ngoài ra chạy với bộ dữ liệu giả lập tạo ra gồm 4000 cá thể (2000 cá thể bị bệnh và 2000 cá thể không bệnh) với 2000SNPs (xem bảng 4.5).

Mỗi hàng tương ứng với một thuật toán theo thứ tự lần lượt: AntEpiSeeker(1)- thuật toán với quy tắc cập nhật mùi mà bài báo đưa ra; AntEpiSeeker(2)- thuật toán của bài báo với quy tắc cập nhật mùi mới SMAAS; xử lý song song. Đơn vị đo thời gian chạy giữa các thuật toán là giây.

Bảng 4.5 Thời gian chạy của các thuật toán 2000 cá thể

Thuật toán Thời gian chạy (giây) AntEpiSeeker(1) 141.616269 AntEpiSeeker(2) 142.826185

Xử lý song song 94.603610

4000 cá thể

AntEpiSeeker(1) 320.861683 AntEpiSeeker(2) 321.931098 Xử lý song song 211.208410 Nhận xét:

Thời gian chạy của AntEpiSeeker(1) và AntEpiSeeker(2) xấp xỉ nhau, thời gian chạy của xử lý song song nhanh hơn khoảng gần 1.5 lần so với hai thuật toán trên. Qua kết quả trên bảng 4.5, xử lý song song sẽ giúp cải tiến thời gian của thuật toán đáng kể, đặc biệt cần thiết khi thực hiện tính toán với những bộ dữ liệu lớn.

Đo độ chính xác của thuật toán thông qua trị số Pvalue

So sánh thuật toán của bài báo và thuật toán sau khi cập nhật vết mùi mới dựa vào trị số Pvalue, kết quả ra của thuật toán nào có càng nhiều giá trị nhỏ hơn thì thuật toán đó được đánh giá cao hơn vì có nhiều kết quả có ý nghĩa thống kê. Ý nghĩa của trị số Pvalue được trình bày trong mục 3.3.3.2.

Chạy bộ dữ liệu của bài toán gồm 2000 cá thể (1000 cá thể bị bệnh và 1000 cá thể không bệnh) với 2000 SNPs. Thực hiện chạy lại với số lần lặp cho từng bộ kích thước lớn và nhỏ tương ứng là: iItCountLarge =150; iItCountSmall =300. Kết quả được tổng hợp trong bảng 4.6.

Bảng 4.6 Kết quả thực nghiệm chung iItCountLarge = 150; iItCountSmall =300

ngưỡng)

AntEpiSeeker(1) AntEpiSeeker(2)

10-5 1(3.2x10-6) 5(3.1x10-6)

10-4 4(3.4x10-5) 14(3.5x10-5)

10-3 21(4.1x10-4) 35(3.8x10-4)

10-2 40(5x10-3) 60(5x10-3)

Nhận xét:

Trong bảng 4.6 gồm ba cột. Cột một chứa giá trị mang ý nghĩa thống kê hay hiểu là một ngưỡng để so sánh. Cột thứ hai và cột thứ ba tương ứng với số lượng các bộ có giá trị Pvalue thỏa mãn mức ý nghĩa thống kê, nghĩa là sẽ lấy những bộ có giá trị Pvalue nhỏ hơn ngưỡng đặt ra. Xét trên hai hai thuật toán AntEpiSeeker(1) và AntEpiSeeker(2) thuật toán nào có càng nhiều giá trị Pvalue nhỏ thì thuật toán đó được đánh giá là tốt hơn. Theo như trình bày về ý nghĩa của trị số Pvalue trong mục 3.3.3.2 giá trị Pvalue càng nhỏ chứng tỏ kết quả tìm ra càng có ý nghĩa thống kê. Nhìn vào bảng 4.7 với = 10-5 và 10-4 thì thấy số lượng giá trị Pvalue của thuật toán AntEpiSeeker(2) nhỏ hơn ngưỡng này gồm có 19 giá trị, trung bình cho mỗi giá trị 3.1x10-6 tương ứng với 19 bộ SNP nhận giá trị 3.1x10-6 và gấp hơn 3 lần so với thuật toán AntEpiSeeker(1). Tương tự với các mức ý nghĩa thống kê khác. Từ đó ta có thể thấy thuật toán AntEpiSeeker(2) với quy tắc cập nhật mùi mới SMMAS tốt hơn quy tắc cập nhật mùi của bài báo đưa ra.

Bảng 4.7 Liệt kê những bộ SNPs giống nhau iItCountLarge = 150; iItCountSmall =300 Bộ SNP

Pvalue

AntEpiSeeker(1) AntEpiSeeker(2) 1561(rs1561) 1993(rs1993) 8.3x10-5 8.3x10-5

44(rs44) 1609(rs1609) 1.9x10-3 1.9x10-3

131(rs131) 1655(rs1655) 7.2x10-5 7.2x10-5

1154(rs1154) 1893(rs1893) 3.9x10-5 3.9x10-5

Nhận xét:

Bảng 4.7 gồm hai cột, cột thứ nhất là chứa những bộ SNP giống nhau, cột thứ hai ghi giá trị Pvalue của từng bộ tương ứng cho hai thuật toán AntEpiSeeker(1) và thuật toán AntEpiSeeker(2).

Trong bảng 4.8 đưa ra các vị trí cùng xuất hiện ở hai thuật toán AntEpiSeeker(1) và thuật toán AntEpiSeeker(2), nhưng mỗi vị trí ở các bộ SNPs và giá trị Pvalue khác nhau. Bảng 4.8 bao gồm ba cột, mỗi cột tương ứng lần lượt là: Vị trí, bộ SNP và giá trị Pvalue. Trong cột vị trí, sẽ đưa ra các vị trí cùng xuất hiện ở cả thuật toán AntEpiSeeker(1) và thuật toán AntEpiSeeker(2), mỗi vị trí kết hợp với một vị trí khác tương ứng được cho vào cột chứa bộ SNP, cột cuối cùng đưa ra kết quả giá trị Pvalue của mỗi bộ trong hai thuật toán tương ứng.

Bảng 4.8 Liệt kê những vị trí giống nhau iItCountLarge = 150; iItCountSmall =300

Vị trí

Bộ SNP

P value AntEpiSeeker

(1)

AntEpiSeeker (2)

AntEpiSeeker (1)

AntEpiSeeker (2) rs24 24(rs24) 15(rs15) 1577(rs1577)24(rs24) 2.9x10-4 1.1x10-3 rs1312 1312(rs1312)

553(rs553)

1312(rs1312)

239(rs239) 7.9x10-4 4x10-4

rs553 553(rs553)595(rs595) 1.2x10-4

rs1104 1104(rs1104) 1031(rs1031)

1104(rs1104)

1703(rs1703) 9.9x10-4 9.5x10-3

rs1031 1031(rs1031)

447(rs447) 6.6x10-3

rs932 806(rs806) 1071(rs1071)

1071(rs1071)

932(rs932) 1.4x10-4 5.2x10-4 rs772 1471(rs1471)

772(rs772)

772(rs772)

1610(rs1610) 4.7x10-4 2.5x10-3 rs971 231(rs231)971(rs971) 971(rs971)428(rs428) 2.2x10-3 6.7x10-3 rs1283 1283(rs1283)

1081(rs1081)

886(rs886)

1283(rs1283) 5.7x10-4 7.6x10-4 rs112 130(rs130)112(rs112) 112(rs112)204(rs204) 2.2x10-3 7.7x10-4 rs1207 1207(rs1207)

523(rs523)

1207(rs1207)

701(rs701) 2x10-3 6.1x10-3

rs576 576(rs576) 1925(rs1925)

1062(rs1062)

576(rs576) 5.2x10-4 1.7x10-4 rs802 802(rs802)289(rs289) 802(rs802) 57(rs57) 2.9x10-4 2.9x10-5 rs700 700(rs700)

1431(rs1431)

1574(rs1574)

700(rs700) 3.7x10-4 1.6x10-6 rs204 204(rs204)817(rs817) 112(rs112)204(rs204) 2.6x10-4 7.7x10-4 rs810 89(rs89) 810(rs810) 810(rs810)805(rs805) 4.3x10-4 7.7x10-4 rs1770 1770(rs1770)

1110(rs1110)

1859(rs1859)

1770(rs1770) 3.2x10-4 1.1x10-3 rs1764 1764(rs1764)

573(rs573)

1345(rs1345)

1764(rs1764) 1.1x10-3 3.2x10-4 rs424 424(rs424)235(rs235) 424(rs424)846(rs846) 7.1x10-4 2.3x10-4

Nhận xét:

Số vị trí trùng nhau có 28 vị trí, trong đó có 2 vị trí cùng bộ SNP của thuật toán AntEpiSeeker(1) nhưng lại thành 2 bộ SNP khác nhau đối với thuật toán AntEpiSeeker(2). Ví dụ: Trong thuật toán AntEpiSeeker(1) có một bộ SNP 1104(rs1104)- 1031(rs1031) nhưng trong thuật toán AntEpiSeeker(2) từ hai vị trí đó có hai bộ SNP khác nhau, mỗi bộ chứa một vị trí trong bộ SNP của thuật toán AntEpiSeeker(1): 1104(rs1104) - 1703(rs1703)1031(rs1031)- 447(rs447). Tổng thể, từ các vị trí chung những bộ được tạo ra từ 28 vị trí chung, đối với thuật toán AntEpiSeeker(2) có giá trị Pvalue của các bộ là nhỏ hơn.

Lần hai thực hiện chạy với số lần lặp cho từng bộ kích thước lớn và nhỏ tương ứng là: iItCountLarge = 2500; iItCountSmall =5000. Kết quả được tổng hợp trong bảng 4.9.

rs1658 1671(rs1671) 1658(rs1658)

1658(rs1658)

283(rs283) 1.2x10-3 4.3x10-5 rs1437 1437(rs1437)

499(rs499)

684(rs684)

1437(rs1437) 2.8x10-3 6.6x10-4 rs403 403(rs403)785(rs785) 268(rs268)403(rs403) 6.7x10-3 1.6x10-3 rs922 922(rs922)

800(rs800)

922(rs922)

1873(rs1873) 6.7x10-4 8.2x10-4 rs805 805(rs805)

1845(rs1845)

810(rs810)

805(rs805) 4.2x10-3 7.7x10-4

rs1845 1845(rs1845)

110(rs110) 1.0x10-4

rs1335 1335(rs1335) 348(rs348)

1742(rs1742)

1335(rs1335) 1.4x10-3 4.3x10-3 rs1553 1586(rs1586)

1553(rs1553)

1553(rs1553)

1808(rs1808) 5.8x10-3 1.2x10-3 rs1642 26(rs26)

1462(rs1462)

1462(rs1462)

743(rs743) 2.3x10-3 2.8x10-3

Bảng 4.9 Kết quả thực nghiệm chung iItCountLarge = 2500; iItCountSmall =5000

(ngưỡng)

AntEpiSeeker(1) AntEpiSeeker(2)

10-5 5(3.1x10-6)

10-4 5(2.3x10-5) 10(7.5x10-5)

10-3 11(4.1x10-4) 43(3.8x10-4)

10-2 64(5x10-3) 47(5x10-3)

Nhận xét:

Nhìn vào kết quả của bảng 4.9 cho thấy, với số lần lặp lớn, thuật toán AntEpiSeeker(1) về độ phát hiện tương tác liên quan đến bệnh với khả năng phát hiện theo hướng giảm hơn so với lần lặp nhỏ trong bảng 4.6. Ngược lại, thuật toán AntEpiSeeker(2) có theo hướng ổn định hơn. Với giá trị = 10-2 , thuật toán AntEpiSeeker(1) đang có 40 giá trị thuộc vào ngưỡng có giá trị 10-2, với số lần lặp lớn thì tăng lên thêm 24 bộ SNP. Đối với thuật toán AntEpiSeeker(2) giảm 13 bộ SNP có giá trị thuộc vào ngưỡng có giá trị 10-2 và tăng 18 bộ SNP thuộc vào ngưỡng có giá trị 10-3.

Dựa vào hai lần kết quả thực nghiệm với số lần lặp lớn và số lần lặp nhỏ, thấy thuật toán AntEpiSeeker với quy tắc cập nhật mùi mới SMAAS tốt hơn so với quy tắc cập nhật mùi theo bài báo đưa ra.

Với số lần lặp lớn, số bộ SNP giống nhau ở cả hai thuật toán cũng là 4 bộ SNPs (xem trong bảng 4.10).

Bảng 4.10 Liệt kê những bộ SNPs giống nhau iItCountLarge = 2500; iItCountSmall =5000 Bộ SNP

Pvalue

AntEpiSeeker(1) AntEpiSeeker(2)

1008(rs1008) 576(rs576) 1.7x10-4 1.7x10-4

2737(rs737) 1217(rs1217) 5.8x10-4 5.8x10-4

420(rs420) 373(rs373) 2.5x10-3 2.5x10-3

1915(rs1915) 1016(rs1016) 6.4x10-4 6.4x10-4

Số vị trí giống nhau với lần lặp hai ở cả hai thuật toán nhiều hơn so với lần lặp một là 11 vị trí (xem trong bảng 4.11).

Bảng 4.11 Liệt kê những vị trí giống nhau iItCountLarge = 2500; iItCountSmall =5000

Vị trí

Bộ SNP

P value AntEpiSeeker

(1)

AntEpiSeeker (2)

AntEpiSeeker (1)

AntEpiSeeker (2) rs1561 1561(rs1561)

402(rs402)

1993(rs1993)

1561(rs1561) 2.9x10-3 8.3x10-5 rs204 204(rs204)347(rs347) 204(rs204)129(rs129) 1.9x10-4 7.6x10-4 rs958 656(rs656)

958(rs958)

1462(rs1462)

958(rs958 9.5x10-4 4.7x10-4 rs265 1455(rs1455)

265(rs265)

1267(rs1267)

265(rs265) 1.8x10-3 4.4x10-3 rs631 631(rs631)

1481(rs1481)

904(rs904)

631(rs631) 1.2x10-3 3.6x10-4 rs1764 1345(rs1345)

1764(rs1764)

1764(rs1764)

1184(rs1184) 3.2x10-4 5.4x10-4 rs1763 1673(rs1673)

1763(rs1763)

1100(rs1100)

1763(rs1763 3.1x10-3 3.9x10-3 rs1610 1610(rs1610)

111(rs111))

1610(rs1610)

202(rs202) 3.9x10-3 1.5x10-3

rs291 291(rs291) 1708(rs1708)

291(rs291)

1773(rs1773) 1.5x10-3 5.1x10-3

rs1708 925(rs925)

1708(rs1708) 8.6x10-4

rs806 1678(rs1678) 806(rs806)

806(rs806)

1071(rs1071) 8x10-4 1.3x10-4 rs846 617(rs617)846(rs846) 846(rs846)424(rs424) 1.3x10-3 2.3x10-4 rs1276 933(rs933)

1276(rs1276)

1339(rs1339)

1276(rs1276) 1.5x10-3 2.3x10-4 rs1278 1278(rs1278)

44(rs44)

261(rs261)

1278(rs1278) 5.7x10-4 9.8x10-5 rs1593 1593(rs1593)

1120(rs1120)

587(rs587)

1593(rs1593) 3.8x10-3 7.7x10-4 rs525 1480(rs1480)

525(rs525)

525(rs525)

1320(rs1320) 1.1x10-5 4.2x10-6 rs1173 1173(rs1173)

1991(rs1991)

928(rs928)

1173(rs1173) 5.2x10-5 1.1x10-4 rs1802 1802(rs1802)

1475(rs1475)

242(rs242)

1802(rs1802) 6.7x10-3 1.9x10-3

rs1475 1352(rs1352)

1475(rs1475) 3x10-3 3.7x10-3 rs1606 1606(rs1606)

1373(rs1373)

555(rs555)

1606(rs1606) 1.2x10-3 4.7x10-4 rs1568 1827(rs1827)

1568(rs1568)

1568(rs1568)

455(rs455) 3.6x10-3 1.6x10-4 rs1364 1364(rs1364)

1482(rs1482)

369(rs369)

1364(rs1364) 2x10-3 6.9x10-4 rs1447 270(rs270)

1447(rs1447)

1808(rs1808)

1447(rs1447) 1.4x10-3 1x10-3 rs148 1254(rs1254)

148(rs148)

1742(rs1742)

148(rs148) 5.1x10-3 2.9x10-3 rs633 633(rs633)

1068(rs1068)

528(rs528)

633(rs633) 1.7x10-3 4.5x10-4 rs928 1966(rs1966)

928(rs928)

928(rs928)

1173(rs1173) 6x10-3 1.1x10-4 rs1417 1417(rs1417)

1689(rs1689)

1417(rs1417)

1937(rs1937) 3.6x10-3 8x10-3

rs1689 677(rs677) 1.5x10-3

Nhận xét:

Cột một chứa các vị trí, cột hai là số bộ SNP trong đó có một vị trí giống nhau và cột ba chứa giá trị của các bộ trong hai thuật toán AntEpiSeeker(1) và AntEpiSeeker(2). Trong bảng hai, giá trị của thuật toán AntEpiSeeker(2) của các bộ nhỏ hơn so với thuật toán AntEpiSeeker(1).

Một phần của tài liệu Thuật toán ACO và ứng dụng vào tối ưu hóa (Trang 50 - 60)

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

(64 trang)