Maple là một trong các công cụ trí tuệ nhân tạo được sử dụng khá phổ biến hiện nay, với khả năng biểu diễn các vấn đề từ lĩnh vực phổ thông như toán học, vật lý, hóa học…cho đến phức tạp
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 2MỞ ĐẦU
Có đôi lúc chúng ta gặp những vấn đề vô cùng khó khăn, nó đòi hỏi nhiều suy nghĩ, cảm xúc, nghiên cứu Đôi khi có một số vấn đề được chúng ta vận dụng những kiến thức đã tìm hiểu, nghiên cứu để giải quyết khá dễ dàng Tuy nhiên, một số vấn đề khác lại đòi hỏi chúng ta phải có tư duy sáng tạo dựa trên những kiến thức đã biết Việc vận dụng thành thạocác công cụ trí tuệ nhân tạo trong việc giải quyết các vấn đề cũng là một trong những điều quan tâm hiện nay Các công cụ trí tuệ nhân tạo là những chương trình “thông minh” ở một mức độ nào đó, nó có khả năng học hỏi, suy dẫn… và giải quyết vấn đề trên cơ sở ngôn ngữ
tự nhiên Maple là một trong các công cụ trí tuệ nhân tạo được sử dụng khá phổ biến hiện nay, với khả năng biểu diễn các vấn đề từ lĩnh vực phổ thông như toán học, vật lý, hóa học…cho đến phức tạp như lập trình Ngoài ra, với Maplets chúng ta còn có thể tạo ra các giao diện người dùng tùy chon dễ dàng
Trang 3Lời cảm ơn
Tôi xin chân thành cảm ơn sự giúp đỡ nhiệt tình của thầy PGS.TS ĐỖ VĂN NHƠN trong suốt thời gian học cũng như quá trình làm đồ án môn học:”LẬP TRÌNH SYMBOLIC”, và cũng xin cảm ơn các bạn trong khoa đã có nhiều đóng góp để tôi hoàn thành môn học này Tuy nhiên do thời gian hạn hẹp, và sự hiểu biết của chúng em về môn học này chưa được sâu, cho nên đề tài vẫn còn nhiều thiếu sót, nhiều vấn đề chưa được giải quyết hoàn chỉnh
và phù hợp với thực tế hiện nay Vì vậy, tôi mong nhận được sự đóng góp của thầy và các bạn để chương trình được hoàn thiện hơn.
Học viên thực hiện
Nguyễn Ngọc Tú
Trang 4MỤC LỤC
A ĐẶT VẤN ĐỀ 1
B GIỚI THIỆU MAPLE 2
C TRI THỨC ĐIỆN MỘT CHIỀU 5
I Yêu cầu 5
II Xây dựng mô hình tri thức 5
III Một vài thủ tục được xây dựng trong chương trình 8
D BIỂU DIỄN TRI THỨC HÓA HỌC 9
I.Tổng quan về cách biểu diễn tri thức hóa học lên mạng tính toán 9
II Tạo package hóa học và các thủ tục trong package 11
III Cách giải bài toán AB và lọc lời giải tốt từ lời giải đã biết 15
IV.Maplet và tạo ứng dụng giao diện trong Maple 18
E KẾT LUẬN 23
TÀI LIỆU THAM KHẢO 23
Trang 5A ĐẶT VẤN ĐỀ
Ngày nay vấn đề biểu diễn tri thức ngày càng trở nên quan trọng và là một phần không thể thiếu trong chuyên ngành khoa học máy tính nói riêng và ngành công nghệ thông tin nói chung
Việc các chương trình máy tính hỗ trợ và làm việc thay con người ngày càng trở nên nhu cầu cấp bách và phải đáp ứng một cách nhanh chóng và triệt để
Các chương trình giải toán thông minh cũng là một trong những ứng dụng mà đặc biệt quan tâm Vì toán học được xem là cha đẻ của mọi khoa học Và việc tạo ra những chương trình giải toán thông minh và chính xác sẽ góp phần giúp cho con người dễ dàng hơn trong việc tính toán và giúp cải thiện hiệu quả công việc một cách đáng kể
Để tạo ra được một chương trình như vậy, ngày nay đã được hỗ trợ rất nhiều các công cụ lập trình Riêng trong lĩnh vực biểu diễn tri thức vì đặc thù riêng của bộ môn nên các công cụ lập trình thông thường không đáp ứng được nhu cầu tính toán ở mức độ khó và thông minh Vì vậy đã có nhiều chương trình được tạo ra cho mục dich này Ngày hôm nay chúng tôi xin giới thiệu công cụ lập trình Maple và ứng dụng cài đặt mạng đối tượng tính toán hóa học dựa trên công cụ Maple này!
Trang 6B GIỚI THIỆU VỀ MAPLE
Khái niệm đầu tiên về Maple xuất phát từ một cuộc họp vào tháng 11 năm
1980 tại Đại học Waterloo Những nhà nghiên cứu tại đại học muốn mua một máy tính đủ mạnh để chạy Macsyma Thay vào đó, người ta quyết định họ sẽ phát triển hệ thống đại số máy tính riêng để có thể chạy được những máy tính
có giá thành hợp lý hơn Do đó, dự án bắt đầu với mục tiêu là tạo ra một hệ thống đại số hình thức mà các nhà nghiên cứu và sinh viên có thể truy cập được
Sự phát triển đầu tiên của Maple được tiến hành rất nhanh, với phiên bản hạn chế đầu tiên xuất hiện vào tháng 12 năm 1980 Những nhà nghiên cứu đã thử nghiệm và loại bỏ nhiều ý tưởng khác nhau để tạo ra một hệ thốngliên tục cải tiến Maple được trình diễn đầu tiên tại những hội nghị bắt đầu vào năm 1982
Đến cuối năm 1983, trên 50 trường đại học đã cài Maple trên máy của
họ Do số lượng hỗ trợ và yêu cầu giấy phép lớn, vào năm 1984, nhóm
nghiên cứu đã sắp xếp với WATCOM Products Inc để cấp phép và phân phốiMaple
Vào năm 1988, do số lượng hỗ trợ ngày càng tăng, Waterloo Maple Inc được thành lập Mục tiêu đầu tiên của công ty là quản lý những bản phân phối phần mềm Cuối cùng, công ty cũng phải mở ra phòng R&D ở đó khá nhiều sự phát triển cho Maple được thực hiện đến ngày nay Sự phát triển đáng kể của Maple tiếp tục diễn rại những phòng thí nghiệm trường đại học, bao gồm: Phòng thí nghiệm Tính toán hình thức tại Đại học Waterloo; Trung tâm nghiên cứu Tính toán hình thức Ontario tại Đại học Tây Ontario; và những phòng thí nghiệm khắp nơi trên thế giới
Vào năm 1989, giao diện đồ họa người dùng đầu tiên của Maple được phát triển và bao gồm trong bản 4.3 dành cho Macintosh Những phiên bản
Trang 7trước của Maple chỉ gồm giao diện dòng lệnh với ngõ ra hai chiều Bản X11
và Windows với giao diện mới tiếp bước vào năm 1980 với Maple V
Vào năm 1999, với việc phát hành Maple 6, Maple đã đưa vào một số Thư viện Số học NAG, được mở rộng độ chính xác ngẫu nhiên
Vào năm 2003, giao diện “chuẩn” hiện nay được giới thiệu trong Maple 9 Giao diện này được viết chủ yếu bằng Java (mặc dù có nhiều phần, nhưng luật cho việc gõ công thức toán học, được viết bằng ngôn ngữ Maple) Giao diện Java bị phê phán là chậm; những sự phát triển được thực hiện trongcác bản sau, mặc dù tài liệu Maple 11 documentation khuyến cáo giao diện (“cổ điển”) trước đây dành cho người với bộ nhớ vật lý ít hơn 500 MB Giao diện cổ điển này không còn được bảo trì
Giữa 1995 và 2005 Maple đã mất khá nhiều thị phần vào tay đối thủ
do có giao diện người dùng yếu hơn Nhưng vào năm 2005, Maple 10 giới thiệu một “chế độ văn bản” mới, như một phần của giao diện chuẩn Tính năng chính của chế độ này là phép toán được đưa vào bằng ngõ nhập hai chiều, do đó nó xuất hiện tương tự như công thức trong sách Vào năm 2008, Maple 12 đã thêm những tính năn giao diện người dùng giống như
Mathematica, gồm có những kiểu trình bày theo mục đích đặc biệt, quản lý phần đầu và cuối trang, so trùng mở đóng ngoặc, vùng thực hiện tự động, mẫu hoàn thành lệnh, kiểm tra cú pháp và vùng tự động khởi tạo Những tính năng khác được thêm để làm cho Maple dễ dùng hơn như một hộp công cụ Maple
Cho đến nay Maple đã được phát triển qua nhiều phiên bản khác nhau
và ngày càng hoàn thiện với các tính năng mới được cập nhật maple đã trở thành một phần mềm tính toán khá mạnh hỗ trợ rất nhiều trong việc tính toán hình thức hiện nay
Trang 8Với phần mềm Maple, chúng ta có thể:
+ Thực hiện các tính toán với khối lượng lớn, với thời gian nhanh và
độ chính xác cao
+ Sử dụng các gói chuyên dụng của Maple để giải quyết các bài
toán cụ thể như: vẽ đồ thị (gói plot), hình học giải tích (gói geometry), đại số tuyến tính (gói linalg),
+ Thiết kế các đối tượng 3 chiều
+ v.v
Trang 9C TRI THỨC ĐIỆN MỘT CHIỀU
I Yêu cầu
Xây dựng một chương trình giải toán điện một chiều với đoạn mạch không cónguồn
+Input : bài toán điện một chiều
+Output : Lời giải
Dựa vào đó xây dựng nên mô hình biểu diễn tri thức cho kiến thức điện một chiều
Cách thức tổ chức lưu trữ tri thức
Xây dựng thuật giải và mô hình Từ đó xem xét thử có thể xây dựng mô hình chung cho các bài toán hay không ?
II Xây dựng mô hình tri thức
Mỗi đoạn mạch sẽ được biểu diễn dưới dạng một mạng tính toán (V, F) trong :
V là tập các thuộc tính còn F sẽ là tập biểu diễn các quan hệ của các thuộc tính trên đoạn mạch Ở đây là sự biểu diễn quan hệ định luật Ôm
V = {U, R, I}
F = {U = R*I, R = U/I, I = U/R}
Đoạn mạch có thể được thành lập từ nhiều đoạn mạch có quan hệ nối tiếp hoặc song song khác nhau Và được biểu diễn dưới dạng là một biểu thức :
A = (V, F)
Trong đó công thức là một danh sách bao gồm các thành phần :
+Biểu diễn quan hệ của đoạn mạch là nối tiếp hay song song ở đây được thể hiện thông quan toán tử +(nối tiếp) và *(song song)
+Biểu diễn các đoạn mạch thành phần(tức là các đoạn mạch con trong đoạn mạch lớn)
Chẳng hạn ta biểu diễn một file trong dienmotchieu.txt
Trang 11X1X2.U, X1.U, X2.UX1X2.R, X1.R, X2.RX1X2.I, X1.I, X2.I
Với mỗi mạch trong tập hợp :
+Nếu là mạch nối tiếp thì tiến hành đọc file nối tiếp
+Nếu là mạch song song thì tiến hành đọc file song song
-Áp các quan hệ từ file filename cho điện trở tương ứng của từng đoạn mạch bằng cách thay thế X là điện trở của từng đoạn mạch tương ứng
-Sau đó tiến hành áp dụng thuật giải tìm kết quả trong mạng tính toán.
Trang 12III MỘT VÀI THỦ TỤC ĐƯỢC XÂY DỰNG TRONG CHƯƠNG
TRÌNH
1 ReadObject:=proc(filename::string):dùng để đọc từ file
2 rutgon:=proc(str::string): rút gọn đoạn mạch đang xét
3 CatMach:=proc(str::string): chia thành các đoạn mạch nhỏ
4 TapLuat:=proc(str::string):xác định cách tập luật
5 TaoTapLuat:=proc(strRule::string):tạo các tập luật trong mạng đối tượng
6 test:=proc(l::list): kiểm tra các luật
7 TaoGiaThuyet:=proc(str::string, lis::list): tạo giả thuyết ban đầu cho các mạchcon
8 SetVars:=proc(f): l;ấy cá gái trị biến trong biểu thức
9 ChuyenDoiCacTapLuat:=proc(argD::list,a::array, loai::ineteger): chuyển các luật phù hợp với mỗi mạch đã phân tích
10 GiaiMachNoiTiep:=proc(A, B, temp)
11 GiaiMachSongSong:=proc(A, B, temp)
12 DanhChiMucChoCacQuanHe:=proc(l1::list,l2::list)
………
Trang 13D BIỂU DIỄN TRI THỨC HÓA HỌC
I TỔNG QUAN VỀ CÁCH BIỂU DIỄN TRI THỨC HÓA HỌC LÊN MẠNG TÍNH TOÁN
1 Tổng quan về mạng tính toán hóa học:
Mạng tính toán hóa học là mạng tính toán được sử dụng để biểu diễn cáctri thức về các vấn đề hóa học và được áp dụng để giải một số bài toán hóa học.Các thành phần trong 1 mạng tính toán hóa học thường là các chất hóa học, cácmối quan hệ giữa các chất hóa học thông qua các phương trình phản ứng Có rấtnhiều cách để biểu diễn mạng tính toán hóa học tuy nhiên làm thế nào để biểudiễn mạng tính toán hóa học một cách phù hợp và dễ sử dụng trong quá trình giảiquyết các vấn đề hóa học cũng là điều cần quan tâm
2 Tổng quan về cách biểu diễn mạng tính toán hóa học lên Maple:
Để biều diễn mạng tính toán hóa học lên maple, trước tiên chúng ta biểudiễn mạng tính toán hóa học lên trên một file text theo quy tắc sau:
- File text có tên file toàn chữ hoa và nếu tên file có 2 từtrở lên thì giữa các từ là là dâu gạch “_” Ví dụ: HOA_HOC.txt
- Hàng đầu tiên trong file được để trống Hàng kế tiếp làtên đối tượng có cấu trúc sau: object = <ten object>, name objectgiống như tên file text Ví dụ: object = HOA_HOC
- Hàng kế tiếp là danh sách các chất hóa học trong mạngtính toán được biểu diễn theo cấu trúc sau:
Trang 14Ví dụ:
variables H2 = "Khi Hidro"
O2 = "Khi Oxi"
endvariables
- Hàng kế tiếp bỏ trống Các hành tiếp theo biểu diễn cácmối quan hệ giữa các chất trong mạng tính toán theo cấu trúc sau:relation <number>
Trang 15II TẠO PACKAGE HÓA HỌC VÀ CÁC THỦ TỤC TRONG
PACKAGE
1 Tạo Package Hóa Học:
Nhằm thuận tiện trong quá trình sử dụng để gọi các thủ tục mà không cầnphải lập trình lại từ đầu các thủ tục, chúng ta tạo ra package Hóa học Packageđược tạo ra một cách rất đơn giản thông qua thủ tục gọi hàm sau trong maple:
<tên Package> :=table();
<tên Package>[thủ tục 1]:=proc(<các tham biến>)
save(tên Package, “dir/tên Package.m”);
save(tên Package, “dir/Maple12/lib/tên Package.m”);
Trang 162 Các thủ tục trong Package Hóa Học:
Xuất ra: danh sách gồm
- Tên của object
- Danh sách các variable
- Danh sách các quan hệ, mỗi quan hệ gồm+ chuỗi dạng “relation <number>”
+ tập các chất có trong quan hệ+ tập các chất được điều chế trong quan hệ+ ý nghĩa của các chất
Trang 17- Các quan hệ có thể thể điều chế ra các chất trên
Chức năng: Kiểm tra bài toán AB
Xuất ra: true: nếu giải được và false: nếu không giải được
Xuất ra: danh sách gồm
- true: nếu giải được và false: nếu không giải được
- danh sách các quan hệ các chất được tạo ra từ A có thểđiều chế B
Trang 18 Xuất ra: danh sách gồm
- true: nếu giải được và false: nếu không giải được
- danh sách các quan hệ các chất được tạo ra từ A có thểđiều chế B (danh sách tốt nhất)
j HoaHoc[CompleteForAB]:=proc(F::list,A::set,B::set)
F là danh sách các quan hệ (thành phần [3] trong ReadFile)
A là tập hợp các chất đầu vào
B là tập hợp các chất cần điều chế
Chức năng: Tìm chuỗi phản ứng ngắn nhất tạo ra B từ A
Xuất ra: tập hợp các phương trình phản ứng có thể tạo nên từ
A để điều chế B (chuỗi phản ứng ngắn nhất)
Trang 19III CÁCH GIẢI BẢI TỐN AB VÀ LỌC LỜI GIẢI TỐT TỪ LỜI
3 Repeat
Aold A;
while not Solution_found and (chọn được f) do begin
if ( f đối xứng and 0 < Card (M(f) \ A) r(f) ) or ( f khơng đối xứng and M(f) \ A v(f) ) then
Trang 204 if not Solution_found then
end;
end;
5 if not Solution_found then
Bài toán không có lời giải;
else
Solution là một lời giải;
b Giải bài toán A B trong mạng tính toán hóa học:
- Đối với mạng tính toán hóa học, các mối quan hệ thường là không đốixứng với nhau, ta xem như không đối xứng vì thế trong quá trình giảibài toán A B ta có thể bỏ bớt đi một số bước Cụ thể là ta không cầnkiểm tra xem nó có đối xứng không, chỉ xét trường hợp nó không đối
xứng ( M(f) \ A v(f))
- Giải bài toán thông qua thủ tục:
HoaHoc[SolutionAB]:=proc(F::list,A::set,B::set)
1 Lọc lời giải tốt từ lời giải đã biết:
Nhập : Mạng các đối tượng tính toán (O,F),
lời giải t1, t2, , tm của bài toán A B
Trang 21Xuất : lời giải tốt cho bài toán A B
Thuật toán :
1 D t1, t2, , tm;
2 for i=m downto 1 do
if D \ ti là một lời giải then
D D \ ti;
3 D là một lời giải tốt.
2 Kiểm tra lời giải cho bài toán:
Nhập : Mạng các đối tượng tính toán (O,F),
bài toán A B,
dãy t1, t2, , tm F O
Xuất : thông tin cho biết t1, t2, , tm có phải là lời giải
của bài toán A B hay không
t1, t2, , tm không là lời giải;
IV MAPLETS VÀ TẠO ỨNG DỤNG GIAO DIỆN TRONG MAPLE
Trang 221 Cách sử dụng maplets:
Để tạo ra một ứng dụng với giao diện trong maple chúng ta có thể sử dụngpackage Maplets có sẵn trong Maple Để sử dụng các elements trong Mapletsnhư Button, Menu… chúng ta sử dụng thủ tục gọi sau:
with(Maplets[Elements]);
Sau đó chúng ta khởi tạo các đối tượng trong giao diện như Button,TextField… thông qua các thủ tục khởi tạo Ví dụ để tạo một button nhãn OK vàmột button nhãn cancel chúng ta gọi thủ tục sau:
maplet := Maplet(["Select one:", [Button("OK", Shutdown("true")),Button("Cancel", Shutdown())]])
Tuy nhiên với thủ tục như vậy chúng ta vẫn chưa hiển thị được giao diện,cần gọi thủ tục hiển thị như sau:
result := Maplets[Display](maplet);
Ta có giao diện: Để biết thêm về các thủ tục khởitạo các đối tượng elements khác của maplet chúng ta có thể bấm ctrl+F1 tronggiao diện Maple, và ở khung search đánh Maplets
2 Ứng dụng maplets trong ứng dụng hóa học:
a Giao diện:
b Các thành phần và chức năng: bao gồm
Trang 23i TextField 1: nhập các chất ban đầu, có tooltip (“chú ý các chấtnằm trong dấu {}”) và lưu chất ban đầu A
ii TextField 2: nhập các chất cần điều chế, có tooltip giốngTextFiled 1 và lưu chất cần điều chế B
iii Button OK: khi click vào ngay lập tức sẽ giải ra bài toán AB,lời giải là các phương trình phản ứng, giao diện lời giải nhưsau:
iv Button Cancel: thoát khỏi ứng dụng