xây dựng hệ thống mô phỏng và thực tại ảo sử dụng ngôn ngữ wave - Pdf 10

1

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ CHƯƠNG 1. Đỗ Thế Chuẩn XÂY DỰNG HỆ THỐNG MÔ PHỎNG VÀ THỰC TẠI ẢO
SỬ DỤNG NGÔN NGỮ WAVE
XÂY DỰNG HỆ THỐNG THỰC TẠI ẢO

KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY

Ngành: Công nghệ thông tin
2 MỤC LỤC
CHƯƠNG 1. GIỚI THIỆU 10
1.1. Giới thiệu về mô phỏng 10
1.2. Công nghệ WAVE 11
CHƯƠNG 2. NGÔN NGỮ WAVE 14
2.1. Giới thiệu về ngôn ngữ Wave 14

3.4. Hiển thị trong Java2D 56
3.4.1. Giới thiệu về Java 2D 56
3.4.2. Giới thiệu một vài đối tượng đồ họa trong Java2D 57
3.4.3. Tương tác giữa chương trình hiển thị và Wave 62
3.4.4. Tạo lưới 64
3.4.5. Tạo chướng ngại vật 69
3.4.6. Di chuyển 71
CHƯƠNG 4. CÁC BÀI TOÁN MÔ PHỎNG PHỨC TẠP 75
4.1. Bài toán “Hồng cầu, Bạch cầu, Virus” 75
4.1.1. Mô tả chung 75
4.1.2. Hồng cầu 75
4.1.3. Bạch cầu 76
4.1.4. Virus 77
4.2. Bài toán “Rầy nâu” 79
4.2.1. Mô tả chung 79
4.2.2. Chi tiết bài toán 83
CHƯƠNG 5. 3D VÀ THỰC TẠI ẢO 87
5.1. Giới thiệu công nghệ 3D 87
5.1.1. Công nghệ 3D 87
5.1.2. Giới thiệu về Java 3D 88
5.2. Chương trình GnuPlot 88
4

5.3.
 Ngôn ngữ VRML 90
5.3.1. Khái niệm VRML và các phiên bản của VRML 90
5.3.2. Ngôn ngữ VRML 92
5.4. Sử dụng Wave và GnuPlot 94
5.4.1. Giới thiệu chung 94
5.4.2. Đọc file và tạo KN 95

7.3. Di chuyển tự do 133
7.4. Di chuyển tránh chướng ngại vật 134
7.5. Di chuyển vòng quanh chướng ngại vật 136
7.6. Nhìn trong không gian với độ sâu cho trước 138
7.7. Di chuyển cùng nhau kiểu tịnh tiến 139
7.7.1. Chuỗi wave chạy theo 139
7.7.2. Chuỗi wave dẫn đầu 140
CHƯƠNG 8. PHỤ LỤC B – TÀI LIỆU THAM KHẢO 142

6

MỤC LỤC HÌNH VẼ
Hình 1-1.Mô hình Wave 13
Hình 2-1.Knowledge Network 16
Hình 2-2.Thành phần của Spread Diagrams 27
Hình 2-3.Tự động tách trong chuỗi Wave 28
Hình 2-4.Một số trường hợp xử lý song song 29
Hình 2-5.Wave xử lý song song có kèm theo Rule 30
Hình 2-6.Xử lý tuần tự không Rule và có Rule 31
Hình 2-7.Wave xử lý tuần tự có Rule 32
Hình 2-8.Một số trường hợp với mệnh đề If – else 33
Hình 2-9.Một số trường hợp với mệnh đề If – else 33
Hình 2-10.Else – if với filter 34
Hình 2-11.Else – if parallel 34

Hình 3-24. Di chuyển node trên lưới thực địa 74
Hình 5-1.Xe đạp được thể hiện với công nghệ 2D 87
Hình 5-2.Xe đạp được thể hiện với công nghệ 3D 88
Hình 5-3.Đồ thị hàm sin(x) 89
Hình 5-4.Đồ thị hàm x
2
+ y
2
hiển thị 3D 90
Hình 5-6.Khối cầu với bán kính 10 trong VRML 93
8

