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"; } }
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); }