9

Tôi đang cố gắng xây dựng mô phỏng tiến hóa đơn giản của các tác nhân được điều khiển bởi mạng thần kinh. Trong phiên bản hiện tại, mỗi tác nhân có lưới thần kinh chuyển tiếp với một lớp ẩn. Môi trường chứa lượng thức ăn cố định được biểu thị dưới dạng chấm đỏ. Khi một nhân viên di chuyển, anh ta mất năng lượng, và khi anh ấy ở gần thực phẩm, anh ta sẽ có năng lượng. Đại lý với 0 năng lượng chết. đầu vào của mạng thần kinh là góc hiện tại của tác nhân và một véc-tơ đến thực phẩm gần nhất. Mỗi bước thời gian, góc chuyển động của mỗi tác nhân được thay đổi bởi đầu ra của mạng thần kinh của nó. Mục tiêu của khóa học là để xem hành vi tìm kiếm thực phẩm phát triển sau một thời gian. Tuy nhiên, không có gì xảy ra.Cuộc sống nhân tạo với mạng nơron

Tôi không biết vấn đề là cấu trúc mạng neural (quá đơn giản?) Hay cơ chế sinh sản: để ngăn chặn sự bùng nổ dân số, dân số ban đầu là khoảng 20 đại lý, và khi dân số gần 50, cơ hội sinh sản tiến tới 0. Khi quá trình tái tạo xảy ra, cha mẹ được chọn bằng cách xem danh sách các tác nhân từ đầu đến cuối và kiểm tra từng tác nhân có hay không một số ngẫu nhiên từ 0 đến 1 nhỏ hơn tỷ lệ giữa năng lượng của tác nhân này và tổng của năng lượng của tất cả các tác nhân. Nếu vậy, tìm kiếm kết thúc và tác nhân này trở thành cha mẹ, khi chúng ta thêm vào môi trường bản sao của tác nhân này với một số xác suất đột biến trong một hoặc nhiều trọng số trong mạng thần kinh của mình.

Cảm ơn trước!

+0

Chính xác bạn có ý nghĩa gì bởi "không có gì xảy ra"? – timday

+0

Các tác nhân di chuyển ngẫu nhiên, thay đổi hướng theo thời gian, nhưng không tìm kiếm thức ăn. – user1767774

+1

BTW nếu bạn chưa từng bắt gặp nó và cần một số nguồn cảm hứng cho loại dự án này, hãy đọc: http://ttapress.com/553/crystal-nights-by-greg-egan/ – timday

Trả lời

6

Nếu môi trường đủ lành tính (ví dụ, thật dễ dàng để tìm thức ăn) thì việc di chuyển ngẫu nhiên có thể là một chiến lược hoàn toàn khả thi và thành công sinh sản có thể bị ảnh hưởng nhiều hơn nhiều so với bất kỳ thứ gì khác. Cũng xem xét các hậu quả ngoài ý muốn: ví dụ, nếu con cái được kết hợp với cha mẹ thì cả hai đều ngay lập tức cạnh tranh nhau trong khu vực địa phương và điều này có thể đủ bất lợi để dẫn đến cái chết của cả hai trong dài hạn.

Để kiểm tra hệ thống của bạn, hãy giới thiệu một cá nhân có mạng lưới thần kinh "premade" được thiết lập để chỉ đạo cá nhân trực tiếp về thực phẩm gần nhất (mô hình của bạn tồn tại và dễ ghi lại, phải không? Nếu không, nó không hợp lý để mong đợi nó phát triển!). Giới thiệu cá nhân đó vào mô phỏng của bạn trong khối lượng câm. Nếu cá nhân không nhanh chóng thống trị, nó cho thấy mô phỏng của bạn không được thiết lập để củng cố hành vi đó. Nhưng nếu cá nhân thích thành công sinh sản và nó và hậu duệ của nó tiếp quản, thì mô phỏng của bạn đang làm điều gì đó đúng và bạn cần phải tìm nơi khác vì lý do hành vi đó không phát triển.

Cập nhật để đáp ứng với bình luận:

Dường như với tôi trộn này góc độ và vectơ là không rõ ràng. Cho dù cá nhân có thể phát triển theo hướng "di chuyển thẳng về phía thực phẩm gần nhất" phải thay vì phụ thuộc vào một chức năng atan có thể được xấp xỉ bởi mạng của bạn (tôi hoài nghi). Một lần nữa, điều này cho thấy xét nghiệm hơn:

  • dành tất cả các mô phỏng sinh thái và chỉ cần kiểm tra làm xáo trộn dân của phong cách của bạn trong mạng ngẫu nhiên để xem họ có thể phát triển theo hướng chức năng mong đợi.
  • (đơn giản hơn, tốt hơn) Có đầu ra mạng một vec-tơ (thay vì một góc): hướng mà cá nhân phải di chuyển (tất nhiên điều này có nghĩa là có 2 nút đầu ra thay vì một). Rõ ràng chiến lược "di chuyển thẳng về thực phẩm" chỉ là sự chuyển tiếp thẳng của thành phần vectơ "hướng tới thức ăn", và điều thú vị là xem liệu các mạng ngẫu nhiên của bạn có tiến triển theo chức năng nhận diện đơn giản này không? cho phép giới thiệu một cá thể được tối ưu hóa readymade như mô tả ở trên).

Tôi cũng không chắc chắn về "lượng thức ăn cố định". (Tôi giả sử bạn có nghĩa là ngay sau khi một chấm đỏ được tiêu thụ, một số khác được giới thiệu). Một mô hình "thực tế" hơn có thể là giới thiệu thức ăn với tốc độ không đổi, và không áp đặt bất kỳ giới hạn dân số nhân tạo nào: giới hạn dân số được xác định bởi những giới hạn của việc cung cấp thực phẩm. Ví dụ: Nếu bạn giới thiệu 100 đơn vị thức ăn mỗi phút và cá nhân cần 1 đơn vị thức ăn mỗi phút để tồn tại, thì mô phỏng của bạn nên tìm thấy nó có khuynh hướng hướng tới một dân số trung bình dài hạn là 100 cá nhân mà không cần kẹp để tránh " bùng nổ dân số "(mặc dù bùng nổ và phá sản, động lực ăn chay hoặc đói có thể thực sự xuất hiện tùy thuộc vào chi tiết).

+0

Cảm ơn bạn, đó là ý tưởng tuyệt vời, nhưng tôi không chắc chắn về cách tôi nên chọn trọng lượng phù hợp. Tôi sử dụng tanh (x) như một hàm kích hoạt. Để a, b, c là trọng số và alpha, dx, nhuộm góc của tác nhân, khoảng cách ngang và khoảng cách thẳng đứng đến thực phẩm gần nhất, tương ứng. Tôi muốn như vậy, b, c để tanh (a * alpha + b * dx + c * dy) = epsilon * (tan (dy/dx) -alpha) - Tôi muốn đầu ra là một số lần liên tục sự khác biệt giữa góc tới thực phẩm (tan (dy/dx)) đến góc hiện tại. Đây là một phương trình với 3 ẩn số. Nhân tiện, bạn nghĩ gì về cơ chế sinh sản mà tôi đã mô tả? – user1767774

+1

Tôi đã làm theo đề xuất của bạn và thực hiện kết quả đầu ra mạng một vectơ, và sau vài phút hành vi tìm kiếm thực phẩm đã được phát triển! Cảm ơn bạn (-: lý do của sự thay đổi quan trọng này là gì? Trực giác vectơ giữ cả thông tin về góc và thông tin ít liên quan về độ lớn, vì vậy có thể ngoại trừ kết quả tồi tệ hơn khi đầu ra là vô hướng đơn giản (góc) ... – user1767774

+1

Đoán của tôi: vì mô hình mạng thần kinh của bạn dễ dàng hơn nhiều để phát triển theo hướng "chuyển hướng" đơn giản của hướng thực phẩm đến hướng di chuyển hơn là để chúng phát triển một hàm atan. – timday

Các vấn đề liên quan