1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề ỨNG DỤNG GIẢI THUẬT DI TRUYỀN CHO BÀI TOÁN LẬP LỊCH TỔNG ĐÀI FPT

22 732 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 852 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Một trong những lĩnh vực đó là kỹ thuật tính toán thông minh Computational Intelligent trong đó có Thuật giải Di truyền Geneic Algorithms - GA đã đem lại những phương pháp mới để giải c

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

BÀI THU HOẠCH MÔN:

THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ

ĐỀ TÀI:

ỨNG DỤNG GIẢI THUẬT DI TRUYỀN CHO BÀI TOÁN LẬP LỊCH TỔNG ĐÀI FPT

Giảng viên phụ trách: PGS, TS ĐỖ VĂN NHƠN

Học viên thực hiện: Lê Phước Vinh

TP HỒ CHÍ MINH, THÁNG 10/2014

Trang 2

MỤC LỤC

DANH MỤC HÌNH 2

MỞ ĐẦU 3

I Tổng quan về thuật giải Di truyền: 4

1 Thuật giải Di truyền: 4 2 Các yếu tố của thuật toán Di truyền đơn giản 4 3 Sơ đồ thực hiện thuật giải Di truyền 6 4 Mở rộng thuật giải Di truyền 7 5 Thuật giải Di truyền so với các phương pháp truyền thống 9 6 Các ứng dụng của thuật giải Di truyền 10 6.1 Tối ưu hoá và máy học: -10

6.2 Ghi ảnh y học với Thuật giải Di truyền -10

6.3 Bài toán sắp xếp lịch trực -11

6.4 Một số ứng dụng khác -11

II Bài toán xếp lịch trực ở tổng đài 12

1 Giới thiệu bài toán xếp lịch trực 12 2 Quy trình, các ràng buộc và mô hình toán học 12 2.1 Mô tả quy trình làm việc ở tổng đài -12

2.2 Mô hình toán học -13

3 Áp dụng giải thuật Di truyền vào bài toán xếp lịch 14 3.1 Biểu Diễn quần thể -15

3.2 Đánh giá cá thể -15

3.3 Các toán tử -16

3.4 Chiến lược tìm kiếm -16

4 Thực nghiệm 17 4.1 Chuẩn bị dữ liệu -17

4.2 Kịch bản test -17

4.3 Giao Diện của và kết quả của chương trình -17

Trang 3

III Kết luận 19 Tài liệu tham khảo 20

Trang 4

DANH MỤC HÌNH

Hình 1 – Sơ đồ thực hiện Thuật giải Di truyền 8 Hình 2 – Giao Diện chính của chương trình Sắp Lịch Trực tự động 19 Hình 3 – Kết quả Lịch Trực sau khi xuất ra bảng dạng HTML 20

Trang 5

MỞ ĐẦU

1 Đặt vấn đề:

Hiện tại và trong tương lai, trí tuệ nhân tạo (Artificial Intelligent) đã, đang và sẽ

được nghiên cứu, phát triển rất mạnh mẽ và được ứng dụng rộng rãi Đây là một lĩvấn

đề lớn trong khoa học máy tính, bao gồm nhiều lĩnh vực khác nhau

Một trong những lĩnh vực đó là kỹ thuật tính toán thông minh (Computational Intelligent) trong đó có Thuật giải Di truyền (Geneic Algorithms - GA) đã đem lại

những phương pháp mới để giải các bài toán mà nếu áp dụng phương pháp truyềnthống sẽ gặp nhiều khó khăn hoặc sẽ tốn nhiều chi phí

Xuất phát từ nhu cầu thực tế Công ty FPT cần xếp lịch trực tổng đài cho các nhânviên của công ty trong 1 tuần, 1 tháng Trong nội dung bài thu hoạch này tôi xin trìnhbày việc ứng dụng giải thuật Di truyền để giải quyết vấn đề trên

2 Sự cần thiết của vấn đề:

Trong lĩnh vực lập lịch (hay lập thời khóa biểu), giải thuật Di truyền đã thu hútđược rất nhiều các nghiên cứu và đề xuất Lý do cho xu hướng này có thể thấy là bàitoán lập lịch nhìn chung thuộc lớp các bài toán NP-khó (NP hard) và vì vậy, rất cầncác giải thuật xấp xỉ

