Lập trình thuật toán di truyền có chức năng

[Kory] đã viết các thuật toán di truyền trong một vài tháng nay. Bản thân nó không phải là bất cứ điều gì độc đáo hoặc đặc biệt, ngoại trừ những gì anh ta nhận được các thuật toán di truyền này để làm. [Kory] đã sử dụng các thuật toán di truyền để viết các chương trình trong não. Có, đó là một máy tính lập trình máy tính. Hãy biết ơn Skynet đã trễ 18 năm.

Khi chúng tôi lần đầu tiên nhìn thấy công việc của [Kory], anh ấy đã lập trình một máy tính để viết và chạy các chương trình của riêng mình trong BrainFuck. Mặc dù tên của ngôn ngữ [Kory] đã chọn có thể sử dụng một số công việc, nó thực sự là ngôn ngữ lý tưởng cho các chương trình do máy tính tạo ra. Chỉ với tám lệnh, mỗi lệnh bao gồm một ký tự duy nhất, nó làm giảm đáng kể chi phí của bất kỳ thuật toán di truyền nào phải tạo ra và chức năng thể dục phải đánh giá.

Có một thiếu sót cho những nỗ lực ban đầu của [Kory]: Chức năng. Nó tương đối dễ dàng để có được một chương trình để nói xin chào thế giới, nhưng để làm một cái gì đó phức tạp, bạn sẽ cần một cái gì đó giống như một macro hoặc một chức năng. Brainfuck, đó là hình thức đơn giản nhất của nó, không hỗ trợ các chức năng. Điều này ném một cờ lê trong kế hoạch của [Kory] để có máy tính lập trình máy tính của mình phát triển thông minh hơn và vượt qua Minima địa phương trong các thuật toán di truyền của nó.

Giải pháp cho vấn đề này là việc tạo một phương ngữ mới của Brainfuck [Kory] gọi Brainplus. Điều này đưa các phần tốt nhất của BrainFuck mở rộng và thêm một lệnh về cơ bản phục vụ như một câu lệnh break.

Với điều này, máy tính lập trình tự lập trình của [Kory] có thể phát triển các chương trình phức tạp hơn. Đã tạo một chương trình để tạo một vài số đầu tiên của trình tự Fibonacci. Nó chỉ tăng lên tới 233 vì 255 là giá trị tối đa cho một byte và chính chương trình mất bảy giờ để tạo ra. Nó làm, tuy nhiên, làm việc. Các chương trình khác được tạo bằng các chức năng BrainPlus mới bao gồm đọc 99 chai trên tường và một chương trình so sánh hai giá trị.

Mặc dù máy tính của [Kory] đang dành nhiều thời gian để tạo ra các chương trình này, đủ thời gian, thực sự không có nhiều chương trình này không thể làm được. Brainfuck và BrainPlus của [Kory], đang hoàn thành, vì vậy để có bộ nhớ và thời gian vô hạn nó có thể tính toán bất cứ thứ gì. Với sự bổ sung mới của các chức năng, nó có thể tính toán bất cứ thứ gì nhanh hơn.

Tất cả các mã cho GA của [Kyle] có sẵn trên GitHub.