Chương 3. Thực nghiệm
2.1Giới thiệu thực nghiệm
Chương này trình bày về thực nghiệm của thuật toán HLNS để so sánh hiệu năng của thuật toán so với các thuật toán khác. Chương trình được thử nghiệm trên máy tính intel core-i7-8700 CPU 3.20 GHz, 6 cores, 12 threads và bộ nhớ RAM 8 Gb. Chương trình được thực thi trên hệ điều hành LINUX, ngôn ngữ java 1.8. Mọi lần thử nghiệm đều được tiến hành trên một luồng.
Chương trình được thử nghiệm trên hai bộ dữ liệu DIMACS và BHOSLIB được lấy tại địa chỉ: https://w1.cirrelt.ca/∼vidalt/en/research-data.html. Trong đó bộ dữ liệu DIMACS là bộ dữ liệu của viện toán học thuộc trung tâm toán học rời rạc và khoa học máy tính Rutgers (http://dimacs.rutgers.edu/). Đây là bộ dữ liệu được công bố để thực hành các thuật toán cho một số vấn đề mà trung tâm đưa ra. Bộ dữ liệu BHOSLIB được lấy từ dữ liệu thuôc học viện hàng không vũ trụ Bắc Kinh (http://www.buaa.edu.cn/). Đây là bộ dữ liệu dành cho các vấn đề liên quan đến đồ thị để thử nghiệm hiệu năng của các bài toán (Maximum Clique, Maximum Independent Set, Minimum Vertex Cover and Vertex Coloring). Thuật toán được thử nghiệm trên 51 dữ liệu thuộc bộ dữ liệu DIMACS và 41 dữ liệu thuộc bộ dữ liệu BHOSLIB. Số lượng các đỉnh và cạnh thuộc hai bộ dữ liệu trên từ 200 đến 4000 đỉnh và số cạnh từ 200 đến 1 triệu cạnh. Thuật toán thử nghiệm với trường hợp trọng số các đỉnh theo công thức w(u) = u mod 200 + 1.
Các trọng số được sử dụng trong thuật toán lần lượt trong bảng (3.1). Các trọng số trên được hiệu chỉnh thông qua các thực nghiệm khởi đầu và được lựa chọn cho đến khi các tham số phù hợp.
Bảng 1: Tham số cấu hình cho HLNS
Thông số Ký hiệu Giá trị
Số lượng lời giải trong lần duyệt k 4
Xác suất để xóa một đỉnh thống trị 𝛽 Từ 0.2 đến 0.4
Xác xuất để khởi tạo tập đỉnh 𝛾 0.1
Xác xuất để lựa chọn cách chọn đỉnh µ 0.9
Có hai thông số chính để đánh giá thuật toán là giá trị tốt nhất fbest và giá trị trung bình faverage thu được của thuật toán được cho bởi hai công thức (3.1), (3.2).
𝑓𝑏𝑒𝑠𝑡 = 𝑚𝑖𝑛(𝑓1, 𝑓2, … , 𝑓𝑝) (3.1) 𝑓𝑎𝑣𝑒𝑟𝑎𝑔𝑒 =1 𝑝∑ 𝑓𝑖 𝑝 𝑖=1 (3.2)
trong đó fi là kết quả của lần chạy thứ i, p là số lần chạy thuật toán.
Thuật toán được so sánh với các thuật toán tốt nhất hiện nay cho bài toán MWDS là CC2FS, và HTS-DS. Các bảng 2, 3 đưa ra kết quả so sánh của các thuật toán này. Trong đó, các kết quả thực nghiệm của CC2FS, HTS-DS được lấy từ công bố [1]. Theo đó, CC2FS được chạy gần 1000s, còn HTS-DS thực thi với thời gian ít hơn. Từ các kết quả của các bảng 2, 3, ta thấy rõ ràng thuật toán HLNS vượt trội hơn nhiều so với tất cả các thuật toán đã đuợc công bố cả về chất lượng và thời gian thực thi.
Thực nghiệm được bố trí thành 2 loại thử nghiệm:
TH1: Thực nghiệm trên bộ dữ liệu DIMACS với w(u) = u mod 200 + 1, TH2: Thực nghiệm trên bộ dữ liệu BHOSLIB với w(u) = u mod 200 + 1.
2.2Kết quả thực nghiệm
2.2.1 Thực nghiệm trên TH1
Trên bộ dữ liệu DIMACS với trọng số w(u) = u mod 200 + 1, chúng ta thấy rõ ràng thuật toán HLNS vượt trội hơn hẳn so với các thuật toán còn lại về cả chất
lượng lời giải và tốc độ thực thi. Thuật toán CC2FS kém hơn rõ rệt so với các thuật toán còn lại về chất lượng. Trong khi các thuật toán HLNS chạy ổn định trên hầu hết bộ dữ liệu thực nghiệm và tốt hơn HTS-DS.
Bảng 2: Kết quả thực nghiệm trên TH1
STT
Bộ Dữ Liệu CC2FS HTS-DS HLNS
Name |V | |E| Best Avg Best Avg Time Best Avg Time
1 brock200_2 200 10024 23 23 23 23 0.14 23 23 0.10 2 brock200_4 200 6811 68 68 68 68 0.23 68 68 0.10 3 brock400_2 400 20014 65 65 65 65 0.91 65 65.4 0.12 4 brock400_4 400 20035 75 75 75 75 1.1 75 75 0.13 5 brock800_2 800 111434 28 28 28 28 5.19 28 28 1.73 6 brock800_4 800 111957 31 31 31 31 13.98 31 31 1.70 7 C1000.9 1000 49421 191 194.8 191 191 14.87 191 191.1 1.09 8 C2000.5 2000 999164 10 10 10 10 49.81 10 10 24.86 9 C2000.9 2000 199468 130 130 130 130 38.85 130 130 3.94 10 C250.9 250 3141 235 235 235 235 0.18 235 235 0.24 11 C4000.5 500 12418 9 9 9 9 214.9 9 9 110.26 12 c-fat200-1 200 1534 226 226 226 226 0.05 226 226 0.12 13 c-fat200-2 200 3235 57 57 57 57 0.07 57 57 0.17 14 c-fat200-5 200 8473 9 9 9 9 0.08 9 9 0.15 15 c-fat500-1 500 4459 522 522 522 522 0.31 522 522 0.19 16 c-fat500-2 500 9139 261 261 261 261 0.34 261 261 0.21 17 c-fat500-5 500 23191 20 20 20 20 0.52 20 20 0.30 18 gen200-p0.9-44 200 1990 470 470 458 458 2.54 458 464.9 0.04 19 gen200-p0.9-55 200 1990 433 433 433 433 0.15 433 433.3 0.03 20 gen400-p0.9-55 400 7980 288 288 284 284 0.2 284 284.2 0.09 21 gen400-p0.9-65 400 7980 287 287 287 287 0.86 287 290.2 0.10 22 gen400-p0.9-75 400 7980 307 307 307 307 1.15 307 307 0.09 23 hamming10-4 1024 89600 86 86 86 86 0.37 86 86 1.75 24 hamming8-2 256 1024 1744 1744 1737 1737 5.24 1737 1738.3 0.43 25 hamming8-4 256 11776 71 71 68 68 0.28 68 68 0.45 26 johnson32-2-4 496 14880 192 192 192 192 0.53 192 192 0.41 27 keller4 171 5100 220 220 220 220 1.07 220 220 0.21 28 keller5 776 74710 182 182 181 181 0.34 181 181.9 1.42 29 keller6 3361 1026582 80 80 80 80 12.12 80 80 30.18 30 MANN_a27 378 702 405 405 405 405 0.13 405 405 0.07 31 MANN_a45 1035 1980 1080 1080 1080 1080 0.84 1080 1080 0.13 32 MANN_a81 3321 6480 3402 3402 3402 3402 8.58 3402 3402 0.24 33 p-hat1500-1.clq 1500 284923 56 56 56 56 32.04 56 56 39.50 34 p-hat1500-2.clq 1500 568960 14 14 14 14 30.51 14 14 87.33
35 p-hat1500-3.clq 1500 847244 5 5 5 5 31.24 5 5 156.18 36 p0-hat300-1.clq 300 10933 99 99.6 99 99 0.53 99 99 0.29 37 p-hat300-2.clq 300 21928 31 31 31 31 0.43 31 31 0.35 38 p-hat300-3.clq 300 33390 8 8 8 8 0.48 8 8 0.52 39 p-hat700-1.clq 700 60999 67 67 67 67 3.43 67 67 7.24 40 p-hat700-2.clq 700 121728 21 21 21 21 2.98 21 21 10.40 41 p-hat700-3.clq 700 183010 6 6 6 6 3.21 6 6 2.36 42 san1000 1000 250500 8 8 8 8 55.31 6 6 3.11 43 san200-0.7-1 200 5970 73 73 73 73 0.17 73 73 0.22 44 san200-0.7-2 200 5970 53 53 53 53 0.17 53 53 0.19 45 san200-0.9-1 200 1990 368 368 368 368 0.04 368 368 0.16 46 san200-0.9-2 200 1990 406 406 406 406 0.06 406 406 0.15 47 san200-0.9-3 200 1990 328 328 328 328 0.05 328 328 0.16 48 san400-0.5-1 400 39900 16 16 16 16 0.73 16 16 0.73 49 san400-0.7-1 400 23940 44 44 44 44 0.71 44 44 0.56 50 san400-0.7-2 400 23940 42 42 42 42 0.56 42 42 0.52 51 san400-0.7-3 400 23940 40 40 40 40 0.76 40 40 0.51 2.2.2 Thực nghiệm trên TH2
Trên bộ dữ liệu BHOSLIB với trọng số w(u) = u mod 200 + 1, chúng ta thấy rõ ràng thuật toán HLNS chạy tốt hơn hoàn toàn so với thuật toán CC2FS về chất lượng lời giải. Thuật toán HLNS có chất lượng tốt hơn và tốt độ nhanh hơn so với thuật toán HTS-DS, cụ thể các bộ dữ liệu frb45-21-5, frb50-23-5, frb59-26- 2, frb59-26-3, frb59-26-4 đều có chất lượng và thời gian thực thi tốt hơn.
Bảng 3: Kết quả thực nghiệm trên TH2
STT
Bộ Dữ Liệu CC2FS HTS-DS HLNS
Name |V| |E| Best Avg Best Avg Time Best Avg Time
1 frb30-15-1 450 17827 214 214 212 212 12.96 212 212 0.53 2 frb30-15-2 450 17874 242 242 242 242 4.46 242 242 0.53 3 frb30-15-3 450 17809 175 175 175 175 6.75 175 175 0.54 4 frb30-15-4 450 17831 166 167 166 166 4.54 166 167.2 0.49 5 frb30-15-5 450 17794 160 160 160 160 5.39 160 160 0.46 6 frb35-17-1 595 27856 274 274 274 274 13.88 274 274 0.76 7 frb35-17-2 595 27847 208 208 208 208 5.66 208 208.8 0.69 8 frb35-17-3 595 27931 201 201 201 201 6.11 201 201 0.75 9 frb35-17-4 595 27842 287 287 286 286 16.47 286 286 0.74 10 frb35-17-5 595 28143 295 297 295 295 3.97 295 295.4 0.69 11 frb40-19-1 760 41314 262 262 262 262 6.3 262 262 0.92 12 frb40-19-2 760 41263 243 244 243 243 25.05 243 243 1.03
13 frb40-19-3 760 41095 252 252 250 250 24.52 250 251.3 1.06 14 frb40-19-4 760 41605 250 250 249 249 22.39 250 250 0.99 15 frb40-19-5 760 41619 272 283 272 272 19.84 272 272 1.03 16 frb45-21-1 945 59186 328 334 328 328 23.98 328 328 6.28 17 frb45-21-2 945 58624 259 259 259 259 27.22 259 259 6.02 18 frb45-21-3 945 58245 233 234 233 233 41.14 233 233 5.78 19 frb45-21-4 945 58549 399 399 399 399 24.82 399 399 6.39 20 frb45-21-5 945 58579 318 318 312 313 28.68 312 312.1 6.67 21 frb50-23-1 1150 80072 261 268 261 261 49.65 261 261 7.97 22 frb50-23-2 1150 80851 277 277 277 277 50.39 277 277 10.27 23 frb50-23-3 1150 81068 297 298 281 281 39.22 281 282.6 8.32 24 frb50-23-4 1150 80258 265 265 265 265 59.52 265 265 8.09 25 frb50-23-5 1150 80035 415 421 404 408 33.8 402 402.4 8.15 26 frb53-24-1 1272 94227 229 229 229 229 27.07 229 229 19.44 27 frb53-24-2 1272 94289 298 300 298 298 108.5 298 298 19.50 28 frb53-24-3 1272 94127 182 182 182 182 66.35 182 182 17.73 29 frb53-24-4 1272 94308 189 189 189 189 88.61 189 189 17.13 30 frb53-24-5 1272 94226 204 204 204 204 24.37 204 204 17.52 31 frb56-25-1 1400 109676 229 229 229 229 33.54 229 229 18.73 32 frb56-25-2 1400 109401 319 319 319 319 45.2 319 319 20.66 33 frb56-25-3 1400 109379 336 343 336 336 50.85 336 336 20.43 34 frb56-25-4 1400 110038 268 268 265 265 52.85 265 265 22.52 35 frb56-25-5 1400 109601 426 430 408 411 39.96 408 411.9 53.31 36 frb59-26-1 1534 126555 262 263 262 263 59.98 262 262 22.24 37 frb59-26-2 1534 126163 383 389 383 387 49.61 383 383 26.56 38 frb59-26-3 1534 126082 248 248 246 247 108.5 246 246 26.14 39 frb59-26-4 1534 127011 248 248 248 248 111.4 247 247.9 24.32 40 frb59-26-5 1534 125982 290 291 288 288 123.5 288 289.8 2.82 41 frb100-40 4000 572774 350 350 350 350 300.2 350 350 156.34
Chương 4. Ứng dụng chọn người điều hành cho nhóm moderator-selector
4.1Giới thiệu ứng dụng chọn người điều hành cho nhóm moderator-selector
Ngày nay, hầu như mọi người đều tham gia vào ít nhất một nhóm người nào đó. Các nhóm đó thường ở trong một tổ chức nào đó tồn tại trong thế giới loài người. Các tổ chức đó được chia thành các loại như sau:
1.đơn vị hành chính nhà nước, 2.các cơ quan, đoàn thể,
3.các tổ chức dân sự tự phát.
Trong đó, các đơn vị hành chính nhà nước gồm các tổ chức bên trong nhà nước như các đơn vị hành chính cấp xã, huyện, tỉnh, đất nước. Chẳng hạn, cấp tỉnh gồm có hội sổ xố, hội người già, hội khuyến nông, ... Các cơ quan đoàn thể gồm có các doanh nghiệp, công ty, tập đoàn tư nhân. Các tổ chức dân sự tự phát gồm các nhóm hội được thành lập dân sự có cùng ý chí, nguyện vọng, tư tưởng với nhau tụ hợp nhau cho một mục tiêu nào đó. Các tổ chức này có thể là các tổ chức buôn bán tại các chợ, các tổ chức trên mạng xã hội, ...
Mỗi nhóm trong mỗi tổ chức gồm một tập hợp nhóm người có tương tác qua lại để phục vụ cho mục tiêu của nhóm. Các nhóm này có kích cỡ phụ thuộc vào cấu trúc của các tổ chức nó. Ví dụ các hội người già ở cấp tỉnh có từ vài nghìn đến vài chục nghìn, các hội nhóm tình nguyện trên nhà nước có vài nghìn đến vài chục nghìn. Các nhóm này thường được vận hành theo cơ chế phân quyền, trong đó các thành viên sẽ chịu sự quản lý của một nhóm người điều hành (moderators). Một lượng nhỏ các nhóm còn lại có thể hoạt động theo cơ chế mở và ít chịu sự tác động của người điều hành. Tuy nhiên, các nhóm này vẫn chịu tác động chính từ một số các người dùng nổi bật. Để có thể vận hành hoặc tương tác với nhóm tốt hơn, mỗi nhóm cần chọn ra một tập các người điều hành hoặc là tập các người nổi bật.
Sự tương tác giữa các người dùng trong cùng một nhóm tạo nên đồ thị với các đỉnh là các người dùng, mỗi cạnh thể hiện sự tương tác giữa hai người dùng. Mỗi người dùng có một giá trị gọi là điểm đánh giá mức độ ảnh hưởng có thể có cho nhóm. Giá trị này có thể phụ thuộc vào thời gian người dùng đó dành cho nhóm, của cải vật chất của người dùng cho nhóm, quyền lực chính trị của người
đó, ... Ngoài ra, các điều kiện ràng buộc cho người dùng cũng có thể được thêm vào để giúp việc lựa chọn người điều hành tốt hơn ví dụ như không chọn người nào trên 60 tuổi. Từ đây, lời giải của bài toán tìm tập đỉnh thống trị có trọng số nhóm nhất được áp dụng cho ứng dụng này.
Luận văn trình bày về ứng dụng moderator-selector để lựa chọn người điều hành cho một nhóm người (xem hình 4.1). Ứng dụng được viết bằng C++ với QT framework và chạy trên môi trường Linux. Ứng dụng cho phép người dùng xử lý trên các tệp dịnh dạng json với định dạng như sau: trong đó, names là trường có giá trị là môt mảng các tên của người dùng, values là trường có giá trị là một mảng tên giá trị của người dùng tương ứng, v1, v2 lần lượt có giá trị là các mảng chứa số thứ tự của người dùng và v1(i) và v2(i) thể hiện mối quan hệ của người dùng thứ v1(i) và v2(i).
{
"names" : Danh sách các người dùng "values" : Danh sách các giá trị tương ứng "v1" : Danh sách các chỉ số người dùng "v2" : Danh sách các chỉ số người dùng }
4.2Cách sử dụng ứng dụng
Hình 3: Ứng dụng moderators-selector
Ứng dụng moderators-selector (xem hình 3) được sử dụng để chọn lựa những nhà điều hành một nhóm một cách hiệu quả, giúp việc quản lý và vận hành tổ chức tốt hơn các cách thông thường, với sự lựa tối ưu từ các thông số cần thiết được truyền vào ứng dụng.
Để lựa chọn một tệp đầu vào, người dùng nhấn chuột trái vào thẻ File và chọn “Open” (hoặc có thể sử dụng tổ hợp phím “CTRL + O”) (xem hình 4).
Hình 4: Mở một tệp đầu vào dưới định dạng json
Sau khi mở một tệp đầu vào, danh sách người dùng, giá trị của họ sẽ được hiển thị ra trên màn hình (xem hình 5). Trong danh sách này, tên người dùng và giá trị tương ứng ở cột 1, và 2 theo thứ tự xuất hiện trong tệp đầu vào.
Hình 5: Hiển thị tên người dùng và giá trị của họ
Mối tương tác giữa người dùng sẽ được hiển thị trong thẻ “user interactions”, theo thứ tự xuất hiện trong tệp đầu vào (xem hình 6).
Hình 6: Hiển thị mối liên hệ giữa các người dùng
Sau khi đã tải dữ liệu vào chương trình, người dùng có thể nhấn chuột trái vào thẻ “Tools” và chọn “Run” hoặc sử dụng tổ hợp phím ALT + R. Sau khi thực hiện thao tác trên, chương trình sẽ bắt đầu lựa chọn những người điều hành và hiển thị họ ở trên màn hình trong thẻ moderators. Bên cạnh đó, số lượng người được