Silverback9

#야생으로

Creative Coding 독학 제307일 2025년01월28일(화)

오늘은~^^* 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~~^^*

오늘도

멋진 아침! 보람찬 하루!

반가운 만남 기쁨 나누는 보람 만끽하시고요~^^*

보람차고 뿌듯한 가슴 통통 두드리며 코~^^* 하시기 바래요~^^*

네~^^* 꿈은 이루어 집니다~^^*

댓글 남기기