Tải bản đầy đủ (.doc) (16 trang)

Báo cáo xây dựng hệ chuyên gia chuẩn đoán sự cố máy tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (376.87 KB, 16 trang )

Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

LỜI CẢM ƠN
Để thực hiện được bài báo cáo ““Xây dựng hệ chuyên gia chuẩn đoán sự cố máy
tính” chúng em xin gửi lời cảm ơn chân thành đến giảng viên bộ môn: cô Nguyễn Thị
Thu Hà đã nhiệt tình chỉ dạy, hướng dẫn và cung cấp cho chúng em đầy đủ những tài
liệu cần thiết. Trong quá trình tìm hiểu và làm báo cáo về đề tài chúng em đã có thêm
cơ hội hiểu rõ hơn về đề tài.
Vì thời gian cũng như kiến thức hạn hẹp nên bài báo cáo của chúng em chưa thể
hoàn thiện một cách tốt nhất rất mong cô và các bạn đóng góp ý kiến để bài báo cáo
này của chúng em hoàn thiện hơn. Một lần nữa chúng em xin chân thành cảm ơn cô.

GV: TS.Nguyễn Thị Thu Hà

1

Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

MỤC LỤC
LỜI CẢM ƠN.............................................................................................................................1
MỤC LỤC...................................................................................................................................2

GV: TS.Nguyễn Thị Thu Hà


2

Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

LỜI MỞ ĐẦU
Những năm gần đây, ngành công nghiệp máy tính đã có những bước phát triển
rất mạnh mẽ. Chúng ta đã quen thuộc với những chiếc máy vi tính xuất hiện ở khắp
mọi nơi, sử dụng nó để làm việc, học tập, và giải trí,.. Do đó máy vi tính đã dần dần
trở thành một thiết bị điện tử thông dụng, được sử dụng ở khắp mọi nơi, và trở thành
thiết bị không thể thiếu trong cuộc sống của nhiều người. Tuy nhiên, chúng ta không
thể phủ nhận rằng máy tính là một thiết bị phức tạp và khó sử dụng. Khi những hỏng
hóc xuất hiện, cho dù là những hỏng hóc rất nhỏ, cũng có thể làm người sử dụng bối
rối. Vì vậy, sự xuất hiện một hệ thống nào đó nhằm hướng dẫn mọi người tự tay khắc
phục những lỗi thông dụng là thực sự cần thiết.
Bên cạnh đó, ngày nay khi mà nhiều lĩnh vực trong cuộc sống đang ngày càng
được chuyên môn hóa một cách sâu sắc. Cùng với đó là việc chúng ta luôn muốn xây
dựng các chương trình, các hệ thống có thể hoạt động thay thế cho các quyết định của
con người. Do vậy, càng ngày chúng ta càng thấy xuất hiện nhiều hệ chuyên gia được
sử dụng hằng ngày để thay thế con người đưa ra các quyết định, các dự đoán, tư vấn
trong một số lĩnh vực cụ thể như y học, kỹ thuật,…
Chính vì những lý do trên, cùng với mong muốn được áp dụng những kiến thức
đã học từ môn Hệ chuyên gia, nhóm chúng tôi đã chọn đề tài “Xây dựng hệ chuyên gia
chuẩn đoán sự cố máy tính” nhằm xây dựng một hệ thống có thể giúp chúng ta có thể
xác định nhanh chóng và chính xác một số sự cố mà máy vi tính thường gặp phải.
Do kiến thức còn nhiều hạn chế và quá trình tìm hiểu còn nhiều thiếu sót nên

chúng em vẫn chưa thể xây dựng được một hệ chuyên gia hoàn chỉnh và chính xác
trong lĩnh vực chuẩn đoán sự cố hỏng hóc máy tính. Chúng em rất mong nhận được
những ý kiến đóng góp từ các thầy cô và các bạn để chúng em có thể xây dựng được
một hệ thống hoàn chỉnh hơn nữa.
Chúng em xin chân thành cảm ơn!

GV: TS.Nguyễn Thị Thu Hà

