public void test()
    {
        int score = 0;

        foreach (PokemonTeam t in pD.getEvalTeams())
        {
            Console.Write("\nBattling against a team with: ");
            foreach (Pokemon p in t.getMembers())
            {
                Console.Write(p.getName() + " ");
            }
            float[] testDNA = pD.createDnaUsingPkmn(t);
            input = testDNA;


            fillNetwork(bestDNA);

            calculate();

            PokemonTeam attacker = pD.createTeamUsingDNA(output);

            score += b.battle(attacker.getMembers(), t.getMembers());
        }

        Console.Write("\nA score of " + score + " was achieved against the evaluation teams! (FF)");
    }
    private int individualTrain()
    {
        int genBestFitness = 0;
        int totalTeamBest  = 0;

        foreach (PokemonTeam t in testTeams)
        {
            Console.Write("\nTraining against a team with: ");
            foreach (Pokemon p in t.getMembers())
            {
                Console.Write(p.getName());
            }
            float[] testDNA = pD.createDnaUsingPkmn(t);
            input = testDNA;

            for (int j = 0; j < DNA.Count; j++)
            {
                fillNetwork(DNA[j]);

                calculate();

                PokemonTeam attacker = pD.createTeamUsingDNA(output);

                string debug;
                debug = "\nAttacking team: ";
                foreach (Pokemon p in attacker.getMembers())
                {
                    debug = debug + p.getName() + " ";
                }
                //Console.Write(debug);

                int fitness = b.battle(attacker.getMembers(), t.getMembers());
                fitnesses[j] = fitness;
                //Console.Write("\nFeedForward Fitness = " + fitness);
                if (fitness > genBestFitness)
                {
                    genBestFitness = fitness;
                }
            }
            totalTeamBest += genBestFitness;
            evolve();
        }
        Console.Write("\nCurrent total: " + totalTeamBest);
        return(totalTeamBest);
    }
Example #3
0
    public void test()
    {
        PokemonExperiment test = new PokemonExperiment(pD);

        config.Load("configfiles/NEATConfig.config.xml");

        test.Initialize("Pokemon", config.DocumentElement);


        var           genomeDecoder = test.CreateGenomeDecoder();
        IBlackBox     box           = genomeDecoder.Decode(bestGenome);
        BattleHandler b             = new BattleHandler();

        int score = 0;

        List <PokemonTeam> evalTeams = pD.getEvalTeams();

        foreach (PokemonTeam t in pD.getEvalTeams())
        {
            string debug = "\nBattling against a team with: ";

            foreach (Pokemon p in t.getMembers())
            {
                debug += p.getName() + " ";
            }
            Console.Write(debug);

            box.ResetState();
            ISignalArray inputArray;
            inputArray = box.InputSignalArray;
            float[] pkmnDnaIn = pD.createDnaUsingPkmn(t);

            for (int j = 0; j < t.getMembers().Length; j++)
            {
                inputArray[j] = pkmnDnaIn[j];
            }

            box.Activate();

            ISignalArray outputArray;
            outputArray = box.OutputSignalArray;
            float[] pkmnDnaOut = new float[outputArray.Length];
            for (int j = 0; j < pkmnDnaOut.Length; j++)
            {
                pkmnDnaOut[j] = (float)outputArray[j];
            }

            PokemonTeam attacker = pD.createTeamUsingDNA(pkmnDnaOut);

            score += b.battle(attacker.getMembers(), t.getMembers());
        }

        Console.Write("\nA Score of " + score + " was achieved agains the evaluation teams! (NEAT)");
        Console.Write("\nThe NEAT has a complexity of " + bestGenome.Complexity);
    }
Example #4
0
    public FitnessInfo Evaluate(IBlackBox box)
    {
        int fitness = 0;

        List <PokemonTeam> testTeams = pD.getTestTeams();

        for (int i = 0; i < triesPerTest; i++)
        {
            foreach (PokemonTeam t in testTeams)
            {
                string debug = "\nTraining against a team with: ";

                foreach (Pokemon p in t.getMembers())
                {
                    debug += p.getName() + " ";
                }
                // Console.Write(debug);

                box.ResetState();
                ISignalArray inputArray;
                inputArray = box.InputSignalArray;
                float[] pkmnDnaIn = pD.createDnaUsingPkmn(t);

                for (int j = 0; j < t.getMembers().Length; j++)
                {
                    inputArray[j] = pkmnDnaIn[j];
                }

                box.Activate();

                ISignalArray outputArray;
                outputArray = box.OutputSignalArray;
                float[] pkmnDnaOut = new float[outputArray.Length];
                for (int j = 0; j < pkmnDnaOut.Length; j++)
                {
                    pkmnDnaOut[j] = (float)outputArray[j];
                }

                PokemonTeam attacker = pD.createTeamUsingDNA(pkmnDnaOut);

                fitness += b.battle(attacker.getMembers(), t.getMembers());

                evaluations++;
                //Console.Write("\nEvaluations = " + evaluations);

                //Console.Write("\nCurrent Neat Fitness: " + fitness);
            }
        }
        return(new FitnessInfo(fitness, fitness));
    }
Example #5
0
    //Conversion Functions


    public float[] createDnaUsingPkmn(PokemonTeam pT)
    {
        float[] pkmnDNA = new float[pokeDex.Count];
        for (int i = 0; i < pkmnDNA.Length; i++)
        {
            pkmnDNA[i] = 0;
        }
        foreach (Pokemon p in pT.getMembers())
        {
            int place = -1;
            foreach (Pokemon pN in pokeDex)
            {
                if (pN.getName() == p.getName())
                {
                    place = pokeDex.IndexOf(pN);
                }
            }
            pkmnDNA[place] = 1;
        }
        return(pkmnDNA);
    }