Mô hình ứng dụng

Một phần của tài liệu Giải thuật di truyền và ứng dụng trong quản lý dự án phần mềm (Trang 49)

Hình 4.1Mô hình các thành phần trong chương trình demo luận văn Ứng dụng demo được viết trên:

- Nền tảng .Net Framework bằng ngôn ngữ lập trình C#.

- Cơ sở dữ liệu Microsoft SQL server 2008 Express.

- Công cụ dùng để phát triển: Visual studio 2010

- Phần mềm quản lý dự án Microsoft project 2010

- Microsoft Entity framework Các thành phần ứng dụng

- ProjectPlan Application

o ProjectPlan Entity: lớp này mapping trực tiếp với cơ sở dữ liệu, là lớp trung gian giữa chương trình và cơ sở dữ liệu, có nhiệm vụ load dữ liệu lên trương trình và lưu dữ liệu khi chương trình yêu cầu vào database.

o ProjectPlan bussiness logic: Lớp này kế thừa thư viện giải thuật di truyền và sử dụng lớp ProjectPlan Entity để truy xuất vào cơ sở dữ liệu, là lớp

AForge.NET ProjectPlan database ProjectP Entities ProjectPlan BussinessLogic Tệp xml, và excel Add-ins Microsoft Project ProjectPlan program

trung tâm xử lý toàn bộ nghiệp vụ của chương trình. Cung cấp các tính năng sau:

 Quản lý thông tin dự án

 Quản lý thông tin task: thêm mới, xóa, sửa, định nghĩa mối quan hệ công việc trực tiếp phía trước, phía sau cho từng task.

 Quản lý thông tin loại tài nguyên (resource type)

 Quản lý thông tin tài nguyên (resource)

 Ước lượng thời gian và số lượng tài nguyên ứng với từng loại tài nguyên để hoàn thành task.

 Chạy giải thuật di truyền để tìm ra bài toán tối ưu phân bổ tài nguyên (resource ) để hoàn thành các công việc trong dự án. Cung cấp giao diện để tham số hóa các tham số đầu vào của giải thuật di truyền. Cung cấp các thông tin debug ra log file để phân tích quá trình chạy giải thuật di truyền. Xem lịch sử hàm thích nghi qua từng thế hệ khi chạy giải thuật di truyền.

 Tạo mới và mở cơ sở dữ liệu có sẵn.

 Cung cấp màn hình đồ họa công việc để quản lý task một cách trực quan.

 Lưu trự và đọc lại các dữ liệu tại một thế hệ khi chạy giải thuật nhằm mục đích phân tích.

 Kết xuất dữ liệu ra excel hoặc xml để Microsoft project add-ins có thể đọc.

o Thư viện Aforge.NET: Cung cấp thư viện nền tảng phục vụ cho giải thuật di truyền như các lớp cơ sở của thuật di truyền, bao gồm mã hóa nhiễm sắc thể, lớp có sở định nghĩa hàm thích nghi, lớp cơ sở định nghĩa lớp quần thể, các lớp định nghĩa quá trình chọn lọc cá thể, các phương pháp đột biến, lai tạo chéo, chọn lọc cá thể sang thế hệ mới.

o Cơ sở dữ liệu Microsoft SQL sever 2008 express: Lưu trữ dữ liệu về thông tin dự án, dữ liệu task, dữ liệu các loại tài nguyên, dữ liệu tài nguyên, dữ liệu về ước lượng tài nguyên thực hiện task.

- Microsoft Project Addin: Thành phần này cung cấp các chức năng như Export data, cho phép export các dữ liệu task từ màn hình Microsoft project sang database chương trình ProjectPlan. Chức năng import dữ liệu từ database chương trình sang màn hình Microsoft project. Chức năng xem biểu đồ gantt chart từ dữ liệu định dạng xml mà chương trình ProjectPlan xuất ra trong quá trình tính toán gán tài nguyên thực hiện các task trong dự án.

