Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 55 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
55
Dung lượng
1,79 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH CHƯƠNG TRÌNH ĐÀO TẠO THẠC SĨ CNTT QUA MẠNG - - Tìm Hiểu Logic Mờ xây dựng ứng dụng Điều khiển tự động tốc độ xe ôtô Bộ môn : PP Toán Tin Học GVHD : PGS TS Đỗ Văn Nhơn Thực : Nguyễn Khánh Ngọc CH1001117 Thành phố Hồ Chí Minh - Tháng Năm 2012 NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN MỤC LỤC Phần 1: Logic Mờ I Giới thiệu II Tập mờ Tập kinh điển 2 Định nghĩa tập mờ 3 Các thông số đặc trưng cho tập mờ Các phép toán tập mờ III Quan hệ mờ 12 IV Logic mờ 12 Khái niệm 12 Biến ngôn ngữ 13 Mệnh đề mờ 13 Các phép toán mệnh đề mờ 14 Phép toán kéo theo mờ 15 Luật mờ 16 Luật Modus Ponens hay Modus Tollens 17 Phần 2: Thiết kế Hệ Thống Mờ I Các yếu tố xây dựng mô hình Logic mờ 20 II Qui trình hoạt động Logic mờ 23 III Phương pháp xây dựng mô hình 23 Mô hình tam giác 23 Mô hình hình thang 24 IV Các phương pháp giải mờ 25 Phương pháp cực đại 25 Phương pháp điểm trọng tâm 26 V Công cụ thực hệ Logic mờ 27 VI Một số ứng dụng Logic mờ 28 Phần 3: Á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 thiết kế 30 Mục tiêu 30 Thiết kế ứng dụng 30 II Phân tích thuật toán xây dựng hệ thống điều khiển mờ cho xe ôtô 31 Xây dựng biến ngôn ngữ (Linguistic variables) 31 Xây dựng hàm phụ thuộc (membership function) 31 Xác định luật mờ 35 Làm mờ liệu đầu vào (Fuzzification) 37 Giải mờ 40 III Cài đặt ứng dụng minh họa 42 Cài đặt chương trình họa C# 42 Chạy thử nghiệm 48 IV Kết luận 49 Vai trò phương pháp toán tin học 49 Những kết đạt thu hoạch 49 Hạn chế Hướng phát triển 49 Tài liệu tham khảo 51 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Phần I: Logic Mờ I Giới thiệu Logic mờ công bố lần Mỹ vào năm 1965 giáo sư Lotfi Zadeh Kể từ đó, logic mờ có nhiều phát triển qua chặng đường sau : phát minh Mỹ, áp dụng Châu Âu đưa vào sản phẩm thương mại Nhật Ứng dụng logic mờ vào công nghiệp thực Châu Âu, khoảng sau năm 1970 Tại trường Queen Mary Luân Đôn – Anh, Ebrahim Mamdani dùng logic mờ để điều khiển máy nước mà trước ông điều khiển kỹ thuật cổ điển Và Đức, Hans Zimmermann dùng logic mờ cho hệ định Liên tiếp sau đó, logic mờ áp dụng vào lĩnh vực khác điều khiển lò xi măng, … không chấp nhận rộng rãi công nghiệp Kể từ năm 1980, logic mờ đạt nhiều thành công ứng dụng định phân tích liệu Châu Âu Nhiều kỹ thuật logic mờ cao cấp nghiên cứu phát triển lĩnh vực Cảm hứng từ ứng dụng Châu Âu, công ty Nhật bắt đầu dùng logic mờ vào kỹ thuật điều khiển từ năm 1980 Nhưng phần cứng chuẩn tính toán theo giải thuật logic mờ nên hầu hết ứng dụng dùng phần cứng chuyên logic mờ Một ứng dụng dùng logic mờ nhà máy xử lý nước Fuji Electric vào năm 1983, hệ thống xe điện ngầm Hitachi vào năm 1987 Những thành công tạo nhiều quan tâm Nhật Có nhiều lý để giải thích logic mờ ưa chuộng Thứ nhất, kỹ sư Nhật thường giải pháp đơn giản, sau sâu vào vấn đề Phù hợp với việc logic mờ cho phép tạo nhanh mẫu tiến đến việc tối ưu Thứ hai, hệ dùng logic mờ đơn giản dễ hiểu Sự “thông minh” hệ không nằm hệ phương trình vi phân hay mã nguồn Cũng việc kỹ sư Nhật thường làm việc theo tổ, đòi hỏi phải có giải pháp để người tổ hiểu hành vi hệ thống, chia ý tưởng để tạo hệ Logic mờ cung cấp cho họ phương tiện minh bạch để thiết kế hệ thống Và văn hóa, người Nhật không quan tâm đến logic Boolean hay logic mờ; tiếng Nhật , từ “mờ’ không mang nghĩa tiêu cực Do đó, logic mờ dùng nhiều ứng dụng thuộc lĩnh vực điều khiển thông minh hay xử lý liệu Máy quay phim máy chụp hình dùng logic mờ để chứa đựng chuyên môn người nghệ sĩ nhiếp ảnh Misubishi thông báo xe giới dùng logic mờ điều khiển, nhiều hãng chế tạo xe khác Nhật dùng logic mờ số thành phần Trong lĩnh vực tự động hóa, Omron Corp có khoảng 350 phát minh logic mờ Ngoài ra, logic mờ dùng để tối ưu nhiều trình hóa học sinh học Trang GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Năm năm trôi qua, tổ hợp Châu Âu nhận kỹ thuật chủ chốt vào tay người Nhật từ họ nỗ lực việc dùng logic mờ vào ứng dụng Đến nay, có khoảng 200 sản phẩm bán thị trường vô số ứng dụng điều khiển trình – tự động hóa dùng logic mờ Từ thành công đạt được, logic mờ trở thành kỹ thuật thiết kế “chuẩn” chấp nhận rộng rãi cộng đồng II Tập mờ Tập kinh điển Khái niệm tập hợp hình thành tảng lôgic định nghĩa xếp chung đối tượng có tính chất, gọi phần tử tập hợp Cho tập hợp A, phần tử x thuộc A ký hiệu: x ∈ A Thông thường ta dùng hai cách để biểu diễn tập hợp kinh điển, là: Liệt kê phần tử tập hợp, ví dụ tập A1 = {xe đạp, xe máy, xe ca, xe tải}; Biểu diễn tập hợp thông qua tính chất tổng quát phần tử, ví dụ: tập số thực (R), Tập số tự nhiên (N) Để biểu diễn tập hợp A tập X, ta dùng hàm thuộc µA(x), với: 𝑘ℎ𝑖 𝑥 ∈ 𝐴 𝜇𝐴 (𝑥) = { 𝑘ℎ𝑖 𝑥 ∉ 𝐴 𝜇𝐴 (𝑥) 𝑐ℎỉ 𝑛ℎậ𝑛 𝑚ộ𝑡 𝑡𝑟𝑜𝑛𝑔 𝑔𝑖á 𝑡𝑟ị "1" ℎ𝑜ặ𝑐 "0" Ký hiệu = {𝑥 ∈ 𝑋 | 𝑥 𝑡ℎả𝑜 𝑚ã𝑛 𝑚ộ𝑡 𝑠ố 𝑡í𝑛ℎ 𝑐ℎấ𝑡 𝑛à𝑜 đó} Ta nói: tập A định nghĩa tập X Hình mô tả hà phụ thuộc tập số thực từ -5 đến 𝐴 = {𝑥 ∈ 𝑋 | − ≤ 𝑥 ≤ } Hình 1: Hàm phụ thuộc 𝜇𝐴 (𝑥) tập kinh điển A Trang GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Định nghĩa tập mờ Các tập mờ hay tập hợp mờ (Fuzzy set) mở rộng lý thuyết tập hợp cổ điển dùng lôgic mờ Trong lý thuyết tập hợp cổ điển, quan hệ thành viên phần tử tập hợp đánh giá theo kiểu nhị phân theo điều kiện rõ ràng - phần tử thuộc không thuộc tập hợp Ngược lại, lý thuyết tập mờ cho phép đánh giá từ từ quan hệ thành viên phần tử tập hợp; quan hệ mô tả hàm liên thuộc (membership function) 𝜇 → [0,1] Tập hợp mờ tập hợp mà thành phần số ( x, ( x)) Như vậy, ta nói F tập mờ F có biểu diễn: 𝐹 = { (𝑥, 𝜇𝐴 (𝑥))/𝑥 ∈ 𝑋 } 𝐴 tập mờ không gian X A xác định hàm: 𝜇𝐴 : 𝑋 → [0,1] Trong đó: X : tập hay gọi tập vũ trụ tập mờ 𝐴 𝜇𝐴 hàm liên thuộc (membership function) 𝜇𝐴 (𝑥) độ liên thuộc x vào tập mờ A Các tập mờ coi mở rộng lý thuyết tập hợp cổ điển vì, với universe (Không gian tham chiếu hay không gian nền) định, hàm liên thuộc giữ vai trò hàm đặc trưng (indicator function) ánh xạ phần tử tới giá trị 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) tập A, có hai giá trị "1" x∈A "0" x∉A Ví dụ 1: Cách biểu diễn hàm phụ thuộc không phù hợp với tập mô tả "mờ" tập B gồm số thực gần 5: B = { x ∈ R | x ≈5 } Khi ta khẳng định chắn số có thuộc B hay không? mà nói thuộc B gao nhiêu phần trăm Để trả lời câu hỏi này, ta phải coi hàm phụ thuộc 𝜇𝐵 (𝑥) có giá trị khoảng từ đến tức là: ≤ 𝜇𝐵 (𝑥) ≤1 Trang GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Hình 2: Hàm phụ thuộc 𝜇𝐵 (𝑥) tập “mờ” B Từ phân tích ta có định nghĩa: Tập mờ B xác định tập kinh điển M tập mà phần tử biểu diễn cặp giá trị (𝑥, 𝜇𝐵 (𝑥)) Trong x ∈M 𝜇𝐵 (𝑥)là ánh xạ Ánh xạ 𝜇𝐵 (𝑥) gọi hàm liên thuộc tập mờ B Tập kinh điển M gọi sở tập mờ B Như phương diện giải tích tập mờ ứng với hàm số hàm số có đồ thị Những tập mờ thường gặp đồ thị hàm độ thuộc (membership function ) có hình dạng hình tam giác hình thang mà người ta thường gọi vắn tắt “tập mờ hình thang” “tập mờ hình tam giác” hình vẽ đây: h1 Hình 3: Ba tập mờ trạng thái nhiệt độ Cold (lạnh), Warm (ấm) Hot (nóng) có dạng hình thang Theo hình vẽ điểm h1 trục nhiệt độ ( temperature) chiếu lên ta thấy cắt tập mờ warm điểm mà ta thấy “hơi ấm”, đồng thời cắt tập mờ cold điểm mà ta thấy “tương đối lạnh” Tóm lại nhiệt độ h1 xem “hơi ấm” “tương đối lạnh” Ngày tập mờ logic mờ ứng dụng nhiều khoa học kỹ thuật đặc biệt điều khiển tự động hệ trợ giúp định tính toán hiệu cao… Ví dụ máy giặt có ghi Fuzzy logic Controler gặp, máy đo độ bẩn, chất liệu lượng đồ cần giặt từ ấn định mức độ bột giặt, số nước cần dùng chức cần vận hành để giặt Trang GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Ví dụ 2: Một tập mờ F với số tự nhiên nhỏ mô tả hàm thành viên 𝜇𝐴 có đồ thị sau: Hình 4: Đồ thị hàm thành viên Ta có tập mờ 𝐴 = {(1,1), (2,1), (3,0.95), (4,0.17)} Số tự nhiên có độ phụ thuộc Số tự nhiên có độ phụ thuộc thấp Các số không liệt kê có độ phụ thuộc Sử dụng hàm liên thuộc để tính độ phụ thuộc phần tử x có hai cách: tính trực tiếp (nếu 𝜇𝐴 dạng công thức tường minh) tra bảng (nếu 𝜇𝐴 dạng bảng) Các hàm liên thuộc 𝜇𝐴 có dạng “trơn” gọi hàm liên thuộc kiểu S Đối với hàm liên thuộc kiểu S, công thức biểu diễn 𝜇𝐴 có độ phức tạp lớn nên thời gian tính độ phụ thuộc cho phần tử lâu Trong kỹ thuật điều khiển mờ thông thường, hàm liên thuộc kiểu S thường thay gần hàm tuyến tính đoạn Một hàm liên thuộc có dạng tuyến tính đoạn gọi 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 đoạn Trang GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Hàm liên thuộc 𝜇𝐴 với m1 = m2 m3 = m4 hàm phụ thuộc tập Miền tin cậy tập mờ A X tập T tập X thỏa mãn 𝑇 = {𝑥 ∈ 𝑋/ 𝜇𝐴 (𝑥) = 1} Miền xác định tập mờ F X tập S tập X thỏa mãn 𝑆 = {𝑥 ∈ 𝑋/ 𝜇𝐴 (𝑥) > 0} Hình - Miền tin cậy miền xác định Các thông số đặc trưng cho tập mờ Các thông số đặc trưng cho tập mờ độ cao, miền xác định miền tin cậy (hình 1.3) + Độ cao tập mờ B (Định nghĩa sở M) giá trị lớn giá trị hàm liên thuộc: 𝐻 = 𝑆𝑈𝑃 𝜇𝐵 (𝑥) 𝑥∈𝑀 Một tập mờ có phần tử có độ phụ thuộc gọi tập mờ tắc (H = 1) Ngược lại, tập mờ B với H < gọi tập mờ không tắc Hình 7: Độ cao, miền xác định, miền tin cậy tập mờ Trang GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 (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) Làm mờ liệu đầu vào (Fuzzification) Với liệu đầu vào là: - Nhiệt độ : 57 độ F Độ bao phủ : 35% Tính tốc độ an toàn xe ôtô (Speed = ?) Dựa hàm phụ thuộc Temperature ta có: if x 30 0 x 30 50 30 Cool ( x) 70 x 70 50 0 Với x = 57 𝐶𝑜𝑜𝑙(𝑥) = 70 − 𝑥 70 − 50 = 70−57 70−50 if 30 x 50 if 50 x 70 if x 70 = 0.65 if x 50 0 x 50 70 50 Warm ( x) 90 x 90 70 0 Với x = 57 𝑊𝑎𝑟𝑚(𝑥) = 𝑥 − 50 70 − 50 = 57−50 70−50 if 50 x 70 if 70 x 90 if x 90 = 0.35 Trang 37 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Dựa vào hàm phụ thuộc Cover 1 40 y Sunny ( y ) 40 20 0 if y 20 0 y 20 50 20 Partly ( y ) 80 y 80 50 0 if y 20 if 20 y 40 if y 40 if 20 y 50 if 50 y 80 if y 80 Với giá trị Cover = 35% 𝑆𝑢𝑛𝑛𝑦(𝑦) = 40 − 𝑦 40 − 35 = = 0.25 40 − 20 40 − 20 𝑃𝑎𝑟𝑡𝑙𝑦(𝑦) = 𝑦 − 20 35 − 20 = = 0.5 50 − 20 50 − 20 Chọn phương pháp suy diễn phương pháp Mandani - Sử dụng toán tử suy diễn - 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 Trang 38 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 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 luật 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 50% Slow 35% Fast Trang 39 Nguyễn Khánh Ngọc CH1001117 GVHD: PGS TS Đỗ Văn Nhơn Giải mờ a Phương pháp trọng tâm Điểm y’ xác định hoành độ điểm trọng tâm miền bao trục hoành đường μB’(y) Công thức xác định : y' y ( y )dy S ( y )dy S S miền xác định 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 triển khai, ký hiệu giá trị mờ đầu luật điều m khiển thứ k μB’k(y) với quy tắc Sum-Min hàm thuộc B ' ( y ) B 'k ( y ) , k 1 y’ xác định: y' m B 'k ( y ) dy S y k 1 m S k 1 Trong đó: M k y S B 'k B 'k ( y )dy ( y )dy k 1 S m B 'k ( y )dy k 1 S m y ( y ) dy B 'k Ak B 'k ( y )dy m M k 1 m k A k 1 k k=1,2 m S Xét riêng cho trường hợp hàm thuộc dạng hình thang hình : Trang 40 (1) Nguyễn Khánh Ngọc CH1001117 GVHD: PGS TS Đỗ Văn Nhơn Mk H 3m22 3m12 b a 3m2 b 3m1 a Ak H 2m2 2m1 a b b Phương pháp độ cao Từ công thức (1), hàm thuộc có dạng singleton ta được: m y' y k 1 m k Hk H k 1 với Hk = μB’k(y) k Đây công thức giải mờ theo phương pháp độ cao Chú ý hai công thức áp dụng cho luật Max-Min Chúng ta áp dụng phương pháp độ cao để tính vận tốc xe ôtô sau Speed = (0.5*25+ Trang 41 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Speed = (0.5 * 25 + 0.35 * 75)/( 0.5 + 0.35) = 45.9 mph III Cài đặt ứng dụng minh họa Cài đặt chương trình họa C# Định nghĩa giá trị 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 = } Thiết kế Class FuzzyNumber public class { private private private FuzzyNumber double _maximum= 0.0; //maximum cua số mờ double _minimum = 0.0; //minimum cua số mờ double _number = 0.0; // vị trí này,membership lớn private double _membership = 0.0; //độ phụ thuộc private string _name = string.Empty; public FuzzyNumber() { } Trang 42 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 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ế 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 liệu tập mờ, Định nghĩa Class MembershipFunction: Class MembershipFunction chứa định nghĩa công thức Hàm phụ thuộc có dạng Triangular, RightTrapezoid LeftTrapezoid … Trang 43 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 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 && x membership = (x else if (x > b && x membership = (c else if (x >= c) membership = 0; = b) membership = 0; return membership; } public static double LeftTrapezoid_MembershipFunction(double a, double b, double x) { double membership = 0.0; 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 tập mờ CarSpeed, Temperature, cover FuzzySet carSpeedSet = new FuzzySet("CarSpeed"); FuzzySet temperatureSet = new FuzzySet("Temperature"); FuzzySet coverSet = new FuzzySet("Cover"); Trang 44 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Tạo khái niệm số mờ “Fzeezing”, “Cool”, “Warm”, “Hot” thuộc tập mờ Temperature FuzzyNumber FuzzyNumber FuzzyNumber FuzzyNumber freezing = new FuzzyNumber("Freezing", 10, 50); cool = new FuzzyNumber("Cool", 30, 70); warm = new FuzzyNumber("Warm", 50, 90); hot = new FuzzyNumber("Hot", 70, 110); temperatureSet.Add(freezing); temperatureSet.Add(cool); temperatureSet.Add(warm); temperatureSet.Add(hot); Tạo 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 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 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 double double double membershipFreezing = 0.0; membershipCool = 0.0; membershipWarm = 0.0; 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); } Trang 45 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 // 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); } Trang 46 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 //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); } Trang 47 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Chạy thử nghiệm Khi khởi động chương trình chọn ngẫu “nhiên nhiệt độ” “độ bao phủ” dựa vào luật để tính tốc độ Người dùng tùy chỉnh “nhiệt độ” “độ bao phủ” thông qua slider cấu hình Nút Start để khởi động timer, tự động thay đổi nhiệt độ độ bao phủ ngẫu nhiên Nút stop để dừng timer, trở trạng thái cấu hình thủ công(cấu hình băng slider) membership Hình 24: Chương trình minh họa điều khiển tốc độ xe ôtô Trang 48 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 IV Kết luận Trong năm gần đây, lý thuyết logic mờ có nhiều áp dụng thành công lĩnh vực điều khiển Bộ điều khiển dựa lý thuyết logic mờ gọi đ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 đối tượng phức tạp, không xác định mà người vận hành điều khiển kinh nghiệm Vai trò phương pháp toán tin học Thông qua môn học “Phương pháp toán tin học” tiểu luận giúp em có thêm kiến thức sâu sắc ứng dụng mô hình toán học vào tin học Những vai trò quan trọng toán học tin học khái quát sau: Mô hình hóa khái niệm thực tiễn thành mô hình toán học mà máy tính hiểu Biểu diễn tri thức người thành dạng mà máy tính đọc Là sở để thiết kế thuật toán (thuật toán mà hóa, logic mờ …) Toán học sở để đánh giá hiệu thuật toán, tính toán độ phức tạp thuật toán Những kết đạt thu hoạch: Khái quát sở lý thuyết logic mờ, mệnh đề mờ, luật mờ, số mờ … Áp dụng kiến thức 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 hàm phụ thuộc Hạn chế Hướng phát triển: Hạn chế: o Chương trình phân tích yếu tố đầu vào đơn giản (nhiệt độ độ bao phủ) để tính tốc độ an toàn cho xe o Chưa thể biểu đồ hàm phụ thuộc dạng 3D o Chương trình ứng dụng mang tính chất minh họa, chưa thể áp dụng thực tiễn, tính khoa học chưa cao Trang 49 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Hướng phát triển: o Thêm yếu tố đầu vào phức tạp để xác định tốc độ an toàn cho xe hiệu đáp ứng nhu cầu thực tiễn (độ tốt xấu đường đi, lưu lượng xe đường …) o Phát triển mô hình điều khiển xe ôtô thông minh tránh chướng ngại vật o Vẽ biểu đồ 3D cho hàm phụ thuộc Trang 50 GVHD: PGS TS Đỗ Văn Nhơn Nguyễn Khánh Ngọc CH1001117 Tài liệu tham khảo [1] Bài giảng Phương pháp Toán Tin – PGS TS Đỗ Văn Nhơn [2] Giáo trình hệ 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ờ Ứng dụng - Nguyễn Phong – NXB Khoa học 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 Trang 51