1. Trang chủ
  2. » Luận Văn - Báo Cáo

Giải thuật di truyền và ứng dụng trong quản lý dự án phần mềm

110 690 5

Đ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

Thông tin cơ bản

Định dạng
Số trang 110
Dung lượng 3,52 MB

Nội dung

Trong luận văn này tôi đặt trọng tâm tìm hiểu giải thuật di truyền và áp dụng vào lập lịch thực hiện các công việc trong dự án phần mềm với sự giới hạn về tài nguyên thực hiện các công v

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

NGUYỄN HỮU HUY

GIẢI THUẬT DI TRUYỀN VÀ ỨNG DỤNG TRONG

QUẢN LÝ DỰ ÁN PHẦN MỀM

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Hà Nội-2014

Trang 2

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

NGUYỄN HỮU HUY

GIẢI THUẬT DI TRUYỀN VÀ ỨNG DỤNG TRONG

QUẢN LÝ DỰ ÁN PHẦN MỀM

Ngành: CÔNG NGHỆ THÔNG TIN

Chuyên ngành: KỸ THUẬT PHẦN MỀM

Mã số:60480103

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS BÙI THU LÂM

Hà Nội-2014

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan, toàn bộ nội dung liên quan tới đề tài được trình bày trong luận văn

là bản thân tôi tự tìm hiểu và nghiên cứu, dưới sự hướng dẫn của PGS, TS.Bùi Thu Lâm

Các tài liệu, số liệu tham khảo được trích dẫn đầy đủ nguồn gốc Tôi xin chịu trách nhiệm trước pháp luật lời cam đoan của mình

Học viên thực hiện

Nguyễn Hữu Huy

Trang 4

LỜI CẢM ƠN

Tôi xin chân thành cám ơn tới Khoa Công nghệ thông tinTrường Đại học Công nghệ Đại học Quốc gia Hà Nội, các thầy, cô đã giúp đỡ và tận tình truyền đạt các kiến thức cho tôi trong suốt quá trình học tập và nghiên cứu Tôi xin cảm ơn ban chủ nhiệm khoa

-và các cán bộ đã tạo điều kiện tốt nhất cho chúng tôi trong quá trình học tập -và hoàn thành luận văn của mình

Đặc biệt, tôi xin gửi tới PGS, TS Bùi Thu Lâm, thầy đã tận tình chỉ bảo tôi trong suốt quá trình làm luận văn lời cám ơn và biết ơn sâu sắc nhất Bên cạnh những kiến thức tôi còn học hỏi được ở thầy tinh thần làm việc khoa học và nghiêm túc

Tôi xin cảm ơn tới học viên Phạm Minh Hải vàNguyễn Thanh Hưng đã đóng góp những ý kiến và động viên tôi trong quá trình học tập và làm luận văn

Tôi xin bày tỏ lòng biết ơn tới gia đình, bạn bè, và các đồng nghiệp ngân hàng Dầu khí toàn cầu GP.Bank, các chị em trong nhóm Ngân hàng điện tử và nhất là trưởng phòng Ngân hàng điện tử Trần Trung Kiên đã động viên khích lệ tinh thần và giúp đỡ tôi hoàn thành luận văn này

Trang 5

MỤC LỤC

Trang phụ bìa Trang 2

Lời cam đoan 3

Lời cảm ơn 4

Mục lục 5

Danh mục các ký hiệu và chữ viết tắt 7

Danh mục các hình vẽ, đồ thị 9

Danh mục các bảng 11

MỞ ĐẦU 12

Chương 1.Tổng quan về quản lý dự án phần mềm 14

1.1 Định nghĩa dự án, quản lý dự án phần mềm 14

1.1.1 Dự án là gì 14

1.1.2 Thế nào là quản trị dự án 17

1.2 Vấn đề lập kế hoạch, lập lịch trong quản trị dự án phần mềm 21

1.2.1 Khái niệm về lập kế hoạch 21

1.2.2 Tự động hóa việc lập lịch 21

Chương 2.Giải thuật di truyền và các ứng dụng 24

2.1 Tổng quan về giải thuật di truyền 24

2.2 Lịch sử phát triển 25

2.3 Các bước áp dụng giải thuật di truyền 26

2.3.1 Mã hóa dữ liệu 26

2.3.2 Khởi tạo quần thể 27

2.3.3 Xác định hàm thích nghi 27

2.3.4 Quá trình lai ghép 28

2.3.5 Quá trình đột biến 29

2.3.6 Quá trình chọn lọc 30

2.4 Các tham số của giải thuật di truyền 31

2.5 Thuật toán giải thuật di truyền 32

Chương 3.Ứng dụng giải thuật di truyền để giải quyết bài toán lập lịch trong quản lý dự án phần mềm 34

3.1 Phát biểu bài toán 34

3.2 Thuật toán 38

3.2.1 Thuật toán khởi tạo cá thể 38

3.2.2 Thuật toán đột biến cá thể 40

3.2.3 Thuật toán lai tạo giữa hai cá thể 41

3.2.4 Thuật toán xác định chuỗi thực hiện công việc có phù hợp với sơ đồ phân rã công việc hay không 45

3.2.5 Thuật toán gán tài nguyên thực hiện công việc theo thứ tự 46

Trang 6

3.2.6 Xây dựng hàm fitness 48

Chương 4.Xây dựng ứng dụng 49

4.1 Mô hình ứng dụng 49

4.2 Tìm hiểu về nền tảng AForge.NET và ứng dụng vào chương trình demo 54

4.3 Viết Add-in cho Microsoft Project 58

4.3.1 Tạo button trong menu Add-ins 59

4.3.2 Các bước cơ bản tạo Add-in trên Visual studio 2010 59

4.3.3 Viết code chức năng ExportData 61

4.3.4 Chức năng import dữ liệu task từ database 61

4.3.5 Chức năng xem biểu đồ gantt chart 62

4.4 Dữ liệu demo 62

4.4.1 Bảng công việc 62

4.4.2 Bảng loại tài nguyên 66

4.4.3 Bảng tài nguyên 66

4.5 Chương trình demo 67

4.5.1 Tạo mới database lưu trữ dữ liệu 67

4.5.2 Mở database có sẵn 68

4.5.3 Quản lý dự án 69

4.5.4 Quản lý loại tài nguyên dự án 70

4.5.5 Quản lý tài nguyên dự án 71

4.5.6 Quản lý công việc 71

4.5.7 Thực hiện việc estimate các công việc dự án 74

4.5.8 Chức năng lập lịch dự án bằng giải thuật di truyền: 75

4.5.9 Các chức năng bổ trợ khác 77

4.6 Kết quả chạy chương trình 82

KẾT LUẬN 90

TÀI LIỆU THAM KHẢO 91

PHỤ LỤC 92

Trang 7

4 WBS Work breakdown structure

5 AForge.NET Nền tảng thư viện phục vụ cho lĩnh vực thị

giác máy tính và trí tuệ nhân tạo

Trang 8

Ý NGHĨA CÁC KÝ HIỆU

1 Pred j Tập hợp các công việc trực tiếp phía

trước của công việc j Công việc j là một công việc trong tập các công việc được định nghĩa trong bảng phân rã công việc

2 C pr Bảng phân rã công việc Ở bảng này đã

chỉ định rõ công việc nào là công việc trực tiếp phía trước, công việc nào là công việc sau

3 TaskLine Đường biểu diễn chuỗi công việc Đây

là tập hợp các công việc đã chỉ định rõ thứ tự thực hiện Giả sử công việc e có công việc trực tiếp phía trước là d, trước công việc d có công việc trực tiếp phía trước c Công việc e lại có công việc trực tiếp phía sau là f, công việc f lại có công việc trực tiếp phía sau là g Thì ta

có đường biểu diễn công việc e là tập hợp các công việc theo thứ tự như sau:

c, d, e, f, g

4 DoingTask Danh sách các task đang làm việc

5 NeedToDo Danh sách các task cần phải làm, các

công việc này được đươc vào hàng đọi, đang đợi đủ tài nguyên để thực hiện

6 WorkingResource Các tài nguyên đang làm việc, các tài

nguyên này đang bận thực hiện một task nào đấy

Trang 9

DANH MỤC HÌNH VẼ

Hình 1.1 Vòng đời chuẩn của quản lý dự án 18

Hình 2.1 Ví dụ về mã hóa nhiễm sắc thể 26

Hình 2.2 Ví dụ về mã hóa nhị phân 26

Hình 2.3 Ví dụ về mã hóa hoán vị 27

Hình 2.4 Ví dụ về mã hóa giá trị 27

Hình 2.5 Ví dụ về mã hóa cây 27

Hình 2.6 Lai ghép giữa hai cá thể 28

Hình 2.7 Lai ghép giữa hai cá thể 28

Hình 2.8 Đột biến một nhiễm sắc thể 29

Hình 2.9 Đột biến một nhiễm sắc thể tại một điểm và hai điểm 30

Hình 2.10 Sơ đồ quá trình tính toán của thuật toán di truyền 32

Hình 3.1 Ví dụ bảng phân rã gồm 8 công việc được đánh chỉ số từ 0 tới 7 36

Hình 3.2 Biểu diễn thứ tự công việc bằng mảng một chiều nguyên không âm 37

Hình 4.1 Mô hình các thành phần trong chương trình demo luận văn 49

Hình 4.2 Mô hình quan hệ cơ sở dữ liệu 51

Hình 4.3 Mô hình thực thể liên kết 52

Hình 4.4 Màn hình các chức năng Add-in 59

Hình 4.5 Tạo project từ trình đơn Visual studio 59

Hình 4.6 Chọn loại dự án là Project 2010 Add-in 60

Hình 4.7 Solution explorer của dự án 60

Hình 4.8 class ThisAddIn 61

Hình 4.9 Đồ thị thứ tự công việc được vẽ lại bằng phần mềm demo luận văn 66

Hình 4.10 Truy cập tính năng tạo mới database từ menu 67

Hình 4.11 Chọn tên database và lưu lại 68

Hình 4.12 Chọn mở database từ menu 68

Hình 4.13 Mở danh sách dự án từ menu 69

Hình 4.14 Danh sách dự án 69

Hình 4.15 Màn hình edit dự án 70

Hình 4.16 Màn hình tạo mới dự án 70

Hình 4.17 Vào chức năng quản trị Resource type từ menu 70

Hình 4.18 Vào chức năng quản trị Resource từ menu 71

Hình 4.19 Màn hình quản trị tài nguyên 71

Hình 4.20 Truy xuất màn hình đồ họa quản lý task từ menu 72

Hình 4.21 Màn hình quản lý task 73

Hình 4.22 Xem danh sách tasks 73

Hình 4.23 Danh sách tasks trong dự án 74

Hình 4.24 Màn hình estimate task 75

Hình 4.25 Combobox công việc 75

Trang 10

Hình 4.26 Màn hình tùy chọn các tham số giải thuật di truyền 76

Hình 4.27 Đồ thị hàm fitness qua các thế hệ 76

Hình 4.28 Xem giá cá thể tốt nhất của thế hệ 77

Hình 4.29 Xem chi tiết cách chỉ định tài nguyên thực hiện công việc 77

Hình 4.30 Thực hiện chức năng lưu dữ liệu từ menu 78

