public ReflectedParameter(AccessorMemberInfo key, object obj, string name, double factor) { var r = (ReflectedAccessor)ReflectedItem.NewItem(key.member, obj); Init(r); Factor = factor; Name = name; }
public void Execute( ) { RiverSystemScenario testScenario; RiverSystemProject testProject; TestHelperRiverSystem.getAPreconfiguredTestScenarioWithAWBM(3, out testProject, out testScenario); IObjectiveEvaluator <MetaParameterSet> evaluator = buildNewEvaluator(testScenario); ICandidateFactory <MetaParameterSet> candidateFactory = new LumpedAWBMFactory(testScenario, new BasicRngFactory(123)); int pSetNumber = 5; IObjectiveScores[] scores = new IObjectiveScores[pSetNumber]; ISystemConfiguration[] pSets = new ISystemConfiguration[pSetNumber]; int k = 0; foreach (Catchment c in testScenario.Network.catchmentList) { foreach (StandardFunctionalUnit fu in c.FunctionalUnits) { var list = AccessorMemberInfo.GetFieldsAndPropertiesList(fu.rainfallRunoffModel.GetType(), typeof(double), typeof(ParameterAttribute)); foreach (MemberInfo m in list) { string metaParameterName = "$tag" + k++; UpdateFunctionBuilder.CreateMetaParameter(testScenario, metaParameterName); UpdateFunctionBuilder.CreateUpdateFunctionWithLinkToMetaParameter(testScenario, metaParameterName, m, fu.rainfallRunoffModel); } } } for (int i = 0; i < scores.Length; i++) { pSets[i] = candidateFactory.CreateRandomCandidate(); //Do we need to reset the model states?? scores[i] = evaluator.EvaluateScore((MetaParameterSet)pSets[i]); //print Params after each iteration LumpedAWBMFactory.printPrams(testScenario, pSets[i]); } IObjectiveScores[] paretoScores = ParetoRanking <IObjectiveScores> .GetParetoFront(scores); SourceUtility.PrintObjScores(scores); Console.WriteLine("----------------------------------------"); SourceUtility.PrintObjScores(paretoScores); }
public static List <AccessorMemberInfo> KnownParameters(object obj) { //Type[] types = new Type[3] //{typeof( ParameterAttribute ), //typeof( MaximumAttribute ), //typeof( MinimumAttribute ) //}; var result = new List <AccessorMemberInfo>( ); if (obj != null) { result.AddRange(AccessorMemberInfo.GetFieldsAndProperties(obj.GetType( ), typeof(double), typeof(ParameterAttribute))); } return(result); }
public MetaParameterSet CreateRandomCandidate( ) { MetaParameterSet metaParameterSet = new MetaParameterSet(this.scenario); //RainfallRunoffModel[] instances = findAllAwbmInstances( scenario ); //List<AccessorMemberInfo> accessorInfoList = MetaParameterSet.KnownParameters( instances[0] ); //Dictionary<string, MinMax> bounds = getBounds(accessorInfoList); //foreach( var model in instances ) //{ // var dic = ReflectedParameterFactory.NewItems( accessorInfoList, model ); // foreach (var paramName in dic.Keys) // { // var minMax = bounds[paramName]; // metaParameterSet.AddMappingRelation(paramName, dic[paramName], minMax.Min, minMax.Max); // } //} ////SourceUtility.PrintMetaParameterSet(metaParameterSet); //randomize(metaParameterSet); int i = 0; foreach (Catchment c in scenario.Network.catchmentList) { foreach (StandardFunctionalUnit fu in c.FunctionalUnits) { var list = AccessorMemberInfo.GetFieldsAndPropertiesList(fu.rainfallRunoffModel.GetType(), typeof(double), typeof(ParameterAttribute)); foreach (MemberInfo m in list) { string metaParameterName = "$tag" + i++; MinMax mm = getBounds(m); double equation = getRand(mm.Min, mm.Max); metaParameterSet.MasterKnobs.Add(metaParameterName, equation); } } } return(metaParameterSet); }
public ReflectedParameter(AccessorMemberInfo key, object obj, string name, FunctionalUnit fu) : this(key, obj, name, 1.0, fu) { }
public ReflectedParameter(AccessorMemberInfo key, object obj, string name) : this(key, obj, name, 1.0) { // Nothing }
public static ReflectedParameter NewItem(AccessorMemberInfo member, object obj, string name, FunctionalUnit fu) { return(new ReflectedParameter(member, obj, name, fu)); }
public static ReflectedParameter NewItem(AccessorMemberInfo member, object obj, string name) { return(new ReflectedParameter(member, obj, name)); }
public static ReflectedParameter NewItem(AccessorMemberInfo member, object obj) { return(new ReflectedParameter(member, obj, member.displayName)); }