• Nếu dùng chuỗi nhị phân biểu diễn cho Bài toán TSP có n thành phố, mỗi thành phố phải được mã bằng chuỗi log2(n) bit và nhiễm sắc thể là chuỗi gồm n*log2(n) bit. được mã bằng chuỗi log2(n) bit và nhiễm sắc thể là chuỗi gồm n*log2(n) bit.
• Tuy nhiên, phép lai tạo, đột biến có thể tạo ra một lộ trình không thỏa mãn bài toán, chẳng hạn, một thành phố đến 2 lần. hạn, một thành phố đến 2 lần.
• Ngoài ra, trong trường hợp n không là lũy thừa của 2 thì sẽ có một số dãy bit không tươngứng với thành phố nào cả. Ví dụ, n=20, khi đó cần dùng 5 bit để biểu diễn 1 thành phố và ứng với thành phố nào cả. Ví dụ, n=20, khi đó cần dùng 5 bit để biểu diễn 1 thành phố và dãy 10101 không tương ứng với 1 thành phố nào cả.
• Như vậy, ta có thể sử dụng một cách tự nhiên là đánh số các thành phố và dùng vectơ gồmcác số nguyên để biểu diễn một nhiễm sắc thể lộ trình. các số nguyên để biểu diễn một nhiễm sắc thể lộ trình.
GIẢI THUẬT DI TRUYỀN
2. Khởi tạo quần thể ban đầu: Có thể tạo bằng một trong các cách sau: Tạo ngẫu nhiên các mẫu từ các hoán vị của 1,2,..., n
Áp dụng các Heuristic, chẳng hạn, dùng Heuristic Greedy nhiều lần, mỗi lần từ một thành phố đầu khác
nhau.
3. Hàm lượng giá: Cho trước lộ trình ta có thể tính tổng khoảng cách (chi phí) của lộ trình đó. 4. Phép toán di truyền:
Phép lai ghép: Cần xây dựng phép lai ghép sao cho cá thể con phải bảo toàn thứ tự giữa các thành phố. Ví dụ cho cá thể bố mẹ là:
<1 2 3 4 5 6 7 8 9 10 11 12> <7 3 1 11 4 12 5 2 10 9 6 8>
Giả sử khúc được chọn là 4 5 6 7, cá thể con của phép lai ghép sẽ là:
<1 11 12 4 5 6 7 2 10 9 8 3>
Có thể hoán đổi vai trò bố mẹ để xây dựng cá thể con thứ 2 Phép đột biến: chỉ cần hoán vị 2 vị trí bất kỳ trong cá thể được chọn
Ví dụ: với nhiễm sắc thể <7 3 1 11 4 12 5 2 10 9 6 8> đột biến tại vị trí số 3 và vị trí 5, ta có
<7 3 4 11 1 12 5 2 10 9 6 8>
Ghi chú: Đây chỉ là một cách định nghĩa các phép toán di truyền. Với các Heuristic khác có thể thực phép phép toán tốt hơn
GIẢI THUẬT DI TRUYỀN