Example #1
0
        //transponiranje matrice
        public Matrica Transpose()
        {
            Matrica ret = new Matrica(Columns, Rows);

            for (int i = 0; i < Rows; ++i)
            {
                for (int j = 0; j < Columns; ++j)
                {
                    ret [j, i] = this [i, j];
                }
            }
            return(ret);
        }
Example #2
0
        //konstruktor
        public ANN(int br_in, int br_hid, int br_hid2, int br_out)
        {
            brInput = br_in; brHidden = br_hid; brOutput = br_out; brHidden2 = br_hid2;

            //+1 za bias
            whi = new Matrica(brHidden, brInput + 1);   //sa desna mnozi input da dobijemo hidden
            whh = new Matrica(brHidden2, brHidden + 1); //sa desna mnozi prvi hidden layer da dobijemo drugi hidden
            who = new Matrica(brOutput, brHidden2 + 1);

            //postavi tezine na random
            whi.Randomize();
            whh.Randomize();
            who.Randomize();
        }
Example #3
0
        //crossover izmedu dvije matrice. nasumicno odaberi mjesto prije kojega idu elementi prve matrice
        //a poslije kojega idu elementi drgue
        public Matrica Crossover(Matrica partner)
        {
            Matrica child = new Matrica(Rows, Columns);
            int     randR = Randoms.Next(Rows);    //random redak
            int     randC = Randoms.Next(Columns); //random stupac

            for (int i = 0; i < Rows; ++i)
            {
                for (int j = 0; j < Columns; ++j)
                {
                    //pozicije prije (randR, randC) su this, poslije su partner
                    child [i, j] = (i < randR || (i == randR && j < randC) ? this [i, j] : partner [i, j]);
                }
            }
            return(child);
        }
Example #4
0
        //dodaj bias na vektor stupac
        public Matrica AddBias()
        {
            Matrica ret = new Matrica(Rows + 1, 1);

            if (Columns == 1)
            {
                for (int i = 0; i < Rows; ++i)
                {
                    ret [i, 0] = this [i, 0];
                }
                ret [Rows, 0] = 1;
            }
            else
            {
                throw new Exception("AddBias: Matrica nema samo jedan stupac");
            }
            return(ret);
        }
Example #5
0
        //oduzimanje matrica kroz operator
        public static Matrica operator -(Matrica A, Matrica B)
        {
            Matrica ret = new Matrica(A.Rows, A.Columns);

            if (A.Columns == B.Columns && A.Rows == B.Rows)
            {
                for (int i = 0; i < A.Rows; ++i)
                {
                    for (int j = 0; j < A.Columns; ++j)
                    {
                        ret [i, j] = A [i, j] - B [i, j];
                    }
                }
            }
            else
            {
                throw new Exception("matrice nisu dobrih dimenzija");
            }

            return(ret);
        }