Mô tả các thuật toán di truyền

Một phần của tài liệu Giải thuật di truyền và ứng dụng đối với bài toán vận tải (Trang 65 - 68)

Chương 3. Một số kết quả thực nghiệm

3.1. Mô tả các thuật toán di truyền

Nội dung chương 1 và chương 2 đã đưa ra mô hình của bài toán vận tải tổng quát, việc lựa chọn các giải pháp khởi tạo quần thể ban đầu, lai ghép, đột biến, trong giải thuật di truyền phải luôn luôn đảm bảo yêu cầu về các điều kiện ràng buộc của bài toán, đó là các ràng buộc:

a)

n

X

j=1

xij = ai biểu hiện tổng các lượng hàng nhận của các kho phải bằng trữ lượng của kho thứ i, i = 1, ..., m.

b)

m

X

i=1

xij = bj biểu hiện tổng các lượng hàng phát của các kho phải bằng yêu cầu của kho thứ j, j = 1, ..., n.

Vì vậy khi xây dựng các toán tử khởi tạo, lai ghép hay đột biến cần lựa chọn các phương án để đảm bảo được các yêu cầu trên của bài toán.

Sau đây ta sẽ xem xét chi tiết vấn đề xây dựng các toán tử di truyền.

3.1.1. Toán tử khởi tạo

Chọn phương án khởi tạo số cá thể N = 100.

Để đảm bảo 2 ràng buộc a) và b), ta chọn phương án như sau:

Bước 1: Sinh ngẫu nhiên các phần tử trên hàng thứ nhất của ma

trận phương án theo nguyên tắc:

+ Xác định giá trịx1,1 là giá trị ngẫu nhiên trong khoảng(0, min(a1, b1)).

+ Xác định giá trịx1,2 là giá trị ngẫu nhiên trong khoảng(0, min(a1− x1,1, b2)).

+ Xác định giá trịx1,3 là giá trị ngẫu nhiên trong khoảng(0, min(a1− x1,1 −x1,2, b3)).

...

+ Xác định giá trị x1,n = a1 −x1,1 −x1,2 −...−x1,n−1. Khi đó hiển nhiên điều kiện

n

X

j=1

x1,j = a1 được thỏa mãn.

Bước 2: Sinh ngẫu nhiên các phần tử trên hàng thứ 2:

+ Xác định giá trịx2,1 là giá trị ngẫu nhiên trong khoảng(0, min(a2, b1− x1,1)).

+ Xác định giá trịx2,2 là giá trị ngẫu nhiên trong khoảng(0, min(a2− x2,1, b2 −x1,2)).

+ Xác định giá trịx2,3 là giá trị ngẫu nhiên trong khoảng(0, min(a2− x2,1 −x2,2, b3 −x1,3)).

...

+ Xác định giá trị x2,n = a2 −x2,1 −x2,2 −...−x2,n−1. Khi đó hiển nhiên điều kiện

n

X

j=1

x2,j = a2 được thỏa mãn.

Bước 3: Sinh ngẫu nhiên các phần tử trên hàng thứ 3:

+ Xác định giá trịx3,1 là giá trị ngẫu nhiên trong khoảng(0, min(a3, b1− x1,1 −x2,1)).

+ Xác định giá trịx3,2 là giá trị ngẫu nhiên trong khoảng(0, min(a3− x3,1, b2 −x1,2 −x2,2)).

+ Xác định giá trịx3,3 là giá trị ngẫu nhiên trong khoảng(0, min(a3− x3,1 −x3,2, b3 −x1,3 −x2,3)).

...

+ Xác định giá trị x3,n = a3 −x3,1 −x3,2 −...−x3,n−1. Khi đó hiển nhiên điều kiện

n

X

j=1

x3,j = a3 được thỏa mãn.

Bước m: Sinh ngẫu nhiên các phần tử trên hàng thứ m:

xm,1 = b1 −x1,1 −x2,1 −...−xm−1,1.

xm,2 = b2 −x1,2 −x2,2 −...−xm−1,2. ...

xm,n = bn−x1,n −x2,n−...−xm−1,n−1. Khi đó các điều kiện

m

X

i=1

xij = bj, j = 1, ..., n sẽ luôn được thỏa mãn.

3.1.2. Toán tử lai ghép

