Fuzzy Logic (Lý thuyết mờ)

Fuzzy Logic (Lý thuyết mờ)
Khái niệm
Fuzzy Logic (Lý thuyết mờ) là một phương pháp suy luận mở rộng của Logic Boolean, giúp xử lý các thông tin không chắc chắn, mơ hồ hoặc mờ giống như con người suy nghĩ.
Trong Logic Boolean (0 hoặc 1), mọi thứ phải rõ ràng, đúng hoặc sai. Nhưng trong thế giới thực, thông tin thường không rõ ràng (ví dụ: "Trời hơi nóng", "Tốc độ xe hơi nhanh"). Fuzzy Logic giúp mô hình hóa thông tin mờ như cách con người suy nghĩ và ra quyết định. Dưới đây là một ví dụ về logi mờ.
Tình huống thực tế | Logic Boolean | Fuzzy Logic |
Nhiệt độ 35°C | Nóng (1) | 0.8 nóng, 0.2 mát |
Độ ẩm 50% | Không ẩm (0) | 0.5 ẩm, 0.5 khô |
Tốc độ xe 70 km/h | Nhanh (1) | 0.6 nhanh, 0.4 bình thường |
Biến mờ (Fuzzy Variable) là một biến số có thể nhận nhiều giá trị khác nhau, không chỉ giới hạn ở đúng (1) hoặc sai (0) như trong logic Boolean. Các giá trị của biến mờ được mô tả thông qua tập mờ (Fuzzy Set). Tập mờ (Fuzzy Set) là một tập hợp mà mỗi phần tử có mức độ thuộc vào tập đó từ 0 đến 1. Khác với tập truyền thống, nơi một phần tử chỉ có thể thuộc hoặc không thuộc tập.
Hàm thành viên xác định mức độ của một phần tử vào tập mờ. Mức độ này nằm trong khoảng [0,1]. Các loại Hàm Thành Viên phổ biến là tam giác, hình thang, hàm Gauss, hàm hình chuông.
Ảnh 3‑15: Ví dụ hình ảnh biểu diễn giá trị mờ được thể hiện bởi các hàm thành viên tham số hóa: (a) tam giác (x; 20, 60, 80); (b) hình thang (x; 10, 20, 60, 95); (c) Gaussian (x; 50, 20); (d) hình chuông (x; 20, 4, 50)
Ví dụ về tập mờ trong điều khiển quạt:
Tên tập mờ | Khoảng nhiệt độ (°C) |
Lạnh (Cold) | 10°C - 20°C |
Ấm (Warm) | 18°C - 30°C |
Nóng (Hot) | 25°C - 40°C |
Chương trình thể hiện giá trị tập mờ trong python:
import numpy as np
import skfuzzy as fuzz
import matplotlib.pyplot as plt
# Định nghĩa miền nhiệt độ từ 10°C đến 40°C
x_temp = np.arange(10, 41, 1)
# Định nghĩa các hàm thành viên cho tập mờ (Cold, Warm, Hot)
cold = fuzz.trimf(x_temp, [10, 15, 20])
warm = fuzz.trimf(x_temp, [18, 25, 30])
hot = fuzz.trimf(x_temp, [25, 35, 40])
# Tính giá trị membership của 28°C
temp_value = 28
cold_membership = fuzz.interp_membership(x_temp, cold, temp_value)
warm_membership = fuzz.interp_membership(x_temp, warm, temp_value)
hot_membership = fuzz.interp_membership(x_temp, hot, temp_value)
# Vẽ biểu đồ Fuzzy Logic
plt.figure(figsize=(8, 5))
plt.plot(x_temp, cold, label="Lạnh", color="blue")
plt.plot(x_temp, warm, label="Ấm", color="orange")
plt.plot(x_temp, hot, label="Nóng", color="red")
# Đánh dấu vị trí nhiệt độ 28°C
plt.axvline(temp_value, color="black", linestyle="--", alpha=0.7, label=f"Nhiệt độ {temp_value}°C")
plt.scatter([temp_value], [cold_membership], color="blue", marker="o", label=f"Cold: {cold_membership:.2f}")
plt.scatter([temp_value], [warm_membership], color="orange", marker="o", label=f"Warm: {warm_membership:.2f}")
plt.scatter([temp_value], [hot_membership], color="red", marker="o", label=f"Hot: {hot_membership:.2f}")
# Cấu hình biểu đồ
plt.xlabel("Nhiệt độ (°C)")
plt.ylabel("Mức độ thành viên")
plt.title("Hàm thành viên nhiệt độ với 28°C")
plt.legend()
plt.grid()
# Hiển thị biểu đồ
plt.show()
# In giá trị mức độ thành viên
print(f"Nhiệt độ {temp_value}°C có các giá trị thành viên:")
print(f" - Cold (Lạnh): {cold_membership:.2f}")
print(f" - Warm (Ấm): {warm_membership:.2f}")
print(f" - Hot (Nóng): {hot_membership:.2f}")
Ảnh 3‑16: Hình ảnh biểu diễn giá trị của nhiệt độ, Nhiệt độ 28°C có 0.4 là "ấm" và 0.3 là "nóng"
Khi đưa vào nhiệt độ là 28oC và trả về 0.4 ấm và 0.3 nóng là hành động làm mờ hóa dữ liệu.
Để áp dụng trong các chương trình điều khiển, ta phải giải mờ, để chuyển mờ thành kết quả cụ thể. Một số phương pháp giải mờ:
- Trung tâm trọng lực (Centroid Method): Tính trung bình có trọng số dựa trên mức độ thành viên.
- Trung bình max (Mean of Maxima - MOM): Lấy trung bình các giá trị có membership cao nhất.
- Phương pháp max (Max Membership - MM): Chọn giá trị có membership cao nhất.
Ví dụ trong bài toán điều khiển quạt, ta áp dụng phương pháp trung tâm trọng lực. Đối với quạt có 3 tốc độ thấp (20%), trung bình (50%), cao (80%). Quy tắc điều khiển của chúng ta nếu ấm thì tốc độ quạt là 50% và cao thì 80%.
Kết quả quạt sẽ chạy ở mức 63% công suất.
Thành phần của Hệ thống Fuzzy Logic
Hệ thống Fuzzy Logic có 4 thành phần chính:
- Làm mờ (Fuzzification): Chuyển dữ liệu đầu vào thành biến mờ
- Cơ sở tri thức (Knowledge Base): Chứa các quy tắc mờ IF-THEN
- Máy suy diễn (Inference Engine): Áp dụng các quy tắc mờ để tính toán kết quả
- Giải mờ (Defuzzification): Chuyển đầu ra mờ về giá trị rõ ràng
Ví dụ hệ thống Fuzzy Logic:
Đầu vào: Nhiệt độ phòng (°C).
Đầu ra: Tốc độ quạt.
Cơ sở tri thức:
IF nhiệt độ lạnh → THEN tốc độ quạt thấp.
IF nhiệt độ ấm → THEN tốc độ quạt trung bình.
IF nhiệt độ nóng → THEN tốc độ quạt cao.
Ví dụ khi nhiệt độ = 28°C:
Làm mờ: 28°C = 0.3 nóng, 0.4 ấm.
Hệ thống suy diễn: Tốc độ quạt = 30% cao, 40% trung bình.
Giải mờ: Tốc độ quạt thực tế ≈ 63% công suất.

Bình luận