Về cơ bản, bài toán lập lịch được coi như là việc gán các mốc thời gian (timeslots) thực hiện cho các công việc (tasks) sao cho phù hợp với khả năng về tài nguyên(resources) Tuy nhiên, sự đa dạng thể hiện ở các thể loại ràng buộc khác nhau và mỗimột bài toán thực tế sẽ có những ràng buộc đặc trưng riêng

3 Tổng lược kết quả đã có:

Các nghiên cứu đề xuất giải thuật Di truyền cho bài toán lập lịch luôn luôn là mộtchủ đề nóng Mục đích chính của chuyên đề này là tìm hiểu Thuật giải Di truyền, từ đóđưa ra các phân tích, mô hình toán học, và cuối cùng là cài đặt cụ thể cho bài toán Xếplịch ở tổng đài FPT Telecom để thấy được tính khả thi khi áp dụng vào thực tế ở tổngđài FPT

Tôi xin chân thành cảm ơn thầy PGS, TS Đỗ Văn Nhơn đã tận tình giảng dạy

giúp tôi hoàn thành tốt bài thu hoạch này.

Trang 6

I Tổng quan về thuật giải Di truyền:

1 Thuật giải Di truyền:

Giải thuật Di truyền (GA) là một trong những mô hình tính toán phổ biến vàthành công nhất trong lĩnh vực tính toán thông minh Cùng với các kỹ thuật tínhtoán thông minh khác như tính toán mờ (fuzzy computing), mạng Nơ-ron (neuralnetworks), hệ đa tác tử (multi- agent systems), trí tuệ bầy đàn (swarm intelligence),giải thuật Di truyền ngày càng phát triển, được áp dụng rộng rãi trong các lĩnh vựccủa cuộc sống Có thể nói, GA đã bước đầu được áp dụng thành công trong cáctrường hợp, mà việc mô tả toán học cho bài toán gặp rất nhiều khó khăn Ví dụ: các

hệ thống phức hợp (complex systems) với các hàm mục tiêu ẩn và các mối ràng buộcphức tạp, các bài toán thiết kế với các hàm mục tiêu quá phức tạp không tuyếntính, hay các bài toán lập kế hoạch/lập lịch với không gian tìm kiếm NP-khó (NP-hard) [2]

Thuật giải Di truyền (GA) là kỹ thuật chung giúp giải quyết vấn đề bài toán bằngcách mô phỏng sự tiến hóa của con người hay của sinh vật nói chung (dựa trên thuyếttiến hóa muôn loài của Darwin) trong điều kiện qui định sẵn của môi trường GA làmột thuật giải, nghĩa là mục tiêu của GA không nhằm đưa ra lời giải chính xác tối ưu

mà là đưa ra lời giải tương đối tối ưu.

Các nguyên lý cơ bản của Thuật giải Di truyền được tác giả J.H.Holland công bốlần đầu tiên vào năm 1962 Sau đó, các nền tảng toán học của giải thuật lần đầu tiên

được công bố vào năm 1975 trong cuốn sách “Adaptation in Natural and Artificial System” cũng của tác giả J.H.Holland Có thể nói Holland là người đi tiên phong

nghiên cứu trong lĩnh vực Thuật giải Di truyền cùng với những tác giả Goldbeg,Beglay…

Thuật giải Di truyền là một giải thuật dựa trên cơ chế của chọn lọc tiến hoá trong

tự nhiên: “Trong mọi thế hệ, một tập mới các sinh vật được tạo ra bằng cách lai ghépnhững nhân tố thích nghi nhất với môi trường của những sinh vật trong thế hệ cũ cùngvới sự xuất hiện đột biến ngẫu nhiên của các cá thể trong thế hệ mới” Vận dụng cơchế đó, Thuật giải Di truyền được bắt đầu với một quần thể ngẫu nhiên có n chuỗi , rồisao chép các chuỗi theo khuynh hướng đến cái tốt, ghép cặp và đổi các chuỗi conthành phần, thỉnh thoảng làm đột biến giá trị bit để có số đo tốt

