1. Trang chủ
  2. » Công Nghệ Thông Tin

TỔNG HỢP KIẾN THỨC TRÍ TUỆ NHÂN TẠO (AI)

20 233 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 1,95 MB

Nội dung

Các b ước c ơb ản c gi ải thu ật di truy ền Một giải thuật di truyền đơn giản bao gồm bước sau: Bước 1: Khởi tạo quần thể ban đầu gồm chuỗi nhiễm sắc thể Bước 2: Xác định giá trị mục tiêu cho nhiễm sắc thể tương ứng Bước 3: Tạo nhiễm sắc thể dựa toán tử di truyền Bước 5: Xác định hàm mục tiêu cho nhiễm sắc thể đưa vào quần thể Bước 4: Loại bớt nhiễm sắc thể có độ thích nghi thấp Bước 6: Kiểm tra thỏa mãn điều kiện dừng Nếu điều kiện đúng, lấy nhiễm sắc thể tốt nhất, giải thuật dừng lại; ngược lại, quay bước Có hai loại điều kiện dừng Các điều kiện dùng đặc trưng tìm kiếm để định ngừng trình tìm kiếm Dựa cấu trúc nhiễm sắc thể: hội tụ quần thể cách kiểm soát số alen hội tụ, alen coi hội tụ số phần trăm quần thể định trước có (hoặc tương đương biểu diễn không nhị phân) giá trị alen Nếu số alen hội tụ vượt số phần trăm tổng số alen, việc tìm kiếm kết thúc Dựa ý nghĩa đặc biệt nhiễm sắc thể: đo tiến giải thuật số hệ cho trước Nếu tiến nhỏ số ε xác định, kết thúc tìm kiếm Thuật toán Havard (1970) Bước 1: Phát biểu lại giả thiết (GT) kết luận toán dạng chuẩn sau: GT 1,GT2,…, GTn → KL1,KL2,…, KLm Trong GTi, KLj xây dựng từ biến mệnh đề phép nối ∧ ,∨,˥, Bước 2: Bước bỏ phủ định (nếu cần) Khi cần bỏ các phủ định: chuyển vế GTi sang vế kết luận KLj ngược lại (giống chuyển dấu âm đai số từ vế phai sang trái ngược lại) Bước 3: Thay dấu “∧” GTi “∨” KLj dấu “,” Bước 4: Nếu GTi dấu “∨” KLj cịn dấu “∧” tách chúng thành hai dòng Bước 5: Một dòng chứng minh nêu tồn chung mệnh đề hai vế Bước 6: Bài toán chứng minh chi tất dòng chứng minh Ngược lại tốn khơng chứng minh Bài 1: Tính chi phí hành trình tốt (tiết kiệm nhất): (Thuật toán GTS 2- Greedy) Sắp xếp hội thảo (Thuật tốn tơ màu) Tơ màu đồ thị Bài tốn đèn giao thơng (Thuật tốn tơ màu) Hãy xây dựng cột đèn cho việc lưu thông không bị giao (số màu đèn bao nhiêu) Áp dụng giải thuật AKT vào toán tháp Hà Nội public void heuristic() { this.valueH = this.disks[2].length; for (int i = 0; i < this.disks[2].length; i++) { if (this.disks[2][i].getDiskId() == i + 1) { this.valueH ; } } } public void resolve() { Snapshot originalSnapshot = new Snapshot(this.diskCount); this.lstOpenedSnapshots.add(originalSnapshot); while (this.lstOpenedSnapshots.size() > 0) { Snapshot processingSnapshot = this.lstOpenedSnapshots.get(0); this.lstSteps.add(processingSnapshot); this.lstOpenedSnapshots.remove(0); if (processingSnapshot.getValueH() == 0) { break; } List<Snapshot> lstGeneratedSnapshots = new ArrayList<Snapshot>(); processingSnapshot.getAllGeneratedSnapshot(lstGeneratedSnapshots); for (Snapshot snap : lstGeneratedSnapshots) { if (!this.isValidSnapshot(snap)) { continue; } int i = 0; while (i < this.lstOpenedSnapshots.size() && snap.getvalueF() > this.lstOpenedSnapshots.get(i).getvalueF()) { i++; } this.lstOpenedSnapshots.add(i, snap); } } } Thuật toán Minimax (AI Game ) function findBestMove(board): bestMove = NULL for each move in board : if current move is better than bestMove bestMove = current move return bestMove function minimax(board, isMaximizingPlayer): if(CheckStateGame(curMove) == WIN_GAME) return MAX if(CheckStateGame(curMove) == LOSE_GAME) return MIN if( CheckStateGame(curMove) == DRAW_GAME) return DRAW_VALUE if isMaximizingPlayer : bestVal = -INFINITY for each move in board : value = minimax(board, false) bestVal = max( bestVal, value) return bestVal else : bestVal = +INFINITY for each move in board : value = minimax(board, true) bestVal = min( bestVal, value) return bestVal function minimax(board, depth,isMaximizingPlayer): if(CheckStateGame(curMove) == WIN_GAME) return MAX - depth if(CheckStateGame(curMove) == LOSE_GAME) return MIN + depth if( CheckStateGame(curMove) == DRAW_GAME) return DRAW_VALUE if isMaximizingPlayer : bestVal = -INFINITY for each move in board : value = minimax(board, depth +1, false) bestVal = max( bestVal, value) return bestVal else : bestVal = +INFINITY for each move in board : value = minimax(board, depth + 1,true) bestVal = min( bestVal, value) return bestVal Thuật tốn loang ứng dụng game dị mìn //Mở ô trống void open_empty_pos(int row, int col) { int i, j; opened[row][col] = 1; // Đánh dấu ô xét mở if (p[row][col] == EMPTY) { // Nếu xét trống có mật độ // Xét ô xung quanh for (i = -1; i < 2; i++) { for (j = -1; j < 2; j++) { if (i!=0 || j!=0) { if (row + i >= && row + i =0 && col + j z; if (z % ucln(vx, vy) != 0) { cout

Ngày đăng: 22/02/2019, 09:30

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w