1. Trang chủ
  2. » Giáo án - Bài giảng

Báo cáo môn HỆ CHUYÊN GIA ĐỀ TÀI: XÂY DỰNG HỆ CHUYÊN GIA CHUẨN ĐOÁN BỆNH TIM

50 31 0

Đ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 50
Dung lượng 1,77 MB

Nội dung

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: XÂY DỰNG HỆ CHUYÊN GIA CHUẨN ĐOÁN BỆNH TIM GVHD: ThS Trần Hùng Cường Lớp: 202010503121002 Nhóm: Nguyễn Hữu Vũ Nguyễn Mạnh Khôi Nguyễn Quốc Tuấn Đinh Thị Đào Mai Hà Nội, Năm 2020 MUC LUC Giao diện chương trình 3.4 Code mã chương trình KẾT LUẬN TÀI LIỆU THAM KHẢO LỜI NÓI ĐẦU Công nghệ thông tin ngành khoa học ngày quan tâm sử dụng rộng rãi lĩnh vực sống Với ưu điểm mạnh ứng dụng nhiều sống công nghệ thông tin giúp cho công việc quản lý dễ dàng Để quản lý công việc cụ thể quan người quản lý cần thực nhiều động tác Nhờ có phần mềm cơng việc trở nên đơn giản nhiều Năng lực máy tính ngày mạnh mẽ điều kiện thuận lợi cho trí tuệ nhân tạo: cho phép chương trình máy tính áp dụng thuật giải trí tuệ nhân tạo có khả phản ứng nhanh hiệu trước Ngày việc ứng dụng công nghệ kĩ thuật cao vào đời sống đòi hỏi thiết Một lĩnh vực trí tuệ nhân tạo, mà phần quan trọng Hệ chuyên gia Qua tập lớn này, chúng em xin gửi lời cảm ơn tới ThS Trần Hùng Cường, cảm ơn thầy cho chúng em có hội tìm hiểu góc kiến thức mới, hay bổ ích với tận tâm dạy dỗ chúng em, giúp chúng em hồn thiện đề tài Trong trình tìm hiểu hồn thiện, đề tài khơng thể tránh khỏi sai sót, khuyết điểm Vì vậy, nhóm thực chúng em hy vọng nhận đánh giá đóng góp nhiệt tình từ phía thầy bạn để nhóm chúng em hồn thiện Chúng em xin chân thành cảm ơn! Chương TỔNG QUAN VỀ HỆ CHUYÊN GIA 1.1 Khái niệm hệ chuyên gia Theo E.Feigenbaum: Hệ chuyên gia(Expert System) chương trình máy tính thơng minh sử dụng tri thức (Knowledge) thủ tục suy luận (inference procedures) để giải tốn tương đối khó khăn địi hỏi chuyên gia giải Chuyên gia hệ thống tin học mơ (emulates) lực đoán (decision) hành động (making abilily) chuyên gia(con người).Hệ chuyên gia lĩnh vực ứng dụng trí tuệ nhân tạo (Artificial Intelligence) hình Hình 1.1 Một số lĩnh vực ứng dụng trí tuệ nhân tạo Hệ chuyên gia sử dụng tri thức chuyên gia để giải vấn đề(bài toán) khác thuộc lĩnh vực Tri thức (knowledge) hệ chuyên gia phản ánh tinh thơng tích tụ từ sách ,tạp chí ,từ chuyên gia hay nhà bác học Các thuật ngữ hệ chuyên gia ,hệ thống dựa tri thức (knowledge-based system) hay hệ chuyên gia dựa tri thức (knowledge-based expert system) thường có nghĩa Một hệ chuyên gia bao gồm ba thành phần sở tri thức (knowledge based), máy suy diễn hay mô tơ suy diễn (inference engine),và hệ thống giao tiếp với người sử dụng (user interface).Cơ sở tri thức chứa tri thức để từ ,máy suy diễn tạo câu trả lời cho người sử dụng thông qua hệ thống giao tiếp Người sử dung(user) cung cấp kiện (facts) biết ,đã có thật hay thơng tin có ích cho hệ chuyên gia nhận câu trả lời lời khuyên hay gợi ý đắn(expertise) Hoạt động hệ chuyên gia dựa tri thức minh họa sau: Hình 1.2 Hoạt động hệ chuyên gia Mỗi hệ chuyên gia đặc trưng cho lĩnh vực vấn đề (problem domain) đó,như y học,tài chính,khoa học hay cơng nghệ,vv…,mà khơng phải cho lĩnh vực vấn đề Tri thức chuyên gia để giải vấn đề đặc trưng gọi lĩnh vực tri thức(knowledge domain) Hình 1.3 Quan hệ lĩnh vực vấn đề lĩnh vực tri thức Ví dụ: hệ chuyên gia lĩnh vực y học để phát bệnh lây nhiễm có nhiều tri thức số triệu chứng lây bệnh ,lĩnh vực tri thức y học bao gồm bệnh ,triệu chứng chữa trị Chú ý lĩnh vực tri thức hoàn toàn nằm lĩnh vực vấn đề Phần bên lĩnh vực tri thức nói lên khơng phải tri thức cho vấn đề Tùy theo yêu cầu người sử dụng mà có nhiều cách nhìn nhận khác hệ chuyên gia Loại người sử dụng Vấn đề đặt Người quản trị Tơi dùng để làm gì? Kỹ thuật viên Làm cách để tơi vận hành tốt Nhà nghiên cứu Làm để tơi mở rơng nó? Người sử dụng Nó giúp tơi gì? Nó có rắc rối tốn khơng? Nó có đáng tin cậy không? 1.2 Cấu trúc đặc trưng hệ chuyên gia  Cấu trúc Một hệ chuyên gia kiểu mẫu gồm thành phần sau : Hình 2.1 Những thành phần hệ chuyên gia • Cơ sở tri thức (knowledge base) : gồm phần tử (hay đơn vị) tri thức, thông thường gọi luật (rule), tổ chức sở liệu • Máy suy diễn (inference engine) : cơng cụ (chương trình, hay xử lý) tạo suy luận cách định xem luật làm thỏa mãn kiện, đối tượng, chọn ưu tiên luật thỏa mãn, thực luật có tính ưu tiên cao • Lịch cơng việc (agenda) : danh sách luật ưu tiên máy suy diễn tạo thỏa mãn kiện, đối tượng có mặt nhớ làm việc • Bộ nhớ làm việc (working memory) : sở liệu toàn cục chứa kiện phục vụ cho luật • Khả giải thích (explanation facility) : giải nghĩa cách lập luận hệ thống cho người sử dụng • Khả thu nhận tri thức (explanation facility) : cho phép người sử dụng bổ sung tri thức vào hệ thống cách tự động thay tiếp nhận tri thức cách mã hóa tri thức cách tường minh Khả thu nhận tri thức yếu tố nhiều hệ chuyên gia • Giao diện người sử dụng (user interface) : nơi người sử dụng hệ chuyên gia trao đổi với Cơ sở tri thức gọi nhớ sản xuất (production memeory) hệ chuyên gia Trong sở tri thức, người ta thường phân biệt hai loại tri thức tri thức phán đoán (assertion knowledge) tri thức thực hành (operating knowledge) Các tri thức phán đốn mơ tả tình thiết lập thiết lập Các tri thức thực hành thể hậu rút hay thao tác cần phải hồn thiện tình thiết lập thiết lập lĩnh vực xét Các tri thức thực hành thường thể biểu thức dễ hiểu dễ triển khai thao tác người sử dụng Hình 2.2 Quan hệ máy suy diễn sở tri thức Từ việc phân biệt hai losại tri thức, người ta nói máy suy diễn cơng cụ triển khai chế (hay kỹ thuật) tổng quát để tổ hợp tri thức phán đoán tri thức thực hành Hình mơ tả quan hệ hữu máy suy diễn sở tri thức  Đặc trưng Có bốn đặc trưng hệ chuyên gia: • Hiệu cao (high performance) Khả trả lời mức độ tinh thông cao so với chuyên gia lĩnh vực • Thời gian trả lời thỏa đáng (adequate response time) Thời gian trả lời hợp lý, nhanh so với chuyên gia để đến định Hệ chuyên gia hệ thống thời gian thực(real time system ) • Độ tin cậy cao ( good reliability) Không thể xảy cố giảm sút độ tin cậy sử dụng • Dễ hiểu (understandable).Hệ chun gia giải thích bước suy luận cách dễ hiểu qn ,khơng giống cách trả lời bí ẩn hộp đen(black box) Những ưu điểm hệ chuyên gia: • Phổ cập(increased availability) Là sản phẩm chuyên gia ,được phát triển không ngừng với hiệu sử dụng khơng phủ nhận • Giảm giá thành(reduced cost) • Giảm rủi ro (reduced dangers).Giúp người tránh mơi trường rủi ro nguy hiểm • Tính thường trực (permanance) Bất kể lúc khai thác sử dụng, người mệt mỏi ,nghỉ ngơi hay vắng mặt • Đa lĩnh vực ( multiple expertise ).Chuyên gia nhiều lĩnh vực khác khai thác đồng thời thời gian sử dụng • Độ tin cậy ( increased relialility).Ln đảm bảo độ tin cậy khai thác • Khả giảng giải (explanation ).Câu trả lời mức độ tinh thông giảng giải rõ ràng,chi tiết ,dễ hiểu • Khả trả lời (fast reponse).Trả lời theo thời gian thực,khách quan • Tính ổn định,suy luận có lý đầy đủ lúc nơi (steady, une motional, and complete response at all times) • Trợ giúp thơng minh người hướng dẫn (intelligent – tutor) • Có thể truy cập sở liêu thông minh (intelligent database ) 1.3 Ứng dụng hệ chuyên gia Cho đến nay, hàng trăm hệ chuyên gia xây dựng báo cáo thường xuyên tạp chí, sách, báo hội thảo khoa học Ngồi cịn hệ chun gia đượcsử dụng công ty, tổ chức quân mà khơng cơng bố lý bảo mật Bảng liệt kê số lĩnh vực ứng dụng diện rộng hệ chuyên gia Lĩnh vực Cấu hình(Configuration) Chẩn đốn (Diagnosis) Truyền đạt (Instruction) Giải thích(Interpretation) Kiểm tra (Monitoring) Lập kế hoạch(Planning) Dự đốn (Prognosis) Chữa trị (Remedy) Điều khiển (Control) Ứng dụng diện rộng Tập hợp thích đáng thành phần hệ thống theo cách riêng Lập luận dựa chứng quan sát Dạy học kiểu thông minh cho sinh viên hỏi (why?), (how?) (what if?) giống hỏi người thầy giáo Giải thích liệu thu nhận So sánh liệu thu lượm với liệu chuyên môn để đánh giá hiệu Lập kế hoạch sản xuất theo yêu cầu Dự đốn hậu từ tình xảy Chỉ định cách thụ lý vấn đề Điều khiển q trình, địi hỏi diễn giải, chẩn đốn, kiểm tra,lập kế hoạch, dự đoán chữa trị 10 for (int i = 0; i < rules.Count; i++) { if (rules[i].Used == false) { chk = true; for (int j = 0; j < rules[i].Left.Count; j++) if (TG.Contains(rules[i].Left[j].ToString())) chk = chk && true; else chk = chk && false; if (chk) { LOC_rules.Add(rules[i]); } } } return LOC_rules; } /// /// hàm lấy luật để thực việc suy diễn /// /// danh sách kết luận tập SAT /// // Đầu vào: Một danh sách kiện // Đầu ra: Lấy luật để thực việc suy diễn public Rules get_one_rule(List SAT) { int i = 0; while (i < SAT.Count) { if (SAT[i].Used == false) { 36 SAT[i].Used = true; break; } i++; } return SAT[i]; } /// /// hàm bổ sung vế phải luật vào tập cuối tập TG /// /// /// // Đầu vào: gồm kiên, danh sách tập kiện tập trung gian // Đầu ra: Bổ sung phải luật truyền vào, vào cuối tập kiện trung gian public void TG_union_right(Rules rule, List TG) { for (int i = 0; i < rule.Right.Count; i++) if (!TG.Contains(rule.Right[i])) TG.Add(rule.Right[i]); } /// /// hàm kiểm tra tập SAT /// /// danh sách tập SAT /// // Đầu vào: danh sách kiện // Đầu ra: Kiểm tra tập có thuộc tập SAT hay không public bool check_SAT(List SAT) { if (SAT.Count == 0) return false; 37 for (int i = 0; i < SAT.Count; i++) if (!SAT[i].Used) return true; return false; } /// /// hàm kiểm tra tập TG có chứa KL hay khơng /// /// danh sách tập TG /// Danh sách tập KL /// // Đầu vào: danh sách tập trung gian, chuỗi kết luận //Đầu ra: Kiểm tra xem tập trung gian có chứa kết luận hay không public int check_KL(List TG, List KL) { for (int i = 0; i < KL.Count; i++) if (TG.Contains(KL[i])) return i; return -1; } public List forward_reasoning() { List kq = new List(); List KL = new List(); List SAT = new List(); List rules = new List(); List TG = new List(); rules = get_rule(); 38 KL = get_KL(); TG = GT; SAT = LOC(rules, TG); int index = 1; view = bieudien(0, TG, SAT); while (check_SAT(SAT)) { TG_union_right(get_one_rule(SAT), TG); SAT.AddRange(LOC(rules, TG)); view += bieudien(index, TG, SAT); index++; } view += bieudien_KL(index, TG, SAT); for (int i = 0; i < KL.Count; i++) if (TG.Contains(KL[i])) kq.Add(i); return kq; } public string trim(string str) { // Sử dung hàm Regex cắt chuỗi với định dạng Regex RE = new Regex(@"\s+"); string str_trim = RE.Replace(str, " "); return str_trim; } public string bieudien(int index, List TG, List SAT) { string str, strTG; if (index == 0) { str = null; 39 str = "Bắt đầu:\n"; strTG = "\tTG = GT = { "; } else { str = " \n"; str += "Lần " + index.ToString() + ":\n"; strTG = "\tTG = { "; for (int i = 0; i < TG.Count; i++) { if (i != 0) strTG += ", "; strTG += TG[i].ToString() + " "; } strTG += "}\n"; str += strTG; List d = new List(); for (int i = 0; i < SAT.Count; i++) if (SAT[i].Used == false && !d.Contains(SAT[i].Index)) d.Add(SAT[i].Index); if (d.Count > 0) { string strSAT = "\tSAT = LOC(R,TG) = { "; for (int i = 0; i < d.Count; i++) { if (i != 0) strSAT += ", "; strSAT += "r" + d[i].ToString() + " "; } strSAT += "}\n"; str += strSAT; 40 str += "\tLấy luật R" + d[0].ToString() + " SAT\n"; str += "\t=> TG = TG U { "; string strKL = null; int vt = 0; for (int i = 0; i < SAT.Count; i++) if (SAT[i].Used == false) { vt = i; break; } for (int i = 0; i < SAT[vt].Right.Count; i++) { if (i != 0) strKL += ", "; strKL += SAT[vt].Right[i] + " "; } str += strKL + "} = {"; strTG = null; for (int i = 0; i < TG.Count; i++) { if (i != 0) strTG += ", "; strTG += TG[i].ToString() + " "; } strTG += ", " + strKL; str += strTG; str += "}\n" } else { str += "\tSAT={ø} => Dừng\n"; } return str; 41 } /// /// /// /// /// /// hàm biểu diễn danh sách kết luận suy diễn /// // Đầu vào: giá trị dạng kiểu int, danh sách tập trung gian, danh sách kiện // Đầu biểu diễn kết luật dạng chuỗi sau suy diễn public string bieudien_KL(int index, List TG, List SAT) { List KL = new List(); KL = get_KL(); string str = " -\n"; str += "Kết thúc:\n"; string strKL = "\tKL = { "; int d = 0; for (int i = 0; i < KL.Count; i++) if (TG.Contains(KL[i])) { if (d != 0) strKL += ", "; strKL = string.Concat(strKL, KL[i] + " "); d++; } str += strKL + "}\n"; return str; } } #endregion Method } 42 • Button chuẩn đoán // Nút chuẩn đoán bệnh // Ý nghĩa q trình suy diễn thàng cơng đưa chuỗi kết luận, thị lên hình chuỗi kết luận // Nếu khơng đủ khẳng định từ kiện đưa thông báo chưa đủ để kết luận private void OnBtnChuanDoanClick(object sender, EventArgs e) { if (lstTrieuChung.Items.Count == 0) { MessageBox.Show("Khơng có thơng tin triệu chứng, khơng thể chuẩn đốn bệnh!" , "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { GT = new List(); lstKetQua.Items.Clear(); Regex RE = new Regex(": "); for (int i = 0; i < lstTrieuChung.Items.Count; i++) { string[] r; r = RE.Split(lstTrieuChung.Items[i].ToString()); GT.Add(r[0]); } ///XuLy(List gt, DataTable kl, DataTable rule_table) Process xl = new Process(GT, kn.DocFile(path + "MoTaKetLuan.txt"), kn.DocFile(path + "Rules.txt")); kq = new List(); 43 kq.AddRange(xl.forward_reasoning()); if (kq.Count != 0) { for (int i = 0; i < kq.Count; i++) { lstKetQua.Items.Add(kn.DocFile(path + "MoTaKetLuan.txt").Rows[kq[i]][1]); } } else { lstKetQua.Items.Add("Các triệu chứng chưa đủ để kết luận bệnh!"); lstKetQua.Items.Add("\t" + "==> Khơng thể chuẩn đốn bệnh!"); } view = xl.view; rtbGiaiThich.Text = view; } } • Hàm thêm kiện // Thêm kiện vào tập kiện // Dùng đối tượng FileStream StreamWriter để thêm kiện vào file Rules.txt public void GhiFile() { FileStream fs = new FileStream(path + "Rules.txt", FileMode.Append, FileAccess.Write); StreamWriter stw = new StreamWriter(fs, Encoding.UTF8); stw.WriteLine(txtLuatSo.Text.Trim() + ": " + txtVeTrai.Text.Trim() + " -> " + txtVePhai.Text.Trim()); stw.Flush(); stw.Close(); fs.Close(); } • Hàm sửa kiện 44 // Sửa kiện vào tập kiện // Dùng đối tượng FileStream StreamWriter để sửa kiện vào file Rules.txt public void SuaFile() { StreamReader sr = File.OpenText("Rules.txt"); string[] tam = new string[count_Rule]; TTLuat ttLuat = new TTLuat(); ttLuat._ruleName = txtLuatSo.Text; ttLuat._veTrai = txtVeTrai.Text; ttLuat._vePhai = txtVePhai.Text; for (int i = 0; i < count_Rule; i++) { if (R[i]._ruleName == ttLuat._ruleName) { R[i] = ttLuat; tam[i] = txtLuatSo.Text.Trim() + ": " + txtVeTrai.Text.Trim() + " -> " + txtVePhai.Text.Trim(); sr.ReadLine(); } else tam[i] = sr.ReadLine(); } sr.Close(); FileStream outtream = new FileStream("Rules.txt", FileMode.Create); StreamWriter sw = new StreamWriter(outtream, Encoding.UTF8); for (int i = 0; i < count_Rule; i++) { sw.WriteLine(tam[i]); } sw.Close(); } • Hàm xóa kiện // Xóa kiện vào tập kiện // Dùng đối tượng FileStream StreamWriter để xóa kiện vào file TrieuChung.txt public void XoaSK() { StreamReader sr = File.OpenText("TrieuChung.txt"); string[] tam = new string[count_node]; 45 Event Ev = new Event(); Ev._suKien = txtID.Text; Ev._nguNghia = txtMoTa.Text; for (int i = 0; i < count_node; i++) { if (E[i]._suKien == Ev._suKien) { DeleteSK(i); i ; } else { tam[i] = sr.ReadLine(); } } sr.Close(); FileStream fs = new FileStream("TrieuChung.txt", FileMode.Create); StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); for (int i = 0; i < count_node; i++) { sw.WriteLine(tam[i]); } sw.Close(); txtID.Clear(); txtMoTa.Clear(); } • Hàm sửa luật public void SuaFile() { StreamReader sr = File.OpenText("Rules.txt"); string[] tam = new string[count_Rule]; TTLuat ttLuat = new TTLuat(); ttLuat._ruleName = txtLuatSo.Text; ttLuat._veTrai = txtVeTrai.Text; ttLuat._vePhai = txtVePhai.Text; for (int i = 0; i < count_Rule; i++) { if (R[i]._ruleName == ttLuat._ruleName) { R[i] = ttLuat; tam[i] = txtLuatSo.Text.Trim() + ": " + txtVeTrai.Text.Trim() + " -> " + txtVePhai.Text.Trim(); sr.ReadLine(); } else tam[i] = sr.ReadLine(); } sr.Close(); FileStream outtream = new FileStream("Rules.txt", FileMode.Create); StreamWriter sw = new StreamWriter(outtream, Encoding.UTF8); for (int i = 0; i < count_Rule; i++) { sw.WriteLine(tam[i]); } 46 sw.Close(); } • Hàm xóa luật public void XoaFile() { StreamReader sr = File.OpenText("Rules.txt"); string[] tam = new string[count_Rule]; TTLuat ttLuat = new TTLuat(); ttLuat._ruleName = txtLuatSo.Text; ttLuat._vePhai = txtVePhai.Text; ttLuat._veTrai = txtVeTrai.Text; for (int i = 0; i < count_Rule; i++) { if (R[i]._ruleName == ttLuat._ruleName) { DeleteRules(i); i ; } else tam[i] = sr.ReadLine(); } sr.Close(); FileStream outtream = new FileStream("Rules.txt", FileMode.Create); StreamWriter sw = new StreamWriter(outtream, Encoding.UTF8); for (int i = 0; i < count_Rule; i++) { sw.WriteLine(tam[i]); } sw.Close(); } KẾT LUẬN Kết quả: 47 - Tìm hiểu Hệ chun gia, - Tìm hiểu thuật tốn suy diễn tiến, - Xây dựng hệ chuyên gia chuẩn đoán bệnh tim dựa thuật tốn suy diễn tiến: • Phát biểu toán  Giới thiệu toán  Mục đích  u cầu tốn • Xây dựng ứng dụng  Xác định tập kiện F  Biểu diễn tập luật dạng hình thức  Biểu diễn tập luật máy tính  Mơ tơ suy diễn  Một số kết minh họa Hướng phát triển đề tài: - Cải tiến tri thức, nâng cao độ xác - Bổ sung hàm đánh giá để lựa chọn luật có khả dẫn đến kết luận để giảm số bước thực Đánh giá: - Chương trình cịn nhiều hạn chế kết tư vấn số lượng tập luật, lượng liệu cịn hạn chế - Giao diện đơn giản 48 TÀI LIỆU THAM KHẢO Giáo trình Hệ Chuyên Gia : Trần Hùng Cường, Trần Thanh Hùng, NXB Khoa Học Kỹ Thuật http://www.zbook.vn/ebook/he-chuyen-gia-26734/ https://tailieu.vn/tag/bai-giang-he-chuyen-gia.html https://tailieu.vn/tag/thuat-giai-suy-dien-tien.html 49 50 ... XÂY DỰNG ỨNG DỤNG 3.1 Giới thiệu toán - Đề tài mà nhóm chúng em chọn là: “ xây dựng hệ chuyên gia chẩn đoán bệnh tim ” Lý chọn đề tài gồm hai lý do: thứ để đáp ứng cho môn học Hệ chuyên gia. .. mức, - Có hợp tác hiểu ý chuyên gia Bảng so sánh chuyên gia hệ chuyên gia: Nhân tố so sánh Chuyên gia Hệ chuyên gia Thời gian sẵn sàng Trong làm việc Luôn sẵn sàng, thời gian Địa điểm Một địa phương... (intelligent database ) 1.3 Ứng dụng hệ chuyên gia Cho đến nay, hàng trăm hệ chuyên gia xây dựng báo cáo thường xuyên tạp chí, sách, báo hội thảo khoa học Ngồi cịn hệ chuyên gia đượcsử dụng công ty, tổ

Ngày đăng: 12/02/2022, 10:46

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w