//private string _filePath;


        public ArtificialNeuralNetwork(LayerStructure layerStructure, TrainingParameters trainingParameters,
                                       IDataSet dataSet, IOptimizationStrategy strategy, IInitialRandomDistributionType randomDistribution)
        {
            _layerStructure          = layerStructure;
            _trainingParameters      = trainingParameters;
            DataSet                  = dataSet;
            _strategy                = strategy;
            _strategy.LayerStructure = layerStructure;
            _randomDistribution      = randomDistribution;

            CreateDataSets();

            SetWeights();
            InitPreviousDeltaWeights();

            SetBiases();
            InitPreviousDeltaBiases();


            _strategy.FetchInitialWeightsAndBiases(ref _weights, ref _biases);

            _strategy.FetchPreviousDeltaWeightsAndBiases(ref _previousDeltaWeights, ref _previousDeltaBiases);

            _savePath = Path.GetTempPath();
        }
Пример #2
0
        public void Init()
        {
            _pendingOptimizationResults = new Queue <OptimizationResult>();
            Strategy = CreateStrategy();

            Strategy.NewParameterSet += (s, parameterSet) =>
            {
                _pendingOptimizationResults.Enqueue(new OptimizationResult(_stringify(_profit(parameterSet), _drawdown(parameterSet)), parameterSet, ""));
            };
        }
Пример #3
0
        /// <summary>
        /// Creates a new instance
        /// </summary>
        /// <param name="nodePacket">The optimization node packet to handle</param>
        protected LeanOptimizer(OptimizationNodePacket nodePacket)
        {
            if (nodePacket.OptimizationParameters.IsNullOrEmpty())
            {
                throw new ArgumentException("Cannot start an optimization job with no parameter to optimize");
            }

            if (string.IsNullOrEmpty(nodePacket.Criterion?.Target))
            {
                throw new ArgumentException("Cannot start an optimization job with no target to optimize");
            }

            NodePacket                  = nodePacket;
            OptimizationTarget          = NodePacket.Criterion;
            OptimizationTarget.Reached += (s, e) =>
            {
                // we've reached the optimization target
                TriggerOnEndEvent();
            };

            Strategy = (IOptimizationStrategy)Activator.CreateInstance(Type.GetType(NodePacket.OptimizationStrategy));

            RunningParameterSetForBacktest = new ConcurrentDictionary <string, ParameterSet>();
            PendingParameterSet            = new ConcurrentQueue <ParameterSet>();

            Strategy.Initialize(OptimizationTarget, nodePacket.Constraints, NodePacket.OptimizationParameters, NodePacket.OptimizationStrategySettings);

            Strategy.NewParameterSet += (s, parameterSet) =>
            {
                if (parameterSet == null)
                {
                    // shouldn't happen
                    Log.Error($"Strategy.NewParameterSet({GetLogDetails()}): generated a null {nameof(ParameterSet)} instance");
                    return;
                }
                LaunchLeanForParameterSet(parameterSet);
            };
        }