Hình 4.31 Thực hiện chức năng nạp dữ liệu từ menu 78

Hình 4.32 Chỉ định vị trí file dữ liệu cần lưu 79

Hình 4.33 Các chức năng dùng lập kế hoạch bằng giải thuật di truyền 79

Hình 4.34 Lựa chọn Line mode trên màn hình đồ họa công việc 80

Hình 4.35 Show tooltip – hiển thị thông tin chi tiết về một task 80

Hình 4.36 Màn hình đồ họa công việc được vẽ thêm lưới mờ 81

Hình 4.37 Hiển thị điểm bắt đầu đồ thị công việc 81

Hình 4.38 Hiển thị điểm kết thúc công việc 82

Hình 4.39 Hiển thị tên và chỉ mục công việc trên màn hình đồ họa 82

Hình 4.40 Đồ thị finess kiểu chọn lọc Elite 83

Hình 4.41 Đồ thị finess kiểu chọn lọc Elite và giữ lại cá thể tốt nhất 83

Hình 4.42 Đồ thị finess kiểu chọn lọc Elite và local search 84

Hình 4.43 Đồ thị finess kiểu chọn lọc Elite và thực hiện đồng thời lưu lại phần tử tốt nhất của thế hệ trước và thực hiện local seach 85

Hình 4.44 Biểu đồ gantt chart 88

Hình 4.45 Biểu đồ sử dụng tài nguyên trong công việc 89

Trang 11

DANH MỤC BẢNG BIỂU

Bảng 1.1 Các hoạt động của quản lý dự án 19

Bảng 1.2 Các kế hoạch của dự án 22

Bảng 4.1 Bảng phân rã công việc dự án và kế hoạch tài nguyên 62

Bảng 4.2 Bảng loại tài nguyên 66

Bảng 4.3 Bảng tài nguyên phân loại theo loại tài nguyên 66

Bảng 4.4 Bảng kết quả chạy thuật toán 85

Bảng 4.5 Bảng lập lịch thực hiện công việc 85

Trang 12

MỞ ĐẦU

Hiện nay quản trị dự án ngày càng được ứng dụng rộng rãi trong các ngành nghề xã hội, trong đó có hoạt động quản lý dự án phần mềm Cùng với sự phức tạp và đa dạng của phần mềm, hoạt động quản lý dự án phần mềm ngày càng tinh vi và phức tạp hơn Trong đó nổi bật lên là vấn đề lập kế hoạch và phân bổ nguồn lực trong dự án Với những dự án ít đầu việc và ít người tham gia thì vấn đề lập kế hoạch và lập lịch dự án một cách thủ công sẽ không đáng ngại Nhưng với những dự án lớn, có nhiều đầu việc phức tạp, số lượng nhân công (nguồn lực, tài nguyên) tham gia vào dự án lớn và cónhiều biến động,khi đó vấn đề lập kế hoạch, lập lịch dự án sẽ gặp khó khăn Người làm kế hoạch sẽ phải tốn nhiều thời gian để tiến hành sửa đổi kế hoạch, lập lịch lại mỗi khi có sự biến động về nhân sự (hay rộng hơn là thay đổi về nguồn lực thực hiện dự án) Như vậy, vấn đề cấp thiết phải làm sao tự động được khâu này, để giảm thiểu sức người cũng như nâng cao chất lượng khâu này

Trong trí tuệ nhân tạo “Giải thuật di truyền” đã được ứng dụng rộng rãi đề giải quyết nhiều bài toán phức tạp Trong đó có các bài toán về lập lịch, lập kế hoạch.Việc áp dụng giải thuật di truyền nhằm làm tối ưu hóa vấn đề lập kế hoạch và phân bổ nguồn lực trong dự án phần mềm đã và đang được nghiên cứu cải tiến rất nhiều trên thế giới Trong luận văn này tôi đặt trọng tâm tìm hiểu giải thuật di truyền và áp dụng vào lập lịch thực hiện các công việc trong dự án phần mềm với sự giới hạn về tài nguyên thực hiện các công việc trong dự án

Các kiến thức về lập lịch trong quản lý dự án phần mềm, kiến thức về giải thuật di truyền, cách áp dụng giải thuật di truyền để tự động lập lịch dự án cũng như các kỹ năng lập trình xây dựng ứng dụng hoàn chỉnh bước đầu có thể quản lý dự án và tự động chọn lựa phương án tối ưu để lập lịch dự án được học viên trình bày chi tiết trong luận văn vàđược chia thành 4 chương sau đây:

Chương 1 TỔNG QUAN VỀ QUẢN LÝ DỰ ÁN PHẦN MỀM

Chương này giới thiệu về dự án phần mềm và quản lý dự án phần mềm Qua chương này ta thấy được phần mềm cũng như các tiến trình, công cụ quản lý phần mềm ngày càng phức tạp Do vậy cần phải tìm cách tự động hóa càng nhiều khâu trong quản lý

dự án càng tốt Trong chương này cũng chỉ ra là có thể áp dụng giải thuật di truyền vào quản lý dự án phần mềm ở bước lập lịch biểu, gán nguồn lực thực hiện dự án

Chương 2 GIẢI THUẬT DI TRUYỀN VÀ CÁC ỨNG DỤNG

Chương này sẽ cho người đọc một cái nhìn tổng quan về giải thuật di truyền và các ứng dụng của nó trong thực tế, qua đó người đọc có thêm hiểu biết về các vấn đề mã hóa giải thuật di truyền Giúp người đọc có thể vận dụng những kiến thức ở chương này để giải quyết các vấn đề của mình

Trang 13

Chương 3 ỨNG DỤNG GIẢI THUẬT DI TRUYỀN ĐỂ GIẢI QUYẾT BÀI

TOÁN LẬP LỊCH TRONG QUẢN LÝ DỰ ÁN PHẦN MỀM

Chương này đưa ra các bước cụ thể cách dùng giải thuật đi truyền vào bài toán lập lịch trong quản trị dự án phần mềm và phát triển các thuật toán di truyền: mã hóa, lai tạo,

độ biến, chọn lọc để vận dụng giải quyết bài toán lập lịch với ràng buộc hạn chế về nguồn lực thực hiện dự án

Chương 4 XÂY DỰNG ỨNG DỤNG

Dựa vào các kiến thức tìm hiểu ở các chương trên, chương này giới thiệu về cách tạo ứng dụng demo, hướng dẫn sử dụng ứng dụng này trong việc lâp lịch tự động Giới thiệu tới người đọc framework giải thuật di truyền AForge.NET, cách sử dụng framework này trong việc viết chương trình demo Giới thiệu sơ lược về cách lập trình Add-ins cho phần mềm Microsoft Project và kết hợp giữa công cụ lập lịch tự động với phần mềm này

Trang 14

Chương 1 TổNG QUAN Về QUảN LÝ Dự ÁN PHầN MềM

1.1 Định nghĩa dự án,quản lý dự án phần mềm

1.1.1 Dự án là gì

Có rất nhiều cách định nghĩa một dự án, chung quy lại dự án là quá trình tạo ra sản phẩm hay dịch vụ Do vậy các định nghĩa dự án như sau đều được chấp nhận:Dự án là một quá trình gồm các công việc, nhiệm vụ có liên quan với nhau, được thực hiện nhằm đạt được mục tiêu đã đề ra trong điều kiện ràng buộc về thời gian, nguồn lực và ngân sách Hoặc định nghĩa dự án là một nhiệm vụ cần hoàn thành để có được một sản phẩm, dịch vụ duy nhất trong một thời hạn đã cho với kinh phí dự kiến Hoặc dự án là một sự cố gắng nhất thời để tạo sản phẩm dịch vụ[5]

Cũng giống như các dự án thông thường, dự án phần mềmmang những đặc điểm cơ bản như sau:

- Mỗi dự ánphải có một hoặc một số mục tiêu rõ ràng do dự ánlà một quá trình tạo ra kết quả cụ thể

- Mỗi dự án đều có một thời hạn nhất định, toàn bộ thời gian của dự án được chia thành các giai đoạn: Giai đoạnkhởi đầu, giai đoạn triển khai và giai đoạn kết thúc Thời gian thực hiện dự án được chỉ định không được vượt quá một khoảng thời gian nhất định (ví dụ không quá một tháng, một năm, hai năm…) Thời gian thự hiện dự án được ước lượng thông qua các tính năng của sản phẩm (kết quả của dự án) mà khách hàng yêu cầu và được sự đồng ý của khách hàng

Để đảm bảo dự án hoàn thành theo đúng thời gian cho phép, bộ phận quản trị

dự án cần áp dụng các công cụ, phương pháp quản lý dự án phù hợp cho từng loại hình dự án nhằm đảm bảo dự án hoàn thành đúng tiến độ đã đề ra

- Mỗi dự án đều có sử dụng nguồn lực và nguồnlực này bị hạn chế Các nguồn lực đó bao gồm nhân lực, nguyên vậtliệu, ngân sách Do các nguồn lực này là hạn chế nên phải có phương pháp quản trị và sử dụng các nguồn lực này trong

Trang 15

phẩm thông thường ví dụ như chiếc tivi, nếu khách muốn đổi các thông số trên chiếc tivi này, muốn có một số tính năng mới thì rất khó có thể làm được điều này

- Các pha của vòng đời dự án rõ ràng Vòng đời chuẩn của quản lý dự án gồm 4 pha : Xác định dự án, Lập kế hoạch, Thực hiện và cuối cùng là Đóng dự án

- Có thể có nhiều giải pháp cho một yêu cầu Ví dụ cùng một yêu cầu xây dựng phần mềm kế toán có thể có hai giải pháp thực hiện vấn đề này, giải pháp thứ nhất là xây dựng phần mềm sử dụng online qua internet, giải pháp thứ hai là xây dựng phần mềm offline, không nhất thiết phải làm sao để có nhiều người dùng truy xuất một lúc với giải pháp offline.Tùy vào giải pháp cụ thể mà đội phát triển dự án sẽ có những phương án nguồn lực cụ thể để hoàn thành dự án, như với giải pháp xây dựng phần mêm có thể sử dụng online qua internet thì cần phải chọn nhân lực có các kỹ năng về lập trình web, ngược lại giải pháp offline thì cần các nhân lực có kỹ năng về lập trình ứng dụng window

- Định hình sản phẩm của dự án phần mềm không cứng nhắc miễn là đáp ứng được yêu cầu Như ở ví dụ trên đã đưa ra về việc xây dựng phần mềm kế toán, đội phát triển có thể định hình sản phẩm theo hai hướng là phần mềm được sử dụng qua internet hoặc không cần kết nối qua internet miễn là phần mềm sao đáp ứng được các tính năng cần có của một phần mềm kế toán mà khách hàng yêu cầu

- Có nhiều công cụ trợ giúp và các công cụ này ngày càng tốt hơn mạnh hơn Đối với các dự án phần mềm các công cụ trợ giúp ngày càng mạnh, có thể kế đến các công cụ quản lý mã nguồn, công cụ hỗ trợ quản lý yêu cầu, công cụ quản lý lỗi, các công cụ hỗ trợ lập trình như Microsoft visual studio 2001, các công cụ quản lý cơ sở dữ liệu…Nhờ có các công cụ này mà các dự án phần mềm ngày càng được rút ngắn thời gian phát triển mà vẫn đảm bảo chất lượng phần mềm

