Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 49 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
49
Dung lượng
223,91 KB
Nội dung
TRƯỜNG ĐẠI HỌC HẢI PHỊNG KHOA CƠNG NGHỆ THƠNG TIN BÀI BÁO CÁO Mơn : NHẬP MƠN TRÍ TUỆ NHÂN TẠO Nhóm 11 – Đề tài: Gene Giải thuật để giải tốn ba- lơ Sinh viên thực hiên: Lương Anh Q Đào Tiến Minh Nguyễn Hồng Việt Tơ Mạnh Lớp: DHCNTT1.K22 Giảng viên: Đào Việt Anh Hải Phòng, tháng 12 năm 2022 Khoa Công Nghệ Thông Tin Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Công Nghệ Thông Tin Mục lục Giới thiệu I Giải thuật di truyền (Genertic Algorithm - GAs) Giới thiệu: Các thành phần Gas Bài tốn Ba lơ II Phát biểu toán: Ứng dụng Gas để giải toán: III Ứng dụng mơ tốn: Môi trường xây dựng ứng dụng: Cấu trúc ứng dụng: Một số thành phần chương trình: Chương trình Giao diện 40 Nhập môn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thông Tin Giới thiệu T rong 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 tố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 tốn tìm kiếm khơng có 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 tố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 tố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 tố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, tố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 Tuy giải thuật Gene (GA) chậm số thuật toán khác song GA lại có vài ưu điểm trội như: dễ thể hiện, không bị rơi vào trạng thái cực trị địa phương, dễ thay đổi hàm thích nghi, … Vì vậy, thuật tốn Gene lựa chọn thích hợp cho dạng tốn định Ví dụ tốn tìm đường, tốn balơ, … Trong khn khổ đề tài này, em xin trình bày nội dung giải thuật Gene ứng dụng việc giải tốn Chiếc ba lơ loại (Knapsack 2) với phương pháp lựa chọn Rank Selection Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Công Nghệ Thông Tin I Giải thuật di truyền (Genertic Algorithm - GAs) Giới thiệu: GAs (John Holland, 1975) mơ tiến hóa tự nhiên (Darwinian Evolution) mức gen sử dụng tư tưởng survival of the fittest (chọn lọc tự nhiên) Một cá (chromosome) mô tả lời giải ứng viên toán Một tập cá thể “alive”, gọi quần thể (population) tiến hóa từ hệ tới hệ khác phụ thuộc vào thích nghi cá thể Thế hệ sinh chứa lời giải toán Giải thuật: - Khởi tạo quần thể P(0) - số i hệ thứ i Lặp đến quần thể hội tụ đạt đến tiêu chuẩn kết thúc + Đánh giá độ thích nghi cá thể P(i) + Lựa chọn cha từ P(i) dựa độ thích nghi chúng P(i) + Áp dụng toán tử Gen (crossover, mutation) từ cha chọn để sinh + + Đạt hệ P(i 1) gồm cá thể cha P(i) Các thành phần Gas a Khởi tạo (Initializetion) Tạo ngẫu nhiên số cá thể chấp nhận để quần thể phù hợp với kích thước quần thể quy định sẵn b Hàm thích nghi (Fitness Function) Gán giá trị thích nghi cho cá thể Giá trị thích nghi sát với thực tế độ xác cao c Lựa chọn để kết hợp lại (Selection For Recombine) Có nhiều kiểu lựa chọn Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Công Nghệ Thông Tin + roulette wheel selection + Boltzman selection + Tournament selection + rank selection + steady state selection + Elitism d Mã hóa Mã hóa chuỗi gene cá thể thành dạng thích hợp (nhị phân, mã hóa giá trị, mã hóa hốn vị) e Lai ghép Sau chọn cặp NST dùng để lai, ta tiến hành cắt ghép để tạo NST (con mới) Có nhiều hình thức lai ghép: lai điểm, lai nhiều điểm, lai phép toán nhị phân, … f Đột biến Sau lai ghép, để tạo đa dạng quần thể, ta làm phép đột biến vài cá thể Trên chuỗi gene, vài vị trí, làm thay đổi giá trị đoạn gene g Đánh giá Khi có quần thể mới, ta tiến hành kiểm tra đánh giá xem cá thể tốt nhất, cá thể tồi Loại bỏ bớt cá thể tồi để lặp lại bước h Tiêu chuẩn kết thúc Khơng có q trình khơng thể kết thúc Q trình tiến hóa dừng lại sau khoảng tgian quy định(một số hệ) sau hội tụ (khơng thể tìm thêm cá thể tốt hơn) Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thơng Tin II Bài tốn Ba lơ Phát biểu toán: Bạn chuẩn bị du lịch bạn cần chuẩn bị số thứ Tuy nhiên, bạn đem tất sức người có hạn Bạn phải đem theo đồ gì, số lượng loại để đạt tổng giá trị lớn khả đem theo Ứng dụng Gas để giải toán: a Các bước thực hiện: * Khởi tạo đồ vật trọng lượng tối đa ba lô: Tạo x đồ vật với khối lượng giá trị khác (ngẫu nhiên) - Ấn định khối lượng tối đa túi * Khởi tạo quần thể: Tạo n ba lô, ba lô chứa số lượng vật khác nhau, không ba lô bị tải Số lượng vật balô số ngẫu nhiên khoảng từ → KL balơ/KL vật Tìm balơ tốt * Lựa chọn: Xếp balô từ hệ trước theo thứ tự xếp rank Thứ tự Rank Tính tổng rank Xác định số cá thể định tạo Lặp đến đủ số cá thể Lấy ngẫu nhiên số thuộc khoảng (1; tổng Rank) Cộng Rank đến đc giá trị > giá trị ngẫu nhiên Xác định Gene chọn đưa vào mảng để lai * Mã hóa: Với Gene chọn để đem lai, mã hóa chúng thành dạng chuỗi phương pháp mã hóa giá trị Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Công Nghệ Thông Tin * Lai: Phương pháp lai chọn lai điểm Chuỗi gen chia thành phần, phần có độ dài = ¼ chuỗi gene, phần có độ dài = ½ chuỗi gene, phần phần lại Cách lai: Bố a b c Con1 a b’ c Mẹ a’ b’ c’ Con2 a’ b c’ * Đột biến Dựa vào tỉ lệ đột biến → số lần đột biến → số cá thể đột biến Chọn vị trí để đột biến Giá trị đột biến = vị trí * Đánh giá Giải mã gene: Từ chuỗi mã hóa đưa dạng knapsack → Sau trình lai ghép, quần thể gồm cá thể cha Vì quần thể có kích thước cố định nên phải đánh giá để chọn n cá thể tốt cho hệ * Lặp lại bước đến quần thể hội tụ sau k hệ III Ứng dụng mơ tốn: Mơi trường xây dựng ứng dụng: - Framework:.Net 3.5 - IDE: Microsoft Visual Studio 2008 Cấu trúc ứng dụng: Ứng dụng chia thành phần: Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thơng Tin - Core: Chứa file class mơ tả thuật tốn - Presentation: Chứa file mô tả giao diện Một số thành phần chương trình: Class Item Knapsack GAs Properties Methods in class ItemWeight Item ItemValue knapsackMaxWeight KnapsackCurrentWeight KnapsackValue Knapsack Rank ListItemAmount overload() showItem() KnapsackWeight knapsackAmount mutationProp GAs listItem listKnapsack newListKnapsack Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thơng Tin // MAIN_GRAPHS[property].graphTitle selectDemo(property); break; } } } else { / hide drawing menu $('.drawingMenuItem').addClass('hiden'); } } else if (e.target.className.indexOf('changeBetween') !== -1) { / no time to be implemented now } else { selectDemo(demoId); } e.stopPropagation(); }); var demoAreaHtml = $("" + ""); container.append(demoAreaHtml); grapHeaderContainer.append(graphHeaderHtml); if (!MAIN_DEMOS[demoId]) { MAIN_DEMOS[demoId] = $.extend(true, {}, demoOptions, { demoTitle : "Demo" + DEMO_ID_INC, demoId : demoId, }); } 31 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thơng Tin if (MAIN_DEMOS[demoId].elements != null) selectDemo(demoId); } /** * function to be called when selecting a graph header * * @param graphId */ function selectDemo(demoId) { $('.demoAreaHeader').removeClass('selected'); $('.demoArea').removeClass('selected'); $('#' + demoId + 'Header').addClass('selected'); $('#' + demoId + 'Area').addClass('selected'); CUURENT_OPEN_DEMO = demoId; // show add node button $('.drawingMenuItem').removeClass('hiden'); } function runDemo() { var demoId = CUURENT_OPEN_DEMO; MAIN_DEMOS[demoId].numOfElements = SELECTED_DATA.numOfElements; MAIN_DEMOS[demoId].maxCapacity = SELECTED_DATA.maxCapacity; MAIN_DEMOS[demoId].elements = SELECTED_DATA.elements; / draw initial things drawDemo(demoId); / start the Algorithm setup(demoId); } //function to draw new demo tab function drawDemo(demoId) { var container = $('#' + demoId + 'Area allEleents'); 32 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Công Nghệ Thông Tin container.html(''); var demo = MAIN_DEMOS[demoId]; var elements = demo.elements; var elementsHTML = ''; for (var i = 0; i < elements.length; i++) { var info = 'w: ' + elements[i].weight + 'b: ' + elements[i].benefit + 'i: ' + i + ''; elementsHTML += '' + '' + '' + '' + '' + '' + '' + '' + info + ''; } container.append($(elementsHTML)); // draw bag var container = $('#' + demoId + 'Area demoBagDrawing'); container.html(''); var elementsHTML = ''; var info = 'Status: Not started yet! Total Weight: ' + 'Total benefit :' + 'Max Capacity: ' + 'Total generation:' + + + + '' '' 'Time in ms:' ''; 33 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thơng Tin container.append($(info)); elementsHTML += '' + '' + '' + '' + '' + '' + '' + ''; container.append($(elementsHTML)); } e Code sketch / Genetic Algorithm, Evolving Knapsack Problem var population; var bestPhrase; var allPhrases; var stats; function setup(demoId) { population = new Population(MUTATION_RATE, GENERATION_SIZE, MAIN_DEMOS[demoId]); draw(demoId); } function draw(demoId) { MAIN_DEMOS[demoId].sTime = new Date().getTime(); dotheJob(demoId); / while (population.isFinished() == false) { / / / / // Create next generation population.generate(); // Calculate fitness 34 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thơng Tin / population.calcFitness(); / population.evaluate(); / / / / / // // If we found the target phrase, stop // if (population.isFinished()) { // // println(millis()/1000.0); // noLoop(); // } / displayInfo(demoId); / } / // // / / } function dotheJob(demoId) { / Create next generation population.generate(); / Calculate fitness population.calcFitness(); population.evaluate(); displayInfo(demoId); if (population.isFinished() == false) { setTimeout(function() { dotheJob(demoId); }, IS_ANIMATION ? 100: 0); } else { / update status to finished var container = $('#' + demoId + 'Area demoBagDrawing'); container.find('.mainBagInfo status').addClass('finish').html( "Status: GA Algo finished :)"); // finish Time MAIN_DEMOS[demoId].fTime = new Date().getTime(); container.find('.mainBagInfo time').html( 35 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Công Nghệ Thông Tin "Time in ms: "+(MAIN_DEMOS[demoId].fTimeMAIN_DEMOS[demoId].sTime)); } } function displayInfo(demoId) { var container = $('#' + demoId + 'Area demoBagDrawing'); / Display current status of population var answer = population.getBest(); container.find('.mainBagInfo status').removeClass('finish').html( "Status: GA Algo is running "); container.find('.mainBagInfo numberOfGenerations').html( "Total generation: "+population.getGenerations()); container.find('.mainBagInfo bestGene').html( "Best choice: " + answer.getPhrase()); container.find('.mainBagInfo w').html( "Total Weight: " + answer.totalWeight); container.find('.mainBagInfo b').html( "Total benefit: " + answer.totalBenefit); container.find('.mainBagInfo capacity').html( "Max Capacity: " + MAIN_DEMOS[demoId].maxCapacity); MAIN_DEMOS[demoId].fTime = new Date().getTime(); container.find('.mainBagInfo time').html( "Time in ms: "+ (MAIN_DEMOS[demoId].fTimeMAIN_DEMOS[demoId].sTime)); // draw effect var hightOfWall = (answer.totalWeight * 200 / MAIN_DEMOS[demoId].maxCapacity) toFixed(0); container.find('.mainWrap mainCube wall').css('boxshadow', 36 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Công Nghệ Thông Tin ('0px -' + hightOfWall + 'px 0px 0px rgba(0, 0, 0, 0.35) inset')); // hilight the selected boxes var boxesWrapers = $('#' + demoId + 'Area allEleents wrap'); var bestGene = answer.genes; for (var i = 0; i < boxesWrapers.length; i+ +) { if (typeof i != "undefined") { if (bestGene[i] == 1) { $(boxesWrapers[i]).addClass('selected '); } else { $(boxesWrapers[i]).removeClass('selected '); } } } // draw all generation var container = $('#' + demoId + 'Area allGenerations'); container.html("Generations:" + population.allPhrases()); } f Code Variables // variable to hold information about each demo var DEMO = new function() { this.numOfElements = 5; this.elements = {}; this.maxCapacity = 55; }; var DEMO_ID_INC = 0; var NUM_OF_DEMOS = 0; var CUURENT_OPEN_DEMO = null; 37 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thông Tin var MAIN_DEMOS = {}; // sample data var DATA_INPUT_SAMPLE = [ { lable : "sample Data 1", id : "sampleData1", numOfElements : 5, maxCapacity : 11, elements : [ { weight : 1, benefit : 1, }, { weight : 2, benefit : 6, }, { weight : 5, benefit : 18, }, { weight : 6, benefit : 22, }, { weight : 7, benefit : 28, }] }, { lable : "sample Data 2", id : "sampleData2", numOfElements : 14, maxCapacity : 100, elements : [ { weight : 99, benefit : 1, }, { weight : 94, benefit : 2, }, { weight : 79, benefit : 3, }, { weight : 64, 38 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Công Nghệ Thông Tin benefit : 4, }, { weight : 50, benefit : 5, }, { weight : 46, benefit : 5, }, { weight : 43, benefit : 6, }, { weight : 37, benefit : 6, }, { weight : 32, benefit : 4, }, { weight : 19, benefit : 3, }, { weight : 18, benefit : 6, }, { weight : 7, benefit : 7, }, { weight : 6, benefit : 2, }, { weight : 3, benefit : 4, }] } ]; var SELECTED_DATA = DATA_INPUT_SAMPLE[0]; var GENERATION_SIZE = 200; var MUTATION_RATE = 0.01; var MAX_TO_STOP = 1000; 39 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thông Tin var IS_ELITESIM = true; var CROSSOVER_TYPE = 1; var IS_ANIMATION = true; Giao diện Kết hiển thị quần thể sau tiến hóa (con sinh cha) 40 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thơng Tin 41 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thơng Tin 42 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22 Khoa Cơng Nghệ Thơng Tin Trả kết quả: 43 Nhập mơn trí tuệ nhân tạo Nhóm 11 – CNTT1.K22