Esempio n. 1
0
        public double Evaluate(PlacementPackage placement)
        {
            placement.Normalize();
            double[] intermediateScores = new double[Hidden + 1];
            //for (int iIntermediateScore = 0; iIntermediateScore < intermediateScores.Length - 1; iIntermediateScore++) {
            //	intermediateScores[iIntermediateScore] = 0;
            //}
            intermediateScores[intermediateScores.Length - 1] = 1;
            for (int iInput = 0; iInput <= Input; iInput++)                // the last gotten feature is the input bias
            {
                double feature = placement.GetFeature(iInput);
                int    index   = iInput * Hidden;
                for (int iHidden = 0; iHidden < Hidden; iHidden++)
                {
                    intermediateScores[iHidden] += feature * Weights[index + iHidden];
                }
            }
            for (int inter = 0; inter < intermediateScores.Length - 1; inter++)
            {
                if (intermediateScores[inter] < 0)
                {
                    intermediateScores[inter] = 0;
                }
            }
            double result      = 0;
            int    outputIndex = (this.Input + 1) * this.Hidden;

            for (int inter = 0; inter < intermediateScores.Length; inter++)
            {
                double temp = intermediateScores[inter] * Weights[outputIndex + inter];
                result += temp;
            }
            result = 1 / (1 + Math.Pow(Math.E, -result));
            return(result);

            //double result = 0;
            //for (int i = 0; i < ANNSettings.Input; i++) {
            //	result += placement.GetFeature(i) * Weights[i];
            //}
            //return result;
        }