chuong 5. bai toan nguoi du lich va ga.pdf

Upload: tieu-minh

Post on 06-Jul-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    1/19

    Hà Nội, 2016

    BÀI TOÁN NGƯỜI DU LỊCH VỚI GA

    Ngưi son: TS Đ Văn Tu n

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    2/19

    1. Bài toán ngưi du lịch -TSP

    2/23

    Một khác du lịch cần phải ghé thăm mỗi thành  phố 1 lần (chính

    xác 1 lần), rồi trở về thành phố xuất phát. Với chi phí du lịch của

    từng cặp thành  phố được xác định trước (ci,j), khác du lịch cần

    xác định một lịch trình thăm quan các thành phố sao cho tổng chi

     phí là nhỏ nhất.

    Không gian tìm kiếm là số hoán vị của  thành phố, !.

    Mỗi một hoán vị của  thành phố là một lời giải và lời giải tối

    ưu là một hoán vị nào đó của tập {1, … , }.

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    3/19

    Bài toán TSP dưới dng đồ thị

    3/23

    Có thể mô phỏng mạng lưới các thành phố dưới dạng đơn đồ thị

    có trọng số:

    - Mỗi thành phố là một đỉnh của đồ thị

    - Chi phí đi du lịch của các cặp thành phố là trọng số của cạnh

    nối hai đỉnh liền kề

    Tìm một chu trình đi qua tất cả các đỉnh sao cho tổng chi phí

    đạt cực tiểu.

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    4/19

    2. Biểu diễn nhiễm sắc thể

    4/23

    có 3 cách biểu diễn NST cho bài toán TSP:

    - Danh sách kề

    - Có thứ tự- Lộ trình

    Sử dụng biểu diễn nhị phân cho NST không phù hợp với bài toánTSP, bởi chỉ cần thay đổi một bít (đột biến, lai ghép) cũng có thể

     biến NST con không còn là lời giải của bài toán.

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    5/19

    2.1. Biểu diễn Kề

    5/23

    Biểu diễn kề một hành trình là danh sách n phố. Thành phố thứ   j

    được đặt vào vị trí thứ  nếu và chỉ nếu tồn tại cạnh từ thành phố 

    đến thành phố  (ký hiệu i-j).

    Thí dụ hành trình:  1 − 2 − 4 − 3 − 8 − 5 − 9 − 6 − 7 − 1 được biểu thị bởi véc tơ :

    ( 2 4 8 3 9 7 1 5 6 )

    Mỗi thành phố xuất hiện một lần trong danh sách;

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    6/19

    Danh sách kề & Hành trình không hợp lệ

    6/23

    Không phải bất kỳ một danh sách kề nào cũng ứng với một hành

    trình hợp lệ. Ví dụ:

    (2 4 8 1 9 3 5 7 6)Hành trình tương ứng:

    1-2-4-1

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    7/19

    Phép toán lai ghép trên Danh sách kề

    7/23

    Biểu diễn kề không hỗ trợ  các phép toán lai ghép cổ điển, cần có

    một số sửa đổi. Có 3 dạng lai ghép đối với dạng Danh sách kề:

    - Lai có cạnh thay đổi

    - Lai các đoạnh hành trình con

    - Lai Heuristics

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    8/19

    Lai có cnh thay đổi

    8/23

    Tạo ra con mới bằng cách chọn (ngẫu nhiên) một cạnh từ cha-me

    thứ nhất, rồi chọn cạnh thích hợp từ cha-me thứ hai,... Một cách

    tổng quát là chọn các cạnh từ hai cha-me một cách luân phiên.

     Nếu cạnh mới chọn tạo thành chu trình con thì toán tử chọn một

    cạnh thay thế (ngẫu nhiên) từ các cạnh còn lại không tạo thành

    chu trình.

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    9/19

    Ví dụ lai ghép có cnh thay đổi

    9/23

    Giả sử p1= (2 3 8 7 9 1 4 5 6) và p2= (7 5 1 6 9 2 8 4 3)

    Có thể một con sẽ là:c1 = (2 5 8 7 9 1 6 4 3)

    Trong ví dụ này c1 xuất phát từ cạnh (1,2) của p1, và cạnh ngẫu

    nhiên duy nhất được tạo trong tiến trình xen kẽ là (7,6) thay vì

    (7,8) trên p2 sẽ tạo ra chu trình con.

    Con thứ 2 có thể:

    C2=(7 5 8 6 9 2 4 1 3)

    Cặp cạnh ngẫu nhiên trong tiến trình đan xen là: (6,2) thay cho(6,1) trên p1 và (8,1) thay cho (8,4) trên p2.

    Bài tập: Xây dựng hàm cho phép lai ghép có cạnh thay đổi.

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    10/19

    Lai các đon hành trình con

    10/23

    Tạo ra con mới bằng cách chọn hành trình con (chiều dài ngẫu

    nhiên) từ một trong các cha-me, rồi chọn hành trình con (chiều

    dài ngẫu  nhiên) từ một  cha-mẹ khác. Quá trình này được thực

    hiện đan xen.Trong quá trình tạo hành trình con, nếu việc them một cạnh nào

    đó  mà tạo  thành chu trình thì toán tử chọn một cạnh  thay thế

    (chọn ngẫu nhiên) từ các cạnh còn lại không tạo thành chu trình.

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    11/19

    Lai Heuristic

    11/23

    Chọn ngẫu nhiên một thành  phố làm điểm khởi hành cho hànhtrình của con.

    So sánh hai cạnh (từ cả hai cha  – mẹ) rời   thành thành  phố đã

    chọn và chọn cạnh có trọng số nhỏ hơn.Thành  phố ở đầu bên kia của cạnh đã chọn được sử dụng làm

    điểm khởi hành tiếp theo.

    Trong quá trình chọn cạnh ngắn hơn, nếu tạo ra chu trình thì hành

    trình được mở rộng bằng cách chọn ngẫu nhiên từ các cạnh còn

    lại mà không tạo thành chu trình.

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    12/19

    2.2 Biểu diễn có thứ tự

    12/23

    Biểu diễn có thứ tự hành trình là một danh sách n thành phố; phần tử

    thứ  của danh sách là một số trong khoảng [1, − + 1]

    Ý nghĩa của biểu diễn thứ tự là sử dụng một danh sách thứ tự từ

    1…n để tham chiếu.

    Ví dụ  = 9:

    C=(1 2 3 4 5 6 7 8 9)

    Một hành trình:1 –  2 –  4 –  3 –  8 –  5 –  9 –  6 –  7

    Được biểu thị bằng danh sách = (1 1 2 1 4 1 3 1 1)

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    13/19

    Quá trình thông dịch danh sách có thứ tự như sau

    13/23

    (1) = 1 nghĩa là lấy C(1) làm thành  phố khởi hành và loại bỏ

    C(1) khỏi C => C =(2 3 4 5 6 7 8 9) và Hành trình 1-

    (2) = 1, tiếp tục lấy C(1) ta được hành trình là 1-2 và loại bỏ

    C(1) => C =(3 4 5 6 7 8 9)

    (3) = 2, lấy phần tử C(2) là thành phố tham tiếp theo và loại bỏ

    C(2) => C =(3 5 6 7 8 9) ta được hành trình 1-2-4

    ……..

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    14/19

    Hàm chuyển đổi NST sang hành trình

    14/23

    function [ R] = convert_C2R( C )

    n = size(C,2);

    O = 1:n;

    R =[];

    for i=1:nR =[R,O(C(i))];

    O(C(i)) =[];

    end

    end

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    15/19

    Hàm chuyển đổi hành trình thành NST

    15/23

    function [ C ] = convert_R2C(R )

    C=[];

    n = size(R,2);

    O = 1:n;

    for i=1:np = find(O==R(i),1);

    C = [C,p];

    O(p) =[];

    endend

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    16/19

    Ưu điểm của biểu diễn có thứ tự

    16/23

    Sử dụng được phương  pháp lai ghép cổ điển (một điểm, nhiềuđiểm). Ví dụ:

      = 1 1 2 1 4 1 3 1 1 , và  = (5 1 5 5|5 3 3 2 1)

    Ứng với các hành trình:

    1-2 -4 -3 -8- 5- 9- 6 -7 và 5-1-7-8-9- 4-6 -3-2

    Thì hai con được tạo ra:

     = (1 1 2 15 3 3 2 1) và    = (5 1 5 5 4 1 3 1 1 )

    Hãy xác định hai hành trình ứng với hai con ???

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    17/19

    2.3. Biểu diễn đưng dẫn

    17/23

    Đây là dạng biểu diễn tự nhiên nhất. Ví dụ hành trình:

    5-1-7-8-9-4-6-2-3

    Thì biểu diễn đường dẫn là véc tơ:

    (5 1 7 8 9 4 6 2 3)Có 3 phép lai ghép trên biểu diễn đường dẫn:

    Ánh xạ từng phần

    Thứ tự

     Chu trình

    (Chi tiết các phép lai ghép xem trong tài liệu)

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    18/19

    3. Xây dựng phép toán đột biến ứng với biểu diễn có thứ tự

    18/23

    - Hoán vị ngẫu nhiên hai GEN (có bậc phù hợp)

    - Hoán vị các GEN phù hợp thông qua tâm

  • 8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf

    19/19

    4. Xây dựng chương trình GA bằng Matlab cho bài toán TSP

    19/23

    - Xây dựng hàm chuyển một hành trình (hoán vị   thành  phố)về dạng biểu diễn có thứ tự

    - Xây dựng hàm chuyển đổi danh sách  dạng có  thứ tự về hành

    trình

    - Xây dựng hàm  main  thực hiện giải thuật di truyền cho TSP