Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề ỨNG DỤNG GIẢI THUẬT DI TRUYỀN XÂY DỰNG LỊCH PHÂN CÔNG LÀM VIỆC

46 1.1K 4
Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề ỨNG DỤNG GIẢI THUẬT DI TRUYỀN XÂY DỰNG LỊCH PHÂN CÔNG LÀM VIỆC

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÀI THU HOẠCH MÔN THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỂ ỨNG DỤNG GIẢI THUẬT DI TRUYỀN XÂY DỰNG LỊCH PHÂN CÔNG LÀM VIỆC Giảng viên phụ trách: PGS.TS ĐỖ VĂN NHƠN Học viên thực hiện: LÊ PHÚ QUÍ - CH1301108 TP Hồ Chí Minh, 10 - 2014 Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM LỜI CÁM ƠN Đầu tiên, em xin chân thành cám ơn thầy PGS.TS ĐỖ VĂN NHƠN – người truyền đạt cho em kiến thức q báu mơn Thuật tốn phương pháp giải vấn đề Tiếp theo, em xin gửi lời cám ơn đến thầy cô khoa phòng ban trường ĐH Cơng Nghệ Thơng Tin tận tình giúp đỡ em thời gian học vừa qua Do kiến thức có hạn kinh nghiệm nghiên cứu khoa học thực tế không nhiều nên làm em không tránh khỏi thiếu sót Em mong nhận đóng góp q báu q thầy TpHCM, ngày 11 tháng 10 năm 2014 Lớp Cao học KHMT khóa Lê Phú Quí HVTH: Lê Phú Quí Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM NHẬN XÉT CỦA GIẢNG VIÊN ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………………… ……………………………………………………………………………………………… HVTH: Lê Phú Q Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM Mục lục I Giới thiệu 1.1 Phát biểu vấn đề nghiên cứu 1.2 Mục đích nghiên cứu 1.3 Đối tượng phạm vi nghiên cứu 1.4 Ý nghĩa khoa học thực tiễn .5 II Tổng quan thuật toán phương pháp giải vấn đề .6 2.1 Vấn đề gì? 2.2 Thuật giải gì? .6 2.3 Xây dựng giải pháp cho vấn đề 2.4 Các phương pháp giải vấn đề .8 III Tổng quan thuật giải di truyền .9 3.1 Thuật giải di truyền .9 3.2 Các yếu tố thuật toán di truyền đơn giản .11 3.3 Sơ đồ thực Thuật giải di truyền 13 3.4 Các toán tử di truyền 15 3.5 Hàm thích nghi chọn lọc 17 3.6 Thể giả thuyết .18 3.7 Mở rộng thuật giải di truyền .20 3.8 Thuật giải di truyền so với phương pháp truyền thống 21 IV Các ứng dụng Thuật giải di truyền 23 4.1 Tối ưu hoá máy học 23 4.2 Ghi ảnh y học với Thuật giải di truyền 24 4.3 Bài toán xếp lịch trực 24 4.4 Một số ứng dụng khác 24 V Ứng dụng thuật giải di truyền vào xếp lịch phân công làm việc 25 5.1 Giới thiệu toán xếp lịch phân công làm việc 25 5.2 Quy trình, ràng buộc mơ hình tốn học 25 5.2.1 Mơ tả quy trình làm việc bến phà Cái Lái 25 5.2.2 Mơ hình tốn học 26 5.3 Áp dụng giải thuật di truyền vào tốn xếp lịch phân cơng làm việc 28 5.3.1 Biểu diễn quần thể .29 HVTH: Lê Phú Q Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM 5.3.2 Đánh giá cá thể 29 5.3.3 Các toán tử 30 5.3.4 Chiến lược tìm kiếm .30 5.4 Cài dặt chương trình 31 5.4.1 Các biến số quan trọng 31 5.4.2 Tạo lịch làm việc cho nhân viên 32 5.4.3 Hàm thích nghi .35 5.4.4 Cụ thể hóa hàm đột biến .36 5.5 Giao diện chương trình .38 5.6 Tiến hành chạy thực nghiệm 42 VI Tổng kết 43 Kết đạt .43 6.2 Hạn chế .43 6.3 Hướng phát triển tương lai .44 VII Tài liệu tham khảo 44 HVTH: Lê Phú Q Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM I Giới thiệu 1.1 Phát biểu vấn đề nghiên cứu Trong ngành khoa học máy tính, tìm kiếm lời giải tối ưu cho tốn vấn đề nhà khoa học máy tính đặc biệt quan tâm Mục đích thuật tốn tìm kiếm lời giải tìm lời giải tối ưu cho toán thời gian nhỏ Các thuật tốn tìm kiếm khơng có thơng tin / vét cạn ( tìm kiếm danh sách, đồ thị ) sử dụng phương pháp đơn giản trực quan thuật tốn tìm kiếm có thơng tin sử dụng heurictics để áp dụng tri thức cấu trúc khơng gian tìm kiếm nhằm giảm thời gian cần thiết cho việc tìm kiếm sử dụng nhiều với khơng gian tìm kiếm nhỏ khơng hiệu tìm kiếm khơng gian tìm kiếm lớn Tuy nhiên, thực tiễn có nhiều tốn tối ưu với khơng gian tìm kiếm lớn cần phải giải Vì vậy, việc địi hỏi thuật giải chất lượng cao sử dụng kỹ thuật trí tuệ nhân tạo đặc biệt cần thiết giải tốn có khơng gian tìm kiếm lớn Thuật giải di truyền (genetic algorithm) kỹ thuật tìm kiếm lời giải tối ưu đáp ứng yêu cầu nhiều toán ứng dụng 1.2 Mục đích nghiên cứu Nghiên cứu, tìm hiểu thuật giải di truyền sở tiếp cận để ứng dụng giải thuật di truyền vào toán xếp lịch phân công làm việc 1.3 Đối tượng phạm vi nghiên cứu Nghiên cứu đặc điểm, đặc trưng giải thuật di truyền, thành phần giải thuật di truyền khởi động quần thể ban đầu, đánh giá độ thích nghi cá thể, toán tử di truyền (chọn lọc, lai ghép, đột biến), điều kiện dừng Ứng dụng giải thuật di truyền vào tốn xếp lịch phân cơng làm việc với ràng buộc yêu cầu 1.4 Ý nghĩa khoa học thực tiễn Trong lĩnh vực lập lịch (hay lập thời khóa biểu), giải thuật di truyền thu hút nhiều nghiên cứu đề xuất Lý cho xu hướng thấy tốn lập lịch nhìn chung thuộc lớp tốn NP-khó (NP hard) vậy, cần giải thuật xấp xỉ Về bản, toán lập lịch coi việc gán mốc thời gian (time slots) thực cho công việc (tasks) cho phù hợp với khả tài nguyên HVTH: Lê Phú Quí Trang Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM (resources) Tuy nhiên, đa dạng thể thể loại ràng buộc khác tốn thực tế có ràng buộc đặc trưng riêng II Tổng quan thuật toán phương pháp giải vấn đề 2.1 Vấn đề gì? • Là câu hỏi cần phải trả lời • Là thứ cần phải giải trình giải • Một vấn đề mối liên quan ý chí người thực tế Có loại vấn đề: • Vấn đề có cấu trúc tốt: mục tiêu rõ ràng, thông tin đầy đủ, tốn quen thuộc Ví dụ: mua sắm đầu tư nhỏ, tuyển dụng,… • Vấn đề có cấu trúc kém: thơng tin khơng rõ ràng, thiếu thơng tin, tốn và/hoặc phức tạp Ví dụ: Chiến lược cơng ty, mở rộng thị trường,… 2.2 Thuật giải gì? Thuật tốn, cịn gọi giải thuật, tập hợp hữu hạn thị hay phương cách định nghĩa rõ ràng cho việc hoàn tất số việc từ trạng thái ban đầu cho trước; thị áp dụng triệt để dẫn đến kết sau dự đốn Nói cách khác, thuật tốn qui tắc hay qui trình cụ thể nhằm giải vấn đề số bước hữu hạn, nhằm cung cấp kết từ tập hợp kiện đưa vào Ví dụ: thuật tốn để giải phương trình bậc P(x): ax + b = c, (a, b, c số thực), tập hợp số thực bước sau đây: Nếu a = • b = c P(x) có nghiệm • b ≠ c P(c) vơ nghiệm HVTH: Lê Phú Q Trang Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM Nếu a ≠ • P(x) có nghiệm x = (c - b)/a Một thuật tốn có tính chất sau: • Tính xác: để đảm bảo kết tính tốn hay thao tác mà máy tính thực xác • Tính rõ ràng: Thuật tốn phải thể câu lệnh minh bạch; câu lệnh xếp theo thứ tự định • Tính khách quan: Một thuật tốn dù viết nhiều người nhiều máy tính phải cho kết • Tính phổ dụng: Thuật tốn khơng áp dụng cho tốn định mà áp dụng cho lớp tốn có đầu vào tương tự • Tính kết thúc: Thuật toán phải gồm số hữu hạn bước tính tốn 2.3 Xây dựng giải pháp cho vấn đề Mơ hình hóa vấn đề • Các bước thực hiện: Vấn đề thực tế  Vấn đề cần giải  mơ hình hóa vấn đề  Vấn đề thực tế vấn đề cần giải quyết: + Khảo sát thu thập liệu, thông tin tri thức (DIK) + Chọn lọc vấn đề chuẩn hóa DIK + Xác định sở DIK cho vấn đề + Xác định phạm vi gây giới hạn vấn đề + Thu thập mẫu vấn đề phân lớp + Mô tả giả thiết vấn đề + Mô tả mục tiêu hay kết luận vấn đề + Mô tả điều kiện hay ràng buộc liên quan  Xây dựng mơ hình: + Mơ hình cho DIK HVTH: Lê Phú Quí Trang Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM + Mơ hình cho giả thiết + Mơ hình cho mục tiêu + Mơ hình cho điều kiện ràng buộc  Mơ hình cho vấn đề tổng thể: (1) Dạng frame (2) Dạng tổng quát (3) Các dạng lai Thiết kế thuật tốn / thuật giải • Chọn lựa phương pháp giải vấn đề dựa phương pháp biết • Hình thành ý tưởng thiết kế thuật tốn • Mơ tả cụ thể: tác vụ, chiến lược, … • Biểu diễn thuật tốn dạng mã giả Chứng minh tính đắn • Chứng minh lý thuyết (dựa tốn học) • Kiểm chứng thực nghiệm Phân tích thuật tốn / thuật giải • Sử dụng cơng cụ tốn học Nghiên cứu cải thiện, nâng cao hiệu thuật giải • Phương pháp “phân chia kết hợp” • Phương pháp heuristic • Phương pháp giải vấn đề dựa (dùng) tri thức 2.4 Các phương pháp giải vấn đề Phương pháp trực tiếp: • Áp dụng trực tiếp công thức hay định lý, algorithm • Chuyển đổi dạng tốn Các phương pháp gián tiếp tìm kiếm lời giải thơng dụng: • Phương pháp thử sai • Phương pháp vét cạn • Phương pháp quay lui • Phương pháp đệ quy HVTH: Lê Phú Q Trang Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM Các phương pháp heuristic: • Vét cạn thông minh • Tham lam, quy hoạch động • Thứ tự • Hướng đích • Hàm heuristic Phương pháp giải vấn đề dùng tri thức (HCG) • Suy luận • Suy luận với heuristic • Suy luận với mẫu tốn • Suy luận với toán mẫu III Tổng quan thuật giải di truyền 3.1 Thuật giải di truyền Giải thuật di truyền (GA) mơ hình tính tốn phổ biến thành cơng lĩnh vực tính tốn thơng minh Cùng với kỹ thuật tính tốn thơng minh khác tính tốn mờ (fuzzy computing), mạng Nơ-ron (neural networks), hệ đa tác tử (multi- agent systems), trí tuệ bầy đàn (swarm intelligence), giải thuật di truyền ngày phát triển, áp dụng rộng rãi lĩnh vực sống Có thể nói, GA bước đầu áp dụng thành công trường hợp, mà việc mơ tả tốn học cho tốn gặp nhiều khó khăn Ví dụ: hệ thống phức hợp (complex systems) với hàm mục tiêu ẩn mối ràng buộc phức tạp, toán thiết kế với hàm mục tiêu phức tạp khơng tuyến tính, hay tốn lập kế hoạch/lập lịch với khơng gian tìm kiếm NP-khó (NP-hard) Thuật giải di truyền (GA) kỹ thuật chung giúp giải vấn đề tốn cách mơ tiến hóa người hay sinh vật nói chung (dựa thuyết tiến hóa mn lồi Darwin) điều kiện qui định sẵn môi trường GA thuật HVTH: Lê Phú Quí Trang Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM ưu tú nhằm giữ lại thuộc tính tốt hệ 5.4 Cài dặt chương trình Chương trình thiết kế mơi trường NET ngơn ngữ C# 5.4.1 Các biến số quan trọng private LichTruc chromosome;// danh sách lịch làm việc internal int[] Sang { get; set; }//mỗi phần tử mảng chứa số lượng ca sáng ngày internal int[] Chieu { get; set; }//mỗi phần tử mảng chứa số lượng ca chiều ngày internal int[] Dem { get; set; }//mỗi phần tử mảng chứa số lượng ca đêm ngày internal int[] Nghi { get; set; }//mỗi phần tử mảng chứa số lượng nhân viên nghỉ ngày internal double TongCaTB1Ngay { get; set; }//tổng sổ ca nghỉ ngày internal double CaNghiTB { get; set; }//số ca phép nghỉ internal int TongSang { get; set; }// tổng số ca sáng tuần internal int TongChieu { get; set; }// tổng số ca chiều tuần internal int[] diemngay { get; set; }// phần tử chứa điểm số ngày private double f = 0;// xác suất = ( tổng điểm số đạt)/(tổng số điểm tối đa) private List dsNhanVien;//danh sách nhân viên Class lịch trực: class LichTruc { internal string[] LichNV { get; set; } public LichTruc(int sl) { this.LichNV = new string[sl]; } public override string ToString() { string t = ""; for (int i = 0; i < LichNV.Length; i++) { t += LichNV[i] + System.Environment.NewLine; } return t; } } HVTH: Lê Phú Quí Trang 31 Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM Class nhân viên: class NhanVien { private string _Hoten; private int _Gioitinh;//0 la nu, la nam private bool _KhongLamSang=false; private bool _KhongLamChieu = false; public bool KhongLamChieu { get { return _KhongLamChieu; } set { _KhongLamChieu = value; } } public bool KhongLamSang { get { return _KhongLamSang; } set { _KhongLamSang = value; } } public int Gioitinh { get { return _Gioitinh; } set { _Gioitinh = value; } } public string Hoten { get { return _Hoten; } set { _Hoten = value; } } } 5.4.2 Tạo lịch làm việc cho nhân viên Để tạo lịch làm việc cho tất nhân viên/tuần trước hết phải tạo lịch làm việc cho nhân viên/tuần • Yêu cầu: lịch làm việc không đươc vi phạm ràng buộc cứng, hạn chế tối đa vi phạm ràng buộc mền • Các bước thực hiện:  Bước 1: Sắp lịch làm việc vào ca sáng ca chiều: HVTH: Lê Phú Q Trang 32 Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM - Toàn lịch làm viên nhân viên (7 ngày/tuần) chọn ngẫu nhiên ca sáng ca chiều - Kiểm tra tổng số ca sáng lớn ca chiều vượt ràng buộc (10*6 = 60 ca) chuyển sang ca chiều - Nếu ca sáng tăng tổng số ca sáng 1+ - Nếu ca chiều thi tăng tổng số ca chiều 1+  Bước 2: Sắp lịch nghỉ: - Ngày nghỉ nhân viên chọn cách ngẫu nhiên (chọn ngày) - Kiểm tra tổng số ca nghỉ ngày vượt tổng số ca nghỉ trung bình vượt ràng buộc ( CaNghiTB + 5) n = r.Next(7); str = ThayKyTuTrongChuoi(str, n, '0'); Nghi[n]++; if (k == 1) { TongSang ; } else{ TongChieu ; } if (nv.Gioitinh == 1) { if (str.IndexOf('0') == 0) { if (Dem[str.Length - 1] < 20) { str = ThayKyTuTrongChuoi(str, str.Length - 1, '3'); Dem[str.Length - 1]++; if (k == 1) { TongSang ; } else HVTH: Lê Phú Quí Trang 34 Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM { TongChieu ; } } } else { if (Dem[str.IndexOf('0') - 1] < 20) { str = ThayKyTuTrongChuoi(str, str.IndexOf('0') - 1, '3'); Dem[str.IndexOf('0') - 1]++; if (k == 1) { TongSang ; } else { TongChieu ; } } } } return str; } 5.4.3 Hàm thích nghi • Mục đich: tính tốn độ thích nghi ràng buộc mềm • Các bước thưc hiện:  Bước 1: Thống kê số lượng người làm ca sáng, ca chiều, ca đêm, số nghỉ tuần  Bước 2: Tính tổng điểm số tuần với diều kiện thỏa mãn ràng buộc mền • Quy ước việc tính điểm:  Mỗi ràng buộc mềm/ngày thoải mãn 1+ điểm  Tổng sổ điểm cộng tối đa ngày: 3(ràng buộc mềm)*1(điểm)=3(điểm)  Tổng sổ điểm cộng tối đa tuần: 7(ngày)*3(điểm)=21(điểm) • Bước 3: Tính xác suất thích nghi: (tổng điểm cộng)/21 public void CalFitness() HVTH: Lê Phú Quí Trang 35 Lớp Cao học KHMT Khóa ĐH CNTT – ĐHQG TP.HCM { int[] sang = new int[7], chieu = new int[7], dem = new int[7], nghi = new int[7]; int tongsang = 0, tongchieu = 0; diemngay = new int[7]; for (int i = 0; i < this.chromosome.LichNV.Length; i++) { for (int j = 0; j < this.chromosome.LichNV[i].Length; j++) { if (this.chromosome.LichNV[i][j] == '1') { sang[j]++; tongsang++; } if (this.chromosome.LichNV[i][j] == '2') { chieu[j]++; tongchieu++; } if (this.chromosome.LichNV[i][j] == '3') dem[j]++; if (this.chromosome.LichNV[i][j] == '0') nghi[j]++; } } Sang = sang; Chieu = chieu; Dem = dem; Nghi = nghi; TongSang = tongsang; TongChieu = TongChieu; double TongDiem = 0; for (int n = 0; n < 7; n++) { if (dem[n] == 20) { diemngay[n] += 1; TongDiem += 1; } if (sang[n] >= chieu[n] && sang[n] - chieu[n] = CaNghiTB - && nghi[n] 0.9 (xác suất chấp nhận được) tiến hành xếp lại lịch cho cá thể vi phạm ràng buộc mền để điều chỉnh ca làm việc cho tối ưu (xác suất = 1).Nếu xác suất 0.90) { for (int j = 0; j < diemngay.Length-1; j++) { if ( Dem[j]