2 Các yếu tố của thuật toán Di truyền đơn giản

Representation (sự biểu Diễn): trong thuật giải Di truyền (GA), giải pháp

tiềm ẩn được mã hóa thành chuỗi các ký tự từ bảng chữ cái, A=a1a2 aL Thường

Trang 7

thì nó là các ký tự nhị phân tuy nhiên cũng có thể là các ký tự mở rộng của bảngchữ cái, thỉnh thoảng sử dụng đọc số.

Thuật toán Di truyền sử dụng ngôn ngữ riêng để mô tả, chuỗi A được gọi lànhiễm sắc thể, những thành phần của chuỗi như a1, a2, được gọi là gen, giá trị màgen nhận được gọi là thuộc tính gen, trong hầu hết các chuỗi nhị phân phổ biến là

0 hoặc 1, ví dụ như trong nhiễm sắc thể A= 11110000 thì 4 gen đầu có thuộc tính

1 còn 4 gen sau có thuộc tính 0

Fitness Function (hàm mục tiêu): Fitness Function có nhiệm vụ tìm ra chuỗi

tối ưu Tính chất tốt của chuỗi được đặc trưng trong GA ở chức năng của nó, cáctính chất này được gọi là chức năng mục tiêu (objective function) và số lượng sẽđược tối ưu hóa Một chức năng cần thiết được dùng gọi là chức năng thích hợp

(Fitness Function) Trong GA, Fitness Function là 1 chức năng chính đơn lẻ của

objective function, nó có nhiệm vụ quyết định chuỗi nào được dùng để nhân lên

hoặc chuỗi nào là không cần thiết và sẽ bị loại bỏ Fitness Function thường xuyên được xác định để tăng chuỗi thích hợp từ đó có những kết quả tương ứng phù hợp

hơn Kiểu Di truyền (genotype) là sự biểu Diễn lại chuỗi, kết quả tạo ra gọi làphenotype Thường thì trong thuật giải Di truyền, có sự khác nhau lớn giữa một sinhvật sinh học (phenotype) và DNA (kiểu Di truyền) của nó Objective function là mộtloại của phenotype, trong GA, Objective function và fitness function thường đượcthay thế cho nhau, fitness được tăng phụ thuộc vào quá trình chọn lọc

Population Dquainter (sự biến động quần thể): Thuật giải Di truyền cung cấp

một phương pháp học được thúc đẩy bởi sự tương tự với sự tiến hóa sinh học Thay vìtìm kiếm các giả thuyết từ tổng quát đến cụ thể hoặc từ đơn giản đến phức tạp, GA tạo

ra các giả thuyết kế tiếp bằng cách lặp việc đột biến và việc tái hợp các phần của giảthuyết được biết hiện tại là tốt nhất Ở mỗi bước, một tập các giả thuyết được gọi làquần thể hiện tại được cập nhật bằng cách thay thế vài phần nhỏ quần thể bởi cá thểcon của các giả thuyết tốt nhất ở thời điểm hiện tại Có nhiều cách thực hiện một giảithuật Di truyền học, ở đây chúng ta xét giải thuật Di truyền học đơn giản với một quầnthể có kích thước N với 3 hoạt động chính của thuật giải:

Quá trình chọn lọc: quá trình này chọn ra một giả thuyết (cá thể) được cho là

tốt nhất trong số các lời giải (quần thể), quá trình này không sinh ra bất kỳ cá thểmới nào, quá trình này lặp lại nhiều lần sẽ chọn ra được ngày càng nhiều những cáthể phù hợp và làm giảm đi những cá thể không cần thiết

Quá trình lai ghép: quá trình này sinh ra hai hay nhiều hơn cá thể mới từ một cặp

cá thể trước đó (gọi là cha mẹ) bằng việc kết hợp một phần chuỗi của cha mẹ

Quá trình đột biến: quá trình này đơn giản thay đổi những đặc tính trong chuỗi

con một cách ngẫu nhiên Mỗi đặc tính được thay đổi với một xác suất nhỏ

Trang 8

