9

신경망에 의해 제어되는 에이전트의 간단한 진화 시뮬레이션을 작성하려고합니다. 현재 버전에서 각 에이전트는 하나의 숨겨진 레이어가있는 피드 - 포워드 신경망을 가지고 있습니다. 환경에는 빨간색 점으로 표시된 고정 된 양의 음식이 들어 있습니다. 에이전트가 움직이면 그는 에너지를 잃고 음식 근처에있을 때 에너지를 얻습니다. 에너지가 0 인 에이전트가 죽습니다. 신경망의 입력은 에이전트의 현재 각도와 가장 가까운 음식에 대한 벡터입니다. 매 단계마다 각 에이전트의 이동 각도는 신경망의 출력에 따라 변경됩니다. 목표는 당분간 식량 추구 행동이 진화하는 것을 보는 것입니다. 그러나 아무 일도 일어나지 않습니다.신경망을 이용한 인공 생명

신경망 (너무 간단합니까?) 또는 재생 메커니즘 : 인구 폭발을 방지하기 위해 초기 인구는 약 20 명의 에이전트이며 인구가 50에 가까워지면 문제는 모르겠지만, 재생 확률은 0에 가까워진다. 재생산이 일어날 때, 부모는 처음부터 끝까지 에이전트 목록을 검토하고, 0과 1 사이의 난수가이 에이전트의 에너지와 모든 요원의 에너지. 그렇다면 검색은 끝나고이 에이전트는 부모가됩니다. 신경 네트워크의 하나 이상의 가중치에 몇 가지 변이가있을 수있는이 에이전트 사본을 환경에 추가 할 때입니다.

미리 감사드립니다.

+0

"아무 일도 없다"는 것이 정확히 무엇을 의미합니까? – timday

+0

요원은 무작위로 움직이며 때때로 방향을 바꾸지 만 음식을 찾지 않습니다. – user1767774

+1

아직이 프로젝트에 오지 않았다면이 프로젝트에 대한 영감이 필요합니다. http://ttapress.com/553/crystal-nights-by-greg-egan/ – timday

답변

6

환경이 충분히 좋지 않으면 (예 : 음식을 쉽게 찾을 수있는 경우) 무작위로 움직이는 것이 완벽하게 실행 가능한 전략 일 수 있으며 재생산 성공은 다른 무엇보다 운에 훨씬 더 영향을받을 수 있습니다. 예기치 않은 결과도 고려해야합니다. 예를 들어 자손이 부모와 함께 앉은 경우 두 지역 모두 지역에서 즉시 경쟁을하게되며 이는 장기간에 두 가지가 모두 사망하게하는 데 충분히 불리 할 수 ​​있습니다.

시스템을 테스트하려면 "premade"신경 네트워크가있는 개인을 소개하여 가장 가까운 음식쪽으로 직접 조정하십시오 (귀하의 모델은 그러한 것이 존재하며 재 기입하기가 쉽습니다. 맞습니까? 그렇지 않다면 진화를 기대하는 것은 무리입니다!). 멍청한 대중들 사이에서 당신의 시뮬레이션에 그 개인을 소개하십시오. 개인이 빨리 우위를 차지하지 않으면 시뮬레이션이 그러한 행동을 보강하도록 설정되어 있지 않다는 것을 의미합니다. 그러나 개인이 재생산 성공을 누리고 자손과 그 자손이 물려 받으면 시뮬레이션은 올바른 일을하고 있으며 그 행동이 진화하지 않는 이유를 다른 곳에서 찾아야합니다. 응답

업데이트는 언급합니다 :

나에게 각도와 벡터의 혼합을 의심한다 보인다. 개인이 "가장 가까운 음식쪽으로 곧장 이동"행동으로 나아갈 수 있는지 여부는 오히려 atan 기능이 네트워크에 의해 얼마나 잘 어울릴 수 있는지에 달려 있습니다 (나는 회의적입니다). 다시, 이것은 더 많은 테스트를 제안 :

  • 모든 생태 시뮬레이션을 따로 설정하고 단지 그들이 예상되는 기능으로 진화 할 수 있는지 확인하기 위해 무작위 네트워크의 스타일의 인구 을 교란 테스트합니다.
  • (더 간단하고 나은) 네트워크 출력에 각도를 사용하지 말고 개인이 움직여야하는 방향을 지정하십시오 (당연히 이는 하나가 아닌 2 개의 출력 노드를 가짐을 의미합니다). 분명히 "식 방향으로 이동"전략은 "식 방향 방향"벡터 구성 요소의 직선 통과이며 흥미로운 것은 임의의 네트워크가이 단순한 "신원 기능"으로 진화하는지 여부를 확인하는 것입니다 (또한 위에서 설명한 바와 같이 레디 메이드에 최적화 된 개인을 소개 할 수 있음).

나는 "고정 된 양의 음식"에 대해서도 의심 스럽다. (나는 빨간 점이 소비되자 마자 다른 하나가 소개된다는 것을 의미한다고 가정합니다). 보다 "현실적인"모델은 음식을 일정한 속도로 도입하고 인위적 인구 제한을 부과하지 않을 수 있습니다. 인구 제한은 식량 공급의 한계에 의해 결정됩니다. 예를 들어 분당 100 단위의 음식을 섭취하고 생존하려면 분당 1 단위의 음식이 필요하면 시뮬레이션 이어야합니다. 클램프를 사용하지 않고도 100 명으로 구성된 장기 평균 인구를 선호하는 경향이 있습니다. 인구 폭발 "(붐과 가슴, 기쁨이나 기근의 역 동성이 실제로 세부 사항에 따라 나타날 수 있음).

+0

고마워, 좋은 생각인데, 어떻게 적당한 무게를 선택해야할지 모르겠다. 나는 tanh (x)를 활성화 함수로 사용한다. a, b, c를 가중치로, α, dx, dy는 에이전트의 각도, 가장 가까운 음식에 대한 수평 거리 및 수직 거리를 각각 씩 표시합니다. tanh (a * alpha + b * dx + c * dy) = 엡실론 * (tan (dy/dx) -alpha) - 나는 출력이 일정한 시간 차이가 나는 것을 원한다. 현재 각도에 대한 음식 각도 (tan (dy/dx)). 이것은 3 개의 미지수를 갖는 하나의 방정식입니다. 그런데 내가 설명한 복제 메커니즘에 대해 어떻게 생각합니까? – user1767774

+1

나는 당신의 제안을 따라 네트워크 출력을 벡터로 만들었고, 몇 분 후에 음식 추구 행동이 진화되었습니다! 감사합니다 (- :이 중요한 변화의 이유는 직관적으로 벡터가 각도에 대한 정보와 덜 관련있는 정보를 모두 보유하므로 출력이 단순한 스칼라 (각도) 인 경우보다 나쁜 결과를 제외 할 수 있습니다. ... – user1767774

+1

내 생각 엔 신경 네트워크 모델이 운동 방향에 대한 음식 방향의 단순한 "통과"로 진화하는 것이 Atan 기능을 발전시키는 것보다 훨씬 쉽기 때문입니다. – timday

관련 문제