Tìm hiểu giải thuật di truyền và áp dụng giải bài toán traveling salesman problem

19 1.5K 9
Tìm hiểu giải thuật di truyền và áp dụng giải bài toán traveling salesman problem

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tìm hiểu giải thuật di truyền và áp dụng giải bài toán traveling salesman problem

TRƯỜNG ĐẠI HỌC SƯ PHẠM TPHCM KHOA TOÁN-TIN HỌC TÌM HIỂU THUẬT GIẢI DI TRUYỀN VÀ ÁP DỤNG GIẢI BÀI TOÁN TRAVELING SALESMAN PROBLEM GV Hướng Dẫn:Nguyễn Đỗ Thái Nguyên Nhóm thực hiện:Nhóm 11 TP Hồ Chí Minh MỤC LỤC TÓM TẮT Mở đầu 1.1 Lý chọn đề tài 1.2 Đối tượng nghiên cứu 1.3 Giải pháp công nghệ 2.Nội dung 2.1 Các tính chất quan trọng thuật giải di truyền .5 2.2 Cơ chế thực thuật giải 2.2.1 Mã hóa 2.2.2 Chọn lọc cá thể .5 2.2.3 Lai ghép .6 2.2.4 Đột biến 2.2.5 Hàm thích nghi 2.2.6 Xử lý ràng buộc 2.2.7 Điều kiện kết thúc lặp GAs GA với toán Traveling Salesman Problem (TSP) 3.2 Khó khăn toán 3.3 Cách biểu diễn nhiễm sắc thể 3.4 Khởi tạo quần thể ban đầu 3.5 Hàm thích nghi 3.6 Các phép toán di truyền 3.7 Giải toán 10 TÓM TẮT Thuật giải di truyền (Genetic Algorithm_GA) kỹ thuật chung giúp giải vấn đề-bài toán cách mô tiến hóa người hay sinh vật nói chung (dựa thuyết tiến hóa muôn loài Darwin) điều kiện qui định sẵn môi trường GA thuật giải mục tiêu GA không nhằm đưa lời giải xác tối ưu mà đưa lời giải tương đối tối ưu Thuật giải di truyền (Genetic Algorithms- Viết tắt GAs), John Holland (1975) Goldberg (1989) đề xuất phát triển, thuật giải tìm kiếm dựa chế chọn lọc di truyền tự nhiên Thuật giải sử dụng nguyên lý di truyền thích nghi sống cá thể thích nghi tự nhiên Tập hợp tất lời giải không gian tìm kiếm gọi kiểu hình Các kiểu hình mã hoá gọi kiểu gen Toán tử di truyền thực thi đối tượng Một ánh xạ từ kiểu hình sang kiểu gen gọi trình mã hoá Mỗi cá thể kiểu gen có nhiều nhiễm sắc thể Trong nhiễm sắc thể có chứa nhiều gen Mỗi đặc trưng di truyền cụ thể quy định giá trị vị trí gen nhiễm sắc thể Độ thích nghi thước đo khả sống sót phát triển cá thể môi trường Toán tử xác định cá thể hệ giữ lại hệ gọi chọn lọc Toán tử kết hợp ngẫu nhiên hai cá thể chọn gọi lai ghép Toán tử thay đổi ngẫu nhiên cấu trúc cá thể, tức làm thay đổi giá trị gen gọi đột biến Mở đầu 1.1 Lý chọn đề tài Trong ngành khoa học máy tính, tìm kiếm lời giải tối ưu cho toán vấn đề nhà khoa học máy tính đặc biệt quan tâm Mục đích thuật toán tìm kiếm lời giải tìm lời giải tối ưu cho toán thời gian nhỏ Các thuật toán tìm kiếm thông tin / vét cạn ( tìm kiếm danh sách, đồ thị ) sử dụng phương pháp đơn giản trực quan thuật toán tìm kiếm có thông tin sử dụng heurictics để áp dụng tri thức cấu trúc không gian tìm kiếm nhằm giảm thời gian cần thiết cho việc tìm kiếm sử dụng nhiều với không gian tìm kiếm nhỏ không hiệu tìm kiếm không gian tìm kiếm lớn Tuy nhiên, thực tiễn có nhiều toán tối ưu với không gian tìm kiếm lớn cần phải giải Vì vậy, việc đòi hỏi thuật giải chất lượng cao sử dụng kỹ thuật trí tuệ nhân tạo đặc biệt cần thiết giải toán có không gian tìm kiếm lớn Thuật giải di truyền (genetic algorithm) kỹ thuật tìm kiếm lời giải tối ưu đáp ứng yêu cầu nhiều toán ứng dụng Hiện nay, thuật toán di truyền với logic mờ ứng dụng rộng rãi lĩnh vực phức tạp Thuật toán di truyền kết hợp với logic mờ chứng tỏ hiệu vấn đề khó giải phương pháp thông thường hay phương pháp cổ điển, toán cần có lượng giá, đánh giá tối ưu kết thu Chính vậy, thuật giải di truyền trở thành đề tài nghiên cứu thú vị đem đến nhiều ứng dụng thực tiễn Ngày nay, GA ứng dụng nhiều lĩnh vực khoa học, kinh doanh giải trí Đầu tiên phải kể đến toán tối ưu bao gồm tối ưu số tối ưu tổ hợp sử dụng GA để tìm lời giải toán người du lịch (Travelling Salesman Problems TSP) Ứng dụng GA thiết kế điều khiển robo Hầu có ngành CNTT phát triển quan tâm đến lĩnh vực thiết kế robo nhằm giúp người tiết kiệm sức lao động giải phóng người thoát khỏi công việc nguy hiểm, đặc biệt thi “Robocon Châu Á -Thái Bình Dương” nước khu vực quan tâm Ngoài phần cơ, để robo tiến hành hoạt động đơn giản đi, đứng… robo cần phải trang bị chương trình lập trình dựa thuật toán ngôn ngữ thích hợp Nhờ vào lịch trình cài đặt với trí tuệ nhân tạo…, robo định hướng thực hoạt động người Tuy nhiên, việc tìm kiếm lời giải tốt cho hành động robo đơn giản Theo nhà khoa học máy tính, thuật giải di truyền thuật toán tối ưu giúp robo vạch lộ trình di chuyển Với lý trên,nhóm em chọn đề tài: “Thuật giải di truyền ứng dụng vào giải toán TSP” 1.2 Đối tượng nghiên cứu Đối tượng nghiên cứu: thuật giải di truyền ứng dụng 1.3 Giải pháp công nghệ Ngôn ngữ: C# Ngôn ngữ:C++ Ngôn ngữ:Java 2.Nội dung 2.1 Các tính chất quan trọng thuật giải di truyền GAs lập luận mang tính chất ngẫu nhiên để tìm giải pháp tối ưu cho vấn đề phức tạp,thay xác định toán học giải tích Tuy nhiên hình thức ngẫu nhiên có hướng dẫn trị số thích nghi Chính hàm số thích nghi giúp GAs tìm giải pháp tối ưu nhiều giải pháp có GAs không để ý đến chi tiết vấn đề, trái lại ý đến giải pháp cho vấn đề, hay tìm điều kiện tối ưu cho việc điều hành, phân nhóm giải pháp có GAs sử dụng đặc biệt cho nhứng toán yêu cầu tìm kiếm tối ưu toàn cục với không gian tìm kiếm lớn kiểm soát nhờ khả duyệt qua không gian tìm kiếm đại diện mà không thực qua điểm toàn không gian 2.2 Cơ chế thực thuật giải 2.2.1 Mã hóa GAs bắt đầu với quần thể, tập nhiều cá thể (nhiễm sắc thể) Sự mã hóa biến phụ thuộc vào toán Thông thường có dạng mã sau: mã nhị phân, mã Gray, mã số thực mã dạng Khi mã hóa dạng chuỗi nhị phân, nhiễm sắc thể kí hiệu chuỗi bít Hình Mã hóa dạng nhị phân Giả sử muốn tối ưu hàm n biến f(x1,x2, xn), biến xi thuộc miền D=[ ai,bi ] tập tập số thực R yêu cầu độ xác k chữ số thập phân cho giá trị biến xi Để đạt độ xác miền [ ai,bi ] phân cắt thành (bi- ai)*10k miền Gọi mi số nguyên nhỏ sao: (bi- ai)*10k ≤ 2mi - Như biến xi thuộc [ ai,bi ] biểu diễn chuỗi nhị phân có chiều dài mi.Phép ánh xạ biến nhị phân thành biến thực xi tính theo công thức : Trong decimal (string2) biểu diễn giá trị thập phân chuỗi nhị phân string2 Bây nhiễm sắc thể (là lời giải ) biểu diễn chuỗi nhị phân có chiều dài m=∑mi;m1 bít biểu diễn giá trị khoảng [ a1,b1 ] , m2 bít biểu diễn giá trị khoảng [ a2,b2 ] nhóm mn bít cuối biểu diễn giá trị khoảng [ an,bn ] 2.2.2 Chọn lọc cá thể Đối với tiến trình chọn lọc ( chọn quần thể thỏa phân bố xác suất dựa độ thích nghi), ta dùng bánh xe rulét với rãnh định kích thước theo độ thích nghi sau: Tính độ thích nghi eval(vi) nhiễm sắc thể vi (i=1 pop-size), với pop-size kích thước quần thể: Với f(vi) hàm mục tiêu Tìm tổng giá trị thích nghi F cho toàn quần thể : Tính xác xuất chọn pi cho nhiễm sắc thể vi: i Tính xác xuất tích luỹ qi cho nhiễm sắc thể vi: Tiến trình chọn lọc thực cách quay bánh xe rulét pop-size lần Mỗi lần chọn nhiễm sắc thể từ quần thể hành vào quần thể theo cách sau: Phát sinh số ngẫu nhiên r khoảng [0,1 ] Nếu r< q1 chọn nhiễm sắc thể v1, ngược lại chọn nhiễm sắc thể vi qi-1< r ≤ qi 2.2.3 Lai ghép Toán tử tác động cá thể cha mẹ để tạo lai tốt gọi lai ghép.Các cặp cha mẹ chọn lựa lai ghép với xác suất pc Có dạng lai ghép bản: lai vị trí, lai nhiều vị trí lai Với loại trên, xác suất cá thể tạo lai ghép số Với nhiễm sắc thể quần thể: Phát sinh số ngẫu nhiên r khoảng [0,1 ] Nếu r< pc chọn nhiễm sắc thể để lai ghép Sau ghép nhiễm sắc thể đ chọn cách ngẫu nhiên Đối với cặp nhiễm sắc thể ghép đôi, lại phát sinh ngẫu nhiên số nguyên pos khoảng [0,m ] (m tổng số bit nhiễm sắc thể) Số pos cho vị trí điểm lai Hai nhiễm sắc thể (b1b2 bposbpos+1 bm) (c1 c2 cposcpos+1 cm) thay cặp chúng (b1b2 bposcpos+1 bm) (c1 c2 cposbpos+1 cm) Hình 3:Lai đơn Hình 4:Lai bội Trường hợp lai gen cá thể chọn cách ngẫu nhiên gen tương ứng với cá thể bố mẹ Cách tiến hành lai tiến hành sau: + Tạo chuỗi lai giả M có chiều dài chiều dài chuỗi bố, mẹ Các bít tạo ngẫu nhiên + Chuỗi O tạo cách lấy gen từ cá thể cha, mẹ Nếu bít thứ I chuỗi lai giả M th lấy gen tương ứng cá thể P1, ngược lại lấy gen tương ứng cá thể P2 Hình 5: Lai 2.2.4 Đột biến Đột biến nhằm tạo thông tin quần thể lai tạo vị trí bit nhiễm sắc thể Với xác suất đột biến quần thể pm số lượng nhiễm sắc thể bị đột biến pm*pop-size Mỗi bít nhiễm sắc thể có hội đột biến thay đổi từ thành hay ngược lại: Với nhiễm sắc thể quần thể bít nhiễm sắc thể: Phát sinh số ngẫu nhiên r khoảng [0,1 ] Nếu r0 Ngược lại f(x)=0 Trong Cmin tham số đầu vào, trị tuyệt đối u bé quần thể tại, k vòng lặp cuối cùng, hàm biến quần thể - Trong vài trường hợp hàm thích nghi nghịch đảo hàm mục tiêu sai số trung bình bình phương tập mẫu quần thể 2.2.6 Xử lý ràng buộc GAs thích hợp cho toán tìm kiếm tối ưu với điều kiện không ràng buộc.Tuy nhiên thực tế toán chứa nhiều ràng buộc phải thỏa Lời giải nhận từ chiến lược tìm kiếm tối ưu thiết phải nằm vùng khả thi, tức phải thỏa tất ràng buộc Thông thường xử lý ràng buộc hàm phạt Một số hàm phạt thường dùng sau: Hàm phạt tĩnh : Hàm phạt động: Hàm phạt thích nghi : 2.2.7 Điều kiện kết thúc lặp GAs Để kết thúc vòng lặp GAs, thường định trước số hệ cần tạo sau kiểm tra lại độ thích nghi phần tử tốt cách so sánh với toán ban đầu GA với toán Traveling Salesman Problem (TSP) 3.1 Bài toán: Một du khách muốn thăm tất thành phố chuyến du lịch .Mỗi thành phố thăm qua lần trở thành phố khởi hành, biết chiều dài hai thành phố Hãy xây dựng lộ trình thỏa điều kiện cho chiều dài lộ trình ngắn 3.2 Khó khăn toán - Trong toán Traveling Salesman,mục tiêu tìm khoảng cách ngắn N thành phố khác nhau.Con đường mà người bán hàng qua gọi lộ trình - Việc kiểm tra khả cho lộ trình tới N thành phố phép cộng N!.Một lộ trình tới 30 thành phố phải đo tổng khoảng cách 2.65x1032 lộ trình khác - Giả dụ máy tính xử lý tỷ phép cộng giây ,thì việc tính toán phải 252,333,390,232,297 năm.Việc thêm thành phố vào làm gia tăng thời gian tính toán theo hệ số 31.Rõ ràng công việc thực thực tế 3.3 Cách biểu diễn nhiễm sắc thể Đánh số thành phố từ 1,2…n dùng vectơ nguyên để biểu diễn nhiễm sắc thể lộ trình,vecto thành phần nguyên v=(i1,i2…in) biểu diễn lộ trình từ thành phố i1 đến thành phố i2,…từ thành phố in-1 đến thành phố in từ in trở lại i1,vecto v hoán vị vectơ 3.4 Khởi tạo quần thể ban đầu Có thể sử dụng số thuật giải Greedy vào TSP,có thể áp dụng Greedy nhiều lần ,mỗi lần tạo cá thể cho quần thể.Đơn giản ta khởi tạo quần thể cách tạo ngẫu nhiên mẫu hoán vị vectơ 3.5 Hàm thích nghi Việc lượng giá nhiễm sắc thể dễ dàng ,cho trước khoảng cách thành phố,dễ dàng tính chiều dài lộ trình.Chọn hàm mục tiêu chiều dài lộ trình hàm thích nghi có giá trị hàm mục tiêu f(x)=g(x)=length 3.6 Các phép toán di truyền  Toán tử lai ghép: - Phép lai OX (phép lai thứ tự) :Cho trước cá thể bố mẹ, cá thể có cách chọn thứ tự lộ trình từ cá thể bảo toàn thứ tự tương đối thành phố cá thể Vd:Nếu cá thể bố mẹ : 10 11 12 10 12 11 Đoạn chọn (4 7) cá thể phép lai là: 10 12 11 10 12 11 - Phép lai CX (phép lai chu trình):Mỗi cá thể tạo dựa vị trí,giá trị cha mẹ thứ cha mẹ thứ hai + Bố mẹ 1:1 9 + Bố mẹ 2:4 Sẽ tạo thứ cách lấy thành phố thứ từ bố mẹ thứ O1=(1 x x x x x x x x) Tại vị trí thứ bố mẹ thứ hai có giá trị giá trị nằm vị trí thứ bố mẹ thứ nên O1 =(1 x x x x x x x) ,tại vị trí thứ bố mẹ thứ hai có giá trị giá trị nằm vị trí bố mẹ thứ nên: O1=(1 x x x x x x) Theo qui luật thành phố gộp vào thứ 2,nhưng việc chọn thành phố đòi hỏi việc chọn thành phố có danh sách hoàn thành chu trình O1=(1 x x x x) Tương tự O2=(4 9) Phép lai CX bảo toàn vị trí tuyệt đối phần tử theo thứ tự cha-mẹ  Toán tử đột biến Có thể chọn torng toán tử sau đây: - Đảo : + Chọn hai điểm theo chiều dài nhiễm sắc thể,cắt điểm ,thì chuỗi nằm điểm bị đảo chiều dài chuỗi hai đầu bị đảo +Vd:nhiễm sắc thể (1 3|4 |8 9) Sau đảo:(1 |6 3|7 9) - Chèn : + Chọn thành phố chèn vào vị trí ngẫu nhiên + Vd cá thể :(1 10 11 12),chọn thành phố chèn vào vị trí,ta có cá thể sau đột biến :(1 10 11 12) - Dời chỗ:Chọn lộ trình chèn vào vị trí ngẫu nhiên.VD cá thể (1 10 11 12) chọn lộ trình chèn vào vị trí 2,ta có cá thể sau đột biến :(6 10 11 12) - Trao đổi qua lại:hoán vị hai thành phố hay hai chuỗi thành phố với nhau.Vd cá thể cha (1 10 11 12 13 14).Cá thể (1 11 12 13 10 14) 3.7 Giải toán - Thuật giải di truyền dùng để tìm giải pháp tốn thời gian nhiều so với cách mà đề cập trên.Mặc dù không tìm giải pháp tốt giải pháp mà tìm tương đối hoàn hảo.Ví dụ với lộ trình qua 100 thành phố ta phút để tìm kết quả.Có bước để giải toán TSP sử dụng thuật giải di truyền: - Bước đầu tiên,tạo nhóm nhiều lộ trình ngẫu nhiên gọi quần thể.Thuật giải dùng kỹ thuật Greedy để dành ưu tiên kết nối với thành phố gần - Bước hai,chọn lộ trình bố mẹ tốt (ngắn nhất) quần thể kết hợp chúng lại để tạo lộ trình mới.Chúng ta hy vọng rằng,những lộ trình tốt bố mẹ - Khi thực tồn tỷ lệ % nhỏ lộ trình bị biến dạng.Điều xảy giúp tránh việc tất lộ trình quần thể giống 10 - Những lộ trình chèn vào quần thể để thay cho hai lộ trình dài nó.Khi kích thước quần thể giữ nguyên -Những lộ trình tạo liên tục vươn tới mục tiêu mong muốn.Như tên nói lên,thuật giải di truyền theo tự nhiên tiến triển lợi dụng theo nguyên tắc “mạnh yếu thua” Hai vấn đề phức tạp sử dụng thuật giải di truyền để giải bào toán người bán hàng du lịch việc mã hóa lộ trình phép toán xuyên chéo dùng để kết hợp lộ trình bố mẹ tạo lộ trình Theo tiêu chuẩn thuật giải di truyền,việc mã hóa dãy đơn giản số xuyên chéo biểu diễn việc chọn điểm ngẫu nhiên dãy bố mẹ chuyển số dãy sau điểm đó.Trong ví dụ này,điểm xuyên chéo nằm vị trí danh sách.Để tạo lộ trình con,mỗi thành phần dãy bố mẹ sau điểm xuyên chéo hoán vị: Việc mã hóa đơn giản danh sách thành phố theo trật tự qua.Những phương pháp mã hóa khác tạo để giải vấn đề xuyên chéo.Mặc dù phương pháp không tạo lộ trình hợp lệ chúng không ghi vào nhớ thật lộ trình “A B C D E FG” giống “G F E D C B A”.Để giải vấn đề cách thích hợp phép toán xuyên chéo phải phức tạp Một khó khăn toán người bán hàng thành phố qua lần suốt lộ trình.Nếu ký tự ví dụ đại diện cho thành phố lộ trình tạo phép toán xuyên chéo không hợp lệ.Như ví dụ đến thành phố F B hai lần không đến thành phố D hay E Một giải pháp lưu trữ liên kết hai hướng cho lộ trình.Trong ví dụ lộ trình trên,bố mẹ lưu trữ sau: Thành phố A B C D E F Liên kết Liên kết F A E G B D B E G F C A G C D public class Link { /// Kết nối tới thành phố private int connection1; 11 public int Connection1 { } /// Kết nối tới thành phố thứ private int connection2; public int Connection2 { } } Một số hàm sử dụng chương trình: - Các thành phố cương trình biểu hình esclipse: foreach (City city in cityList) { // vẽ vòng tròn cho thành phố graphics.DrawEllipse(Pens.Red, city.Location.X - 2, city.Location.Y - 2, 5, 5); // Tô màu cho Ellipse graphics.FillEllipse(Brushes.Red, city.Location.X - 2, city.Location.Y - 2, 5, 5); } - Các thành phố liên kết đường thẳng: cityGraphics.DrawLine(Pens.Black, cityList[lastCity].Location, cityList[nextCity].Location); - Hàm tính khoảng cách hai thành phố: city.Distances.Add(Math.Sqrt(Math.Pow((double)(city.Location.X this[i].Location.X), 2D) + Math.Pow((double)(city.Location.Y - this[i].Location.Y), 2D))); Phép toán xuyên chéo phức tạp việc kết nối hai chuỗi.Việc xuyên chéo lấy liên kết tồn bố mẹ vị trí liên kết hai con.Sau đó,đối với thay việc lấy liên kết xuất hiên bố mẹ sau bố mẹ 1.Đối với 2,nó thay việc lấy tập hợp liên kết khác bố mẹ bố mẹ 1.Để điền vào liên kết thiếu,các thành phố chọn cách ngẫu nhiên public static Tour Crossover(Tour parent1, Tour parent2, Cities cityList, Random rand) { Tour child = new Tour(cityList.Count); // Lộ trình tạo int[] cityUsage = new int[cityList.Count]; // Có liên kết 0-2 mà liên kết đến thành phố int city; // lăp biến int nextCity; // thành phố khác lien kết for (city = 0; city < cityList.Count; city++) { cityUsage[city] = 0; } 12 // lấy liên kết hai bố mẹ đưa chúng vào for (city = 0; city < cityList.Count; city++) { if (cityUsage[city] < 2) { if (parent1[city].Connection1 == parent2[city].Connection1) { nextCity = parent1[city].Connection1; if (testConnectionValid(child, cityList, cityUsage, city, nextCity)) { joinCities(child, cityUsage, city, nextCity); } } if (parent1[city].Connection2 == parent2[city].Connection2) { nextCity = parent1[city].Connection2; if (testConnectionValid(child, cityList, cityUsage, city, nextCity)) { joinCities(child, cityUsage, city, nextCity); } } if (parent1[city].Connection1 == parent2[city].Connection2) { nextCity = parent1[city].Connection1; if (testConnectionValid(child, cityList, cityUsage, city, nextCity)) { joinCities(child, cityUsage, city, nextCity); } } if (parent1[city].Connection2 == parent2[city].Connection1) { nextCity = parent1[city].Connection2; if (testConnectionValid(child, cityList, cityUsage, city, nextCity)) { joinCities(child, cityUsage, city, nextCity); } } } } // Các bố mẹ không chịu bỏ liên kết thay việc dùng // liên kết từ bố mẹ sau bố mẹ for (city = 0; city < cityList.Count; city++) 13 { if (cityUsage[city] < 2) { if (city % == 1) // Chúng ta ưu tiên dùng bố mẹ thành phố lẻ { nextCity = findNextCity(parent1, child, cityList, cityUsage, city); if (nextCity == -1) // Nhưng dùng bố mẹ { nextCity = findNextCity(parent2, child, cityList, cityUsage, city); ; } } else // dùng bố mẹ thay vào { nextCity = findNextCity(parent2, child, cityList, cityUsage, city); if (nextCity == -1) { nextCity = findNextCity(parent1, child, cityList, cityUsage, city); } } if (nextCity != -1) { joinCities(child, cityUsage, city, nextCity); if (cityUsage[city] == 1) { if (city % != 1) // dùng bố mẹ thành phố chẵn { nextCity = findNextCity(parent1, child, cityList, cityUsage, city); if (nextCity == -1) //dùng bố mẹ thay vào { nextCity = findNextCity(parent2, child, cityList, cityUsage, city); } } else // dùng bố mẹ { nextCity = findNextCity(parent2, child, cityList, cityUsage, city); if (nextCity == -1) { nextCity = findNextCity(parent1, child, cityList, cityUsage, city); } } if (nextCity != -1) { joinCities(child, cityUsage, city, nextCity); 14 } } } } } // mối liên kết bố mẹ gây nhiều vòng lặp kết nối for (city = 0; city < cityList.Count; city++) { while (cityUsage[city] < 2) { { nextCity = rand.Next(cityList.Count); // Chọn thành phố ngẫu nhiên,cho tới tìm thành phố để liên kết đến } while (!testConnectionValid(child, cityList, cityUsage, city, nextCity)); joinCities(child, cityUsage, city, nextCity); } } return child; } Cuối cùng,thuật giải di truyền làm cho giải pháp trông đồng nhất.Đây mô hình lý tưởng.Một lộ trình quần thể đồng nhất,thuật giải di truyền tìm giải pháp tốt hơn.Có hướng giải xung quanh vấn đề này: - Đầu tiên dùng quần thể ban đầu lớn cho chứa tất phương án giống mà thuật toán di truyền tạo (điến hính toán ta lấy giá trị kích thước mặc định 10000).Hàm tạo ta tập hợp ngẫu nhiên lộ trình ban đầu: public void CreateRandomPopulation(int populationSize, Cities cityList, Random rand, int chanceToUseCloseCity) - Phương pháp thứ hai phương pháp biến đổi,nơi mà vài lộ trình thay đổi ngẫu nhiên để tạo lộ trình Thuật giải di truyền dùng quần thể ban đầu tham lam.Thành phố mắt xích lộ trình ban đầu không hoàn toàn ngẫu nhiên.Thuật toán di truyền ưu tiên tạo liên kết thành phố gần nhất.Điều luôn 100% điều gây việc lộ trình quần thể ban đầu trở nên giống Có tham số để điều khiển hoạt động thuật giải di truyền: - Kích thước quần thể:kích thước quần thể số lượng ngẫu nhiên lộ trình ban đầu tạo thuật toán bắt đầu.Với quần thể lớn phải tốn nhiều thời gian để tìm kết quả.Với quần thể nhỏ làm gia tăng khả lộ trình quần thể giống sau này.Sự gia tăng có khả làm cho giải pháp tốt tìm 15 - - - - - Hàng xóm/kích cỡ nhóm:mỗi giai đoạn phát triển,số lượng lộ trình chọn ngẫu nhiên từ quần thể.Hai lộ trình tốt hai lộ trình bố mẹ.Hai lộ trình tệ bị thay hai lộ trình tìm ra.Đối kích cỡ nhóm,một số lớn gia tăng khả việc lộ trình tốt chọn làm bố mẹ,nhưng gây việc nhiều lộ trình khộng sử dụng làm bố mẹ.Một kích cỡ nhóm lớn làm cho thuật toán chạy nhanh ta tìm giải pháp tốt nhất(trong chương trình ta lấy mặc định giá trị 5) Tỷ lệ biến dạng %:phần trăm lộ trình sau xuyên chéo bị biến dạng.Khi lộ trình bị biến dạng,một thành phố di chuyển ngẫu nhiên từ điểm lộ trình đến điểm khác.(giá trị mặc định toán 3%) Số thành phố gần nhau:như phần quần thể tham lam ban đầu,thuật toán di truyền ưu tiên chọn thành phố gần để liên kết tạo lộ trình ban đầu.Khi tạo quần thể ban đầu số thành phố coi gần nhau.( giá trị mặc định toán 5) Tỷ lệ thành phố gần nhau:đây phần trăm hội mà liên kết lộ trình ngẫu nhiên quần thể ban đầu ưu tiên dừng thành phố gần thay cho thành phố hoàn toàn ngẫu nhiên.Nếu thuật toán di truyền chọn sử dụng thành phố gần lấy thành phố từ tham số trước Số lần xuyên chéo lớn giai đoạn:số phép toán xuyên chéo thực trước thuật toán kết thúc Tham số Giá trị khởi tạo Kích cỡ quần thể 10,000 Kích cỡ nhóm Biến dạng 3% Số thành phố gần Tỷ lệ thành phố gần 90 16 Form chương trình sau: Khi chạy thuật toán ta có: 17 Danh sách thành phố xây dựng file XML: 18 Lịch phân công công viêc cụ thể nhóm: - Bạn Lê Công Luận:Khảo sát vấn đề thực tế để lấy số liệu lập báo cáo cho toán - Bạn Nguyễn Văn Cường:Thiết kế giao diện cho chương trình - Bạn Lê Trọng Tùng:Tìm hiểu thuật giải di truyền - Bạn Trần Công Minh:Tìm hiểu toán Người bàn hàng,Coding cho toán 19 [...]... chạy thuật toán ta có: 17 Danh sách các thành phố được xây dựng bằng file XML: 18 Lịch phân công công viêc cụ thể của nhóm: - Bạn Lê Công Luận:Khảo sát vấn đề ngoài thực tế để lấy số liệu lập bản báo cáo cho bài toán - Bạn Nguyễn Văn Cường:Thiết kế giao di n cho chương trình - Bạn Lê Trọng Tùng :Tìm hiểu về thuật giải di truyền - Bạn Trần Công Minh :Tìm hiểu về bài toán Người bàn hàng,Coding cho bài toán. .. chèn vào quần thể để thay thế cho hai lộ trình dài hơn nó.Khi đó kích thước của quần thể vẫn sẽ giữ nguyên -Những lộ trình con mới được tạo liên tục cho tới khi vươn tới được mục tiêu mong muốn.Như cái tên đã nói lên ,thuật giải di truyền được phỏng theo tự nhiên và sự tiến triển lợi dụng theo nguyên tắc “mạnh được yếu thua” Hai vấn đề phức tạp khi sử dụng thuật giải di truyền để giải quyết bào toán. .. ta tìm được thành phố để có thể liên kết đến } while (!testConnectionValid(child, cityList, cityUsage, city, nextCity)); joinCities(child, cityUsage, city, nextCity); } } return child; } Cuối cùng ,thuật giải di truyền này sẽ làm cho mỗi giải pháp trông đồng nhất.Đây sẽ không phải là một mô hình lý tưởng.Một khi mỗi lộ trình trong quần thể đồng nhất ,thuật giải di truyền sẽ không thể tìm được một giải. .. cityList, Random rand, int chanceToUseCloseCity) - Phương pháp thứ hai là phương pháp biến đổi,nơi mà một vài lộ trình con được thay đổi ngẫu nhiên để tạo ra một lộ trình mới duy nhất Thuật giải di truyền này cũng dùng một quần thể ban đầu tham lam.Thành phố mắt xích trong những lộ trình ban đầu sẽ không hoàn toàn ngẫu nhiên .Thuật toán di truyền sẽ ưu tiên tạo liên kết giữa các thành phố gần nhau nhất.Điều... động của thuật giải di truyền: - Kích thước quần thể:kích thước quần thể là số lượng ngẫu nhiên các lộ trình ban đầu được tạo ra khi thuật toán bắt đầu.Với một quần thể lớn sẽ phải tốn nhiều thời gian hơn để tìm ra kết quả.Với một quần thể nhỏ sẽ làm gia tăng khả năng mỗi lộ trình trong quần thể sẽ giống nhau sau này.Sự gia tăng này có khả năng làm cho giải pháp tốt nhất sẽ không thể được tìm ra 15... hàng du lịch là việc mã hóa lộ trình và phép toán xuyên chéo dùng để kết hợp 2 lộ trình bố mẹ tạo ra các lộ trình con Theo tiêu chuẩn thuật giải di truyền, việc mã hóa là một dãy đơn giản của các số và sự xuyên chéo được biểu di n bởi việc chọn 1 điểm ngẫu nhiên trong dãy bố mẹ và chuyển mỗi số trong dãy sau điểm đó.Trong ví dụ này,điểm xuyên chéo nằm ở vị trí giữa 3 và 4 trong danh sách.Để tạo lộ trình... phố sẽ được di chuyển ngẫu nhiên từ một điểm trên lộ trình đến một điểm khác.(giá trị mặc định trong bài toán này là 3%) Số thành phố gần nhau:như một phần của quần thể tham lam ban đầu ,thuật toán di truyền sẽ ưu tiên chọn những thành phố gần nhau để liên kết tạo ra 1 lộ trình ban đầu.Khi tạo ra quần thể ban đầu thì đây sẽ là số thành phố được coi như là gần nhau.( giá trị mặc định trong bài toán này... được đi qua.Những phương pháp mã hóa khác đã được tạo ra để giải quyết vấn đề xuyên chéo.Mặc dù những phương pháp này không tạo ra những lộ trình hợp lệ nhưng chúng cũng không ghi vào bộ nhớ một sự thật là lộ trình “A B C D E FG” cũng giống như là “G F E D C B A”.Để giải quyết vấn đề một cách thích hợp phép toán xuyên chéo sẽ phải phức tạp hơn nữa Một khó khăn nữa đối với bài toán người bán hàng là mỗi... ban đầu sẽ ưu tiên dừng các thành phố gần nhau thay cho các thành phố hoàn toàn ngẫu nhiên.Nếu thuật toán di truyền chọn sử dụng các thành phố gần nhau thì nó sẽ lấy một trong các thành phố từ tham số trước Số lần xuyên chéo lớn nhất trong mỗi giai đoạn:số phép toán xuyên chéo được thực hiện trước khi thuật toán kết thúc Tham số Giá trị khởi tạo Kích cỡ quần thể 10,000 Kích cỡ nhóm 5 Biến dạng 3% Số... mỗi lộ trình trong quần thể đồng nhất ,thuật giải di truyền sẽ không thể tìm được một giải pháp tốt hơn.Có 2 hướng giải quyết xung quanh vấn đề này: - Đầu tiên là chúng ta dùng một quần thể ban đầu rất lớn sao cho nó chứa được tất cả các phương án giống nhau mà thuật toán di truyền tạo ra (điến hính trong bài toán ta sẽ lấy giá trị kích thước này mặc định là 10000).Hàm này sẽ tạo ta tập hợp ngẫu nhiên ... nhà khoa học máy tính, thuật giải di truyền thuật toán tối ưu giúp robo vạch lộ trình di chuyển Với lý trên,nhóm em chọn đề tài: Thuật giải di truyền ứng dụng vào giải toán TSP” 1.2 Đối tượng... đòi hỏi thuật giải chất lượng cao sử dụng kỹ thuật trí tuệ nhân tạo đặc biệt cần thiết giải toán có không gian tìm kiếm lớn Thuật giải di truyền (genetic algorithm) kỹ thuật tìm kiếm lời giải tối... 11 12 13 10 14) 3.7 Giải toán - Thuật giải di truyền dùng để tìm giải pháp tốn thời gian nhiều so với cách mà đề cập trên.Mặc dù không tìm giải pháp tốt giải pháp mà tìm tương đối hoàn hảo.Ví

Ngày đăng: 29/12/2015, 16:28

Từ khóa liên quan

Mục lục

  • TÓM TẮT

  • 1. Mở đầu

    • 1.1. Lý do chọn đề tài

    • 1.2. Đối tượng nghiên cứu

    • 1.3. Giải pháp công nghệ

    • 2.Nội dung

      • 2.1 Các tính chất quan trọng của thuật giải di truyền

      • 2.2 Cơ chế thực hiện của thuật giải

        • 2.2.1 Mã hóa

        • 2.2.2 Chọn lọc cá thể.

        • 2.2.3. Lai ghép

        • 2.2.4 Đột biến

        • 2.2.5 . Hàm thích nghi

        • 2.2.6. Xử lý các ràng buộc

        • 2.2.7. Điều kiện kết thúc lặp của GAs

        • 3. GA với bài toán Traveling Salesman Problem (TSP)

          • 3.2 Khó khăn của bài toán

          • 3.3 Cách biểu diễn nhiễm sắc thể

          • 3.4 Khởi tạo quần thể ban đầu

          • 3.5 Hàm thích nghi

          • 3.6 Các phép toán di truyền

          • 3.7 Giải quyết bài toán

Tài liệu cùng người dùng

Tài liệu liên quan