Esempio n. 1
0
        public static void RandomMutaitons()
        {
            var      bmp     = new System.Drawing.Bitmap(FILE_IN);
            ImageSys img     = new ImageSys(bmp);
            Texture  txt     = new Interpolent(img, Intpol.Nearest);
            var      fitness = BuildFitness(txt);

            CPPN    network = new CPPN();
            VRandom rng     = new RandMT();

            network.Randomize(rng);

            Renderor ren    = new Renderor();
            ImageSys output = new ImageSys(256, 256);

            //img.BMP.Save(FILE_OUT + "test.png");

            Console.WriteLine("Building Network...");

            for (int i = 0; i < 200; i++)
            {
                network.Mutate(rng, 1.0);
            }


            Console.WriteLine("Aproximating Image: " + FILE_IN);



            //NOTE: Make it so we don't accept mutations that
            //result in NaN fitness!

            for (int i = 0; i < MAX_GEN; i++)
            {
                //network.Mutate(rng, 1.0); //0.1
                network.Randomize(rng);

                ren.Render(network, output);
                string file = i.ToString("0000") + ".png";

                output.BMP.Save(FILE_OUT + file);

                int    nodes = network.NumNurons;
                int    axons = network.NumAxons;
                double fit   = fitness(network);

                //Console.WriteLine();
                Console.WriteLine("Generation " + i + ": " + nodes + " " + axons + " " + fit);
            }
        }