chuong 5. bai toan nguoi du lich va ga

Upload: tieu-minh

Post on 06-Jul-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    1/19

    Hà Nội , 2016

    BÀI TOÁN NGƯỜI DU LỊCH VỚIGANgư i so n: TS Đ Văn Tu n

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    2/19

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

    2/23

    Một khác dulịch cần phải ghé thăm mỗi thành phố 1 lần (chínhxác 1lần), rồi trở về thành phố xuất phát.Với chi phí dulịch của

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

    xác định một lịch trìnhthăm quan các thành phố sao chotổng chi phí lànhỏ nhất.

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

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

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

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    3/19

    Bài toán TSP dưới d ng đồ 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 chotổng chi phí

    đạt cực tiểu.

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    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áchkề

    - 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

    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àovị 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éctơ :

    ( 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

    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áchkề nào cũng ứng với một hành

    trìnhhợ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

    7/19

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

    7/23

    Biểu diễn kề khônghỗ trợ các phép toán lai ghépcổ điển, cần cómột số sửa đổi. Có 3dạng lai ghépđối với dạng Danh sáchkề:

    - 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

    8/19

    Lai có c nh thay đổi

    8/23

    Tạo ra conmới bằng cáchchọn (ngẫu nhiên)một cạnh từ cha-methứ nhất, rồi chọn cạnh thíchhợp từ cha-methứ hai,...Một cách

    tổng quát làchọn cáccạnh từ hai cha-memộ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ántử chọn mộtcạnh thay thế (ngẫu nhiên) từ các cạnh còn lại khôngtạo thành

    chu trình.

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    9/19

    Ví dụ lai ghép có c nh 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 consẽ là:c1 = (2 5 8 7 9 16 4 3 )

    Trong ví dụ này c1 xuất phát từ cạnh (1,2) của p1, và cạnh ngẫunhiê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 58 6 9 2 4 1 3)

    Cặp cạnh ngẫu nhiên trongtiế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âydự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

    10/19

    Lai các đo n hành trình con

    10/23

    Tạo ra conmới bằng cáchchọnhà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ìnhtạo hành trình con,nếu việc themmột cạnh nào

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

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

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    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ìnhcủa con.

    So sánh haicạ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 kiacủa cạnh đã chọn được sử dụng làm

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

    Trong quá trìnhchọn cạnh ngắn hơn, nếu tạo ra chu trình thì hànhtrì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ôngtạo thành chu trình.

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    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ố trongkhoảng [1, − + 1]

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

    1…n để thamchiế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

    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ình1-2-4

    ……..

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    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:n

    R =[R,O(C(i))];O(C(i)) =[];

    end

    end

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    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:n

    p = find(O==R(i),1);C = [C,p];O(p) =[];

    endend

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    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épcổ điển (một điểm, nhiềđ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

    17/19

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

    17/23

    Đây là dạng biểu diễn tự nhiênnhấ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

    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ánvị ngẫu nhiên hai GEN (có bậc phùhợp)- Hoánvị các GEN phùhợp thông qua tâm

  • 8/17/2019 Chuong 5. Bai Toan Nguoi Du Lich Va GA

    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ánvị thành phố)về dạng biểu diễn có thứ tự

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

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