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)); }