Ngày đăng: 24/05/2015, 09:18

Từ khóa liên quan

Mục lục

  • I. Giới thiệu

    • 1.1. Phát biểu vấn đề nghiên cứu

    • 1.2. Mục đích nghiên cứu

    • 1.3. Đối tượng và phạm vi nghiên cứu

    • 1.4. Ý nghĩa khoa học và thực tiễn

    • II. Tổng quan về thuật toán và phương pháp giải quyết vấn đề

      • 2.1. Vấn đề là gì?

      • 2.2. Thuật giải là gì?

      • 2.3. Xây dựng giải pháp cho vấn đề

      • 2.4. Các phương pháp giải quyết vấn đề

      • III. Tổng quan về thuật giải di truyền

        • 3.1. Thuật giải di truyền

        • 3.2. Các yếu tố của thuật toán di truyền đơn giản

        • 3.3. Sơ đồ thực hiện Thuật giải di truyền

        • 3.4. Các toán tử di truyền

        • 3.5. Hàm thích nghi và sự chọn lọc

        • 3.6. Thể hiện các giả thuyết

        • 3.7. Mở rộng thuật giải di truyền

        • 3.8. Thuật giải di truyền so với các phương pháp truyền thống

        • IV. Các ứng dụng của Thuật giải di truyền

          • 4.1. Tối ưu hoá và máy học

          • 4.2. Ghi ảnh y học với Thuật giải di truyền

          • 4.3. Bài toán sắp xếp lịch trực

          • 4.4. Một số ứng dụng khác

Tài liệu cùng người dùng

Tài liệu liên quan