-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDNA.js
More file actions
35 lines (30 loc) · 851 Bytes
/
DNA.js
File metadata and controls
35 lines (30 loc) · 851 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class DNA {
constructor(genes) {
if(genes) {
this.genes = genes;
} else {
this.genes = [];
for (var i = 0; i < lifespan; i++) {
this.genes[i] = p5.Vector.random2D();
this.genes[i].setMag(0.1);
}
}
}
crossover(partner) {
let newgenes = [];
let mid = floor(random(this.genes.length));
for(let i=0;i<this.genes.length;i++) {
if(i < mid) newgenes[i] = this.genes[i];
else newgenes[i] = partner.genes[i];
}
return new DNA(newgenes);
}
mutation() {
for(let i=0;i<this.genes.length;i++) {
if(random(1) < 0.005) {
this.genes[i] = p5.Vector.random2D();
this.genes[i].setMag(0.1);
}
}
}
}