- Sản phẩm phần mềm là vô hình, không cầm nắm được như các sản phẩm thông thường Sản phẩm phần mềm được lưu trữ trên máy tính bao gồm chương trình,

cơ sở dữ liệu và các tài liệu hướng dẫn sử dụng Khi sử dụng sản phẩm phần mềm cần phải có máy tính, người sử dụng sản phẩm phần mềm cũng cần phải

có một số kiến thức nhất định về công nghệ thông tin, cần phải biết cách sử dụng máy tính

Trang 16

- Cùng một yêu cầu nhưng không xác định duy nhất sản phẩm đầu ra Khi mà khách hàng yêu cầu xây dựng phần mềm thì mỗi đội phát triển sẽ cho ra một sản phẩm khác nhau, có thể có những khác nhau về giao diện, quy trình nghiệp

vụ, tính năng sản phẩm Những sự khác nhau này vẫn cần phải đảm bảo sản phẩm làm ra phải thỏa mãn yêu cầu và làm hài lòng khách hàng

- Các nguyên tắc kỹ nghệ để làm ra phần mềm hoàn toán khác với các nguyên tắc tạo ra sản phẩm thông thường(như cơ, điện )

- Sản phẩm phần mềm chịu nhiều yếu tố biến động hơn các sản phẩm khác, các yếu tố biến động như công nghệ, môi trường, nghiệp vụ và nguồn lực ảnh hưởng trực tiếp tới chất lượng phần mềm

- Nguyên liệu đầu vào để sản xuất phần mềm cũng rất đặc trưng, nguyên liệu đầu vào có thể là các sản phẩm phần mềm khác, các gói thư viện phần mềm, còn một nguyên liệu rất trừu tượng đó là chất sám

Dự án phần mềm cũng giống như các loại dự án khác về các nguyên nhân gây nên sự thất bại của dự án Các nguyên nhân thất bại như:

- Dự án không có tính thực tế và sản phẩm không khớp với yêu cầu khách hàng

- Dự án không hoàn thành đúng hạn dẫn đến sự không hài lòng của khách hàng làm cho khách hàng có thể kết thúc dự án

- Chi phí dự án bị vượt quá dự toán

- Khi lập kế hoạch người có thẩm quyền đã ước tính không chính xác nguồn lực cần thiết cho dự án

- Xác định yêu cầu hệ thống không đúng

- Báo cáo tình trạng dự án sơ sài

- Dự án không thực hiện quản lý độ rủi ro

- Việc giao tiếp khách hàng, người sử dụng và người phát triển dự án không tốt dẫn tới hiểu sai yêu cầu khách hàng

- Dự án sử dụng công nghệ lạc hậu

- Không có khả năng xử lý độ phức tạp của dự án

- Phát triển thực hành không có hệ thống

- Thiếu kinh nghiệm trong việc quản lý dự án

- Các bên liên quan mang tính chính trị

- Các áp lực mang tính thương mại

Nhìn lại lịch sử về các dự án phần mềm, trong giai đoạn từ những năm 1970 và những năm 1980 ngành công nghiệp phần mềm phát triển như vũ bão,do sản xuất phần mềm giai đoạn này dễ hơn và giá thành rẻ hơn so với sản xuất phần cứng vì vậy ngành công nghiệp sản xuất phần mềm nhanh chóng phát triển trong giai đoạn từ thập niên 1970 đến thập niên 1980 Các công ty cũng đã ứng dụng các phương thức quản lý phần mềm, trong giai đoạn này các phương pháp quản lý phần mềm được đưa ra sử dụng luôn, chưa qua quá trình kiểm thử thực tế nên hiệu quả không được tốt, đặc biệt là sự không khớp giữa đặc tả người dùng và phần mềm được chuyển giao cho khách hàng,

Trang 17

dẫn đến một loạt các nguyên nhân thất bại của dự án phần mêm kể trên Để tránh các vấn đề trên, các phương thức quản lý dự án phần mềm tập trung vào làm rõ các yêu cầu người dùng theo mô hình hình thác nước

Hiện này phần mềm máy tính đã được ứng dụng rộng khắp vào hầu như tất cả các hoạt động sản xuất, trong mọi ngành kinh tế, xã hội Do vậy các phần mềm hiện đại ngày nay nảy sinh nhiều vấn đề mới mà các nhà quản lý cần phải quan tâm, hoạch định để giải quyết các vấn đề này Các vấn đề của phần mềm bao gồm:

- Chi phí liên quan đến phần mềm ngày càng tăng.Do phần mềm ngày càng phức tạp và khó, với những phần mềm phức tạp và khó đòi hỏi người quản trị phải có

kỹ năng nhất định để đảm bảo dự án phần mềm, và những người trong đội phát triển cũng phải có kỹ năng ở mức độ cho phép để tham gia dự án Đó là một trong những nguyên nhân dẫn đến chi phí liên quan ngày càng tăng

- Các yêu cầu của khách hàng thì càng ngày càng nhiều Do phần mềm càng ngày càng phức tạp, dẫn đến tính năng phần mềm nhiều và phức tạp

- Quy mô, độ phức tạp ngày càng lớn

- Yêu cầu hiệu năng phần mềm ngày càng tăng theo sự tăng trưởng của phần cứng và nhu cầu người dùng

- Phần mềm ngày càng lớn, nhiều người tham gia thực hiện, vấn đề truyền thông, quản lý ngày càng quan trọng (một ví dụ là hệ điều hành Window2000 cần đến 5.000 người tham gia)

Với những vấn đề nổi cộm ở trên ta thấy việc cấp thiết phải có những phương pháp để quản lý các dự án phần mềm hiệu quả Ngày nay trên thế giới các nhà hoạch định chiến lược, các công ty lớn, các nhà nghiên cứu trong các viện, các trường đại học đã tập chung nghiên cứu tìm tòi, cải tiến các phương pháp, quy trình, cải tiến công cụ quản lý dự án phần mềm Nhờ áp dùng các kết quả nghiên cứu, công cụ mới mà đã từng bước giải quyết được các vấn đề khó khăn trên của dự án phần mềm

1.1.2 Thế nào là quản trị dự án

Quản lý dự án là việc áp dụng kiến thức, phương pháp, kỹ thuật, công cụ và tổ chức các hoạt động nhằm tạo ra sản phẩm đáp ứng yêu cầu đã cho Hoạt động quản lý dự án phần mềm bao gồm: lập kế hoạch, triển khai, theo dõi, giám sát, đánh giá và điều chỉnh Vòng đời chuẩn của quản lý dự án gồm 4 pha sau:

Khởi tạo dự án

Xác định

dự án

Lập kế hoạch

Đóng

dự án Thực

hiện

Trang 18

Hình 1.1 Vòng đời chuẩn của quản lý dự án

- Giai đoạn xác định dự án: Giai đoạn này bắt đầu với công bố dự án cho đến

khi các tài liệu dự án được các bên tham gia thông qua Kết quả của giai đoạn này là một hoặc nhiều dự án được chọn, các tài liệu thông tin dự án được hoàn thành và làm cơ sở để triển khai hoặc mời thầu dự án (với các dự án lớn)

- Lập kế hoạch: Tạo các kế hoạch dự án, trong giai đoạn này có thể thay đổi tài

liệu dự án ở bước xác định dự án nếu như phù hợp và được các bên thông qua

- Thực hiện: Triển khai các kế hoạch dự án đã thông qua Giai đoạn này dựa vào

kết quả ở bước Lập kế hoạch, bộ phận quản trị tiến hành lập lịch biểu chi tiết

các kế hoạch và tiến hành thực hiện các công việc, giám sát các công việc thực hiện đúng tiến độ đã đề ra Việc lập lịch biểu có thể làm tự động bằng chương trình máy tính, có thể dùng giải thuật di truyền để tìm ra phương án lập lịch tối

ưu

- Đóng dự án: Công việc tiến hành bao gồm: chuyển dự án sang khâu bảo trì,

tiến hành các thủ tục kết thúc với khách hàng, đánh giá, rút kinh nghiệm về dự

án, tiền hành lưu trữ tài liệu phục vụ cho dự án tiếp theo

Quản lý dự án tập chung vào các nội dung: Quản lý công việc, quản lý tiến độ, quản lý tài chính, quản lý nhân lực, quản lý nguồn lực, quản lý chất lượng Việc quản lý dự án

sẽ gặp phải nhiều thách thức như thách thức nhân lực, công việc, ước lượng, tổ chức, quản lý và kiểm soát

- Nhân lực:Thách thức từ khâutuyển chọn(từ đâu? kỹ năng cần có là gì?), đến

khâu sử dụng (vào đâu? công việc gì?) Vàkhi dự án kết thúc, không cần dùng tới thì phải sắp xếp nhân lực hợp lý

- Công việc và ước lượng: Khi ước lượng công việc người quản trị cần phải xác

định đủ việc, ước lượng đúng khối lượng, chi phí nguồn lực, thời gian cần thiết

để hoàn thành công việc

- Tổ chức và quản lý: Tùy theo tổ chức hiện có và mục tiêu cần đạt được của dự

án phần mềm mà tiến hành tổ chức bộ phận quản lý dự án phần mềm hợp lý Các cách tổ chức này là tạm thời, tồn tại cho đến khi dự án kết thúc Ứng với một dự án mà thành viên tham gia sẽ được xác lập một thẩm quyền nhất định,

và mối quan hệ giữa các thành viên cũng thay đổi theo từng dự án

- Kiểm soát: Do công việc có nhiều thay đổi, ví dụ như thay đổi về nhân lực, thay

đổi do yêu cầu khách hàng,nên kế hoạch công việc và việc thực hiện kế hoạch này không ổn định, luôn thay đổi Người quản trị cần nắm thông tin kịp thời và điều chỉnh cho phù hợp với yêu cầu thực tế, cần phải ra quyết định chính xác, phù hợp và đạt đồng thuận cao trong nhóm

Trang 19

- Việc quản lý qua các thể hiện, không nhìn thấy trực tiếp:Các thể hiện ở đây là

tài liệu và chương trình, chúng rất đa dạng và thiếu thước đo, các dự án phần mềm khác nhau lại dùng các chuẩn khác nhau, việc áp dụng chuẩn tài liệu rất vất vả và mất nhiều công sức

- Thách thức chất lượng: Chất lượng phần mềm phụ thuộc vào rất nhiều yếu tố

như: quy trình có phù hợp với thực tế hay không và có mang lại hiệu quả không Công nghệ và công cụ có phù hợp với sản phẩm và môi trường hay không Kiểm soát thay đổi, các thay đổi có được kiểm soát thường xuyên hay không và phải đảm bảo rằng các thay đổi phải được thực thi nghiêm túc tránh việc bỏ sót

- Khống chế rủi ro:Rủi ro là các sự kiện khiến dự án thất bại, ví dụ: chi phí quá

cao, thời gian quá dài, tính năng quá kém Rủi ro trong phần mềm có rất nhiều

