2009-12-11 2 views
9

내 블로그에 링크를 추가하는 것은 내 의도는 아니지만 실제로 의미하는 바를 명확히 할 다른 방법은 없습니다. 이 기사는 상당히 길며 세 부분으로되어 있습니다 (1, 2, 3). 궁금한 점이 있다면 읽을 가치가 있습니다.코드 박테리아 : 진화하는 수학적 행동

오래 전 (5 년 이상) "수학적 박테리아"를 생성 한 파이썬 프로그램을 프로그래밍했습니다. 이 박테리아는 간단한 연산 코드 기반의 유전자 코드를 가진 파이썬 객체입니다. 숫자로 피드를 보내고 코드 실행에 따라 숫자를 반환 할 수 있습니다. 유전자 코드를 무작위로 생성하고 미리 정의 된 기대 값과 유사한 결과를 산출하는 객체에 환경 선택을 적용합니다. 그런 다음 복제하고 돌연변이를 도입하여 진화 시키도록했습니다. 결과는 매우 흥미 롭습니다. 유전자 코드는 기본적으로 훈련 데이터 세트와 다른 값에 대해서도 간단한 방정식을 풀 수있는 방법을 기본적으로 배우기 때문입니다.

이제이 물건은 장난감 일뿐입니다. 낭비 할 시간이 있었고 호기심을 만족시키고 싶었습니다. 그러나 연구의 측면에서 무언가가 만들어 졌다고 가정합니다 ... 저는 여기서 바퀴를 재발 명하고 있습니다. 내가 프로그래밍 한 것과 같은 in-silico 박테리아를 만들기위한보다 심각한 시도에 대해 알고 있습니까?

사실 이것은 "유전자 알고리즘"이 아닙니다. 유전 알고리즘은 진화/선택을 사용하여 주어진 점수 함수에 대한 매개 변수의 벡터를 향상시키는 것입니다. 이것은 다른 종류입니다. 주어진 점수 함수에 대해 코드을 매개 변수가 아닌 최적화합니다.

+5

아니요, 이것은 꽤 분명히 조지아입니다. 스코어링 함수 (코드가 원하는 출력을 생성하는지 여부에 관계없이)에 대해 매개 변수 (실행할 코드의 opcode 표현)를 최적화합니다. –

+1

물론, 코드를 매개 변수로 생각하면 ... 당신은 완전히 맞습니다. –

+1

물론 유전자 알고리즘 (GA)의 특성화이지만이 전문화는 올바르게 유전학 프로그래밍 (GP)으로 알려져 있습니다. 아래에 설명되어 있습니다. – MaD70

답변

2

무료 유틸리티 Eureqa은 다 변수 입력 데이터를 기반으로 피팅 기호 함수 (단순 선형 회귀보다 훨씬 복잡함)를 만들 수 있다는 점에서 비슷합니다. 그러나 GA를 사용하여 기능을 제공하므로 사용자가 염두에두고있는 것이 맞는지 확실하지 않습니다.

"Download Your Own Robot Scientist" article on Wired도 참조하십시오. 어떻게 작동하는지 일반적인 개념을 설명하십시오.

+0

그것은 관계에 추론하는 도구와 같아요. PCA에 추론자가 첨부되어 있습니다. –

1

Core Wars에 익숙하십니까? 약간의 성공을 거둔 게임을 위해 작성된 많은 코드 리볼버가 있다는 것을 기억합니다. 예를 들어 MicroGP++은 핵심 문제 어셈블리뿐만 아니라 핵심 어셈블리 어셈블리 언어에도 적용 할 수있는 어셈블리 코드 생성기입니다.

2

좋은 기사, "유전 프로그래밍"보다는 "유전자 발현 프로그래밍"에 대해 이야기하고 있다고 말하고 싶습니다.

+0

GEP에 대한 의문점은 Wikipedia에서 해당 기사의 Talk 페이지를 참조하십시오 : http://en.wikipedia.org/wiki/Talk : Gene_expression_programming – MaD70