오늘은 새로운 한 주의 코딩 공부를 시작하는 날이예요~^^
2024년 마지막 날에도 꾸준히 코딩 공부를 하고 있는 우리~^^
2024년과 2025년을 코딩 공부로 이어나가 보겠습니다~^^
공연 1 작품 편안히 감상하고 계시면~ 코딩 공부 정리해서 돌아올게요~ 쓩~
오늘은 fitness 적합성에 대해서만 집중해서 살펴 보겠습니다.
로켓들의 fitness 적합성 수치를 normalize 정규화하는 작업을 해보기로 했었는데요.
굉장히 간단하게 수행할 수 있을 것 같아요.
(1) rocket 로켓과 target 목표물 사이의 거리를 구해서 변수 d에 저장해 볼게요.
(2) 그리고 가장 가까운 시점의 거리값을 1로 설정해 볼게요.
(3) 가장 가까운 시점의 거리값 1을 로켓의 거리값 d으로 나누어 보는 거예요.
(4) 그러면, 멀리 있는 로켓은 d가 커서 1/d는 0보다 크지만 1보다는 아주 작아지고요.
(5) 반면에, 가까이 있는 로켓은 d가 작아서 1/d는 최대 1이 될 수 있어요.
(6) 이때…거리값 d가 0이 되어서 1/0 즉 무한대 값이 발생하면 어쩌나? 하는 생각이 처음에 들었지만…
(7) 가장 가까운 시점의 거리값을 1로 상정하기 때문에, 거리값 d도 최소 1까지만 나오게 될 것 같아요. 그러면 무한대값 발생이 이미 예방되고 있다고 볼 수 있을까요?
(8) 네^^* 이번의 normalize 정규화 작업은, <<가장 가까운 거리값 1 / 로켓의 거리값 d>>를 통해서 이루어 질 수 있을 것 같아요.
(9) 최대 1 최소 0의 구간 안의 상대값으로 미리 조정되어 로켓의 fitness 적합성 수치에 바로 저장될 것 같습니다.
function Population () {
.
.
.
this.evaluate() {
for ( var i = 0; i < popsize; i++) {
this.rockets[i].calFitness();
}
.
.
.
}
function DNA () {
.
.
.
this.calFitness = function() {
var d = dist(this.pos.x, this.pos.y, target.x, target.y);
this.fitness = 1 / d;
}
.
.
.
}
frame마다 무작위 방향과 크기 0.1의 속도벡터를 가지는 rocket 로켓이라서 목표물과의 거리가 0이 되는 경우가 잘 없어서일까??? 싶기도 한데요…
음…거리값 d의 최소값을 1로 제한하는 작업 문구는 없지만…this.fitness = 1 / d; 작업문이 거리값 d의 최소값을 1로 제한하는 자연스러운 역할을 하게 될 것 같아요. fitness 값에 의해 부모선택이 이루어지고 세대교체가 전면적으로 이루어지는데, 그 과정이 매우 빠르게 진행되기 때문에 그런 것인가요….? 제가 컴퓨터의 컴퓨팅 속도를 저의 신체 감각으로는 따라갈 수가 없어서…1/0 무한대값 발생의 경우를 처음에 떠올렸었나 싶기도 하네요..
아직은,,,정확하게 <<fitness = 1/d = 무한대>> 경우가 발생되지 않는 이유는 잘 모르겠지만…
잘 될 것 같은데…왜 잘 될 것 같은 지는 잘 모르겠는…약간 아리송한 기분이 드네요.
이런 아리송한 기분이, 공부를 더 이어가게 만드는 원동력이 되기도 하니까요…
왜 무한대 값이 예방될까? 아리송한 마음이 무한 궤도를 돌고 있는 이 아침, 언제나 코딩 공부를 하며 함께 곁에 있겠다는 다짐으로 내일을 기약해 볼게요!
네, 오늘 저와 함께 새로운 한 주의 첫 코딩공부, 2024년과 2025년을 잇는 코딩공부! 함께 해 주셔서 감사합니다~~^^*
우리 내일 또 호기심을 Hug하며 함께 공부해 볼까요~^^
오늘 2024와 2025를 잇는 휴식과 감사와 다짐의 하루 편안하게 보내시기 바래요…!
네!! 꿈은 이루어 집니다!!
댓글 남기기