và hay xảy ra, do vậy việc khống chế rủi ro phải được quan tâm, đảm bảo được rằng phải biết được các rủi ro và lập kế hoạch phòng chống cụ thể Nhiệm vụ của người quản lý dự án trong việc khống chế rủi ro bao gồm: phải xác định, dự đoán được rủi ro, phân tích rủi ro (khả năng và thiệt hại), đưa ra giải pháp để khống chế rủi ro (quản lý rủi ro), giám sát (theo dõi sự xuất hiện, tác động của rủi ro) và thực hiện các biện pháp quản lý

Quản lý dự án phần mềm là việc quản lý toàn diện các mặt của hoạt động trên dự án phần mềm để đảm bảo sản xuất ra phần mềm đúng chất lượng và yêu cầu của khách hàng Các hoạt động quản lý gồm mục tiêu thực hiện và chi tiết nội dung được liệt kê trong bảng dưới đây:

Bảng 1.1 Các hoạt động của quản lý dự án

STT Hoạt động Mục tiêu Nội dung

- Kiểm soát thay đổi

2 Quản lý thời gian Đảm bảo hoàn thành hạng mục

công việc trong thời hạn dự kiến

-Xác định thời gian hoàn thành công việc

- Xác định trình tự thực hiện

- Lập lịch thực hiện -Kiểm soát thực hiện theo lịch

3 Quản lý chi phí Đảm bảo huy động, sử dụng

ngân sách đáp ứng yêu cầu

- Lập kế hoạch huy động ngân sách

-Ước tính chi phí

- Phân phối ngân sách

- Kiểm soát chi tiêu

Trang 20

- Kiểm định chuẩn cho mỗi sản phẩm

- Quản lý thay đổi chất lượng

5 Quản lý nhân lực Tìm và sử dụng người tham gia

- Xác định nhu cầu trợ giúp

- Lập kế hoạch mua sắm, trang

bị -Tìm nhà cung cấp và đặt hàng

- Quản lý hợp đồng mua sắm

- Tổ chức việc cung cấp trợ giúp

7 Quản lý thông tin

8 Quản lý rủi ro Đảm bảo ngăn ngừa và hạn chế

thiệt hại do sự cố xảy ra

- Xây dựng triển khai quy trình

- Giám sát thực hiện quy trình

và lưu trữ cấu hình, phiên bản

Ngoài các hoạt động từng mặt người quản trị dự án cần quản lý chung để phối hợp các quản lý cụ thể để đảm bảo dự án được thực hiện tốt nhất Trong các hoạt động trên thì hai hoạt động: Quản lý rủi ro và quản lý cấu hình là đặc thù riêng biệt của quản lý dự

án phần mềm Cònquản lý thời gian, quản lý chi phí, quản lý chất lượng là đặc biệt quan trọng của quản lý dự án phần mềm

Trong phạm vi đề tài này học viên quan tâm tìm hiểu kỹ về hoạt động Quản lý thời gian của dự án để tìm cách áp dụng kiến thức về giải thuật di truyền áp dụng vào các bước lập lịch dự án đảm bảo thời gian thực hiện toàn bộ dự án là tối ưu nhất Hoạt động quản lý thời gian nhằm mục đích đảm bảo hoàn thành các hạng mục công việc

Trang 21

của dự án đúng tiên độ đã đề ra Để quản lý thời gian tốt người quản trị cần phải xác định thời gian hoàn thành từng công việc, sau đó tiến hành xác định trình tự thực hiện các công việc sao cho tối ưu nhất, tiếp theo người quản trị lập lịch biểu thực hiện các công việc này, sau khi có lịch biểu thực hiện công việc thì tiến hành kiểm soát thực hiện sát sao theo đúng kế hoạch lịch biểu đã đề ra để đảm bảo toàn bộ dự án được thực hiện theo đúng thời gian đã định

1.2 Vấn đề lập kế hoạch, lập lịch trong quản trị dự án phần mềm

Trong quản lý dự án vấn đề lập kế hoạch và lập lịch dự án là rất quan trọng.Kế hoạch tốt giúp các khâu tiếp theo làthực hiện và đóng dự án dễ dàng hơn Việc lập lịch có thể

sẽ phải chỉnh sửa lại nhiều lần tại các thời điểm khác nhau của dự án, việc điều chỉnh này do sự thay đổi các nhân tố như thay đổi về nguồn lực thực hiện dự án (nhân viên

ốm, nhân viên nghỉ việc…), do các thay đổi từ phía khách hàng như khách hàng yêu cầu thay đổi tính năng sản phẩm Nếu như áp dụng đươc các thuât toán vào khâu lập

kế hoạch, lập lịch nhằm tự động hóa được việc lập kế hoạch sẽ giảm bớt được sự sai sót và tăng hiệu quả của việc lập kế hoạch

1.2.1 Khái niệm về lập kế hoạch

Kế hoạch là bản dự kiến công việc cần làm (cái gì?), thứ tự thực hiện(tiến trình?), thời gian(khi nào? bao lâu?), phương tiện dùng (cái gì? bao nhiêu?), người làm (ai?), sản phẩm ra (cái gì?) và tiêu chí đánh giá (chất lượng?)

Kế hoạch là công việc lặp đi lặp lại suốt quá trình dự án.Có rất nhiều kế hoạch cần lập

để quản trị dự án Kế hoạch là công cụ chính để quản trị dự án

1.2.2 Tự động hóa việc lập lịch

Khi lập kế hoạch bộ phận chịu trách nhiệm lập kế hoạch cần phải quan tâm đến các nguồn lực phục vụ cho dự án để lập kế hoạch được chi tiết và bám sát thực tế Các nguồn lực phục vụ dự án bao gồm:

- Con người: Lànhân tố hàng đầu quan trọng nhất quyết định đến kế hoạch cũng như chất lượng của dự án Với mỗi loại dự án khác nhau con người tham gia dự

án cần phải có năng lực phù hợp

- Các phần mềm dùng lại được: Thành phần đóng gói dùng được ngay vào công việc làm dự án, các thành phần đã kiểm nghiệm tốt, có thể sửa và dùng lại được

- Phần cứng, công cụ phần mềm chia sẻ

Khi lập kế hoạch người quản trị dự án phải đưa ra được các kế hoạch phục vụ cho dự

án, đó là kế hoạch công việc, kế hoạch quản lý rủi ro, kế hoạch chất lượng, kế hoạch quản lý cấu hình, kế hoạch ngân sách, kế hoạch nguồn lực Trong các kế hoạch này kế hoạch công việc là khá quan trọng Trong phạm vi luận văn này học viên quan tâm tìm

Trang 22

hiểu kỹ về kế hoạch công việc và tiến hành áp dụng giải thuật di truyền trên kế hoạch công việc để ra được kết quả lập lịch thực hiện công việc

Bảng 1.2 Các kế hoạch của dự án

Kế hoạch công việc Mô tả công việc và lịch biểu thực hiện

cho sản phẩm dự án

Kế hoạch quản lý rủi ro Xác định các rủi ro và các giải pháp

Kế hoạch chất lượng Mô tả thủ tục và các chuẩn chất lượng

được áp dụng

Kế hoạch quản lý cấu hình Mô tả cấu hình, thủ tục và tiến trình quản

lý cấu hình và sự thay đổi

Kế hoạch ngân sách Chỉ ra lượng ngân sách cần theo thời gian

- Bước 1: Phải xây dựng được bảng phân rã công việc (work breakdown

structure) Đây là công việc mà đội dự án và người quản trị phải xác định nhiệm

vụ (gói công việc) cần thực hiện để tạo ra các sản phẩm

- Bước 2: Phải xác định được các mối quan hệ giữa các công việc: đặt các gói

công việc theo tiến trình có trình tự trước-sau, công việc nào là công việc trực tiếp phía trước, công việc nào trực tiếp phía sau

- Bước 3: Ước lượng các gói công việc: mỗi gói công việc cần ước lượng ngày

công lao động (tốn bao nhiêu thời gian để làm) số lượng nhân lực và vật lực(theo từng loại) cần tham gia để hoàn thành các gói công việc này

- Bước 4: Xây dựng lịch biểu ban đầu: tính toán thời gian thực hiện dự án, thời

gian bắt đầu sớm nhất và thời gian kết thúc muộn nhất của từng công việc

- Bước 5: Gán nguồn lực thực hiện, điều chỉnh lịch Sau khi gán nguồn lực, cần

chính xác hóa lịch biểu khi tính đến các ràng buộc nguồn lực Các nhiệm vụ được lập lịch sao cho tối ưu hóa việc sử dụng lao động và các nguồn lực khác Trong phạm vi nghiên cứu áp dụng giải thuật di truyền vào quản lý dự án phần mềm, học viên thấy tại bước 4 và 5 của quá trình lập lịch, lập kế hoạch công việc có thể tiến hành tự động Việc áp dụng lập lịch tự động từ các dữ liệu đầu vào bao gồm: bảng dữ liệu phân rã công việc, bảng dữ liệu ước lượng các gói công việc trong bảng phân rã

Trang 23

công việc, bảng dữ liệu nguồn lực hiện có trong dự án, tiến hành áp dụng giải thuật di truyền để tự động lập lịch biểu dựa trên các dự liệu đâu vào, tự động gán nguồn lực thực hiện công việc và tìm ra một kết quả tối ưu nhất hoặc kết quả chấp nhận được Việc áp dụng giải thuật này được học viên trình bày kỹ lưỡng trong các trang tiếp theo của luận văn, các kết quả dữ liệu test trên bộ dữ liệu tự sinh cũng được học viên trình bày để thấy được việc áp dụng giải thuật khiến khâu lập lịch này là hợp lý và là một hướng nghiên cứu đúng đắn

Trang 24

Chương 2 GIảI THUậT DI TRUYềN VÀ CÁC ứNG DụNG

2.1 Tổng quanvề giải thuật di truyền

Giải thuật di truyền là một kỹ thuật của khoa học máy tính nhằm tìm kiếm giải pháp thích hợp cho các bài toán tối ưu tổ hợp (combinatorial optimization) Giải thuật di truyền là một phân ngành của giải thuật tiến hóa vận dụng các nguyên lý của tiến hóa như di truyền, đột biến, chọn lọc tự nhiênvà trao đổi chéo[11].Ngày nay, giải thuật di truyền được dùng phổ biến trong một số ngành như tin sinh học, khoa học máy tính, trí tuệ nhân tạo, tài chính và một số ngành khác

Giải thuật di truyền được lấy cảm hứng từ thuyết tiến hóa của giới tự nhiên do nhà bác học Darwin xây dựng.Nguyên lý sinh học khởi nguồn của tư tưởng lập trình tiến hóa như sau:Trong tất cả cá thể sống đều chứa các tế bào Mỗi mội tế bào đều chứa cùng tập hợp bộ nhiễm sắc thể giống nhau Nhiễm sắc thể chứa các chuỗi DNA Các chuỗi DNA được nhóm lại thành các khối (block) hay còn gọi là gen, mỗi một gen này là một Protein Hay có thể nói mỗi một gen này biểu diễn một đặc điểm của sinh vật, ví

dụ như đặc điểm của màu mắt (nâu, đen, xanh, vàng), đặc điểm của màu tóc(đen, bạch kim, nâu, vàng), kiểu tóc (thẳng, xoăn…) Các Gen tương ứng là các Gen có cùng một đặc tính với giá trị khác nhau, hoặc giống nhau Ví dụ Gen quy định màu tóc vàng ở cá thể A tương ứng với Gen quy định tóc đen ở cá thể B.Tập hợp toàn bộcác nguyên liệu

