3

유전자 프로그래밍을 사용하여 이미지를 대화식으로 전개하는 방법에 대해이 멋진 글의 한 부분 인 book을 읽었습니다. 함수 세트의 대부분은 단순한 산술 및 trig 함수로 구성됩니다 (실제 작업과 리턴 이미지). 이 함수는 이미지를 인코딩하는 파스 트리의 내부 노드를 구성합니다. 트리의 잎 또는 터미널 값은 임의의 숫자와 x, y 좌표입니다. 기능 세트에 복소 평면의 반복 기능을 추가하는 방법에 대한 섹션있다Mandelbrot 세트를 사용한 유전 프로그래밍

:

는 유전학을 말해 특정 만델 브로가 관목이 무성한 나무에 어딘가에 노드로 설정 삽입합니다. 이 함수는 두 개의 인수를 요구합니다 : mandel (cReal, cImag), 복소수 평면에서 실수 및 허수 좌표로 을 처리합니다. 게놈 이 방금 픽셀 좌표 (x, y)를 제공하고 mandel()이 루트 노드 였으면 익숙한 Mset을 얻을 수 있습니다. 그러나 cReal과 cImag는 그 자체로 함수의 전체 가지의 결과이며, 좌표 사이에 많은 흩어져있는 좌표 x가 있습니다. 잠시 동안 반복 루프 궤도 을 입력하고 마침내 Mets 어 트랙터에 대한 거리 측정치 (예 : 반복 횟수)를 사용하여 탈출하십시오.

내 질문은 어떻게 복잡한 평면에 포인트의 실제 및 가상 좌표를 인수로 가져 와서 만델 브로 세트의 렌더링을 반환하는 함수로 만델 브로 세트 렌더러를 만들겠습니까? 그 수이 실제로 질문에 대한 대답,하지만 당신은 단순히 인용 한 텍스트에 대한 이해가 mandel 기능 은 (곱셈, 최소, 최대, 또한 같은 등) 또 다른 기능이라고 말한다면

답변

1

는 잘 모르겠어요 당신의 유전 프로그램에 나타납니다.

mandel 함수는 곱셈 함수와 마찬가지로 두 개의 인수 (in_1in_2)를 취하여 단일 값을 반환합니다. 곱셈의 기능이 단지 in_1 * in_2를 반환하는 반면의 만델 기능은 something like this을 할 수 있습니다

int mandel(int in_1, int in_2) { 
    x = 0 
    y = 0 
    iteration = 0 
    max_iteration = 1000 

    while(x*x + y*y <= (2*2) && iteration < max_iteration) { 
    xtemp = x*x - y*y + in_1 
    y = 2*x*y + in_2 
    x = xtemp 

    ++iteration 
    } 

    if(iteration == max_iteration) return 0 
    else return iteration 
} 

전체 유전자 프로그램 트리, 다음 반복적으로 평가 한 x 등의 입력 및 y 같은 다른 입력으로 mandel 기능을하지만 아무것도 구성된 경우 다른 (x,y) 값을 저장하고 결과를 저장하는 프로그램은 만델 브로 세트의 멋진 그림을 제공합니다.

물론 유전 프로그래밍에 대한 깔끔한 것은 입력이 단지 xy보다 더 좋아질 수 있다는 것입니다. 예를 들어 한 입력이 x이고 다른 입력이 x + 2*y 인 경우 결과는 어떻게됩니까? 또는 한 입력이 x이고 다른 입력이 mandel(x,y)?