/// Setup /// public void ResetNet() { //Generation = 0; mutationRate = initMutationRate; int nHdn = this.ManualNHiddenNodes == true ? this.NHiddenNodesPerLayer : (int)Mathf.Pow(inputNodes.Count + outputNodes.Count, 0.5f) + 1; hiddenNodes.Clear(); for (int li = 0; li < NHiddenLayers; ++li) { for (int ni = 0; ni < nHdn; ++ni) { ANNHiddenNode hdn = ScriptableObject.CreateInstance <ANNHiddenNode>(); hdn.name = "H-" + li + ":" + ni; hdn.network = this; hdn.Bias = Random.Range(ANNProperties.BiasRandomRange.x, ANNProperties.BiasRandomRange.y); hdn.layer = li; this.hiddenNodes.Add(hdn); } } for (int i = 0; i < outputNodes.Count; ++i) { outputNodes[i].Bias = Random.Range(ANNProperties.BiasRandomRange.x, ANNProperties.BiasRandomRange.y); } SetupConnections(); //if (outputNodes.Count > 0) // Debug.Log(this.GetInstanceID() + " ==> BIAS ==> " + outputNodes[0].Bias + " in POSTCONNECTIONS"); ANNNetworkTab.networkChanged = true; }
// Hidden private ANNHiddenNode AddHiddenNode(ANNHiddenNode n, bool instanciate = true, bool reset = true) { ANNHiddenNode auxN = n.InstanciateAsHidden(); auxN.network = this; this.hiddenNodes.Add(auxN); SetupConnections(ANNProperties.SetupWithRandomWeights); return(auxN); }
public ANNHiddenNode InstanciateAsHidden() { ANNHiddenNode n = ScriptableObject.CreateInstance <ANNHiddenNode>(); n.Copy(this); n.OnEnable(); this.instances.Add(n); n.instanceParent = Parent(); return(n); }
/// ADD NODES /// // Create --- public ANNNode CreateNode(ANNNode.Type type, string name, bool savenet = true) { string path = ANNSerialization.GLOBALS.NETS.Path + "/" + Parent().name; switch (type) { case ANNNode.Type.Input: { ANNInputNode node = ScriptableObject.CreateInstance <ANNInputNode>(); node.name = name; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } AssetDatabase.CreateAsset(node, "Assets/ANNProject/Serialization/Networks/" + Parent().name + "/" + name + ".asset"); AssetDatabase.SaveAssets(); AddNode(node, savenet, true, true, true); return(node); } case ANNNode.Type.Hidden: { ANNHiddenNode node = ScriptableObject.CreateInstance <ANNHiddenNode>(); node.name = name; AssetDatabase.CreateAsset(node, "Assets/ANNProject/Serialization/Networks/" + Parent().name + "/" + name + ".asset"); AddNode(node, savenet, true, true, true); return(node); } case ANNNode.Type.Output: { ANNOutputNode node = ScriptableObject.CreateInstance <ANNOutputNode>(); node.name = name; AssetDatabase.CreateAsset(node, "Assets/ANNProject/Serialization/Networks/" + Parent().name + "/" + name + ".asset"); AddNode(node, savenet, true, true, true); return(node); } } Debug.LogWarning(this.name + " -> Error Creating Node - Type: '" + type + "' Name: '" + name + "'."); return(null); }