di truyền học (tất cả các nhiễm sắc thể) được gọi là bộ di truyền Kiểu Gen là tập hợp con các gen trong bộ các nguyên liệu di truyền Kiểu gen này sẽ quy định đặc tính cơ thể (thể xác) và tinh thần của cá thể sống như màu mắt, mức độ thông minh

Sự sinh sản: Trong quá trình sinh sản sự tổ hợp (trao đổi chéo) Gen từ các cá thể cha

mẹ sẽ được chuyển cho thế hệ sau Quá trình tạo mới cá thể con cháu có thể là đột biến Đột biến xảy ra khi các thành phần DNA có một chút thay đổi, nguyên nhân chính của quá trình đột biến thường là lỗi trong quá trình sao chép các Gen từ các cá thể cha-mẹ Sự phù hợp của một cá thể (fitness) được đánh giá bằng sự thành công của

cá thể đó trong môi trường sống

Giải thuật di truyền được ứng dụng để giải quyết các bài toán NP-Problem NP-hard: Non-deterministic polynomial time hard Các bài toán dạng này bao gồm:

Trang 25

- Planning: Lập kế hoạch

- Rosters or schedules

- Tutoring systems: Hệ thống giám sát

- Decision support: Hỗ trợ quyết định

cá thể nào không thích nghi với môi trường sẽ bị đào thải Sự thay đổi của môi trường

sẽ tác động đến quá trình tiến hóa và bản thân quá trình tiến hóa cũng có tác động và làm thay đổi môi trường Cá thể mới sinh ra trong quá trình tiến hóa nhờ vào sự lai ghép ở thế hệ cha-mẹ Một cá thể mới có thể mang những đặc tính của cha-mẹ ở thế hệ trước (di truyền) hoặc mang những đặc tính mới hoàn toàn (đột biến) Di truyền và đột biến là hai cơ chế quan trọng như nhau trong quá trình tiến hóa mặc dù xác suất để xảy

ra hiện tượng đột biến nhỏ nhiều so với hiện tượng di truyền” [1] Mặc dù cơ chế là ngẫu nhiên nhưng thuật toán di truyền không phải là một thuật toán ngẫu nhiên Thuật toán khai thác và tận dụng được một cách hiệu quả thông tin quá khứ để có được những kết quả mới đạt kết quả như mong muốn Các cải tiến trong việc sử dụng thuật toán di truyền đã làm tăng thêm hiệu quả của việc sử dụng thuật toán trong các bài toán phức tạp Điều này thể hiện ở việc giảm thời gian tính toán ngày càng hiệu quả

mà ta sẽ tìm hiểu cụ thể hơn ở dưới đây

"Evolution strategies" (Evolutionsstrategie in original) Sau đó các nhà nghiên cứu khác tiếp tục phát triển ý tưởng này của ông Năm 1971 ông làm luận án tiến sỹ về evolution strategies và năm 1973 ông xuất bản thành sách

Trong những năm 1970 Jonh Holland có những ảnh hưởng rất lớn trong quá trình phát triển của giải thuật di truyền Giải thuật di truyền (GA) được Holland phát minh và sau

Trang 26

đó ông cùng các sinh viên và cộng sự của mình phát triển tiếp Các kết quả này được giới thiệu trong cuốn sách "Adaption in Natural and Artificial Systems" xuất bản vào năm 1975 của ông

Vào năm 1992, John Koza đã sử dụng giải thuật di truyền để thực hiện một vài nhiệm

vụ trong chương trình tiến hóa Ông đã gọi phương pháp này là Lập trình tiến hóa ("genetic programming" (GP))[7]

2.3 Các bước áp dụng giải thuật di truyền

2.3.1 Mã hóa dữ liệu

Hay còn gọi là biểu diễn di truyền cho lời giải của bài toán: Đây là bước đầu tiên và rất quan trọng đối với việc tìm ra lời giải của bài toán Mỗi lời giải của bài toán được biểu diễn dưới dạng một chuỗi ký tự hữu hạn hay còn được gọi là một nhiễm sắc thể Các

ký tự có thể là số nhị phân, số thập phân, … tùy vào từng bài toán cụ thể Trong quá trình này, việc mã hóa cái gì, mã hóa như thế nào, trật tự các thành phần trong nhiễm sắc thể ra sao,… luôn là những thách thức cho những người giải bài toán

Nhiễm sắc thể 1 1101100100110110 Nhiễm sắc thể 2 1101111000011110

Hình 2.1 Ví dụ về mã hóa nhiễm sắc thể

Có các dạng mã hóa dữ liệu như sau:

- Mã hóa nhị phân (Binary encoding): Mã hóa này là dạng mã hóa thông dụng nhất Các chương trình GA đầu tiên sử dụng kiểu mã hóa này.Các nhiễm sắc thể được biểu diễn bằng chuỗi các bit dữ liệu bao gồm 0 và 1

Nhiễm sắc thể A 101100101100101011100101 Nhiễm sắc thể B 111111100000110000011111

Hình 2.2Ví dụ về mã hóa nhị phân

Mã hóa nhị phân được dùng trong bài toán xếp ba lô.Bài toán xếp ba lô (một số sách ghi là bài toán cái túi) là một bài toán tối ưu hóa tổ hợp Bài toán được đặt tên từ vấn đề chọn những gì quan trọng có thể nhét vừa vào trong một cái túi (với giới hạn khối lượng) để mang theo trong một chuyến đi Các bài toán tương tự thường xuất hiện trong kinh doanh, toán tổ hợp, lý thuyết độ phức tạp tính toán, mật mã học và toán ứng dụng

- Mã hóa hoán vị (Permutation encoding): Mã hóa này được sử dụng trong các bài toán xắp xếp, ví dụ các bài toán người giao hàng (travelling salesman), bài toán xắp xếp các nhiệm vụ Ở mã hóa này các nhiễm sắc thể là chuỗi các số liên tiếp nhau Kiểu mã hóa này được học viên quan tâm và nghiên cứu kỹ lưỡng vì

nó phù hợp với bài toán lập lịch Ở bài toàn lập lịch ta sẽ hoán đổi vị trí thực

Trang 27

hiện các công việc để tìm ra được cách hoán đổi tối ưu nhất, tức là cách hoán đổi làm cho thời gian thực hiện công việc ít nhất

Nhiễm sắc thể A 1 5 3 2 6 4 7 9 8 Nhiễm sắc thể B 8 5 6 7 2 3 1 4 9

Hình 2.3Ví dụ về mã hóa hoán vị

- Mã hóa giá trị (value encoding):

Nhiễm sắc thể A 1.2324 5.3243 0.4556 2.3293 2.4545 Nhiễm sắc thể B ABDJEIFJDHDIERJFDLDFLFEGT Nhiễm sắc thể C (back), (back), (right), (forward), (left)

2.3.2 Khởi tạo quần thể

Xây dựng tập hợp nghiệm ban đầu (tập hợp các cá thể) có thể ngẫu nhiên hoặc không ngẫu nhiên Có nhiều cách để khởi tạo giá trị quần thể nghiệm ban đầu, tùy từng bài toán mà ta lựa chọn phương pháp phù hợp Thông thường, hệ nghiệm ban đầu được chọn ngẫu nhiên trong không gian tìm kiếm Tuy vậy, việc chọn này cũng cần phải xem xét về tương quan giữa độ thích nghi của các nhiễm sắc thể để tránh tình trạng nghiệm tìm ra là nghiệm tối ưu cục bộ hay còn gọi là cực trị địa phương Còn vấn đề

số lượng nghiệm của tập nghiệm hay qui mô của quần thể cũng cần được xem xét kỹ dựa vào độ phức tạp của bài toán, độ chính xác yêu cầu (cao hay thấp) và thời gian tính toán yêu cầu (nhanh hay chậm)

2.3.3 Xác định hàm thích nghi

Hay hàm lượng giá cho mỗi nhiễm sắc thể hay chính là cho các phương án nghiệm trong tập nghiệm Hàm này dùng để đánh giá độ thích nghi của các nhiễm sắc thể Hàm thích nghi cần phải đánh giá được mức độ thích nghi cho tất cả các nghiệm khả

Trang 28

thi và luôn được giả định là không âm để hiện độ thích nghi của các cá thể Công thức biểu diễn hàm cần phải thể hiện được tất cả các đặc tính mong muốn của nhiễm sắc thể, thông qua đó có thể chọn lọc được các quần thể nghiệm tốt nhất cho bài toán

2.3.4 Quá trình lai ghép

Đây là quá trình nhiễm sắc thể mới được hình thành dựa trên nhiễm sắc thể cha-mẹ bằng cách lai ghép một hay nhiều đoạn nhiễm sắc thể cha mẹ với nhau.Lai ghép có xét tới các đặc tính trội và lặn trong tự nhiên Các đặc tính này được quy định trước trong khi biểu diễn cấu trúc nhiễm sắc thể Bằng việc xem xét tới các đặc tính trội-lặn, quá trình sản sinh ra các "quần thể chất lượng tốt" sẽ nhanh hơn và do đó thời gian tính toán cũng được rút ngắn Phép lai ghép xảy ra với xác suất là p1 có thể được mô phỏng như sau:

- Chọn hai (hay nhiều) cá thể bất kỳ trong quần thể Quần thể ở đây bao gồm các nhiễm sắc thể (cha-mẹ) có độ dài bằng nhau

- Chọn điểm lai là một điểm có vị trí bất kỳ (như nhau) trên nhiễm sắc thể

cha-mẹ và thực hiện hoán đổi các đoạn gen của nhiễm sắc thể cha-cha-mẹ tại điểm lai này

- Đưa hai cá thể này vào quần thể để thực hiện vào các quá trình tiến hóa tiếp theo

Hình 2.7Lai ghép giữa hai cá thể

Trang 29

Trong quá trình tồn tại và phát triển, thuật toán di truyền đã được bổ sung rất nhiều các phương pháp lai ghép để nhằm thích ứng với nhiều kiểu bài toán và cũng là để tăng hiệu quả của thuật toán Có thể kể một số phép lai cải tiến như sau:

- Lai ghép từng phần: Việc giữ lại những đoạn mã đã "tối ưu" trong nhiễm sắc thể cũng là một cách để quá trình lai ghép trở nên hiệu quả hơn

- Lai ghép có trật tự

- Lai ghép dựa trên vị trí

- Lai ghép chu trình

- Lai ghép thứ tự tuyến tính

- Lai ghép đa điểm: Với phương pháp này, chúng ta có thể cho 2 cá thể lai ghép ở

2 hay nhiều điểm lai ghép Phương thức này làm cho thuật toán trở nên linh hoạt hơn, nhờ đó các thế hệ cá thể con cũng sẽ có chất lượng tốt hơn

2.3.5 Quá trình đột biến

Là quá trình cá thể con mang một hay một số tính trạng không có trong mã di truyền của cha-mẹ Quá trình này xảy ra với xác suất p2 (nhỏ hơn nhiều so với p1) có thể được

mô tả như sau:

