Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
18
Task/Evolutionary-algorithm/D/evolutionary-algorithm.d
Normal file
18
Task/Evolutionary-algorithm/D/evolutionary-algorithm.d
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import std.stdio, std.random, std.algorithm, std.range, std.ascii;
|
||||
|
||||
enum target = "METHINKS IT IS LIKE A WEASEL"d;
|
||||
enum C = 100; // Number of children in each generation.
|
||||
enum P = 0.05; // Mutation probability.
|
||||
enum fitness = (dchar[] s) => target.zip(s).count!q{ a[0] != a[1] };
|
||||
dchar rnd() { return (uppercase ~ " ")[uniform(0, $)]; }
|
||||
enum mut = (dchar[] s) => s.map!(a => uniform01 < P ? rnd : a).array;
|
||||
|
||||
void main() {
|
||||
auto parent = generate!rnd.take(target.length).array;
|
||||
for (auto gen = 1; parent != target; gen++) {
|
||||
// parent = parent.repeat(C).map!mut.array.max!fitness;
|
||||
parent = parent.repeat(C).map!mut.array
|
||||
.minPos!((a, b) => a.fitness < b.fitness)[0];
|
||||
writefln("Gen %2d, dist=%2d: %s", gen, parent.fitness, parent);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue