Có nhất thiết phải ánh xạ các số nguyên thành bit trong một thuật toán di truyền không?


8

Từ những gì tôi đã đọc, thuật toán di truyền thường (luôn luôn?) Được áp dụng cho nhiễm sắc thể của các bit. Vì vậy, nếu một vấn đề liên quan đến tối đa hóa một hàm lấy các giá trị nguyên, các số nguyên đầu tiên được mã hóa dưới dạng bit.

Bản đồ này có cần thiết không? Dường như bạn có thể lấy nhiễm sắc thể của các số nguyên và áp dụng chéo và đột biến trực tiếp. Vì vậy, nếu tôi có một hàm có 35 đầu vào số nguyên, tôi chỉ có thể áp dụng các toán tử di truyền cho các số nguyên đó, thay vì trên các bit 35xB (trong đó B là số bit cần thiết để mã hóa một số nguyên). Có một lý do này không được thực hiện?

Có lẽ thuật toán sẽ bị ảnh hưởng bởi vì vấn đề được xác định rõ ràng hơn (nghĩa là, một vấn đề có thể được xác định với nhiễm sắc thể ngắn hơn nếu chúng ta không sử dụng bit), nhưng tôi tò mò liệu có ai có câu trả lời tốt hơn không.


1
Tôi không có kiến ​​thức về miền vấn đề bạn đang gặp phải, nhưng theo trực giác, nó có vẻ hữu ích và có khả năng có lợi trong ngữ cảnh này để xử lý trực tiếp ngôn ngữ của máy tính, thay vì proxy số như giá trị số nguyên. Nhưng nếu giao dịch với số nguyên thì thuận tiện hơn, bằng mọi cách hãy làm như vậy. Mạng lưới thần kinh thường xử lý các số dấu phẩy động, mặc dù có những lợi thế đáng kể để kiến ​​trúc chúng theo kiểu nhị phân.
Robert Harvey

Cho rằng DNA sử dụng các đoạn 2 bit, tôi nghĩ rằng câu trả lời có thể là "không", ít nhất là cho đến nay theo thuật toán di truyền mô hình tiến hóa sinh học.
Gort Robot

Câu trả lời:


9

Mã hóa các giá trị dưới dạng bit là không cần thiết. Nhìn vào ô tô 2d (đừng lãng phí quá nhiều thời gian cho nó) để biết ví dụ về việc giao chéo được thực hiện trên toàn bộ giá trị (float). Toàn bộ 'hội đồng' được giao nhau, điều này làm tăng khả năng nhận biết của nguồn (một phần tính thẩm mỹ của trò chơi), nhưng làm cho nó biến đổi do nhiễm sắc thể nhất định và cha mẹ của nó bị hạn chế hơn.

Lý do để xem xét sử dụng bit thay vì số nguyên phải thực hiện với phạm vi dữ liệu mà nhóm được tạo hạt giống. Có 35 số nguyên có nghĩa là việc vượt qua chỉ có thể xảy ra trên 35 giá trị được lấy làm toàn bộ giá trị. có 1120 bit (số nguyên 35 * 32 bit) mang lại độ chi tiết mịn hơn (xem xét 'thuật toán di truyền' truyền thống hoạt động trên ATCG - không phải toàn bộ 'giá trị' của axit amin hoặc protein).

Có các bit cho phép bạn có các đột biến 'sạch hơn' (lật một chút) và giao thoa lấy phần trên cùng của một số nguyên và phần dưới cùng của một số nguyên khác. Cả hai điều này giúp tăng sự đa dạng tiềm năng của con cái.

Hãy xem xét nhiễm sắc thể chỉ có hai byte (chúng tôi đang thực hiện byte chứ không phải số nguyên để dễ nhìn hơn):

chromosome 1: 0xA3 0xB2
chromosome 2: 0x12 0x34

Sự giao thoa giữa hai nhiễm sắc thể này chỉ có thể xảy ra ở những nơi hạn chế. Bạn sẽ kết thúc với:

chromosome 1': 0x12 0xB2
chromosome 2': 0xA3 0x34

Nếu điều này được thực hiện dưới dạng bit thay thế:

chromosome 1: 1010001110110010
chromosome 2: 0001001000110100
                    ^   ^     

Bây giờ bạn có thể chọn các ^trang web để cung cấp chéo:

chromosome 1': 1010001000110010
chromosome 2': 0001001110110100
                     ^   ^     

Điều này cung cấp một mô hình phong phú hơn với nhiều biến thể có thể có giữa hai nhiễm sắc thể.


Cảm ơn. Đây là những gì tôi muốn nói khi nói vấn đề là "thô hơn" nhưng bạn đã đưa ra một câu trả lời rõ ràng tốt đẹp.
itzy

3

Miễn là bạn có một chéo và đột biến, bạn đang kinh doanh. Các loại cơ bản không quan trọng. Tôi đã thấy GA trên các cấu trúc biểu đồ nơi giao thoa và đột biến hoạt động trực tiếp trên biểu đồ, thêm hoặc kết hợp các nút.

Trên thực tế, tôi thường mã hóa mọi thứ thành ký tự và sau đó cung cấp chéo và biến đổi ở mức byte, thay vì trên các bit. Thêm một mặt nạ bit để đưa nó lên cấp độ bit không khó, nhưng cuộc sống thì quá ngắn ngủi.


0

Trong GA tất cả các nhiễm sắc thể thường được biểu diễn dưới dạng chuỗi bit. Bạn có thể có ngoại lệ, nhưng bây giờ hãy để quên chúng.

Nhiễm sắc thể là một giải pháp khả thi cho vấn đề của bạn, vì vậy nếu giải pháp của bạn là số nguyên, thì nó phải có biểu diễn nhị phân để được xử lý bởi các hoạt động di truyền. May mắn thay, các số nguyên đã có biểu diễn nhị phân này (trên thực tế, chúng * các chuỗi bit nguyên bản), vì vậy bạn không phải làm bất cứ điều gì, chỉ cần áp dụng các toán tử cho các cá nhân trong dân số của bạn trong quá trình tiến hóa.


0

Bản đồ là không cần thiết.

Sự tiến hóa khác biệt (DE) là một "tập hợp con" rất thành công của không gian rộng hơn của các thuật toán di truyền.

Thay đổi lớn đầu tiên là DE đang sử dụng số thực / số nguyên thực tế thay vì chuỗi bit (thường là số thực để tối ưu hóa số, số nguyên trong các trường khác).

Dù sao, thật tuyệt khi có thể biểu diễn mọi thứ như những con số thực tế.

Đó là một cách để sử dụng tài nguyên máy tính một cách hiệu quả và cũng làm cho đầu vào và đầu ra minh bạch cho người dùng: các tham số có thể được nhập, thao tác và đầu ra như các số thông thường mà không bao giờ được định dạng lại thành các gen có biểu diễn nhị phân khác.

Đối với vấn đề "được định nghĩa thô hơn" , DE chấp nhận các toán tử đột biến / chéo đã sửa đổi, sử dụng sự khác biệt giữa hai hoặc nhiều vectơ số nguyên / thực trong dân số để tạo ra một vectơ mới (ví dụ: bằng cách thêm một số tỷ lệ ngẫu nhiên của chênh lệch đến một trong các vectơ hiện có, cộng với một lượng nhiễu ngẫu nhiên nhỏ).

Sơ đồ để tạo các vectơ tham số thử nghiệm

Từ tiến hóa khác biệt - Cách tiếp cận thực tế đến tối ưu hóa toàn cầu

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.