Tải bản đầy đủ (.pdf) (110 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.52 MB, 110 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




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





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
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.

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
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

7

THUẬT NGỮ VIẾT TẮT

Số thứ tự
Thuật ngữ
Tên đầy đủ
1
GP
Genetic programming
2
EA
Evolutionary algorithm
3
EP

Evolutionary programming
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.














8

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

Số thứ tự
Ký hiệu
Ý nghĩa
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.




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
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




















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















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.
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.

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
dự án một cách hợp lý.
- Giữa các dự án, không có sự lặp lại hoàn toàn giữa các dự án. Ví dụ như giữa
hai dự án hoàn toàn giống nhau về sản phẩm đầu ra, quy trình phát triển nhưng
có yếu tố nhân lực vật lực hoặc thời gian triển khai dự án khác nhau, do vậy
giữa hai dự án không có sự trùng lặp hoàn toàn.

Với các dự án phần mềm thì có nhiều điểm thuận lợi hơn các dự án khác. Những điểm
thuận lợi mà dự án phần mềm có được như:
- Sản phầm của dự án dễ sửa đổi hơn sản phẩm vật chất khác. Với dự án phần
mềm khi có yêu cầu sửa đổi sản phẩm thì đội phát triển sẽ sửa đổi mã nguồn và
biên dịch thành chương trình chạy và gửi lại khách hàng. Nhưng với các sản
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
và làm hài lòng khách hàng.
- Dự án phần mềm còn có đăc điểm nữa là cho phép bộ phận triển khai dự án vận
dụng nhiều giải pháp: công nghệ, quản lý vào quản lý dự án.

Sản phẩm của dự án phần mềm là phần mềm bao gồm chương trình (mã máy) và dữ
liệu và tài liệu hướng dẫn, sản phẩm phần mềm mang các đặc trưng khác so với các
sản phẩm của dự án thông thường:

- 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.
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,
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
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.
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
1
Quản lý phạm vi
(thay đổi)
Đảm bảo thực hiện đúng công
việc đã định
-Xác định giai đoạn
- Xác định công việc
- Xác định sản phẩm giao
- 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
4
Quản lý chất
lượng
Đảm bảo sản phẩm đạt yêu cầu
chất lượng đề ra
- Xác định các chuẩn chất
lượng, độ đo, quy trình kiểm
định
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
một cách có hiệu quả
- Xây dựng đội dự án
- Lựa chọn, phân công công
việc
- Phát triển bồi dưỡng nguồn
lực
- Thúc đẩy, động viên, phối
hợp
6
Quản lý mua sắm
thuê
Đảm bảo phục vụ, trợ giúp tốt
nhất mọi hoạt động dự án
- 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
và truyền thông
Đảm bảo thu thập, lưu trữ đủ
thông tin và cung cấp kịp thời
- Xác định nhu cầu thông tin
thành viên
- Xác định hình thức trao đổi

- Xác định dữ liệu thông tin lưu
trữ
- Quy định hình thức báo cáo,
lưu trữ, cung cấp 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
- Nhận diện các rủi ro
- Xác định khả năng xuất hiện,
phân tích tác động đến dự án
- Lập kế hoạch phòng chống
- Kiểm soát, xử lý
9
Quản lý cấu hình
(và thay đổi)
Đảm bảo kiểm soát mọi thay đổi,
đồng bộ sản phẩm
- Xác định khoản mục cấu hình
- 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
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
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
Tên kế hoạch
Mô tả
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

và các nguồn huy động
Kế hoạch nguồn lực
Mô tả số lượng, kỹ năng, kinh nghiệm của
các thành viên dự án và giải pháp

Khi tiến hành lập kế hoạch, lập lịch công việc người lập kế hoạch cần phải làm các
công việc theo các bước như sau:
- 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ã
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.

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:
- Configuration: Cấu hình
- Data mining: Khai phá dữ liệu
- Selection: Chọn lọc
- Diagnosis: Phân tích
- Process monitoring and control: Thực hiện điều phối và giám sát
- Scheduling: Lập lịch
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
- Phylogenetics
“Giống như thuật toán tiến hóa nói chung, thuật toán di truyền hình thành dựa trên
quan niệm cho rằng quá trình tiến hóa tự nhiên là quá trình hoàn hảo và hợp lý nhất và
tự nó đã mang tính tối ưu. Quan niệm này có thể xem như một tiên đề đúng không
chứng minh được nhưng phù hợp với thực tế khách quan. Tính tối ưu trong tự nhiên
thể hiện ở chỗ thế hệ sau bao giờ cũng tốt hơn (phát triển hơn, hoàn thiện hơn) thế hệ
trước nhờ hai quá trình cơ bản là sinh sản và chọn lọc tự nhiên. Xuyên suốt quá trình
tiến hóa tự nhiên, các thế hệ mới luôn được sinh ra để bổ xung thay thế thế hệ cụ.
Những cá thể nào phát triển thích nghi với môi trường sẽ tồn tại và ngược lại, những

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.

2.2. Lịch sử phát triển
Năm 1954, GP bắt đầu với giải thuật tiến hóa, nó được sử dụng lần đầu tiên bởi Nils
Aall Barricelli trong việc mô phỏng quá trình tiến hóa.
Vào những năm 1960 và nửa đầu những năm 1970 giải thuật tiến hóa (EA) được biết
đến như là các phương pháp tối ưu hóa. I. Rechenberg và nhóm của ông ấy đã giải
quyết được nhiều vấn đề phức tạp trong ngành công nghệ bằng chiến lược tiến hóa
(Evolution strategies). Ôngđã giới thiệu ý tưởng về lập trình tiến hóa trong tác phẩm
"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

×