Beispiel #1
0
    /// 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;
    }
Beispiel #2
0
    // 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);
    }
Beispiel #3
0
    public ANNHiddenNode InstanciateAsHidden()
    {
        ANNHiddenNode n = ScriptableObject.CreateInstance <ANNHiddenNode>();

        n.Copy(this);
        n.OnEnable();
        this.instances.Add(n);
        n.instanceParent = Parent();
        return(n);
    }
Beispiel #4
0
    /// 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);
    }