3 Sơ đồ thực hiện thuật giải Di truyền

Hình 1 – Sơ đồ thực hiện Thuật giải Di truyền

Đây là sơ đồ chung nhất áp dụng cho rất nhiều lớp bài toán sử dụng Thuật giải Ditruyền Một số khái niệm có thể rất mới mẻ đối với người bắt đầu tìm hiểu về Thuậtgiải Di truyền

Thuật toán cụ thể cho bài toán

GA (Fitness, Fitness_threshold, p, r, m)

{

// Fitness: hàm gán thang điểm ước lượng cho một giả thuyết.

// Fitness_threshold: Ngưỡng xác định tiêu chuẩn dừng giải thuật tìm kiếm // p: Số cá thể trong quần thể giả thuyết.

Trang 9

// r: Phân số cá thể trong quần thể được áp dụng toán tử lai ghép ở mỗi bước // m: Tỉ lệ cá thể bị đột biến.

o Khởi tạo quần thể: P  Tạo ngẫu nhiên p cá thể giả thuyết

o Ước lượng: Ứng với mỗi h trong P, tính Fitness(h)

o while [max Fitness(h)] < Fitness_threshold do

cách áp dụng toán tử lai ghép Thêm tất các các con vào P S

3 Đột biến: Chọn m% cá thể của P S với xác suất cho mỗi cá thể là như

nhau Ứng với mỗi cá thể biến đổi một bit được chọn ngẫu nhiên trong cách thểhiện của nó

4 Cập nhật: P  P S

5 Ước lượng: Ứng với mỗi h trong P, tính Fitness(h)

o Trả về giả thuyết trong P có độ thích nghi cao nhất

}

4 Mở rộng thuật giải Di truyền

Có nhiều cách để thực thi thuật giải tùy theo bài toán cụ thể, tuy nhiên cách tìmkiếm thì hiếm khi sử dụng hình thức đơn giản như mô tả trên Dưới đây là một số mởrộng cho thuật toán:

Phương pháp chọn loại trừ: hầu hết các phương pháp chọn loại trừ đều được thiết lập lại để tránh sự hội tụ yếu Chẳng hạn như:

Trang 10

 Cá thể tốt nhất được giữ lại để đưa vào quá trình tiến hóa cho bước tiếp theo, cáthể này được dùng làm mẫu để chọn các cá thể khác trong quần thể nhằm duy trì tính

đa dạng

 Hai cá thể trong quần thể được chọn ngẫu nhiên, đoạn nào xấu thì được loại bỏ

và thay thế bằng đoạn khác tốt hơn

 Các cá thể trong quần thể hầu như không thay đổi trạng thái mà chỉ có một vài

cá thể có sự thay đổi trong mỗi bước

 Để duy trì được tính đa dạng trong quần thể thì Fitness của mỗi cá thể được chia

sẻ lẫn nhau giữa các cá thể có cùng kiểu Di truyền Vì thế những cá thể khác nhiều sovới các cá thể còn lại sẽ được tăng cường Fitness trong khi các cá thể tương tự nhautrong quẩn thể sẽ bị giảm Fitness

 Thao tác lai ghép thay thế: việc cắt một phần giả thuyết và đem ghép lại vớinhau không phải là cách tốt để tạo ra cá thể mới ví dụ bài toán người du lịch, trongtrường hợp này lời giải tiềm ẩn là sự hoán vị, ví dụ kết quả là 362154, thì có nghĩa là

đi tới thành phố 3 trước rồi tới thành phố 6, kế đến là 2, nếu áp dụng lai ghép điểmđơn giữa 2 danh sách thì sẽ không đưa ra được một hành trình hợp lệ

 Sử dụng toàn bộ quần thể: trong hầu hết các giải thuật Di truyền thì đáp án chobài toán chính là một cá thể tốt nhất trong quần thể còn những cá thể khác được sửdụng nhằm giúp cho quá trình tìm kiếm nhưng bị loại bỏ khi kết thúc thuật toán Điềunày không hoàn toàn tốt Trong thuật toán đầu tiên được đưa ra bởi Holland [5] thìmỗi cá thể của quần thể là một lớp – một luật IF-THEN, quần thể là một hệ thống cáclớp, trong quá trình chọn thì mỗi cá thể là một giả thuyết hoàn hảo Một tiến trình khác

