III. 3. 3. Giải thuật genetic programming
- Bƣớc 1: Khởi tạo một tập quần thể theo tham số đã cho(số lượng quần thể), thiết lập bộ dữ liệu mẫu. Trong đĩ mỗi cá thể trong quần thể bao gồm một cây nhị phân đại diện cho một hàm f(x), một bộ dữ liệu dùng để kiểm tra hàm f(x) và một biến sai số (error) để đo lường độ lệch giữa giá trị thực sự tính tốn bằng hàm f(x) với giá trị mẫu của bộ dữ liệu. - Bƣớc 2: Tạo vịng lặp với điều kiện dừng là chưa tìm ra hàm thỏa bộ dữ liệu đề bài.
2. a. Áp dụng tốn tử chọn lọc (III.3.2) dựa vào độ sai số tìm ra cá thể tốt nhất, xấu nhất trong quần thể, cũng như xác định cá thể thể tốt nhất, xấu nhất trong quần thể, cũng như xác định cá thể tốt nhất đĩ cĩ phải là hàm cần tìm? Nếu là hàm cần tìm thì kết thúc vịng lặp. Nếu chưa sang bước 2.b.
2. b. Áp dụng các tốn tử đột biến (III.3.3), lai tạo (III.3.4) hay sao chép phần tử tốt nhất dựa trên các xác suất Pcross(xác xuất lai tạo), Pmutate( xác xuất đột biến), Pcopy(xác xuất sao chép) xây dựng nên quần thể cho thế hệ kế tiếp. Loại bỏ cá thể xấu nhất khơng phù hợp với mơi trường (bộ dữ liệu đề bài).
Nếu P < Pmutate thì cho đột biến cá thể tốt nhất. Đưa cá thể đĩ vào thế hệ sau. Loại bỏ cá thể xấu nhất ra khỏi quần thể.
Ngược lại nếu P < Pcross thì cho lai tạo các cá thể. Lấy cá thể tốt nhất lai với một cá thể ngẫu nhiên trong quần thể sinh ra một cá thể mới đưa vào thế hệ sau. Loại bỏ cá thể xấu nhất ra khỏi quần thể.
Ngược lại nếu P < Pcopy thì cho sao chép cá thể tốt nhất vào quần thể mới. Loại bỏ cá thể xấu nhất ra khỏi quần thể.
Ghi chú: Các xác xuất Pmutate, Pcopy, Pcross cĩ thể cho người dùng nhập vào. Giá trị mặc định của các xác xuất do việc thử nghiệm bài tốn.