public ReflectedParameter(AccessorMemberInfo key, object obj, string name, double factor)
        {
            var r = (ReflectedAccessor)ReflectedItem.NewItem(key.member, obj);

            Init(r);
            Factor = factor;
            Name   = name;
        }
Example #2
0
        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);
        }
Example #4
0
        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));
 }