コード例 #1
0
 public ArrayChromosome(ArrayChromosome source) : base(source.Population)
 {
     this.randomGenerators  = source.randomGenerators;
     this.MutationBalancer  = source.MutationBalancer;
     this.CrossoverBalancer = source.CrossoverBalancer;
     this.arrayParameter    = (ArrayParameter)source.arrayParameter.Clone();
 }
コード例 #2
0
 public ArrayChromosome(ECPopulation population, ArrayParameter arrayParameter)
     : base(population)
 {
     this.MutationBalancer  = 0.5;
     this.CrossoverBalancer = 0.5;
     this.randomGenerators  = this.CreateRandomGenerators(arrayParameter.Domains);
     this.arrayParameter    = (ArrayParameter)arrayParameter.Clone();
     this.Generate();
 }
コード例 #3
0
 public SocialArrayChromosome(ECPopulation population, uint numAgents, ArrayParameter baseParameters)
     : base(population)
 {
     this.NumAgents    = numAgents;
     this._chromosomes = new ArrayChromosome[this.NumAgents];
     for (var i = 0; i < this.NumAgents; i++)
     {
         this._chromosomes[i] = new ArrayChromosome(population, baseParameters);
     }
 }
コード例 #4
0
        public bool FromValue(string[] value)
        {
            if ((value == null) || (value.Length < this.NumAgents))
            {
                return(false);
            }

            var valueSplit = value.Split(this.NumAgents);

            for (var i = 0; i < this.NumAgents; i++)
            {
                var arrayParameter = new ArrayParameter();
                if (!arrayParameter.FromValue(valueSplit[i]))
                {
                    return(false);
                }
                this._parameters[i] = arrayParameter;
            }
            return(true);
        }
コード例 #5
0
        public override bool FromValue(string[] value)
        {
            if ((value == null) || (value.Length < this.NumAgents))
            {
                return(false);
            }

            var valueSplit = value.Split(this.NumAgents);

            for (var i = 0; i < this.NumAgents; i++)
            {
                var arrayParameter = new ArrayParameter();
                if (!arrayParameter.FromValue(valueSplit[i]))
                {
                    return(false);
                }
                this._chromosomes[i] = new ArrayChromosome(this.Population, arrayParameter);
            }
            return(true);
        }
コード例 #6
0
        public override List <ITestParameters> GetOptimizationTestParameters()
        {
            //creates tests for different weight parameters according to TestsConfig
            var testParameters = new List <ITestParameters>();
            var elements       = NumericArrayUtil <double> .NumericArrayFromInterval(this.ParamsStepIntervals);

            var allParamsComb = elements.AllCombinations();

            foreach (var paramsComb in allParamsComb)
            {
                //creates array parameter
                var arrayParameter = new ArrayParameter(paramsComb);

                //only considers combinations with abs sum of 1, eg (-0.1, 0.9), (0.4, 0.6)
                if (this.IsValidParameter(arrayParameter))
                {
                    testParameters.Add(arrayParameter);
                }
            }

            return(testParameters);
        }
コード例 #7
0
        public override List <ITestParameters> GetSpecialTestParameters(IScenario scenario)
        {
            var specialParams = new List <ITestParameters>();

            if (!this.AddSpecialTests)
            {
                return(specialParams);
            }

            //adds random test parameter (eg. (0, 0, 0))
            var randomParam = new ArrayParameter(new double[this.NumParams]);

            specialParams.Add(randomParam);

            //adds fitness only test parameter (eg. (0, 0, 1))
            var fitOnlyParam = new ArrayParameter(new double[this.NumParams]);

            fitOnlyParam[(this.NumParams - 1)] = 1d;
            specialParams.Add(fitOnlyParam);

            return(specialParams);
        }
コード例 #8
0
        public void Should_parse_array_parameter()
        {
            const string Text = "{name:João,age:24},{name:Emilia,age:30},{name:Carolina,age:34}";

            var arrayParameter = new ArrayParameter(Text).Parse();

            arrayParameter.Count.ShouldEqual(3);

            arrayParameter[0].ElementAt(0).Key.ShouldEqual("name");
            arrayParameter[0].ElementAt(1).Key.ShouldEqual("age");
            arrayParameter[1].ElementAt(0).Key.ShouldEqual("name");
            arrayParameter[1].ElementAt(1).Key.ShouldEqual("age");
            arrayParameter[2].ElementAt(0).Key.ShouldEqual("name");
            arrayParameter[2].ElementAt(1).Key.ShouldEqual("age");

            arrayParameter[0].ElementAt(0).Value.ShouldEqual("João");
            arrayParameter[0].ElementAt(1).Value.ShouldEqual("24");
            arrayParameter[1].ElementAt(0).Value.ShouldEqual("Emilia");
            arrayParameter[1].ElementAt(1).Value.ShouldEqual("30");
            arrayParameter[2].ElementAt(0).Value.ShouldEqual("Carolina");
            arrayParameter[2].ElementAt(1).Value.ShouldEqual("34");
        }
コード例 #9
0
 public SocialArrayChromosome(uint numAgents, ArrayParameter baseParameters)
     : this(null, numAgents, baseParameters)
 {
 }
コード例 #10
0
 public StochasticTest(IStochasticScenario scenario, ArrayParameter testParameters)
     : base(scenario, testParameters)
 {
 }
