ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC BÁCH KHOA ---BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH Đề tài 14: mô hình MARKOV Nhóm Thực Hiện: Nhóm 14 Giáo viên hướng dẫn: Nguyễn Xuâ
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
-BÁO CÁO BÀI TẬP LỚN ĐẠI
SỐ TUYẾN TÍNH
ĐỀ TÀI 14 :MÔ HÌNH MARKOV
TP HCM, tháng 4 năm 2021
Trang 2ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
-BÁO CÁO BÀI TẬP LỚN ĐẠI SỐ TUYẾN TÍNH
Đề tài 14: mô hình MARKOV Nhóm Thực Hiện: Nhóm 14 Giáo viên hướng dẫn: Nguyễn Xuân Mỹ
Danh sách sinh viên của nhóm:
Trang 3Mục Lục
6 Một số ứng dụng thực tế của mô hình Markov : 9
Trang 4PHẦN BÁO CÁO NHÓM
1 Đề tài bài tập lớn:
Chủ đề 14:
Giới thiệu mô hình Markov
Viết chương trình dùng mô hình Markov giải một bài toán cụ
thể Tìm các ứng dụng khác nhau của mô hình Markov
2 Cơ sở lí thuyết
2.1 giới thiệu mô hình Markov.
Mô hình markov là mô hình trang thái của một hệ thống hay một quy trình sau một thời gian được biểu hiện qua mô hình trạng thái ban đầu và thời gian cũng như là số lượng
cụ thể ban đầu của từng trạng thái
2.2 Mô hình Markov được sử dụng rộng rãi để:
─ Mô tả thế giới một cách thực tế hơn
─ Là một công cụ hữu ích giúp dự đoán dài hạn về một hệ thống hoặc là một quy trình Ví dụ: Dự đoán dài hạn Mô hình Markov mô tả theo thời gian nên ta có thể đặt những câu hỏi về trạng thái của một hệ thống trong tương lai
─ Nó phát triển như thế nào theo thời gian: hệ thống sẽ ở trạng thái nào sau sau thời gian
mà người ta cần biết
─ Truy tìm các trình tự có thể xảy ra trong quá trình: khi hệ thống đi từ trạng thái A đi sang trạng thái B trong thời gian mà người ta cần biết Khả năng có nó đi theo con đường
đã vạch ra là bao nhiêu
Công thức tính của mô hình Markov:
Chú thích:
Trang 5─ M: ma trận biểu thị trạng thái ban đầu
─ k: thời gian
─ X0: ma trận biểu thị số lượng từng trạng thái lúc đầu
─ Xk: ma trận biểu thị trạng thái sau thời gian k
2.3 Phép nhân hai ma trận.
Cho A = (aij )m×n, B = (bij )n×p Khi đó A × B = C = (cij )m×p, với cij
= ai1b1j + ai2b2j + · · · + ainbnj
Để tìm phần tử cij của ma trận tích, ta lấy hàng i của A nhân tương ứng với cột j của
B và cộng các tích lại với nhau
Điều kiện phép nhân: số cột của ma trận trước phải bằng với số hàng của ma trận sau
2.4 Phép nâng lên lũy thừa
Cho A là ma trận vuông cấp n Ta định nghĩa :
A0=I
A1=A
A2=A.A
∀m ∈ N*, Am=A.A A
3 Các bước chạy chương trình:
B1: Nhập ma trận X0, M, k
B2: Kiểm tra xem ma trận M và X0 có nhân được với nhau không
Trang 63.1 Giải bài toán cụ thể:
Trong một chung cư có 5000 dân( khách hàng), và có 3 siêu thị là A,B,C Giả sử, trong tháng đầu tiên số khách hàng của từng siêu thị lần lượt là 1000,1500,2500 Người ta nhận thấy mỗi tháng có 10% khách hàng từ A sang B và có 10% khách hàng từ A sang
C Từ B có 20% khách hàng sang A và 15% khách hàng sang C Từ C có 15% khách chuyển sang A và 10% chuyển sang B Dự đoán số lượng khách hàng sau 3 tháng của từng siêu thị
3.2 Các bước giải của bài toán:
B1: Nhập ma trận M :
Ma trận X0: , k=3
B2: kiểm tra số liệu phù hợp, đúng theo yêu cầu, ma trận M và X0 nhân được với nhau B3: Số lượng khách hàng sau 3 tháng :
Tích Xk=Mk.X0
Vậy số lượng khách hàng sau 3 tháng của siêu thị A,B,C lần lượt là 1966,1177,1857.
4 Đoạn code dùng cho bài toán
clear;
Trang 7close all;
clc;
% nhap gia tri ban dau cua bai toan
disp('Ti le phan tram khach hang chuyen tu sieu thi nay sang sieu thi khac sau 1 thang lan luot la:');
A_to_B = input('Tu sieu thi A sang sieu thi B: ');
A_to_C = input('Tu sieu thi A sang sieu thi C: ');
B_to_A = input('Tu sieu thi B sang sieu thi A: ');
B_to_C = input('Tu sieu thi B sang sieu thi C: ');
C_to_A = input('Tu sieu thi C sang sieu thi A: ');
C_to_B = input('Tu sieu thi C sang sieu thi B: ');
disp('So luong khach hang ban dau cua moi sieu thi:');
A = input('Sieu thi A: '); B = input('Sieu thi B: '); C = input('Sieu thi C: ');
n = input('So luong khach hang can tim o moi sieu thi sau n thang voi n = ');
% khoi tao ma tran P, X_0
P = [(1 - A_to_B - A_to_C) B_to_A C_to_A; A_to_B (1 - B_to_A - B_to_C) C_to_B; A_to_C B_to_A (1 - C_to_A - C_to_B)];
X_0 = [A; B; C];
%in ket qua ra man hinh X_n = P^(round(n)) * X_0;
fprintf('So luong khach hang cua sieu thi A sau %d thang la %d khach hang\n',
n, round(X_n(1,1)));
fprintf('So luong khach hang cua sieu thi B sau %d thang la %d khach hang\n', n,
round(X_n(2,1)));
fprintf('So luong khach hang cua sieu thi C sau %d thang la %d khach hang\n', n,
round(X_n(3,1)));
5 Các bước thực hiện kết quả của bài toán trên:
nhap vao so luong khach hang ban dau
7
Trang 8so luong khach hang tai sieu thi A ban dau la :1000
so luong khach hang vao sieu thi B ban dau la :1500
so luong khach hang vao sieu thi C ban dau la :2500
ti le (%)khach hang tu sieu thi A sang thieu thi B sau moi thang la: 0.1
ti le (%)khach hang tu sieu thi A sang sieu thi C sau moi thang la: 0.1
ti le (%)khach hang o lai sieu thi A sau moi thang la: 0.8
ti le (%)khach hang tu sieu thi B sang sieu thi A sau moi thang la: 0.2
ti le (%)khach hang tu sieu thi B sang sieu thi C sau moi thang la: 0.15
ti le (%)khach hang o lai sieu thi B la: 0.65
ti le (%)khach hang tu sieu thi C sang sieu thi A sau moi thang la: 0.15
ti le (%)khach hang tu sieu thi C sang sieu thi B sau moi thang la: 0.1
ti le (%)khach hang o lai sieu thiu C la: 0.75
nhap vao so luong khach hang ban dau
so luong khach hang tai sieu thi A ban dau la:1000 so
luong khach hang vao sieu thi B ban dau la:1500 so
luong khach hang vao sieu thi C ban dau la:2500
mo hinh Markov la
0.8000 0.2000 0.1500
0.1000 0.6500 0.1000
0.1000 0.1500 0.7500
nhap vao so chu ki:3
ket luan;
so khach hang o lai sieu thi A la:1966 khach hang
so khach hang o lai sieu thi B la:1177 khach hang
so khach hang o lai sieu thi C la:1857 khach hang
Trang 95 Ví dụ minh họa
Giả sử tôi có một người bạn sống ở rất xa Hàng ngày chúng tôi gọi điện thoại cho nhau và anh ta kể cho tôi nghe anh ta đã làm gì trong ngày Người bạn tôi chỉ có 3 công việc mà anh thích làm là:
1) đi dạo
2) đi chợ
3) dọn phòng
Hiển nhiên là sự lựa chọn phải làm gì thì phụ thuộc trực tiếp vào thời tiết hôm đấy thế nào Như vậy, tôi không nhận được thông tin cụ thể về thời tiết nơi anh bạn tôi sống nhưng tôi lại biết về xu hướng chung Dựa vào lời kể của công việc hàng ngày của anh ta, tôi có thể đoán về thời tiết hôm đó
Như vậy, thời tiết được vận hành như một chuỗi Markov cụ thể Có 2 trạng thái thời tiết,
"Mưa" và "Nắng", nhưng tôi không quan sát trực tiếp, do đó, chúng là ẩn đối với tôi Vào mỗi ngày, anh bạn tôi sẽ làm một trong các việc sau phụ thuộc vào thời tiết hôm đó là "đi dạo", "đi chợ" và "dọn phòng" Vì anh bạn tôi đã tường thuật lại hoạt động của mình, đó là các dữ liệu quan sát Toàn bộ hệ thống này là một mô hình Markov ẩn (HMM)
Tôi biết được xu hướng thời tiết nói chung và tôi cũng biết bạn tôi thường thích làm gì Nói cách khác, các thông số của HMM đã biết
trạng thái = ('Mưa', 'Nắng’)
dữ liệu quan sát = ('đi dạo', 'đi chợ', 'dọn phòng')
khả_năng_ban_đầu = {'Mưa': 0.6, 'Nắng': 0.4}
khả_năng_chuyển_dịch = {
'Mưa' : {'Mưa': 0.7, 'Nắng': 0.3},
Trang 10khả_năng_loại_bỏ = {
'Mưa' : {'đi dạo': 0.1, 'đi chợ': 0.4, 'dọn phòng': 0.5},
'Nắng' : {'đi dạo': 0.6, 'đi chợ': 0.3, 'dọn phòng':
0.1}, }
Tài liệu tham khảo
1 Giáo trình đại số tuyến tính thầy Đặng Văn Vinh
2 https://ichi.pro/vi/mo-hinh-markov-va-chuoi-markov-duoc-giai-thich-trong-cuoc-song-thuc-thoi-quen-tap-luyen-co-xac-suat-112031996615283
3.Trang web academia.edu https://www.academia.edu/22879262/Ch
%A8NG_D%E1%BB%A4NG?email_work_card=thumbnail,