Ejemplo n.º 1
0
        /// <summary>
        ///   Runs the optimization routine for the set number of iterations.
        /// </summary>
        public void Run()
        {
            CostFunction.Initialize();

            for (var x = 0; x < Properties.MaxIterations; x++)
            {
                if (OpimizationMethod.Update(Properties))
                {
                    Step();
                }
                else
                {
                    break;
                }
            }

            Completed = true;
        }
Ejemplo n.º 2
0
        /// <summary>
        ///   Performs a single step of the optimization routine.
        /// </summary>
        public void Step()
        {
            Properties.Iteration += 1;

            var lastCost = Properties.Cost;

            Properties.Cost = OpimizationMethod.UpdateCost(CostFunction, Properties);
            Properties.CostHistory.Add(Properties.Cost);

            Properties.Gradient = OpimizationMethod.UpdateGradient(CostFunction, Properties);
            Properties.GradientHistory.Add(Properties.Gradient);

            Properties.Theta = OpimizationMethod.UpdateTheta(Properties);

            if (Properties.Iteration > 1 && Properties.Cost < lastCost)
            {
                Properties.BestTheta = Properties.Theta;
            }
            else
            {
                Properties.BestTheta = Properties.Theta;
            }
        }