ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO BÀI TOÁN VẬN TẢI TUYẾN TÍNH Nguyễn Thu Huyền 1* , Vũ Mạnh Xuân 2 , Lương Sỹ Ước3 1 Trường Đại học Công nghệ Thông tin và Truyền thông- ĐH Thái Nguyên
Trang 1
ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO BÀI TOÁN
VẬN TẢI TUYẾN TÍNH
Nguyễn Thu Huyền 1* , Vũ Mạnh Xuân 2 , Lương Sỹ Ước3
1
Trường Đại học Công nghệ Thông tin và Truyền thông- ĐH Thái Nguyên
2
Trường Đại học Sư phạm- ĐH Thái Nguyên
3
Trường Cao đẳng Kinh tế- Kĩ thuật- ĐH Thái Nguyên
TÓM TẮT
Bài toán vận tải là một trong những bài toán điển hình và có nhiều ứng dụng của quy hoạch tuyến
tính Bài toán này không có gì phức tạp nếu mạng lưới giao thông tương đối đơn giản và số địa
điểm cung cấp, tiêu thụ không nhiều lắm Tuy nhiên, với những mạng lưới giao thông phức tạp thì
bằng kinh nghiệm và trực giác khó có thể tìm ra được phương án tối ưu Bài báo này nghiên cứu
ứng dụng Giải thuật di truyền giải bài toán vận tải tuyến tính, kết quả thử nghiệm được so sánh với
một số phương pháp đã có
Từ khóa: Giải thuật di truyền, bài toán vận tải tuyến tính
Giải thuật di truyền (GAs-Genetic
Algorithms) là giải thuật tìm kiếm, chọn lựa
các giải pháp tối ưu để giải quyết các bài toán
thực tế khác nhau, dựa trên cơ chế chọn lọc
của tự nhiên: từ tập lời giải ban đầu, thông
qua nhiều bước tiến hoá, hình thành tập lời
giải mới phù hợp hơn, và cuối cùng dẫn đến
lời giải tối ưu toàn cục GAs là một công cụ
hữu ích giúp giải quyết các bài toán tối ưu,
đặc biệt là bài toán tối ưu có không gian tìm
kiếm lớn [2] Bài toán vận tải tuyến tính là
một trong những bài toán điển hình và có
nhiều ứng dụng trong quy hoạch tuyến tính
Khi mạng lưới giao thông phức tạp, số địa
điểm cung cấp và nhận lớn thì việc tìm ra
được phương án tối ưu là rất khó khăn Vì
vậy, GAs có thể là một thuật giải phù hợp để
giải quyết bài toán này
Bài báo này tập trung nghiên cứu ứng dụng
Gas vào giải bài toán vận tải tuyến tính Kết
quả thử nghiệm được so sánh, đối chiếu với
các phương pháp khác như phương pháp tìm
phương án cực biên ban đầu, phương pháp
Vôghen để thấy được hiệu quả của đề xuất
Bài báo có cấu trúc như sau: Sau phần đặt vấn
đề là phần giới thiệu về nội dung và mô hình
toán học bài toán vận tải tuyến tính Phần kế
* Tel: 0904.012.478; Email: h2m174@gmail.com
tiếp trình bày về GAs và cách chọn các tham
số trong ứng dụng của GAs vào bài toán vận tải tuyến tính Cuối cùng là kết quả thử nghiệm và thảo luận
BÀI TOÁN VẬN TẢI TUYẾN TÍNH[1]
Nội dung bài toán
Giả sử cần vận chuyển một loại hàng thuần nhất (vật tư, lương thực…) từ m địa điểm cung cấp (điểm phát) A1, A2…Am đến n địa
- Số lượng hàng có ở Ai là ai (i=1 m)
- Số lượng hàng cần ở Bj là bj (j=1 n)
- Chi phí vận chuyển một đơn vị hàng từ Ai
Vấn đề đặt ra: Lập kế hoạch vận chuyển hàng
từ các địa điểm cung cấp đến các địa điểm tiêu thụ sao cho tổng chi phí vận chuyển là nhỏ nhất và thỏa mãn nhu cầu thu phát Bài toán vận tải là tuyến tính nếu chi phí tỉ lệ với
số lượng hàng vận tải
Mô hình toán học của bài toán
Gọi xij là số lượng hàng cần vận chuyển từ Ai
cijxij : tổng chi phí vận chuyển
xij : số lượng hàng chở đi từ Ai i = 1 m
xij : số lượng hàng chở tới từ Bj j = 1 n
Trang 2Vậy mô hình toán học của bài toán là:
f(x) = ∑i=1
m∑j=1n
chi phí) với các điều kiện:
- ∑j=1n
xij = ai
- ∑i=1m
xij = bj
- xij > 0, i = i m, j = 1 n
ÁP DỤNG GIẢI THUẬT DI TRUYỀN VÀO
GIẢI BÀI TOÁN VẬN TẢI TUYẾN TÍNH
Chúng tôi tiến hành giải bải toán bằng cách
sử dụng giải thuật di truyền như sau:
- Mã hóa: Mỗi cá thể là một ma trận (m x n)
chiều thể hiện số lượng hàng từ m địa điểm
cung cấp đến n địa điểm tiêu thụ Giá trị mỗi
phần tử trong ma trận là một số nguyên
không âm ngẫu nhiên thể hiện số lượng vận
chuyển cụ thể giữa các địa điểm cung cấp và
tiêu thụ.[2]
- Khởi tạo quần thể ban đầu gồm 100 cá thể
Vì mỗi cá thể là một ma trận cỡ (m x n) nên
để khởi tạo được 100 cá thể ban đầu, chúng
tôi phải lưu trữ 100 cá thể này vào mảng 3
chiều trong đó 2 chiều đầu thể hiện vận
chuyển giữa các địa điểm cung cấp và tiêu
thụ, chiều thứ 3 thể hiện thứ tự của cá thể
trong 100 cá thể của quần thể.[5]
- Tính độ thích nghi cho từng cá thể trong
quần thể ban đầu: Vì mỗi cá thể là một lời
giải của bài toán nên chúng tôi tính độ thích
nghi cho mỗi cá thể chính bằng tổng chi phí
vận chuyển của cá thể đó [4]
- Quá trình tiến hóa như sau [3]:
Hai cá thể cha mẹ được chọn (ngẫu nhiên) để
tiến hành lai ghép tạo ra hai cá thể mới
Chúng tôi tiến hành lai ghép bằng cách chọn
một cột ngẫu nhiên từ cha mẹ, sau đó con 1
nhận giá trị của cột tương ứng từ cha, con 2
nhận giá trị cột tương ứng từ me, sau đó các
giá trị còn lại trong ma trận của hai con được
sinh ngẫu nhiên thỏa mãn các điều kiện ràng
buộc của bài toán Sau khi sinh ra được 2 con
rồi, chúng tôi tiếp tục tính độ thích nghi cho
mỗi con bằng cách tính tổng chi phí vận
chuyển Xác xuất lai ở đây được xác định là
0.1 có nghĩa là quần thể gồm 100 cá thể thì ở
mỗi thế hệ chúng tôi lấy ngẫu nhiên ra 10 cá
thể để tiến hành lai ghép Cá thể mới sinh ra cạnh tranh với cha mẹ chúng Nếu các con sinh ra mà có độ thích nghi tốt hơn độ thích nghi của cha mẹ chúng tức là có chi phí vận chuyển nhỏ hơn thì các con (hoặc một con) sẽ
được chọn vào thế hệ tiếp theo,còn không thì
bị loại bỏ Tương tự như vậy, nếu bố mẹ (hoặc một trong hai bố mẹ) có độ thích nghi tốt hơn độ thích nghi của các con thì sẽ được giữ lại ở thế hệ tiếp theo, ngược lại thì bị đào thải Như vậy, tại mỗi thế hệ số lượng cá thể luôn là 100
- Số lần tạo sinh là 500 lần, tức là sau 500 thế
hệ cho ra kết quả và so sánh kết quả của GAs với hai giải thuật khác từ đó rút ra kết luận
KẾT QUẢ THỬ NGHIỆM Chúng tôi đã lập trình và chạy thử nghiệm hai giải thuật trên bằng ngôn ngữ Matlab phiên bản 7.13.0.564 Trong đó, chúng tôi chạy 100 lần chương trình và chọn ra các kết quả tốt nhất để so sánh với hai phương pháp là tìm phương án cực biên ban đầu và phương pháp
Vôghen
Chúng tôi nhập dữ liệu đầu vào là số địa điểm cung cấp m=3, số địa điểm tiêu thụ là n=4, số lượng cung cấp của địa điểm 1 là 170, số lượng cung cấp của địa điểm 2 là 200, của địa
điểm 3 là 180 Trong khi đó, số lượng tiêu thụ
của địa điểm 1 là 130, của địa điểm 2 là 160, của địa điểm 3 là 120 và địa điểm 4 là 140
Ma trận chi phí cij được cho bởi bảng sau:
Bảng 1: Ma trận chi phí c ij
20 18 22 25
15 25 30 15
45 30 40 35 Sau 100 lần chạy chương trình chúng tôi tìm
ra kết quả tốt nhất là 12596 Nó có nghĩa là với đầu vào như trên thì việc vận chuyển giữa các địa điểm được thể hiện trong bảng
2, trong đó tổng chi phí nhỏ nhất bằng GAs
là 12596
Bảng 2: Kết quả vận chuyển giữa các địa điểm của GAs
62 20 83 2
9 140 31 7
Trang 3Trong khi đó, với cùng một bộ dữ liệu đầu
vào phương pháp tìm phương án cực biên ban
đầu cho ra kết quả tốt nhất là 12950, tức là chi
phí vận chuyển giữa các địa điểm là 12950
Còn phương pháp Vôghen cho kết quả là
12200 Chi tiết của việc vận chuyển giữa các
địa điểm của hai phương pháp trên được thể
hiện trong bảng 3 và bảng 4
Bảng 3: Kết quả bằng phương pháp Vôghen
70 0 100 0
60 0 0 140
0 160 20 0
Bảng 4: Kết quả bằng phương pháp tìm phương
án cực biên ban đầu
0 160 10 0
0 0 110 70
Nhận xét:
Chúng tôi tiến hành chạy thử nghiệm áp dụng
GAs vào bài toán vận tải với bộ dữ liệu trên
vì để so sánh kết quả (cùng dữ liệu đầu vào)
với hai phương pháp đã có Kết quả từ bảng
2,3,4 cho chúng ta thấy rằng, sau 100 lần chạy
chương trình khác nhau của GAs thì cho kết
quả tốt hơn so với phương pháp tìm cực biên
ban đầu nhưng còn chưa tối ưu bằng phương
pháp Vôghen Chúng tôi cũng tiến hành chạy
thử nghiệm GAs với những bộ dữ liệu khác
lớn hơn, đặc biệt là số địa điểm cung cấp và
địa điểm tiêu thụ lớn hơn 8 và cũng cho kết
quả khả quan Đây là một tín hiệu tốt cho thấy
rằng bài toán vận tải tuyến tính có thể được
giải quyết bằng Giảỉ thuật di truyền và đạt kết
quả khả quan Từ đó cũng cho thấy GAs có
thể áp dụng vào các dạng bài toán tối ưu khác
nhau và cho kết quả khả quan
Mặc dù đây mới chỉ là một bài toán thử nghiệm, song chúng tôi thấy triển vọng phát triển là rất khả quan
THẢO LUẬN Trên cơ sở các kết quả nghiên cứu về giải thuật di truyền và áp dụng giải thuật này vào bài toán vận tải tuyến tính, chúng tôi có thể kết luận rằng Giải thuật di truyền là một công
cụ hữu ích giúp giải quyết các bài toán tối ưu,
đặc biệt là bài toán tối ưu có không gian tìm
kiếm lớn và cho ra kết quả khả quan Tuy nhiên, bài báo mới chỉ dừng lại ở áp dụng bài toán cụ thể chưa thể khẳng định được điều này với những lớp bài toán khác Vì vậy, để
có thể kết luận một cách tổng quát thì cần có nhiều thời gian và thử nghiệm trên nhiều bài toán khác Hơn nữa có thể kết hợp với việc dùng kích thước quần thể thay đổi, hoặc xác
định “tuổi” của các cá thể tham gia tiến hóa
để quyết định việc tăng hay giảm kích cỡ
quần thể cũng là hướng phát triển tự nhiên
TÀI LIỆU THAM KHẢO [1] Võ Văn Tấn Dũng (2007), Giáo trình quy hoạch tuyến tính, Nxb Thống kê
[2] Vũ Vinh Quang, (2009), “Giáo trình Giải thuật di truyền và ứng dụng”, Bộ môn Khoa học máy tính, ĐH Công nghệ thông tin và truyền thông, ĐH Thái Nguyên
[3] Bodenhofer (2004), “Genetic Algorithms: Theory and Applications”, Journal of Genetic Algorithms, Springer
[4] Bäck et al., (2000 a,b),” Evolutionary
Computation 2: Advanced Algorithms and Operators” Institute of Physics Publishing, Bristol,
UK
[5] Thomas Weise (2009), “Genetic Algorithms”, University of Kassel, Gemarny
Trang 4SUMMARY
APPLY GENETIC ALGORITHMS TO SOLVE
LINEAR TRANSPORTATION PROBLEM
Nguyen Thu Huyen 1* , Vu Manh Xuan 2 , Luong Sy Uoc3
1
College of Information Technology and Communication - TNU
2 College of Education -TNU
3
College of Economics and Technology – TNU
Transportation Problem is one of the typical problems and it has many practical applications of
Linear Programming It isn’t complex if network traffic is relatively simple with number of
provides and receives isn’t large However, if network traffic is complex we can’t find optimal
solution by experience and intuition This paper proposes a algorithm to solve a particular Linear
Transportation Problem using GA that has solved by some researchers The test results are
compared with some old methods to confirm the effective of GA
Key words: Genetic Algorithms, Linear Transportation Problem
Ngày nhận bài: 10/4/2013; Ngày phản biện: 02/5/2013; Ngày duyệt đăng: 26/7/2013
* Tel: 0904.012.478; Email: h2m174@gmail.com