3

Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI VÀ THU THẬP
TRI THỨC CHUYÊN GIA
1.1 Tên đề tài và mục đích xây dựng đề tài
Tên đề tài: “Xây dựng hệ chuyên gia chuẩn đoán sự cố máy tính ”.
Mục đích xây dựng đề tài: xây dựng được một hệ chuyên gia thu thập tri thức từ
các chuyên gia con người trên môi trường windows nhằm giúp cho quá trình chuẩn
đoán các hỏng hóc, các sự cố của máy tính trở nên nhanh, thuận lợi và hiệu quả hơn.
Từ đó giúp người sử dụng có thể có các biện pháp khắc phục và sửa chữa kịp thời và
hiệu quả.
1.2 Phát biểu bài toán
Yêu cầu bài toán là phải xây dựng được một hệ chuyên gia trong môi trường
windows có thể đưa ra các chuẩn đoán về nguyên nhân gây ra các sự cố, các hỏng hóc
của máy tính dựa trên các thông tin mà người sử dụng đưa vào.

Các thông tin mà người sử dụng đưa vào là các câu trả lời “Đúng” hoặc “Sai” cho các
câu hỏi về tình trạng của máy tính mà hệ chuyên gia đưa ra.
Để thực hiện được các yêu cầu đó, hệ thống cần xây dựng được một hệ cơ sở tri
thức. Trong đó:
• Bộ cơ sở tri thức bao gồm tập các sự kiện và tập các luật về sự cố máy tính được
thu thập từ các chuyên gia con người trong lĩnh vực phần cứng máy tính.
• Bộ động cơ suy diễn là các cài đặt để tìm kiếm các sự kiện và các luật liên quan
đến yêu cầu của người sử dụng để từ đó đưa ra các kết luận về nguyên nhân của sự cố.
Với bài toán này, bộ động cơ suy diễn được cài đặt theo cơ chế suy diễn lùi.
Sau quá trình thu thập tri thức, hệ thống tạm thời đưa ra các sự kiện sau:
1) Máy tính khởi động được
2) Có tiếng bíp kéo dài
3) Có thông báo đĩa
4) Xuất hiện lời chào Welcome
5) In được
6) Hoạt động bình thường
7) Hỏng RAM
8) Hỏng ổ đĩa
9) Hỏng phần in
10) Lỗi hệ điều hành
Hệ thống hiện tại bao gồm các phát biểu về những sự cố máy tính có thể gặp phải
như sau:
1) Một máy tính khởi động được thì máy tính đó hoạt động bình thường.
GV: TS.Nguyễn Thị Thu Hà

4

Nhóm 10 – Lớp: D5LT_CNTT



Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

2) Một máy tính bị hỏng ổ đĩa khi máy tính đó không khởi động được và có thông
báo đĩa.
3) Một máy tính bị hỏng RAM khi máy tính đó không khởi động được và có tiếng
bíp kéo dài.
4) Một máy tính bị hỏng phần in khi máy tính đó hoạt động bình, xuất hiện lời
chào welcome và không in được.
5) Một máy tính bị lỗi hệ điều hành khi máy tính đó hoạt động bình thường, khởi
động không có thông báo đĩa và không xuất hiện màn hình chào welcome.

GV: TS.Nguyễn Thị Thu Hà

5

Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ
2.1 Biểu diễn tri thức
Xây dựng các sự kiện:
STT
1
2

3
4
5
6
7
8
9
10

Vị từ
e1
e2
e3
e4
e5
b1
c1
c2
c3
c4

Giải Thích
Khởi động được
In được
Xuất hiện lời chào welcome
Có tiếng bíp kéo dài
Có thông báo đĩa
Hoạt động bình thường
Lỗi hệ điều hành
Hỏng RAM

Hỏng ổ đĩa
Hỏng phần in

Xây dựng các luật:
- Luật 1: e1 → b1
Nếu máy tính khởi động được thì máy hoạt động bình thường.
- Luật 2: b1 ^ ~e3 ^ ~e5 → c1
Nếu máy tính hoạt động bình thường và không xuất hiện màn hình chào welcome
và không có thông báo đĩa thì máy bị lỗi hệ điều hành.
- Luật 3: ~e1 ^ e4 → c2
Nếu máy tính không khởi động được và có tiếng bíp kéo dài thì máy bị hỏng RAM.
- Luật 4: ~e1 ^ e5 → c3
Nếu máy tính không khởi động được và có thông báo đĩa thì máy bị hỏng ổ đĩa.
- Luật 5: b1 ^ e3 ^ ~e2 → c4
Nếu máy tính hoạt động bình thường và xuất hiện màn hình chào welcome và
không in được thì máy bị hỏng phần in.
- Dựa vào cơ sở tri thức được biểu diễn ở trên ta có các tập sự kiện:
GIATHIET = {e1, e2, e3, e4, e5}
TRUNGGIAN = {b1}
KETLUAN = {c1, c2, c3, c4}
2.2 Thiết kế chương trình
Chương trình sử dụng ngôn ngữ lập trình C# để cài đặt bài toán theo cơ chế suy
diễn lùi.
Từ yêu cầu bài toán, ta đi xây dựng các lớp tương ứng với các đối tượng là các sự
kiện (SuKien.cs) và các luật (Luat.cs). Bên cạnh đó ta xây dựng thêm một lớp (Vet.cs)
để lưu trữ thông tin các luật và sự kiện cần sử dụng để đưa ra chuẩn đoán.
Trong đó:
GV: TS.Nguyễn Thị Thu Hà

