<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Genetic Programming: Mona Lisa FAQ</title>
	<atom:link href="http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/feed/" rel="self" type="application/rss+xml" />
	<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/</link>
	<description></description>
	<lastBuildDate>Sat, 28 Jan 2012 14:35:30 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Terence Hale</title>
		<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/#comment-2352</link>
		<dc:creator><![CDATA[Terence Hale]]></dc:creator>
		<pubDate>Sat, 12 Nov 2011 14:55:53 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=423#comment-2352</guid>
		<description><![CDATA[Hi,
Interesting. I&#039;ve been looking at using DNA alignments as pictures, looking for pictorial signals. Different alignments of diseases in pictorial form give interesting pictures, which at the moment I don&#039;t understand, but.]]></description>
		<content:encoded><![CDATA[<p>Hi,<br />
Interesting. I&#8217;ve been looking at using DNA alignments as pictures, looking for pictorial signals. Different alignments of diseases in pictorial form give interesting pictures, which at the moment I don&#8217;t understand, but.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Olsen</title>
		<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/#comment-2331</link>
		<dc:creator><![CDATA[David Olsen]]></dc:creator>
		<pubDate>Mon, 03 Oct 2011 00:39:43 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=423#comment-2331</guid>
		<description><![CDATA[In your tools:

        public static bool WillMutate(int mutationRate)
        {
            if (GetRandomNumber(0, mutationRate) == 1)
                return true;
            return false;
        }


Heh.

public static bool WillMutate(int mutationRate) {
            return GetRandomNumber(0,mutationRate) == 1;
}]]></description>
		<content:encoded><![CDATA[<p>In your tools:</p>
<p>        public static bool WillMutate(int mutationRate)<br />
        {<br />
            if (GetRandomNumber(0, mutationRate) == 1)<br />
                return true;<br />
            return false;<br />
        }</p>
<p>Heh.</p>
<p>public static bool WillMutate(int mutationRate) {<br />
            return GetRandomNumber(0,mutationRate) == 1;<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Schneider</title>
		<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/#comment-2184</link>
		<dc:creator><![CDATA[David Schneider]]></dc:creator>
		<pubDate>Sat, 16 Apr 2011 19:42:09 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=423#comment-2184</guid>
		<description><![CDATA[I have to say that I believe a larger population would be beneficial. The real problem with a larger population is determining which ones to weed out, which leads to their competition being over computation time. The more effective ones get more CPU time/refinement, and if one of the outliers getting say 1/100th the time happens upon a freak polygon that makes things much better, it will gain more computation time.

In doing this, you lose the pitfalls of a hill-climbing algorithm. Honestly, despite your objections, this is still a hill-climbing algorithm. It will develop along one path and come out with one output. There is no competition at the end, there is no pruning, even if you try to weasel and say &quot;parents compete with children.&quot; OK so parent wins, parent just makes another child. It is serial hill-climbing. Oops I turned right I should have gone straight now I will go straight instead. Still stuck in the valley, when there could be others exploring other parts of the map, efficiently, as I outlined above (give more CPU time to the better seeming ones).

The algorithm itself makes a presupposition that the first few thousand generations are even important. The fitness function does not work on them properly; it preselects polygons that make up a sort of a base and paints on top of them, which is a little absurd, considering that they make up broad details that will not be in a finished picture that doesn&#039;t have a small tonal range like the mona lisa. It becomes a somewhat additive process (even though that base is moved around and changed a little). You could pick almost a random collection of polygons and start from there and get roughly a same result; there is a lot of waste near the beginning. There should be a non-genetic pre-processing step, or multiple competitors that each get a fixed number of generations before any sort of pruning is done.

I would apportion the populations into the following divisions:
1) A population that just works on the image
2) A population that at first works on a blurred or simplified version
3) A population that at first works on a contrast-enhanced version
4) A population that at first works on an edge-detection composite
5) A population that at first works on a tone-mapped version of the picture (much like HDR tone-mapping, but in reverse: in this case, taking data and reducing it).

Finally, another fitness test that can be added is compressibility of output. This could probably be efficiently performed by sorting polygons according to a weight function between their spacial location and average RGBA values, and then using differential encoding (next vertex is + 4,2 with color -8,+120,-100,+2 of last). If you&#039;re looking to compress images instead of just making pretty ones, it is possible this could turn into a decent method, because of how easy it is to compress polygonal data on a 2D plane.

You know, I&#039;m inspired to implement all of this myself. I wonder how it might do.]]></description>
		<content:encoded><![CDATA[<p>I have to say that I believe a larger population would be beneficial. The real problem with a larger population is determining which ones to weed out, which leads to their competition being over computation time. The more effective ones get more CPU time/refinement, and if one of the outliers getting say 1/100th the time happens upon a freak polygon that makes things much better, it will gain more computation time.</p>
<p>In doing this, you lose the pitfalls of a hill-climbing algorithm. Honestly, despite your objections, this is still a hill-climbing algorithm. It will develop along one path and come out with one output. There is no competition at the end, there is no pruning, even if you try to weasel and say &#8220;parents compete with children.&#8221; OK so parent wins, parent just makes another child. It is serial hill-climbing. Oops I turned right I should have gone straight now I will go straight instead. Still stuck in the valley, when there could be others exploring other parts of the map, efficiently, as I outlined above (give more CPU time to the better seeming ones).</p>
<p>The algorithm itself makes a presupposition that the first few thousand generations are even important. The fitness function does not work on them properly; it preselects polygons that make up a sort of a base and paints on top of them, which is a little absurd, considering that they make up broad details that will not be in a finished picture that doesn&#8217;t have a small tonal range like the mona lisa. It becomes a somewhat additive process (even though that base is moved around and changed a little). You could pick almost a random collection of polygons and start from there and get roughly a same result; there is a lot of waste near the beginning. There should be a non-genetic pre-processing step, or multiple competitors that each get a fixed number of generations before any sort of pruning is done.</p>
<p>I would apportion the populations into the following divisions:<br />
1) A population that just works on the image<br />
2) A population that at first works on a blurred or simplified version<br />
3) A population that at first works on a contrast-enhanced version<br />
4) A population that at first works on an edge-detection composite<br />
5) A population that at first works on a tone-mapped version of the picture (much like HDR tone-mapping, but in reverse: in this case, taking data and reducing it).</p>
<p>Finally, another fitness test that can be added is compressibility of output. This could probably be efficiently performed by sorting polygons according to a weight function between their spacial location and average RGBA values, and then using differential encoding (next vertex is + 4,2 with color -8,+120,-100,+2 of last). If you&#8217;re looking to compress images instead of just making pretty ones, it is possible this could turn into a decent method, because of how easy it is to compress polygonal data on a 2D plane.</p>
<p>You know, I&#8217;m inspired to implement all of this myself. I wonder how it might do.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tatarize</title>
		<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/#comment-2063</link>
		<dc:creator><![CDATA[Tatarize]]></dc:creator>
		<pubDate>Sat, 12 Feb 2011 01:43:45 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=423#comment-2063</guid>
		<description><![CDATA[Just for the record, the above posters who convinced Roger Alsing to convert his fitness routine from Euclidian to Euclidian squared were wrong. 

There&#039;s a significant difference between Euclidian and Euclidian squared fitness routines. You think that 4 + 5 + 10 is roughly the same as 16+25+100, but it becomes quite important.

Take:
0,0,0,10 and compare it with 5,5,5,4

While the former adds up to 10, and the latter adds to 29 the former squares to 100 and the latter squares to 91. Single random pixels with high color distances rather than averaged out get a veto power. While it seems like N²  is reasonable for an approximation (and with a sample size of two where any improvement is taken it likely doesn&#039;t). With anything more, you&#039;re shooting yourself in the foot, and it bears it out with the generated images. They look significantly sloppier if you try to ramp up the sample size to get better images without realizing the assumption of the improvement is sample==2.

While there&#039;s a lot of different things to try, one shouldn&#039;t accept that you can just lose that square-root without any consequences at all. If your sample size is larger than 2, this speed up is a shot in the foot. The sum of the variance of the color distances is different than sum of the color distances.]]></description>
		<content:encoded><![CDATA[<p>Just for the record, the above posters who convinced Roger Alsing to convert his fitness routine from Euclidian to Euclidian squared were wrong. </p>
<p>There&#8217;s a significant difference between Euclidian and Euclidian squared fitness routines. You think that 4 + 5 + 10 is roughly the same as 16+25+100, but it becomes quite important.</p>
<p>Take:<br />
0,0,0,10 and compare it with 5,5,5,4</p>
<p>While the former adds up to 10, and the latter adds to 29 the former squares to 100 and the latter squares to 91. Single random pixels with high color distances rather than averaged out get a veto power. While it seems like N²  is reasonable for an approximation (and with a sample size of two where any improvement is taken it likely doesn&#8217;t). With anything more, you&#8217;re shooting yourself in the foot, and it bears it out with the generated images. They look significantly sloppier if you try to ramp up the sample size to get better images without realizing the assumption of the improvement is sample==2.</p>
<p>While there&#8217;s a lot of different things to try, one shouldn&#8217;t accept that you can just lose that square-root without any consequences at all. If your sample size is larger than 2, this speed up is a shot in the foot. The sum of the variance of the color distances is different than sum of the color distances.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tatarize</title>
		<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/#comment-2030</link>
		<dc:creator><![CDATA[Tatarize]]></dc:creator>
		<pubDate>Mon, 31 Jan 2011 01:59:04 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=423#comment-2030</guid>
		<description><![CDATA[@ Marvinbek

Yes. You can have the fitness reach zero. I&#039;ve written something similar, which is significantly more optimized than the above program (it would take seconds rather than days to run), and I&#039;ve run the program long enough to get perfect representations (after a while it could only improve single pixels and then improved itself out of them).

With the way it&#039;s currently written it would take years. But, rasterization is really just an image with pixels and pixels are little squares. So clearly it *could* be done if the six vertexes denote a particular polygon that ends up being a single pixel. But the diminishing returns make it rather worthless. It&#039;s possible, but would take years and is hugely diminishing in the returns department.]]></description>
		<content:encoded><![CDATA[<p>@ Marvinbek</p>
<p>Yes. You can have the fitness reach zero. I&#8217;ve written something similar, which is significantly more optimized than the above program (it would take seconds rather than days to run), and I&#8217;ve run the program long enough to get perfect representations (after a while it could only improve single pixels and then improved itself out of them).</p>
<p>With the way it&#8217;s currently written it would take years. But, rasterization is really just an image with pixels and pixels are little squares. So clearly it *could* be done if the six vertexes denote a particular polygon that ends up being a single pixel. But the diminishing returns make it rather worthless. It&#8217;s possible, but would take years and is hugely diminishing in the returns department.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: marvinbek</title>
		<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/#comment-2005</link>
		<dc:creator><![CDATA[marvinbek]]></dc:creator>
		<pubDate>Thu, 23 Dec 2010 18:02:20 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=423#comment-2005</guid>
		<description><![CDATA[is it possible for fitness to reach 0?]]></description>
		<content:encoded><![CDATA[<p>is it possible for fitness to reach 0?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: marvinbek</title>
		<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/#comment-2004</link>
		<dc:creator><![CDATA[marvinbek]]></dc:creator>
		<pubDate>Thu, 23 Dec 2010 17:59:43 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=423#comment-2004</guid>
		<description><![CDATA[Maybe a way to save every n-th generation as a jpg, gif, png or svg (maybe more formats)]]></description>
		<content:encoded><![CDATA[<p>Maybe a way to save every n-th generation as a jpg, gif, png or svg (maybe more formats)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roberto Aguirre Maturana</title>
		<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/#comment-1732</link>
		<dc:creator><![CDATA[Roberto Aguirre Maturana]]></dc:creator>
		<pubDate>Mon, 08 Nov 2010 14:31:36 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=423#comment-1732</guid>
		<description><![CDATA[Superb.

I have made something which in a way lower scale resembles your application. It&#039;s an Excel macros which is kind of a graphic implementation of Richard Dawkins Weasel program. You can find it in the following links (due to filesize limits, the containing rar file has been divided on two volumes):

&lt;a href=&quot;http://rhaguirrem.50webs.com/gweasel/GWeasel.part01.rar&quot; rel=&quot;nofollow&quot;&gt;Part 1&lt;/a&gt;
&lt;a href=&quot;http://rhaguirrem.50webs.com/gweasel/GWeasel.part01.rar&quot; rel=&quot;nofollow&quot;&gt;Part 2&lt;/a&gt;

Hope you like it, and congratulations for a very inspiring work.]]></description>
		<content:encoded><![CDATA[<p>Superb.</p>
<p>I have made something which in a way lower scale resembles your application. It&#8217;s an Excel macros which is kind of a graphic implementation of Richard Dawkins Weasel program. You can find it in the following links (due to filesize limits, the containing rar file has been divided on two volumes):</p>
<p><a href="http://rhaguirrem.50webs.com/gweasel/GWeasel.part01.rar" rel="nofollow">Part 1</a><br />
<a href="http://rhaguirrem.50webs.com/gweasel/GWeasel.part01.rar" rel="nofollow">Part 2</a></p>
<p>Hope you like it, and congratulations for a very inspiring work.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Coder</title>
		<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/#comment-1665</link>
		<dc:creator><![CDATA[Coder]]></dc:creator>
		<pubDate>Tue, 13 Jul 2010 23:12:34 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=423#comment-1665</guid>
		<description><![CDATA[Thanks for posting the source code examples, very helpful! :-)]]></description>
		<content:encoded><![CDATA[<p>Thanks for posting the source code examples, very helpful! :-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mental_floss Blog &#187; Evolving Mona Lisa</title>
		<link>http://rogeralsing.com/2008/12/09/genetic-programming-mona-lisa-faq/#comment-1313</link>
		<dc:creator><![CDATA[mental_floss Blog &#187; Evolving Mona Lisa]]></dc:creator>
		<pubDate>Mon, 22 Jun 2009 14:57:44 +0000</pubDate>
		<guid isPermaLink="false">http://rogeralsing.com/?p=423#comment-1313</guid>
		<description><![CDATA[[...] DNA. Alsing&#8217;s program took about three hours to generate its Mona Lisa, running on a laptop. Read the FAQ or view selected generations for more nerdy [...]]]></description>
		<content:encoded><![CDATA[<p>[...] DNA. Alsing&#8217;s program took about three hours to generate its Mona Lisa, running on a laptop. Read the FAQ or view selected generations for more nerdy [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

