public void Optimize() { _config = JsonConvert.DeserializeObject <DynastyConfiguration>(_file.File.ReadAllText("dynasty.json")); var segmenter = new DynastySegmenter(_config); var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; for (var i = _config.StartDate; i <= _config.EndDate; i = segmenter.GetNext(i)) { if (_current == null) { _current = JsonConvert.DeserializeObject <OptimizerConfiguration>(_file.File.ReadAllText(_configFilename)); } _current.StartDate = i; var endDate = segmenter.PeekNext(i); _current.EndDate = AdjustEndDate(endDate); string json = JsonConvert.SerializeObject(_current, settings); _file.File.WriteAllText(_configFilename, json); _logWrapper.Result($"For period: {_current.StartDate} {_current.EndDate}"); var initializer = new OptimizerInitializer(_file, _managerFactory.Create()); initializer.Initialize(new[] { _configFilename }); } }
public void MergeInto(OptimizerConfiguration result) { if (EliminateStructCopies.HasValue) { result.EliminateStructCopies = EliminateStructCopies; } if (EliminateTemporaries.HasValue) { result.EliminateTemporaries = EliminateTemporaries; } if (SimplifyLoops.HasValue) { result.SimplifyLoops = SimplifyLoops; } if (SimplifyOperators.HasValue) { result.SimplifyOperators = SimplifyOperators; } if (EliminateRedundantControlFlow.HasValue) { result.EliminateRedundantControlFlow = EliminateRedundantControlFlow; } if (CacheMethodSignatures.HasValue) { result.CacheMethodSignatures = CacheMethodSignatures; } }
public RouteStopService(IDistanceService distanceService, OptimizerConfiguration configuration, IRouteStopDelayService routeStopDelayService, IJobNodeService jobNodeService) { _distanceService = distanceService; _configuration = configuration; _routeStopDelayService = routeStopDelayService; _jobNodeService = jobNodeService; }
/// <summary> /// Initializes a new instance of the <see cref="NodeService"/> class. /// </summary> /// <param name="nodeConnectionFactory"> /// The node connection factory. /// </param> /// <param name="configuration"> /// The configuration. /// </param> public NodeService(INodeConnectionFactory nodeConnectionFactory, OptimizerConfiguration configuration) { _configuration = configuration; _nodeConnectionFactory = nodeConnectionFactory; _nodeConnectionCache = new Dictionary <Tuple <INode, INode>, NodeConnection>(); _rwLock = new ReaderWriterLockSlim(); }
public Dynasty(IFileSystem file, ILogWrapper logWrapper, IGeneManagerFactory managerFactory) { _file = file; _logWrapper = logWrapper; _managerFactory = managerFactory; _queue = new FixedSizeQueue <string>(2); _current = null; _instance = this; }
public void SetUp() { _config = new OptimizerConfiguration { StartDate = new DateTime(2001, 1, 2), EndDate = new DateTime(2001, 1, 3) }; _unit = new Wrapper(_config, Mock.Of <IFitnessFilter>()); }
public void MergeInto(OptimizerConfiguration result) { if (EliminateStructCopies.HasValue) result.EliminateStructCopies = EliminateStructCopies; if (EliminateTemporaries.HasValue) result.EliminateTemporaries = EliminateTemporaries; if (SimplifyLoops.HasValue) result.SimplifyLoops = SimplifyLoops; if (SimplifyOperators.HasValue) result.SimplifyOperators = SimplifyOperators; }
public NodeRouteService(IObjectiveFunction objectiveFunction, IRouteStopService routeStopService, IRouteExitFunction routeExitFunction, ILogger logger, OptimizerConfiguration configuration) { _objectiveFunction = objectiveFunction; _routeStopService = routeStopService; _routeExitFunction = routeExitFunction; _configuration = configuration; _logger = logger; _nodeConnectionCache = new Dictionary <Tuple <INode, INode>, NodeConnection>(); }
public void Initialize(string[] args) { _config = LoadConfig(args); _file.File.Copy(_config.ConfigPath, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.json"), true); string path = _config.AlgorithmLocation; if (!string.IsNullOrEmpty(path) && (path.Contains('\\') || path.Contains('/')) && !path.EndsWith("py")) { _file.File.Copy(path, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, System.IO.Path.GetFileName(path)), true); string pdb = path.Replace(System.IO.Path.GetExtension(path), ".pdb"); //due to locking issues, need to manually clean to update pdb if (!_file.File.Exists(pdb)) { _file.File.Copy(pdb, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, System.IO.Path.GetFileName(pdb)), true); } } var fitnessTypeName = _config.FitnessTypeName.Contains(".") ? _config.FitnessTypeName : "Jtc.Optimization.LeanOptimizer." + _config.FitnessTypeName; OptimizerFitness fitness = (OptimizerFitness)Assembly.GetExecutingAssembly().CreateInstance(fitnessTypeName, false, BindingFlags.Default, null, new object[] { _config, new FitnessFilter() }, null, null); if (_manager == null) { if (new[] { typeof(SharpeMaximizer), typeof(NFoldCrossReturnMaximizer), typeof(NestedCrossSharpeMaximizer), typeof(NFoldCrossSharpeMaximizer), typeof(WalkForwardSharpeMaximizer), typeof(WalkForwardWeightedMetricSharpeMaximizer) }.Contains(fitness.GetType())) { _manager = new MaximizerManager(); if (fitness.GetType() == typeof(OptimizerFitness)) { LogProvider.ErrorLogger.Info("Fitness for shared app domain was switched to the default: SharpeMaximizer."); fitness = new SharpeMaximizer(_config, new FitnessFilter()); } } else { _manager = new GeneManager(); } } //todo: some constraints for running python if (_config.AlgorithmLanguage == "Python") { _config.UseSharedAppDomain = true; _config.MaxThreads = 1; } _manager.Initialize(_config, fitness); _manager.Start(); }
public OptimizerOptions() { NoConditionalRedefinition = true; DeadCodeElimination = true; AssemblyReferences = new List <string> (); _enabled_features = new Dictionary <MonoLinkerFeature, bool> { [MonoLinkerFeature.Unknown] = false, [MonoLinkerFeature.Martin] = false }; OptimizerConfiguration = new OptimizerConfiguration(); OptimizerReport = new OptimizerReport(this); }
public void Setup() { _config = new OptimizerConfiguration { Genes = new[] { new GeneConfiguration { Key = "p1", Min = 1, Max = 2 }, new GeneConfiguration { Key = "p2", Min = 1, Max = 2 } } }; _list = new Dictionary <string, object> { { "p1", 1.0 }, { "p2", 0.1 }, { "Id", "abc123" } }; IFitnessFilter filter = null; _unit = new WalkForwardWeightedMetricSharpeMaximizer(_config, filter); _unit.WalkForwardSharpeMaximizerFactory = new Factory(); }
public async Task Given_function_code_And_configured_to_run_in_ui_thread_When_Minimizing_And_task_is_cancelled_Then_should_throw() { Setup(); var config = new OptimizerConfiguration { Genes = new GeneConfiguration[0], Fitness = new FitnessConfiguration { OptimizerTypeName = Enums.OptimizerTypeOptions.Bayesian.ToString() } }; var source = new CancellationTokenSource(); source.Cancel(); await Assert.ThrowsAsync <TaskCanceledException>(() => _unit.Start(config, source.Token)); }
public void EvaluateTest(DateTime startDate, DateTime endDate, int folds, string[] expectedDates, double[] expectedValues) { var config = new OptimizerConfiguration { StartDate = startDate, EndDate = endDate, FitnessTypeName = "Optimization.OptimizerFitness", EnableFitnessFilter = true, Genes = SetupGenes(), Fitness = new FitnessConfiguration { Folds = folds } }; var unit = new Wrapper(config); GeneFactory.Initialize(config.Genes); var actual = unit.Evaluate(new Chromosome(true, config.Genes)); Assert.AreEqual(1, actual); var actualDates = new List <DateTime>(); var actualValues = new List <double>(); for (int i = 0; i < unit.ActualInSampleConfig.Count(); i++) { actualDates.Add(unit.ActualInSampleConfig[i].StartDate.Value); actualDates.Add(unit.ActualInSampleConfig[i].EndDate.Value); actualDates.Add(unit.ActualOutSampleConfig[i].StartDate.Value); actualDates.Add(unit.ActualOutSampleConfig[i].EndDate.Value); actualValues.Add((double)unit.ActualInSampleChromosome[i].ToDictionary()["Key"]); actualValues.Add((double)unit.ActualInSampleChromosome[i].ToDictionary()["Key2"]); actualValues.Add((double)unit.ActualOutSampleList[i]["Key"]); actualValues.Add((double)unit.ActualOutSampleList[i]["Key2"]); } expectedDates.Select(s => DateTime.Parse(s)).ShouldDeepEqual(actualDates); expectedValues.ShouldDeepEqual(actualValues); }
public void MergeInto(OptimizerConfiguration result) { if (EliminateStructCopies.HasValue) { result.EliminateStructCopies = EliminateStructCopies; } if (EliminateTemporaries.HasValue) { result.EliminateTemporaries = EliminateTemporaries; } if (SimplifyLoops.HasValue) { result.SimplifyLoops = SimplifyLoops; } if (SimplifyOperators.HasValue) { result.SimplifyOperators = SimplifyOperators; } if (EliminateRedundantControlFlow.HasValue) { result.EliminateRedundantControlFlow = EliminateRedundantControlFlow; } if (CacheMethodSignatures.HasValue) { result.CacheMethodSignatures = CacheMethodSignatures; } if (EliminatePointlessFinallyBlocks.HasValue) { result.EliminatePointlessFinallyBlocks = EliminatePointlessFinallyBlocks; } if (CacheTypeExpressions.HasValue) { result.CacheTypeExpressions = CacheTypeExpressions; } if (PreferAccessorMethods.HasValue) { result.PreferAccessorMethods = PreferAccessorMethods; } }
public CompareWithReportStep(OptimizerContext context) : base(context) { Configuration = new OptimizerConfiguration(); context.Options.OptimizerReport.SizeComparision = Result = new SizeComparision(); }
public void MinimizeTest() { var genes = new[] { new GeneConfiguration { Key = "1", Actual = 1.23 }, new GeneConfiguration { Key = "2", Actual = 123, Min = 1, Max = 123 }, new GeneConfiguration { Key = "3", Min = 1, Max = 2 } }; var config = new OptimizerConfiguration { Genes = genes, FitnessTypeName = "Optimization.OptimizerFitness", EnableFitnessFilter = true, }; var unit = new Mock <SharpeMaximizer>(config, new FitnessFilter()) { CallBase = true }; unit.Setup(x => x.RunAlgorithm(It.IsAny <Dictionary <string, object> >(), It.IsAny <IOptimizerConfiguration>())).Returns <Dictionary <string, object>, IOptimizerConfiguration>((l, c) => { return(new Dictionary <string, decimal> { { "SharpeRatio", 1 }, { "CompoundingAnnualReturn", 1 }, { "TotalNumberOfTrades", 1 }, { "LossRate", 0.1m } }); }); GeneFactory.Initialize(config.Genes); RandomizationProvider.Current = new BasicRandomization(); var chromosome = new Chromosome(true, genes, false); var actual = unit.Object.Minimize(new[] { 3.21, 321, 456 }, chromosome); Assert.AreEqual(0.999, actual.Error); Assert.AreEqual(1.23, actual.ParameterSet[0]); Assert.AreEqual(123, actual.ParameterSet[1]); Assert.AreEqual(456, actual.ParameterSet[2]); var nextActual = unit.Object.Minimize(new[] { 3.21, 321, 789 }, chromosome); Assert.AreEqual(0.999, nextActual.Error); Assert.AreEqual(3.21, nextActual.ParameterSet[0]); Assert.AreEqual(321, nextActual.ParameterSet[1]); Assert.AreEqual(789, nextActual.ParameterSet[2]); }
public void MergeInto(OptimizerConfiguration result) { if (EliminateStructCopies.HasValue) result.EliminateStructCopies = EliminateStructCopies; if (EliminateTemporaries.HasValue) result.EliminateTemporaries = EliminateTemporaries; if (SimplifyLoops.HasValue) result.SimplifyLoops = SimplifyLoops; if (SimplifyOperators.HasValue) result.SimplifyOperators = SimplifyOperators; if (EliminateRedundantControlFlow.HasValue) result.EliminateRedundantControlFlow = EliminateRedundantControlFlow; if (CacheMethodSignatures.HasValue) result.CacheMethodSignatures = CacheMethodSignatures; }
public NodeService(IRouteStopService routeStopService, OptimizerConfiguration configuration) { _configuration = configuration; _routeStopService = routeStopService; }
public void Optimize() { var config = JsonConvert.DeserializeObject <DynastyConfiguration>(_file.File.ReadAllText("dynasty.json")); OptimizerConfiguration current = null; var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; for (var i = config.StartDate; i <= config.EndDate; i = i.AddDays(config.DurationDays).AddHours(config.DurationHours)) { if (current == null) { current = JsonConvert.DeserializeObject <OptimizerConfiguration>(_file.File.ReadAllText(_configFilename)); } current.StartDate = i; current.EndDate = i.AddDays(config.DurationDays).AddHours(config.DurationHours); string json = JsonConvert.SerializeObject(current, settings); _file.File.WriteAllText(_configFilename, json); var info = new ProcessStartInfo("Optimization.exe", _configFilename) { RedirectStandardOutput = true, UseShellExecute = false }; _process.Start(info); string output; FixedSizeQueue <string> queue = new FixedSizeQueue <string>(2); while ((output = _process.ReadLine()) != null) { queue.Enqueue(output); //Console.WriteLine(output); if (queue.First() == GeneManager.Termination) { _logWrapper.Info($"For period: {current.StartDate} {current.EndDate}"); _logWrapper.Info(queue.Dequeue()); _logWrapper.Info(queue.Dequeue()); string optimal = queue.Dequeue(); _logWrapper.Info(optimal); if (config.WalkForward) { var split = optimal.Split(','); for (int ii = 0; ii < split.Length; ii++) { string[] pair = split[ii].Split(':'); var gene = current.Genes.SingleOrDefault(g => g.Key == pair[0].Trim()); decimal parsedDecimal; int parsedInt; if (int.TryParse(pair[1].Trim(), out parsedInt)) { gene.ActualInt = parsedInt; } else if (decimal.TryParse(pair[1].Trim(), out parsedDecimal)) { gene.ActualDecimal = parsedDecimal; } else { throw new Exception($"Unable to parse optimal gene from range {current.StartDate} {current.EndDate}"); } } } _process.Kill(); } } } }
public void MergeInto(OptimizerConfiguration result) { if (EliminateStructCopies.HasValue) result.EliminateStructCopies = EliminateStructCopies; if (EliminateTemporaries.HasValue) result.EliminateTemporaries = EliminateTemporaries; if (SimplifyLoops.HasValue) result.SimplifyLoops = SimplifyLoops; if (SimplifyOperators.HasValue) result.SimplifyOperators = SimplifyOperators; if (EliminateRedundantControlFlow.HasValue) result.EliminateRedundantControlFlow = EliminateRedundantControlFlow; if (CacheMethodSignatures.HasValue) result.CacheMethodSignatures = CacheMethodSignatures; if (EliminatePointlessFinallyBlocks.HasValue) result.EliminatePointlessFinallyBlocks = EliminatePointlessFinallyBlocks; if (CacheTypeExpressions.HasValue) result.CacheTypeExpressions = CacheTypeExpressions; if (PreferAccessorMethods.HasValue) result.PreferAccessorMethods = PreferAccessorMethods; }
public RouteStopDelayService(OptimizerConfiguration optimizerConfiguration) { _optimizerConfiguration = optimizerConfiguration; }
public RouteStatisticsService(IRouteStopService routeStopService, INodeService nodeService, OptimizerConfiguration configuration) { _routeStopService = routeStopService; _nodeService = nodeService; _configuration = configuration; }
private double CurrentHours(OptimizerConfiguration config) { return(config.EndDate.Value.AddDays(1).AddTicks(-1).Subtract(config.StartDate.Value).TotalHours); }