1.3 Phương pháp tính độ tin cậy của hệ thống qua cấu trúc hệ thống Cấu trúc của một hệ thống dù phức tạp đến đâu thì cũng chỉ quy về 2 dạng là cấu trúc nối tiếp hoặc cấu trúc song song
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LÊ THỊ HẢI YẾN
CÁC PHƯƠNG PHÁP ĐÁNH GIÁ ĐỘ TIN CẬY CỦA HỆ THỐNG TÍNH TOÁN QUA
TÓM TẮT LUẬN VĂN THẠC SĨ CÔNG NGHỆ PHẦN MỀM
Hà Nội - 2012
Trang 2MỤC LỤC
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 4
1.1 Khái niệm cơ bản về độ tin cậy 4
1.1.1 Tổng quan 4
1.1.2 Định nghĩa về độ tin cậy 4
1.1.3 Dạng chung của xác suất an toàn 4
1.2 Chỉ số độ tin cậy của hệ thống 4
1.2.1 Phần tử không phục hồi 4
1.2.2 Phần tử phục hồi 5
1.3 Phương pháp tính độ tin cậy của hệ thống qua cấu trúc hệ thống .5
1.3.1 Sơ đồ khối độ tin cậy của các phần tử nối tiếp 5
1.3.2 Sơ đồ khối độ tin cậy của các phần tử song song 6
1.4 Các biện pháp để nâng cao độ tin cậy của hệ thống 6
1.5 Kết luận 6
CHƯƠNG 2 PHƯƠNG PHÁP ĐÁNH GIÁ ĐỘ TIN CẬY CỦA HỆ THỐNG QUA CẤU TRÚC HỆ THỐNG 8
2.1 BÀI TOÁN TÌM ĐƯỜNG ĐI TRONG ĐỒ THỊ HỆ THỐNG 8
2.1.1 Thuật toán chuyển đổi sơ đồ cấu trúc logic thành sơ đồ khối .8
2.1.2 Phân loại các đỉnh và các cạnh của đồ thị liên kết 8
2.1.3 Thuật toán chuyển đổi sơ đồ cấu trúc logic sang đồ thị liên kết 9
2.1.4 Thuật toán tìm tất cả các đường đi trong ma trận liên kết .9
2.1.5 Thuật toán tìm tất cả đường đi của ma trận liên kết trong lý thuyết đồ thị 10
2.1.6 Kết luận 10
2.2 BÀI TOÁN TỐI THIỂU CÁC TOÁN TỬ LOGIC 10
2.2.1 Định nghĩa và các phép toán trong đại số Boole 11
Trang 32.2.2 Các phương pháp cơ bản để tối thiểu hoá các toán tử logic 11
2.3 BÀI TOÁN XÁC ĐỊNH TRỰC GIAO HOÁ CÁC
TOÁN TỬ LOGIC 11
2.3.1 Các phương pháp giảm thiểu các hàm đại số logic đối với các hình thức trực giao và trực giao không lặp 11
2.3.2 Các quy tắc chuyển đổi hàm logic sang dạng xác suất trong dạng chuẩn tắc tuyển 12
2.3.3 Kết luận 12
CHƯƠNG 3 THIẾT LẬP VÀ XÂY DỰNG CHƯƠNG TRÌNH TÍNH ĐỘ TIN CẬY CỦA HỆ THỐNG MẠNG MÁY TÍNH 13
3.1 Thiết lập bài toán 13
3.1.1 Viết chương trình để tìm các đường đi trong ma trận liên kết 13 3.1.2 Xây dựng chương trình trực giao hoá hàm đại số logic 14 3.2 Các ví dụ sử dụng các hàm đã xây dựng 16
3.3 Phát triển các chức năng và các yêu cầu cần thiết bổ sung cho việc tính toán 17
3.4 Kết luận 17
CHƯƠNG 4 ĐỘ TIN CẬY VÀ KHẢ NĂNG HỆ THỐNG HOẠT ĐỘNG AN TOÀN QUA VÍ DỤ CỤ THỂ 18
4.1 Đặc tả hệ thống 18
4.2 Nghiên cứu các thuật toán và phát triển các hàm 19
4.3 Kết quả thu được từ chương trình tính toán độ tin cậy của hệ thống 19
4.4 Kết luận 21
KẾT KUẬN 22
1 Kết luận 22
2 Hướng phát triển 22
Trang 4CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Khái niệm cơ bản về độ tin cậy
1.1.1 Tổng quan
“Hệ thống là một tập hợp gồm nhiều phần tử tương tác, có các mối quan hệ ràng buộc lẫn nhau và cùng hoạt động hướng tới một mục tiêu chung thông qua chấp thuận các đầu vào, biến đổi có
tổ chức để tạo kết quả đầu ra”
Hay “Hệ thống là một tập hợp gồm nhiều phần tử có các mối
quan hệ ràng buộc tương tác lẫn nhau để thực hiện một mục đích chung”[6]
1.1.2 Định nghĩa về độ tin cậy
Độ tin cậy P(t) của phần tử hoặc của hệ thống là xác suất để trong suốt khoảng thời gian khảo sát t phần tử đó hoặc hệ thống đó vận hành an toàn
P(t) = P{ ≥ t} (1.1) Trong đó:
- là thời gian liên tục vận hành an toàn của phần tử
1.1.3 Dạng chung của xác suất an toàn
Kiến thức cơ bản cần thiết để phân tích độ tin cậy của hệ thống nói chung là:
- Kiến thức về lý thuyết xác suất và quá trình ngẫu nhiên;
- Kiến thức về các thành phần, thông số kỹ thuật của hệ thống
Độ tin cậy của hệ thống còn được gọi theo cách khác là xác suất an toàn P(t) = P{ ≥ t}
Xác suất không an toàn (Q(t)) hay còn gọi là xác suất hỏng của hệ thống [1] sẽ là: Q(t) = 1-P(t)
1.2 Chỉ số độ tin cậy của hệ thống
Các hệ thống, thiết bị kỹ thuật (các phần tử) tồn tại trong thực tiễn thường tồn tại dưới 2 dạng là phục hồi được và không phục hồi được
1.2.1 Phần tử không phục hồi
Phần tử không phục hồi[2] là phần tử khi được đưa vào sử
Trang 5chữa do không thể hoặc việc sửa chữa không mang lại hiệu quả, ví
dụ như: linh kiện điện trở, tụ điện, IC … ta chỉ quan tâm đến sự kiện xảy ra sự cố đầu tiên
Trong phần này sẽ nói đến những thông số cơ bản của phần tử không phục hồi và cách tính các thông số đó dựa vào lý thuyết xác suất và thống kê
1.3 Phương pháp tính độ tin cậy của hệ thống qua cấu trúc hệ thống
Cấu trúc của một hệ thống dù phức tạp đến đâu thì cũng chỉ quy về 2 dạng là cấu trúc nối tiếp hoặc cấu trúc song song [4] (Phương pháp tính độ tin cậy của hệ thống không có dự phòng và
1.3.1 Sơ đồ khối độ tin cậy của các phần tử nối tiếp
Cấu trúc đơn giản hơn cả là cấu trúc không có dự phòng của một hệ thống được tạo nên bởi n phần tử, mỗi trở ngại của một phần tử riêng biệt đều dẫn đến trở ngại của cả hệ thống
𝑃𝐻 𝑡 = 𝑃1 𝑡 𝑃2 𝑡 … 𝑃𝑖 𝑡 … 𝑃𝑛 𝑡 = 𝑃𝑖 𝑡
𝑛
𝑖=1
(1.24) Thời gian hoạt động an toàn trung bình của hệ thống là:
𝑇𝐻= 1
Λ (1.27) Xác suất trạng thái hỏng của hệ thống:
Trang 6𝑄𝐻 𝑡 = 1 − 𝑃𝐻 𝑡 = 1 − 𝑃1 𝑃2… 𝑃𝑛 (1.32)
1.3.2 Sơ đồ khối độ tin cậy của các phần tử song song
Trong sơ đồ các phần tử song song [8] (hệ thống có dự phòng), sự cố của 1 phần tử nào đó không nhất định là sẽ dẫn đến
sự cố cho toàn hệ thống, ở sơ đồ này hệ thống sẽ gặp sự cố khi tất
𝑇𝐻= 1
Λ 1.38
Xác suất làm việc không có sự cố của hệ thống song song luôn cao hơn xác suất làm việc không có sự cố của hệ thống nối tiếp
1.4 Các biện pháp để nâng cao độ tin cậy của hệ thống
Nêu một số biện pháp để nâng cao độ tin cậy của hệ thống từ đó đưa ra những chiến lược bảo dưỡng thích hợp
Để đảm bảo độ tin cậy của toàn hệ thống trước hết cần thiết
kế đảm bảo độ tin cậy riêng cho các thành phần trong hệ thống
Trang 7Độ tin cậy của sản phẩm phải đƣợc thể hiện bằng khả năng sản phẩm hoạt động hoàn hảo trong thời gian xác định cụ thể Các công thức phân phối xác suất đƣợc sử dụng để tính toán, đánh giá độ tin cậy của từng phần tử cũng nhƣ của cả hệ thống Việc tính toán chính xác độ tin cậy của hệ thống đặc biệt quan trọng bởi trong công tác bảo trì độ tin cậy của thiết bị càng thấp thì nhu cầu bảo trì càng cao
Trang 8CHƯƠNG 2 PHƯƠNG PHÁP ĐÁNH GIÁ ĐỘ TIN CẬY CỦA HỆ THỐNG QUA CẤU TRÚC HỆ THỐNG
Sử dụng đồ thị và các ma trận liên kết để tính toán độ tin cậy của hệ thống, chẳng hạn như xác suất để hệ thống làm việc an toàn trong thời gian t là P(t); xác suất hệ thống gặp sự cố Q(t); hàm mật
độ phân phối xác suất q(t),
Phần mềm tính toán các chỉ số tin cậy cho hệ thống có cấu trúc phức tạp gồm nhiều giai đoạn [10] nhưng đều có chung bốn bước
cơ bản sau:
Giai đoạn đầu: Xây dựng sơ đồ cấu trúc logic;
Giai đoạn 2: Tìm tất cả các đường đi thành công của hệ thống Giai đoạn 3: Tất cả các đường đi thành công của hệ thống sẽ được
ghi lại dưới dạng các toán tử logic cơ bản, tối thiểu hoá các toán tử logic đó
Giai đoạn 4: Trực giao hoá các toán tử logic, chuyển đổi mô hình
logic sang đại số và tính toán xác suất hệ thống hoạt động an toàn, thời gian trung bình giữa các lần hỏng hóc và các chỉ số khác của
dựng thành công sơ đồ cấu trúc logic của hệ thống cho ta một hình ảnh trực quan về cấu trúc hệ thống và sẽ là điều kiện tiên đề để có thể phân tích và đánh giá độ tin cậy của hệ thống
2.1.2 Phân loại các đỉnh và các cạnh của đồ thị liên kết
Việc phân loại các đỉnh, các cạnh sẽ giúp ta xây dựng sơ đồ cấu trúc logic một cách chính xác
Trang 92.1.3 Thuật toán chuyển đổi sơ đồ cấu trúc logic sang đồ thị liên kết
Trường hợp sơ đồ cấu trúc logic vô hướng thì việc biến đổi là đơn giản nhưng nếu sơ đồ cấu trúc logic có hướng thì việc quan trọng là phải xác định hướng của các cung và xây dựng làm sao cho hệ thống đạt hiệu quả
2.1.4 Thuật toán tìm tất cả các đường đi trong ma trận liên kết
Thuật toán để tìm tất cả các đường đi trong ma trận kề dựa trên thao tác nhân ma trận liên kết một cột tương ứng của ma trận đó được thể hiện như sau:
Bk = A B*
k- 1(*)
Trong đó:
- Bk cột mà trận kết quả của phép nhân (*)
- B*k- 1 là kết quả của phép chuyển đổi B k- 1 ;
Vậy bài toán đặt ra ở đây là cho ma trận A và ma trận cột B1hãy tìm tất cả các đường đi có thể có từ nguồn (điểm phát) tới đích (điểm nhận)
+) Bước 1: Kiểm tra ma trận cột B1 có chứa cung bắt đầu từ đỉnh nguồn hay không Nếu cung tồn tại thì ghi nhận đường đi đó và thay thế cung đó bởi giá trị 0 Cho ta kết quả là B*
1 ; +) Bước 2: Xét với k=2
+) Bước 3: Thực hiện phép tính (*) để tìm các giá trị Bk tương ứng +) Bước 4: Kiểm tra Bk bắt đầu từ nguồn, nếu đường đi tồn tại thì ghi nhớ và thay thế đường đi đó bởi giá trị 0 Nếu đường đi xuất hiện trong Bk là đường đi đầy đủ thì thay thế Bk =0 Kết quả là B*
k +) Bước 5: Kiểm tra B* Nếu B* =0 thì thực hiện tiếp bước 7 Nếu B*k ≠0 thì thực hiện tiếp bước 6
+) Bước 6: Kiểm tra điều kiện k ≤ n-1 Nếu thoả mãn điều kiện k < n-1 thì tăng k lên 1 và thực hiện tiếp bước 3 Nếu điều kiện k = n-1thì thực hiện tiếp bước 7
+) Bước 7: Kiểm tra lại danh sách đường đi và kết quả nhận được
là danh sách các đường đi có thể có từ đỉnh đầu đến đỉnh cuối
Trang 102.1.5 Thuật toán tìm tất cả đường đi của ma trận liên kết trong lý thuyết đồ thị
Tư tưởng của tìm kiếm theo chiều sâu là: Từ đỉnh nguồn (đỉnh đầu) của đồ thị ta di chuyển đến một đỉnh khác (một đỉnh bất kỳ mà có thể đi từ đỉnh đầu) Từ đỉnh này ta tiếp tục
đi đến khác đỉnh khác Nếu không thể đi tiếp được nữa thì quay lại đỉnh trước đó và đi đến đỉnh khác Cứ như vậy cho đến khi đến đỉnh cuối của đồ thị
- Từ thuật toán tìm đường đi đã biết trong lý thuyết đồ thị ta có thể phát triển thành thuật toán tìm tất cả các đường
đi trong đồ thị bằng cách chuyển đồ thị đó thành ma trận tương ứng, phần tử trong ma trân δij =1 nếu tồn tại đường đi giữa i và j, δij =0 nếu không tồn tại đường đi giữa i và j
2.2 BÀI TOÁN TỐI THIỂU CÁC TOÁN TỬ LOGIC
Việc tối thiểu hoá các toán tử logic thường dựa trên các hằng đẳng thức Boole hay còn được gọi là các luật trong đại số Boole Vậy đại số Boole là gì và các phép toán, các luật liên quan đến đại số Boole mà ta sẽ sử dụng để tối thiểu hoá các toán tử logic
là gì? Trong mục này chúng ta sẽ đi giải quyết vấn đề đó
Trang 112.2.1 Định nghĩa và các phép toán trong đại số Boole
Một đại số Boole là một cấu trúc đại số gồm một tập hợp S chứa ít nhất là 2 phần tử, được ký hiệu là 0 và 1, cùng với hai phép toán 2 ngôi “+” (tuyển - ˅) và “.” (hội - ˅) và một phép toán 1 ngôi “¯” (phủ định)
2.2.2 Các phương pháp cơ bản để tối thiểu hoá các toán tử logic
- Phương pháp biến đổi đại số;
- Phương pháp bảng Karnaugh;
- Phương pháp Quine – Mc.Cluskey
2.3 BÀI TOÁN XÁC ĐỊNH TRỰC GIAO HOÁ CÁC TOÁN
a) Thuật toán cắt giảm
Thuật toán này dựa trên việc triển khai các hàm logic cho ta kết quả là các hàm logic đã trực giao, trực giao không lặp và trường hợp đặc biệt đó là dạng chuẩn tắc tuyển trực giao
b) Thuật toán trực giao hoá theo công thức của Poresky
Thuật toán trực giao hoá theo công thức của Poresky [10] gồm các bước sau:
1 Hàm logic được viết dưới dạng chuẩn tắc tuyển như sau:
f(xn) = K1 ˅ K2 ˅ …˅ Kj ˅ ….˅ KR
Trong đó: Kj là mệnh đề sơ cấp có số thứ tự là j
2 Tất cả các biến trong hàm logic khi được viết dưới dạng chuẩn tắc tuyển thì phải được sắp xếp theo thứ tự tăng dần, bắt đầu với bậc thấp nhất của biến
3 Dạng chuẩn tắc tuyển được viết dưới dạng công thức Poresky như sau:
f(xn) = K1 ˅ K2 ˅ …˅ Kj ˅ ….˅ KR =
𝐾1˅𝐾 𝐾1 2˅ 𝐾 𝐾1 𝐾2 3˅ … ˅ 𝐾 … 𝐾1 𝐾𝑅−1 𝑅
Trang 124 Khai triển công thức ta được dạng trực giao không lặp của hàm ban đầu
c) Thuật toán cắt giảm hàm đại số logic bằng cách đưa về dạng chuẩn tắc tuyển
Thuật toán gồm các bước sau đây:
1 Đây là một hàm của dạng chuẩn tắc tuyển
2 Tìm các phép hội sơ cấp xuất hiện trong dạng chuẩn tắc tuyển
3 Tìm tất cả các tập hợp được bao phủ bởi mỗi phép hội sơ cấp
4 Khai triển tất cả các tập hợp, ta sẽ được hàm ban đầu trong dạng chuẩn tắc tuyển hoàn toàn
2.3.2 Các quy tắc chuyển đổi hàm logic sang dạng xác suất trong dạng chuẩn tắc tuyển
Quá trình chuyển đổi về hàm xác suất được thực hiện theo quy tắc sau:
1 Sử dụng công thức De Morgan để đưa về dạng chuẩn tắc hội, không chứa phép cộng logic nào
2 Các ký hiệu phép cộng và nhân logic được thay thế bởi dấu các phép cộng và phép nhân đại số
3 Các ký hiệu xi và 𝑥 được thay thế bằng các xác suất P𝑖 i và Qitương ứng
- Thuật toán trực giao hoá theo công thức Poresky không đơn giản khi giải bằng tay vì số lượng các biến khi khai triển khá dài
Trang 13CHƯƠNG 3 THIẾT LẬP VÀ XÂY DỰNG CHƯƠNG TRÌNH TÍNH ĐỘ TIN CẬY CỦA HỆ THỐNG MẠNG MÁY TÍNH
Sau khi đã hiểu rõ về cách thức cũng như phương pháp để tính toán độ tin cậy của hệ thống thì ta sẽ phải cụ thể hoá các phương pháp đó bằng một ngôn ngữ lập trình cụ thể
3.1 Thiết lập bài toán
3.1.1 Viết chương trình để tìm các đường đi trong ma trận liên kết
3.1.1.1 Các yêu cầu đối với chương trình và xây dựng chương trình
Chương trình được thiết kế với mục đích là tìm tất cả các đường đi giữa hai nút trong ma trận liên kết, mà ma trận liên kết này được xây dựng từ đồ thị liên kết
Tham số đầu vào của chương trình là ma trận liên kết được xây dựng từ đồ thị liên kết
Chương trình phải hoạt động sao cho tìm được các đường đi của ma trận liên kết
Tham số đầu ra của chương trình là tất cả các đường đi được viết dưới dạng các phép hội sơ cấp
Để có thể chạy được ứng dụng này thì máy tính của bạn phải
ưu và nhược điểm riêng Ta sẽ sử dụng thuật toán 2.1.5 để xây dựng chương trình tìm tất cả các đường đi giữa hai nút trong ma trận kết nối
Trang 143.1.1.3 Phát triển hàm tìm kiếm tất cả các đường đi giữa hai nút trong ma trận liên kết
Vì các đường đi mà chúng ta tìm kiếm phải là khác nhau
và không lặp, như thế có nghĩa là chúng có thể khác nhau về độ dài, số đỉnh của mỗi đường đi mà cũng có thể không nhưng thứ tự trong các đường đi phải khác nhau hoàn toàn
Để thực hiện được điều này ta phải xác định loại của tất cả các đường đi như:
unsigned int K [maxN [maxK]
unsigned int i_line,
unsigned int Leng [maxN]
Tất cả các đường đi được lưu trong ma trận hai chiều K, với i_line dòng, chiều dài mỗi đường đi được lưu trong ma trận Leng Các biến maxN (số lượng tối đa các đường đi), maxK (kích cỡ tối đa của ma trận) phải được khai báo hạn chế để tiết kiệm tài nguyên bộ nhớ khi chạy chương trình
Hàm tìm kiếm tất cả các đường đi giữa hai nút trong ma trận liên kết được viết bởi ngôn ngữ C++, chi tiết thể hiện trong phụ lục 1,
/* function Find: Tim kiem vet can theo nguyen tac de quy tat ca cac duong di tu dinh Dau
(I_ISTOK) den dinh cuoi I_STOK)
*/
void Find(
unsigned int A[maxK][maxK],
unsigned int P[maxK
unsigned int L,
unsigned int N,
unsigned int i_istok,
unsigned int i_stok,
unsigned int i_end,
unsigned int K[maxN][maxK],
unsigned int Leng[maxN],
unsigned int &i_line );
3.1.2 Xây dựng chương trình trực giao hoá hàm đại số logic