- Xml file và excel file là dữ liệu trung gian được chương trình xuất ra để thành phần Microsoft Add-ins có thể đọc được. Xem chi tiết ở phụ lục 9 (trang 104) và Phụ lục 10 (trang 105)

- Bảng Project, chứa thông tin dự án gồm tên dự án, ngày bắt đầu, ngày kết thúc dự án.

- Bảng Task lưu trữ các thông tin công việc như tên công việc, số giờ cần hoàn thành công việc, các công việc trực tiếp phía trước và các công việc trực tiếp phía sau nó. Ngoài ra còn có các thông tin về đồ họa dùng để hiển thị công việc này trên màn hình đồ thị công việc, các thông tin đó bao gồm: chiều dài, chiều rộng, tọa độ x, y và hình dạng là hình vuông hay hình tròn. Mỗi một task chỉ thuộc về một dự án duy nhất.

- Bảng ResrouceType lưu trữ thông tin các loại Resource dùng trong dự án.

- Bảng Resource lưu trự thông tin Resource, mỗi một resource sẽ thuộc về một loại resource nhất định.

- Bảng TaskEstimate lưu trữ dữ liệu lập kế hoạch nguồn lực thực hiện công việc. Dữ liệu này cho biết task cần bao nhiều tài nguyên ứng với loại tài nguyên cụ thể để hoàn thành công việc.

Hình 4.2Mô hình quan hệ cơ sở dữ liệu Từ cơ sở dữ liệu ở trên ta phân tích đươc mô hình entity dưới đây. (adsbygoogle = window.adsbygoogle || []).push({});

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

Thực thểDự án (Project)

Số thứ tự Tên trƣờng Mô tả

1 ID Mã công việc kiểu int

2 Name Tên công việc kiểu string

3 Description Mô tả dự án kiểu string

4 StartDate Ngày dự kiến bắt đầu dự án

kiểu DateTime

5 EndDate Ngày dự kiến kết thúc dự

án kiểu DateTime

6 Status Tình trạng dự án: Start,

Planning, Schdule, Finish.

7 Tasks Collection of Task

Thực thể Công việc (Task)

Số thứ tự Tên trƣờng Mô tả

2 Name Tên công việc kiểu string

3 PreTask Danh sách mã các công

việc trực tiếp phía trước. Dùng dấu phẩy “,” để phân cách giữa các mã công việc. Ví dụ có hai công việc có mã 16 và 18 là công việc trực tiếp phía trước công việc này thì biểu thị dữ liệu trường PreTask là giá trị:

16,18,

4 Description Mô tả công việc

5 ProjectID Mã dự án

6 TaskIndex Mã định danh các công việc

trong cùng dự án. Mã định danh này có giá trị từ 0 đến n-1, n là tổng số công việc trong cùng dự án.

7 X Tọa độ x của công việc.

Dùng để hiển thị công việc trên màn hình đồ họa công việc

8 Y Tọa độ y của công việc.

9 Shape Định nghĩ công việc này

hiển thị trên màn hình đồ họa là hình tròn hay hình vuông

10 W Chiều dài dùng để hiển thị

công việc trên màn hình đồ họa (adsbygoogle = window.adsbygoogle || []).push({});

11 H Chiều rộng

12 Hours Số giờ cần làm để hoàn

thành công việc.

13 Project Lưu trữ đối tượng project

Thực thể ResourceType (Loại tài nguyên)

Số thứ tự Tên trƣờng Mô tả

1 ID Mã loạitài nguyên

2 Name Tên loạitài nguyên

3 Description Mô tả mã loại công việc

4 Task Lưu trữ đối tượng task

5 ResourceType Lưu trữ đối tượng loại

resource

Thực thể Resource (Tài nguyên)

Số thứ tự Tên trƣờng Mô tả

1 ID Mã tài nguyên

2 Name Tên tài nguyên

3 Description Mô tả mã loại công việc

4 Type Mã loại tài nguyên

Thực thể TaskEstimate (Ước lượng tài nguyên thực hiện công việc)

Số thứ tự Tên trƣờng Mô tả