Hình 5-5.Tọa độ trong VRML 1

Hình 5-7.KN dạng cây của file VRML 1
Hình 5-8.Sơ đồ khối thuật toán Parser 1
Hình 5-9.Sơ đồ khối thuật toán kiểm tra một file có phải là VRML hay không 1
Hình 5-10.KN sau khi thêm node mới 1
Hình 5-11.Hai cách nhìn khác nhau trong VRML 1
Hình 5-12.Cách nhìn ban đầu 1
Hình 5-13.Một cách nhìn khác 1
Hình 5-14.Hiển thị trên nhiều máy tính 1
Hình 5-15.Mỗi máy tính hiển thị một khu vực khác nhau 1
Hình 5-16. Đặt nút start tại một node khác node gốc 1
Hình 6-1. Chương trình hiển thị khi mới được chạy 113
Hình 6-2. Chương trình WAVE khi bắt đầu chạy 114
Hình 6-3. Lưới 5x5 115
Hình 6-4. Cửa sổ output của Netbeans 115
Hình 6-5. Vị trí đầu tiên 1-1 116
Hình 6-6. Chạy ngẫu nhiên tới vị trí tiếp theo 116

thống thật hoặc giả lập. Ngày nay, mô phỏng được ứng dụng rộng rãi trong
các nhiều mặt của cuộc sống, như giáo dục, giao thông, y tế…
Với mô phỏng phân tán và mô phỏng song song, một chương trình mô phỏng có thể
thực thi trên một máy tính có nhiều bộ vi xử lý như PC.Độ lớn và phức tạp của các
chương trình giả lập ngày càng tăng theo thời gian. Trong một chương trình mô phỏng
phân tán lớn với nhiều đố
i tượng, một PC có thể không đủ bộ nhớ và khả năng tính toán
để thực hiện. Việc phân tán thực thi trên nhiều máy tính có thể giúp tăng hiệu quả xử lý
và lưu trữ hơn là làm trên một máy như trên. Các máy tính có thể được phân tán trong các
vùng địa lý khác nhau, ví dụ như trong các phòng của một tòa nhà, trong một thành phố,
hoặc rộng hơn là trên toàn thế giới.
Bằng việc chia nhỏ một khối lượng tính toán mô phỏng lớn sang các khối tính toán
bé hơ
n, và thực thi các khối đó đồng thời với N bộ vi xử lý, ta có thể tăng tốc độ lên N lần
so với trên 1 bộ vi xử lý trên một máy. Trong các bộ mô phỏng trên máy tính việc giảm
thời gian thực thi rất quan trọng bởi vì các kĩ sư sẽ không muốn phải đợi một thời gian dài
cho việc nhận kết quả trả về bởi chương trình. Trong việc mô phỏng thực tại ảo, nơi mà
con ng
ười hòa mình vào, thời gian xử lý đóng một vai trò rất quan trọng giúp mô phỏng
được thực hơn, mang hiệu quả cao hơn. Thực thi mô phỏng trên các máy tính phân tán
trên các vùng địa lý khác nhau giúp chúng ta linh hoạt hơn, không bị hạn chế về không
gian. Khi nhiều máy tính cùng thực thi song song, nếu một máy tính bị lỗi, các máy tính
11

khác vẫn có thể hoạt động tính toán bình thường. Điều này giúp tăng hiệu suất lên đáng
kể.
Việc tìm kiếm một ngôn ngữ hỗ trợ cho mô phỏng đáp ứng tốt các yêu cầu của mô
phỏng có vai trò rất lớn. Ngôn ngữ WAVE dùng cho mô phỏng vốn đã song song, xử lý
trên các cấu trúc dạng đồ thị và phân tán giữa các nút xử lý. Tất cả các chương trình
WAVE đều mang tính di động cao và thông dịch. Điều đ

