Beispiel #1
0
        protected override double GetFitnessByDistance(Chromosome chromosome)
        {
            var x = (int)chromosome.DecodedSubValues[0];
            var y = (int)chromosome.DecodedSubValues[1];

            var conditions = new List <ConditionInfo>
            {
                new ConditionInfo {
                    A = x, B = 80, Oper = ">="
                },
                new ConditionInfo {
                    A = y, B = 50, Oper = "<"
                }
            };

            return(CaculationHelper.CaculateTotalDistanceFitness(conditions));
        }
 public void CaculatePathMatchFitnessTest()
 {
     Assert.AreEqual(CaculationHelper.CaculatePathMatchFitness("abcdj", "abhj"), 2);
     Assert.AreEqual(CaculationHelper.CaculatePathMatchFitness("abhj", "abhj"), 4);
     Assert.AreEqual(CaculationHelper.CaculatePathMatchFitness("abcegj", "abhj"), 2);
 }
        protected override double GetFitnessByDistance(Chromosome chromosome)
        {
            var x          = (int)chromosome.DecodedSubValues[0];
            var y          = (int)chromosome.DecodedSubValues[1];
            var z          = (int)chromosome.DecodedSubValues[2];
            var conditions = new List <ConditionInfo>
            {
                new ConditionInfo {
                    A = x + y, B = z, Oper = ">"
                },
                new ConditionInfo {
                    A = x + z, B = y, Oper = ">"
                },
                new ConditionInfo {
                    A = y + z, B = x, Oper = ">"
                }
            };

            conditions.Add(new ConditionInfo
            {
                A = CaculationHelper.CaculateDistanceFitness(new ConditionInfo
                {
                    A    = CaculationHelper.CaculateDistanceFitness(conditions[0]),
                    B    = CaculationHelper.CaculateDistanceFitness(conditions[1]),
                    Oper = "&&"
                }),
                B    = CaculationHelper.CaculateDistanceFitness(conditions[2]),
                Oper = "&&"
            });
            conditions.Add(new ConditionInfo {
                A = x, B = y, Oper = "=="
            });
            conditions.Add(new ConditionInfo {
                A = y, B = z, Oper = "=="
            });
            conditions.Add(new ConditionInfo
            {
                A    = CaculationHelper.CaculateDistanceFitness(conditions[4]),
                B    = CaculationHelper.CaculateDistanceFitness(conditions[5]),
                Oper = "&&"
            });
            conditions.Add(new ConditionInfo {
                A = x, B = y, Oper = "=="
            });
            conditions.Add(new ConditionInfo {
                A = y, B = z, Oper = "=="
            });
            conditions.Add(new ConditionInfo {
                A = x, B = z, Oper = "=="
            });
            conditions.Add(new ConditionInfo
            {
                A = CaculationHelper.CaculateDistanceFitness(new ConditionInfo
                {
                    A    = CaculationHelper.CaculateDistanceFitness(conditions[7]),
                    B    = CaculationHelper.CaculateDistanceFitness(conditions[8]),
                    Oper = "||"
                }),
                B    = CaculationHelper.CaculateDistanceFitness(conditions[9]),
                Oper = "||"
            });
            return(CaculationHelper.CaculateTotalDistanceFitness(conditions));
        }