示例#1
0
    public Position calculateAlpha(List <Krill> herd, Krill krill, HerdParameters parameters)
    {
        Position localAlpha  = calculateAlphaLocal(herd, krill, parameters);
        Position targetAlpha = calculateAlphaTarget(parameters, krill);

        return(localAlpha + targetAlpha);
    }
示例#2
0
 public Position calculateBeta(Krill krill, Food food, HerdParameters parameters)
 {
     Position betaFood = calculateBetaFood(food,krill);
     Position betaBest = calculateBetaBest(krill,parameters);
     //Debug.Log("Food " + betaFood + " best " + betaBest);
     return betaFood + betaBest;
 }
示例#3
0
    public Position calculateAlpha(List<Krill> herd, Krill krill, HerdParameters parameters)
    {
        Position localAlpha = calculateAlphaLocal(herd, krill, parameters);
        Position targetAlpha = calculateAlphaTarget(parameters,krill);

        return localAlpha + targetAlpha;
    }
示例#4
0
    public Position calculateBeta(Krill krill, Food food, HerdParameters parameters)
    {
        Position betaFood = calculateBetaFood(food, krill);
        Position betaBest = calculateBetaBest(krill, parameters);

        //Debug.Log("Food " + betaFood + " best " + betaBest);
        return(betaFood + betaBest);
    }
示例#5
0
 private Position calculateBetaBest(Krill krill, HerdParameters parameters)
 {
     Position bestRelatedPosition = tendencyCalculator.calculateRelatedPosition(krill.getBestPosition(),krill.getPosition());
     float bestFitness = tendencyCalculator.calculateRelatedFitness(krill.getFitnessValue(),krill.getBestPositionFitness(),parameters);
     //Debug.Log("best fitness "  + bestFitness);
     bestRelatedPosition = bestRelatedPosition * bestFitness;
     return bestRelatedPosition;
 }
示例#6
0
 private void mutateKrill(Krill krill, List<Krill> herd, HerdParameters parameters)
 {
     int range = herd.Count / 2;
     Krill first = herd[Random.Range(0,range)];
     int secondIndex = Random.Range(range,herd.Count);
     Krill second = herd[secondIndex];
     //        krill.mutate(first,second,parameters.getBestFitnessKrill());
 }
示例#7
0
    private void mutateKrill(Krill krill, List <Krill> herd, HerdParameters parameters)
    {
        int   range       = herd.Count / 2;
        Krill first       = herd[Random.Range(0, range)];
        int   secondIndex = Random.Range(range, herd.Count);
        Krill second      = herd[secondIndex];
//        krill.mutate(first,second,parameters.getBestFitnessKrill());
    }
        static void ImplementInterfaces()
        {
            Jaguar jaguar = new Jaguar();

            Console.WriteLine(jaguar.Sleep);
            Krill krill = new Krill();

            Console.WriteLine(krill.Swim);
        }
    private float calculateSenseDistance(List<Krill> herd, Krill krill)
    {
        float distance = 0.0f;
        foreach(Krill other in herd){
            distance += krill.getPosition().distanceFrom(other.getPosition());
        }

        return distance/(5.0f * herd.Count);
    }
示例#10
0
    private Position calculateBetaBest(Krill krill, HerdParameters parameters)
    {
        Position bestRelatedPosition = tendencyCalculator.calculateRelatedPosition(krill.getBestPosition(), krill.getPosition());
        float    bestFitness         = tendencyCalculator.calculateRelatedFitness(krill.getFitnessValue(), krill.getBestPositionFitness(), parameters);

        //Debug.Log("best fitness "  + bestFitness);
        bestRelatedPosition = bestRelatedPosition * bestFitness;
        return(bestRelatedPosition);
    }
示例#11
0
    private Position calculateAlphaTarget(HerdParameters parameters, Krill krill)
    {
        Position relatedPosition = tendencyCalculator.calculateRelatedPosition(parameters.getBestFitnessPosition(), krill.getPosition());
        float relatedFitness = tendencyCalculator.calculateRelatedFitness(krill.getFitnessValue(),parameters.getBestFitnessValue(), parameters);

           	relatedPosition = relatedPosition * relatedFitness;
        relatedPosition = relatedPosition * calculateCoefficient(parameters);

        return relatedPosition;
    }
示例#12
0
    private Position calculateAlphaTarget(HerdParameters parameters, Krill krill)
    {
        Position relatedPosition = tendencyCalculator.calculateRelatedPosition(parameters.getBestFitnessPosition(), krill.getPosition());
        float    relatedFitness  = tendencyCalculator.calculateRelatedFitness(krill.getFitnessValue(), parameters.getBestFitnessValue(), parameters);

        relatedPosition = relatedPosition * relatedFitness;
        relatedPosition = relatedPosition * calculateCoefficient(parameters);

        return(relatedPosition);
    }
示例#13
0
    private float calculateSenseDistance(List <Krill> herd, Krill krill)
    {
        float distance = 0.0f;

        foreach (Krill other in herd)
        {
            distance += krill.getPosition().distanceFrom(other.getPosition());
        }

        return(distance / (5.0f * herd.Count));
    }
示例#14
0
 public void updateBestWorstKrill(Krill krill)
 {
     if(krill.getFitnessValue() < bestFitnessValue){
         bestKrill = krill;
         bestFitnessValue = krill.getFitnessValue();
         bestFitnessPosition = krill.getPosition().getClone();
     }
     if(krill.getFitnessValue() > worstFitnessValue){
         worstFitnessValue = krill.getFitnessValue();
     }
 }
