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

Cài đặt thuật toán suy diễn lùi chuẩn đoán hỏng hóc của máy tính

23 2,1K 26

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 23
Dung lượng 95 KB

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

Nội dung

BÁO CÁO BÀI TẬP LỚN HỆ CHUYÊN GIA ĐỀ TÀI: Cài đặt thuật toán suy diễn lùi chuẩn đoán hỏng hóc của máy tính Hỏng máy tính luôn là vấn đề gặp phải đối với người sử dụng máy tính. Đôi khi có những lỗi mà chúng ta có thể phát hiện ra bằng trưc quan hoặc bằng âm thanh do máy phát ra.

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚN HỆ CHUYÊN GIA

ĐỀ TÀI: Cài đặt thuật toán suy diễn lùi chuẩn đoán hỏng hóc của máy tính

Gv hướng dẫn: Thầy Trần Hùng CườngSinh viên thực hiện:

1 Lê Văn Thanh

2 Hoàng Minh Thanh

3 Hoàng Văn Quang

4 Phạm Đình Ba

5 Nguyễn Thắng Lớp: KHMT2 – K2

Hà Nội – 15/08/2010

Trang 2

Lời nói đầu

Hỏng máy tính luôn là vấn đề gặp phải đối với người sử dụng máy tính Đôi khi có những lỗi mà chúng ta có thể phát hiện ra bằng trưc quan hoặc bằng âm thanh do máy phát ra.Nhằm phát hiện ra những lỗi đơn giản của máy tính cũng như củng cố kiến thức về hệ chuyên gia chúng em đã chọn đề tài: “Cài đặt thuật toán suy diễn lùi chuẩn đoán hỏng hóc của máy tính”

Chương trình còn nhiều thiếu sót, chúng em mong nhận được sự đóng góp của thầy và các bạn để chúng em hoàn thiện chương trình hơn

Tổng quan về hệ chuyên gia

Hệ chuyên gia là gì?

Hệ chuyên gia là một chương trình máy tính biểu diễn và lập luận dựa trên tri thức trong

1 chủ để làm việc cụ thể nào đó, với cách nhằm giải quyết vấn đề hoặc đưa ra lời khuyên.Cấu trúc của hệ chuyên gia

Hệ chuyên gia = Cơ sở tri thức + Mô tơ suy diễn

Suy diễn lùi là gì?

Suy diễn lùi : là quá trình suy luận ngược xuất phát từ một số sự kiện ban đầu, ta tìm

kiếm các sự kiện đã "sinh" ra sự kiện này

Một ví dụ thường gặp trong thực tế là xuất phát từ các tình trạng của máy tính, chẩn đoán xem máy tính đã bị hỏng hóc ở đâu

Trang 3

• Không sử dụng được máy tính

• Điện vào máy tính "có" hay "không"

Tập các luật :

R1 Nếu (cáp màn hình "lỏng") thì không sử dụng được máy tính

R2.Nếu (ô cứng “hỏng”) thì không sử dụng được máy tính

R3 Nếu (điện vào máy là "có") và (âm thanh đọc ổ cứng là "không") thì (ổ cứng

"hỏng")

R4 Nếu (điện vào máy là “có”) và (đèn ổ cứng là “tắt”) thì (ổ cứng “hỏng”)

R5 Nếu (điện vào máy là "có") và (tình trạng đèn màn hình là "chớp đỏ") thì (cáp màn hình "lỏng")

Xây dựng luật

a: là cáp màn hình lỏng => c: không sử dụng được máy tính

b: ổ cứng hỏng => c :không sử dụng được máy tính.d: điện vào máy là có & e: âm thanh đọc ổ cứng là không => f: ổ cứng hỏng

d điện vào máy là có & g: đèn ổ cứng là tắt =>f :ổ cứng hỏng

d điện vào máy là có & h: đèn màn hình là chớp đỏ =>k: cáp màn hình lỏngr1:a=>c

Trang 4

Như vậy là để xác định được nguyên nhân gây ra hỏng hóc là do ổ cứng hỏng hay cáp màn hình lỏng, hệ thống phải lần lượt đi vào các nhánh để kiểm tra các điều kiện như điện vào máy "có", âm thanh ổ cứng "không"…Tại một bước, nếu giá trị cần xác định không thể được suy ra từ bất kỳ một luật nào, hệ thống sẽ yêu cầu người dùng trực tiếp nhập vào Chẳng hạn như để biết máy tính có điện không, hệ thống sẽ hiện ra màn hình

câu hỏi "Bạn kiểm tra xem có điện vào máy tính không (kiểm tra đèn nguồn)? (C/K)" Để

thực hiện được cơ chế suy luận lùi, người ta thường sử dụng ngăn xếp (để ghi nhận lại những nhánh chưa kiểm tra)

Chuong trinh minh hoa co che suy dien lui

#include "stdio.h"

Trang 5