1 ID Mã số ước lượng tài nguyên

2 TaskID Mã công việc

3 ResourceTypeID Mã loại công việc

4 AmountResource Số lượng tài nguyên ứng với loại công việc để hoàn thành công việc nảy.

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

AForge.Net framework này là mã nguồn mở viết trên nền tảng .net framework, được phát triển bởi Andrew Kirillov bằng ngôn ngữ lập trình C# trên nền tảng .NET

Framework, được khuyến nghị dùng cho các nhà phát triển và các nhà nghiên cứu trong các vấn đề thị giác máy tính và trí tuệ nhân tạo như: Xử lý ảnh, mạng neural nhân tạo, giải thuật di truyền, logic mờ, học máy, robotics.

Website của framework đặt tại địa chỉ: http://www.aforgenet.com/aforge/framework/

đây là nơi cập nhật các thông tin mới nhất về nền tảng này.

Mã nguồn framework được đặt trên google code tại địa chỉ: (adsbygoogle = window.adsbygoogle || []).push({});

https://code.google.com/p/aforge/source/checkout

AForge.Net framework được chia thành các gói thư viện:

- AForge.Imaging – Gói thư viện xử lý hình ảnh;

- AForge.Vision – Gói thư viện thị giác máy tính;

- AForge.Video – Gói xử lý video;

- AForge.Neuro –Gói tính toán mạng nhân tạo;

- AForge.Genetic –Gói thư viện lập trình tiến hóa;

- AForge.Fuzzy –Gói thư viện tính toán mờ;

- AForge.Robotics – Gói thư viện robotics kits;

- AForge.MachineLearning –Gói thư viện học máy.

Trong các gói thư viện trên, gói thư viện lập trình tiến hóa AForge.Genetic được học viên nghiên cứu kỹ lưỡng và áp dụng viết chương trình demo trong luận văn này. AForge.Genetic chứa các lớp với đích nhắm tới giải quyết nhiều nhiệm vụ khác nhau trong các lĩnh vực khác nhau từ Giải thuật di truyền (GA), lập trình tiến hóa (GP) đến lập trình biểu thức tiến hóa (GEP). Gói thư viện đã đưa ra các biểu diễn về các vấn đề cơ bản nhất của di truyền như:

- Các interface

o IChromosome Interface, interface này định nghĩa các giao tiếp cơ bản như

 Clone: Tạo ra một nhiễm sắc thể mới có các gen giống hệt nhiễm sắc thể cho trước.

 CreateNew: Tạo ra một nhiễm sắc thể hoàn toàn mới.

 Crossover: Định nghĩa toán tử lai tạo giữa hai nhiễm sắc thể.

 Evaluate: Định lượng nhiễm sắc thể với hàm fitness được truyền vào khi khởi tạo các đối tượng thực thi interface này.

 Generate: Tạo ngẫu nhiên nhiễm sắc thể mới.

 Mutate: Đột biến nhiếm sắc thể để ra một nhiễm sắc thể mới.

o IFitnessFunction Interface: Mọi lớp thể hiện hàm fitness đều phải triển khai giao tiếp này.Interface này dùng để tính toán giá trị fitness của nhiễm sắc thể. Mọi giá trị fitness đều phải là nguyên dương, những nhiễm sắc thể có giá trị fitness lớn hơn thì là tốt hơn những cá thể còn lại. Trong chương trình demo luận văn, học viên có tạo hàm fitness theo nguyên lý thiết kế của framework này, tham khảo chi tiết mã nguồn của

lớp fitness này tại Phụ lục 1(Trang 92): Mã nguồn lớp TasksFitnessFunction

o ISelectionMethod Interface: Interface này sẽ phải được implemented bởi các lớp dùng cho thuật toán chọn lọc cá thể ở bước chọn cá thể sang quần thể mới.

- Mã hóa nhiễm sắc thể:

o ChromosomeBaselà lớp cơ sở triển khai interface IChromosome. Các lớp

mã hóa nhiễm sắc thể khác sẽ được kế thừa từ lớp này.

