Silverback9

#야생으로

Creative Coding 독학 제266일 2024년12월18일(수)

오늘은 Monte Carlo Sampling – Accept-Reject Sampling 알고리즘을 “to be or not to be” 프로그램에 바로~ 적용해 보겠습니다~^^*

핵심 코드를 저와 함께 살펴 보실까요~~^^*

  generate() {
    let maxFitness = 0;
    for (let i = 0; i < this.population.length; i++) {
      if (this.population[i].fitness > maxFitness) {
        maxFitness = this.population[i].fitness;
      //population 군집 배열 각 구성요소의 적합성 중 가장 큰 수치의 적합성을 변수 maxFitness에 저장합니다. 
      }
    }
    
    let newPopulation = [];
    //자녀세대 population 군집을 담을 배열 newPopulation[]입니다. 

    for (let i = 0; i < this.population.length; i++) {
      let partnerA = this.acceptReject(maxFitness);
      let partnerB = this.acceptReject(maxFitness);
      //Monte Carlo Sampling과 Accept-Reject Sampling을 수행하는 함수 accpetReject()가 return 반환한 후보자를 partner A, B로 저장합니다. 
 
      let child = partnerA.crossover(partnerB);
      child.mutate(this.mutationRate);
      newPopulation[i] = child;
      //교차와 돌연변이 적용을 하여 자녀세대 population 군집 newPopulation[]에 저장합니다.  
    }
    
    this.population = newPopulation;
    //세대교체를 합니다. 
    this.generations++;
  }
  
  acceptReject(maxFitness) {
    let besafe = 0;
    while(true) {

      let index = floor(random(this.population.length));
      let partner = this.population[index];
      //무작위로 population군집 구성요소를 뽑아서 변수 partner에 저장합니다.
      //Monte Carlo Sampling 작업과정인 것 같습니다~^^*

      let r = random(maxFitness);
      //0과 population 군집의 구성요소들의 적합성 중 최대 수치인 maxFitness 사이의 무작위 수를 변수 r에 저장합니다. 

      if (r < partner.fitness) {
        return partner;
      //무작위 수 r이 partner의 적합성 수치보다 작다면
      //partner를 return 반환합니다.  
      }

      besafe++;
      
      if (besafe > 10000) {
        return null;
      }
    }
   //무작위 수 r이 partner의 적합성 수치보다 작지 않다면
   //다시 while 문 안의 작업을 반복합니다. 
   //Accept - Reject Sampling 작업과정인 것 같습니다~^^*
   //반복 작업이 10000번을 넘기게 되면, partner를 찾을 수 없음으로 해석하고 return 값 없이 작업을 종료해 버립니다. 컴퓨터를 보호하기 위하여~^^*
  }

Monte Carlo Sampling – Accept-Reject Sampling 알고리즘이 적용된 “to be or not to be” 프로그램을 플레이 해 보실게요~~~^^*

네~~^^* 오늘 우리는 Monte Carlo Sampling – Accept-Reject Sampling 알고리즘에 기반한 군집 선택 Pool Selection 동영상 강의 내용을 마무리하게 되었네요~^^*

우와 신기한 것이요~!!!

오늘은 크리스마스까지 7일 전인데요~~^^*

우리가 오늘 마무리한 동영상 강의의 인덱스가 9 – 7 이네요~~^^*

행운의 수가 두 번 나오는 날이네요~~^^*

오늘 행운이 한 번 두 번도 아니고 기차 차량처럼 계속 이어지는 멋진 크리스마스 7일 전날 을 보내시기 바래요~~^^*

네~^^*

오늘도 맛있는 점심! 편안한 저녁! 따뜻한 밤! 보내시구요!

우리 내일 다시 만나서 새로운 도전을 이어가 볼까요~~^^*

설산을 관통하여 설원을 달리는 행운의 기차처럼~~^^*

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

댓글 남기기