오늘은 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일 전날 을 보내시기 바래요~~^^*
네~^^*
오늘도 맛있는 점심! 편안한 저녁! 따뜻한 밤! 보내시구요!
우리 내일 다시 만나서 새로운 도전을 이어가 볼까요~~^^*
설산을 관통하여 설원을 달리는 행운의 기차처럼~~^^*
네~^^* 꿈은 이루어 집니다~^^*
댓글 남기기