Trong luận văn này em đã trình bày được nội dung thuật toán di truyền, phương
pháp tối ưu hóa đàn kiến, mô hình quy hoạch nguyên, bài toán thuê xe có hạn
ngạch, đưa ra mô hình nguyên cho bài toán và áp dụng thuật toán di truyền và
phương pháp tối ưu hóa đàn kiến giải bài toán trên.
Kết quả thực nghiệm tính toán được biểu diễn bằng cách cố định số lần lặp,
cố định số lần đánh giá và cố định thời gian xử lý đồng thời sử dụng hệ thống
kiểm định để phát hiện sự khác biệt trọng yếu trong thuật toán nhẳm đảm bảo
chất lượng của giải pháp. Kết quả thu được chỉ ra rằng thuật toán phương pháp
tối ưu hóa đàn kiến cho kết quả và thời gian chạy tốt hơn trong nhiều trường hợp.
Vấn đề được trình bày trong nghiên cứu này là mới, vậy nên có thể có một số
vấn đề có thể được nghiên cứu trong tương lai, ví dụ như ứng dụng của metaheuristic và thủ tục tìm kiếm địa phương, hoặc là nghiên cứu các biến thể khác của
q-CaRS, ví dụ một phiên bản với 2 tham số mà tổng ràng buộc được tối đa và chi
phí là nhỏ nhất.
Đóng góp chính của luận văn bao gồm:
1 Tìm hiểu và trình bày lại nội dung bài toán thuê xe có hạn ngạch q-CaRS.
2 Trình bày lại thuật toán di truyền giải bài toán q-CaRS và đề xuất thêm
phương pháp tối ưu hóa đàn kiến để giải bài toán.
3 Lập trình và đưa ra kết quả thực nghiệm đánh giá của hai thuật toán.
Tuy nhiên do thời gian thực hiện luận văn không nhiều còn có những sai sót em
rất mong nhận được sự góp ý của quý thầy cô và bạn đọc.
71 trang |
Chia sẻ: yenxoi77 | Lượt xem: 546 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Luận văn Bài toán thuê xe du lịch có hạn ngạch, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
=(11100010010011011) u2
3. 0,11 0,40 0,70 v6=(00010100001001010) u3
4. 0,11 0,51 0,78 v8=(10000110000111010) u4
5. 0,08 0,59 0,42 v4=(10001100010110100) u5
6. 0,08 0,67 0,31 v4=(00001000001100100) u6
7. 0,10 0,76 0,42 v4=(10001100010110100) u7
8. 0,08 0,84 0,28 v2=(11100010010011011) u8
9. 0,06 0,90 0,64 v6=(00010100001001011) u9
10 0,10 1,00 0,95 v10=(00010100001001010) u10
Tương giao chéo. Với pc=0,25 ta chọn được cặp tương giao chéo là
u3= (00010100001001010)
u5= (10001100010110100) với điểm trao đổi k=5.
Sau khi tương giao ta được
u
′
3= (00010100010110100)
u
′
5= (10001100001001010)
Với xác suất đột biến là pm=0,01 ; các gene đánh số từ 1 đến 170 ta chọn được gene
thứ 81 (gene thứ 13 của cá thể thứ 5) và gene thứ 127 (gene thứ 8 của cá thể thứ 8)
Ta được P(1) là :
23
v
′
5 = (00011101100101001)
v
′
2 = (11100010010011011)
v
′
6 = (00010100010110100)
v
′
8 = (10000110000111010)
v
′
4 = (10001100001011010
v
′
3 = (00001000001100100)
v
′
4 = (10001100010110100)
v
′
2 = (11100011010011011)
v
′
6 = (00010100001001011)
v
′
10 = (00010100001001010)
Độ thích hợp toàn phần là F= 107,65 ; cá thể tốt nhất vẫn là v
′
2=(11100010010011011)
với eval=14,78 nhưng thế hệ này tốt hơn p(0) nhiều quá trình tiếp tục cho tới lúc
dừng ta được lời giải gần tối ưu.
2.1.2. Biễu diễn bằng véc tơ số thực
Sau khi GA cổ điển được Holland công bố nó chứng tỏ là một phương pháp tốt
để giải các bài toán tối ưu khó và nó được cải tiến phong phú để tăng hiệu quả ứng
dụng.
Đối với các bài toán có miền chấp nhận được lớn và đòi hỏi sai số bé thì độ dài
của mỗi mỗi nhiễm sắc thể theo phương pháp GA cổ điển rất lớn nên việc áp dụng
GA rất khó khăn. Vì vậy người ta cải tiến bằng biễu diễn nhiễm sắc thể bằng véc tơ
thực để giải bài toán (I,1). Trong biễu diễn này, người ta dùng các véc tơ thực trong
miền chấp nhận đươc (thuôc tập M) làm nhiễm sắc thể và thiết kế các nhóm toán
tử di truyền cho thích hợp với biễu diễn này mà vẫn giữ nguyên thủ tục GA đã đặc
tả ở trên. Dưới đây giới thiệu một số toán tử dễ dùng.
Các toán tử tương giao chéo
Người ta chó thể chọn một vài toán tử tương giao chóe trong số các toán tử sau.
Tương giao đơn giản
Toán tử này thực hiện trao đổi hai nhóm gene tương tự như giải thuật cổ điển.
Nếu tương giao hai véc tơ
x = (x1, x2, ..., xn),
x = (y1, y2, ..., yn)
với điểm chọn ở vị trí thứ k thì ta được
x
′
= (x1, ...xk, yk+1, ..., yn) ,
y
′
= (y1, ...yk, xk+1, ..., xn)
Tương giao số học đơn
24
Nếu tương giao hai véc tơ:
x = (x1, x2, ..., xn),
y = (y1, y2, ..., yn)
với điểm chọn ở vị trí thứ k thì ta được :
x
′
= (x1, ...x
′
k.., xn) ,
y
′
= (y1, ...y
′
k.., yn)
trong đó x
′
k = axk + (1− a)yk với a ∈ (0, 1) là số cho trước hoặc chọn ngẫu nhiên.
Tương giao số học toàn cục
Nếu tương giao hai véc tơ
x = (x1, x2, ..., xn),
y = (y1, y2, ..., yn) thì được
x
′
= ax+ (1− a)y ,
y
′
= ay+ (1− a)x
với a ∈ (0, 1) là số cho trước hoặc chọn ngẫu nhiên.
Các toán tử biến dị
Người ta có thể dùng nhiều kiểu toán tử biến dị, chẳng hạn, một trong hai toán
tử biến dị sau.
Biến dị đều
Giả sử gene xk diến dị thành x
′
k thì x
′
k là số ngẫu nhiên phân bố đều trên miền
chấp nhận được [ak, bk] của nó.
Biến dị không đều
Giả sử gene xk diến dị thành thì x
′
k = xk + δ(t, xk) trong đó δ(t, xk) là số ngẫu
nhiên phân bố không đều trên đoạn [ak − xk, bk − xk] và hội tụ theo xác suất về
không khi t tăng ra vô hạn, tham số tchỉ vòng lặp. Thông dụng nhất là chọn phân
bố chuẩn.
2.1.3. GA trong tối ưu tổ hợp
Thuật toán di truyền giải các bài toán tối ưu tổ hợp có cùng lược đồ với GA cổ
điển được mô tả trong hình I.1. Trong ứng dụng, ta thường gặp nhiều bài toán thực
tiễn mà hàm mục tiêu chưa có dạng tường minh. Khi đó ta cần xây dựng bài toán
tói ưu cho nó và áp dụng GA để tìm lời giải. Cách tiếp cận này mở ra các phương
pháp tính toán tiến hóa (Evolutionary computation viết tắt là EC)
Lược đồ tính toán tiến hóa
Trong tối ưu hóa, thuật ngữ tính toán tiến hóa có thể hiểu theo hai tiếp cận.
Theo nghĩa rộng, EC dùng để chỉ các phương pháp lặp tạo sinh hoặc phát triển
25
quần thể lời giải, trong đó chất lượng lời giải được cải thiện theo thời gian. Theo
nghĩa hẹp mà ta dùng trong mục này, EC dùng để chỉ các phương pháp giải các
bài toán nhờ ứng dụng GA. Khí áp dụng EC, ta cần đưa bài toán được xét về bài
toán tìm lời giải tối ưu để áp dụng GA để giải. Chương trình áp dụng EC để giải
bài toán gọi là chương trình tiến hóa.
Mối liên hệ giữa EC và GA đươc minh hoạ bởi sơ đồ trong hình I.2.
Hình 2.2: Sơ đồ quan hệ áp dụng tính toán tiến hóa
Các bước cơ bản để5 xây dựng chương trình tiến hóa
Đối với một bài toán cần giải P, để xây dựng một chương trình tiến hoá giải nó,
người ta thường tiến hành theo năm bước cơ bản sau:
• Bước 1. Chọn cấu trúc nhiễm sắc thể / kiểu gene biễu diễn lời giải tiềm năng
của bài toán sao cho nó chứa đủ các thông tin quan trọng và dễ làm việc. Tuy
nhiên không có sự hướng dẫn nào về cách chọn này. Thiết kế chương trình
mã hóa và giải mã
• Bước 2. Khởi tạo tập lời giải ban đầu. Việc khởi tạo là ngẫu nhiên hay có thể
áp dụng một vài thuật toán heuristic, nhưng phải đảm bảo sao cho các ràng
buộc của bài toán được đảm bảo.
• Bước 3. Chọn hàm đánh giá mức độ tốt của lời giải (để đánh giá các cá thể
trong quần thể lời giải theo độ thích nghi của chúng ).
• Bước 4. Thiết kế các toán tử di truyền. Các toán tử này được thiết kế nên dựa
trên kiểu gene/ nhiễm sắc thể , đặc điểm bài toán và các ràng buộc của nó.
26
• Bước 5: Xác định các tham số cho bài toán. Các tham số này có thể không
thay đổi trong quá trình tiến hoá hoặc có thể tự điều chỉnh tham số theo thời
gian.
Một số nhận xét
GA có phổ ứng dụng rộng, dễ sử dụng và hướng tới lời giải tối ưu toàn cục nên
được người dùng ưa thích. Tuy nhiên khi cáp dụng GA, cần lưu ý các điểm sau.
1. Trong tối ưu liên tục, GA thích hợp cho các bài toán nhiều cực trị và không
khả vi. Đối với các bài toán đã có phương pháp truyền thống thì thường GA
mất nhiều thời gian chạy hơn. Với các bài toán nhiều cực trị nhưng áp dụng
được phương pháp gradient thì có thể khởi tạo nhiều điểm xuất phát có phân
bố đều và áp dụng tìm kiếm gradient để chọn lời giải tốt nhất sẽ hiệu quả hơn
GA.
2. Trong tối ưu tổ hợp, việc chọn cấu trúc nhiễm sắc thể và kiểu gene rất quan
trọng đối với hiệu quả thuật toán. Kiểu gene chọn tốt sẽ thỏa mãn được nhiều
ràng buộc, hạn chế phạm vi tìm kiếm trong không gian trạng thái.
3. Việc tìm kiếm trong các thuật toán giải các bài toán tối ưu tổ hợp thường có
2 cơ chế chính: tìm kiếm tăng cường (intensification)/khai thác (exploitation)
quanh miền có lời giải tốt tìm được và khám phá (exploration)/ đa dạng (diver-
sification) nhằm tạo sinh các lời giải đa dạng để mở rộng tìm kiếm hướng tới
tối ưu toán cục. Trong GA, thủ tục chọn lọc là khâu chính hướng tới tìm kiếm
tăng cường còn các toán tử di truyền hướng tới sự khám phá. Khi áp dụng
GA cần cân bằng giữa hai cơ chế này. Việc chọn tham số cho các toán tử di
truyền cũng rất quan trọng đối với hiệu quả thuật toán
4. GA là thuật toán dễ sử dụng cho cả tối ưu liên tục và tối ưu tổ hơp. Tuy nhiên
khi dùng cho tối ưu liên tục, nó thích hợp cho các bài toán không khả vi và có
nhiều cực trị địa phương. Đối với các bài toán đã có các phương pháp truyền
thống tốt thì GA chạy lâu và chất lượng lời giải thường kém hơn. Các toán tử
di truyền có thể vận dụng mềm dẻo và đa dạng để tăng tính khám phá của
thuật toán.
5. Khi áp dụng GA, việc chọn biễu diễn gene và cấu trúc nghiếm sắc thể rất
quan trọng. Một cách chọn biễu diễn gene thích hợp sẽ cho phép đáp ứng
nhiều ràng buộc, thu hẹp không gian tìm kiếm và dễ xây dựng các toán tử di
truyền.
27
2.2. Phương pháp tối ưu hóa đàn kiến
Tối ưu hoá đàn kiến (Ant colony optimization, viết tắt là ACO) được đề xuất
bởi Dorigo vào năm 1991, mô phỏng cách tìm đường đi của các con kiến thực nhờ
kết hợp các thông tin heuristic và cách học tăng cường để giải các bài toán tối ưu
tổ hợp.
2.2.1. Cách tìm đường đi của kiến tự nhiên
Trên đường đi của mình đường đi từ tổ tới nguồn thức ăn và ngược lại, các con
kiến thực để lại một vết hóa chất được gọi là vết mùi (pheromone trail). Vết mùi
này là có khả năng tích lũy, bay hơi và là phương tiện giao tiếp báo cho các con
kiến khác thông tin về đường đi đó một cách gián tiếp. Ở mỗi lối rẽ, các con kiến
sẽ lựa chọn lối tiếp theo dựa trên nồng độ lượng mùi trên đó, nồng độ càng cao thì
càng nhiều khả năng được chọn. Những lối rẽ thuộc đường đi dài thì vết mùi bay
hơ nhiều nên nồng độ thấp, dần dần các con kiến sẽ chọn lối rẽ có nồng độ mùi
cao và do đó thuọc đương đi ngắn nhất. Nhờ cách giao tiếp mang tính gián tiếp
và cộng đồng này mà đàn kiến trong tự nhiên tìm được đường đi ngắn nhất trong
quá trình tìm thức ăn mang về tổ và ngược lại.
Hành vi của đàn kiến khi gặp chướng ngại vật trên đường đi được minh họa
trong hình 2.3, ở hình a cho thấy kiến chưa gặp vật cản, bất ngờ cómột chướng ngại
vật (hình b), kiến phân bố ngẫu nhiên theo nồng độmùi (hình c) và khi đường ngắn
có nồng độ mùi cao thì kiến luôn chọn đường này (hình d).
28
Hình 2.3: Phân bố của đàn kiến trên đường đi từ tổ tới nguồn thức ăn
2.2.2. Kiến nhân tạo
Thực nghiệm cây cầu đôi cho thấy đàn kiến tự nhiên có thể sử dụng luật di
chuyển theo xác suất, dựa trên thông tin địa phương để tìm được đường đi ngắn
nhất giữa hai địa điểm. Vết mùi của đàn kiến cho phép liên tưởng tới cách học
tăng cường (reinforcement learning) trong bài toán chọn tác động tối ưu, gợi mở
mô hình mô phỏng cho bài toán tìm đường đingắn nhất giữa hai nút (tương ứng là
tổ và nguồn thức ăn) trên đồ thị, trong đó các tác tử (agent) là đàn kiến nhân tạo.
Tuy nhiên, trong các bài toán ứng dụng các đồ thị thường phức tạp hơn.Từ mỗi
đỉnh có thể có nhiều cạnh, nên nếu mô phỏng thực sự hành vi của đàn kiến tự
nhiên nhiều con kiến sẽ đi luẩn quẩn và do đó hiệu quả thuật toán sẽ rất kém. Vì
vậy, người ta dùng kỹ thuật đa tác tử (multiagent) mô phỏngđàn kiến nhân tạo,
trong đó mỗi con kiến nhân tạo có khả năng nhiều hơn so với kiến tự nhiên. Kiến
nhân tạo (về sau trong luận án ta sẽ gọi đơn giản là kiến) có bộ nhớ riêng, có khả
năng ghi nhớ các đỉnh đã thăm trong hành trình và tính được độ dài đường đi nó
chọn. Ngoài ra, kiến có thể trao đổi thông tin với nhau, thực hiện tính toán cần
thiết, cập nhật mùi. . .
2.2.3. Phương pháp ACO tổng quát
Để trình bày phương pháp ACO tổng quát giải các bài toán tối ưu tổ hợp khó,
ta cần phát biểu lại bài toán tối ưu tổ hợp theo khung nhìn của heuristic cấu trúc.
29
Bài toán tối ưu tổ hợp tổng quát
Các cách tiếp cận trên được áp dụng rộng rãi và phong phú để giải các bài toán
tối ưu tổ hợp trong đó bài toán tối ưu tổng quát được phát biểu như sau.
Xét bài toán cực tiểu hóa trong đó S là tập hợp hữu hạn trạng thái, f là hàm
mục tiêu xác định trên S còn là các ràng buộc để xác định S qua các thành phần
của tập hữu hạn C và các liên kết của tập này. Các tập S, C, và có các đặc tính sau :
• 1) C = {c1, c2, ...,Cn}là tập hữu hạn gồm n thành phần. Ta ký hiệu X là tập
các xâu thành phần trong C có độ dài không quá h : X = {}.
• 2) Tồn tại tập con X∗ của X và ánh xạ từ X∗ lên S sao cho ϕ−1(s) không rỗng
với mọi s ∈ S, hơn nữa, tập X∗ này xây dựng được từ tập con C0 của C và Ω
theo đặc tính 3.
• 3) Từ C0 mở rộng được thành X∗theo thủ tục tuần tự :
– x0 = là mở rộng được với ∀u ∈ C0 .
– Nếu xk = là mở rộng được thì từ Ω xác định được tập con
J(xk) của C sao cho với mọi uk=1 ∈ J(xk)ta có xk+1 =
là mở rộng được và xk ∈ X∗ khi J(xk) là rỗng.
– Với mọi u0 ∈ C , thủ tục mở rộng nêu trên xây dựng được mọi phần tử
của X∗. Không giảm tổng quả ta giả thiết rằng có tương ứng giữa các
phần tử trong X∗ với mỗi đường đi được mở rộng từ mỗi u0 trong C0.
Thuật toán tổng quát
Với bài toán tổng quát trên, về lý thuyết ta cú thể áp dụng thủ tục mở rộng để
xây dựng X∗ và chọn lời giải tốt nhất bằng phương pháp vét cạn, nhưng trên thực
tế, do bùng nổ tổ hợp thì khi số phần tử n của C lớn ta không thực hiện được đối
với bài toán thuộc loại NP-khó.
Để giải bài toán người ta đưa nó về bài toán tìm đường đi tối ưu trên đồ thị cấu
trúc sao cho mỗi lời giải chấp nhận được s ứng với đường đi , trong
đó xi thuộc tập đỉnh (thành phần C) của đồ thị, x1 thuộc tập đỉnh C0 (tham khảo
phương pháp constructive heuristics).
Đồ thị cấu trúc thường là đồ thị đầy đủ có trọng số G = (V, E,H, τ) trong đó V
là tập đỉnh tương ứng với tập thành phần C ở trên, E là tập các cạnh, H là vectơ các
trọng số heuristic của cạnh/đỉnh tương ứng, còn τ là vectơ vết mùi tích lũy được
ban đầu với khởi tạo bằng τ0 .
Thông tin heuristic và vết mùi có thể để ở đỉnh hoặc các cạnh của đồ thị tùy
theo đặc điểm bài toán dùng để định hướng tìm kiếm heuristic ngẫu nhiên khi xây
30
dựng lời nhờ mở rộng tuần tự từ một đỉnh trong C0 theo đặc điểm thứ 3 của bài
toán tổng quát.
Dựa trên đồ thị cấu trúc này, ta xây dựng thủ tục bước bước tuần tự tìm lời giải
cho các kiến nhân tạo.
Thông thường ta có thể đã có các phương pháp heuristic để tim lời giải đủ tốt
cho bài toán. Các thuật toán ACO kết hợp thông tin heuristic này với phương pháp
học tăng cường nhờ mô phỏng hành vi của đàn kiến để tìm lời giải tốt hơn.
Với quy tắc cập nhật mùi, các tham số, số kiến và điều kiện dừng (thường là
số lần lặp Nc định trước) đã được chọn các thuật toán được mô tả hình thức trong
hình 2.4.
Hình 2.4: Lược đồ thuật toán ACO tổng quát
Xây dựng lời giải
Để tiện trình bày, ta giả sử bài toán có vết mùi và thông tin heuristic để ở các
cạnh. Sau khi khởi tạo các tham số và cường độ mùi ban đầu, các con kiến chọn
ngẫu nhiên một đỉnh xuất phát trong C0 để thực hiện thủ tục xây dựng lời giải.
Trong mỗi lần lặp t, kiến chọn ngẫu nhiên một đỉnh tiếp theo trong C kết hợp
thông tin heuristic với thông tin mùi để xây dựng lời giải ngẫu nhiên theo thủ tục
mở rộng tuần tự nêu ở trên với quy tắc chuyển trạng thái như mô tả ở dưới.
Quá trình mở rộng tiếp tục cho tới khi mỗi con kiến k đều tìm được lời giải chấp
nhận được xk ∈ X∗ và do đó s(k) = ϕ(x(k)) . Để tiện trình bày, về sau ta sẽ xem
x(k) và s(k)như nhau không phân biệt X∗ với S.
Ký hiệu ω∗(t) là trạng thái tốt nhất các con kiến tìm được cho tới lúc này và
ωi(t) là lời giải tốt nhất trong bước lặp. Ở bước lặp t, ω∗(t) sẽ được xem là lời giải
gần đúng của bài toán.
Quy tắc chuyển trạng thái
Giả sử con kiến k đã xây dựng được lời giải tiềm năng xk = , nó sẽ
31
chọn đỉnh y thuộc J(xkn) để có xkn+1 với xác suất :
P(y|τ, xkn) =
ταu,yhu,y
∑j∈J(xk) τ
α
u,jhu,j
y ∈ J(xk)0 ngược lại
(2.2.2)
Quy tắc cập nhật mùi
Quy tắc cập nhật mùi có tính phổ dụng cho các thuật toán và là yếu tố ảnh
hưởng lớn tới chất lượng thuật toán. Để đảm bảo vết mùi hội tụ, người ta sử dụng
hằng số bay hơi vết mùi 0 < ρ <= 1 hay hệ số chiết khấu trong học tăng cường,
khi một cạnh được cập nhật mùi thì vết mùi biến đổi theo công thức:
τij ← (1− ρ)τij + ∆ij
Điểm then chốt là cạnh nào được cập nhật và lượng them vào thế nào là tùy theo
quy tắc được chon. Có nhiều quy tắc cập nhật mùi đã được đề xuất, trong đó điển
hình là các quy tắc hệ kiến (Ant System: AS), hệ đàn kiến (ACS), hệ kiến Max-
Min(Max–Min Ant System: MMAS) và hệ kiến Max-min trơn (Smooth Max-Min
Ant System: SMMAS).
Hệ kiến AS
Hệ kiến AS áp dụng quy tắc cập nhật mùi địa phương, và là quy tắc đầu tiên được
áp dụng trong số các thuật toán ACO. Theo quy tắc này, ở bước lặp t, mỗi kiến k
áp dụng cập nhật mùi cho tất cả các cạnh (ui, ui+1) thuộc lời giải ωk(t) theo công
thức:
∆i,j =
ρ 1Lk nếu(i, j) ∈ (ω(t))0 khác (2.2.3)
trong đó Lk là giá trị hàm mục tiêu f (ωk(t)) (không giảm tổng quát,được giả thiết
là dương). Nhược điểm của quy tắc là vết mùi ở các cạnh không được cập nhật sẽ
nhanh chóng dần về không nên hạn chế không gian tìm kiếm và thuật toán kém
hiệu quả.
Quy tắc ACS
Quy tắc này do Dorigo đề xuất năm (1997). Trong thuật toán ACS, việc cập nhật
mùi bao gồm cả hai hình thức địa phương và toàn cục. Cập nhật mùi địa phương
áp dụng cho mọi cạnh có kiến k sử dụng khi nó tìm lời giải. có hai cách cập nhật
mùi toàn cục.
a) Cập nhật mùi toàn cục áp dụng cho các cạnh thuộc lời giải tốt nhất của bước
lặp ω(t)hay toàn cục ω∗(t) và gọi tương ứng là i-best hay G-best. Theo cách i-besst,
∆τi,j được xác định theo công thức:
∆τi,j = ρ f (ω(t)) (2.2.4)
32
b) Cập nhật mùi toàn cục áp dụng cho tất cả các cạnh và cũng các hai cách i-best
hay G-best, với G-best thì ∆τij xác định theo công thức:
∆i,j =
ρ 1f (ω∗(t)) nếu(i, j) ∈ (ω∗(t))0 khác (2.2.5)
Quy tắc MMAS
Để khắc phục nhược điểm nêu trên của AS và ACS, Stutzle Hoos (2000) đề xuất
MMAS gồm 2 bước.
Bước thứ nhất, cập mùi toàn cục cho tất cả các cạnh theo phương thức i-best hoặc
G-best.
Bước thứ hai, so sánh các τi,jvới hai đại lượng τmax và τmin với τmax > τmin > 0 để
giới hạn vết mùi trong đoạn [τmax, τmin], cụ thể như sau:
τi,j =
τmax nếuτi,j > τmax
τi,j nếuτi,j ∈ [τmin, τmax]
τmin nếuτi,j < τmin
(2.2.6)
Nói chung, MMAS dùng i-best tốt hơn G-best nhưng cũng có thể dung luân
phiên cho các bước lặp. Khi bắt đầu thuật toán, vết mùi thường được thiết đặt
bằng ước lượng cận trên của vết mùi τmax. Cách khởi tạo như vậy kết hợp với tham
số bay hơi nhỏ làm chậm sự khác biệt vết mùi của các cạnh, do đó giai đoạn đầu
của MMAS mang tính khám phá. Nhờ giới hạn vết mùi trong đoạn [τmin, τmax] ,
MMAS hạn chế được tình trạng vết mùi dần về không, khắc phục được nhược
điểm của AS và ACS.
Quy tắc SMMAS
Quy tắc SMMAS lần đầu tiên được Đỗ Đức Đông và cộng sự dùng cho bài toán
lập lịch sản xuất và được trình bày chặt chẽ cho bài toán TSP.
SMMAS được đề xuất dựa trên nhận xét hai nhược điểm của MMAS:
• Thứ nhất, nếu chọn τmax, τmin lệch nhau ít thì làm triệt tiêu hiệu quả học tăng
cường, còn nếu chọn lệch nhau nhiều thì vết mùi ở các cạnh ít được cập nhật
sẽ nhanh chóng về τmin làm hạn chế không gian tìm kiếm mặc dù có nhẹ hơn
AS và ACS.
• Thứ hai là đâị lượng ∆τi,j phụ thuộc giá trị hàm mục tiêu làm cho thuật toán
phải tính toán phức tạp, tuy nhiên trong học tăng cường thì không cần thiết.
Một trong các cải tiến là khi khởi tạo lại vết mùi, việc cập nhật mùi thường xuyên
bằng lời giải tốt nhất tìm được mới nhất thay vì cố định.
33
Với nhận xét trên, SMMAS không giảm vết mùi ở các cạnh không thuộc lời giải
tốt quá nhanh như quy tắc MMAS mà dùng quy tắc Max-Min trơn bằng cách cập
nhật τi,j toàn cục cho mọi cạnh với ∆τi,j xác định bởi:
τij ← (1− ρ)τij + ∆ij
trong đó:
∆i,j =
ρτmax nếu(i, j) ∈ (t)ρτmin khác (2.2.7)
Quy tắc này cũng khởi tạo τ0 = τmax. Đây là một phương pháp cập nhật mùi dễ cài
đặt và có độ phức tạp tính toán cũng thấp hơn so với các phương pháp trước nó.
Thực nghiệm và phân tích toán học cho thấy nó tốt hơn MMAS.
Tái khởi tạo vết mùi
Việc sử dụng thông tin vết mùi như cơ chế học tăng cường giúp ta tìm kiếm
quanh lời giải tốt, tuy nhiên có thể bỏ sót những miền tiềm năng chứa lời giải tốt
hơn. Để tăng tính khám phá, nếu sau một số bước lặp mà lời giải tốt nhất ω∗(t) tìm
được không đổi so với các bước trước đó thì nên khởi tạo lại vết mùi.
Tìm kiếm địa phương
Lược đồ ACO ở trên thực hiện tìm kiếm ngẫu nhiên để tìm lời giải gần đúng nên
không gian tìm kiếm rộng. Thông thường thì các kỹ thuật tìm kiếm địa phương hội
tụ đến cực trị địa phương nhanh hơn. Vì vậy người ta thường áp dụng kỹ thuật
tìm kiếm địa phương để tăng cường chất lượng lời giải cho lời giải tốt nhất hoặc
cho mọi lời giải trong mỗi bước lặp trước khi cập nhật mùi.
34
Chương 3
Thuật giải di truyền cho bài toán
q-CaRS
Như đã giới thiệu trong chương 1, thuật toán tiến hóa sử dụng những nguyên
tắc của sự tiến hóa để khai thác và tìm kiếm các giải pháp trong bài toán tối ưu.
Giải thuật di truyền cũng tương tự như vậy. Giải thuật di truyền cổ điển sử dụng
những nguyên tắc của sự tiến hóa dựa trên sự chuyển đổi của gen theo chiều dọc,
ví dụ sự kế thừa của con cái từ cha mẹ. Với sự phổ biến của lý thuyết tiến hóa
trong ngành khoa học máy tính, các cơ chế tiến hóa khác được tạo ra ví dụ như
chuyển đổi gen theo chiều ngang (HGT), và HGT cũng được coi là nền tảng cho sự
tiến hóa của nhiều ngành khoa học. HGT, còn được gọi là chuyển gen ngoài, tức là
ngoài việc kế thừa từ cha mẹ sang con thì gen có thể được kế thừa từ những sinh
vật khác [10]. Các cơ chế chính của HGT là chuyển đổi, phân chia và truyền dẫn.
Chuyển đổi là sự hấp thụ thông tin di truyền tự nhiên của sinh vật từ bên ngoài,
phân chia là quá trình chuyển giao thông tin di truyền thông qua sự tiếp xúc vật lý
từ tế bào cho sang tế bào nhận. Và truyền dẫn là quá trình chuyển đổi gen thông
qua một virus trung gian.
Các yếu tố di truyền di động như transposons và plasmid là phương tiện quan
trọng giữa HGT và vi khuẩn. Transposons hay các gen nhảy là các đoạn DNA có
khả năng dịch chuyển nơi cư trú của chính mình trong một bộ gen. Một plasmid
là một phân tử AND nhỏ có khả năng sao chép độc lập. Các bài toán dựa trên sự
dịch chuyển của transposon được lần đầu giới thiệu trong [35] . Tuy nhiên, những
nghiên cứu dựa trên hành động của plasmid ít được nghiên cứu rộng rãi. Một giải
thuật tiến hóa dựa trên sự biến đổi của plasmids được giới thiệu trong [36, 37] và
được áp dụng cho bài toán xếp ba lô dạng 0/1, thuật toán sử dụng sự tổng hợp
các đoạn DNA vào nhiễm sắc thể. Các đoạn DNA là những chuỗi nhị phân được
thu thập từ một kho lưu trữ được tạo ra từ lúc bắt đầu của quá trình tiến hóa và
được cập nhật theo thời gian thực. Một ý tưởng tương tự được giới thiệu trong
35
[13], đã sử dụng một virus để vận hành sự chuyển đổi gen giữa các nhiễm sắc thể
trong giải thuật di truyền. Cơ chế HGT cũng đóng một vài trò quan trọng trong
giải thuật tiến hóa vi khuẩn (BEA) trong [31]. Thuật toán BEA lấy những phần tốt
nhất của nhiễm sắc thể để sao chép sang những nhiễm sắc thể xấu. Một biến thể
memetic của BEA được giới thiệu trong [12] và được áp dụng trong TSP. Thao tác
của plasmid và transposon đều được sử dụng trong thuật chuyển đổi gen trong
[19, 22] để thúc đẩy sự phát triển của những giải pháp tiềm năng mới. Các thao tác
tái tổ hợp và chéo nhau không được sử dụng cho những thuật toán trên.
Những nghiên cứu của lý thuyết tiến hóa cũng được xem xét cho những sinh vật
nhân sơ(prokaryotes), gần đây có nhiều nghiên cứu đã cung cấp bằng chứng rằng
nó cũng xảy ra với cả những sinh vật nhân chuẩn(eukaryotes). Trong luận văn này,
thuật toán tiến hóa sử dụng thao tác plasmid của nhiễm sắc thể và đồng thời sử
dụng thao tác tái sản sinh .
3.1. Biểu diễn quần thể
Trong bài toán này ta sẽ biểu diễn nhiễm sắc thể dạng nguyên. Mỗi nhiễm sắc
thể là một mảng hai chiều với một hàng là tập tuần tự các thành phố đến thăm và
một hàng là tập các xe được sử dụng.
Hình 3.1: Nhiễm sắc thể
Thuật toán láng giềng gần nhất được sử dụng để xây dựng đường dẫn giữa 2
thành phố theo chi phí cạnh của chiếc xe gắn liền với con đường đó. Tour bắt đầu
tại thành phố 1. Xe c1 được chọn ngẫu nhiên để di chuyển từ thành phố 1 tới thành
phố ngẫu nhiên i (c1 được trả lại ở i). Nếu giá trị ràng buộc tối thiểu không được
thu thập, thành phố i sẽ là điểm khởi tạo trong phần tiếp theo của tour. Một xe mới
c2 và một thành phố chưa đến thăm j sẽ được chọn ngẫu nhiên. Một đường dẫn
sẽ được tạo ra giữa thành phố i và j bằng việc chỉ xem xét đến các thành phố chưa
đến thăm. Tiến trình sẽ tiếp diễn cho đến khi thu được giá trị ràng buộc nhỏ nhất.
Chu trình sẽ được đóng với một cạnh từ thành phố cuối cùng trong tour đi đến
thành phố 1. Bài toán biến thể được xem xét đến trong nghiên cứu này không cho
36
phép một xe có thể được thuê nhiều hơn 1 lần, vậy nên nếu không còn xe mới nào
được thêm thì chiếc xe cuối cùng sẽ được sử dụng dể di chuyển đến các thành phố
khác cho đến khi thu được giá trị rằng buộc tối thiểu .
3.2. Quá trình tái tạo
Quá trình tái tạo được thực hiện dựa vào toán tử di truyền và biến dị.
Toán tử tương giao chéo:
Khi khởi tạo quần thể, một tập các cá thể tốt nhất sẽ được chọn ra gọi là tập
elite. Trong mỗi lần tái tạo ta sẽ chọn ngẫu nhiên một cá thể trong quần thể và một
cá thể trong tập các cá thể tốt nhất để tương giáo chéo với điểm tương giao chéo là
ngẫu nhiên. Sau khi tái tạo tập các cá thể tốt nhất được cập nhật lại.
Toán tử biến dị:
Toán tử biến dị ở đây chính là một đoạn plasmid là đoạn gen được chọn ra từ tập
elite. Một đoạn gen trong cá thể được chọn lọc để tái tạo sẽ được thay thể tương
ứng với plasmid.
Hình 3.2: Plasmid
Ví dụ trong hình 3.2 một cá thể sol được chọn ra từ quần thể và cá thể sol’ được
chọn ra từ tập elite. Một đoạn plasmid được chọn ra từ sol’. Tương tự ta loại bỏ
1 đoạn gen ngẫu nhiên có kích thước bằng với plasmid từ sol cho kết quả là sol".
Thay thể đoạn gen bị loại bỏ bằng plasmid ta có kết quả là sol”’.
37
3.3. Thủ tục tìm kiếm địa phương
Để tăng cường chất lượng của lời giải "sol" ta có thủ tục tìm kiếm địa phương
multiOperatorsSearch với 6 thủ tục:
-removeSaving: sẽ loại bỏ các thành phố có giá trị hạn ngạch thấp nhất từ sol
cho đến khi tổng ràng buộc yêu cầu là nhỏ nhất.
Ví dụ như hình ta có một nhiễm sắc thể với 1 chiều là mảng các thành phố, mỗi
thành phố có một mức độ hài lòng. Tổng mức độ hài lòng yêu cầu là 288 nhưng
tổng mức độ hài lòng hiện tại đang là 330, vì thế ta sẽ loại bỏ một số thành phố.
Thành phố 7 đang có mức độ hài lòng thấp nhất nên sẽ là điểm loại bỏ đầu tiên.
Sau khi loại bỏ thành phố 7 mức độ hài lòng là 317 vẫn lớn hơn yêu cầu, ta tiếp tục
xét đến thành phố liền kề đứng trước thành phố 7 là thành phố 6. Tiếp tục loại bỏ
thành phố 6 mức độ hài lòng là 290 vẫn lớn hơn 288. Xét tiếp thành phố 5 nhưng
tồng mức độ hài lòng là 257 nhỏ hơn 288 vì vậy ta không thể loại bỏ thành phố 5.
Đây là kết cuối cùng sau thủ tục removeSaving.
Hình 3.3: removeSaving
-invertSol: Hàm đảo ngược invertSol của sol có kết quả là sol
′
. Những xe liên
quan tới các thành phố trong sol cũng có giá trị sol
′
tương đương. Thứ tự của các
38
lượt thăm được đảo ngược, do đó các điểm cho thuê và các điểm trả lại được trao
đổi, điều này làm ảnh hưởng đến chi phí của giải pháp. Thủ tục invertSol trả về giải
pháp tốt nhất giữa sol và sol
′
.
Hình 3.4: invertSol
-replaceSavingCity: Tất cả những thành phố chưa thăm được xem xét cho sự bổ
sung. Mỗi thành phố chưa thăm được kiểm tra để thay thế 1 thành phố trong sol.
Những xe đã được gán sẽ không thay đổi.
Trong hình 3.5 , thành phố 7 là thành phố chưa được thăm. Ta sẽ xét thay thế
thành phố 7 cho các thành phố 2, 3, 4, 5
Hình 3.5: replaceSavingCity
-insertSavingCity: Thủ tục insertSavingCity cũng tập trung vào các thành phố
chưa được thăm, các thành phố chưa được thăm sẽ được chèn vào các vị trí mà
không loại bỏ bất kì thành phố nào trong sol. Xe được thuê là xe tương ứng với
thành phố trước đó.
Trong hình 3.6, thành phố 2 là thành phố chưa được thăm. Ta sẽ bổ sung thành
phố 2
39
Hình 3.6: insertSavingCity
-replaceSavingCar: Thủ tục replaceSavingCar kiểm tra việc chèn xe chưa được
sử dụng . Tất cả những chiếc xe chưa sử dụng được xem xét và chèn vào tại tất cả
các điểm của sol.
Ví dụ minh họa thay thế chiếc xe 1 trong các hình: 3.7, 3.8, 3.9, 3.10
Hình 3.7: Thay thế xe 1 bắt đầu từ vị trí 2
40
Hình 3.8: Thay thế xe 1 bắt đầu từ vị trí 3
Hình 3.9: Thay thế xe 1 bắt đầu từ vị trí 4
41
Hình 3.10: Thay thế xe 1 bắt đầu từ vị trí 5
- 2-opt.:Tất cả 2-opt di chuyển đều được kiểm tra. Trình tự của xe gắn với tour
cũng sẽ được giữ nguyên.
Lời giải cụ thể được biểu diễn trong thuật toán MemPlas dưới đây
3.4. Thuật toán MemPlas
Mã giả của thuật toán MemPlas được biểu diễn trong (thuật toán 1) . Đầu vào
của thuật toán có 5 tham số: số lượng quần thể (sizePop), kích thước của plasmid
(sizePlas), tỉ lệ tái tổ hợp (#cross), kích thước của các lớp (#elite) và số lần lặp tối đa
(limitIter). Tâp giá trị elite sẽ chứa những #elite tốt nhất từ quần thể. Plasmid bao
gồm những đoạn gen thu được trong tập elite. Trong 9 lần lặp, nhiễm sắc thể sẽ
được tái tổ hợp. Trong lần lặp cuối cùng, một plasmid sẽ được sử dụng để thay đổi
nhiễm sắc thể đã chọn.
42
Hình 3.11: Thuật toán MemPlas
Thao tác khôi phục có thể cần thiết sau khi thực hiện tái tổ hợp hoặc plasmid.
Giải pháp có thể cần được sửa chữa do các tour du lịch không khả thi hoặc việc
phân chia xe không khả thi hoặc là việc thu thập hạn mức là không khả thi. Hình
2 minh hoạ một nhiễm sắc thể C mà cần phải sửa chữa. Thành phố 3 và 7 trong
C đã đến thăm 2 lần và xe 2 và 3 đã được thuê 2 lần. Thao tác sửa chữa được mô
tả trong [22]. Để xóa bỏ tính chất không khả thi của tour, một dấu sao (*) sẽ thay
thế một thành phố trong nhiễm sắc thể. Những thành phố được chọn ngẫu nhiên
trong những thành phố chưa thăm. Nếu không còn thành phố nào chưa thăm thì
gen tương ứng với dấu sao sẽ được xóa. Để bỏ tính chất không khả thi của việc
phân chia xe, dấu * sẽ thay thế cho việc lặp đi lặp lại việc thuê xe như trong nhiễm
sắc thế thứ hai trong hình 2. Sau đó ta sẽ quét từ trái sang phải và dấu * trong index
i sẽ được thay thế bởi thành phần index i-1. Cuối cùng, giá trị ràng buộc nhỏ nhất
được xác nhận. Đặt l là giá trị biểu diễn số lượng thành phố đã thăm. Nếu yều cầu
ràng buộc không được thỏa mãn thì các giá trị ràng buộc sẽ được sắp xếp theo thứ
tự không giảm và thành phố tương ứng được đánh số từ 1 đến l. Thủ tục bắt đầu
từ thành phố đầu tiên và nó sẽ duyệt để thay thế một thành phố đã thăm với một
thành phố chưa thăm mà có giá trị ràng buộc cao hơn cho đến khi yêu cầu được
thỏa mãn. Nếu thành phố thứ l đã được thay thế mà yêu cầu vẫn chưa được thỏa
mãn thì các thành phố sẽ được bổ sung ngẫu nhiên vào vị trí cuối cùng cho đến
khi yêu cầu ràng buộc đạt yêu cầu. Khi đó xe sẽ được gán với mỗi thành phố được
thêm cho đến thành phố cuối cùng.
43
Hình 3.12: Sửa chữa tour
3.5. Kết quả thực nghiệm
3.5.1. Bộ dữ liệu chuẩn
Trong phần này sẽ giới thiệu kết quả của việc tính toán thực nghiệm dựa trên 40
trường hợp q-CaRS. Dữ liệu được lấy từ
Các thông số trong mỗi file:
DIMENSION: Số lượng thành phố.
CARS_NUMBER: Số lượng xe để thuê.
NODE_COORD_SECTION: Tọa độ thành phố .
EDGE_WEIGHT_SECTION: Giá thuê xe tại mỗi thành phố.
RETURN_RATE_SECTION: Giá thuế trả lại xe tại mỗi thành phố.
Chí phí di chuyển từ thành phố i đến thành phố j với chiếc xe c được tính theo
công thức như sau:
dcij =
2Lc[i] + 3Lc[j]
3
+ d[i][j] (3.5.1)
Mức độ hài lòng tại mỗi thành phố được tạo ngẫu nhiên trong khoảng(0, 100);
3.5.2. Tiến hành chạy thực nghiệm
Chương trình được viết bằng ngôn ngữ Java chạy trên máy Desktop cấu hình
CPU intel core i5 2.5Ghz Ram 4GB, sử dụng hệ điều hànhWindow10. Vì GA là lớp
thuật toán meta-heuristic nên mỗi lần chạy sẽ cho các kết quả cụ thể là khác nhau,
nên tôi tiến hành chạy chương trình 10 lần trên mỗi bộ dữ liệu, thống kê kết quả
lấy giá trị kết quả tốt nhất và kết quả trung bình. Bên cạnh đó là thời gian tương
ứng chạy với các kết quả.
3.5.3. Kết quả thực nghiệm
Phần này thực hiện với hai bộ tham số khác nhau để đánh giá về mức độ ảnh
hưởng khi thay đổi các tham số đầu vào
44
Tiến hành thực nghiệm với các tham số
Tham số Giá trị
Số lượng quần thể( sizePop) 150
Số lượng vòng lặp 10
Tỉ lệ tái tổ hợp(#cross) 0.4
Tỉ lệ chọn các cá thể tối ưu ( #elite) 0.3
Kích thước của plasmid(sizePlas) [3, 0.4s] với s là kích thước cá thể chứa plasmid
45
Hình 3.13: Kết quả thực nghiệm 1 của GA
46
Tiến hành thực nghiệm với các tham số
Tham số Giá trị
Số lượng quần thể( sizePop) 150
Số lượng vòng lặp 10
Tỉ lệ tái tổ hợp(#cross) 0.5
Tỉ lệ chọn các cá thể tối ưu ( #elite) 0.5
Kích thước của plasmid(sizePlas) [3, 0.4s] với s là kích thước cá thể chứa plasmid
47
Hình 3.14: Kết quả thực nghiệm 2 của GA
Bảng trên thống kê kết quả sau 10 lần chạy thực nghiệm đối vởi cả 35 bộ dữ. Trong
đó mỗi hàng thể hiện cho một bộ dữ liệu. Kết quả trung bình là kết quả chạy trung
bình của 10 lần chạy, kết quả tốt nhất là kết quả tốt nhất trong 10 lần chạy. Tương
ứng là thời gian chạy với các kết quả.
Từ các kết quả thực nghiệm khi tỉ lệ tương giao và tỉ lệ chọn các nhiễm sắc thể ưu
tú cao thì kết quả không tốt với tỉ lệ thấp hơn. Việc lựa chọn ngẫu nhiên các nhiễm
48
sắc thể từ một tập lớn hơn sẽ bị ảnh hưởng đến chất lượng, bởi khi đó có thể chọn
vào các nhiễm sắc thể không tốt. Tuy nhiên nếu chọn tỉ lệ quá thấp có thể rơi vào
trạng thái cục bộ, bỏ qua kết quả tốt khác. Vì vậy tùy vào từng yêu cầu bài toán ta
có thể lựa chọn tỉ lệ một cách mềm dẻo để cho chất lượng lời giải tốt nhất.
49
Chương 4
Thuật toán ACO giải bài toán q-CaRS
4.1. Đồ thị cấu trúc
Giải bài toán tối ưu tổ hợp bằng thuật toán ACO việc quan trọng nhất là xây
dựng cấu trúc đồ thị.
Ta có:
A = a1, a2, ..., an là tập các thành phố.
C = c1, c2, ..., cm là tâp các xe để di chuyển.
Đồ thị cấu trúc của bài toán G = {V, E} được xây dựng như sau:
Đồ thị bao gồm l tầng như hình 4.1 . Mỗi đỉnh bao gồm thành phố xuất phát và
chiếc xe để di chuyển đến thành phố tiếp theo : vci = (i, c) : i ∈ A, c ∈ C. Các cạnh
của đồ thị ei j = (vci , v
c′
j ) : vi, vj ∈ A, i < j, c, c′ ∈ C nối các đỉnh đồ thị. Thông tin
heuristic được đặt trên các cạnh của đồ thị kí hiệu là τ(vci , v
c′
j ). Quy tắc cập nhật
vết mùi được áp dụng theo thuật toán SMMAS[2].
50
Hình 4.1: Đồ thị cấu trúc
Thuật toán được xây dựng như dưới đây:
Bước 1. Khởi tạo ma trận vết mùi, và tập K gồm k kiến.
Bước 2. Thực hiện lặp trong khi chưa thoả mãn điều kiện dừng
Với mỗi kiến ta tiến hành các bước sau:
2.1. Khởi tạo đỉnh xuất phát vci bằng cách chọn thành phố cơ sở và chiếc xe di
chuyển c thuộc C. Cập nhật lại A = A− i .
2.2 Thực hiện lặp với t >= 2. Chọn đỉnh tiếp theo vc
′
j = (j, c
′) với xác suất
Pvci vc
′
j
=
[τ
vci v
c′
j
]α[η
vci v
c′
j
]β
∑l∈A,c′∈C[τvci vc
′
l
]α[η
vci v
c′
l
]β
.Cập nhật lại A = A − i . Nếu đỉnh trước đó được
chọn có xe c 6= c′ ta cập nhật lại C = C− c
2.3. Thực hiện tìm kiếm cục bộ trên lời giải tốt nhất do các kiến tìm được để cải
thiện chất lượng lời giải.
2.4. Cập nhật lại lời giải tốt nhất.
2.4. Cập nhật vết mùi theo quy tắc SMMAS dựa trên lời giải tốt nhất.
Bước 3. Lưu lại lời giải tốt nhất.
Sơ đồ thuật toán của việc xây dựng một lời giải pi bởi một con kiến được phác
thảo dưới đây:
51
Hình 4.2: Xây dựng lời giải của kiến
4.2. Vết mùi và thông tin heuristic
Vết mùi τ(vci , v
c′
j ) trên cạnh τ(v
c
i , v
c′
j ) được khởi tạo bằng τmax và được cập nhật
lại theo mỗi vòng theo công thức.
Thông tin heuristic đươc tính theo công thức:
ηvci v
c′
j
=
1
dcij + γ
c
ij
(4.2.1)
trong đó dcij là chi phí di chuyển từ thành phố i đến thành phố j và γ
c
ij là chi phí trả
lại chiếc xe nếu tại j xe c không được thuê .
4.3. Quy tắc cập nhật mùi
Sau khi tất cả các kiến đã xây dựng lời giải, lời giải của kiến tốt nhất được áp
dụng thủ tục tìm kiếm cục bộ để tăng chất lượng lời giải. Lời giải tốt nhất này được
sử dụng để cập nhật vết mùi trên các cạnh theo quy tắc cập nhật mùi SMMAS:
τ(vci , v
c′
j ) = (1− ρ)τ(vci , vc
′
j ) + ∆vci ,vc
′
j
(4.3.2)
52
trong đó:
∆vci ,vc
′
j
=
ρτmax nếu(vci , vc
′
j ) ∈ bestsolution
ρτmin nếu (vci , v
c′
j ) /∈ bestsolution
(4.3.3)
Trong đó τmax và τmin là các tham số được cho trước, ρ ∈ (0, 1) là tham số bay hơi
cho trước quy định 2 thuộc tính, ρ nhỏ thể hiện việc tìm kiếm quanh thông tin học
tăng cường, ρ lớn thể hiện tính khám phá.
4.4. Thủ tục tìm kiếm cục bộ
Để tăng cường chất lượng lời giải, ta sử dụng thêm thủ tục tìm kiếmđịa phương.
Thục tục tìm kiếm cục bộ trong phần này được áp dụng hàmmultiOperatorsSearch
như trong thuật toán GA ở phần trên.
4.5. Kết quả thực nghiệm
Thực nghiệm được tiến hành để so sánh với thuật toán GA nên sử dụng bộ dữ
liệu chuẩn như trong GA với cấu hình máy tương tự.
Vì ACO là lớp thuật toán meta-heuristic nên mỗi lần chạy sẽ cho các kết quả cụ thể
là khác nhau, nên tôi tiến hành chạy chương trình 10 lần trên mỗi bộ dữ liệu, thống
kê kết quả thu được, so sánh thông qua 2 tiêu trí là kết quả tốt nhất, kết quả xấu
nhất và kết quả trung bình của 10 lần chạy đó. Để so sánh với thuật toán GA ta sẽ
chạy thực nghiệm của ACO với cùng số lời giải. Như giới thiệu ở trên, GA sử dụng
số lượng quần thể là 150 và số vòng lặp là 10, do đó trong ACO ta sử dụng 10 kiến
và đẩy số lượng vòng lặp là 150.
4.6. Kết quả thực nghiệm và đánh giá
Tương tự với thuật toán GA ta cũng thực nghiệm với hai bộ tham số khác nhau
để đánh giá mức độ ảnh hưởng của các tham số
53
Tiến hành thực nghiệm với các tham số
Tham số Giá trị
Tham số bay hơi( ρ) 0.03
α 2
β 6
Số kiến ban đầu 10
Số vòng lắp 150
τmax 0.1
τmin 0.008
Kết quả chạy:
54
Hình 4.3: Kết quả thực nghiệm 1 của ACO
55
Tiến hành thực nghiệm với các tham số
Tham số Giá trị
Tham số bay hơi( ρ) 0.03
α 2
β 6
Số kiến ban đầu 10
Số vòng lắp 150
τmax 0.1
τmin 0.008
Kết quả chạy:
56
Hình 4.4: Kết quả thực nghiệm 2 của ACO
Bảng trên thống kê kết quả sau 10 lần chạy thực nghiệm đối vởi cả 35 bộ dữ.
Trong đó mỗi hàng thể hiện cho một bộ dữ liệu. Kết quả trung bình là kết quả chạy
trung bình của 10 lần chạy, kết quả tốt nhất là kết quả tốt nhất của 10 lần chạy.
Tương ứng là thời gian chạy với các kết quả.
Kết quả cho thấy khi tham số bay hơi nhỏ thì thực nghiệm tốt hơn. Điều này cho
thấy việc học tăng cường trong bài toán này là quan trọng hơn.
57
So sánh với kết quả thực nghiệm của thuật toán GA
Trong phần này ta sẽ so sánh kết quả của hai thuật toán GA và ACO với bộ
tham số cho kết quả tốt nhất.
Hình 4.5: So sánh kết quả thực nghiệm của ACO và GA
Từ bảng so sánh ta thấy thuật toán ACO cho kết quả tốt hơn GA rất nhiều cả
về chất lượng và thời gian chạy trong nhiều trường hợp. Chỉ có 4 trường hợp được
58
in đậm trên tổng số 35 trường hợp tức là khoảng 11.5% kết quả cho thấy GA tốt
hơn. Như vậy tùy từng yêu cầu của bài toán về thời gian và chất lượng, nếu yêu
cầu thời gian chạy thấp ta có thể hoàn toàn sử dụng ACO để tìm kiếm lời giải.Tuy
nhiên mức độ ảnh hưởng của các tham số là khá lớn, vì vậy cần linh hoạt trong
bước lựa chọn tham số.
59
Phụ lục
Phụ lục này sẽ trình bày cách chạy chương trình và một số modules cơ bản của
thuật toán MemPlas dưới dạng ngôn ngữ Java 8.
Cách chạy chương trình:
Bước 1: mở chương trình với IDE ’ItelliJ IDEA’ như hình 4.6
Hình 4.6: Mở chương trình
Bước 2: Bấm nút ’Run’ để chạy chương trình như hình 4.7
60
Hình 4.7: Chạy chương trình
Kết quả được ghi vào file ’myfile.txt’.
Một số modules cơ bản:
Class City
public class City implements Comparable{
private String name;
private double x = 0;
private double y = 0;
private double satisfaction = 0;
public double getX() {
return x;
}
public double getY() {
return y;
}
public String getName() {
return this.name;
}
61
public double getSatisfaction() {
return this.satisfaction;
}
public double getDistance(City city) {
return Math.sqrt(Math.pow(city.getX() - x, 2) + Math.pow(city.getY() - y, 2));
}
public City(String name, double x, double y, double satisfaction) {
this.name = name;
this.x = x;
this.y = y;
this.satisfaction = satisfaction;
}
public int compareTo(City city) {
double compareSatisfaction = ((City) city).getSatisfaction();
return (int) (compareSatisfaction - this.satisfaction);
}
}
Class Car:
import java.util.HashMap;
public class Car {
private String name;
public HashMap prices = new HashMap();
public HashMap returnTaxes = new HashMap();
public String getName() {
return name;
}
62
public Car(String name) {
this.name = name;
}
public void setCityReturnTax(City city, double value) {
returnTaxes.put(city, value);
}
public double getCityReturnTax(City city) {
return returnTaxes.get(city);
}
public void setCityPrice(City city, double value) {
prices.put(city, value);
}
public double getCityPrice(City city) {
return prices.get(city);
}
public double getCarTax(City city) {
return getCityReturnTax(city);
}
public double getCarPrice(City fromCity, City toCity) {
double distance = fromCity.getDistance(toCity);
double price = (2 * getCityPrice(fromCity) + 3 * getCityPrice(toCity)) / 3 + distance;
return price;
}
}
Class CityCar
public class CityCar {
private City city;
private Car car;
63
public CityCar(City city, Car car) {
this.city = city;
this.car = car;
}
public City getCity() {
return city;
}
public Car getCar() {
return car;
}
}
64
KẾT LUẬN
Trong luận văn này emđã trình bày được nội dung thuật toán di truyền, phương
pháp tối ưu hóa đàn kiến, mô hình quy hoạch nguyên, bài toán thuê xe có hạn
ngạch, đưa ra mô hình nguyên cho bài toán và áp dụng thuật toán di truyền và
phương pháp tối ưu hóa đàn kiến giải bài toán trên.
Kết quả thực nghiệm tính toán được biểu diễn bằng cách cố định số lần lặp,
cố định số lần đánh giá và cố định thời gian xử lý đồng thời sử dụng hệ thống
kiểm định để phát hiện sự khác biệt trọng yếu trong thuật toán nhẳm đảm bảo
chất lượng của giải pháp. Kết quả thu được chỉ ra rằng thuật toán phương pháp
tối ưu hóa đàn kiến cho kết quả và thời gian chạy tốt hơn trong nhiều trường hợp.
Vấn đề được trình bày trong nghiên cứu này là mới, vậy nên có thể có một số
vấn đề có thể được nghiên cứu trong tương lai, ví dụ như ứng dụng của meta-
heuristic và thủ tục tìm kiếm địa phương, hoặc là nghiên cứu các biến thể khác của
q-CaRS, ví dụ một phiên bản với 2 tham số mà tổng ràng buộc được tối đa và chi
phí là nhỏ nhất.
Đóng góp chính của luận văn bao gồm:
1 Tìm hiểu và trình bày lại nội dung bài toán thuê xe có hạn ngạch q-CaRS.
2 Trình bày lại thuật toán di truyền giải bài toán q-CaRS và đề xuất thêm
phương pháp tối ưu hóa đàn kiến để giải bài toán.
3 Lập trình và đưa ra kết quả thực nghiệm đánh giá của hai thuật toán.
Tuy nhiên do thời gian thực hiện luận văn không nhiều còn có những sai sót em
rất mong nhận được sự góp ý của quý thầy cô và bạn đọc.
65
Tài liệu tham khảo
[1] Hoàng Xuân Huấn, Giáo trình tối ưu tổ hợp.
[2] D.D.Do, Q.H.Dinh, H.X.Hoang (2008), On the pheromone update rules of ant-
colony optimization approaches for the job shop scheduling problem. In The 11th
Paci-c Rim International Conference on Multi-Agents:Intelligent Agents and
Multi-Agent Systems, volume 5357 of Lecture Notes in ComputerScience, 153-
160, Springer, Heidelberg.
[3] W.P. Adams, R.J. Forrester, F.W. Glover, Comparisons and enhancement strategies
for linearizing mixed 0–1 quadratic programs, Discrete Optim, 1 (2)(2004) 99–120.
[4] J.O. Andersson, Lateral gene transfer in eukaryotes, Cell. Mol. Life Sci. 62 (11)
(2005) 11821197.
[5] G. Ausiello, M. Demange, L. Laura, V. Paschos, Algorithms for the on-line quota
traveling salesman problem,Inf. Process. Lett. 92 (2) (2005) 89–94
[6] B. Awerbuch, Y. Azar, A. Blum, S. Vempala, New approximation guarantees for
minimum-weight k-trees and prize-collecting salesmen, SIAM J. Comput.28 (1)
(1998) 254–262.
[7] T.-M. Chan, K.-F. Man, K.-S. Tang, S.A. Kwong, A jumping gene algorithm for
multiobjective resource management in wideband cdma systems, Comput.J. 48 (6)
(2005) 749–768.
[8] K. Cheverst, K. Mitchell, N. Davies, The role of adaptive hypermedia in a context-
aware tourist guide, Commun. ACM 45 (5) (2002) 47–51.
[9] G.A. Croes, A method for solving traveling-salesman problems, Oper. Res. 6 (1958)
791–812.
[10] J.D.V. Elsas, S. Turner, M.J. Bailey, Horizontal gene transfer in the phytosphere,
New Phytol. 157 (3) (2003) 525–537.
66
[11] A. Fink , T. ReinersModeling and solving the short-term car rental logistics problem,
Transp. Res. Part E 42 (4) (2006) 272–292 .
[12] P. Fo¨ldesi, J. Botzheim, Modeling of loss aversion in solving fuzzy road transport
traveling salesman problem using eugenic bacterial memetic algo- rithm, Memetic
Comput. 2 (2010) 259–271.
[13] T. Fukuda , N. Kubota , K. Shimojima ,Virusevolutionary genetic algorithm and its
application to travelling salesmam problem, in: X. Yao (Ed.), Evolu-tionary Com-
putation, Theory and Applications, World Scientific, 1999, pp. 235–255.
[14] A. Garcia, P. Vansteenwegen, O. Arbelaitz, W. Souffriau, M.T. Linaza, Integrat-
ing public transportation in personalised electronic tourist guides, Comput.Oper.
Res. 40 (3) (2013) 758–774.
[15] D. Gavalas, C. Konstantopoulos, K. Mastakas, G. Pantziou, A survey on algo-
rithmic approaches for solving tourist trip design problems, J. Heuristics 20(3) (2014)
291–328.
[16] D.K. George, C.H. Xia, Fleet-sizing and service availability for a vehicle rental sys-
tem via closed queueing networks, Eur. J. Oper. Res. 211 (1) (2011)198–207.
[17] F. Glover, E. Woolsey, Converting the 0–1 polynomial programming problem to a
0–1 linear program, Oper. Res. 22 (1) (1974) 180–182.
[18] GLPK, A. Makhorin, Gnu linear programming kit.
[19] E.F.G. Goldbarg, M.C. Goldbarg, Transgenetic algorithm: A new endosymbiotic
approach for evolutionary algorithms, in: A. Abraham, A.-E. Hassanien, P. Siarry,
A. Engelbrecht (Eds.), Foundations of Computational Intelligence Volume 3,
Studies in Computational Intelligence, volume 203, Springer Berlin Heidel-
berg, 2009, pp. 425–460.
[20] M.C. Goldbarg, P.H. Asconavieta, E.F.G. Goldbarg, Memetic algorithm for the
traveling car renter problem: an experimental investigation, Memetic Comput. 4 (2)
(2012) 89–108.
[21] M.C. Goldbarg, E.F. Goldbarg, M. da S. Menezes, H.P. Luna, A transgenetic
algorithm applied to the traveling car renter problem, Expert Syst. Appl. 40 (16)
(2016) 6298–6310
[22] M.C. Goldbarg, E.F. Goldbarg, P.H. Asconavieta, M. da S. Menezes, H.P. Luna,
Quota traveling car renter problem: Model and evolutionary algorithm, Expert Syst.
Appl. 40 (16) (2013) 6298–6310
67
[23] B. Golden, L. Levy, R. Vohra, The orienteering problem, Nav. Res. Logist. 34 (3)
(1987) 307–318.
[24] K. Hagen , R. Kramer , M. Hermkes , B. Schumann , P. Mueller , Semantic
matching and heuristic search for a dynamic tour guide, in: Information and Com-
munication Technologies in Tourism, Springer, 2005, pp. 149–159 .
[25] Hansen, C. Meyer, Improved compact linearizations for the unconstrained quadratic
0–1 minimization problem, Discr. Appl. Math. 157 (6) (2009) 1267–1290.
[26] R. Kramer , M. Modsching , K. ten Hagen , A city guide agent creating and adapt-
ing individual sightseeing tours based on field trial results, Int. J. Comput.Intel.
Res. 2 (2) (2006) 191–206 .
[27] P. Hansen, C. Meyer, Improved compact linearizations for the unconstrained
quadratic 0–1 minimization problem, Soft Comput. 11 (2007) 923941.
[28] P. Kumar, D. Gospodaric, P. Bauer, Improved genetic algorithm inspired by biolog-
ical evolution, Soft Comput. 11 (2007) 923941.
[29] M.S. Menezes, M.C. Goldbarg, E.F.G. Goldbarg, A memetic algorithm for the
prize-collecting traveling car renter problem, Evolutionary Computation(CEC),
2014 IEEE Congress on, 2014, pp. 3258–3265.
[30] C.E. Miller, A.W. Tucker, R.A. Zemlin, Integer programming formulation of trav-
eling salesman problems, J. ACM 7 (4) (1960) 326–329.
[31] N.E. Nawa, T. Furuhashi, Fuzzy systems parameters discovery by bacterial evolu-
tionary algoritm, IEEE Trans. Fuzzy Syst. 7 (5) (1999) 608–616.
[32] A.M. Nedelcu, I.H. Miles, A.M. Fagir, K. Karol, Adaptative eukaryote-to-
eukaryote lateral gene transfer: stress-related genes of algal origin in the closest uni-
cellular relatives of animals, J. Evol. Biol. 21 (6) (2008) 18521860.
[33] G. Reinelt, Tsplib– a traveling salesman problem library, ORSA J. Comput. 3 (4)
(1991) 376.
[34] M. Schilde, K. Doerner, R. Hartl, G. Kiechle, Metaheuristics for the bi-objective
orienteering problem, Swarm Intel. 3 (3) (2009) 179–201.
[35] A. Simões , E. Costa , Transposition: a biologically inspired mechanism to use with
genetic algorithms, in: Proceedings of the Fourth International Conference on Neural
Networks and Genetic Algorithms (ICANNGA’99), 1999, pp. 178–186.
68
[36] W. Souffriau, P. Vansteenwegen, G.V. Berghe, D.V. Oudheusden, A path relink-
ing approach for the team orienteering problem, Comput. Oper. Res. 37(11) (2010)
1853–1859.
[37] W. Souffriau, P. Vansteenwegen, J. Vertommen, G.V. Berghe, D.V. Oudheus-
den, A personalised tourist trip design algorithm for mobile tourist guides, Appl.
Artif. Intel. 22 (10) (2008) 964–985.
[38] W. Souffriau, P. Vansteenwegen, G.V. Berghe, D.V. Oudheusden, A path relink-
ing approach for the team orienteering problem, Comput. Oper. Res. 37(11) (2010)
1853–1859 .
[39] W. Souffriau, P. Vansteenwegen, J. Vertommen, G.V. Berghe, D.V. Oudheus-
den, A personalised tourist trip design algorithm for mobile tourist guides, Appl.
Artif. Intel. 22 (10) (2008) 964–985.
[40] T. Tsiligirides, Heuristic methods applied to orienteering, J. Oper. Res. Soc. 35 (9)
(1984) 797–809 .
[41] P. Vansteenwegen, D.V. Oudheusden, The mobile tourist guide: An or opportu-
nity, OR Insights 20 (3) (2007) 21–27.
[42] P. Vansteenwegen, W. Souffriau, G.V. Berghe, D.V. Oudheusden, Iterated local
search for the team orienteering problem with time windows, Comput.Oper. Res. 36
(12) (2009) 3281–3290.
[43] P. Vansteenwegen, W. Souffriau, G.V. Berghe, D.V. Oudheusden, The city trip
planner: An expert system for tourists, Expert Syst. Appl. 38 (6) (2011)6540–6546
[44] P. Vansteenwegen, W. Souffriau, D.V. Oudheusden, The orienteering problem: A
survey, Eur. J. Oper. Res. 209 (1) (2011) 1–10.
[45] Y. Yang, W. Jin, X. Hao, Car rental logistics problem: A review of literature, in: Ser-
vice Operations and Logistics, and Informatics, 2008. IEEE/SOLI 2008.IEEE Inter-
national Conference on, 2, 2008, pp. 2815–2819.
[46] S.-H. Yeung, H.-K. Ng, K.-F. Man, Multi-criteria design methodology of a dielec-
tric resonator antenna with jumping genes evolutionary algorithm, Int.J. Electron.
Commun. (AEU¨) 62 (2008) 266–276.
[47] W. Yu, Z. Bao, X. Bao, Optimal deterministic algorithms for some variants of online
quota traveling salesman problem, Eur. J. Oper. Res. 238 (3) (2014)735–740.
69
[48] J.R. Zaneveld, D.R. Nemergut, R. Knight„Are all horizontal gene transfers created
equal? prospects for mechanism-based studies of HGT patterns, Microbiology 154
(2008) 1–15.
70
Các file đính kèm theo tài liệu này:
- luan_van_bai_toan_thue_xe_du_lich_co_han_ngach.pdf