Tìm Hiểu Logic Mờ và xây dựng ứng dụng Điều khiển tự động tốc độ xe ôtô

Vai trò của phương pháp toán trong tin học Thông qua môn học “Phương pháp toán trong tin học” và bài tiểu luận này đã giúp em có thêm kiến thức sâu sắc về ứng dụng mô hình toán học vào trong tin học. Những vai trò quan trọng của toán học trong tin học có thể khái quát như sau: • Mô hình hóa các khái niệm trong thực tiễn thành các mô hình toán học mà máy tính có thể hiểu được. • Biểu diễn tri thức của con người thành dạng mà máy tính có thể đọc được. • Là cơ sở để thiết kế các thuật toán (thuật toán mà hóa, logic mờ ) • Toán học cũng là cơ sở để đánh giá hiệu quả của thuật toán, tính toán độ phức tạp của thuật toán.

docx56 trang | Chia sẻ: lylyngoc | Lượt xem: 3545 | Lượt tải: 6download
Bạn đang xem trước 20 trang tài liệu Tìm Hiểu Logic Mờ và xây dựng ứng dụng Điều khiển tự động tốc độ xe ôtô, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
A=x∈X -5 ≤x≤5 } Hình 1: Hàm phụ thuộc μAx của tập kinh điển A 2. Định nghĩa tập mờ Các tập mờ hay tập hợp mờ (Fuzzy set) là một mở rộng của lý thuyết tập hợp cổ điển và được dùng trong lôgic mờ. Trong lý thuyết tập hợp cổ điển, quan hệ thành viên của các phần tử trong một tập hợp được đánh giá theo kiểu nhị phân theo một điều kiện rõ ràng - một phần tử hoặc thuộc hoặc không thuộc về tập hợp. Ngược lại, lý thuyết tập mờ cho phép đánh giá từ từ về quan hệ thành viên giữa một phần tử và một tập hợp; quan hệ này được mô tả bằng một hàm liên thuộc (membership function) μ→[0,1]. Tập hợp mờ là tập hợp mà mỗi thành phần là một bộ số . Như vậy, ta nói F là tập mờ nếu F có biểu diễn: F={ (x, μAx)/x∈X } trong đó A là tập mờ trên không gian nền X nếu A được xác định bởi hàm: μA:X→[0,1] Trong đó: X : là tập nền hay được gọi là tập vũ trụ của tập mờ A μA là hàm liên thuộc (membership function) μA(x) là độ liên thuộc của x vào tập mờ A. Các tập mờ được coi là một mở rộng của lý thuyết tập hợp cổ điển là vì, với một universe (Không gian tham chiếu hay không gian nền) nhất định, một hàm liên thuộc có thể giữ vai trò của một hàm đặc trưng (indicator function) ánh xạ mỗi phần tử tới một giá trị 0 hoặc 1 như trong khái niệm cổ điển. Trong khái niệm tập hợp kinh điển hàm phụ thuộc µA(x) của tập A, chỉ có một trong hai giá trị là "1" nếu x∈A hoặc "0" nếu x∉A. Ví dụ 1: Cách biểu diễn hàm phụ thuộc như trên sẽ không phù hợp với những tập được mô tả "mờ" như tập B gồm các số thực gần bằng 5: B = { x ∈ R | x ≈5 } Khi đó ta không thể khẳng định chắc chắn số 4 có thuộc B hay không? mà chỉ có thể nói nó thuộc B gao nhiêu phần trăm. Để trả lời được câu hỏi này, ta phải coi hàm phụ thuộc μB(x) có giá trị trong khoảng từ 0 đến 1 tức là: 0≤μB(x)≤1 Hình 2: Hàm phụ thuộc μB(x) của tập “mờ” B Từ phân tích trên ta có định nghĩa: Tập mờ B xác định trên tập kinh điển M là một tập mà một phần tử của nó được biểu diễn bởi một cặp giá trị (x,μB(x)). Trong đó x ∈M và μB(x)là ánh xạ. Ánh xạ μB(x) được gọi là hàm liên thuộc của tập mờ B. Tập kinh điển M được gọi là cơ sở của tập mờ B. Như vậy về phương diện giải tích mỗi tập mờ ứng với một hàm số và hàm số có đồ thị của nó. Những tập mờ thường gặp đồ thị của hàm độ thuộc (membership function ) có hình dạng là hình tam giác hoặc hình thang mà người ta thường gọi vắn tắt là “tập mờ hình thang” hoặc “tập mờ hình tam giác” như hình vẽ dưới đây: h1 Hình 3: Ba tập mờ chỉ các trạng thái nhiệt độ Cold (lạnh), Warm (ấm) và Hot (nóng) đều có dạng hình thang. Theo hình vẽ này tại điểm h1 trên trục nhiệt độ ( temperature) chiếu lên đầu tiên ta thấy cắt tập mờ warm tại điểm mà ta có thể thấy được là “hơi ấm”, đồng thời cắt tập mờ cold tại điểm mà ta thấy là “tương đối lạnh”. Tóm lại ở nhiệt độ h1 có thể xem là “hơi ấm” hoặc “tương đối lạnh” Ngày nay tập mờ và logic mờ được ứng dụng nhiều trong khoa học kỹ thuật đặc biệt trong điều khiển tự động trong hệ trợ giúp quyết định trong tính toán hiệu năng cao… Ví dụ trong máy giặt có ghi Fuzzy logic Controler như chúng ta đã gặp, máy có thể đo được độ bẩn, chất liệu và trong lượng đồ cần giặt từ đó ấn định mức độ bột giặt, số nước cần dùng và các chức năng cần vận hành để giặt sạch. Ví dụ 2: Một tập mờ F với các số tự nhiên nhỏ hơn 5 được mô tả bằng hàm thành viên μA có đồ thị như sau: Hình 4: Đồ thị hàm thành viên Ta có tập mờ A={1,1, 2,1, 3,0.95, 4,0.17} Số tự nhiên 1 và 2 có độ phụ thuộc là 1 Số tự nhiên 3 và 4 có độ phụ thuộc thấp hơn 1 Các số không liệt kê có độ phụ thuộc là 0 Sử dụng các hàm liên thuộc để tính độ phụ thuộc của một phần tử x nào đó có hai cách: tính trực tiếp (nếu μA ở dạng công thức tường minh) hoặc tra bảng (nếu μA ở dạng bảng). Các hàm liên thuộc μA có dạng “trơn” được gọi là hàm liên thuộc kiểu S. Đối với hàm liên thuộc kiểu S, do các công thức biểu diễn μA có độ phức tạp lớn nên thời gian tính độ phụ thuộc cho một phần tử lâu hơn. Trong kỹ thuật điều khiển mờ thông thường, các hàm liên thuộc kiểu S thường được thay gần đúng bằng một hàm tuyến tính từng đoạn. Một hàm liên thuộc có dạng tuyến tính từng đoạn được gọi là hàm liên thuộc có mức chuyển đổi tuyến tính. Hình 5: Hàm liên thuộc tuyến tính từng đoạn Hàm liên thuộc μA ở trên với m1 = m2 và m3 = m4 chính là hàm phụ thuộc của một tập nền. Miền tin cậy của tập mờ A trên nền X là một tập T là tập con của X thỏa mãn. T={x ∈X/ μA(x)=1} Miền xác định của tập mờ F trên nền X là một tập S là tập con của X thỏa mãn. S={x ∈X/ μA(x)>0} Hình 6 - Miền tin cậy và miền xác định 3. Các thông số đặc trưng cho tập mờ Các thông số đặc trưng cho tập mờ là độ cao, miền xác định và miền tin cậy (hình 1.3) + Độ cao của một tập mờ B (Định nghĩa trên cơ sở M) là giá trị lớn nhất trong các giá trị của hàm liên thuộc: H=SUPx∈MμB(x) Một tập mờ có ít nhất một phần tử có độ phụ thuộc bằng 1 được gọi là tập mờ chính tắc (H = 1). Ngược lại, một tập mờ B với H < 1 gọi là tập mờ không chính tắc. Hình 7: Độ cao, miền xác định, miền tin cậy của tập mờ + Miền xác định của tập mờ B (Định nghĩa trên cơ sở M) được ký hiệu bởi S là tập con của M có giá trị hàm liên thuộc khác không: S = x ∈MμBx>0} + Miền tin cậy của tập mờ B (định nghĩa trên cơ sở M) được ký hiệu bởi T, là tập con của M có giá trị hàm liên thuộc bằng 1: T = x ∈MμBx=1} 4. Các phép toán trên tập mờ Định nghĩa: Cho A và B là hai tập mờ trên không gian nền X, có các hàm liên thuộc μA, μB Stt Phép toán trên tập mờ Định nghĩa hàm liên tục 1 A⊆B μAx≤μB(x) 2 A∪B μA ∪ Bx=max⁡{ μAx, μB(x) } 3 A∩B μA ∩ Bx=min⁡{ μAx, μB(x) } 4 ØA μØA=1-μA 5 AÅB μA Å Bx=μAx+μBx-μAx μB(x) 6 X μXx=1 7 f μfx=0 8 A×B μA x Bx,y=min μAx, μBy Giao của hai tập mờ Cho X là tập hợp, A, B là hai tập mờ trong X và có các hàm thuộc lần luợt là µA, µB. Giao của hai tập mờ A và B, ký hiệu A∩B, là một tập mờ có hàm thuộc μA ∩ B xác định như sau: Theo luật Min μA ∩ Bx=min μAx, μBx, ∀x ∈X Theo luật Lukasiewicz μA ∩ Bx=max 0, μAx+ μBx-1, ∀x ∈X Theo luật Prod μA ∩ Bx=μAx.μBx, ∀x ∈X Hình 8 - Giao của hai tập mờ Hợp của hai tập mờ Cho X là tập hợp, A, B là hai tập mờ trong X và có các hàm thuộc lần luợt là μA, μB. Hợp của hai tập mờ A và B trong X, ký hiệu A∪B, là một tập mờ có hàm thuộc μA ∪ B xác định như sau: Theo luật Max μA ∪ Bx=max μAx, μBx, ∀x ∈X Theo luật Sum μA ∪ Bx=min1, μAx+ μBx, ∀x ∈X Tổng trực tiếp μA ∪ Bx=μAx+ μBx-μAx. μBx, ∀x ∈X Hình 9 - Hợp của hai tập mờ Tích đại số của hai tập mờ Cho X là tập hợp, A, B là hai tập mờ trong X và có các hàm thuộc lần lượt là μAx, μBx. Tích đại số của hai tập mờ A và B trong X, ký hiệu A.B là một tập mờ có hàm thuộc được xác định như sau: µA.B(x) = µA(x).µB(x) ∀x∈X Tổng đại số của hai tập mờ. Cho X là tập hợp, A, B là hai tập mờ trong X và có các hàm thuộc lần lượt là μA, μB. Tổng đại số của hai tập mờ A và B trong X, ký hiệu A Å B là một tập mờ có hàm thuộc được xác định như sau: μA Å Bx=μAx+μBx-μAx μBx, ∀x∈X Phần bù của một tập mờ. Cho A là tập mờ trong X có hàm thuộc µA. Phần bù A của A trong X là một tập mờ có hàm thuộc xác định như sau: μØA=1-μA , ∀x∈X Hình 10 - Bù của một tập mờ Tổng rời của hai tập mờ. Cho X là tập hợp, A và B là hai tập mờ trong X. Tổng rời của hai tập mờ A và B trong X, ký hiệu A⊕B định nghĩa như sau: A⊕B = (A ∩B) ∪ (A∩B ) Phép trừ hai tập mờ. Cho X là tập hợp, A, B là hai tập mờ trong X và có các hàm thuộc lần lượt là μA, μB. Phép trừ của hai tập mờ A và B trong X ký hiệu A\B được định nghĩa như sau: A\B = A∩B . Cho X là tập hợp, A và B là hai tập mờ trong X, có các hàm thuộc lần lượt là μA, μB. A gọi là nằm trong B, ký hiệu A⊂B nếu hàm thuộc thỏa mãn: μAx≤μBx,∀x∈X. Cho X là tập hợp, A và B là hai tập mờ trong X, có các hàm thuộc lần lượt là μA, μB. A gọi là bằng B, ký hiệu A=B nếu và chỉ nếu: μAx=μBx,∀x∈X Phép phủ định Hàm n:[0,1] -> [0,1] không tăng thỏa mãn điều kiện n(0) = 1, n(1) =0 gọi là hàm phủ định Một vài ví dụ : Hàm phủ định chuẩn n(x) = 1-x Hàm phủ định n(x) = 1-x2 Họ phủ định (Sugeno,1997) Nl (x) = (1-x)/(1+lx), với l>-1 Hàm n là phép phủ định mạnh, nếu n giảm chặt và n(n(x))=x , với mọi x Phép hội (t-norm) Phép hội (vẫn quen gọi là phép AND) là một trong các phép toán logic căn bản nhất. Nó cũng là cơ sở để định nghĩa phép giao của 2 tập mờ. Định nghĩa : Hàm T:[0,1]2 -> [0,1] là một t-norm nếu thỏa mãn các điều kiện sau : T(1,x) = x, với mọi 0 £ x £ 1 (Tồn tại phần tử đơn vị) T(x,y) = T(y,x) với mọi 0 £ x, y £1 (T có tính giao hoán) T(x,y) = T(u,v) với mọi 0 £x£u£1, 0£y£v£1 (không giảm theo từng biến) T(x,T(y,z)) = T(T(x,y),z) với mọi 0£x,y,z£1 (T có tính kết hợp) Từ những điều kiện trên chúng ta suy ra ngay T(0,x). Hơn nữa tiên đề d) đảm bảo tính thác chuyển duy nhất cho hàm nhiều biến. Phép tuyển (t-conorm) Giống như phép hội, phép tuyển (hay toán tử OR) thông thường cần thỏa mãn các tiên đề sau : Định nghĩa : Hàm S : [0,1] gọi là phép tuyển (OR suy rộng) hay là t-conorm nếu thỏa mãn các tiên đề sau : S(0,x) = x, với mọi 0 £ x £ 1 (Tồn tại phần tử đơn vị) S(x,y) = S(y,x) với mọi 0 £ x, y £1 (S có tính giao hoán) S(x,y) £ S(u,v) với mọi 0 £x£u£1, 0£y£v£1 (không giảm theo từng biến) S(x,S(y,z)) = S(S(x,y),z) với mọi 0£x,y,z£1 (S có tính kết hợp) Phép kéo theo Đã có khá nhiều nghiên cứu về phép kéo theo, điều đó cũng tự nhiên vì đây là công đoạn mấu chốt của quá trình suy diễn trong mọi lập luận xấp xỉ, bao gồm cả suy luận mờ. Định nghĩa : Phép kéo theo (implication) là một hàm số I :[0,1]-> [0,1] thoả mãn các điều kiện sau : Nếu x£z thì I(x,y) ³ I(z,y) với mọi yÍ[0,1] Nếu y£u thì I(x,y) £ I(x,y) với mọi yÍ[0,1] I(0,x) = 1 với mọi x Í[0,1] I(x,1) = 1 với mọi x Í[0,1] I(1,0)=0 Tuy đơn giản nhưng mục e) vẫn cần vì không thể suy ra mục e) từ 4 tiên đề trên. Để tính toán được , chúng ta cần những dạng cụ thể của phép kéo theo. Sau đây là một số dạng hàm kéo theo. Xây dựng dựa vào các phép toán logic mờ đã suy rộng trên. Cho T là t-norm, S là t-conorm và n là hàm phủ định mạnh Định nghĩa : Dạng kéo theo thứ nhất. Hàm Is1(x,y) xác định trên [0,1]2 bằng biểu thức Is1(x,y) = S(n(x),y) Rõ ràng ẩn ý sau định nghĩa này là công thức logic cổ điển P => Q=PQ Định lý : Với bất kỳ t-norm T, t-conorm S và phép phủ định mạnh n nào Is1 là phép kéo theo thõa định nghĩa phép kéo theo. Phép kéo theo thứ hai sau đây lấy từ logic trực cảm Định nghĩa : Cho T là t-norm, Hàm IT(x,y) xác định trên [0,1]2 bằng biểu thức IT(x,y) = sup{u:T(x,u)£y} Định lý : Với bất kỳ t-norm T nào , IT được định nghĩa như trên là phép kéo theo thỏa định nghĩa phép kéo theo. III. Quan hệ mờ Quan hệ mờ 2 ngôi R(X,Y) xác định bởi tập mờ R trong tích Descartes XxY. Trường hợp X và Y hữu hạn, R có thể được biểu diễn bởi ma trận với các giá trị chỉ mức độ quan hệ của các cặp (x,y). Phép đảo của quan hệ mờ R(X,Y) là R-1(Y,X) cho bởi: R-1(y, x) = R(x, y) Phép kết nối các quan hệ mờ P(X,Y) và Q(X,Z) cho ta quan hệ mờ R(X,Z) định nghĩa bởi: R(x,z) = [PoQ](x,z) = max {min(P(x,y), Q(y,z)) | y Î Y} IV. Logic Mờ 1. Khái niệm Lôgic mờ (Fuzzy logic) được phát triển từ lý thuyết tập mờ để thực hiện lập luận một cách xấp xỉ thay vì lập luận chính xác theo logic vị từ cổ điển. Người ta hay nhầm lẫn mức độ đúng với xác suất. Tuy nhiên, hai khái niệm này khác hẳn nhau; độ đúng đắn của lôgic mờ biểu diễn độ liên thuộc với các tập được định nghĩa không rõ ràng, chứ không phải khả năng xảy ra một biến cố hay điều kiện nào đó. Để minh họa sự khác biệt, xét tình huống sau: Bảo đang đứng trong một ngôi nhà có hai phòng thông nhau: phòng bếp và phòng ăn. Trong nhiều trường hợp, trạng thái của Bảo trong tập hợp gồm những thứ "ở trong bếp" hoàn toàn đơn giản: hoặc là anh ta "trong bếp" hoặc "không ở trong bếp". Nhưng nếu Bảo đứng tại cửa nối giữa hai phòng thì sao? Anh ta có thể được coi là "có phần ở trong bếp". Việc định lượng trạng thái "một phần" này cho ra một quan hệ liên thuộc đối với một tập mờ. Chẳng hạn, nếu Bảo chỉ thò một ngón chân cái vào phòng ăn, ta có thể nói rằng Bảo ở "trong bếp" đến 99% và ở trong phòng ăn 1%. Một khi anh ta còn đứng ở cửa thì không có một biến cố nào (ví dụ một đồng xu được tung lên) quyết định rằng Bảo hoàn toàn "ở trong bếp" hay hoàn toàn "không ở trong bếp". Lôgic mờ cho phép độ liên thuộc có giá trị trong khoảng đóng 0 và 1, và ở hình thức ngôn từ, các khái niệm không chính xác như "hơi hơi", "gần như", "khá là" và "rất". Cụ thể, nó cho phép quan hệ thành viên không đầy đủ giữa thành viên và tập hợp. Tính chất này có liên quan đến tập mờ và lý thuyết xác suất. Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác định lứa tuổi: Boolean Logic Fuzzy Logic Hình 9: Sự khác nhau giữa hai loại Logic trong việc xác định lứa tuổi Nhìn ở hình vẽ trên, nếu như đối với Boolean Logic (tương ứng với Crisp Sets) quy định tuổi dưới 23 mới được coi là “trẻ tuổi” thì ở Fuzzy Logic (tương ứng với Fuzzy Sets) , có sự xác định mềm dẻo hơn khi không quy định khắt khe chính xác bao nhiêu tuổi mới là trẻ. Điều này hợp hơn với thực tế bởi vì đôi khi tuổi tác còn do con người cảm nhận, có người coi dưới 23 tuổi là trẻ còn có người coi trên 23 tuổi một vài năm vẫn là trẻ, hoặc dưới 23 tuổi một vài năm đã không còn là trẻ nữa.Qua đó ở ví dụ này ta thấy các giá trị Fuzzy mềm dẻo hơn rất nhiều so với Crisp sets, phù hợp hơn với người dùng. 2. Biến ngôn ngữ Biến ngôn ngữ là phần chủ đạo trong các hệ thống dùng logic mờ. Ở đây, các thành phần ngôn ngữ mô tả cùng một ngữ cảnh được kết hợp lại. Ví dụ như trong trường hợp mô tả nhiệt độ, không chỉ có “rất nóng” mà còn “hơi nóng”, “trung bình”, “hơi lạnh” và “rất lạnh” đều mô tả nhiệt độ. Chúng được gọi là các tập ngôn ngữ, mang một khoảng giá trị nào đó của biến ngôn ngữ và được vẽ trên cùng một đồ thị Các luật trong hệ logic mờ mô tả tri thức của hệ. Chúng dùng các biến ngôn ngữ như là từ vựng để mô tả các tầng điều khiển trong hệ. Việc giải thích các luật mờ cũng là việc trình bày cách tính các khái niệm ngôn ngữ. Khái niệm biến ngôn ngữ đã được Zadeh đưa ra năm 1973 như sau: Một biến ngôn ngữ được xác định bởi bộ (x, T, U, M) trong đó: x là tên biến. Ví dụ: “nhiệt độ”, “tốc độ”, “độ ẩm”,… T là tập các từ là các giá trị ngôn ngữ tự nhiên mà x có thể nhận. Ví dụ: x là “tốc độ” thì T có thể là {“chậm”, “trung bình”, “nhanh”} U là miền các giá trị vật lý mà x có thể nhận. Ví dụ: x là “tốc độ” thì U có thể là {0km/h,1km/h, …, 150km/h} M là luật ngữ nghĩa, ứng mỗi từ trong T với một tập mờ At trong U Từ định nghĩa trên chúng ta có thể nói rằng biến ngôn ngữ là biến có thể nhận giá trị là các tập mờ trên một vũ trụ nào đó. 3. Mệnh đề mờ Trong logic cổ điển (logic vị từ cấp một), một mệnh đề phân tử P(x) là một phát biểu có dạng “x là P” trong đó x là một đối tượng trong một vũ trụ U nào đó thoả tính chất P. Ví dụ “x là số chẵn” thì U là tập các số nguyên và P là tính chất chia hết cho 2. Như vậy ta có thể đồng nhất một mệnh đề phân tử “x là P” với một tập (rõ) A = xU | P(x) . Từ đó ta có: P(x) = (x) Trong đó là hàm đặc trưng của tập A ( xA ó (x) = 1). Giá trị chân lý của P(x) chỉ nhận một trong hai giá trị 1 và 0 (true và false) tương ứng với sự kiện x thuộc A hoặc không. Trong trường hợp P là một tính chất mờ chẳng hạn như “số lớn” thì ta sẽ có một mệnh đề logic mờ phần tử. Khi đó tập hợp các phần tử trong vũ trụ U thoả P là một tập mờ B có hàm thuộc sao cho: P(x) = (x) Lúc này P(x) có thể nhận các giá trị tuỳ ý trong [0,1]. Và ta thấy có thể đồng nhất các hàm thuộc với các mệnh đề logic mờ. 4. Các phép toán mệnh đề mờ Trong logic cổ điển, từ các mệnh đề phân tử và các phép toán (AND), (OR), (NOT) ta có thể lập nên các mệnh đề phức. Ta có: P(x) = 1 – P(x) P(x) Q(y) = min(P(x), Q(y)) P(x) Q(y) = max(P(x), Q(y)) P(x) =>Q(y) = P(x) Q(y) = max(1-P(x), Q(y)) P(x) =>Q(y) = P(x) (P(x) Q(y)) = max(1-P(x), min(P(x), Q(y))) Như vậy, ta sẽ có mở rộng một cách tự nhiên từ logic cổ điển sang logic mờ với quy tắc tổng quát hoá dùng hàm bù mờ cho phép phủ định, hàm T-norm cho phép giao (Ç) và S-norm cho phép hợp (È). Sự mở rộng này dựa trên sự tương quan giữa mệnh đề logic mờ với hàm mờ và các phép toán trên tập mờ. Ta có: (x) = C((x)) (x) (y) = T((x), (y)) (x) (y) = S((x), (y)) (x) => (y) = S(C((x)), (y)) (1) (x) => (y) = S( C((x)), T((x), (y)) ) (2) Trong đó C là hàm bù mờ (hay phủ định mờ), T là hàm T-norm, S là hàm S-norm. 5. Phép toán kéo theo mờ Các phép toán kéo theo có vai trò quan trọng trong logic mờ. Chúng tạo nên các luật mờ để thực hiện các phép suy diễn trong tất cả các hệ mờ. Do một mệnh đề mờ tương ứng với một tập mờ nên ta có thể dùng hàm thuộc thay cho các mệnh đề. Sau đây là một số phép kéo theo quan trọng được sử dụng rộng rãi: Phép kéo theo Dienes – Rescher Nếu áp dụng công thức (1) với S-norm max và C là hàm bù chuẩn cho ta có phép kéo theo Dienes – Rescher (x) =>(y) = max(1-(x), (y)) Phép kéo theo Lukasiewicz Nếu áp dụng công thức (1) với S-norm là hàm hợp Yager với w=1 và C là hàm bù chuẩn cho ta có phép kéo theo Lukasiewicz: (x) =>(y) = min(1, 1-(x)+(y)) Phép kéo theo Zadeh Nếu áp dụng công thức (2) với S-norm là max, T-norm min hoặc tích và C là hàm bù chuẩn cho ta có phép kéo theo Zadeh: (x) =>(y) = max( 1-(x), min((x),(y))) (a) (x) =>(y) = max( 1-(x), (x).(y)) (b) Kéo theo Mamdani Ta có thể coi mệnh đề (x) =>(y) xác định một quan hệ 2 ngôi R UxV. Trong đó U là không gian nền của x (vũ trụ chứa x), V là không gian nền của y (vũ trụ chứa y). Khi đó giá trị chân lý của mệnh đề (x) =>(y) là giá trị hàm thuộc của cặp (x,y) vào R. Theo công thức xác định hàm thuộc của quan hệ mờ ta có: (x) =>(y) = T((x),(y)) Trong đó T là một T-norm. Khi chọn T là min hoặc tích ta có các phép kéo theo Mamdani: (x) =>(y) = min((x),(y)) (a) (x) =>(y) = (x).(y) (b) 6. Luật mờ Một luật mờ là một biểu thức If - Then được phát biểu ở dạng ngôn ngữ tự nhiên thể hiện sự phụ thuộc nhân quả giữa các biến. Ví dụ: If nhiệt độ là lạnh và giá dầu là rẻ Then sưởi ấm nhiều. Trong đó: - ‘nhiệt độ’, ‘giá dầu’ và ‘sưởi ấm’ là các biến - ‘lạnh’, ‘rẻ’, ‘nhiều’ là các giá trị hay chính là các tập mờ. Hoặc: If một người có chiều cao là cao và cơ bắp là lực lưỡng Then chơi bóng rổ hay. - Các biến ở đây sẽ là: ‘chiều cao’, ‘cơ bắp’, ‘chơi bóng rổ’ - Các giá trị hay tập mờ là: ‘cao’, ‘lực lưỡng’, ‘hay’. 7. Luật Modus Ponens hay Modus Tollens Thông thường, suy diễn mờ (suy luận mờ) hay sử dụng luật Modus Ponen hoặc Modus Tollens. Trong logic cổ điển, Modus Ponens diễn đạt như sau: Mệnh đề 1 (Luật hoặc tri thức) : P → Q Mệnh đề 2 (sự kiện) : P đúng Kết luận : Q đúng Tương tự logic cổ điển, trong logic mờ (suy diễn mờ hay suy luận mờ) cũng có luật Modus Ponens như sau: Giả thiết 1 (luật mờ) : Nếu x là A thì y là B Giả thiết 1 (sự kiện mờ) : x là A’ Kết luận : y là B’ Trong đó A, B, A’, B’ là các biến ngôn ngữ (có nghĩa là các tập mờ). A và A’ là các tập mờ trên không gian nền U, còn B và B’ là các tập mờ trên không gian nền V. Ví dụ : Luật mờ  : Nếu góc quay tay ga lớn thì xe đi nhanh Sự kiện mờ  : Góc quay tay ga khá lớn Kết luận  : Xe đi khá nhanh Trong logic cổ điển, Modus Tollens diễn đạt như sau: Mệnh đề 1 (Luật hoặc tri thức) : P → Q Mệnh đề 2 (sự kiện) : ¬Q đúng Kết luận : ¬P đúng Tương tự logic cổ điển, trong logic mờ (suy diễn mờ hay suy luận mờ) luật được diễn đạt như sau : Giả thiết 1 (Luật mờ hoặc tri thức mờ) : P → Q Giả thiết 2 (Sự kiện mờ) : ¬Q khá đúng Kết luận : ¬P khá đúng Ví dụ : Luật mờ  : Nếu góc quay tay ga lớn thì xe đi nhanh Sự kiện mờ  : Xe không đi nhanh lắm Kết luận  : Góc quay tay ga không lớn lắm Để ứng dụng suy diễn mờ (suy luận mờ) vào trong bài toán thực tế thì vấn đề mấu chốt cần thực hiện là xây dựng cơ chế lập luận xấp xỉ để có thể đưa ra kết luận hay quyết định mờ. Công thức tính kết luận của luật Modus Ponens như sau: (y) = T((x,y), (x)) (*) Trong đó T là một hàm T-norm và R là quan hệ hai ngôi xác định bởi phép kéo theo. Cách tính (x,y), chính là cách tính giá trị chân lý của phép kéo theo trình bày ở phần trước. Như vậy tuỳ theo cách chọn cách tính luật kéo theo khác nhau mà ta có cách tính kết quả của luật Modus Ponens khác nhau. Ví dụ: Giả sử quan hệ giữa nhiệt độ và áp suất cho bởi luật sau: Nếu nhiệt độ là cao thì áp suất là lớn. Nhiệt độ nhận các giá trị trong U = {30, 35, 40, 45} Áp suất nhận các giá trị trong V = {50, 55, 60, 65} Ta có các tập mờ xác định bởi các biến ngôn ngữ nhiệt độ và áp suất như sau: A = “nhiệt độ cao” = B = “áp suất lớn” = Áp dụng luật kéo theo Mamdani tích ta có quan hệ mờ sau (giá trị dòng i, cột j là giá trị hàm thuộc của cặp nhiệt độ i và áp suất j vào quan hệ) R= Bây giờ, giả sử ta biết sự kiện “nhiệt độ là trung bình” và A’ = “nhiệt độ trung bình” = Áp dụng công thức (*) ta suy ra B’ = Phần II: Thiết kế Hệ Thống Mờ I. Các yếu tố xây dựng mô hình Logic mờ. Quá trình mờ hóa Bộ xử lý Logic mờ Quá trình Giải mờ Dữ liệu rõ (input) Dữ liệu mờ (input) Dữ liệu mờ (output) Dữ liệu đầu ra (output) Hình 11: Cấu trúc và qui trình hoạt động của mô hình. Một mô hình lôgic mờ bao gồm các yếu tố sau: dữ liệu ( đầu vào và đầu ra) , các hàm chuyển đổi, các phép toán logic và các biến ngôn ngữ. Dữ liệu Dữ liệu được chia làm hai nhóm chính, dữ liệu đầu vào và dữ liệu đầu ra. Mỗi nhóm lại chia ra dữ liệu rõ và dứ liệu mờ Các hàm Để thực hiện việc quy đổi từ dữ liệu cứng về dữ liệu mờ ta cần phải lựa chọn các hàm phục vụ cho việc chuyển đổi, thông thường có 4 loại hàm hay sử dụng: hình tam giác, hình thang, hình cong và hình que được minh họa dưới đây: Hình 12: Các mô hình được sử dụng trong hệ thống Logic mờ Các phép toán của logic mờ. Logic mờ cũng giống Logic thông thường đều quy định về các phép toán như giao, hợp, loại trừ ,cộng, phủ định….Tuy nhiên, cách tính giá trị của mỗi phép toán lại khác so với logic thông thương.Dưới đây là một vài phép toán cơ bản: (A and B) = min (t(A), t(B)) – Phép Giao (A or B) = max(t(A), t(B)) – Phép Hợp (not - A) = 1 - t(A)  - Phép phủ định Các phép toán nay ảnh hưởng rất nhiều đến một thành phần quan trọng của hệ Fuzzy là định khoảng giá trị. Đây cũng là cơ sở cho việc thiết lập các luật trong hệ Logic mờ. Biến ngôn ngữ. Một biến ngôn ngữ quy định đến trường nào đó có giá trị nào đó, hay nói cách khác nó chỉ đến một khoảng giá trị trong hệ thống fuzzy logic. Giá trị của biến ngôn ngữ cũng là dạng từ ngữ. Thông thường, người ta gắn các khoảng giá trị số cho một từ ngữ nào đó thể hiện cho nó.Ta xét ví dụ sau: Biến ngôn ngữ: nhiệt độ Các khoảng giá trị ( fuzzy sets) : cold , warm, hot Hình 13: Mô hình minh họa biến ngôn ngữ trong việc đoán nhận nhiệt độ Trong ví dụ trên, người ta thay những con số chỉ nhiệt độ bằng biến ngôn ngữ là nhiệt độ, còn giá trị của biến này là cold, warm và hot. Giá trị cold gắn với khoảng giá trị thực từ 0 độ đến 20 độ , giá trị warm gắn với khoảng giá trị thực từ 20 độ đến 60 độ, còn giá trị hot gắn với khoảng giá trị thực từ 60 độ tới 100 độ. Các biến ngôn ngữ này phục vụ cho việc thiết lập các luật tương ứng và phù hợp với thực tế. Các luật trong mô hình logic mờ Các luật là thành phần điều khiển của một hệ thống logic mờ. Các luật được thực hiện dựa trên câu lệnh IF……….THEN và một số phép toán Logic khác như AND, OR, NOT….Trong một hệ thống, nếu tập luật càng chính xác thì hiệu quả của hệ thống càng cao. Mô tả ví dụ: một lò sưởi tự động nhận hai giá trị đầu vào ( input ) là giá dầu đốt hiện tại và nhiệt độ hiện tại trong phòng, tùy mức độ nhiệt độ hiện tại nóng hay lạnh và giá dầu đốt đắt hay rẻ để nó tự động cung cấp nhiệt trong phòng một cách phù hợp sao cho không bị lạnh mà cũng không lãng phí quá. “Nếu nhiệt độ là lạnh và giá dầu là rẻ thì nhiệt xả ra là cao” Biến ngôn ngữ Giá trị biến ngôn ngữ Bảng dưới đây chỉ ra cụ thể luật làm việc của ví dụ trên: Bảng 1: Mô tả hoạt động của máy sưởi Nhiệt độ Giá dầu Lạnh Ấm Nóng Rẻ Cao Cao Trung bình Bình thường Cao Trung bình Thấp Đắt Trung bình Thấp Thấp II. Qui trình hoạt động của Logic mờ Hình 14: Quy trình hoạt động của hệ Logic mờ Đầu tiên ta sử dụng các dữ liệu thực tế (dữ liệu rõ) là dữ liệu đầu vào, qua bước mờ hóa (Fuzzification) sẽ cho ta dữ liệu “mờ”, kết quả này sẽ được sử dụng làm đầu vào cho hệ xử lý logic mờ (Fuzzy Logic) và cho ra kết quả tiêp theo là dữ liệu mờ đầu ra, dữ liệu này này tiếp tục được sử dụng làm dữ liệu đầu vào cho hệ thống giải mờ (De–Fuzzificationg), sau bước cuối cùng này cho ta kết quả là dữ liệu rõ. Khâu mờ hoá (Fuzzification): thực hiện biến đổi các giá trị rõ đầu vào thành một miền giá trị mờ với hàm thuộc và biến ngôn ngữ tương ứng. Khâu thiết bị hợp thành (Fuzzy Logic or FAM): biến đổi các giá trị mờ của biến ngôn ngữ đầu vào thành các giá trị mờ của biến ngôn ngữ đầu ra dựa trên các luật hợp thành đã xây dựng. Khâu giải mờ (De-Fuzzification): biến đổi các giá trị mờ của biến ngôn ngữ đầu ra thành các giá trị rõ để thực hiện điều khiển đối tượng. III. Phương pháp xây dựng mô hình. Trong hệ thống FuzzyLogic, có nhiều mô hình phục vụ cho việc xây dựng hệ Fuzzy Logic, trong nội dụng bài thu hoạch này sử dụng hai mô hình cơ bản là mô hình tam giác và mô hình hình thang. Sau đây chúng ta sẽ tìm hiểu kỹ hơn về hai mô hình này và ứng dụng cụ thể của nó. 1. Mô hình tam giác Đây là mô hình Fuzzy Logic được sử dụng trong trường hợp mà giá trị của các biến ngôn ngữ được xác định một cách nhạy cảm và độ mờ biến thiên nhanh. 1 Chậm trung bình nhanh 0 5 10 15 20 Hình 15: Mô hình tam giác trong việc xác định tốc độ Ví dụ như biết “Tốc độ” bao gồm có ba giá trị ngôn ngữ là “nhanh”, “chậm” và “trung bình” tuy nhiên với một tốc độ thực tế là 40km/h thì tùy từng hoàn cảnh ta cho là nhanh, tùy từng hoàn cảnh lại cho là không nhanh. Như với tốc độ trong một cuộc đua xe đạp thì đó là chậm nhưng tốc độc của một người bình thường đi xe đạp thì lại có thể cho là nhanh, trong những trường hợp khác ta lại coi tốc độ đó ở mức trung bình. Hơn nữa trong cụ thể một hoàn cảnh nào đó thì lại tùy từng lúc chúng ta coi là nhanh mà có lúc lại coi là chậm, ví dụ như trong cuộc đua thì lại đối với vận động viên xuất sắc thì đó được coi là tốc độ chậm nhưng so với mặt bằng chung thì đó có thể coi là trung bình. Như vậy có nghĩa là đối với mô hình tam giác, tại từng “hoàn cảnh” sẽ lại có một sự đánh giá khác nhau hay nói cách khác thì độ “mờ” biến thiên nhanh hơn. 2. Mô hình hình thang Nếu như mô hình tam giác là mô hình Fuzzy Logic được sử dụng trong trường hợp mà giá trị của các biến ngôn ngữ được xác định một cách nhạy cảm và độ mờ biến thiên nhanh thì mô hình hình thang lại mang tính chất gần với logic boolean hơn và nó có độ biến thiên mờ tương đối thấp Ta xét ví dụ sau: Một hệ thống Logic mờ đo nhiệt độ và xác định mức độ nóng lạnh với ba khoảng cold, warm và hot. Hình 16: Mô hình hình thang Theo hình vẽ trên ta có thể thấy khoảng nhiệt độ lạnh kéo dài hơn với độ dài là đỉnh hình thang, trong khoảng nhiệt độ này hệ thống giữ cố định việc coi nhiệt độ độ là lạnh, sự biến thiên (mờ hóa) chỉ xảy ra ở các cạnh bên (không vuông góc ) của hình thang. Theo ví dụ trên thì trong khoảng nhiệt độ xung quanh 20 độ, có sự mềm dẻo khi coi thời tiết lúc đó nằm trong khoảng lạnh hay ấm, tương tự đối với khoảng nhiệt độ xung quanh 60 độ. Ở khóa luận tốt nghiệp, mô hình hình thang được dùng để xác định tiềm năng lên hay xuống của giá chứng khoán ngày hôm nay so với xu thế của cả một khoảng thời gian trước đó. IV. Các phương pháp giải mờ Khâu mờ hóa có thể được áp dụng bằng cách áp ánh xạ mờ hóa như đã trình bày trong phần biến ngôn ngữ. Để có thể giải mờ sau khi áp dụng các luật suy diễn, hệ điều khiển cần áp dụng một trong các phương pháp giải mờ sau: 1. Phương pháp cực đại Phương pháp này tìm giá trị rõ y’ = y1 hay y’ = y2 thông qua giá trị mờ cực đại H. Ứng với miền đạt giá trị cực đại H, ta có khoảng . Bất cứ giá trị đều có thể là giá trị rõ cần tìm sau khi giải mờ. Hình 17 - Phương pháp giải mờ cực đại Khi có nhiều giá trị rõ đều đạt giá trị cực đại tại H, ta có thể xem xét để lấy y’ theo một trong các nguyên lý phụ sau: Nguyên lý trung bình tính y’ theo công thức Hình 18 - Đồ thị biểu diễn cách áp dụng nguyên lý trung bình Nguyên lý cận trái Hình 19 - Đồ thị biểu diễn cách áp dụng nguyên lý cận trái Nguyên lý cận phải Hình 20 - Đồ thị biểu diễn cách áp dụng nguyên lý cận phải 2. Phương pháp điểm trọng tâm Công thức để tính được giá trị y’ được cung cấp như sau: Với S là miền xác định của tập mờ B’ Hình 21 - Phương pháp điểm trọng tâm Tùy theo nhu cầu mà hệ điều khiển nên áp dụng phương pháp giải mờ thích hợp để tìm được giá trị rõ. V. Công cụ thực hiện hệ Logic mờ Việc thiết kế hệ điều khiển mờ có thể thực hiện bằng các phương pháp khác nhau như là thiết kế hệ mềm hoặc thiết kế hệ cứng. Mỗi phương pháp có những ưu nhược điểm riêng, thiết kế hệ cứng cho phép người thiết kế đánh giá được các luật mờ một cách nhanh chóng nhưng việc thiết kế theo cách này thường rất tốn kém. Thiết kế hệ mềm là cách tốt nhất để xây dựng nên một hệ điều khiển mờ, bằng cách sử dụng các phần mềm lập trình có sẵn, và có thể mô phỏng hệ thống. Thiết kế hệ mềm có thể sử dụng các phần mềm chuyên dụng về xử lý mờ như Matlab, FuzzyTech, Winfact,…Việc làm này cho phép xây dung rất nhanh một hệ mờ, mô phỏng và đành giá được ngay hệ thống. Nhưng trở ngại lớn vẫn là vấn đề kinh tế. Việc thiết kế hệ mềm vẫn có thể thực hiện được với các ngôn ngữ lập trình thông dụng như C++, Delphi, VB,C# …Việc xử lý mờ sẽ được thực hiện trên máy tính bàng phần mềm tự xây dựng. Sau đó là việc trao đổi dữ liệu với thiết bị chấp hành,và các thiết bị đo sẽ do một modulE khác đảm nhận.Module đó cũng có thể tự xây dựng hoặc cùng các Modul của một hãng khác. Trước khi quyết định lựa chọn ngôn ngữ lập trình để giải quyết bài toán Logic mờ, chúng ta cần nắm được những nhiệm vụ cần giải quyết: - Cài đặt Cấu trúc dữ liệu mô tả tập mờ và các phép toán trên tập mờ. - Cài đặt Cấu trúc dữ liệu mô tả các luật suy diễn và các thao tác xử lý liên quan. - Cài đặt và vận hành Motor suy diễn mờ. - Cài đặt các công cụ đồ họa cho phép người sử dụng soạn thảo trực quan các tập mờ, các luật suy diễn. - Ghép nối máy tính và thiết bị điều khiển. - Các thao tác thông dụng như lưu trữ công việc, kết xuất dữ liệu,... Ngôn ngữ được chọn để thực hiện thiết kế hệ thống mờ trong bài tiểu luận này là ngôn ngữ lập trình C#, là một ngôn ngữ cho phép: - Quản lý tốt mã nguồn. - Thư viện cài đặt các cấu trúc dữ liệu và giải thuật cơ bản được cung cấp đầy đủ, sử dụng tiện lợi. Trên thị trường hiện nay có một công cụ phát triển sử dụng ngôn ngữ lập trình C# rất tốt đó là Microsoft Visual C# trong bộ Visual Studio vì những lý do sau: - Thư viện lớp của C# Builder rất phong phú và dễ dàng mở rộng, thừa kế. Đây là ưu điểm vượt trội của nó so với các công cụ phát triển khác. - C# Builder không ép buộc người lập trình phải theo một khung ứng dụng nào. Do vậy, nó rất thích hợp cho người lập trình sáng tạo, có yêu cầu điều chỉnh chi tiết tới mọi thành phần của chương trình. VI. Một số ứng dụng của Logic mờ Lôgic mờ có thể được sử dụng để điều khiển các thiết bị gia dụng như máy giặt (cảm nhận kích thước tải và mật độ bột giặt và điều chỉnh các chu kỳ giặt theo đó) và tủ lạnh. Một ứng dụng cơ bản có thể có đặc điểm là các khoảng con của một biến liên tục. Ví dụ, một đo đạc nhiệt độ cho phanh (anti-lock brake) có thể có một vài hàm liên thuộc riêng biệt xác định các khoảng nhiệt độ cụ thể để điều khiển phanh một cách đúng đắn. Mỗi hàm ánh xạ cùng một số đo nhiệt độ tới một chân giá trị trong khoảng từ 0 đến 1. Sau đó các chân giá trị này có thể được dùng để quyết định các phanh nên được điều khiển như thế nào. Hình 10: Mô hình đoán nhận nhiệt độ Trong hình, cold (lạnh), warm (ấm), và hot (nóng) là các hàm ánh xạ một thang nhiệt độ. Một điểm trên thang nhiệt độ có 3 "chân giá trị" — mỗi hàm cho một giá trị. Đối với nhiệt độ cụ thể trong hình, 3 chân giá trị này có thể được giải nghĩa là 3 miêu tả sau về nhiệt độ này: "tương đối lạnh", "hơi hơi ấm", và "không nóng". Ví dụ về các ứng dụng khác của lôgic mờ Các hệ thống con của ô tô và các phương tiện giao thông khác, chẳng hạn các hệ thống con như ABS và quản lý hơi (ví dụ Tokyo monorail) Máy điều hòa nhiệt độ Phần mềm MASSIVE dùng trong các tập phim Chúa Nhẫn (Lord of the Rings), phần mềm đã giúp trình diễn những đội quân lớn, tạo các chuyển động một cách ngẫu nhiên nhưng vẫn có thứ tự Camera Xử lý ảnh số(Digital image processing), chẳng hạn như phát hiện biên (edge detection) Nồi cơm điện Máy rửa bát Thang máy Trí tuệ nhân tạo trong trò chơi điện tử Các bộ lọc ngôn ngữ tại các bảng tin, diễn đàn (message board) và phòng chát để lọc bỏ các đoạn văn bản khiếm nhã Nhận dạng mẫu trong Cảm nhận từ xa ( Remote Sensing) Gambit System trong Final Fantasy XII Phần III: Áp dụng logic mờ vào Cài đặt ứng dụng điều khiển tốc độ xe ôtô I. Mục tiêu và thiết kế 1. Mục tiêu Ngày nay nhiều trang thiết bị được nhúng vào trong nó logic mờ (Fuzzy logic) để cho việc sử dụng nó dễ hơn, tiện lợi hơn. Chúng ta có thể tìm thấy logic mờ trong những camera, những nồi cơm điện, những máy hút bụi, máy điều hòa nhiệt độ, …. Và một trong những ứng dụng thú vị của logic mờ đó là chúng được nhúng vào hệ thống điều khiển xe Ôtô thông minh. Với những kiến thức về logic mờ đã tìm hiểu trong Phần I: Giới thiệu Logic Mờ và Phần II: Hệ Thống Mờ, chúng ta sẽ áp dụng vào bài toán “Điều khiển tốc độ xe ôtô”. Trong mục tiêu bài tiểu luận, chúng ta chỉ giới hạn ứng dụng Logic mờ để điều khiển “tốc độ” của xe ôtô để giúp người điều khiển xe an toàn hơn. 2. Thiết kế ứng dụng Hệ thống điều khiển mờ được thiết kế gồm: Giá trị đầu vào gồm : Nhiệt độ không khí (temperature), và độ bao phủ (cloud cover) Bộ mờ hóa Các luật điều khiển tốc độ xe Bộ suy diễn Bộ giải mờ Giá trị đầu ra là tốc độ của xe ôtô ( Crisp output) Hình 22: Thiết kế hệ thống điều khiển mờ II. Phân tích thuật toán xây dựng hệ thống điều khiển mờ cho xe ôtô Các bước xây dựng một hệ thống điều khiển mờ Định nghĩa biến ngôn ngữ và các thuật ngữ. Xây dựng các hàm phụ thuộc. Xây dựng các luật mờ. Làm mờ các dữ liệu đầu vào “rõ” thành các giá trị “mờ” sử dụng các hàm phụ thuộc ( quá trình mờ hóa). Đánh giá các luật trong tập luật Kết nối các kết quả trong mỗi luật. Giải mờ các dữ liệu đầu ra (defuzzification) 1. Xây dựng biến ngôn ngữ (Linguistic variables) Với biến ngôn ngữ Temperature (nhiệt độ) ta có tập mờ sau: Temperature : {Freezing, Cool, Warm, Hot} Với biến ngôn ngữ Cover ( độ bao phủ) ta có tập mờ sau: Cover : { Sunny, Partly Cloudy, Overcast } Với biến ngôn ngữ là Speed ( tốc độ ) ta có tập mờ sau: Speed:{ Fast, Slow } 2. Xây dựng hàm phụ thuộc (membership function) a. Các loại hàm phụ thuộc phổ biến Hình 23: Các dạng hàm phụ thuộc (membership function) phổ biến Xây dựng các hàm phụ thuộc sử dụng trong ứng dụng minh họa : Dạng tam giác (Triangular) Dạng hình thang phải (Right Troid) Dạng hình thang trái (Left Trapzoid) b. Các hàm phụ thuộc được xây trong ứng dụng điều khiển xe ôtô Các hàm phụ thuộc của Temperature Với x là nhiệt độ F (0<= x <= 110) Hàm phụ thuộc của Cover Với y là độ bao phủ (%) (0<= x <= 100) Hàm phụ thuộc của Speed Với z là vận tốc (0<= z <= 100) 3. Xác định các luật mờ a. Ma trận luật Dựa vào 2 yếu tố là Temperature (nhiệt độ) và độ bao phủ (cloudy cover), chúng ta xây dưng ma trận luật để quyết định tốc độ điều khiền xe ôtô an toàn như sau: Temperature Cover Freezing Cool Warm Hot Sunny Slow Fast Fast Fast Partly Slow Slow Fast Fast Overcast Slow Slow Slow Slow b. Xây dựng các luật mờ và tối ưu luật mờ(Fuzzy Rules) Dựa vào bảng ma trận quyết định trên, chúng ta có thể xây dựng các luật mờ sau: Chúng ta thấy rằng: Nếu Temperature là Freezing thì dù Cover là Sunny hay Partly hay Overcast đều dẫn đến kết quả Speed là Slow. Thay vì viết luật: If Temperature is Freezing And ( Cover is Sunny Or Cover is Partly Or Cover is Overcast) Then Speed is Slow Chúng ta có thể rút gọn thành : If Temperature is Freezing Then Speed is Slow Tương tự nếu Cover là Overcast thì dù Temperature là Freezing hay Cool hay Warm hay Hot thì Speed vẫn là Slow: Thay vì viết luật: If Cover is Overcast And (Temperature is Freezing Or Temperature is Cool Or Temperature is Warm Or Temperature is Hot Then Speed is Slow Cuối cùng ta còn các luật sau: (R1) If Temperature is Freezing Then Speed is Slow Freezing(Temperature) => Slow(Speed) (R2) If Cover is Sunny and Temperature is Cool Then Speed is Fast Sunny(Cover) Ù Cool(Temp)Þ Fast(Speed) (R3) If Cover is Sunny and Temperature is Warm Then Speed is Fast Sunny(Cover) Ù Warm(Temp)Þ Fast(Speed) (R4) If Cover is Sunny and Temperature is Hot Then Speed is Fast Sunny(Cover) Ù Hot(Temp)Þ Fast(Speed) (R5) If Cover is Partly and Temperature is Cool Then Speed is Slow Partly(Cover) Ù Cool(Temp)Þ Slow(Speed) (R6) If Cover is Partly and Temperature is Warm Then Speed is Fast Partly(Cover) Ù Warm(Temp)Þ Fast(Speed) (R7) If Cover is Partly and Temperature is Hot Then Speed is Fast Partly(Cover) Ù Hot(Temp)Þ Fast(Speed) (R8) If Cover is Overcast Then Speed is Slow Overcast(Cover) Þ Slow(Speed) 4. Làm mờ dữ liệu đầu vào (Fuzzification) Với dữ liệu đầu vào là: Nhiệt độ : 57 độ F Độ bao phủ : 35% Tính tốc độ an toàn của xe ôtô (Speed = ?) Dựa và các hàm phụ thuộc của Temperature ta có: Với x = 57 thì Coolx= 70 - x70 - 50=70-5770-50=0.65 Với x = 57 thì Warmx= x - 5070 - 50=57-5070-50=0.35 Dựa vào hàm phụ thuộc của Cover Với giá trị Cover = 35% Sunnyy= 40-y40-20=40-3540-20=0.25 Partlyy= y-2050-20=35-2050-20=0.5 Chọn phương pháp suy diễn là phương pháp Mandani Sử dụng toán tử suy diễn min Sử dụng phép hợp thành max-min Ri: if x is Ai and y is Bi then z is Ci, i = 1, 2, … , n x Î U, Ai Ì U, y Î V, Bi Ì V, z Î W, Ci Ì W Quy tắc Min Luật 1: If it's Sunny and Warm, drive Fast Sunny(Cover)ÙWarm(Temp)ÞFast(Speed) 0.25 Ù 0.35 = 0.25 Þ Fast = 0.25 Luật 2: If it's Sunny and Cool, drive Fast Sunny(Cover)ÙCool(Temp)ÞFast(Speed) 0.25 Ù 0.65 = 0.25 Þ Fast = 0.25 Luật 3: If it's Partly and Warm, drive Fast Partly(Cover)ÙWarm(Temp)ÞFast(Speed) 0.5 Ù 0.35 = 0.35 Þ Fast = 0.35 Luật 4: If it's Partly and Cool, drive Slow Partly(Cover)ÙCool(Temp)ÞSlow(Speed) 0.5 Ù 0.65 = 0.5 Þ Slow = 0.5 Quy tắc Max-Min Sử dụng quy tắc Max–Min cho Luật 1, luật 2 và luật 3 ta có: Max(Min(Sunny(Cover),Warm(Temp)), Min(Sunny(Cover),Cool(Temp)), Min(Partly(Cover),Warm(Temp))) = Max (Min(0.25,0.35),Min(0.25,0.65),(0.5,0.35)) = 0.35 Þ Fast = 0.35 Speed là 50% Slow và 35% Fast 5. Giải mờ a. Phương pháp trọng tâm Điểm y’ được xác định là hoành độ của điểm trọng tâm miền được bao bởi trục hoành và đường μB’(y). Công thức xác định : trong đó S là miền xác định của tập mờ B’ Phương pháp trọng tâm cho luật Sum-Min Giả sử có m luật điều khiển được triển khai, ký hiệu các giá trị mờ đầu ra của luật điều khiển thứ k là μB’k(y) thì với quy tắc Sum-Min hàm thuộc sẽ là , và y’ được xác định: (1) Trong đó: và k=1,2...m Xét riêng cho trường hợp các hàm thuộc dạng hình thang như hình trên : b. Phương pháp độ cao Từ công thức (1), nếu các hàm thuộc có dạng singleton thì ta được: với Hk = μB’k(y) Đây là công thức giải mờ theo phương pháp độ cao. Chú ‎ý hai công thức trên có thể áp dụng cả cho luật Max-Min Chúng ta áp dụng phương pháp độ cao để tính vận tốc của xe ôtô như sau Speed = (0.5*25+ ... Speed = (0.5 * 25 + 0.35 * 75)/( 0.5 + 0.35) = 45.9 mph III. Cài đặt ứng dụng minh họa 1. Cài đặt chương trình mình họa bằng C# Định nghĩa các giá trị của biến ngôn ngữ public enum LinguisticVariable { None = 0, //Temperature Freezing = 1, Cool = 2, Warm = 3, Hot = 4, //Cover Sunny = 5, Partly = 6, Overcast = 7, //Speed Slow = 8, Fast = 9 } Thiết kế Class FuzzyNumber public class FuzzyNumber { private double _maximum= 0.0; //maximum cua số mờ private double _minimum = 0.0; //minimum cua số mờ private double _number = 0.0; // tại vị trí này,membership lớn nhất private double _membership = 0.0; //độ phụ thuộc private string _name = string.Empty; public FuzzyNumber() { } public FuzzyNumber(string name, double lowRange, double highRange) { } public FuzzyNumber(LinguisticVariable type, double lowRange, double highRange) { …… } public FuzzyNumber(string name, double lowRange, double highRange, double number) { } public void SetNumber(double number) { _number = number; } } Thiết kế các Class FuzzySet public class FuzzySet : ArrayList { private string _name = string.Empty; public string Name { get { return _name; } set { _name = value; } } public FuzzySet() : base() { } public FuzzySet(string name) { _name = name; } … } Class FuzzySet chứa dữ liệu về tập mờ, Định nghĩa Class MembershipFunction: Class MembershipFunction chứa các định nghĩa công thức Hàm phụ thuộc có dạng Triangular, RightTrapezoid và LeftTrapezoid … public class MembershipFunction { public MembershipFunction() { } public static double Triangular_MembershipFunction(double a, double b, double c, double x) { double membership = 0.0; if (x <= a) membership = 0; else if (x > a && x <= b) membership = (x - a) / (b - a); else if (x > b && x < c) membership = (c - x) / (c - b); else if (x >= c) membership = 0; return membership; } public static double RightTrapezoid_MembershipFunction(double a, double b, double x) { double membership = 0.0; if (x <= a) membership = 1.0; else if (x > a && x < b) membership = (b-x) / (b - a); else if (x >= b) membership = 0; return membership; } public static double LeftTrapezoid_MembershipFunction(double a, double b, double x) { double membership = 0.0; if (x <= a) membership = 0.0; else if (x > a && x < b) membership = (x-a) / (b - a); else if (x >= b) membership = 1.0; return membership; } Khởi tạo chương trình chạy: Tạo 3 tập mờ CarSpeed, Temperature, cover. FuzzySet carSpeedSet = new FuzzySet("CarSpeed"); FuzzySet temperatureSet = new FuzzySet("Temperature"); FuzzySet coverSet = new FuzzySet("Cover"); Tạo các khái niệm số mờ “Fzeezing”, “Cool”, “Warm”, “Hot” thuộc tập mờ Temperature FuzzyNumber freezing = new FuzzyNumber("Freezing", 10, 50); FuzzyNumber cool = new FuzzyNumber("Cool", 30, 70); FuzzyNumber warm = new FuzzyNumber("Warm", 50, 90); FuzzyNumber hot = new FuzzyNumber("Hot", 70, 110); temperatureSet.Add(freezing); temperatureSet.Add(cool); temperatureSet.Add(warm); temperatureSet.Add(hot); Tạo các khái niệm số mờ “Sunny”, “Partly”, “Overcast” thuộc tập mờ Cover //Cover fuzzy set FuzzyNumber sunny = new FuzzyNumber("Sunny", 0, 40); FuzzyNumber partly = new FuzzyNumber("Partly", 20, 80); FuzzyNumber overcast = new FuzzyNumber("Overcast", 60, 100); coverSet.Add(sunny); coverSet.Add(partly); coverSet.Add(overcast); Tạo các khái niệm số mờ “Slow”, “Fast” thuộc tập mờ CarSpeed //car speed fuzzy set // FuzzySet carSpeedSet = new FuzzySet("CarSpeed"); FuzzyNumber slow = new FuzzyNumber("Slow", 0, 75, 25); FuzzyNumber fast = new FuzzyNumber("Fast", 25, 100, 75); carSpeedSet.Add(slow); carSpeedSet.Add(fast); Cài đặt các luật làm mờ: public void Fuzzy() { double temperature = trackBar1.Value; double cover = trackbarCloudCover.Value; double membershipFast = 0.0; double membershipSlow = 0.0; double membershipFreezing = 0.0; double membershipCool = 0.0; double membershipWarm = 0.0; double membershipHot = 0.0; double membershipSunny = 0.0; double membershipPartly = 0.0; double membershipOvercast = 0.0; //freezing if (temperatureSet.Temperature_Is_Freezing(temperature)) { membershipFreezing = temperatureSet.GetMemberShipOfVariable(LinguisticVariable.Freezing, temperature); membershipSlow = membershipFreezing; carSpeedSet.DriverSlow(membershipSlow); } // sunny and cool if (coverSet.Cover_Is_Sunny(cover) && temperatureSet.Temperature_Is_Cool(temperature)) { membershipSunny = coverSet.GetMemberShipOfVariable(LinguisticVariable.Sunny, cover); membershipCool = temperatureSet.GetMemberShipOfVariable(LinguisticVariable.Cool, temperature); membershipFast = FuzzySet.Min(membershipSunny, membershipCool); carSpeedSet.DriverFast(membershipFast); } // sunny and warm if (coverSet.Cover_Is_Sunny(cover) && temperatureSet.Temperature_Is_Warm(temperature)) { membershipSunny = coverSet.GetMemberShipOfVariable(LinguisticVariable.Sunny, cover); membershipWarm = temperatureSet.GetMemberShipOfVariable(LinguisticVariable.Warm, temperature); membershipFast = FuzzySet.Min(membershipSunny, membershipWarm); carSpeedSet.DriverFast(membershipFast); } // sunny and hot if (coverSet.Cover_Is_Sunny(cover) && temperatureSet.Temperature_Is_Hot(temperature)) { membershipSunny = coverSet.GetMemberShipOfVariable(LinguisticVariable.Sunny, cover); membershipHot = temperatureSet.GetMemberShipOfVariable(LinguisticVariable.Hot, temperature); membershipFast = FuzzySet.Min(membershipSunny, membershipHot); carSpeedSet.DriverFast(membershipFast); } //partly and cool if (coverSet.Cover_Is_Partly(cover) && temperatureSet.Temperature_Is_Cool(temperature)) { membershipPartly = coverSet.GetMemberShipOfVariable(LinguisticVariable.Partly, cover); membershipCool = temperatureSet.GetMemberShipOfVariable(LinguisticVariable.Cool, temperature); membershipSlow = FuzzySet.Min(membershipPartly, membershipCool); carSpeedSet.DriverSlow(membershipSlow); } //partly and warm if (coverSet.Cover_Is_Partly(cover) && temperatureSet.Temperature_Is_Warm(temperature)) { membershipPartly = coverSet.GetMemberShipOfVariable(LinguisticVariable.Partly, cover); membershipWarm = temperatureSet.GetMemberShipOfVariable(LinguisticVariable.Warm, temperature); membershipFast = FuzzySet.Min(membershipPartly, membershipWarm); carSpeedSet.DriverFast(membershipFast); } //partly and hot if (coverSet.Cover_Is_Partly(cover) && temperatureSet.Temperature_Is_Hot(temperature)) { membershipPartly = coverSet.GetMemberShipOfVariable(LinguisticVariable.Partly, cover); membershipHot = temperatureSet.GetMemberShipOfVariable(LinguisticVariable.Hot, temperature); membershipFast = FuzzySet.Min(membershipPartly, membershipHot); carSpeedSet.DriverFast(membershipFast); } //overcast if (coverSet.Cover_Is_Overcast(cover)) { membershipOvercast = coverSet.GetMemberShipOfVariable(LinguisticVariable.Overcast, cover); membershipSlow = membershipOvercast; carSpeedSet.DriverSlow(membershipSlow); } double speed = carSpeedSet.Defuzzy(); speedControl1.Speed = Math.Round(speed); UpdateSpeed(speed); } 2. Chạy thử nghiệm Khi khởi động chương trình sẽ chọn ngẫu “nhiên nhiệt độ” và “độ bao phủ” và dựa vào các luật để tính ra tốc độ. Người dùng có thể tùy chỉnh “nhiệt độ” và “độ bao phủ” thông qua 2 thanh slider cấu hình. Nút Start để khởi động timer, tự động thay đổi nhiệt độ và độ bao phủ ngẫu nhiên. Nút stop để dừng timer, trở về trạng thái cấu hình thủ công(cấu hình băng thanh slider) membership Hình 24: Chương trình minh họa điều khiển tốc độ xe ôtô IV. Kết luận Trong những năm gần đây, lý thuyết logic mờ đã có nhiều áp dụng thành công trong lĩnh vực điều khiển. Bộ điều khiển dựa trên lý thuyết logic mờ gọi là bộ điều khiển mờ. Trái với kỹ thuật điều khiển kinh điển, kỹ thuật điều khiển mờ thích hợp với các đối tượng phức tạp, không xác định mà người vận hành có thể điều khiển bằng kinh nghiệm. Vai trò của phương pháp toán trong tin học Thông qua môn học “Phương pháp toán trong tin học” và bài tiểu luận này đã giúp em có thêm kiến thức sâu sắc về ứng dụng mô hình toán học vào trong tin học. Những vai trò quan trọng của toán học trong tin học có thể khái quát như sau: Mô hình hóa các khái niệm trong thực tiễn thành các mô hình toán học mà máy tính có thể hiểu được. Biểu diễn tri thức của con người thành dạng mà máy tính có thể đọc được. Là cơ sở để thiết kế các thuật toán (thuật toán mà hóa, logic mờ …) Toán học cũng là cơ sở để đánh giá hiệu quả của thuật toán, tính toán độ phức tạp của thuật toán. Những kết quả đạt được trong bài thu hoạch: Khái quát được cơ sở lý thuyết về logic mờ, mệnh đề mờ, luật mờ, số mờ … Áp dụng các kiến thức về logic mờ để xây dựng ứng dụng điều khiển mờ cho xe ôtô. Sử dụng ngôn ngữ lập trình C# để xây dựng giao diện trực quan cho chương trình Vẽ biểu đồ biểu diễn trực quan các hàm phụ thuộc. Hạn chế và Hướng phát triển: Hạn chế: Chương trình chỉ mới phân tích 2 yếu tố đầu vào đơn giản (nhiệt độ và độ bao phủ) để tính ra tốc độ an toàn cho xe. Chưa thể hiện được biểu đồ hàm phụ thuộc dạng 3D. Chương trình ứng dụng chỉ mới mang tính chất minh họa, chưa thể áp dụng được trong thực tiễn, tính khoa học chưa cao. Hướng phát triển: Thêm các yếu tố đầu vào phức tạp hơn để xác định tốc độ an toàn cho xe hiệu quả hơn đáp ứng nhu cầu của thực tiễn (độ tốt xấu của đường đi, lưu lượng xe trên đường …) Phát triển mô hình điều khiển xe ôtô thông minh tránh các chướng ngại vật. Vẽ biểu đồ 3D cho các hàm phụ thuộc. Tài liệu tham khảo [1] Bài giảng Phương pháp Toán trong Tin – PGS. TS Đỗ Văn Nhơn. [2] Giáo trình các hệ cơ sở tri thức – GS TSKH Hoàng Kiếm – TS Đỗ Phúc- TS Đỗ Văn Nhơn – NXB Đại học Quốc Gia Tp HCM - 2005 [3] Lý thuyết Mờ và Ứng dụng - Nguyễn như Phong – NXB Khoa học và Kỹ thuật – 2005 [4] Timothy J.Ross, “Fuzzy Logic with Engineering Applications”. McGraw-Hill, 1997 [5] Amiya Patanaik. “Fuzzy Logic Control of Air Conditioners”. Roll number 05EG1008, Department of Electrical Engineering , Indian Institute of Technology, Kharagpur - 721302, India. [6] Henry Nasution. “Development of Fuzzy Logic Control for Vehicle Air Conditioning System”. Telkomnika Vol. 6, No.2, 2008 . [7] Manish Agarwal. "Fuzzy Logic Control of Washing Machines". Roll number 00ME1011, Department of Mechanical Engineering, Indian Institute of Technology, Kharagpur - 721302, India.

Các file đính kèm theo tài liệu này:

  • docxch1001117_nguyenkhanhngoc_2447.docx
Luận văn liên quan