Đối với bài toán vận tải, khi thực hiện lai ghép, cần đảm bảo điều kiện là các con sinh ra từ cha và mẹ qua phép lai ghép cũng phải đảm bảo các điều kiện ràng buộc a) và b) đã được đưa ra. Một số các thuật toán lai ghép đã được nghiên cứu trong chương 2 như lai ghép số học hay lai ghép dạng DIV −REM đều thỏa mãn các điều kiện này. Do việc thực hiện việc lai ghép dạng DIV −REM là khó cài đặt trên máy tính. Do đó, ta sẽ chọn phương án lai ghép dạng số học.

Các bước được tiến hành như sau:

Bước 1: Chọn xác suất lai ghép = 50% tức là trong 100, chương trình sẽ chọn ra 50 cặp cha mẹ ngẫu nhiên để lai ghép.

Bước 2: Chọn ngẫu nhiên cha và mẹ:

+ Xác định vị trí cá thể cha là giá trị ngẫu nhiên trong khoảng từ (1,100). Kí hiệu vị trí cha là vị trí a.

+ Xác định vị trí cá thể mẹ là giá trị ngẫu nhiên trong khoảng từ (1,100). Kí hiệu vị trí mẹ là vị trí b.

(Để đảm bảo cha và mẹ không trùng nhau có thể chọn a ∈ (1,50), b ∈ (51,100) tuy nhiên điều này cũng không ảnh hưởng đến thuật toán).

Bước 3: Tiến hành lai ghép số học:

+ Chọn số ngẫu nhiên a1 ∈ (0,1).

+ Tiến hành lai ghép:

CON1 = a1 ∗BO+ (1−a1)∗M E CON2 = (1−a1)∗BO +a1 ∗M E

Các bước trên sẽ được thực hiện lặp lại với 50 cặp bố mẹ.

3.1.3. Toán tử đột biến

Để đảm bảo cho việc đột biến thành công tức là sau khi đột biến thì vẫn phải đảm bảo điều kiện a) và b). Trong trường hợp này, ta chọn

phương án như thuật toán phân phối đã lựa chọn tức là đối với một phương án bất kỳ, ta sẽ thực hiện chọn một vòng và sau đó đột biến sẽ tiến hành theo nguyên tắc như sau:

+ Chọn vòng x1,1 → x1,n → xm,n → xm,1 → x1,1 (Ta có thể chọn các loại vòng khác, điều này cũng không ảnh hưởng đến thuật toán).

+ Xác định α = min(x1,1, xm,n)tức là giá trị nhỏ nhất trên tập vòng lẻ.

+ Đột biến:

- Các ô trên tập vòng lẻ (x1,1, xm,n) sẽ thêm 1 lượng là α.

- Các ô trên tập vòng chẵn (x1,n, xm,1) sẽ bớt 1 lượng là α.

Trong quá trình đột biến, ta chọn xác suất đột biến là 5%.

3.1.4. Toán tử lựa chọn

Trong quá trình lựa chọn, ta luôn lấy hàm chi phí là hàm đánh giá tức là ta sẽ chọn phương án sao cho hàm chi phí là nhỏ nhất. Quá trình lựa chọn có thể thực hiện theo 2 phương án như sau:

Phương án 1: Từ một cặp cha, mẹ và hai con được sinh ra tương ứng, ta sẽ chọn ra 2 cá thể có hàm chi phí nhỏ hơn đưa vào trong quần thể để tham gia trong quá trình lai tạo tiếp sau.

Phương án 2: Xuất phát từ 100 cá thể ban đầu, sau khi thực hiện lai ghép với xác suất 50% ta sẽ thu được 200 cá thể. Từ 200 cá thể này, ta tiến hành chọn ra 100 cá thể có giá trị hàm chi phí nhỏ hơn đưa vào trong quần thể để tham gia trong quá trình lai tạo tiếp sau.

Nhận xét 3.1. Trong phương án 1 việc lựa chọn là đơn giản, các phép so sánh là ít, hiệu quả không cao. Ở phương án 2, các phép so sánh là nhiều hơn nhưng hiệu quả sẽ cao hơn. Trong quá trình thực hiện sẽ cài đặt cả 2 phương án để so sánh hiệu quả.

Một phần của tài liệu Giải thuật di truyền và ứng dụng đối với bài toán vận tải (Trang 65 - 68)

Tải bản đầy đủ (PDF)

(81 trang)