오늘은~^^* mutation 돌연변이 작업에 도전하는 날~^^*
설날이기도 한 오늘 코딩공부로 멋진 한 해를 시작해 볼까요~^^* YEAH~^^*
새해가 떠오르는 소리 들으시며 아침을 누리고 계셔요~^^* 공부 정리해서 돌아올게요~^^* 쓩우웅~^^*
네~^^* 함수 mutate()를 만들어 보겠습니다~^^*
아주 간단한 돌연변이 작업을 해 보겠습니다~^^* 딱 한번만! order의 두 구성요소를 맞바꾸겠습니다.
도시들을 모은 배열 cities[]의 구성요소의 인덱스를 모은 배열 order의 두 구성요소를 맞바꾸면~^^*
function nextGeneration() {
var newPopulation = [];
for (var i = 0; i < population.length; i++) {
var order = pickOne(population, fitness);
mutate(order);
newPopulation[i] = order;
}
population = newPopulation;
}
//fitness 적합성 수치가 선택 확률로 작용하여 배열 order가 만들어지면,
//이 order에 돌연변이 작업을 한 후,
//newPopulation[i]로 저장하겠습니다.
function mutate(order) {
var indexA = floor(random(order.length));
var indexB = floor(random(order.length));
swap(order, indexA, indexB);
}
//order.length는 배열 order의 총 구성요소 갯수를 뜻하지요~^^*
//0과 order.length 사이 수를 무작위로 뽑아 정수부분을 indexA,B에 저장합니다.
//이전에 만들어 둔 swap()함수를 또 사용해 보겠습니다.
//배열 order의 구성요소인 order(indexA)와 order(indexB)를 맞바꾸겠습니다.
//배열 order의 두 개의 구성요소를 무작위로 뽑아서 서로의 인덱스를 맞바꾸어, 서로의 순서를 바꾸게 되는 효과가 생길 것 같아요~^^*
function swap(a, i, j) {
var temp = a[i];
a[i] = a[j];
a[j] = temp;
}
와우!!!
돌연변이 작업을 해내었네요~~^^*
그럼 이제 우리 작업 완성~~~^^*
네?
아!
뭔가 하나 더 하면 좋을 것 같다고요?
뭘 더 하면 좋을까요~~^^*
다 완성한 줄 알았는데, 더 할 것이 있을 것 같다니…
만감이 교차하는 군요….
음….
음..?
음.??
음???
네!!!
교차!!!
Cross Over!!!
넵!!! 그럼 우리~~^^* 내일은요~^^*
Cross Over 교차 작업을 함께 해내어 볼까요~^^*?
근데요~~^^* 좀 신기한 것이요~^^*
복잡성의 수준을 점점 높여나가는 작업을~^^* 이전에 우리가 해 봐서 그런지~^^*, 다 한 것 같은데 아직 더 할 것이 남아있다는 깨달음이~^^* 좌절감보다는~^^* 도전정신!!!!을 불러 일으키는 것 같아요.
Cross Over 교차 작업에, 달콤하게 굴복하는 마음으로, 우리 내일도 도전!!!~^^*
산모퉁이를 돌아도 계속 산길이 이어지지만~^^*
꾸준히 걷다 보면 산 꼭대기에 다다르던 이전의 작은 성공의 경험이~^^*
우리의 발걸음을 더욱 씩씩하게 만들어 주는 것 같아요~^^* YEAH~^^*
오늘 저와 함께 돌연변이 작업을 해내어 주셔서 감사합니다~^^*
내일은 즐거운 마음으로 Cross Over를 도전해 볼까요~~^^* YEAH~~^^*
오늘도
멋진 아침! 보람찬 하루!
반가운 만남 기쁨 나누는 보람 만끽하시고요~^^*
보람차고 뿌듯한 가슴 통통 두드리며 코~^^* 하시기 바래요~^^*
네~^^* 꿈은 이루어 집니다~^^*
댓글 남기기