- Chọn ngẫu nhiên một cá thể bất kỳ trong quần thể

- Chọn một gen bất kỳ của cá thể vừa chọn

- Thay đổi giá trị gen đó (đối với cách mã hóa gen theo số nhị phân thì quá trình thay đổi giá trị là đổi giá trị từ 0 thành 1 hoặc từ 1 thành 0) rồi trả về quần thể

để thực hiện các quá trình tiếp theo

Nhiễm sắc thể trước đột biến:

0 1 1 1 0 1 0 0 0 1 1 0 0

Điểm tạo đột biến

Nhiễm sắc thể sau đột biến:

0 1 1 0 0 1 0 0 0 1 1 0 0

Hình 2.8Đột biến một nhiễm sắc thể

Trang 30

Nhiễm sắc thể gốc 1 1101111000011110

Nhiễm sắc thể gốc 2 1101100100110110 Đột biến nhiễm sắc thể 1 1100111000011110 Đột biến nhiễm sắc thể 2 1101101100110110

Hình 2.9Đột biến một nhiễm sắc thể tại một điểm và hai điểm

Tương tự như quá trình lai ghép, trong quá trình phát triển của thuật toán di truyền cũng đã được bổ sung rất nhiều cách thức để thực hiện quá trình gây đột biến ngày càng hiệu quả hơn:

- Đột biến đảo ngược (Inversion Mutation)

- Đột biến chèn (Insertion Mutation)

- Đột biến thay thế (Raplacement Mutation)

- Đột biến tương hỗ (Reciprocal Exchange Mutation)

- Đột biến dịch chuyển (Shift Mutation)

2.3.6 Quá trình chọn lọc

Quá trình mà các cá thể mới sinh ra được giữ lại hay bị loại bỏ khỏi quần thể dựa vào

độ thích nghi của chúng Độ thích nghi ở đây thường là một hàm gán một giá trị thực cho các cá thể trong quần thể Đối với quá trình này có rất nhiều cách để xác định trình

tự tính toán và thực hiện tùy vào cách lựa chọn độ thích nghi của cá thể nói riêng và của cả quần thể nói chung Có các kiểu chọn lọc sau:

- Roulette wheel selection: Thế hệ cha mẹ được chọn lựa sang thế hệ tiếp theo dựa vào giá trị fitness của chúng.Với kiểu chọn này nhiễm sắc thể nào có giá trị finess lớn sẽ được chọn nhiều lần Thuật toán như sau:

o Bước 1: Tính tổng S các giá trị fitness của toán bộ cá thể trong quần thể

o Bước 2: Chọn một số ngẫu nhiên từ 0 đến s, giả sử là số r

o Bước 3: Duyệt quần thể từ cá thể số 0 đến s, tính tổng fitness từ 0 đến s, khi mà s >= r thì dừng lại và chọn cá thể s

o Lặp lại quá trình trên cho đến khi chọn xong quần thể mới

- Rank selection: Với kiểu lựa chọn Roulette wheel selection thì có một vấn đề xảy ra lànếu như giá trị fitness giữa các cá thể quá khác biệt nhau, số lượng cá thể yếu sẽ ít được chọn, cá thể fitness lớn có thể sẽ chiếm gần như toàn bộ quần thể ở thế hệ tiếp theo, ảnh hưởng đến tính đa dạng cá thể trong quần thể Kiểu chọn Rank selection sẽ khắc phục được điểm yếu của kiểu lựa chọn trên Đầu tiên sẽ đánh giá quần thể và mọi cá thể sẽ nhận được giá trị fitness từ sự đánh giá này Cá thể tồi nhất có fitness là 1, rồi là 2,… tốt nhất là N (số lượng cá thể trong quần thể) Tất cả các cá thể sẽ được chọn ngẫu nhiên sang thế hệ tiếp

Trang 31

theo Nhưng kiểu lựa chọn này gần như có độ hội tụ kém nhất bởi vì cá thể tốt nhất khá khác biệt với cá cá thể khác

- Elitism: Khi tạo quần thể mới bằng phương pháp lai tạo và đột biến, có thể chúng ta sẽ làm mất đi cá thể tốt nhất, để giải quyết vấn đề này phương pháp chọn lọc Elitism được sinh ra, Phương pháp này đâu tiên sẽ sao chép cá thể tốt nhất ( hay một vài cá thể tốt nhất) sang thế hệ tiếp theo Áp dụng phương pháp này sẽ nhanh chóng tìm ra nghiệm (tăng tốc độ của thuật toán)

2.4 Các tham số của giải thuật di truyền

Các tham số của giải thuật di truyền như sau:

- Kích cỡ hệ nghiệm (pop-size): Số lượng cá thể phù hợp trong mỗi thế hệ

- Xác suất lai tạo (pc): Xác suất để mỗi cá thể trong quần thể được tham gia quá trình lai ghép

- Xác suất đột biến (pm): Xác suất để mỗi bit trong nhiễm sắc thể bị đột biến

- Xác suất sinh ngẫu nhiên một số cá thể mới và truyền vào thế hệ kế tiếp

Thông thường, kích cỡ của quần thể phụ thuộc vào độ phức tạp của bài toán Bài toán càng phức tạp, nhiều ràng buộc-đơn hoặc đa mục tiêu- thì số lượng cá thể trong mỗi thế hệ càng phải lớn Hai thông số xác suất trong quá trình di truyền có khoảng giá trị rất khác nhau Đối với xác suất lai tạo, giá trị thường rơi trong khoảng 0,5-0,95 nhưng giá trị thông thường của xác suất đột biến thấp hơn nhiều, chỉ ở khoảng 0,001-0,05 Điều này cũng phản ánh đúng xác suất xảy ra hai quá trình trong thực tế

Từ một ví dụ trên đây có thể tính được một số ưu điểm của thuật toán di truyền như phương pháp này tìm từ một quần thể các điểm chứ không phải một điểm Điều này làm cho việc giải các bài toán đa mục tiêu hay việc tìm một tập hợp các phương án lân cận nghiệm trở nên dễ dàng Thêm vào đó, việc đánh giá thông tin bằng hàm mục tiêu chứ không dùng đạo hàm hay các tri thức bổ sung cũng là một ưu điểm của thuật toán

Trang 32

2.5 Thuật toán giải thuật di truyền

Giải thuật di truyền được mô hình hóa theo các bước giống như lưu đồ dưới đây

Hình 2.10Sơ đồ quá trình tính toán của thuật toán di truyền Trong lưu đồ trên các bước được thực hiện lần lượt như sau:

Bước 1: Khởi tạo/lựa chọn các thông số cho quá trình tính toán Bước này người lập

trình tính toán phải lựa chọn các thông số như: Số lượng cá thể trong quần thể, cách thức hóa bài toán cần tính toán dưới dạng các nhiễm sắc thể (độ dài của nhiễm sắc thể, kiểu số biểu diễn dữ liệu,…), số thế hệ tính toán, xác suất lai ghép, xác suất đột biến, hàm thích nghi,…

Khởi tạo, lựa chọn các thông số giải thuật di truyền

Khởi tạo ngẫu nhiên các cá thể cho quần thể ban đầu

Đánh giá các cá thể bằng hàm thích nghi

Thực hiện các phép toán di truyền: đột biến, lai tạo

chéo trên các cá thể để tạo ra các cá thể mới

Tạo quần thể kế tiếp bằng quá trình chọn lọc

Đánh giá quấn thểmới

Kết thúc lưu kết quả tính toán

Thỏa mãn

Không thỏa mãn

Trang 33

Bước 2: Khởi tạo quần thể ban đầu: xác định bằng phương pháp tạo số ngẫu nhiên để

tạo giá trị cho các nhiễm sắc thể cho quần thể ban đầu Tùy vào cách biểu diễn của các nhiễm sắc thể mà ta chọn phương pháp tạo số ngẫu nhiên phù hợp

Bước 3: Đánh giá các nhiễm sắc thể bằng hàm thích nghi đã xác định ở bước 1 Trong

bước này, ngoài việc đánh giá các nhiễm sắc thể riêng rẽ, chúng ta còn có thể đánh giá

độ thích nghi của một nhiễm sắc thể hay cả quần thể Nếu một nhóm hay cả quần thể

có độ thích nghi "trung bình" (theo tiêu chí của từng trường hợp của người lập trình) thấp thì có thể loại nhóm nhiễm sắc thể hay quần thể đó ra khỏi quá trình di truyền

Bước 4: Thực hiện quá trình di truyền thông qua các cơ chế lai ghép và đột biến Có

thể thực hiện lần lượt hai quá trình này hoặc thực hiện đồng thời theo các phương pháp

đã đề cập bên trên Trong quá trình thực hiện thuật toán di truyền, giai đoạn này là giai đoạn mà mỗi người có thể thực hiện theo những phương pháp rất khác nhau Giai đoạn này cũng là giai đoạn quyết định tới sự thành công của thuật toán Người thực hiện cũng có thể đưa ra những phương thức tiến hành lai ghép hay đột biến mới trong giai đoạn này Trong quá trình thực hiện, để có được một bộ các thông số lai ghép hay đột biến hiệu quả, người lập trình thường phải trải qua nhiều bước tính toán thử Khâu này phụ thuộc nhiều vào kinh nghiệm và kỹ năng tính toán của người lập trình

Bước 5: Tạo quần thể mới bằng quá trình chọn lọc Quá trình này cũng dựa vào đánh

giá các nhiễm sắc thể thông qua hàm thích nghi Cá thể nào có độ thích nghi cao sẽ được giữ lại cho thế hệ kế tiếp Cũng giống như ở bước 3, chúng ta có thể sử dụng những hàm thích nghi phù hợp để đánh giá từng cá thể đơn lẻ hoặc cả một nhóm các

cá thể Sau quá trình này, nhóm cá thể nào thỏa mã tiêu chuẩn đánh giá với mức độ từ cao xuống thấp sẽ được đưa vào quần thể mới

Bước 6: Đánh giá quần thể vừa có được trong bước 5 Thông thường có hai tiêu chí để

dừng quá trình di truyền tại bước này Thứ nhất, độ thích nghi của từng cá thể và cả quần thể thỏa mãn một điều kiện hội tụ đã được đặt ra ban đầu Các điều kiện hội tụ thể hiện mức độ chấp nhận được của kết quả tìm được Thứ hai, quần thể mới tạo thành là quần thể ở thế hệ thứ (N+1) với N là số thế hệ dự định tính toán đã giả thiết ban đầu Trong khi thực hiện các quá trình di truyền, những người tính toán có thể đưa

ra những tiêu chí riêng để dừng quá trình di truyền Các tiêu chí đưa ra góp phần quyết định tới thành công của thuật toán

Trang 34

Chương 3 ỨNG DụNG GIảI THUậT DI TRUYềN Để GIảI QUYếT

BÀI TOÁN LậP LịCH TRONG QUảN LÝ Dự ÁN PHầN MềM

3.1 Phát biểu bài toán

