{"id":644,"date":"2010-01-03T07:04:36","date_gmt":"2010-01-03T06:04:36","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=644"},"modified":"2010-01-03T07:04:36","modified_gmt":"2010-01-03T06:04:36","slug":"my-first-genetic-algorithm","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/","title":{"rendered":"My first genetic algorithm"},"content":{"rendered":"<p>To practice some AI methods I&#8217;ve been reading about, I created a <a href=\"http:\/\/en.wikipedia.org\/wiki\/Genetic_algorithm\" target=\"_blank\">genetic algorithm<\/a> (GA) implementation to tackle the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Travelling_salesman_problem\" target=\"_blank\">travelling salesman problem<\/a> (TSP). I decided to do this in C#, to practice myself in some more advanced aspects of the language, and mess some more around with the new stuff of .Net 4.0, and with WPF as interface to get a better grip on the basics of <a href=\"http:\/\/en.wikipedia.org\/wiki\/Windows_Presentation_Foundation\" target=\"_blank\">WPF<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/XAML\" target=\"_blank\">XAML<\/a>.<\/p>\n<p>I started with creating a general data structure for any GA algorithm (Classes Population and Individual, interface IIndividual and some others), and then added handling for the TSP problem by creating a Route class. This class holds the crossover, mutation and random initialization methods for routes. Each instance of Route, which derives from Individual and implements IIndividual, contains it&#8217;s own genotype, which is a List&lt;Int64&gt;. This list contains the numbers of the &#8216;cities&#8217; the &#8216;salesman&#8217; travels along. In the code behind my main window, I then create an instance of a Population&lt;Route&gt;, and do a calculation of the distances between all points, which is then stored in a static field of Route.<\/p>\n<p>I&#8217;m going to put the complete project on <a href=\"http:\/\/sourceforge.net\/\" target=\"_blank\">SourceForge<\/a> when it&#8217;s a little more finished. Although the algorithm is working it can still be optimized a lot (especially the genetic operations). Also, the interface is far from ready, and I&#8217;d like to do another simple implementation with the general GA structure to tackle some other problem.<\/p>\n<p>In any case, here are some nice sceenshots \ud83d\ude42<\/p>\n<figure id=\"attachment_646\" aria-describedby=\"caption-attachment-646\" style=\"width: 519px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-646\" title=\"The travelling salesman problem - the dots represent cities.\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif\" alt=\"\" width=\"519\" height=\"209\" \/><\/a><figcaption id=\"caption-attachment-646\" class=\"wp-caption-text\">The dots represent cities.<\/figcaption><\/figure>\n<figure id=\"attachment_647\" aria-describedby=\"caption-attachment-647\" style=\"width: 519px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-evolution.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-647\" title=\"The travelling salesman problem - evolution of the route.\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-evolution.gif\" alt=\"The travelling salesman problem - evolution of the route.\" width=\"519\" height=\"240\" \/><\/a><figcaption id=\"caption-attachment-647\" class=\"wp-caption-text\">The shortest route after several generations. The gray line represents an attempted, but failed, mutation or combination.<\/figcaption><\/figure>\n<figure id=\"attachment_648\" aria-describedby=\"caption-attachment-648\" style=\"width: 521px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-shortest-path.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-648\" title=\"The travelling salesman problem - the shortest route.\" src=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-shortest-path.gif\" alt=\"The travelling salesman problem - the shortest route.\" width=\"521\" height=\"244\" \/><\/a><figcaption id=\"caption-attachment-648\" class=\"wp-caption-text\">After a while the shortest route, or at least one that&#39;s very close, is found.<\/figcaption><\/figure>\n<p>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>To practice some AI methods I&#8217;ve been reading about, I created a genetic algorithm (GA) implementation to tackle the travelling&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[7],"tags":[9,11,55,100,103,181,239,266,267,294,297],"class_list":["post-644","post","type-post","status-publish","format-standard","hentry","category-programming","tag-net","tag-net-4-0","tag-c","tag-ga","tag-genetic-algorithm","tag-open-source","tag-sourceforge","tag-tsp","tag-ttravelling-salesman-problem","tag-wpf","tag-xaml"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>My first genetic algorithm - Blog of Jeroen De Dauw<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"My first genetic algorithm - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"To practice some AI methods I&#8217;ve been reading about, I created a genetic algorithm (GA) implementation to tackle the travelling&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2010-01-03T06:04:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"My first genetic algorithm\",\"datePublished\":\"2010-01-03T06:04:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/\"},\"wordCount\":321,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"image\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif\",\"keywords\":[\".Net\",\".Net 4.0\",\"C#\",\"GA\",\"Genetic Algorithm\",\"Open Source\",\"SourceForge\",\"TSP\",\"Ttravelling Salesman Problem\",\"WPF\",\"XAML\"],\"articleSection\":[\"Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/\",\"name\":\"My first genetic algorithm - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif\",\"datePublished\":\"2010-01-03T06:04:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#primaryimage\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif\",\"contentUrl\":\"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.entropywins.wtf\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"My first genetic algorithm\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#website\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeroendedauw\/\",\"https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"My first genetic algorithm - Blog of Jeroen De Dauw","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/","og_locale":"en_US","og_type":"article","og_title":"My first genetic algorithm - Blog of Jeroen De Dauw","og_description":"To practice some AI methods I&#8217;ve been reading about, I created a genetic algorithm (GA) implementation to tackle the travelling&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2010-01-03T06:04:36+00:00","og_image":[{"url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif","type":"","width":"","height":""}],"author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"My first genetic algorithm","datePublished":"2010-01-03T06:04:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/"},"wordCount":321,"commentCount":1,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif","keywords":[".Net",".Net 4.0","C#","GA","Genetic Algorithm","Open Source","SourceForge","TSP","Ttravelling Salesman Problem","WPF","XAML"],"articleSection":["Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/","url":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/","name":"My first genetic algorithm - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#primaryimage"},"image":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#primaryimage"},"thumbnailUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif","datePublished":"2010-01-03T06:04:36+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#primaryimage","url":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif","contentUrl":"https:\/\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/tsp-genetic-algorithm-cities.gif"},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/03\/my-first-genetic-algorithm\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"My first genetic algorithm"}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-ao","jetpack-related-posts":[{"id":650,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/10\/galib-with-tsp-implementation\/","url_meta":{"origin":644,"position":0},"title":"GALib with TSP implementation","author":"Jeroen","date":"2010-01-10","format":false,"excerpt":"Over the last week, I've been rewriting my Genetic Algorithm (GA) implementation of the Travelling Salesman Problem (TSP). I've rewritten pretty much everything, but the two most notable changes are: 1. I split the code into 2 projects: one holding the general GA code, which is now called GALib, and\u2026","rel":"","context":"In \".Net\"","block_context":{"text":".Net","link":"https:\/\/www.entropywins.wtf\/blog\/tag\/net\/"},"img":{"alt_text":"Dependency diagram of a Visual Studio solution containing the GALib and TSP app (Skynet)","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/GALib-TSP-dependencyDiagram.png.gif?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/GALib-TSP-dependencyDiagram.png.gif?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/GALib-TSP-dependencyDiagram.png.gif?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":686,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/30\/skynet-released\/","url_meta":{"origin":644,"position":1},"title":"Skynet released!","author":"Jeroen","date":"2010-01-30","format":false,"excerpt":"Today I released the first public beta of Skynet, which is now at version 0.1.3. Skynet is an implementation of GALib with WPF GUI that solves the Travelling Salesman Problem (TSP) using Genetic Algorithms (GA). It's completely open source and available under the GNU General Public License. Downloads Skynet 0.1.3.zip\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/Skynet-application-interface.gif?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/Skynet-application-interface.gif?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/Skynet-application-interface.gif?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":662,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/19\/galib-available-now\/","url_meta":{"origin":644,"position":2},"title":"GALib available now!","author":"Jeroen","date":"2010-01-19","format":false,"excerpt":"Over the past 2 weeks I've been putting time in creating a general purpose Genetic Algorithm (GA) library in C#. It provides the scaffolding for any GA based functionality. Although it's not fully finished yet, it is now available under the GPL licence at SourceForge. What does it provide and\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"Class diagram of GALib by Jeroen De Dauw","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/GALib-cd.gif?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/GALib-cd.gif?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2010\/01\/GALib-cd.gif?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":29,"url":"https:\/\/www.entropywins.wtf\/blog\/2009\/04\/27\/c-net-background-file-downloader\/","url_meta":{"origin":644,"position":3},"title":"C#.NET Background File Downloader","author":"Jeroen","date":"2009-04-27","format":false,"excerpt":"About a week ago I published A FileDownloader class written in VB.Net. This class enables you to easily download multiple files in the background (via a separate thread), and will provide information about the amount of downloaded data, the percentage of completion, and the download speed. On top of this,\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/04\/FileDownloaderDemo-downloading.gif?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/04\/FileDownloaderDemo-downloading.gif?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2009\/04\/FileDownloaderDemo-downloading.gif?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":677,"url":"https:\/\/www.entropywins.wtf\/blog\/2010\/01\/24\/galib-0-1-released\/","url_meta":{"origin":644,"position":4},"title":"GALib 0.1 released","author":"Jeroen","date":"2010-01-24","format":false,"excerpt":"Yesterday I released GALib version 0.1, a small C# Library that provides the scaffolding for Genetic Algorithm based functionality. It's completely open source and available under the GNU General Public License. (See other blog posts about GALib) You can download both the source and compiled .dll from SourceForge. I've done\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":564,"url":"https:\/\/www.entropywins.wtf\/blog\/2009\/11\/17\/a-first-look-at-vs-2010-and-net-fw-4\/","url_meta":{"origin":644,"position":5},"title":"A first look at VS 2010 and .Net FW 4","author":"Jeroen","date":"2009-11-17","format":false,"excerpt":"Two days I go I got the beta 2 of Visual Studio 2010, which is scheduled to be released in the first half of next year. With it, came .Net Framework 4 beta 2. I've taken a good look at the changes in these new versions, and am really excited\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=644"}],"version-history":[{"count":0,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/644\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=644"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=644"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}