Kiểm chứng demo 2doors

Một phần của tài liệu Hướng dẫn sử dụng UPPAAL 4.0 (Trang 49 - 51)

8 Các demo khác trong Uppaal

8.3 Kiểm chứng demo 2doors

an toàn,tính bị chặn, tính sống, có rơi vào deadlock được hay không, cũng như 1 số tính chất khác. Việc kiểm tra được tiến hành như sau:

- A[] not deadlock: kiểm tra hệ thống có chạy vào deadlock hay không =>không. - E<> Door1.open: cửa 1 có thể mở hay không => có

8.2. DEMO: BRIDGE CHƯƠNG 8. CÁC DEMO KHÁC TRONG UPPAAL

- Door1.wait –> Door1.open: kiểm tra tính sống của hệ thống, khi 1 nút bấm được nhấn thì cửa tương ứng sẽ được mở (tương tự cho cửa 2) => thỏa mãn.

- A[] (Door1.opening imply User1.w<=31) and (Door2.opening imply User2.w<=31): tính sống và bị chặn trên, tức là cửa có mở trong vòng 31s sau khi bấm nút hay không => thỏa mãn. Tính chất này cho biết thời gian lớn nhất từ khi bấm nút mở cửa đến khi cửa tương ứng được mở ra ứng với khả năng xấu nhất như sau:

i. Người 1 bấm mở cửa 1 khi cửa 1 vừa mới đóng => đợi 5s. ii. Người 2 bấm mở cửa 2, mở cửa 2 mất 6s

iii. Người 2 đi qua cửa 2 => mất tối đa 8s iv. Cửa 2 đóng => mất 6s

v. Mở cửa 1 => mất 6s

Tổng thời gian: t=5+6+8+6+6=31(s)

- A[] not (Door1.open and Door2.open): tính chất mutex, không cho phép 2 cửa được mở cùng 1 lúc => không thỏa mãn.

8.2 Demo: Bridge

Nội dung bài toán

4 chú bộ đội muốn vượt qua 1 cái cầu hỏng giữa đêm khuya. Chỉ có 2 người có thể qua cầu cùng 1 lúc. Để qua cầu thì 1 trong 2 người phải mang đuốc. Thời gian để đi qua cầu của mỗi người lần lượt là 5, 10, 20, 25 phút. Câu hỏi đặt ra là có cách sắp xếp nào để cho cả người qua cầu trong khoảng thời gian nhor hơn 60 phút được hay không?

Nhiệm vụ của chúng ta là mô hình hóa hoạt động của các chú lính và ngọn đuốc thỏa mãn những yêu cầu của đề bài đặt ra, đồng thời trả lời câu hỏi của bài toán.

Mô hình hóa trên UPPAAL

Mô hình bài toán cây cầu có 2 khuôn mẫu (Template) là người lính và ngọn đuốc. - Soldier là template của người lính.

CHƯƠNG 8. CÁC DEMO KHÁC TRONG UPPAAL 8.2. DEMO: BRIDGE

Khai báo các biến toàn cục như sau:

chan take, release; // Nhận và trả ngọn đuốc

int[0,1] L; // Vị trí của ngọn đuốc,0:bờ này, 1:bờ kia. clock time; // Đồng hồ chung của cả hệ thống.

Một phần của tài liệu Hướng dẫn sử dụng UPPAAL 4.0 (Trang 49 - 51)