6


Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

- Mỗi 1 sự kiện được biểu diễn bởi 3 thuộc tính: tên sự kiện, mô tả, giá trị (trả về
1 nếu sự kiện này đúng, trả về 0 nếu sai và trả về -1 nếu chưa biết đúng hay sai)
- Mỗi 1 luật được biểu diễn bởi 3 thuộc tính: tên luật, giả thiết, kết luận
- Mỗi 1 vết thì chứa 1 sự kiện và 1 luật.
Dữ liệu về các sự kiện và luật, được lưu lại trong 2 file “SuKien.txt” và “Luat.txt”.
∗ Cài đặt thuật toán suy diễn lùi


Hàm TimLuat(f,i): trả về vết có chưa f làm kết luận
private Vet TimLuat(SuKien f, int level)
{
try
{
string dich = f.Ten;
Vet vet = new Vet();
for (int i = level; i < dsluat.Count; i++)
{
Luat luat = dsluat[i];
string str = luat.KetLuan;
if (dich.Equals(str))
{
vet.SuKien = f;

vet.Luat = luat;
return vet;
}
}
}
catch (Exception ex)
{
BatLoi(ex.Message);
}
return null;
}



Hàm LayGiaTri(sukien): trả về giá trị của sự kiện được đưa ra

để hỏi người sử dụng về tình trạng máy tính.
private int LayGiaTri(SuKien nut)
{
try
{
lock (objLock)
{
UpdateTextBoxDeletegate a = new
UpdateTextBoxDeletegate(HienThiCauHoi);
txtCauhoi.Invoke(a, nut.MoTa);
txtCauhoi.Text = nut.MoTa;
Monitor.Pulse(objLock);
GV: TS.Nguyễn Thị Thu Hà


7

Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

Monitor.Wait(objLock);
}
if (radDung.Checked)
{
return 1;
}
else
{
return 0;
}
}
catch (Exception ex)
{
BatLoi(ex.Message);
}
return 0;
}


Hàm TinhGiaTriKL()


private int TinhGiaTriKL(Vet vet)
{
try
{
string vetrai = vet.Luat.GiaThiet;
for (int i = 0; i < dssukien.Count; i++)
{
vetrai = vetrai.Replace(dssukien[i].Ten, dssukien[i].GiaTri.ToString());
}
StringBuilder sb = new StringBuilder(vetrai);
//Phép phủ định ~
for (int i = 0; i < sb.Length - 1; i++)
{
if (sb[i].Equals('~') && sb[i + 1].Equals('0'))
{
sb[i + 1] = '1';
}
else
if (sb[i].Equals('~') && sb[i + 1].Equals('1'))
{
sb[i + 1] = '0';
}
}
sb = sb.Replace("~", "");
while (sb.Length != 1)
{
if (sb[1].Equals('^')) //Phép và ^
GV: TS.Nguyễn Thị Thu Hà

8


Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

{
if (sb[0].Equals('1') && sb[2].Equals('1'))
{
sb.Replace("1^1", "1");
}
else
{
sb.Replace(sb[0].ToString() + sb[1].ToString() + sb[2].ToString(),
"0");
}
}
else//Phép hoặc |
{
if (sb[0].Equals('0') && sb[2].Equals('0'))
{
sb.Replace("0|0", "0");
}
else
{
sb.Replace(sb[0].ToString() + sb[1].ToString() + sb[2].ToString(),
"1");
}

}
}
return Int32.Parse(sb.ToString());
}
catch (Exception ex)
{
BatLoi(ex.Message);
}
return 0;
}


Hàm XuLyLuat()