示例#15
0
    private Position calculateAlphaLocal(List<Krill> neighbours, Krill krill, HerdParameters parameters)
    {
        Position alphaLocal = new Position();

        foreach (Krill neighbour in neighbours) {
            Position relatedPosition = tendencyCalculator.calculateRelatedPosition(neighbour.getPosition(), krill.getPosition());
            float relatedFitness = tendencyCalculator.calculateRelatedFitness(krill.getFitnessValue(),neighbour.getFitnessValue(), parameters);

            relatedPosition = relatedPosition * relatedFitness;
            alphaLocal = alphaLocal + relatedPosition;
        }
        return alphaLocal;
    }
示例#16
0
 public void updateBestWorstKrill(Krill krill)
 {
     if (krill.getFitnessValue() < bestFitnessValue)
     {
         bestKrill           = krill;
         bestFitnessValue    = krill.getFitnessValue();
         bestFitnessPosition = krill.getPosition().getClone();
     }
     if (krill.getFitnessValue() > worstFitnessValue)
     {
         worstFitnessValue = krill.getFitnessValue();
     }
 }
示例#17
0
    private Position calculateAlphaLocal(List <Krill> neighbours, Krill krill, HerdParameters parameters)
    {
        Position alphaLocal = new Position();

        foreach (Krill neighbour in neighbours)
        {
            Position relatedPosition = tendencyCalculator.calculateRelatedPosition(neighbour.getPosition(), krill.getPosition());
            float    relatedFitness  = tendencyCalculator.calculateRelatedFitness(krill.getFitnessValue(), neighbour.getFitnessValue(), parameters);

            relatedPosition = relatedPosition * relatedFitness;
            alphaLocal      = alphaLocal + relatedPosition;
        }
        return(alphaLocal);
    }
示例#18
0
文件: Herd.cs 项目: jacek-kurlit/cars
    public Krill simulate()
    {
        init();
        while (algorithmParameters.nextIteration())
        {
            fitnessEvaluation();
            motionCalculations();
            updateKrillPositions();
        }
        Krill bestKrill = algorithmParameters.getBestFitnessKrill();

        bestKrill.calculateSpeed();
        return(bestKrill);
    }
示例#19
0
    public List<Krill> determinateNeighbours(List<Krill> herd, Krill krill)
    {
        List<Krill> neighbours = new List<Krill>();
        float senseDistance = calculateSenseDistance(herd,krill);

        foreach(Krill other in herd){

            if(!(krill==other)){
                float distance = krill.getPosition().distanceFrom(other.getPosition());
                if(distance <= senseDistance){
                    neighbours.Add(other);
                }
            }
        }
        return neighbours;
    }
示例#20
0
    public List <Krill> determinateNeighbours(List <Krill> herd, Krill krill)
    {
        List <Krill> neighbours    = new List <Krill>();
        float        senseDistance = calculateSenseDistance(herd, krill);

        foreach (Krill other in herd)
        {
            if (!(krill == other))
            {
                float distance = krill.getPosition().distanceFrom(other.getPosition());
                if (distance <= senseDistance)
                {
                    neighbours.Add(other);
                }
            }
        }
        return(neighbours);
    }
        static void OverrideVirtualMethods()
        {
            // Override two virtual methods
            // Create animal objects and instantiate concrete animals
            Parrot parrot = new Parrot();

            Console.WriteLine(parrot.Fly());
            Toucan toucan = new Toucan();

            Console.WriteLine(toucan.Fly());

            Krill krill = new Krill();

            Console.WriteLine(krill.BeEaten());
            Langostino langostino = new Langostino();

            Console.WriteLine(langostino.BeEaten());
        }
示例#22
0
 public int getVerticalInput()
 {
     bestKrill = herd.simulate();
     return(angleDirection(bestKrill.getPosition().toVector3()));
 }
示例#23
0
 private Position calculateBetaFood(Food food, Krill krill )
 {
     return null;
 }
示例#24
0
 public int getVerticalInput()
 {
     bestKrill = herd.simulate();
     return angleDirection(bestKrill.getPosition().toVector3());
 }
示例#25
0
 private Position calculateBetaFood(Food food, Krill krill)
 {
     return(null);
 }
示例#26
0
 private void crossKrill(Krill toCross, List<Krill> herd)
 {
     int ind =   Random.Range(0,herd.Count);
        // toCross.crossover(herd[ind]);
 }
示例#27
0
        public void TestSwim()
        {
            Krill krill = new Krill();

            Assert.Equal("Crustaceans can swim.", krill.Swim);
        }
示例#28
0
    private Position getAlphaPosition(List <Krill> herd, Krill krill, HerdParameters parameters)
    {
        Position alphaPosition = alphaCalculator.calculateAlpha(herd, krill, parameters);

        return(alphaPosition * parameters.N_MAX);
    }
示例#29
0
 private Position getAlphaPosition(List<Krill> herd,Krill krill, HerdParameters parameters)
 {
     Position alphaPosition = alphaCalculator.calculateAlpha(herd,krill,parameters);
     return alphaPosition * parameters.N_MAX;
 }
示例#30
0
 private void crossKrill(Krill toCross, List <Krill> herd)
 {
     int ind = Random.Range(0, herd.Count);
     // toCross.crossover(herd[ind]);
 }
示例#31
0
        public void TestKrill()
        {
            Krill krill = new Krill();

            Assert.Equal("Krill are food for whales!", krill.BeEaten());
        }