o Mã hóa nhị phânBinaryChromosome hỗ trợ độ dài mảng từ 2 tới 64. Đây là kiểu mã hóa nhiễm sắc thể đơn giản nhất, được biểu diễn bởi tập hợp các bit có giá trị là 0 và 1.

o Mã hóa mảng dữ liệu kiểu số nguyên dương ShortArrayChromosome,

mỗi một gene trong nhiễm sắc thể của mã hóa này là một số nguyên dương, mảng dữ liệu này sẽ có độ dài từ 2 tới 65536.

o Mã hóa hoán vị tổ hợpPermutationChromosomeđược kế thừa từ mã hóa

ShortArrayChromosomevà được định nghĩa thêm hai tính chất mới. Một (adsbygoogle = window.adsbygoogle || []).push({});

là mọi gene trong nhiễm sắc thể là duy nhất, trong mã hóa này không có hai gene có cùng một giá trị. Hai là giá trị lớn nhất của gene bằng độ dài của nhiễm sắc thể trừ 1. Kiểu mã hóa này phù hợp với biểu diễn thứ tự thực hiện công việc. Để làm việc này ta thêm một tính chất nữa thể hiện quan hệ công việc trước, công việc sau của các công việc. Mỗi một nhiễm sắc thể có các giá trị gene phải phù hợp với thứ tự công việc trong biểu đồ phân rã công việc. Từ đây các quá trình đột biến, lai tạo, tạo mới các cá thể phải thỏa mãn thứ tự thực hiện các công việc này. Trong chương trình demo luận văn học viên có tạo thêm nhiễm sắc thể

TasksChromosome và viết lại các hàm Mutate, Crossover, Clone,

CreateNew, Generate, xem trong Phụ lục 2(trang 93) để xem mã nguồn

phần này

o Mã hóa mảng dữ liệu kiểu thập phânDoubleArrayChromosome). Với kiểu mã hóa này mỗi một gene trong nhiễm sắc thể là một số thập phân, mảng dữ liệu biểu diễn kiểu mã hóa này sẽ có độ dài từ 2 đến 65536.

o Mã hóa cây (class GPTreeChromosome), mã hóa biểu thức(class GEPChromosome).

- Các phương pháp chọn lọc: chọn lọc các phần tử tốt nhất (class EliteSelection), chọn lọc bánh xe(class RouletteWheelSelection), chọn lọc đánh giá(class RankSelection). Các lớp này được cài đặt interface ISelectionMethod.Nguyên lý

thực hiện của các lớp chọn lọc này đã được mô tả ở phần 3: giải thuật di truyền và các ứng dụng.

- Các hàm đánh giá thông dụng như: hàm tối ưu một chiều và hai chiều (class

OptimizationFunction1D,OptimizationFunction2D,SymbolicRegressionFitness, TimeSeriesPredictionFitness)…Các lớp này được cài đặt interface IFitnessFunction.

- Lớp quan trọng nhất trong thư viện AForge.Genetic là lớp Population, lớp này có nhiệm vụ: Khởi tạo quần thể với các cá thể ban đầu ngẫu nhiên, tạo cá thể mới với sự trợ giúp của các toán tử lai tạo, đột biến, tính toán giá trị hàm thích nghi của các cá thể mới, tiến hành chọn lọc cá thể sang thế hệ tiếp theo. Để làm việc này khi tạo đối tượng từ lớp Populationta cần phải chỉ định loại cá thể

(khởi tạo nhiễm sắc thể), chỉ định hàm thích nghi, phương pháp chọn lọc, các tham số giải thuật như: tỷ lệ đột biến (mặc định là 0.1), tỷ lệ lai tạo (mặc định 0.75), tỷ lệ sinh cá thể mới (mặc định là 0), và kích thước quần thể.Sau các bước khởi tạo trên đối tượng Populationsẽ được dùng để tìm ra một nghiệm

thích hợp.

