You are on page 1of 11

BÀI TẬP NHÓM

TRẦN VĂN NHẬT KIN - 20IT967


HOME WORK
Travelling Salesman Problem (TSP)
Given a set of cities and the distance between every pair of cities, using genetic algorithm
(GA) to find the shortest possible route that visits every city exactly once and returns to the
starting point.
The students themselves practice this exercise at home following the below instructions. They
should analyze the output chart to see the improvement of the fitness values over generations
representing in the distance values. HINT: The problem in the view of GA: -
• Gene: a city represented as (x, y) coordinates
• Individual (i.e. “chromosome”): a single route satisfying the conditions above
• Population: a collection of possible routes (i.e., collection of individuals)
• Parents: two routes that are combined to create a new route - Mating pool: a collection
of parents that are used to create our next population (thus creating the next generation of
routes)
• Fitness: a function that tells us how good each route is (in our case, how short the distance
is)
• Mutation: a way to introduce variation in our population by randomly swapping two cities
in a route
• Elitism: a way to carry the best individuals into the next generation
Lời giải :
GA của chúng ta sẽ tiến hành theo các bước sau:
1. Tạo quần thể
2. Xác định thể lực
3. Chọn bể giao phối
4. Giống
5. Đột biến
6. Lặp lại
Đầu tiên, phương pháp đột biến chỉ nên có khả năng xáo trộn tuyến đường, nó không bao giờ
được thêm hoặc xóa một vị trí khỏi tuyến đường, nếu không, nó sẽ có nguy cơ tạo ra một giải
pháp không hợp lệ. Một loại phương pháp đột biến mà chúng ta có thể sử dụng là hoán đổi đột
biến.
Với đột biến hoán đổi, hai vị trí trong tuyến đường được chọn ngẫu nhiên sau đó vị trí của
chúng được hoán đổi đơn giản. Ví dụ: nếu chúng tôi áp dụng biến đổi hoán đổi cho danh sách
sau, [1,2,3,4,5], chúng tôi có thể kết thúc với [1,2,5,4,3]. Ở đây, vị trí 3 và 5 đã được hoán đổi
để tạo ra một danh sách mới với các giá trị hoàn toàn giống nhau, chỉ là một thứ tự khác. Bởi
vì hoán đổi đột biến chỉ hoán đổi các giá trị đã tồn tại từ trước, nên nó sẽ không bao giờ tạo ra
một danh sách có các giá trị bị thiếu hoặc trùng lặp khi so sánh với danh sách ban đầu và đó
chính xác là những gì chúng tôi muốn cho bài toán người bán hàng lưu động.

Bây giờ chúng tôi đã xử lý phương pháp đột biến, chúng tôi cần chọn một phương pháp chéo
có thể thực thi cùng một ràng buộc.
Một phương pháp giao cắt có thể tạo ra một tuyến đường hợp lệ là giao nhau theo thứ tự.
Trong phương pháp chéo này, chúng tôi chọn một tập hợp con từ cha mẹ đầu tiên, sau đó thêm
tập hợp con đó vào con cái. Bất kỳ giá trị còn thiếu nào sau đó sẽ được thêm vào con cái từ cha
mẹ thứ hai để chúng được tìm thấy.
Để làm cho lời giải thích này rõ ràng hơn một chút, hãy xem xét ví dụ sau:

Cha mẹ

con đẻ

Ở đây, một tập hợp con của tuyến đường được lấy từ cha mẹ đầu tiên (6,7,8) và được thêm vào
tuyến đường con. Tiếp theo, các vị trí tuyến đường bị thiếu sẽ được bổ sung theo thứ tự từ cha
mẹ thứ hai. Vị trí đầu tiên trong lộ trình của cha mẹ thứ hai là 9 không nằm trong lộ trình của
con cái nên vị trí này được thêm vào vị trí khả dụng đầu tiên. Vị trí tiếp theo trong lộ trình của
cha mẹ là 8 nằm trong lộ trình của con cái nên nó bị bỏ qua. Quá trình này tiếp tục cho đến khi
con cái không còn giá trị trống nào. Nếu được triển khai chính xác, kết quả cuối cùng sẽ là một
tuyến đường chứa tất cả các vị trí mà cha mẹ đã thực hiện mà không có vị trí nào bị thiếu hoặc
trùng lặp.

CODE:

Để bắt đầu, hãy tạo một lớp có thể mã hóa các thành phố.
City.java
Tạo một lớp chứa tất cả các thành phố đích cho chuyến tham quan
TourManager.java

Tiếp theo, cần một lớp có thể mã hóa các tuyến đường của, những tuyến đường này thường
được gọi là các chuyến tham quan, vì vậy sẽ tuân theo quy ước.
Tour.java
Tạo một lớp có thể chứa một số lượng các chuyến tham quan ứng viên.
Population.java
Tạo một lớp GA sẽ xử lý hoạt động của thuật toán di truyền và phát triển tập hợp các giải
pháp .
GA.java
Tạo phương thức chính của mình, thêm các thành phố và phát triển lộ trình cho bài toán
người bán hàng lưu động.
TSP_GA.java
KẾT QUẢ:

You might also like