コード例 #11
0
 public SocialCommonArrayChromosome(uint numAgents, ArrayParameter commomTestParameters)
     : base(commomTestParameters)
 {
     this.NumAgents = numAgents;
 }
コード例 #12
0
        List <MaterialAsset> loadMaterials()
        {
            var materials = new List <MaterialAsset>();

            if (!Directory.Exists(metadataPath + "Materials"))
            {
                Directory.CreateDirectory(metadataPath + "Materials");
            }

            foreach (var filename in Directory.EnumerateFiles(metadataPath + "Materials"))
            {
                var metadata = File.ReadAllLines(filename);

                var material = new MaterialAsset();

                material.Name             = System.IO.Path.GetFileNameWithoutExtension(filename);
                material.Description      = metadata[0].Split('=')[1].Trim();
                material.LastUpdated      = parseLastUpdatedDate(metadata[1].Split('=')[1].Trim(), "material", material.Name);
                material.ImportedFilename = metadata[2].Split('=')[1].Trim();
                material.ImporterVersion  = int.Parse(metadata[3].Split('=')[1].Trim());

                var textureLine    = metadata[4].Split('=')[1].Trim();
                var textureConfigs = textureLine.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

                foreach (var config in textureConfigs)
                {
                    var data    = config.Split(',');
                    var texture = new Texture()
                    {
                        Binding  = data[0].Trim(),
                        SourceId = data[1].Trim()
                    };

                    material.Textures.Add(texture);
                }

                for (int i = 5; i < metadata.Length; i++)
                {
                    var parameterGroupLine = metadata[i].Split('=')[1].Trim();
                    var groupConfigs       = parameterGroupLine.Split('#');

                    var parameterGroup = new ParameterGroup()
                    {
                        Name = groupConfigs[0].Trim()
                    };

                    var parameterConfigs = groupConfigs[1].Trim().Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);

                    foreach (var config in parameterConfigs)
                    {
                        var data = config.Split(',');

                        var parameterType = data[1].Trim();

                        if (parameterType == "float")
                        {
                            var parameter = new ScalarParameter <float>()
                            {
                                Name = data[0].Trim(), Value = float.Parse(data[2].Trim())
                            };
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "int")
                        {
                            var parameter = new ScalarParameter <int>()
                            {
                                Name = data[0].Trim(), Value = int.Parse(data[2].Trim())
                            };
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "bool")
                        {
                            var parameter = new ScalarParameter <bool>()
                            {
                                Name = data[0].Trim(), Value = bool.Parse(data[2].Trim())
                            };
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "float2")
                        {
                            var parameter = parseVector2 <float>(data[0].Trim(), data[2]);
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "int2")
                        {
                            var parameter = parseVector2 <int>(data[0].Trim(), data[2]);
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "bool2")
                        {
                            var parameter = parseVector2 <bool>(data[0].Trim(), data[2]);
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "float3")
                        {
                            var parameter = parseVector3 <float>(data[0].Trim(), data[2]);
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "int3")
                        {
                            var parameter = parseVector3 <int>(data[0].Trim(), data[2]);
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "bool3")
                        {
                            var parameter = parseVector3 <bool>(data[0].Trim(), data[2]);
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "float4")
                        {
                            var parameter = parseVector4 <float>(data[0].Trim(), data[2]);
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "int4")
                        {
                            var parameter = parseVector4 <int>(data[0].Trim(), data[2]);
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "bool4")
                        {
                            var parameter = parseVector4 <bool>(data[0].Trim(), data[2]);
                            parameterGroup.Parameters.Add(parameter);
                        }
                        else if (parameterType == "float4 array")
                        {
                            var elements = data[2].Split('$');

                            var array = new ArrayParameter <float>();
                            array.Name = data[0].Trim();

                            foreach (var element in elements)
                            {
                                var elementData = element.Split(',');
                                var parameter   = parseVector4 <float>(elementData[0].Trim(), elementData[2]);
                                array.Elements.Add(parameter);
                            }

                            parameterGroup.Parameters.Add(array);
                        }
                        else if (parameterType == "int4 array")
                        {
                            var elements = data[2].Split('$');

                            var array = new ArrayParameter <int>();
                            array.Name = data[0].Trim();

                            foreach (var element in elements)
                            {
                                var elementData = element.Split(',');
                                var parameter   = parseVector4 <int>(elementData[0].Trim(), elementData[2]);
                                array.Elements.Add(parameter);
                            }

                            parameterGroup.Parameters.Add(array);
                        }
                        else if (parameterType == "bool4 array")
                        {
                            var elements = data[2].Split('$');

                            var array = new ArrayParameter <bool>();
                            array.Name = data[0].Trim();

                            foreach (var element in elements)
                            {
                                var elementData = element.Split(',');
                                var parameter   = parseVector4 <bool>(elementData[0].Trim(), elementData[2]);
                                array.Elements.Add(parameter);
                            }

                            parameterGroup.Parameters.Add(array);
                        }
                    }

                    material.ParameterGroups.Add(parameterGroup);
                }

                materials.Add(material);
            }

            return(materials);
        }
コード例 #13
0
 public ArrayChromosome(ArrayParameter arrayParameter)
     : this(null, arrayParameter)
 {
 }