#include "conio.h"

#include "string.h"

#include "stdlib.h"

#define FileNut "SDLNut.txt"

#define FileLuat "SDLLuat.txt"

typedef enum Loai {NutLa,TrungGian,KetLuan};

typedef struct tagLuat

{

char TenLuat[10];

Trang 6

tagLuat() // Ham khoi tao

// Dinh nghia cac ham

void DocNutTuFile(char* FileName)

Trang 8

// Ham nay tim vi tri cua nut co ten (Ten) trong mang NutTen[]int TimVitriNut(char *Ten)

Trang 9

while (iFnd<jFnd-1 && stInput[iFnd] == ' ')

iFnd++; // Bo qua cac khoang trang

if (stInput[iFnd] == '^')

Trang 10

TapLuat[i].VT[2*nCount] = NODE_AND;

}else

if (stInput[iFnd] == '|'){

TapLuat[i].VT[2*nCount] = NODE_OR;

}else

if (stInput[iFnd] == '~')

bNot = -1;

else{

j = iFnd;

while (j<jFnd && stInput[j] != ' ' && stInput[j] != '|'

&& stInput[j] != '^' && stInput[j] != '~' && stInput[j] != '=')

stTen[j-iFnd] = stInput[j++];

stTen[j-iFnd] = '\0';

TapLuat[i].VT[2*nCount+1] = bNot*TimVitriNut(stTen);

bNot = 1;

nCount ++;

iFnd = j-1;

}

Trang 11

iFnd ++;

}

// Xu ly ve phaiiFnd = jFnd+1;

Trang 12

int bNot; // =1 khi khang dinh, =-1 khi phu dinh

if (bFound == 0) // Neu tim khong gap o ve trai > Day la nut KetLuan

NutLoai[TapLuat[i].VP] = KetLuan;

else

Trang 13

NutLoai[TapLuat[i].VP] = TrungGian;

}

}

/////////////////////////////////////////////////////////////////////

// Hoi nguoi dung gia tri cua nut thu VitriNut

void HoiNguoiDung(int VitriNut)

Trang 14

void TinhGiaTriCuaNutKetLuan(int SoHieuNut){

Trang 15

// Tim luat co ket luan la SoHieuNut

for (int i=0; i<SoLuat; i++)

Trang 16

// Neu nut chua co gia tri nay la NutLa > Hoi nguoi dung

if (NutLoai[bNot*r.VT[2*j+1]] == NutLa)

HoiNguoiDung(bNot*r.VT[2*j+1]);else // Day la nut TrungGian

TinhGiaTriCuaNutKetLuan(bNot*r.VT[2*j+1]);

}}

// Den day, Cac nut o ve trai deu co gia tri > Tinh gia tri cua ve phai dua vao luat r

Trang 17

giatri = AND(giatri, x);else

giatri = OR(giatri,x);

}GTNut[r.VP] = giatri;

}}

printf("\n DANH SACH CAC NUT \n");

printf("\nTEN NUT Y NGHIA\n");

for (int i=1; i<=SoNut; i++)

printf("\n%4s %s", NutTen[i], NutYNghia[i]);

printf("\n\n\n An ENTER de quay ve man hinh chinh");getch();

}

/////////////////////////////////////////////////////////////////////

// Tu luat > tao chuoi luat

Trang 18

void TaoChuoiLuat(int SoHieuLuat, char ChuoiLuat[])

strcat(ChuoiLuat, "~");

bNot = -1;

}

strcat(ChuoiLuat, NutTen[(bNot*TapLuat[SoHieuLuat].VT[2*j+1])]);

}

strcat(ChuoiLuat, " => ");

Trang 19

strcat(ChuoiLuat, NutTen[TapLuat[SoHieuLuat].VP]);ChuoiLuat[strlen(ChuoiLuat)] = '\0';

Trang 20

// Xu ly qua trinh suy dien lui

TinhGiaTriCuaNutKetLuan(i);

}printf("\n Ket qua qua trinh suy dien lui:\n");

for (i=1; i<=SoNut; i++)

if (NutLoai[i] == KetLuan){

printf("\n Nut ket luan %s (%s) co gia tri la: %d", NutTen[i], NutYNghia[i], GTNut[i]);

}

printf("\n\n\n An ENTER de quay ve man hinh chinh");

Trang 21

printf ("\n BANG GIA TRI CUA CAC NUT\n\n");

for (int i=1; i<=SoNut; i++)

Trang 22

printf("\nCHUONG TRINH MINH HOA CO CHE SUY DIEN LUI\n\n");printf("\n 1 XEM TAP NUT");

printf("\n 2 XEM TAP LUAT");

printf("\n 3 CHAY CHUONG TRINH");

printf("\n 4 XEM GIA TRI CUA CAC NUT");

Trang 23

}}while (1);

Ngày đăng: 16/08/2014, 20:12

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

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

w