khuôn mẫu để kết nối tới các hệ thống khác. Công nghệ này dựa trên việc cài đặt nhiều
tác nhân thông minh trên hệ thống phân tán để tối ưu hóa việc xử lý dữ liệu cục bộ thông
qua việc lan tỏa thông tin ở các h
ệ thống nhỏ với nhau hoặc ở hai hệ thống nhỏ khác nhau.
Tất cả công việc trên đều được thông dịch qua ngôn ngữ Wave. Mã đệ quy được viết từ
ngôn ngữ này có khả năng tự lan tỏa trong không gian hệ thống. Không giống các hệ
thống truyền thống, nó là một hệ thống dựa trên sự linh động của chương trình có thể tùy
ý mở rộng về mặt địa lý và hỗ trợ nhiề
u máy tính trên mạng. Trong Wave, chương trình
có thể cho vào trong hệ thống bất kỳ chỗ nào. Khi đó các chương trình này có khả năng
lan tỏa qua mạng như virus. Nhiều người sử dụng có thể độc lập phát triển các chương
trình Wave hoặc liên kết trong cùng một hệ thống không gian, chia sẻ biến cục bộ (biến
này được liên kết với Node) với các biến khác (được kèm theo sự di chuyển của mã
Wave). Nói cách khác:
• Wave là một ngôn ngữ, model đặc bi
ệt và là công nghệ mới cho hệ thống song
song, phân tán hay kết hợp các hệ thống đó với nhau.
• Wave ban đầu được thiết kế cho việc mô phỏng mạng ảo như là mạng tri thức
(Knowledge Networks).
• Wave dựa trên các chương trình mà có thể lan tỏa, mở rộng, chia nhỏ và có thể
tự hồi đáp trong những mạng tri thức đã được kích hoạt.
13 Hình 2-1.Mô hình Wave
14 CHƯƠNG 3. NGÔN NGỮ WAVE
Trong phần này chúng tôi trình bày về cú pháp và ngữ nghĩa của ngôn ngữ Wave.

Wave tạo và xử lý KN – là tập hợp các node và các link có hướng hoặc vô hướng.
Cả node và link đều có nội dung riêng của mình (kiểu giá trị là string). KN có thể được
phân tán trong không gian mạng, tồn tại trên nhiều máy tính khác nhau. M
ỗi máy tính có
thể không chứa hoặc chứa nhiều node của KN và các link có thể kết nối tới các node
trong cùng máy tính hoặc với các máy tính khác.
Tất cả các node đều có địa chỉ duy nhất trong không gian phân tán bao gồm 2 thành
phần: thành phần thứ nhất để phân biệt các node trong cùng một máy, và thứ hai là để
phân biệt các node giữa các máy khác nhau trong không gian mạng. Node có thể được
truy cập qua các node khác một cách trực tiếp bằng Content hay bằng Address của
chúng hoặc qua quá trình mở rộng qua các link củ
a KN, việc đặt tên cho link và node
nhằm phục vụ điều này. Có 2 kiểu nhảy qua lại giữa các node đó là direct hop và surface
hop để thực hiện việc nhảy tới 1 node hay có thể nhảy đến tất cả các node khác – được
dùng cho việc gửi quảng bá.
Không giống với node, link của KN không thể truy xuất trực tiếp qua tên. Dữ liệu
lưu trữ trong link chỉ có thể nhận được hoặc thay đổi một cách c
ục bộ, trong quá trình di
chuyển qua link hay khi đứng trực tiếp tại một node cụ thể nào đó. Từ một node, cả nội
dung và hướng của link có thể truy xuất trực tiếp.
Ví dụ:
16 Hình 3-1.Knowledge Network
3.3. Tổ chức chung của ngôn ngữ Wave
Ngôn ngữ Wave đặc trưng cho quá trình lan tỏa song song trong không gian dữ liệu
phân tán được biết là KN. Do vậy cú pháp của ngôn ngữ miêu tả rõ quá trình hoạt động
này:


ộng KN trong khi di chuyển. Các Rule sẽ được làm rõ hơn
trong phần sau.
Một cách tổng quát, việc thực thi phần đầu của Wave (Wave’s Head) tại một vài
Node có thể là nguyên nhân dẫn tới quá trình lan tỏa của Tail của chuỗi Wave (Wave’s
Tail) tới 0 hay nhiều các Node khác – chúng ta sẽ gọi chúng là tập các Node tới được
(SNR).
Ví dụ:
• w1.w2.w3.w4: cấu trúc của một chương trình Wave - sự nối tiếp của các zones
• w1,w2,w3: zone đơn lẻ với tập các move độc lậ
p, tất cả đều được thực thi tại
cùng một Node bắt đầu
• w1,w2.w3,w4: sự kết hợp của 2 kiểu trên

3.4. Cấu trúc dữ liệu cơ bản của Wave
Wave là ngôn ngữ được dùng cho quá trình xử lý trên mạng, nhưng không giống các
ngôn ngữ khác, kiểu dữ liệu cơ sở không phản ánh việc đó. Wave sử dụng kiểu dữ liệu cơ
sở là Vector: là tập các string được phân tách nhau bới dấu chấm phẩy (;). Tất cả các hoạt
động của ngôn ngữ đều thực thi trên Vector. Truy cập tới thành phần của Vector có thể
18

thông qua chỉ số hay chính nội dung của các thành phần trong Vector – indexing và
contenting. Dữ liệu lưu trữ trong Vector là động, tức có thể thay đổi khi có sự thêm bớt
dữ liệu một cách tự động.
Ví dụ:
• Vector chứa 1 phần tử: 3
• Chứa 6 phần tử: 1;2;3;4;5;6
• Chứa nhiều kiểu dữ liệu khác nhau: 34;NONE;25;;a;;;b
3.5. Biến Spatial và kiểu
Wave thao tác trên kiểu biến được gọi là spatial variable, chúng nằm phân tán và
thường liên quan tới dữ liệu cục bộ tại các Node của KN hay có thể thuộc về một chuỗi

3.6.1. Control acts
Các Act thực hiện các phép toán cơ bản bên trong move, dùng để thay đổi giá trị các
biến, thay đổi trạng thái hoạt động của wave. Giá trị trả về gồm 3 loại chính sau:
• TRUE (2): thành công và cho phép Wave tiếp sau đó thực thi tại Node hiện
thời.
20

• DONE (1): thành công nhưng không cho phép Wave thực thi tiếp tại Node hiện
thời.
• FALSE (0): thất bại, loại bỏ Wave tại Node hiện thời.
Control acts được phân loại như hop, filters, assignment, state genertator và code
injection.
Hop. Được thực thi bằng toán hạng #. Ta sẽ hiểu rõ hơn cách thực thi của Hop qua các Ví
dụ sau:
• DIRECT # ANY, cách viết khác @#: nhảy tới tất cả các node khác trong KN
trên cùng máy tính từ một node nào đó
• -p#b: nhảy từ node hiện thời theo cung đi ra (-)p tớ
i node b
• ANY#ANY hay #: nhảy qua tất cả các link tới tất cả hàng xóm của một node
• Và một số kiểu nhảy khác: x#ANY, ANY#x
• Để nhảy sang 1 node ở máy khác ta có cấu trúc: a#b$$`IP, trong đó IP là địa chỉ
IP của máy đích
Filter. Các filter gồm các phép toán sau đây: ~ (thuộc về), /~ (không thuộc về), == (so
sánh bằng), /= (so sánh không bằng), < (so sánh nhỏ hơn), <= (so sánh nhỏ hơn hoặc
bằng), > (so sánh lớn hơn), >= (so sánh lớn hơn hoặc bằng). Giá trị trả v
ề sẽ là TRUE
hoặc FALSE. Nếu giá trị trả về là TRUE, node hiện thời sẽ trở thành một SNR và Wave
tail sẽ tiếp tục phát triển từ node này.
• Filter ~:
o Cú pháp: vector1 ~ vector2

