Nội dung chương trình demo

Một phần của tài liệu Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề THUẬT GIẢI DI TRUYỀN VÀ ỨNG DỤNG (Trang 25)

Thế giới Eaters "được chia thành các ô vuông nhỏ. Mỗi ô vuông có thể tổ chức một Eater hoặc một thực vật, hoặc nó có thể được để trống. Một hình vuông không

thấy một trong bốn loại khác nhau: một Eater, một thực vật, một không gian trống, hoặc một bức tường. Ngoài các thông tin bên ngoài này, Eater có bộ nhớ trong có chứa một số từ 0 đến 15. Con số này được gọi là trạng thái của Eater. Tại mỗi bước, các Eater có thể thực hiện một trong các hành động:

1. Di chuyển về phía trước một vuông 2. Di chuyển ngược trở lại một hình vuông 3. Quay sang trái 90 độ

4. Quay sang phải 90 độ

Nó cũng có thể thay đổi trạng thái của nó bằng cách thay đổi số trong bộ nhớ của nó. Nếu nó cố gắng để di chuyển vào một bức tường hoặc vào một hình vuông đã chứa Eater khác, nó sẽ không được phép di chuyển. Tuy nhiên, nó vẫn có thể thay đổi trạng thái của nó. Nếu nó di chuyển lên một hình vuông chứa một cây, nó ăn thực vật và ghi 1 điểm. Tùy thuộc vào các thiết lập trình đơn, thực vật ngay lập tức có thể phát triển trở lại ở một nơi khác. Vào cuối một năm, giá trị thích nghi (fitness) của Eater là số thực vật đã ăn, cộng với một (1 được thêm vào để tránh việc có một giá trị thích nghi bằng không).

Bây giờ, làm thế nào một Eater quyết định làm gì trên mỗi lượt? Nó căn cứ quyết định của mình vào hai điều: trạng thái hiện tại của nó và các mục tiêu mà nó thấy trong phía trước. Hành vi của nó là hoàn toàn xác định bởi một tập hợp các quy tắc cho nó biết phải làm gì cho mỗi sự kết hợp có thể có của trạng thái hiện tại và phần tử trong khung (item_in_view). Tất cả các Eater tuân theo quy luật của nó. Các quy tắc khác nhau cho những Eater khác nhau. Trong thực tế, các quy tắc của Eater hoàn toàn xác định hành vi của các Eater tạo nên khả năng di truyền của Eater, tác giả sẽ gọi nó ‘nhiễm sắc thể” Nhiễm sắc thể bao gồm 64 quy tắc (mỗi một trạng thái kết hợp với 4 phần tử trong khung (items-in-view)). Mỗi quy tắc xác định hai điều: một hành động và một trạng thái mới. Nhiễm sắc thể có thể được coi là một danh sách của 128 số.

Vào cuối một năm các tập giá trị thích nghi trung bình của quần thể hiện tại được tính toán. Một quần thể mới được tạo ra bằng cách sao chép các Eaters trong quần thể hiện tại. Cơ hội của một Eater được sao chép phụ thuộc vào tập giá trị thích nghi của mình. Eater có giá trị thích nghi dưới mức trung bình có khả năng không được

sao chép (mặc dù nó luôn có một số cơ hội sinh sản). Eaters với giá trị thích nghi cao có khả năng được sao chép nhiều lần. Sau đó, một hoạt động đột biến được áp dụng: mỗi số trong 128 số trong mỗi nhiễm sắc thể có một cơ hội được thay đổi ngẫu nhiên. Cơ hội này là 1 % theo mặc định và được kiểm soát bởi các thực đơn xác suất đột biến. Cuối cùng, một thao tác lai tạo được thực hiện: cặp Eaters trong quần thể mới được lựa chọn một cách ngẫu nhiên và có một xác suất nhất định sẽ “vượt qua”, xác suất này là 80% theo mặc định và được kiểm soát bởi các thực đơn xác suất lai tạo. Lai tạo ở đây có nghĩa là các nhiễm sắc thể trao đổi một số vật liệu di truyền, một vị trí ngẫu nhiên giữa 1 và 128 được chọn và tất cả dữ liệu trong các nhiễm sắc thể sau vị trí đó được trao đổi giữa hai nhiễm sắc thể.

Lưu ý rằng tỷ lệ đột biến mặc định là 1% là khá cao vì mỗi nhiễm sắc thể có thể có ít nhất một trong những quy tắc của nó thay đổi. Trong thực tế, việc giảm tỷ lệ đột biến dường như cho phát triển lâu dài, ổn định hơn.

Sau bước sinh sản, những Eaters mới được đặt trong một thế giới mới với một tập mới của các thực vật, và một năm mới bắt đầu. Eaters được khởi tạo trạng thái zero và mặt hướng theo hướng ngẫu nhiên.

Giá trị thích nghi trung bình và giá trị thích nghi cá nhân cao nhất trong năm trước đó được hiển thị bên dưới “Thực đơn.” Bên dưới là một bảng hiển thị các thống kê cho một số năm trước. Thông tin được hiển thị trong bảng cho mỗi năm của 10 năm đầu tiên, sau đó là mỗi mười năm cho đến năm thứ 1000, và mỗi 100 năm sau đó. Ngoài ra, nếu điểm trung bình mới có thể đạt được trong một năm mà cao thì số liệu năm được bổ sung vào bảng, ngay cả khi nó bị bỏ qua. Điểm số trung bình mới cao được đánh dấu bằng một "Asterix". Sau 100 năm đầu tiên, cửa sổ này cũng cho thấy các "trung bình điểm số trung bình " trong 100 năm trước đó.

Khía cạnh khác nhau của quần thể được kiểm soát bằng cách sử dụng thực đơn khác nhau (xuất hiện bên phải của Thực đơn (hoặc thấp hơn nếu cửa sổ của bạn là rất hẹp)). Hầu hết các trình đơn khác hoặc là tự giải thích hoặc được phát hiện thông qua thăm dò bất cứ khi nào bạn thực hiện một sự thay đổi trong trình đơn này, nó sẽ trở thành thao tác ở cơ hội đầu tiên. Ví dụ, nếu bạn thay đổi các thiết lập của thực đơn phát triển thực vật (Plants growth), nó sẽ có hiệu lực ngay lập tức trên các vị trí mà thực vật phát triển trở lại sau khi bắt đầu bị ăn. Các quần thể mục tiêu sẽ có hiệu lực vào cuối năm hiện tại.

trước đó được loại bỏ, và thế giới bắt đầu từ năm hiện tại.

Thiết lập tốc độ trong thực đơn “Speed Run”. Lưu ý rằng tốc độ “Yearly Stats Only” được thiết kế để làm cho những năm trôi qua càng nhanh càng tốt. Khi tốc độ này được chọn, nội dung của thế giới không được hiển thị. Một kỹ thuật có thể được áp dụng là để cho các chương trình chạy ở tốc độ tối đa cho đến khi điểm trung bình được quan tâm xảy ra. Sau đó bạn có thể chuyển về một trong các thiết lập tốc độ khác và cố gắng nhìn thấy những hành vi mới của Eaters đã “học được”.

Một phần của tài liệu Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề THUẬT GIẢI DI TRUYỀN VÀ ỨNG DỤNG (Trang 25)

Tải bản đầy đủ (DOCX)

(31 trang)
w