Пример #4
0
        public INetwork LoadNetwork(string xmlFilePath, IDataSet dataset)
        {
            _xmlDoc = new XmlDocument();

            _filepath = xmlFilePath;

            _xmlDoc.Load(_filepath);


            //Create Training Params---------------------8::::::::::::::>----------------------------------------


            TrainingParameters trainingParams = new TrainingParameters()
            {
                epochs = Convert.ToInt32(GetXmlValue("NeuralNetwork/Settings/TrainingParameters/Epochs")),

                learningRate = Convert.ToDouble(GetXmlValue("NeuralNetwork/Settings/TrainingParameters/LearningRate")),

                momentum = Convert.ToDouble(GetXmlValue("NeuralNetwork/Settings/TrainingParameters/Momentum"))
            };


            //Create LayerStructure---------------------8::::::::::::::>----------------------------------------


            List <int> hiddenLayersList = new List <int>();

            int numberOfHiddenLayers = Convert.ToInt32(GetXmlValue("NeuralNetwork/Settings/LayerStructure/NumberOfHiddenLayers"));

            for (int i = 1; i <= numberOfHiddenLayers; i++)
            {
                int numberOfNeuronsInHiddenLayer = Convert.ToInt32(GetXmlValue("NeuralNetwork/Settings/LayerStructure/NumberOfNeuronsInHiddenLayer" + i.ToString()));

                hiddenLayersList.Add(numberOfNeuronsInHiddenLayer);
            }

            LayerStructure layerStructure = new LayerStructure()
            {
                numberOfInputNodes = Convert.ToInt32(GetXmlValue("NeuralNetwork/Settings/LayerStructure/NumberOfInputNeurons")),

                numberOfOutputNodes = Convert.ToInt32(GetXmlValue("NeuralNetwork/Settings/LayerStructure/NumberOfOutputNeurons")),

                HiddenLayerList = hiddenLayersList
            };


            //Create Distribution Type---------------------8::::::::::::::>----------------------------------------


            string distribution = GetXmlValue("NeuralNetwork/Settings/DistributionType/InitialRandomDistributionType");

            var distributionType = Type.GetType(distribution + ",NeuralNetwork.Core");

            IInitialRandomDistributionType initialDistribution = Activator.CreateInstance(distributionType) as IInitialRandomDistributionType;


            //Create Strategy---------------------8::::::::::::::>----------------------------------------


            string hiddenFunction = GetXmlValue("NeuralNetwork/Settings/Strategy/HiddenLayerActivationFunction");

            string outputFunction = GetXmlValue("NeuralNetwork/Settings/Strategy/OutputLayerActivationFunction");

            string costFunc = GetXmlValue("NeuralNetwork/Settings/Strategy/CostFunction");

            string regularizationEnum = GetXmlValue("NeuralNetwork/Settings/Strategy/RegularizationType");

            string regularizationStrategyFactory = GetXmlValue("NeuralNetwork/Settings/Strategy/RegularizationStrategyFactory");

            var hiddenFunctionType = Type.GetType(hiddenFunction + ",NeuralNetwork.Core");

            var outputFunctionType = Type.GetType(outputFunction + ",NeuralNetwork.Core");

            var costFunctionType = Type.GetType(costFunc + ",NeuralNetwork.Core");

            var regularizationStrategyFactoryType = Type.GetType(regularizationStrategyFactory + ",NeuralNetwork.Core");

            IActivationFunction hiddenActivationFunction = Activator.CreateInstance(hiddenFunctionType) as IActivationFunction;

            IActivationFunction outputActivationFunction = Activator.CreateInstance(outputFunctionType) as IActivationFunction;

            ICostFunction costFunction = Activator.CreateInstance(costFunctionType) as ICostFunction;

            RegularizationType regularizationType = (RegularizationType)Enum.Parse(typeof(RegularizationType), regularizationEnum);

            IRegularizationStrategyFactory regularizationStrategyFact = Activator.CreateInstance(regularizationStrategyFactoryType) as IRegularizationStrategyFactory;

            string optimizationStrategy = GetXmlValue("NeuralNetwork/Settings/Strategy/OptimizationStrategy");

            var optStrategy = Type.GetType(optimizationStrategy + ",NeuralNetwork.Core");

            IOptimizationStrategy strategy = Activator.CreateInstance(optStrategy, hiddenActivationFunction, outputActivationFunction, costFunction, regularizationType, regularizationStrategyFact) as IOptimizationStrategy;


            //Create Network---------------------8::::::::::::::>----------------------------------------


            network = new ArtificialNeuralNetwork(layerStructure, trainingParams, dataset, strategy, initialDistribution);


            //Set Weights---------------------8::::::::::::::>----------------------------------------


            network.Weights.Clear();

            LoadInputWeights();

            LoadHiddenWeights();


            //Set Biases---------------------8::::::::::::::>----------------------------------------


            network.Biases.Clear();

            LoadHiddenBiases();

            LoadOutputBiases();


            //Clear XMLDoc---------------------8::::::::::::::>----------------------------------------


            _xmlDoc = null;

            return(network);
        }