mà cũng sử dụng toàn bộ quần thể đó là tiến trình do Yao và Liu đề xuất sử dụngchuỗi hạt mạng Neural Nó được sử dụng khi tồn tại một số lớp mà để giải quyết cùngmột bài toán Một lớp phổ biến được cho rằng tốt hơn cho tiến trình so với các lớpkhác Yao và Liu đề xuất sử dụng 4 phương pháp khác nhau để kết hợp kết quả củamạng Neural Họ sử dụng sự chia sẻ Fitness tuyệt đối để kích thích quá trình học vớicác mẫu khác nhau

Phần tiếp theo sau đây sẽ phân tích cách hoạt động của giải thuật, so sánh và giảithích tại sao nó tốt hơn so với các phương pháp truyền thống

Trang 11

5 Thuật giải Di truyền so với các phương pháp truyền thống

Chúng ta xét bài toán đơn giản sau đây: tối ưu hoá hàm y = f(x) trên khoảng xác định D.

Khi dùng phương pháp truyền thống có một số cách giải sau đây:

Phương pháp liệt kê: Duyệt tất cả các điểm nằm trong vùng khảo sát D để tìm

ra điểm cực trị của nó Phương pháp này không thích hợp khi dữ liệu đầu vào quá lớn.Trong trường hợp này miền D có không gian quá lớn để có thể đếm được

Phương pháp giải tích: Tìm điểm cực trị bằng cách giải tập các phương trình

khi cho GraDient bằng 0 Để xét được GraDient phải tính đạo hàm của hàm số Điềunày không giải quyết được trong trường hợp hàm số không liên tục hoặc không có đạohàm Ngoài ra đối với hàm nhiều cực trị thì có thể phương pháp này bỏ mất cực trị,cực trị tìm được chỉ mang tính chất địa phương

Phương pháp tìm kiếm ngẫu nhiên: là phương pháp kết hợp giữa phương

pháp tính toán giải tích và sơ đồ liệt kê Tuy nhiên những việc làm ngẫu nhiên cùngvới giải thuật tìm kiếm ngẫu nhiên cũng phải bị suy yếu bởi thiếu tính hiệu quả

Đối với Thuật giải Di truyền, các thông số của bài toán tìm kiếm phải được

mã hoá thành một chuỗi hữu hạn các ký tự trên một tập hữu hạn các ký tự Chuỗi nàytương tự như các chuỗi gen của các cơ thể sinh vật Có rất nhiều cách để mã hóa tậpthông số Một cách đơn giản là chúng ta có thể mã hoá thành các chuỗi bit trên tập ký

tự {0,1} Mỗi một chuỗi đại Diện cho một điểm tìm kiếm trong không gian GA xuấtphát với một quần thể các chuỗi được khởi tạo một cách ngẫu nhiên sau đó sẽ sản sinhcác quần thể tiếp theo thông qua việc sử dụng lựa chọn ngẫu nhiên như một công cụ.Nhờ đó Thuật giải Di truyền tìm kiếm trên nhiều điểm song song có khả năng leo lênnhiều cực trị cùng một lúc Thông qua các toán tử của mình, giải thuật trao đổi thôngtin giữa các cực trị với nhau, từ đó làm giảm thiểu khả năng giải thuật kết thúc tại cáccực trị địa phương và bỏ qua mất cực trị toàn cục Đây là các đặc trưng của Thuật giải

Di truyền so với các phương pháp truyền thống:

 Các Thuật giải Di truyền làm việc với sự mã hoá của tập thông số chứ khônglàm việc với các giá trị của các thông số

 Các Thuật giải Di truyền tìm kiếm từ một quần thể các điểm chứ không phải từmột điểm

