protected void StartFromScratch() { // Add basic genome input and output into alive genomes; Genometype.NodeGenes[] nodes = new Genometype.NodeGenes[] { new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 0), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 1), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 2), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 3), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 4), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 5), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 6), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 7), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Output, _IOIndex: 0), }; Genometype genome = new Genometype(nodes); GenomeMutationController mutationController = new GenomeMutationController(genome); mutationController.MutateByAddingConnection(); m_aliveGenomes.AddRange(mutationController.mutations); for (int i = 0; i < m_aliveGenomes.Count; i++) { m_weightOptimizers.Add(new WeightOptimize(this, genomeBirdCount, genomeBirdSurviveCount)); m_weightOptimizers[i].InsertGenome(m_aliveGenomes[i]); } }
private void StartFromScratch() { Genometype.NodeGenes[] nodes = new Genometype.NodeGenes[] { new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 0), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 1), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Output, _IOIndex: 0), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Output, _IOIndex: 1), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Output, _IOIndex: 2), }; Genometype.ConnectionGenens[] connections = new Genometype.ConnectionGenens[] { new Genometype.ConnectionGenens(0, 2, Random.Range(-10f, 10f), _operatorType: Genometype.ConnectionGenens.OperatorType.Multiply), new Genometype.ConnectionGenens(0, 3, Random.Range(-10f, 10f), _operatorType: Genometype.ConnectionGenens.OperatorType.Multiply), new Genometype.ConnectionGenens(1, 4, Random.Range(-10f, 10f), _operatorType: Genometype.ConnectionGenens.OperatorType.Plus), }; m_weightOptimizer.InsertGenome(new Genometype(nodes, connections)); }
public void GenomeConnectionMutation() { Genometype.NodeGenes[] nodes = new Genometype.NodeGenes[] { new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 0), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 0), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Hidden), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Output), }; GenomeMutationController controller = new GenomeMutationController(new Genometype(nodes, new Genometype.ConnectionGenens[0] { })); controller.MutateByAddingConnection(); for (int i = 0; i < controller.mutations.Count; i++) { Debug.Log(controller.mutations[i]); } }
protected void StartFromScratch() { Genometype.NodeGenes[] nodes = new Genometype.NodeGenes[] { new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 1), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 5), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 7), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Hidden), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Output), }; Genometype.ConnectionGenens[] connections = new Genometype.ConnectionGenens[] { new Genometype.ConnectionGenens(0, 3, Random.Range(-10f, 10f)), new Genometype.ConnectionGenens(1, 3, Random.Range(-10f, 10f)), new Genometype.ConnectionGenens(2, 3, Random.Range(-10f, 10f)), new Genometype.ConnectionGenens(3, 4, Random.Range(-10f, 10f), Genometype.ConnectionGenens.OperatorType.Plus), }; m_weightOptimizer.InsertGenome(new Genometype(nodes, connections)); }
public void NodeGenes() { // Test multiply node Genometype.NodeGenes node = new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input); node.value = 1; Assert.AreEqual(node.Value, 1); // Test reverse output node Genometype.NodeGenes reverseNode = new Genometype.NodeGenes( Genometype.NodeGenes.Types.Input, _outputMode: Genometype.NodeGenes.OutputMode.Reverse); reverseNode.value = -1; Assert.AreEqual(reverseNode.Value, 1); // Test node cloning Genometype.NodeGenes cloneNode = node; cloneNode.value = 2; Assert.AreEqual(node.Value, 1); Assert.AreEqual(cloneNode.Value, 2); }
public void GenomeNodeMutation() { Genometype.NodeGenes[] nodes = new Genometype.NodeGenes[] { new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 0), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 0), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Output), }; Genometype.ConnectionGenens[] connections = new Genometype.ConnectionGenens[] { new Genometype.ConnectionGenens(0, 2, 0.123f), new Genometype.ConnectionGenens(1, 2, 3f), }; GenomeMutationController controller = new GenomeMutationController(new Genometype(nodes, connections)); controller.MutateByInsertNodeBetweenConnection(); for (int i = 0; i < controller.mutations.Count; i++) { Debug.Log(controller.mutations[i]); } }
public void DataProcess() { Genometype.NodeGenes[] nodes = new Genometype.NodeGenes[] { new Genometype.NodeGenes(Genometype.NodeGenes.Types.Input, _IOIndex: 0), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Hidden), new Genometype.NodeGenes(Genometype.NodeGenes.Types.Output), }; Genometype.ConnectionGenens[] connections = new Genometype.ConnectionGenens[] { new Genometype.ConnectionGenens(0, 1, 0.1f), new Genometype.ConnectionGenens(1, 2, 1f, Genometype.ConnectionGenens.OperatorType.Plus), }; GenomeController controller = new GenomeController(new Genometype(nodes, connections)); // Test get output controller.Reset(); Assert.AreEqual(controller.GetOutput(0), 0); // Test insert input and process data controller.Input(new float[] { 0.9f }); controller.StartProcess(); Assert.AreEqual(controller.GetOutput(0), 1.09f); }