void PerformGeneticAlgorithm()
        {
            
            BitmapResult expectedResult = new BitmapResult(SourceImage);
            int generationsCount = 200;
            for (int i = 1; i < generationsCount; i++)
            {
                Generation.CalculateResults();
                Generation.CalculateFitness(expectedResult);
                Generation.NaturalSelection(100);
                

                this.Invoke(new MethodInvoker(delegate ()
                {
                    int perc = i * 100 / generationsCount;
                    txtLog.Text = "GEN " + i + " (" + perc + "%)\r\n";
                    foreach (var o in Generation.Population)
                    {
                        txtLog.Text += o.Fitness + "\r\n";
                    }
                    DrawCurrentBest(Generation.Population[0]);
                    Generation.Population[0].GetResult().Save("c:/devel/gen/" + i.ToString("d5") + ".jpg");
                }));

            }
            GeneticAlgorithm.Abort();
        }
        private void btnCalculateFitness_Click(object sender, EventArgs e)
        {
            DrawSourceImage();
            BitmapResult expectedResult = new BitmapResult(SourceImage);
            Generation.CalculateResults();
            Generation.CalculateFitness(expectedResult);

            foreach (var o in Generation.Population)
            {
                txtLog.Text += o.Fitness + "\r\n";
            }
        }
示例#3
0
        public static void SendResponse(this HttpListenerContext context, BitmapResult result)
        {
            if (result.Bitmap != null)
            {
                using (var memoryStream = new MemoryStream())
                {
                    result.Bitmap.Save(memoryStream, ImageFormat.Png);
                    memoryStream.WriteTo(context.Response.OutputStream);
                }

                result.Bitmap.Dispose();
            }

            context.SendResponse(result.StatusCode);
        }