Skip to content

Commit 4cb84f3

Browse files
authored
Add files via upload
1 parent 530a3e7 commit 4cb84f3

30 files changed

Lines changed: 628 additions & 0 deletions

GeneticAlgorithm/Brain.cpp

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include "Brain.h"
2+
#include <algorithm>
3+
4+
void Brain::randomize()
5+
{
6+
std::random_device rd;
7+
std::default_random_engine generator(rd()); // rd() provides a random seed
8+
std::uniform_real_distribution<float> distribution(0.0, 360.0f);
9+
10+
for (std::size_t i = 0; i < _directions.size(); ++i) {
11+
float randomAngle = distribution(generator);
12+
_directions[i].x = 2.5f * std::cos(randomAngle * (3.14159f / 180.0f));
13+
_directions[i].y = 2.5f * std::sin(randomAngle * (3.14159f / 180.0f));
14+
}
15+
}
16+
17+
18+
void Brain::mutate()
19+
{
20+
21+
//--------------------
22+
std::random_device rd;
23+
std::default_random_engine generator(rd()); // rd() provides a random seed
24+
std::uniform_real_distribution<float> angle(0.0, 360.0f);
25+
std::uniform_real_distribution<float> dist(0.0, 1.0f);
26+
27+
float mutationRate = 0.01f;//chance that any vector in directions gets changed
28+
for (std::size_t i = 0; i < _directions.size(); ++i) {
29+
float rand = dist(generator);
30+
if (rand < mutationRate) {
31+
//set this direction as a random direction
32+
float randomAngle = angle(generator);
33+
_directions[i].x = 2.5f * std::cos(randomAngle * (3.14159f / 180.0f));
34+
_directions[i].y = 2.5f * std::sin(randomAngle * (3.14159f / 180.0f));
35+
}
36+
}
37+
}
38+
39+
40+
Brain Brain::clone()
41+
{
42+
std::size_t size = _directions.size();
43+
Brain clone{ (int)size };
44+
for (std::size_t i = 0; i < _directions.size(); ++i) {
45+
clone._directions[i] = _directions[i];
46+
}
47+
return clone;
48+
}

GeneticAlgorithm/Brain.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#pragma once
2+
#include <SFML/Graphics.hpp>
3+
#include <vector>
4+
#include <cmath>
5+
#include <cstdlib>
6+
#include <random>
7+
8+
using namespace sf;
9+
class Brain {
10+
public:
11+
std::size_t step = 0;
12+
Brain(int size) : _directions{ size }
13+
{
14+
//-------------------------
15+
randomize();
16+
}
17+
std::vector<Vector2f> _directions;
18+
void randomize();
19+
void mutate();
20+
Brain clone();
21+
22+
};

GeneticAlgorithm/Debug/Brain.obj

178 KB
Binary file not shown.

GeneticAlgorithm/Debug/Dot.obj

170 KB
Binary file not shown.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\vc141.pdb
2+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\vc141.idb
3+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\source.obj
4+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\population.obj
5+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\dot.obj
6+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\brain.obj
7+
c:\users\dušan\source\repos\geneticalgorithm\debug\geneticalgorithm.exe
8+
c:\users\dušan\source\repos\geneticalgorithm\debug\geneticalgorithm.ilk
9+
c:\users\dušan\source\repos\geneticalgorithm\debug\geneticalgorithm.pdb
10+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\geneticalgorithm.tlog\cl.command.1.tlog
11+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\geneticalgorithm.tlog\cl.read.1.tlog
12+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\geneticalgorithm.tlog\cl.write.1.tlog
13+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\geneticalgorithm.tlog\link.command.1.tlog
14+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\geneticalgorithm.tlog\link.read.1.tlog
15+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\debug\geneticalgorithm.tlog\link.write.1.tlog
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
 Dot.cpp
2+
Population.cpp
3+
c:\users\dušan\source\repos\geneticalgorithm\geneticalgorithm\population.cpp(18): warning C4018: '>': signed/unsigned mismatch
4+
Generating Code...
5+
GeneticAlgorithm.vcxproj -> c:\Users\Dušan\source\repos\GeneticAlgorithm\Debug\GeneticAlgorithm.exe
3.3 KB
Binary file not shown.
134 KB
Binary file not shown.
3.63 KB
Binary file not shown.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.17134.0
2+
Debug|Win32|c:\Users\Dušan\source\repos\GeneticAlgorithm\|

0 commit comments

Comments
 (0)