Trang 12

 Các Thuật giải Di truyền chỉ sử dụng thông tin về các tiêu chuẩn tối ưu củahàm mục tiêu chứ không dùng các thông tin hỗ trợ nào khác.

 Các Thuật giải Di truyền sử dụng các luật chuyển đổi mang tính xác suất chứkhông phải là các luật chuyển đổi mang tính xác định

 Các Thuật giải Di truyền thường dễ cài đặt, áp dụng Tuy nhiên không phải lúcnào cũng cho lời giải chính xác Một số Thuật giải Di truyền có thể cung cấp lời giảitiềm năng cho một bài toán xác định để người sử dụng lựa chọn

6 Các ứng dụng của thuật giải Di truyền.

Ban đầu Thuật giải Di truyền ra đời được áp dụng cho tối ưu hoá và học máy làchủ yếu Đến nay nó đã phát triển mạnh và có nhiều ứng dụng thực tế, đặc biệt là cácbài toán về trí tuệ nhân tạo Ví dụ: ta có thể tối ưu công việc dự báo thời tiết sao chochính xác nhất dựa trên các thông số khí tượng do được Năm 1967 Beglay xây dựngmáy chơi cờ Hexapawn dựa trên Thuật giải Di truyền và nhận ra rằng Thuật giải Ditruyền có thể thực hiện tốt mà không phụ thuộc độ phức tạp của trò chơi

6.1 Tối ưu hoá và máy học:

Trong lĩnh vực tối ưu hóa có nhiều bài toán được áp dụng Thuật giải Di truyền

và đã thành công như tối ưu hoá hàm một biến, tối ưu hóa hàm nhiều biến, hay như bàitoán người du lịch, bài toán hộp đen, các bài toán kinh doanh, nhận dạng điều khiển hệthống Sau đây sẽ giới thiệu một số bài toán tối ưu hóa:

David E.Golderg đã ứng dụng GA để tối ưu hóa bài toán điều khiển hệ thốngđường ống dẫn khí thiên nhiên [5] Trong bài toán này, mục tiêu là cực tiểu hóa nănglượng do quá trình nén, phụ thuộc vào áp suất tối đa và áp suất tối thiểu và các ràngbuộc tỉ lệ áp suất

Tối ưu hoá kết cấu: Mục tiêu của bài toán này là cực tiểu hóa trọng lượng của kếtcấu, phụ thuộc vào các ràng buộc về ứng suất lớn nhất và ứng suất nhỏ nhất của mỗithanh Một bộ mã cho khung kết cấu theo ma trận tiêu chuẩn được dùng để phân tíchmỗi thiết kế tạo ra bởi Thuật giải Di truyền

Trong lĩnh vực máy học, Thuật giải Di truyền được sử dụng cho việc tìm hiểu

các quy luật có cấu trúc như cấu trúc IF-THEN trong môi trường nhân tạo

6.2 Ghi ảnh y học với Thuật giải Di truyền

Thuật giải Di truyền đơn giản đã được sử dụng để thực hiện ghi hình ảnh, như là

bộ phận của hệ thống lớn có tên là Digital Subtraction Angiography (DSA) Trong

DSA, bác sĩ sẽ cố gắng xem xét bên trong của một động mạch khả nghi bằng cách so

Ngày đăng: 23/05/2015, 21:03

HÌNH ẢNH LIÊN QUAN

3. Sơ đồ thực hiện thuật giải Di truyền - Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề ỨNG DỤNG GIẢI THUẬT DI TRUYỀN  CHO BÀI TOÁN LẬP LỊCH TỔNG ĐÀI FPT
3. Sơ đồ thực hiện thuật giải Di truyền (Trang 8)
Hình 2 – Giao Diện chính của chương trình Sắp Lịch Trực tự động - Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề ỨNG DỤNG GIẢI THUẬT DI TRUYỀN  CHO BÀI TOÁN LẬP LỊCH TỔNG ĐÀI FPT
Hình 2 – Giao Diện chính của chương trình Sắp Lịch Trực tự động (Trang 19)
Hình 3 – Kết quả Lịch Trực sau khi xuất ra bảng dạng HTML - Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề ỨNG DỤNG GIẢI THUẬT DI TRUYỀN  CHO BÀI TOÁN LẬP LỊCH TỔNG ĐÀI FPT
Hình 3 – Kết quả Lịch Trực sau khi xuất ra bảng dạng HTML (Trang 20)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w