Exemplo n.º 1
0
 public ANNParameters()
 {
     //
     m_LearningAlgo           = LearningAlgoritm.BP;
     m_PSOParameters          = new PSOParameters();
     m_IsClasificationProblem = false;
     m_Momentum             = 0.4;
     m_inputNormalization   = NormalizationType.MinMax;
     m_outputNormalization  = NormalizationType.MinMax;
     m_ActFunction          = new Sigmoid(1.0);
     m_ActFuncParam1        = 1.0;
     m_LearningRate         = 0.1;
     m_NumHiddenLayers      = 1;
     m_NeuronsInHiddenLayer = 50;
 }
Exemplo n.º 2
0
        /// <summary>
        /// Before we start solver prepare all neccessery information
        /// </summary>
        /// <param name="termSet"></param>
        /// <param name="funSet"></param>
        /// <param name="annParams"></param>
        public override void PrepareAlgorithm(Experiment expData, ANNParameters annParams = null)
        {
            if (annParams == null || expData == null)
            {
                throw new Exception("Argument value cannot be null");
            }


            //reset iteration and network
            if (m_Network == null)
            {
                m_IterationCounter = 0;


                //depending on the type of the colum create adequate neural network
                var colType = expData.GetOutputColumnType();

                if (colType == ColumnDataType.Binary)//Binary Clasification
                {
                    m_Network = new BCNeuralNetwork(annParams, expData.GetColumnInputCount_FromNormalizedValue(), expData.GetColumnOutputCount_FromNormalizedValue());
                }
                else//multiclass classification
                {
                    m_Network = new MCNeuralNetwork(annParams, expData.GetColumnInputCount_FromNormalizedValue(), expData.GetColumnOutputCount_FromNormalizedValue());
                }

                m_Network.InitializeNetwork();
            }

            //
            m_Experiment = expData;

            PSOParameters swarm = null;

            if (m_Parameters != null)
            {
                swarm = m_Parameters.m_PSOParameters;
            }
            else
            {
                m_psoAlgorithm = null;
                swarm          = annParams.m_PSOParameters;
            }


            //
            m_Parameters = annParams;
            m_Parameters.m_PSOParameters = swarm;

            m_expRowCount      = m_Experiment.GetRowCount();
            IsAlgorthmPrepared = true;
            StopIteration      = false;

            float newfitness = 0;

            if (m_psoAlgorithm == null)
            {
                //initilaize swarm
                m_Parameters.m_PSOParameters.m_Dimension = m_Network.GetWeightsAndBiasCout();
                m_psoAlgorithm = new ParticleSwarm(m_Parameters.m_PSOParameters, CrossEntropy);
                //init
                newfitness = m_psoAlgorithm.InitSwarm();
            }
            // else
            newfitness = m_psoAlgorithm.RunSwarm();


            var model = CalculateModel(false);

            //Send report for iteration
            var rp = new ProgressIndicatorEventArgs()
            {
                ReportType       = ProgramState.Started,
                LearningError    = newfitness,
                CurrentIteration = 0,
                LearnOutput      = model,
            };

            ReportProgress(rp);
        }