Thực hành trí tuệ nhân tạo
Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng PHẦN I: THUẬT TOÁN 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 I. Cờ ta canh 1. Đề bài. Tám (8) quân cờ được chỉ ra trong hình, gồm một bảng kích thước 3x3 với 8 quân cờ dược đánh số từ 1 đến 8 và một ô trống. Một quân cờ đứng cạnh ô trống có thể đi vào ô trống. Mục tiêu là luôn luôn tiến tới vị trí các quân cờ như ở trong hình bên phải (trạng thái đích). Trạng thái đầu 1 2 3 7 4 6 5 Trạng thái đích 8 1 2 3 4 5 6 7 8 Hãy trình bày thuật toán và viết chương trình demo để di chuyển các quân cờ sao cho số bước di chuyển là thấp nhất (tối ưu). Dữ liệu được đọc từ file là ma trận vuông 3x3. 2. Thuật toán A* giải quyết bài toán Trò chơi 8 số ở mức độ khó vừa phải nên là một trò chơi rất thú vị. một giải pháp điển hình gồm khoảng 20 bước, mặc dù con số này biến đổi phụ thuộc vào trạng thái đầu. Hệ số rẽ nhánh khoảng bằng 3 (khi ô trống ở giữa, có bốn khả năng 1 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng di chuyển; khi nó ở góc có hai khả năng di chuyển; và khi nó ở trên các cạnh, có ba dụ khác đểcần minh họa chohàm sự mềm dẻo của là hàm việc xác định khả năng đi). Để giảiMột bàivítoán này ta tìm một Heuristic tốt.Logic Ta cómờhai ước lượng: - H1 = số lượng các số sai vị trí - H2 = tổng số khoảng cách của các số so với vị trí mục tiêu, là tổng khoảng cách theo chiều ngang và theo chiều dọc. Bài toán tacanh khi được giải bằng thuật toán A* sẽ thực hiện theo các bước sau: Từ trạng thái ban đầu ta xác định được trạng thái đích. - Gọi G là số bước đã di chuyển ô trống - H là hàm heuristic, ước tính số hao tổn để tới trạng thái đích, tính bằng tổng các quãng đường của các ô ở vị trí sai để về tới vị trí đúng F=G+H. Có hai danh sách Open và Close, - Open chứa các trạng thái chưa xét, - Close chứa các trạng thái đã xét. Ban đầu ta thêm trạng thái khởi đầu vào Open, sau đó chọn trạng thái có f = g + h nhỏ nhất, lúc này danh sách Open chứa duy nhất trạng thái khởi đầu nên ta lấy trạng thái khởi đầu khỏi Open, và đưa vào danh sách Close các trạng thái đã xét. Từ trạng thái đang xét ta xác định được trạng thái tiếp theo, dựa vào các hướng di chuyển của ô trống. Đưa tất cả các trạng thái mới mà chưa có trong Close và Open vào danh sách Open. Ta tiếp tục chọn trạng thái có f = g + h nhỏ nhất khỏi Open như bước đầu tiên cho đến khi tìm ra trạng thái đích thì dừng lại. Từ trạng thái đích vừa tìm được đi ngược lại danh sách ta sẽ tìm được đường đi từ trạng thái khởi đầu đến trạng thái đích. Ví dụ: cho hình sau: 2 Thực hành: Trí tuệ nhân tạo N= 1+6+1+2+1=11 nên trạng thái đích là GVHD: Võ Đức Hoàng 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 • Các bước giải bài toán như sau: Đầu tiên ta xác định trạng thái tiếp theo của bài toán trên: Có ba trường hợp xảy ra: 1 2 3 Đối với trường hợp 1 có g= 1, h= 4,f= h+g=5 Đối với trường hợp 2 có g= 1, h= 5,f= h+g=6 Đối với trường hợp 2 có g= 1, h= 6,f= h+g=7 So sánh các f với nhau ta thấy f của trường hợp 1 nhỏ nhất nên trạng thái tiếp theo là trạng thái 1. Từ 1 ta có ba trạng thái: 3 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng 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 1.1 1.2 1.3 Đối với trường hợp 1.1 có g= 2, h= 3,f= h+g=5 Đối với trường hợp 1.2 có g= 2, h= 5,f= h+g=7 Đối với trường hợp 1.3 có g= 2, h= 5,f= h+g=7 So sánh các f với nhau ta thấy f của trường hợp 1 nhỏ nhất nên trạng thái tiếp theo là trạng thái 1.1 Từ 1.1 có hai trạng thái: 1.1.1 1.1.2 Đối với trường hợp 1.1.1 có g= 3, h= 2,f= h+g=5 Đối với trường hợp 1.1.2 có g= 3, h= 4,f= h+g=7 So sánh các f với nhau ta thấy f của trường hợp 1 nhỏ nhất nên trạng thái tiếp theo là trạng thái 1.1.1 Từ 1.1.1 có một trạng thái: 4 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng 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 Từ trạng này có: g= 4, h=1, f= 5. Ta có trạng thái đích: 3. Cài đặt thuật toán. 4. Kết quả demo. II. Trò chơi viết số 1. Đề bài: Hai người chơi với nhau trò chơi như sau: với 1 số a đang có sẵn, đến lượt mình chơi, người đó sẽ viết số a+1 hay 2a với điều kiện số mới viết này không vượt qua số nguyên dương N cho trước. Với số bắt đầu là 1, ai viết được số N trước thì xem như thắng. Xem như máy là người đi sau. Trình bày thuật toán và viết chương trình mô tả trò chơi sao cho khả năng thắng của máy cao. Dữ liệu được đọc từ bàn phím. 2. Thuật toán giải quyết(Mimax). Giả sử cả các người chơi đều lựa chọn chiến thuật chơi tối ưu, thì khi một người viết số x, ta có thể biết người đó sẽ chắc chắn thắng hay thua. 5 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng Với n không quá lớn, và bạn là một trong hai người chơi, bạn có thể lập bảng 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 trạng thái cho trò chơi này. Trong bài này, bảng trạng thái thực chất là mảng A[] với A[i] = 0 hoặc 1, tương ứng với khả năng thắng chắc hoặc thua chắc. Khởi tạo : A[n] = 1 (thắng) Bạn sẽ phải suy nghĩ tiếp công thức để điền được đầy đủ trạng thái cho bảng. Sau đó, khi chơi ta chỉ việc cố gắng viết một số có khả năng thắng chắc đã được chỉ ra trong bảng trạng thái, tất nhiên nếu đối thủ đi trước, luôn chọn một chiến lược đi tối ưu, và A[1] == 1, thì ta vẫn không thể thắng được. 3. Cài đặt thuật toán 4. Kết quả Demo III. Bài toán phân việc 1. Đề bài: Có n chi tiết máy J1, J2, ..., Jn cần gia công lần lượt trên 3 máy A, B, C với thời gian hoàn thành tương ứng của 1 chi tiết là TA, TB, TC. Các chi tiết từ J1, J2, ..., Jn có thể gia công theo thứ tự bất kỳ tuy nhiên một chi tiết Ji phải được gia công lần lượt theo thứ tự trên máy A máy B máy C. Trình bày thuật toán và viết chương trình mô tả sao cho tổng thời gian gia công hoàn thành n chi tiết là thấp nhất (tối ưu). Dữ liệu được đọc từ file có dạng như sau: DULIEU.INP n //số chi tiết cần gia công J1A, J2A,...., JnA //thời gian gia công các chi tiết trên máy A J1B, J2B,...., JnB //thời gian gia công các chi tiết trên máy B J1C, J2C,...., JnC //thời gian gia công các chi tiết trên máy C Kết quả xuất ra là thứ tự các công việc 2. Thuật toán giải quyết bài toán Một thuật toán hết sức nổi tiếngđể giải bài toán trên đó là thuật toán Johnson. Thuật toán gồm các bước nhưsau: Chia các chi tiết thành 2 nhóm: Nhóm N1 gồm các chitiết Di thoả mãn ai < bi và nhóm N2gồm các chi tiết Di thoả mãn ai > bi. Cácchi tiết Di thoả mãn ai = bi xếp vào nhóm nàocũng được. Sắp xếp các chi tiết trong N1 theo chiều tăng của cácai và sắp xếp các chi tiết trong N2 theo chiều giảm củacác bi. Nối N2 vào đuôi N1. Dãy thu được (đọc từtrái sang phải) sẽ là lịch gia công tối ưu. 6 Thực hành: Trí tuệ nhân tạo Như vậy với ví dụ sau: GVHD: Võ Đức Hoàng 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 Bước 1: Ta có:N1 = {3, 5}; N2 = {1, 2, 4}. Bước 2: Sau khisắp xếp thì N1 = {3, 5}; N2= {2, 4, 1}; Bước 3: Lịchgia công là: 3 -> 5 -> 2 -> 4 ->1. Thuật toán Johnson đã được chứng minhvà cách làm trên sẽ cho ta được lịch gia công tối ưu thoả mãn yêu cầu đề bài.Tuy nhiên, ở đây tôi muốn giới thiệu với các bạn một thuật toán tham ăn kháccũng có độ chính xác cao (gần như tuyệt đối) mà có phần đơn giản hơn và ứngdụng của nó cũng khá rộng rãi. Thuật toán như sau: Bước 1: Lập mảng Cvới Ci = ai / bi (i = 1, 2,..., n). Bước 2: Sắp xếp mảng Ctăng dần theo giá trị các phần tử cùng với sự thay đổi thứ tự các chi tiết máy.Thứ tự các chi tiết mấy cuối cùng chính là thứ tự gia công cần tìm. Như vậy với ví dụ trước ta có vớithuật toán trên thì: Bước 1: Mảng C = [2,7/6, 1/9, 7/3, 2/5]. Thứ tựcác chi tiết giữ nguyên là: D1 -> D2 -> D3 -> D4 -> D5 Bước 2: Sau khi sắp xếptăng dần thì C = [1/9, 2/5, 7/6, 2, 7/3] Thứ tự cácchi tiết là: D3 -> D5 -> D2 -> D4 -> D1 Thứ tự trên chính là thứ tự giacông phải tìm. Chúng ta có thể dễ dàng thấy được lịch trình gia công ở đây hoàntoàn giống với lịch trình gia công nếu như chúng ta giải quyết bài toán vớithuật toán Johnson. Các bạn có thể kiểm tra độ đúng đắn của thuật toán vớinhiều bộ test khác, tôi xin đưa ra một ví dụ nữa: Thứtự gia công sẽ là: D1 -> D4 -> D2-> D5-> D3 Hoặc:D4 -> D1 -> D5 -> D2 -> D3 Thuật toán lập tỉ số như trên cònđược ứng dụng khá rộng rãi ở một số bài toán có chủ đề tương tự. Chúng ta hãyxét bài toán sau: Bắt đầu từ thời điểm 0, một người làm n công việc đánh sốhiệu từ 1 -> n(n ≤ 200). Với 1 ≤ i ≤ N, việc i cần làm trong T[i] đơn vị thời gian.Từ thời điểm 0 đến lúc bắt đầu làm công việc nào đó, người đó bị phạt một lượngtiền C[i] cho mỗi đơn vị thời gian. Khi đã làm một việc nào thì phải làm xongviệc ấy sau đó mới được chuyển sang làm việc khác. Hãy thu xếp trình tự làmviệc sao cho tổng số tiền phạt là ít nhất. Giả sử dữ liệu cho trong tệp có dạngnhư ví dụ sau: 7 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng 6 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 311647 434213 Với dòng đầu đó là số lượng công việc (ở đâyn=6), dòng thứ 2 ghi thứ tự số lượng thời gian cần thiết cho từng công việc.Dòng thứ 3 ghi số tiền phạt cho mỗi đơn vị thời gian ở các công việc tương ứng. Để giải quyết bài toán trên ta có thể sử dụng thuậttoán lập dãy tỉ số như trên. Giả sử mảng A gồm các phần tử A[i] = T[i] / C[i] (i =1, 2,..., n). Khi đóta có các bước giải như sau: Bước 1: mảng A là 3/4 ; 1/3 ; 1/4 ; 6/2 ;4/1 ; 7/3. Thứ tự công việc vẫn giữ nguyên. Bước 2: Sắp xếp mảng Atăng dần: 1/4 ; 1/3 ; 3/4 ; 7/3 ; 6/2 ; 4/1. Thứ tự công việc lúc này là: 3 -> 2 -> 1 -> 6 -> 4 -> 5. Côngviệc 3 làm từ 0 -> 1 h. Sốtiền bị phạt là: 0 (đồng). Côngviệc 2 làm từ 1 -> 2 h. Sốtiền bị phạt là: 1*3 = 3 (đồng). Côngviệc 1 làm từ 2 -> 5 h. Sốtiền bị phạt là: 2*4 = 8 (đồng). Côngviệc 6 làm từ 5 -> 12 h. Sốtiền bị phạt là: 5*3 = 15 (đồng). Côngviệc 4 làm từ 12 -> 18h. Sốtiền bị phạt là: 12*2 = 24 (đồng). Côngviệc 5 làm từ 18 -> 19h. Sốtiền bị phạt là: 18*1 = 18 (đồng). Thứ tự công việc trên chính làthứ tự cần tìm. Tổng số tiền bị phạt trong trường hợp này là: 68 (đồng). 3. Cài đặt thuật toán 4. Kết quả Demo IV. Bài toán người du lịch 1. Đề bài. Một người khách du lịch muốn đi thăm n thành phố được đánh số từ 1 n và quay lại thành phố xuất phát. Mạng lưới giao thông giữa n thành phố này là hai chiều và được cho bởi ma trận A[i,j] trong đó A[i,j]=1 nếu có đường đi từ thành phố i đến thành phố j, A[i,j]=0 trong trường hợp ngược lại. Hãy thiết lập lộ trình cho người khách hay thông báo không tồn tại lời giải. Dữ liệu được đọc từ file có dạng như sau: DULIEU.INP Dòng 1: Ghi số nguyên n (n 1 X [years] X-23 Boolean Logic A="yoiins' 3T X-23 X Fuzzy Logic 21 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng 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 Hình 6: 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. 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 22 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoà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 ví dụ khácđảm để minh họa cho sự là việc xác định thiết bị đo sẽ do mộtMột modul khác nhận.Modul đómềm cũngdẻo có của thể Logic tự xâymờ 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,... Do vậy tôi chọn 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. 23 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng Một số ửng dụng của Logic mờ. Lôgic mờ có thể được sửkhác dụngđểđể điềuhọa khiển thiếtdẻo bị gia mýviệc giặtxác định Một ví dụ minh cho các sự mềm của dụng Logicnhư mờ là (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 24 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. 0 Hình 7: 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 độ Phan mem 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 Lôgic mờ cũng đã được tích hợp vào một số bộ vi điều khiển và vi xử lý, ví dụ Freescale 68HC12. Các yếu tố xây dựng mô hình Logic mờ. Hình 8: cấu trúc và qui trình hoat độ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 9: 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 đều quy định về các phép toán như hợp, loại trừ ,cộng, phủ định....Tuy cách tính giá trị của mỗi phép toán lại thường giao, nhiên, khác so với logic thông thương. Giả sử cho A và B LÀ hai tập mờ trên không gian nền U, CÓ các hàm liên thuộc |J,A, |Ub- Khi đó ta có các phép toán sau: Phép toán trên tập mờ Định nghĩa hàm liên thuộc 1 AqB JUA(U)*-■-4 1 II •fc Stt MA®B=MẢ(U) JLIA(U)JLIB(U) +JLIB(U)juư(u)=l Ví dụ Hợp của hai tập A và B là tập Max của mỗi phần tử con trong hai tập đó. - A = {1.0, 0.20, 0.75} - B = {0.2, 0.45, 0.50} A u B = {MAX(1.0, 0.2), MAX(0.20, 0.45), MAX(0.75, 0.50)} = {1.0, 0.45,0.75} Ngược lại, A giao B là giá trị MIN của mỗi phần tử trong hai tập A và B. Trong trường hợp trên thì Min của A và B là : A n B = {MIN(1.0, 0.2), MIN(0.20, 0.45), MIN(0.75, 0.50)} = {0.2, 0.20, 0.50} 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 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. Dưới đây là cách tính của các phép toán AND, OR, và NOT 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à lanh và giá dầu là rẻ thì nhiêt xả ra là cao 1 A Chậm trung bình Bảng dưới đây chỉ ra cụ thể luật làm việc của ví dụ trên: Bảng 3: Mô tả hoạt động của máy sưởi NHIỆT LẠNH ẤM NÓNG Rẻ Cao Trung bình Trung bình Thấp Thâp Thâp ĐỌ\ Cao Cao BÌNH THƯÒNG Trung bình ĐĂT Hình 11: Quy trình hoạt động của hệ Logic mờ 1.2.5 Qui trình hoạt động của 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 1 A Chậm bình một miền giá trị mờ với hàm thuộc trung 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. Phương pháp xây dựng mô hình. Như đã nói ở trên trong phần giới thiệu về FuzzyLogic, có nhiều mô hình phục vụ cho việc xây dựng hệ Fuzzy Logic, trong khóa luận tốt nghiệp, tôi 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ó trong khóa luận tốt nghiệp. 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. 0 5 10 15 20 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 YỚ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. Mô hình hình thang 1 Agiác Chậm trung bìnhFuzzy Logic được sử dụng trong trường Neu như mô hình tam là mô hình 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 13: 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 đó. Xây dựng mô hình Logic mờ và ứng dụng trong phân tích kỹ thuật Bên cạnh trường phái phân tích cơ bản, trường phái phân tích kĩ thuật ngày càng khẳng định vai trò quan trọng và ưu việt của mình trong việc phân tích xu hướng biến động của các chỉ số chứng khoán trên thị trường. Tuy nhiên, số lượng nhà đầu tư hiểu và ứng dụng hệ thống phân tích kĩ thuật còn hạn chế, bên cạnh đó 1 Axác Chậm bình phân tích kĩ thuật vẫn còn nhiều bất tính ứng dụng và tính chính củatrung hệ thống cập. Lý do cơ bản là chưa có một công cụ nào thực sự đưa ra được những dự báo có độ chính xác cao tại từng thị trường nhất định trong từng giai đoạn cụ thể. Mô hình Logic mờ cung cấp một cơ chế mềm dẻo để giúp cho việc dự đoán. Trong mô hình này, logic mờ được kết hợp với các biểu đồ để đưa ra dự đoán dựa vào các dấu hiệu quan trọng ở trên biểu đồ. Hình 14 : Mô hình CO' bản của hệ thống phân tích kỹ thuật trong chứng khoán Ket quả thu được sẽ là một hệ thống YỚi tính năng chính là đoán nhận và dự báo xu hướng giá chứng khoán, ngoài ra còn một số tính năng khác hỗ trợ người chơi chứng khoán trong việc đầu tư. Xây dựng mô hình Như đã nói ở chương 1, các thành phần tạo nên một hệ logic mờ bao gồm: dữ liệu, các phép toán, các hàm, các biến ngôn ngữ và các luật. Dữ liệu người dùng đưa vào chương trình trở thành tham số cho các hàm trong hệ Logic mờ. Ket quả trả về của các hàm này lại chính là giá trị của các biến ngôn ngữ. Các biến ngôn ngữ này kết họp với các phép toán Logic mờ sẽ tạo thành tập luật để điều khiển chương trình. Như vậy trong mô hình này tôi xây dựng được năm yếu tố: dữ liệu, các phép toán, các hàm, các biến ngôn ngữ và tập luật. 1 A Chậm trung bình Dữ liêu đầu vào cho mô hình Mô hình tôi xây dựng có hai dữ liệu đầu vào (input) là xuthe và vtht. Cả hai loại dữ liệu đầu vào đều được tính dựa trên các điểm đặc biệt trên biểu đồ. Dưới đây tôi sẽ trình bày cách tính toán ra từng loại dữ liệu. VỊ trí điểm đảo chiêu len 1: 10 VỊ trí điếm đào chiêu len 3: 2 VỊ trí điểm đào chiẽu xuống 1:11 Vị trí điếm đào chiêu xuống 3: 6 Hình 15: Cách xác định xem giá lên hay xuống trong mô hình - Dữ liệu xuthe: Đây là dữ liệu đầu vào của chương trình cho biết tình hình xu thế chu kỳ hiện tại của đồ thị giá chứng khoán là đang lên hay xuống. Đầu tiên ta tìm giá trị tại các điểm đảo chiều trong xu thế cần xem xét sau đó lấy giá trị tại điểm đảo chiều gần nhất và điểm đảo chiều thứ 3 gần nhất. Như ở hình 15 là giá trị tại điểm A và điểm B ta tính: BC = giá tại điểm B - Giá tại điểm A AC = chỉ số tại C - chỉ số tại A ( như trên hình vẽ 15 thì AC = 1 0 - 2 = 8 ) AB = sqrt(BC*BC + AC*AC) - Công thức tính cạnh huyền trong tam giác vuông Cuối cùng ta tính xuthe = BC/AB : đây chính là giá trị của COS góc A nên tập giá trị của dữ liệu xuthe nằm trong khoảng ( - 1 , 1 ) - Dữ liệu khoangcach Đây là dữ liệu để xác định quan hệ giữa giá hiện tại ( giá ngày hôm nay) so với xu thế giá trong cả một kỳ ngay trước nó. Để tìm được giá trị của 1 Achu Chậm trung bình khoangcach ta cần tính được: • Giá trị nhỏ nhất của chu kỳ: getMin(yp,yp.Length) • Giá trị lớn nhất của chu kỳ : getMax(yp,yp.Length) • Các điểm đảo chiều lên gần nhất: dinhl[0] • Các điểm đảo chiều xuống gần nhất: dinhx[0] • Giá trị hiện tại cần xem xét: yp[yp.Length - 1] Sau khi tìm được giá trị của khoảng cách như sau: Trong trưòng họp xu thế đang xuống: khoangcach = (yp[yp.Length -1] - dinhx[0])/ (getMax(yp,yp.Length)- getMin (yp,yp.Length)); Trưòug họp xu thế đang lên khoangcach = (~yp[yp.Length -1] + dinhl[0])/ (getMax(yp,yp.Length)- getMin (yp,yp.Length)); Giá trị của biến khoảng cách nằm trong khoảng(-l,l) nếu như các trường họp khác( phá giá thì mới dẫn tới trường hợp khác) thì ta quy khoangcach = giá trị max là -1 hoặc 1. Ví dụ ở hình 15, ta xác định được xuthe > 0 nên xu thế của giá chứng khoán là đang lên, giá trị hiện tại nằm ở chỉ số 14 gọi là gia(14), dinhx là gia(l 1), max = gia(14), min = gia(2) nên: Khoangcach = (gia(ll) - gia(14))/(gỉa(l4) - gia(2) ) được một con số trong khoảng ( -1, 0) Các biến ngôn ngữ và giá trị của chúng. Sau khi đã tính toán được dữ liệu đâu vào cho chương trình ta cần khởi tạo và thiết lập giá trị các biến ngôn ngữ. Có hai biến đầu vào là fVxuthe và fvvtht tương 32 ứng cho hai dữ liệu đầu vào là xuthe và vtht, và một biến kết quả là íVTips, chúng đc khai báo như sau: Fuzzy Variable jvxuthe - _fsTỉps.InputByName("xuthe"); Fuzzy Variable jvvtht = J'sTips.InputByNameC'vtht"); Fuzzy Variable jvTips = _fsTips.OutputByName("tips"); 1 A Chậm trung bình Biến fvxuthe lấy tên đại diện là “xuthe”, biến fwtht lấy tên đại diện là “vtht”, biến íVTips lấy tên đại diện là “tips”. Đe gắn các dữ liệu đã tính toán vào hai biến fvxuthe và fwtht ta sử dụng các câu lệnh sau: ỉnputValues.Add(fvxuthe, xuthe); ỉnputValues.Add(fvvtht, (double)khoangcach); 2.1.1 Các hàm được sử dụng trong mô hình Mô hình dự báo giá chứng khoán tôi thực hiện bao gồm có hai hàm chính trong đó một hàm là hàm tam giác để thiết lập giá trị cho các biến ngôn ngữ fVxuthe nhận đầu vào là dữ liệu xuthe ở 2.1.1 và một hàm là hàm hình thang để thiết lập giá trị cho biến ngôn ngữ fWtht, hàm này nhận đầu vào là dữ liệu khoangcach. Xây dựng lóp để tạo hàm tam giác ( dưới đây chỉ là code minh họa, không đầy đủ) public class TriangularMembershipFunction : IMembershipFunction { double _xl, _x2, _x3; public TriangularMembershipFunction(double xl, double x2, double x3) { if (Ỉ(xl [...]... Sói :S , Dê : D , Bắp cài : B , Người lái đò : N) LD SB LSD B LSB D LDB S LSDB Rỗng 18 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng Khi tri thức của bài toán đã được biễu diễn , phương pháp giải bài toán trong ví dụ để minh họa cho sự mềm củadiễn Logic việc xác định lĩnh vực trí tuệ nhânMột tạo đó là khác kỹ thuật tìm kiếm trong miềndẻo biểu tri mờ thứclà của bài toán đó Để giải bài toán... 5436 1234 Đúng số - Đúng vị trí : 1 12 Thực hành: Trí tuệ nhân tạo Đúng số - Sai vị trí : 1 2156 GVHD: Võ Đức Hoàng 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 Đúng số - Đúng vị trí : 1 Đúng số - Sai vị trí : 1 1416 Đúng số - Đúng vị trí : 2 Đúng số - Sai vị trí : 0 5436 Đúng số - Đúng vị trí : 4 Đúng số - Sai vị trí : 0 2 Thuật toán 3 Cài đặt thuật toán 4 Kết quả demo VII... nghiên cứu và áp dụng thành công lý thuyết mờ trong các lĩnh vực điều khiển sản xuất công nghiệp, trong các sản phẩm gia dụng w Tuy nhiên một bộ điều khiển mờ trong thực tế nó ra sao? Phần này tôi sẽ trình bày về các vấn đề, thứ nhất là lý thuyết điều khiển mờ, sau đó là giới thiệu về 20 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng quá trình xây dựng bộ điều khiển mờ trong thực tế và các ứng dụng... 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 22 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoà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 ví dụ khácđảm để minh họa cho sự là việc xác định thiết bị đo sẽ... 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 A=”youns" HA( X) 1 MA(X> 1 X [years] X-23 Boolean Logic A="yoiins' 3T X-23 X Fuzzy Logic 21 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng Một ví dụ khác để minh họa cho sự mềm dẻo của Logic mờ là việc xác... 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 23 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng Một số ửng dụng của Logic mờ Lôgic mờ có thể được sửkhác dụngđểđể điềuhọa khiển thiếtdẻo bị gia mýviệc giặtxác định Một ví dụ minh... vị trí xuất hiện của mỗi chữ số đó là sai? Có bao nhiêu chữ số trong M là chữ số trong S và đồng thời vị trí xuất hiện của mỗi chữ số đều đúng? Yêu cầu: Hãy hiện lên màn hình các số máy dự đoán và nói mỗi số đó nhận 2 câu trả lời từ bàn phím của cậu bé cho đến khi được số đúng như cậu bé nghĩ (Số lần dự đoán không quá 6 lần) Ví dụ: Số cần tìm là 5436 1234 Đúng số - Đúng vị trí : 1 12 Thực hành: Trí tuệ. .. có ít nhất 1 N/Q ( Người hay quỷ) điều khiển mới chạy, và trên thuyền cho phép chở nhiều nhất 2 N/Q Xét mọi trường hợp, ko có xung đột trên thuyền 19 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng Cho nên ta chỉ quan tâm đến tình trạng N/Q 2 bờ, và vị trí của thuyền ở đâu ( Bờ Một ví là dụnếu khácđãđểbiết minh sự mềmydẻo mờ là việc xác định 1/ Bở 2 ?) 1 nhận xét nữa bờhọa 1 cócho x người, quỉ,của ta... đánh nhãn biều diễn người lái đò mang theo thứ mà ông ta cần mang theo trên mỗi chuyến đò Và các cạnh liên kết giữa các nút biễu diễn bằng các đường mũi tên chỉ các chuyến đò sang sông 17 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng Biểu đồ biễu diễn tri thức của bài toán người lái đò được mô tả như hình: 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 Với người lái đò và.. .Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng 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 trong đó gọi là tham số bay hơi (sở dĩ gọi như vậy vì sau mỗi lần cập nhật lượng mùi trên cạnh ... vị trí : 12 Thực hành: Trí tuệ nhân tạo Đúng số - Sai vị trí : 2156 GVHD: Võ Đức Hoàng Một ví dụ khác để minh họa cho mềm dẻo Logic mờ việc xác định Đúng số - Đúng vị trí : Đúng số - Sai vị trí. .. Rỗng 18 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng Khi tri thức toán biễu diễn , phương pháp giải toán ví dụ để minh họa cho mềm củadiễn Logic việc xác định lĩnh vực trí tuệ nhânMột tạo khác... vấn đề kinh tế Việc thiết kế hệ mềm thực với ngôn ngữ lập trình thông dụng c++, Delphi, VB,C# Việc xử lý mờ thực máy tính bàng 22 Thực hành: Trí tuệ nhân tạo GVHD: Võ Đức Hoàng phần mềm tự xây