Bài toán lập lịch với các điều kiện ràng buộc tài nguyên được phát biểu như sau: Dữ liệu đầu vào bài toán là tập hợp các công việc, tập hợp tài nguyên và bảng đánh giá hiệu suất thực hiện công việc với các tài nguyên tương ứng (con người, máy móc, ).Giả sử số lượng tài nguyên thực hiện dự án là có hạn Các công việc có quan hệ với nhau theo thứ tự thực hiện công việc, công việc nào cần thực hiện trước, công việc nào thực hiện sau (thứ tự này được chỉ định trong bảng phân rã công việc) Cần tìm ra một cách để gán các tài nguyên thực hiện các công việc sao cho tổng thời gian thực hiện dự

án là ngắn nhất

Dự án được lập kế hoạch, được phân tích chi tiết các đầu việc trong bảng phân rã công

việc Dự án được phân chia thành một tập hợp các công việc 1,end) Tập hợp công việc T chứa các công việc i với i thỏa mãn 0 <= i <= n-1 (n là số lượng công việc trong dự án) và hai công việc start và end.Hai công việc startvà

T=(start,0,1,2, ,n-endlà hai công việc giả dùng để biểu hiện công việc bắt đầu và công việc kết thúc, hai

công việc này không chiếm dụng tài nguyên và thời gian hoàn thành là 0.n là số lượng công việc trong dự án Các công việc trong tập T được đánh chỉ số từ 0 tới n-1

Các công việc có sự ràng buộc với nhau, khi kết thúc công việc i thì mớicó thể bắt đầu công việc j, loại ràng buộc này ký hiệu là FS (finish-start) Ngoài loại ràng buộc FS các công việc còn có các quan hệ ràng buộc FF (finish-finish) tức là công việc i và j kết thúc khi cả hai cùng kết thúc, ràng buộc SS(start-start) tức là công việc i và j cùng bắt đầu tại một thời điểm, ràng buộc SF(start-finish) tức là công việc i bắt đầu thì công việc j có thể kết thúc Để bài toán trở nên đơn giản ta giả định các công việc trong dự

án chỉ có một loại ràng buộc là FS(finish-start), việc giả định này không hề làm mất đi tính tổng quát của bài toán, nếu áp dụng cả 4 loại ràng buộc thì chỉ làm tăng độ phức tạp tính toán khi gán tài nguyên vào thực hiện công việc mà bản chất việc tính toán

này là giống nhau.Với mỗi một công việc jcó một tập hợp Predj mà các phần tử của nó

là các công việc phải kết thúc trước khi công việc j bắt đầu Các phần tử thuộc tập hợp

Predj được gọi là các công việc trực tiếp phải hoàn thành khi bắt đầu công việc j, phía trước công việc j này còn có thể có nhiều công việc cần hoàn thành khác Để bắt đầu

công việc j thì cần phải kết thúc các công việc trong tập Predj Với mọi j sao cho 0<= j

<=n thì tập Predjluôn khác rỗng Công việc i là công việc trước j nếu như tồn tại [6]

i0,i1,…,ik,ik+1 với i0=i, ik+1 = j,

Trang 35

ib 𝑃𝑟𝑒𝑑𝑖

𝑏 +1 , b=0,1,…k

Với mỗi một công việc sẽ có sự ràng buộc với các loại nguồn lực thực hiện công việc

đó Ứng với mỗi một công việc sẽ chiếm dụng một số loại tài nguyên, để hoàn thành công việc này thì các tài nguyên cần một thời gian t Trong bài toán này các tài nguyên thực hiện công việc trong dự án bị hạn chế về số lượng do vậy công việc i có thể đã tiến hành tại thời điểm t nhưng do tại thời điểm này không tập hợp đủ nguồn lực nên công việc i phải tiến hành muộn hơn thời điểm t

Khi tiến hành quản trị dự án, bộ phận quản trị sẽ phải đưa ra được bảng phân rã các công việc, thứ tự trước, sau của các công việc, công việc nào thực hiện trước, công việc nào thực hiện sau Và để thực hiện một công việc thì cần những loại nguồn lực nào, số lượng nguồn lực theo loại nguồn lực tương ứng là bao nhiêu Và chỉ định rõ để hoàn thành công việc này cần mất thời gian là bao lâu Tiếp theo cần xác định tổng các loại nguồn lực hiện có phục vụ cho dự án, phải xác định chi tiết số lượng nguồn lực ứng với loại nguồn lực là bao nhiêu Để vấn đề đơn giản ta giả sử trong cùng loại nguồn lực thì các nguồn lực đồng nhất với nhau về khả năng đáp ứng công việc

Sau khi có kết quả phân tích các công việc, nguồn lực thực hiện có thể tiến hành áp dụng giải thuật di truyền để tìm ra cách thức sắp xếp nguồn lực thực hiện các công việc trong dự án làm sao cho thời gian thực hiện dự án là thấp nhất Các bước áp dụng giải thuật di truyền như sau,ta định nghĩa Gene là số thứ tự của một công việc Gene

có giá trị từ 0 đến n-1 Số nguyên n là số lượng các công việc tương ứng trong bảng

phân rã công việc Dùng mã hóa tổ hợp để mã hóa dữ liệu một cá thể Mỗi cá thể có

nhiễm sắc thể là một mảng các số nguyên từ 0 đến n-1, các phần tử của mảng này có

giá trị khác nhau, không được trùng nhau Mỗi nhiễm sắc thể là mã hóa sự xắp xếp thứ

tự thực hiện các công việc trong dự án Thứ tự sắp xếp công việc này phải thỏa mãn trình tự thực hiện công việc trong bảng phân rã công việc

Khi lập kế hoạch cần xác định thời gian bắt đầu và kết thúc dự án Và chỉ định thời gian làm việc của dự án, trong bài nghiên cứu này ta chỉ định công việc làm theo giờ hành chính với tổng số thời gian là 8 tiếng một ngày Ngày làm việc từ thứ 2 đến thứ 6 hàng tuần Các ngày nghỉ cuối tuần: thứ 7, chủ nhật.Khi có các dữ liệu này ta sẽ xác định được tổng thời gian để hoàn thành từng công việc trong dự án, qua đó xác định

được tổng thời gian hoàn thành dự án Muốn hoàn thành công việc i cần phải tập hợp

đủ tài nguyên để thực hiện công việc i Nguồn lực thực hiện dự án là hạn chế nên thời gian bắt đầu làm công việc i có thể phải tiến hành chậm lại vì phải tập hợp đủ nguồn lực mới có thể bắt đầu công việc i,có thể các nguồn lực này vẫn đang thực hiện các công việc phía trước công việc i Ứng với một trình tự thực hiện các công việc ta sẽ có

tổng thời gian là khác nhau.Gọi T là tổng số giờ thực hiện dự án ta có giá trị hàm thích nghi là 1/T Giá trị hàm thích nghi càng lớn khi tổng thời gian thực hiện dự án càng

Trang 36

nhỏ Khi trình tự thực hiện công việc không thỏa mãn với thứ tự trước sau của công việc theo bảng phân rã công việc thì ta gán giá trị hàm thích nghi trong trường hợp này

là 0 Những cá thể có giá trị hàm thích nghi bằng 0 là cá thể tồi nhất sẽ được loại bỏ trong thế hệ tiếp theo

Để nhanh chóng tìm ra cá thể tốt nhất ta áp dụng thêm kỹ thuật tìm kiếm địa phương (local search) và giữ lại cá thể tốt sang thế hệ tiếp theo.Sau khi áp dụng các toán tử đột biến, lai tạo và chọn lọc ta sẽ được quần thể mới, tiếp tục áp dụng tìm kiếm địa phương trên quần thể này bằng cách chọn ra một cá thể ngẫu nhiên trong quần thể, sau

đó tiến hành đột biến cá thể này, quá trình đột biến sẽ dừng khi tìm được một cá thể mới có giá trị hàm thích nghi tốt hơn cá thể cũ hoặc số lần đột biến vượt quá n (n là nguyên dương cho trước), sau khi tìm được cá thể mới tốt hơn tiến hành thay thế cá thể cũ bằng cá thể mới này Việc áp dụng kỹ thuật tìm kiếm cục bộ tương ứng với việc tìm kiếm xung quanh cá thể được lựa chọn cá thể có độ thích nghi tốt hơn Còn kỹ thuật giữ lại phần tử tốt nhất của thế hệ trước sang thế hệ sau sẽ đảm bảo cá thể tốt nhất sẽ không bị mất đi Áp dụng hai kỹ thuật này sẽ giúp tìm ra cá thể tốt nhất nhanh hơn

Để hiểu rõ hơn bài toán có thể xem qua ví dụ đơn giản sau đây Xét tập hợp các công

việc gồm 8 công việc có mỗi quan hệ công việc trước sau như hình vẽHình 3.1 Ví dụ bảng phân rã gồm 8 công việc được đánh chỉ số từ 0 tới 7 trang 36

Hình 3.1 Ví dụ bảng phân rã gồm 8 công việc được đánh chỉ số từ 0 tới 7

Các công việc giả startvà endlà công việc giả, thời gian hoàn thành hai công việc này

là 0 Những công việc không có công việc trực tiếp phía trước thì sẽ có nối với công

việc giả startở sơ đồ trên chỉ có công việc có chỉ số 0 là không có công việc trực tiếp phía trước, công việc 0 được nối với công việc giả start bằng một mũi tên từ start tới

0 Những công việc không có công việc trực tiếp phía sau được nối với endở đây có

một công việc với chỉ số là 7 thỏa mãn Với đồ thị quan hệ công việc như trên thì có

Trang 37

rất nhiều cách thực hiện công việc theo thứ tự nhất định mà vẫn đảm bảo mối quan hệ trước sau của các công việc, ví dụ có thể thực hiện công việc theo thứ tự như sau mà vẫn đảm bảo thứ tự công việc trước sau của các công việc:

Cách 1:0 1 2 3 4 5 6 7 Cách 2:0 1 4 2 3 6 5 7 Cách 3:0 2 1 5 4 3 6 7 Cách 4:0 2 3 6 1 4 5 7 Cách 5:0 3 6 2 1 5 4 7

Bên cạnh đó có những thứ tự thực hiện công việc mà không thỏa mãn thứ tự công việc

trước, công việc sau, ví dụ thực hiện công việc theo thứ tự: 0 5 7 1 2 3 4 6, thứ tự này không thỏa mãn thứ tự công việc trong bảng phân rã công việc do công việc 5 thực hiện trước công việc 1 và 2, công việc 7 thực hiện trước công việc 4 và 6

Định nghĩa đường TaskLinecủa công việc ilà đường đi qua công việc theo đồ thị bắt đầu từ điểm start qua công việc i và đi qua điểm kết thúcend, tập hợp các công việc

mà đường này đi qua và thỏa mãn thứ tự công việc trước, công việc sau là các điểm

của đường TaskLine Xác định đường TaskLinecủa công việc i sẽ giúp ích cho thuật toán đột biến cá thể Ví dụ khi i là 5 thì đường TaskLine của 5 là tập hợp gồm các

điểm:0 2157 Khi tiến hành đột biến cá thể 0 2 1 5 4 3 6 7tại vị trí số 3 (tương ứng giá trị là 5), cá thể này là một mảng số nguyên không âm như sau:

Giá trị thể hiện chỉ số công việc 0 2 1 5 4 3 6 7

Vị trí công việc trong mảng 0 1 2 3 4 5 6 7 Hình 3.2 Biểu diễn thứ tự công việc bằng mảng một chiều nguyên không âm

Giả sử điểm đột biến xẩy ra tại vị trí số 3 có giá trị là 5 Đột biến là đổi chỗ giá trị 5 với giá trị khác trong mảng Như vậy từ vị trí có giá trị là 5lùi về phía trước gặp ngay

1thuộc đường TaskLine của 5do vậy 5không thể đổi chỗ cho 1 và các phần tử trước

1vì nếu đổi chỗ sẽ vi phạm thứ tự thực hiện công việc Từ đâyxác định được điểm giới

hạn phía trước của 5 là vị trí số 3 Tiếp tục từ vị trí số 3 tiền về phía sau đến vị trí số 7

có giá trị là 7, giá trị này thuộc đường TaskLine của 5nên không thể đổi chỗ 5với các

vị trí từ vị trí 7 trở đi, từ đây xác định được điểm giới hạn phía sau là vị trí số 6.Như

vậy nếu chọn vị trí đột biến là vị trí số 3 (tương ừng với giá trị là 5) thì chỉ có thể đổi

chỗ vị trí 3 này với các vị trí từ 3 tới 6 để sinh ra nhiễm sắc thể mới mà không vi phạm

thứ tự thực hiện công việc trước, công việc sau thể hiện trong Hình 3.1

Định nghĩa preTask, preTaskcủa điểm i(viết tắt là preTask i)là tập hợp các chỉ số

công việc thuộc các vị trí trong mảng, các vị trí này nhỏ hơn i thuộc trong khoảng từ 0

tới i-1với i > 0 Với vị trí 0 thì hiển nhiên tập preTasklà rỗng Như vậy tại vị trí số 3

biểu diễn bởi Hình 3.2 tập preTask3 = {0,2,1} Tập preTaskcủa vị trí i được dùng để

xác định tập hợp các công việc có thể đưa vào vị trí isao cho thứ tự các công việc biểu

diễn bởi mảng không vi phạm thứ tự công việc trước, công việc sau của bảng phân rã

Trang 38

công việc, tập các công việc này gọi là compatibleTasktại vị trí i viết tắt là

compatibleTaski

Định nghĩa compatibleTask, compatibleTasktại vị trí i (viết tắt là

compatibleTaski )là tập hợp các công việc có thể đưa vào vị trí i sao cho mảng thể

hiện thứ tự công việc không vi phạm ràng buộc công việc trước, công việc sau trong bảng phân rã công việc

Như vậy tập compatibleTaskigồm các công việc không thuộc preTaski và các công

việc này phải có tập các công việc trực tiếp trước nó là tập con của preTaskihoặc các

công việc không có công việc trực tiếp trước nó Tại vị trí i = 0 thì hiển nhiên tập này

bao gồm toàn bộ các công việcmà nó không có công việc trực tiếp phía trước Ví dụ

trong Hình 3.2 trang 37, tại vị trí i = 3 ta có preTask 3 = {0,2,1} và compatibleTask3

= {3,4,5}, phân tích cụ thể như sau: 3 có công việc phía trước là 0 thuộc preTask3, 4

có công việc trực tiếp phía trước là 1 thuộc preTask3, 5 có 2 công việc trực tiếp phía

trước là 1 và 2 đều thuộc preTask3, còn 6 và 7 không có công việc trực tiếp phía trước

thuôc preTask3nên không được chọn

Giải thuật di truyền được áp dụng trong bài toán là tìm ra một hoán vị tổ hợp thể hiện thứ tự thực hiện công việc sao cho tổng thời gian hoàn thành dự án là nhỏ nhất

3.2 Thuật toán

Một yếu tố quan trọng nhất của các thuật toán khởi tạo cá thể, đột biến, lai tạo chéo là các nhiễm sắc thể( một thứ tự thực hiện công việc) sinh ra bởi các thuận toán này phải thỏa mãn thứ tự thực hiện công việc trong bảng phân rã công việc

3.2.1 Thuật toán khởi tạo cá thể

Thuật toán dùng để khởi tạo ngẫu nhiên một cá thể Cá thể ở đây chính là mảng số nguyên không âm, giá trị các phần tử trong mảng là chỉ số các công việc trong dự án

Đầu vào:

- Bảng phân rã công việc thể hiện quan hệ công việc trước, công việc sau Các

công việc được đánh số từ 0 tới n-1 nlà tổngsố lượng công việc

Đầu ra:

- Mảng một chiều gồm n phần tử thể hiện thứ tự thực hiện công việc.Giá trị của phần tử của mảng chính là mã số công việc

Các bước thực hiện:

Khởi tạo mảng kiểu ushort (nguyên dương) có số phần tử là n gọi là

chromosome, mảng này biểu hiện một cá thể trong quần thể

Trang 39

Lập tập hợp compatibleTaskcác phần tử có các công việc hoàn thành phía trước nằm trong preTask

Chọn ngẫu nhiên phần tử trong preTaskvà gán vào phần tử thứ i của mảng chromosome

Tăng i lên 1 và tiếp tục vòng lặp For

End For

Ví dụ áp dụng giải thuật để tạo các cá thể: Áp dụng giải thật khởi tạo cá thể với tập

hợp các công việc có thứ tự công việc trước, công việc sau thể hiện trong hình Hình

3.1 trang36, có tất cả 8 công việc tập hợp thực hiện công việc theo thứ tự được thể

hiện bằng mảng không âm một chiều có 8 phần tử, các giá trị của mảng nằm trong khoảng từ 0 tới 7 và là duy nhất trong mảng

Bước 1: với i = 0preTask0 =  và compatibleTask0 = {0}, chọn một phần tử ngẫu

nhiên trong compatibleTask0 , chỉ có một phần tử do vậy 0 được chọn, mảng thể hiện thứ tự công việc như sau

Giá trị thể hiện chỉ số công việc 0

Vị trí công việc trong mảng 0 1 2 3 4 5 6 7

Bước 2: với i = 1preTask1 = {0} và compatibleTask1= {1,2,3}, chọn một phần tử

ngẫu nhiên trong compatibleTask1, giả sử 1 được chọn thì mảng thể hiện thứ tự công việc như sau

Giá trị thể hiện chỉ số công việc 0 1

Vị trí công việc trong mảng 0 1 2 3 4 5 6 7

Bước 3: với i = 2preTask2 = {0,1} và compatibleTask2= {2,3,4}, chọn một phần tử

ngẫu nhiên trong compatibleTask2, giả sử 2 được chọn thì mảng thể hiện thứ tự công việc như sau

Giá trị thể hiện chỉ số công việc 0 1 2

Vị trí công việc trong mảng 0 1 2 3 4 5 6 7

Bước 4: với i = 3preTask3 = {0,1,2} và compatibleTask3= {3,4,5}, chọn một phần tử

ngẫu nhiên trong compatibleTask3, giả sử 4 được chọn thì mảng thể hiện thứ tự công việc như sau

Giá trị thể hiện chỉ số công việc 0 1 2 4

Vị trí công việc trong mảng 0 1 2 3 4 5 6 7

Bước 5: với i = 4preTask4 = {0,1,2,4} và compatibleTask4= {3,5}, chọn một phần tử

ngẫu nhiên trong compatibleTask4, giả sử 3 được chọn thì mảng thể hiện thứ tự công việc như sau

Trang 40

Giá trị thể hiện chỉ số công việc 0 1 2 4 3

Vị trí công việc trong mảng 0 1 2 3 4 5 6 7

Bước 6: với i = 5preTask5 = {0,1,2,4,3} và compatibleTask5= {5,6}, chọn một phần

tử ngẫu nhiên trong compatibleTask5, giả sử 6 được chọn thì mảng thể hiện thứ tự công việc như sau

Giá trị thể hiện chỉ số công việc 0 1 2 4 3 6

Vị trí công việc trong mảng 0 1 2 3 4 5 6 7

Bước 7: với i = 6preTask6 = {0,1,2,4,3,6} và compatibleTask6= {5}, chọn một phần

tử ngẫu nhiên trong compatibleTask6, chỉ có một phần tử do vậy 6 được chọn, mảng thể hiện thứ tự công việc như sau

Giá trị thể hiện chỉ số công việc 0 1 2 4 3 6 5

Vị trí công việc trong mảng 0 1 2 3 4 5 6 7

Bước 8: với i = 7 preTask7 = {0,1,2,4,3,6,5} và compatibleTask7 = {7}, chọn một

phần tử ngẫu nhiên trong compatibleTask7 , chỉ có một phần tử do vậy 7 được chọn, mảng thể hiện thứ tự công việc như sau

Giá trị thể hiện chỉ số công việc 0 1 2 4 3 6 5 7

Vị trí công việc trong mảng 0 1 2 3 4 5 6 7

Tại bước 8 ta được một mảng thứ tự thực hiện công việc thỏa mãn trình tự công việc trước, công việc sau của bảng phân rã công việc

3.2.2 Thuật toán đột biến cá thể

Đầu vào:

- Bảng phân rã công việcCpr thể hiện quan hệ công việc trước, công việc sau

Các công việc được đánh số từ 0 tới n-1 n là tổng số lượng công việc

Đầu ra:

- Mảng một chiều nguyên dương chromosome gồm n phần tử thể hiện thứ tự thực hiện công việc Giá trị của phần tử của mảng chính là mã số công việc

Các bước thực hiện:

- Chọn ngẫu nhiên điểm đột biếni từ 0 tới n (n là kích thước mảng chromosome)

- Khởi tạo danh sách một chiều nguyên dương có các giá trị của phần tử trong mảng là giá trị định danh của công việc, các công việc này là các công việc phía

Ngày đăng: 25/03/2015, 09:37

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Đình Thúc (2000), Trí tuệ nhân tạo - Lập trình tiến hóa, NXB Giáo dụcTài liệu tiếng Anh Sách, tạp chí
Tiêu đề: Trí tuệ nhân tạo - Lập trình tiến hóa
Tác giả: Nguyễn Đình Thúc
Nhà XB: NXB Giáo dục Tài liệu tiếng Anh
Năm: 2000
[2] Bob Hughes and Mike Cotterell, Software project management (Second Edition), ISBN 007 7095057 Khác
[3] CARL K. CHANG, MARK J. CHRISTENSEN, PH.D., TAO ZHANG., Genetic Algorithms for Project Management., Annals of Software Engineering 11, 107–139, 2001 Khác
[4] David A.Coley, an introduction to genetic algorithms for scientists and enginer, Copyright Q 1999 by World Scientific Publishing Co. Pte. Ltd Khác
[5] Eric Verzun. The fast forward MBA in Project Management, 2th Edition, John Wiley and Sons Inc. 2005 Khác
[6] Matthew Bartschi Wall., A Genetic Algorithm for Resource-Constrained Scheduling., Department of Mechanical Engineering on 14 May 1996 Khác
[7] M. Mitchell,an Introduction to Genetic Algorithms. MIT Press 1998 Khác
[10] Wiley Publishing, Inc, Software Project Management For Dummies, ISBN-10: 0- 471-74934-6 Khác
[11] Zbigniew Michalewicz, Genetic Algorithms + Data Structures = Evolution Programs, ISBN 3-540-60676-9 Springer-Verlag Berlin Heidelberg New York Khác

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w