<?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"
	>
<channel>
	<title>Comments on: Attack of the Underflow</title>
	<atom:link href="http://www.kuliniewicz.org/blog/archives/2006/10/15/attack-of-the-underflow/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kuliniewicz.org/blog/archives/2006/10/15/attack-of-the-underflow/</link>
	<description>After all, it could only cost you your life, and you got that for free.</description>
	<pubDate>Thu, 04 Dec 2008 21:16:09 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
		<item>
		<title>By: fluffy</title>
		<link>http://www.kuliniewicz.org/blog/archives/2006/10/15/attack-of-the-underflow/#comment-1050</link>
		<dc:creator>fluffy</dc:creator>
		<pubDate>Sat, 04 Nov 2006 04:27:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.kuliniewicz.org/blog/archives/2006/10/15/attack-of-the-underflow/#comment-1050</guid>
		<description>Er, LISP has an if structure.  In the context of a GP you don't need anything so fancy though, you can just have it conditionally execute the second child if the first child evaluates true.</description>
		<content:encoded><![CDATA[<p>Er, LISP has an if structure.  In the context of a GP you don&#8217;t need anything so fancy though, you can just have it conditionally execute the second child if the first child evaluates true.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: E Procter</title>
		<link>http://www.kuliniewicz.org/blog/archives/2006/10/15/attack-of-the-underflow/#comment-1046</link>
		<dc:creator>E Procter</dc:creator>
		<pubDate>Mon, 30 Oct 2006 21:18:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.kuliniewicz.org/blog/archives/2006/10/15/attack-of-the-underflow/#comment-1046</guid>
		<description>it's just one excuse after another...</description>
		<content:encoded><![CDATA[<p>it&#8217;s just one excuse after another&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Paul Kuliniewicz</title>
		<link>http://www.kuliniewicz.org/blog/archives/2006/10/15/attack-of-the-underflow/#comment-1045</link>
		<dc:creator>Paul Kuliniewicz</dc:creator>
		<pubDate>Thu, 26 Oct 2006 00:12:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.kuliniewicz.org/blog/archives/2006/10/15/attack-of-the-underflow/#comment-1045</guid>
		<description>True, but an expression tree doesn't let you do any control flow, which could limit what the solutions could do.  OK, you could use a series of expression trees, sort of like what a compiler might do with its &lt;a href="http://en.wikipedia.org/wiki/Intermediate_representation"&gt;IR&lt;/a&gt; trees, but then you might not be able to swap any two arbitrary subtrees.

Using bytecode for everything, mutations simply act on one or more bytes, regardless of whether they represent code or data (or both).  There's also the possibility of evolving a self-modifying program, something which most sane programmers stay as far away from as possible.</description>
		<content:encoded><![CDATA[<p>True, but an expression tree doesn&#8217;t let you do any control flow, which could limit what the solutions could do.  OK, you could use a series of expression trees, sort of like what a compiler might do with its <a href="http://en.wikipedia.org/wiki/Intermediate_representation">IR</a> trees, but then you might not be able to swap any two arbitrary subtrees.</p>
<p>Using bytecode for everything, mutations simply act on one or more bytes, regardless of whether they represent code or data (or both).  There&#8217;s also the possibility of evolving a self-modifying program, something which most sane programmers stay as far away from as possible.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: fluffy</title>
		<link>http://www.kuliniewicz.org/blog/archives/2006/10/15/attack-of-the-underflow/#comment-1044</link>
		<dc:creator>fluffy</dc:creator>
		<pubDate>Wed, 25 Oct 2006 22:19:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.kuliniewicz.org/blog/archives/2006/10/15/attack-of-the-underflow/#comment-1044</guid>
		<description>This is why most GP systems I've seen store the program itself in a tree, with the tree itself representing stack operations, and where executing just involves traversing the tree in a depth-first manner.  This also allows for easy mutation because the only operation you have to support is subtree-swap (since you initially seed your genepool with various primitives like +(0,0), -(0,0), setA(0), etc).

LISP is a pretty common language to use, since mapping s-expressions to a tree is trivial.

I was actually going to comment on this in the previous article but I didn't see it until after I'd updated my RSS feed again.</description>
		<content:encoded><![CDATA[<p>This is why most GP systems I&#8217;ve seen store the program itself in a tree, with the tree itself representing stack operations, and where executing just involves traversing the tree in a depth-first manner.  This also allows for easy mutation because the only operation you have to support is subtree-swap (since you initially seed your genepool with various primitives like +(0,0), -(0,0), setA(0), etc).</p>
<p>LISP is a pretty common language to use, since mapping s-expressions to a tree is trivial.</p>
<p>I was actually going to comment on this in the previous article but I didn&#8217;t see it until after I&#8217;d updated my RSS feed again.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