• w1.DONE.w2 hoặc w1.!.w2 sẽ dừng sau khi thực hiện xong w1
Code Injection. Cú pháp ^Func, trong đó Func là một chuỗi Wave. Phép chèn mã này sẽ
bổ sung thêm vào chuỗi Wave một chuỗi nằm trong biến sau ^. Phép này hay được sử
dụng khi gọi chương trình con.
Ví dụ:
Ft={Fa=1;2;3}. Fa+1. ^Ft.T=Fa
3.6.2. Fusion acts: Các phép toán hợp nhất
Các phép toán số học. Bao gồm các phép toán +, -, *, /. Nếu thực hiện chia cho 0, kết quả
trả về là FALSE.
Ví dụ:
• `124.36’ + 100 có kết quả: `224.36’
• 66;4;24 – 1;1;1;1;1;1;1 có kết quả: 65;3;23;-1;-1;-1;-1
• 1;2;3;4;5 * 1;1;1 có kết quả: 1;2;3;0;0
• 2;3;4 / 1;2 có kết quả: FALSE
• NONE * sẽ trả lại rỗng
Các phép toán trên Vector đặc biệt. Gồm 1 số phép toán sau:
• &: append, nối 1 Vector vào sau 1 Vector khác
o Ví dụ: v1 & v2 – v1, v2 là 2 Vector
• Toán tử hai chấm (:) : lấy giá trị tại 1 vị trí của Vector
o Ví dụ: Fa=3;2;3. Fa:1 sẽ trả lại 3
23

• Toán tử (::):
o Ví dụ: Fa=3;2;3. Fa::3 = 10. Kết quả Fa = 10;2;10
• |: splits, chia string ở toán hạng bên trái thành 1 Vector các string con bởi dấu
phân cách ở toán hạng bên phải
o Ví dụ: `a+b+c’ | `+’ sẽ trả lại a;b;c
• %: join, ngược lại với | tức nó sẽ hợp các Vector con lại thành 1 string với phân
cách là toán hạng bên phải.
o Ví dụ: a;b;c % `+’ sẽ trả lại a+b+c

• OR_PARALLEL(OP): kích hoạt các nhánh và thực thi chúng song song, nếu 1
nhánh trả về TRUE hoặc DONE, OP sẽ nhận TRUE. Nếu không nhánh nào trả
về TRUE hoặc DONE, OP sẽ FALSE
Ví dụ:OP(FALSE!, FALSE!, TRUE!) sẽ trả lại TRUE
• AND_PARALLEL(AP): như AS nhưng các nhánh thực thi song song
Ví dụ: AP(TRUE!, TRUE!, FALSE!) sẽ trả lại FALSE
• RANDOM(RN): chọn m
ột nhánh ngẫu nhiên để phát triển tiếp

Repetition
Luật REPEAT với khả năng vòng lặp cho phép chia Wave thành các phần nhỏ hơn
khi di chuyển trong KN.
25

Nếu kết quả trạng thái trả về là TRUE hoặc FALSE (SNR không rỗng) thì mỗi thành
phần này sẽ được ghép thêm Tail của Wave. Lúc này, ở tất cả SNR Node đều chứa biến
Frontal (biến này được mang tới từ các Node).
Nếu kết quả trạng thái trả về là DONE (SNR không rỗng) thì Tail của Wave sẽ bị
loại bỏ.
Ví dụ: F = 1; 9; 5; 6; 7; 8; 12.
REPEAT ( Fi +1. F : Fi /= NONE. N + ( F: Fi)).
TERMINAL =N.

Create
Luật CREATE(CR) cho phép Wave có khả năng mở rộng chính mạng KN trong khi
lan tỏa trong không gian. Chuỗ
i Wave chứa luật này vẫn phát triển như thông thường, chỉ
có các bước nhảy là bị ảnh hưởng - có thể thay đổi chế độ của chúng từ chế độ lan tỏa
(navigation) sang chế độ tạo mới (creation). Khi đó các node và link nếu chưa có sẽ được
tạo ra.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status