示例#1
0
        private static void runTest()
        {
            StringReversalFitness fitness = new StringReversalFitness();

            Generator generator = new BitGeneStringGenerator();
            GeneratorParameters generatorParameters = new GeneratorParameters(null, 100, 100, true, null);

            BasicGeneticInstanceParameters bgiParams = new BasicGeneticInstanceParameters(generator, generatorParameters, fitness);
            BasicGeneticRunParameters bgrParams = new BasicGeneticRunParameters(20, 0.7d, 5, 0.3d, false);
            BasicGenetics basicGenetics = new BasicGenetics(null, bgiParams);

            RandomRestartInstanceParameters rriParams = new RandomRestartInstanceParameters(13000000);
            RandomRestartRunParameters rrrParams = new RandomRestartRunParameters(basicGenetics, bgiParams, bgrParams, 1, 200, true);

            RandomRestartGenetics randomRestartGenetics = new RandomRestartGenetics(null, rriParams);

            int bestFitness = randomRestartGenetics.run(rrrParams);

            GeneString bestResult = randomRestartGenetics.getBest();

            Console.WriteLine("best result: " + bestFitness);

            List<Swap> swaps = new StringReversalSemantics().parse(bestResult);

            Console.WriteLine(swaps.Count);

            int num = 0;
            for (int n = 0; n < 10; n++)
            {
                num = num * 10 + n;
                showTest(num + "", swaps);
            }

            showTest("Hello World", swaps);
            showTest("Wajoo", swaps);
            showTest("Werkt Aardig", swaps);
        }
        private int runChampionRound(RandomRestartRunParameters rrParameters, List<GeneStringFitnessPair> bestResults)
        {
            if (rrParameters.verbose) Console.WriteLine("running champion round");

            GeneString[] geneStrings = new GeneString[bestResults.Count];

            for (int n = 0; n < bestResults.Count; n++)
            {
                geneStrings[n] = bestResults[n].genestring;
            }

            subGenetics = rrParameters.algorithm.newInstance(geneStrings, rrParameters.algorithmInstanceParameters);

            return runUntilRepeating(rrParameters.algorithmRunParameters, rrParameters.numRepeatsBeforeRestart, rrParameters.verbose);
        }