示例#1
0
    void Update()
    {
        if (regenereaza)
        {
            n = new neuralnet();
            n.genereaza(4, 5, 20, 10, 100);
            regenereaza = false;
        }

        if (mutate)
        {
            n.mutatie(1);
            mutate = false;
        }
        if (start)
        {
            l = new List <float>();
            l.Add(s.fdreapta);
            l.Add(s.fstanga);
            l.Add(s.fspate);
            l.Add(s.ffata);
            List <float> aux = n.proceseaza(l);
            m.rl = aux[0];
            m.rr = aux[1];
            m.mb = aux[2];
            m.mf = aux[3];
            m.ok = aux[4];
        }
    }
示例#2
0
文件: MainB.cs 项目: joha3332/PPNM
    static Func <double, double> g = (x) => Sin(x); //Function to fit

    static void Main()
    {
        int n  = 15; //hidden nodes
        var nn = new neuralnet(n);

        double x_start = 0;
        double x_end   = 2 * PI;
        int    nx      = 25;
        var    xs      = new double[nx];
        var    ys      = new double[nx];

        WriteLine("Sampled points of test function:");
        for (int i = 0; i < nx; i++)
        {
            xs[i] = (x_end - x_start) / (nx - 1) * i + x_start;
            ys[i] = g(xs[i]);

            WriteLine($"{xs[i]} \t {ys[i]}");
        }
        Write("\n\n");

        //initial parameters
        for (int i = 0; i < n; i++)
        {
            nn.parameters[3 * i]     = (x_end - x_start) / n * i + x_start;
            nn.parameters[3 * i + 1] = 1;
            nn.parameters[3 * i + 2] = 1;
        }
        nn.parameters.print("Initial parameters=");

        nn.train(xs, ys);
        nn.parameters.print("Post training parameters =");
        Write("\n\n");


        int    n_interpol = 100; //number of interpolated points
        double x, y, y_der, y_int;

        WriteLine("Interpolated points of test function:");
        for (int i = 0; i <= n_interpol; i++)
        {
            x     = (x_end - x_start) / n_interpol * i + x_start;
            y     = nn.feed(x);
            y_der = nn.feed_der(x);
            y_int = nn.feed_int(x, 0);
            WriteLine($"{x} \t {y} \t {y_der} \t {y_int}");
        }
    }
    void newgen()
    {
        nr++;
        for (int k = 0; k < size; k++)
        {
            for (int l = 0; l < size; l++)
            {
                if (nval[k] < nval[l])
                {
                    float aux = nval[k];
                    nval[k] = nval[l];
                    nval[l] = aux;
                    neuralnet a = new neuralnet(n[k]);
                    n[k] = new neuralnet(n[l]);
                    n[l] = new neuralnet(n[k]);
                }
            }
        }



        for (int k = 4; k < size - 2; k++)
        {
            if (k % 2 == 0)
            {
                n[k] = new neuralnet(neuralnet.cross(n[parent1], n[parent2], 2));
            }
            else
            {
                n[k] = new neuralnet(neuralnet.cross(n[parent2], n[parent1], 2));
            }
        }

        for (int k = size - 2; k < size; i++)
        {
            n[k].genereaza(4, 5, nsize, npl, w);
        }

        for (int k = 0; k < size; k++)
        {
            nval[k] = 0;
        }
        gen++;
    }
示例#4
0
 public void reset(neuralnet net)
 {
     start = true;
     n     = new neuralnet(net);
     g.GetComponent <mv>().reset();
 }
示例#5
0
 void Start()
 {
     n = new neuralnet();
     s = g.GetComponent <snezor>();
     m = g.GetComponent <mv>();
 }