private void XuLyLuat(Vet vet)
{
try
{
Luat luat = vet.Luat;
string vetrai = luat.GiaThiet;
string[] gt = vetrai.Split('^', '|', '~');
for (int i = 0; i < gt.Length; i++)
{
for (int j = 0; j < dssukien.Count; j++)
{
if (dssukien[j].Ten.Equals(gt[i]))
{
GV: TS.Nguyễn Thị Thu Hà

9


Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

if (dssukien[j].GiaTri == -1)
{
dsnuttrunggian.Add(dssukien[j]);
}
}
}
}
for (int i = 0; i < dsnuttrunggian.Count; i++)
{
SuKien nut = dsnuttrunggian[i];
if (nut.Ten[0].Equals('e'))
{
if (nut.GiaTri == -1)
{
int gtri = LayGiaTri(nut);
nut.GiaTri = gtri;
}
}
else
{
XuLyNut(nut, 0);
}

}
vet.SuKien.GiaTri = TinhGiaTriKL(vet);
}
catch (Exception ex)
{
BatLoi(ex.Message);
}
}


Hàm XuLyNut()

private void XuLyNut(SuKien nut, int level)
{
try
{
Vet vet = TimLuat(nut, level);
if (vet == null)
{
return;
}
this.first++;
bool kt = false;
for (int i = 0; i < ds_vet.Count; i++)
{
if (ds_vet[i].SuKien.Ten.Equals(vet.SuKien.Ten))
{
GV: TS.Nguyễn Thị Thu Hà

10


Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

kt = true;
}
}
if (kt == false)
{
ds_vet.Add(vet);
}
dsnuttrunggian.Remove(vet.SuKien);
XuLyLuat(vet);
}
catch (Exception ex)
{
BatLoi(ex.Message);
}
}


Hàm XuLy( ): duyệt lần lượt và thực hiện suy diễn lùi với từng

sự kiện trong tập KETLUAN
private void Xuly()
{

try
{
for (int i = dsketluan.Count - 1; i >= 0; i--)
{
nutcha = dsketluan[i];
for (int j = 0; j < dsluat.Count; j++)
{
dsnuttrunggian.Add(dsketluan[i]);
XuLyNut(dsketluan[i], j);
if (dsketluan[i].GiaTri == 1)
{
string str = "Theo tôi, máy tính của bạn " +
dsketluan[i].MoTa.ToLower();
frmKetQua frm = new frmKetQua(str);
frm.ShowDialog();
ktra = true;
break;
}
}
if (ktra)
{
break;
}
}
if (ktra == false)
{
string str = "Không khớp luật nào trong cơ sở tri thức!";
GV: TS.Nguyễn Thị Thu Hà

11


Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

frmKetQua frm = new frmKetQua(str);
frm.ShowDialog();
}
KhoiTao();
}
catch (Exception ex)
{
BatLoi(ex.Message);
}
}

GV: TS.Nguyễn Thị Thu Hà

12

Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin


2.3. Giao diện chương trình
2.3.1. Giao diện chính

2.3.2 Giao diện cập nhật cơ sở tri thức

GV: TS.Nguyễn Thị Thu Hà

13

Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

2.3.3. Giao diện chuẩn đoán sự cố

2.3.4 Giao diện kết quả và giải thích

GV: TS.Nguyễn Thị Thu Hà

14

Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin


2.3.5 Giao diện giới thiệu

GV: TS.Nguyễn Thị Thu Hà

15

Nhóm 10 – Lớp: D5LT_CNTT


Trường Đại Học Điện Lực

Khoa Công Nghệ Thông Tin

KẾT LUẬN
Qua đề tài “Xây dựng hệ chuyên gia chuẩn đoán sự cố máy tính”, nhóm hy
vọng giúp đỡ được mọi người chuẩn đoán được sự cố máy tính 1 cách nhanh nhất
thông qua các biểu hiện sự cố của máy tính.
Trong quá trình xây dựng chương trình nhóm em đã cố gắng nỗ lực hết mình để
cho ra được chương trình tốt nhất. Tuy nhiên, vì thời gian cũng như kiến thức có hạn
nên bài của chúng em chưa được tốt, mong thầy, cô và các bạn đóng góp ý kiến để bài
của chúng em hoàn thiện hơn. Chúng em xin chân thành gửi lời cảm ơn đến cô
Nguyễn Thị Thu Hà đã chỉ bảo chúng em tận tình để chúng em có thể thực hiện được
bài này.

GV: TS.Nguyễn Thị Thu Hà

16

Nhóm 10 – Lớp: D5LT_CNTT




×