네~~^^* 오늘은 Genotype 유전형에 대해 공부해 보겠습니다~~^^*
오늘은 크리스마스가 딱 2주 14일 남은 날이네요~~^^*
강아지도 행복한 크리스마스~~^^* 산타 할아버지가 바빠지시는 계절~^^*
스코틀랜드에서도 즐거운 크리스마스~~^^* Nollaig Chridheil~~^^*
네~~^^* 크리스마스 분위기 충전하고~~^^* 이제 공부 시작해 볼까요~~^^*
Genotype 유전형은 생명체의 유전적 정보를 담고 있는 것 같아요~^^* 그래서 DNA 파일을 들여다 보겠습니다~~^^*
클래스 DNA의 전체 구조는 “To be or not to be” 프로그램의 클래스 DNA의 전체구조와도 비슷한 것 같습니다~^^*
crossover 교차와 mutation 돌연변이가 일어나는 것은 같습니다.
그런데 한 가지 다른 것은~^^* “어떤 정보를 DNA에 담고 있는가?”인 것 같아요~~^^*
즉, constructor()의 내용이 달라지는 것 같습니다.
“To be or not to be” 프로그램의 경우, 유전정보는 문자에 대한 것이었는데요~^^*
네~^^* Rocket에 관한 프로그램인 만큼, DNA 즉 genes[]의 구성요소에 새겨지는 정보는, 움직임 각도와 힘의 크기를 가진 벡터입니다~^^*
class DNA {
constructor(newgenes) {
this.maxforce = 0.1;
//힘의 최대값
if (newgenes) {
this.genes = newgenes;
} else {
this.genes = [];
for (let i = 0; i < lifetime; i++) {
let angle = random(TWO_PI);
this.genes[i] = createVector(cos(angle), sin(angle));
this.genes[i].mult(random(0, this.maxforce));
}
// 무작위값의 회전각을 지는 벡터를 생성하여 genes[i]에 저장합니다.
// genes[i]에 0에서 maxforce값 사이의 무작위 값을 곱하여 벡터의 크기를 변화시킵니다.
}
//유전자 시퀀스를 만들어 냅니다.
this.genes[0].normalize();
//Rocket의 초기 힘의 크기를 적정한 정도로 세팅합니다.
}
crossover(partner) {
let child = new Array(this.genes.length);
let crossover = int(random(this.genes.length));
//genes길이값 내의 무작위값으로 교자지점을 정합니다.
for (let i = 0; i < this.genes.length; i++) {
if (i > crossover) child[i] = this.genes[i];
else child[i] = partner.genes[i];
}
//교자지점을 기준으로
//앞부분은 자신의 유전정보로
//뒷부분은 상대의 유전정보로
//child의 정보를 채웁니다.
let newgenes = new DNA(child);
return newgenes;
}
//유전자 정보를 교차합니다.
mutate(m) {
for (let i = 0; i < this.genes.length; i++) {
if (random(1) < m) {
let angle = random(TWO_PI);
this.genes[i] = createVector(cos(angle), sin(angle));
this.genes[i].mult(random(0, this.maxforce));
if (i == 0) this.genes[i].normalize();
}
//주어진 돌연변이 확률에 따라
//무작위값의 회전각과 힘의 크기를 지닌 벡터를 만들어
//genes[i]에 저장하여
//기존의 genes[i]의 정보를 변화시킵니다.
}
}
}
오늘 저와 함께 유전자형 Genotype에 대해 함께 살펴봐 주셔서 감사합니다~^^*
내일은 우리~~^^* 표현형 Phenotype에 대해 살펴 볼까요~~^^*
하루하루 크리스마스가 다가오는 것처럼~
하루하루 새로운 내용을 살펴보는 즐거움과 설렘이 있는 것 같아요~~^^*
오늘도 점심 맛있게 드시고요!
즐거운 하루 보내시고요!
따뜻한 밤 보내셔요~~^^*
네~~^^* 꿈은 이루어 집니다~~^^*
댓글 남기기