public void SetNewNeuralNet(RMP_Net net) { NeuralNet = net; NeuralNet.RemoveAllHiddenNeurons(); foreach (var inputN in NeuralNet.InputNeurons) { inputN.Connections.Clear(); } var neuronList = new List <RMP_Neuron>(); neuronList.AddRange(net.HiddenNeurons); neuronList.AddRange(net.InputNeurons); neuronList.AddRange(net.OutputNeurons); neurons = neuronList.ToArray(); const int inputHiddenMargin = 10; const int hiddenOutputMargin = 30; neuronPositions = new Vector2[neurons.Length]; const int inputNeuronMargin = 2; int inputY = 0; int i; for (i = 0; i < net.HiddenNeurons.Count + net.InputNeurons.Count; i++) { neuronPositions[i].Y = inputY; inputY += inputNeuronMargin + Circle.Height; } const int outputNeuronMargin = 2; int outputY = 0; for (; i < net.HiddenNeurons.Count + net.InputNeurons.Count + net.OutputNeurons.Count; i++) { neuronPositions[i].X = Circle.Width + inputHiddenMargin + Circle.Width + hiddenOutputMargin; neuronPositions[i].Y = outputY; outputY += outputNeuronMargin + Circle.Height;; } for (i = 0; i < neuronPositions.Length; i++) { if (neuronPositions[i].X > graphWidth) { graphWidth = neuronPositions[i].X; } if (neuronPositions[i].Y > graphHeight) { graphHeight = neuronPositions[i].Y; } } }
public void SetNewNeuralNet(RMP_Net net) { NeuralNet = net; var neuronList = new List<RMP_Neuron>(); neuronList.AddRange(net.HiddenNeurons); neuronList.AddRange(net.InputNeurons); neuronList.AddRange(net.OutputNeurons); neurons = neuronList.ToArray(); const int neuronMargin = 15; const int inputHiddenMargin = 10; const int hiddenOutputMargin = 10; double radius = (net.HiddenNeurons.Count * (neuronMargin + Circle.Width) / Math.PI / 2); double rotationStep = Math.PI * 2 / net.HiddenNeurons.Count; double rotation = 0; neuronPositions = new Vector2[neurons.Length]; int i; for (i = 0; i < net.HiddenNeurons.Count; i++) { //Margin between input neurons and hidden neurons. neuronPositions[i].X = (float)(Math.Cos(rotation) * radius) + Circle.Width + inputHiddenMargin + (float)radius; neuronPositions[i].Y = (float)(Math.Sin(rotation) * radius); rotation += rotationStep; } const int inputNeuronMargin = 2; int inputY = 0; for (; i < net.HiddenNeurons.Count + net.InputNeurons.Count; i++) { neuronPositions[i].Y = inputY; inputY += inputNeuronMargin + Circle.Height; } const int outputNeuronMargin = 2; int outputY = 0; for (; i < net.HiddenNeurons.Count + net.InputNeurons.Count + net.OutputNeurons.Count; i++) { neuronPositions[i].X = Circle.Width + inputHiddenMargin + Circle.Width + (float)radius * 2 + hiddenOutputMargin; neuronPositions[i].Y = outputY; outputY += outputNeuronMargin + Circle.Height; ; } for (i = 0; i < neuronPositions.Length; i++) { if (neuronPositions[i].X > graphWidth) graphWidth = neuronPositions[i].X; if (neuronPositions[i].Y > graphHeight) graphHeight = neuronPositions[i].Y; } }