Пример #1
0
        public void Show(Optimiser optimiser)
        {
            optimiser.IterationComplete += HandleIterationComplete;
            optimiser.Complete += HandleComplete;

            _optimiser = optimiser;

            Show();

            _startTime = DateTime.Now;
        }
Пример #2
0
        /// <summary>
        /// Runs the optimiser
        /// </summary>
        public override void Optimize()
        {
            var chromosomeTypes = new StrategyChromosomeTypeFactory(Strategy).GetChromosomeTypes();

            var optimiserParameters = GetParameters(chromosomeTypes);

            _startDateTime = DateTime.Now;
            _iterationNumber = 0;

            try
            {
                using (
                    _parameterWriter =
                    new ParameterWriter(Strategy.Instrument.FullName, optimiserParameters.ExportGenes))
                {
                    Strategy.Print(
                        string.Format(
                            "{0}:  Start time: {1}  Parameters: {2}  Population {3}  MaximumGenerations: {4}  Log results: {5}  Screen threshold: {6}",
                            Strategy.Instrument.FullName, _startDateTime, Strategy.Parameters.Count,
                            optimiserParameters.PopulationSize, optimiserParameters.MaximumGenerations,
                            optimiserParameters.ExportGenes, optimiserParameters.ScreeningThreshold));

                    _parameterWriter.WriteParameterNames(chromosomeTypes);

                    var optimiser = new Optimiser(new FitnessEvaluator(Strategy, chromosomeTypes));
                    optimiser.IterationComplete += HandleIterationComplete;
                    optimiser.GenerationComplete += HandleGenerationComplete;
                    optimiser.ReportNoProgress += HandleNoProgress;

                    var progressForm = new ProgressForm();
                    progressForm.Show(optimiser);

                    optimiser.Run(chromosomeTypes, optimiserParameters);

                    var endDateTime = DateTime.Now;

                    Strategy.Print(Strategy.Instrument.FullName + ": completed: " + endDateTime + ", total iterations: " +
                                   (_iterationNumber + 1) + ", total time (minutes): " +
                                   (endDateTime - _startDateTime).TotalMinutes.ToString("N1") + ", best result:");

                    if (_bestResult != null)
                    {
                        Strategy.Print(_bestResult.Gene.ToString(chromosomeTypes));
                    }
                }
            }
            finally
            {
                _parametersForm.Close();
            }
        }