Dưới đây là đoạn code trong trương trình demo luận văn, đoạn code này có nhiệm vụ khởi tạo đối tượng Population,chỉ định các tỷ lệ đột biến, lai tạo chéo, tỷ lệ cá thể mới được sinh ra khi chọn các cá thể sang quần thể mới,khởi tạo nhiễm sắc thể, khởi tạo các phương pháp chọn lọc và tiến hành đột biến, lai tạo, chọn lọc cá thể sang quần thể mới (Xem chi tiết tại Phụ lục 3trang 98).

Khi viết chương trình demo cho luận văn này, học viên có sử dụng phương thức mã hóa hoán vị tổ hợp PermutationChromosome. Bằng cách viết thêm một lớp

TasksChromosomekế thừa lớp PermutationChromosome. Mã hóa này phù hợp với

việc xắp xếp các nhiệm vụ theo số thư tự của chúng. Trong lớp

PermutationChromosome viết chồng các hàm đột biến, lai tạo, hàm copy, hàm create

new. Hàm đánh giá cũng được viết thêm bằng cách tạo lớp TasksFitnessFunction cài đặt interface: IFitnessFunction.Với lớp Populationhọc viên bổ sung thêm hai hàm là LocalSearch, hàm này có chức năng chọn phần tử bất kỳ và tiến hành đột biến phần tử

đột biến cho phép mà không tìm được phần tử mới tốt hơn. Hàm thứ hai là hàm

ReplaceChromosomeByRandomChrom, hàm này có chức năng thay thế một cá thể cho

trước vào một cá thể trong quần thể, cá thể bị thay thế được chọn một cách hoàn toàn ngẫu nhiên. Ứng dụng hàm này trong chương trình demo là giữ lại cá thể tốt nhất của thế hệ trước bằng cách thay thế cá thể này và loại bỏ một cá thể ngẫu nhiên trong quần thể.Xem Phụ lục 4trang 99để biết chi tiết.

4.3. Viết Add-in cho Microsoft Project

Nhằm tận dụng sức mạnh phần mềm Microsoft Project, kết hợp các tính năng nổi bật về giao diện của phần mềm Microsoft Project (viết tắt là MS).Sau khi tìm hiểu nghiên cứu về phần mềm Microsoft Office, trong đó có Microsoft Project cho phép lập trình viên viết thêm Add-in, các add-in này có thể thao tác dữ liệu phần mềm. Trong luận văn này ta đi cụ thể vào vấn đề viết Add-in trên Microsoft project. Để viết Add-in này cần phải có các phần mềm sau:

- Microsoft project

- Visual studio 2010

- Microsoft SQL server tối thiểu từ 2008 express trở lên

Trong luận văn này học viên xây dựng Add-ins trên Microsoft project có các chức năng sau:

- Export dữ liệu task:Sau khi nhập liệu các công việc và chỉ định rõ thứ tự ưu tiên, công việc nào trước, công việc nào làm sau, số giờ cần dùng để hoàn thành công việc trên phần mềm Microsoft project. Người dùng có thể export những dữ liệu này sang database của chương trình demo luận văn.

- Import dữ liệu task: Sau khi chỉ địnhdanh sách các công việc, thứ tự ưu tiên công việc trước và sau trên chương trình demo luận văn, số giờ hoàn thành công việc. Các thông tin được lưu lại database. Người dùng có thể import dữ liệu này vào Microsoft project. (adsbygoogle = window.adsbygoogle || []).push({});

- Xem biểu đồ ganttchart từ chương trình: Sau khi dùng thuật toán giải thuật di truyền trên phần mềm demo luận văn, ta có kết quả gán tài nguyên thực hiện công việc và đặt lịch các tài nguyên thực hiện các công việc này. Dữ liệu này được export ra định dạng xml. Từ phần mềm Microsoft project thông qua Add- in này người dùng sẽ xem được biểu đồ granttchart bằng cách import dữ liệu xml vào chương trình.

Một phần của tài liệu Giải thuật di truyền và ứng dụng trong quản lý dự án phần mềm (Trang 49)