Silverback9

#야생으로

Creative Coding 독학 제267일 2024년12월19일(목)

오늘은 Genetic Algorithm에 대한 새로운 도전!을 하는 날이예요~~^^* YEAH~~^^*

어머 그런데요~~^^*

크리스마스가 되기까지 6일이 남았네요~~^^*

숫자 6은 조화와 균형을 의미한다고 하지요~~^^*

조화와 균형의 바다 속 작고 투명한 한 방울의 물방울이 되는 느낌을~^^*

합창이나 오케스트라에 참여하면 받을 수 있을 것 같아요~~^^*

나의 경계가 없어지는거야? 어머머…!!

하는 순간,

더 큰 내가 나를 감싸고 있다는 것을 깨닫게 되는 순간~^^*

다양한 문화가 서로를 배우고 누리는 아름다운 큰 바다의 소리를 들으시며 편안한 아침을 시작하셔요~~^^*

저는 오늘의 코딩 공부 내용 정리해서 곧 돌아 올게요~ 쓩~~^^*

네~^^*

이제까지 우리는 후보자 선택을 할 때 두 가지 방법을 시도해 보았었습니다~^^*

하나. 후보자 Fitness 적합성 수치가 높은 후보자는 더 많이 후보자 Fitness 적합성 수치가 낮은 후보자는 더 적게 후보자 군집에 넣어서 무작위로 하나를 뽑는다.

둘. (1) 후보자들을 동일한 수로 넣어서 후보자 군집을 만든 후 (2) 후보자 하나를 무작위로 뽑은 후, (3) 무작위 수를 뽑아서 그 수가 그 후보자의 Fitness 적합성 수치보다 낮으면 그 후보자를 선택하고, 그렇지 않으면 (2)부터 반복한다.

두 가지 선택의 공통점은, 무작위로 뽑는데 후보자 Fitness 적합성이 선택 확률로 결국 작용한다는 점인 것 같아요…

결국…어떤 가중치가 적용되는 선택이라고 할까요~~^^*

그래서!!!

이번에 우리가 맞이하는 새로운 도전은!!!

Weighted Selection 가중선택 입니다!!! YEAH~~^^*

오늘은 이 새로운 도전의 첫 삽을 뜨는 세리머니 Ceremony로~~^^*

어떤 군집 안의 하나의 객체 Object가 몇 개 있는가에 따라 그 객체 Object의 확률을 자동 계산하는 코드를 만들어 보려고 합니다~^^*

크리스마스 특집 퀴즈~~^^* 먼저 풀어 보실게요~~^^*

화이트 크리스마스 요거트 볼을 만들어 봅시다~^^*

새하얀 플레인 요거트 위에~~^^*

망고 조각 5개~~^^*

블루베리 3알~~^^*

체리 한 개~~^^*

사과 조각 1개~~^^*

를 올려 볼게요~~^^*

그런 뒤~~^^*

아주 작은 스푼을 손에 쥐고~~^^*

눈을 꼭~ 감고 크리스마스 소원을 하나 빌면서~~^^*

과일을 하나 떠 보는 거예요~^^*

YEAH~~^^*

이때!!!

망고 조각을 뜨게 되는 확률은 얼마일까요~~~^^*

망고 조각 5개 / (망고 조각 5개 + 블루베리 3알 + 체리 한 개 + 사과 한 조각) 

= 5 / ( 5 + 3 + 1 + 1 )

= 5 / 10

= 0.5

네~~^^* 0.5입니다~~^^*

확률 = 해당 객체의 개체수 / 군집 전체 개체수  

와우~~^^* 확률을 구하는 알고리즘은 참 간단하네요~^^*

네 그럼 바로 코드 작성을 시작해 볼까요~^^*

var fruits = [
  { name: 'mango', score: 5 },
  { name: 'blueberry', score: 3 },
  { name: 'cherry', score: 1 },
  { name: 'apple', score: 1 }
];
//변수 fruits는 객체 mango, blueberry, cherry, apple로 구성된 군집입니다.
//score는 해당 객체의 개체수를 나타냅니다. 

function setup() {
    .
    .
    .
  let sum = 0;
  //sum은 과일 군집의 전체 개체수를 나타낼 변수입니다.  

  for (let i = 0; i < fruits.length; i++) {
    sum += fruits[i].score;
  }
  //과일 군집의 모든 객체들의 개체수를 더하여 변수 sum에 저장합니다. 

  for (let i = 0; i < fruits.length; i++) {
    fruits[i].prob = fruits[i].score / sum;
  }
  //과일 군집의 구성요소의 개체수 fruit[i].score를 군집 전체 개체수 sum으로 나눈 값을 과일 군집의 구성요소의 확률 fruits[i].prob에 저장합니다.  
   .
   .
   .
}

네~^^* 간단한 알고리즘이라 코드도 간단합니다~~^^*

오늘 저와 함께 확률 구하는 알고리즘을 바탕으로 코드를 만들어 주셔서 감사합니다~~^^*

내일은 두 번째 삽을 떠볼까요~~^^*

세상이 조화와 균형을 이루면 평화가 내려올 것 같은데요~^^*

조화와 균형의 숫자 6! 서로를 존중하며 어울리며 만들어 내는 세계!

노벨상 축하공연을 보면서, 6일이 남은 크리스마스를 함께 축하하면 좋겠어요~~^^*

네~^^*

오늘도

맛있는 점심!

편안한 저녁!

따뜻한 밤!

보내시고요~~^^*

우리 내일 또 만나요~~^^*

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

댓글 남기기