xxxxxxxxxx
const numCircles = 10;
const circleRadius = 20;
const circleMaxSpeed = 5;
const numSquares = 5;
const squareSize = 30;
const numHiddenNodes = 10;
const learningRate = 0.1;
let circles = [];
let squares = [];
function setup() {
createCanvas(800, 800);
// Initialize circles
for (let i = 0; i < numCircles; i++) {
circles.push(new Circle());
}
// Initialize squares
for (let i = 0; i < numSquares; i++) {
let neuralNetwork = new NeuralNetwork(numCircles * 2, numHiddenNodes, 4);
squares.push(new Square(neuralNetwork));
}
}
function draw() {
background(220);
// Move circles
for (let i = 0; i < numCircles; i++) {
circles[i].move();
circles[i].display();
}
// Update squares
for (let i = 0; i < squares.length; i++) {
squares[i].update();
squares[i].display();
}
life();
}
function life() {
// Train neural network on key press
let newSquares = [];
let indexRemoval = [];
for (let i = 0; i < numSquares; i++) {
//print(squares[i]);
if(squares[i].energy < 1){
if(squares[i].score >= 1){
let neurn = squares[i].neuralNetwork;
neurn.mutateNodes();
newSquares.push(new Square(neurn));
newSquares.push(new Square(neurn));
indexRemoval.push(i);
}
else{
let neuralNetwork = new NeuralNetwork(numCircles * 2, numHiddenNodes, 4);
squares.splice(i,1,new Square(neuralNetwork));
}
}
}
for (let i = 0; i < indexRemoval.length; i++) {
squares.splice(indexRemoval[i],1);
}
for (let i = 0; i < newSquares.length; i++) {
squares.push(newSquares[i]);
}
}