public OptimizationParameterSet GetParameters(object obj) { var parameters = new OptimizationParameterSet(); var properties = obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.SetProperty); foreach (var parameter in properties.SelectMany(property => property.GetCustomAttributes(false).OfType <OptimizationParameterAttribute>().Select(attribute => new OptimizationParameter(property.Name, attribute.LowerBound, attribute.UpperBound, attribute.Step)))) { parameters.Add(parameter); } return(parameters); }
public void SetParameters(object obj, OptimizationParameterSet parameters) { var num = 0; var properties = obj.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.SetProperty); foreach (var property in properties.SelectMany(property => property.GetCustomAttributes(false).OfType <OptimizationParameterAttribute>(), (property, attribute) => property)) { if (property.Name != parameters[num].Name) { throw new Exception("Can not set parameter. Wrong parameter order."); } property.SetValue(obj, parameters[num].Value); num++; } }
public OptimizationResult(OptimizationParameterSet parameterSet, PortfolioStatistics statistics) { OptimizationParameterSet = parameterSet; OptimizationStatistics = new OptimizationStatistics(statistics); }