<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>BraneCloud Evolution</title><link>http://branecloud.codeplex.com/project/feeds/rss</link><description>Industrial-Strength Evolutionary Computation for .NET 4.0</description><item><title>New Post: Interested in the design decision process for porting to .NET vs using IKVM</title><link>http://branecloud.codeplex.com/discussions/438386</link><description>&lt;div style="line-height: normal;"&gt;Hi jperraud,&lt;br /&gt;
&lt;br /&gt;
The conversion supplied here is meant to be an INITIAL port to native .NET.&lt;br /&gt;
&lt;br /&gt;
It only makes sense for those (such as me) who will wish to CHANGE it in some significant way.&lt;br /&gt;
&lt;br /&gt;
The primary goal for the baseline conversion was to make it functionally &lt;strong&gt;EQUIVALENT&lt;/strong&gt; to the original &lt;strong&gt;ECJ&lt;/strong&gt;. That is, it should be able to parse parameter files used by the original java version and produce similar (if not exact) results.&lt;br /&gt;
&lt;br /&gt;
The main reason I didn't take the conversion any further than what has been posted here, is because the changes I am making in a private fork won't make sense for those targeting different domains. In the future, it is possible I may post more radical changes if the end result might be useful to a broad audience.&lt;br /&gt;
&lt;br /&gt;
Some of the changes I am working on privately include...&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Major refactoring to separate interfaces from plug-in algorithmic implementations and concrete types.&lt;/li&gt;
&lt;li&gt;The widespread use of generics.&lt;/li&gt;
&lt;li&gt;The use of WCF for distributed communications and interaction.&lt;/li&gt;
&lt;li&gt;The use of WF for long-running process logic and state persistence.&lt;/li&gt;
&lt;li&gt;The use of TPL for parallel and asynchronous processing (including Async-Await semantics).&lt;/li&gt;
&lt;li&gt;
Heavy usage of things like Enterprise Library for Logging, Instrumentation, Configuration, and so on.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
On top of all of these fundamental changes, I have need for numerous domain-specific optimizations and capabilities that not everyone would particularly desire. Leaving the conversion in its most basic form, I felt, was the best way to provide a starting point for others who might have completely different objectives.&lt;br /&gt;
&lt;br /&gt;
While &lt;strong&gt;IKVM&lt;/strong&gt; is a great way to take advantage of java libraries that might be useful &amp;quot;as-is&amp;quot;, it doesn't really address my own particular (and perhaps peculiar) requirements.&lt;br /&gt;
&lt;br /&gt;
Regards,&lt;br /&gt;
Ben&lt;br /&gt;
&lt;/div&gt;</description><author>bstabile</author><pubDate>Sun, 14 Apr 2013 16:12:50 GMT</pubDate><guid isPermaLink="false">New Post: Interested in the design decision process for porting to .NET vs using IKVM 20130414041250P</guid></item><item><title>New Post: Interested in the design decision process for porting to .NET vs using IKVM</title><link>http://branecloud.codeplex.com/discussions/438386</link><description>&lt;div style="line-height: normal;"&gt;Hi,&lt;br /&gt;
&lt;br /&gt;
Very interesting work. I wish Codeplex was better at flagging users with new projects of interest...&lt;br /&gt;
&lt;br /&gt;
I am considering ways to reuse existing libraries (ECJ, JMetal, and others) from a C# metaheuristics framework of mine, so your project caught my attention. My framework is largely meant as a consistent set of pattern in C# and I have no intention nor time to reimplement the algorithms.&lt;br /&gt;
&lt;br /&gt;
You mention in the project description that you do need a C# port, but some users may not. I'd be very interested in the design criteria you have and in particular whether you considered using IKVM and found out difficulties or missed on some C#/.NET idioms, hence the port to C#. I'd just like not to rediscover something you already found out.&lt;br /&gt;
&lt;br /&gt;
Regards&lt;br /&gt;
&lt;/div&gt;</description><author>jperraud</author><pubDate>Thu, 28 Mar 2013 22:38:21 GMT</pubDate><guid isPermaLink="false">New Post: Interested in the design decision process for porting to .NET vs using IKVM 20130328103821P</guid></item><item><title>Commented Issue: tmp_s.ToUpper() throws a NullReferenceException [15309]</title><link>http://branecloud.codeplex.com/workitem/15309</link><description>&amp;#60;p&amp;#62;Evolve.cs Line  441 &amp;#38;quot&amp;#59;else if &amp;#40;V_SEED_TIME.ToUpper&amp;#40;&amp;#41;.Equals&amp;#40;tmp_s.ToUpper&amp;#40;&amp;#41;&amp;#41; &amp;#124;&amp;#124; &amp;#40;tmp_s &amp;#61;&amp;#61; null &amp;#38;amp&amp;#59;&amp;#38;amp&amp;#59; auto&amp;#41;&amp;#41;&amp;#38;quot&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;&amp;#38;nbsp&amp;#59;&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&amp;#60;p&amp;#62;You have to flip the conditions of the &amp;#38;quot&amp;#59;or&amp;#38;quot&amp;#59; because when &amp;#38;quot&amp;#59;tmp_s&amp;#38;quot&amp;#59; is null it crashes with a NullReferenceException when trying to call ToUpper&amp;#40;&amp;#41; of null,&amp;#60;&amp;#47;p&amp;#62;&lt;br /&gt;&lt;br /&gt;Comments: ** Comment from web user: bstabile ** &lt;p&gt;Aronmek,&lt;/p&gt;&lt;p&gt;Thanks for reporting this bug. &lt;/p&gt;&lt;p&gt;In &amp;quot;Alpha3&amp;quot; (under construction), many changes will be included, both to the original source ECJ repository code, and to this converted C# fork.&lt;/p&gt;&lt;p&gt;Now there is a &amp;quot;Null Guard&amp;quot; that throws an exception right away if the seed isn't set in the default parameters (or overridden in later params specifications, or set automatically). In other words, if the framework hasn't initialized this somewhere, it causes an &amp;quot;intentional&amp;quot; exception.&lt;/p&gt;&lt;p&gt;Alpha 3 is in the works, but I don't want to release anything to fix small conversion anomalies such as this. Rest assured, there are much bigger things to deal with as the fork takes on extensive .NET reconstruction, to exploit platform specific features.&lt;/p&gt;&lt;p&gt;Again, let me thank you for spotting the bug, but you'll be happy, I hope, to know that much bigger fish are being fried behind the scenes.&lt;/p&gt;&lt;p&gt;Regards,&lt;/p&gt;&lt;p&gt;bstabile&lt;/p&gt;</description><author>bstabile</author><pubDate>Tue, 09 Oct 2012 00:12:14 GMT</pubDate><guid isPermaLink="false">Commented Issue: tmp_s.ToUpper() throws a NullReferenceException [15309] 20121009121214A</guid></item><item><title>Source code checked in, #96133</title><link>http://branecloud.codeplex.com/SourceControl/changeset/changes/96133</link><description>Upgrade&amp;#58; New Version of LabDefaultTemplate.xaml. To upgrade your build definitions, please visit the following link&amp;#58; http&amp;#58;&amp;#47;&amp;#47;go.microsoft.com&amp;#47;fwlink&amp;#47;&amp;#63;LinkId&amp;#61;254563</description><author>Project Collection Service Accounts</author><pubDate>Mon, 01 Oct 2012 21:40:31 GMT</pubDate><guid isPermaLink="false">Source code checked in, #96133 20121001094031P</guid></item><item><title>Source code checked in, #96132</title><link>http://branecloud.codeplex.com/SourceControl/changeset/changes/96132</link><description>Checked in by server upgrade</description><author>Project Collection Service Accounts</author><pubDate>Mon, 01 Oct 2012 21:33:03 GMT</pubDate><guid isPermaLink="false">Source code checked in, #96132 20121001093303P</guid></item><item><title>Updated Wiki: Home</title><link>http://branecloud.codeplex.com/wikipage?version=92</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Project Description&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Industrial-Strength Evolutionary Computation for .NET 4.0&lt;/h3&gt;
&lt;h5&gt;This is an independent port of &lt;strong&gt;&lt;a href="http://www.cs.gmu.edu/~eclab/projects/ecj/"&gt;Sean Luke's venerable ECJ project (GMU EC Lab) Version 20&lt;/a&gt;&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;&lt;br&gt;
&lt;strong&gt;NOTE: This conversion to C# cannot and will not in any way be supported by Sean or any other member of his team at GMU. Please do not even ask! It is incredible that software of this caliber is made available in open-source form, and that is more than
 enough support! &lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
It is hard to imagine how many hours Sean and his team have put into this over the course of
&lt;strong&gt;13 years&lt;/strong&gt;. But suffice it to say: &lt;br&gt;
&lt;strong&gt;ECJ is an 800 lb Gorilla in the realm of Evolutionary Computation and Stochastic Optimization&lt;/strong&gt;.
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;MILD WARNING: ECJ&lt;/strong&gt; is used for some very serious business (and this C# version has, or will shortly have, all of the same capabilities).
&lt;em&gt;But you don't need to get scared off by that&lt;/em&gt;. A comprehensive collection of samples is provided with
&lt;strong&gt;ECJ&lt;/strong&gt;, and the documentation that you can browse on &lt;strong&gt;Sean's&lt;/strong&gt; site covers all of the basics and well beyond. I highly recommend that newbies work with
&lt;strong&gt;ECJ&lt;/strong&gt; in &lt;strong&gt;JAVA&lt;/strong&gt; before you decide if this converted fork makes sense for you. The need for tight native .NET platform integration is potentially uncalled for, and you must ask yourself,
&lt;strong&gt;&amp;quot;Do I really Need This?&amp;quot;. Chances are, you don't.&lt;/strong&gt; But I personally really
&lt;em&gt;DO&lt;/em&gt; need this, and I&amp;rsquo;m happy to spare others with similar requirements all of the heavy lifting required to get it this far.
&lt;em&gt;Trust me, it is a DAUNTING challenge to preserve delicate algorithms when there are so many moving parts.&lt;/em&gt;
&lt;br&gt;
&lt;br&gt;
I have made all of the samples bundled in the original Java version equally accessible to those of you who need orientation in C#. Each sample is set up as a bare-bones console app that you can &amp;quot;fiddle&amp;quot; with to your heart's content. But also, and this is something
 that is &lt;em&gt;NOT&lt;/em&gt; provided in the original software, there are &lt;strong&gt;&lt;span style="color:#ff0000"&gt;over 500 unit tests&lt;/span&gt;&lt;/strong&gt; that I wrote during the conversion process. This turns out to be quite a useful side-effect of going through the whole
 torturous exercise in the first place! These tests, although perhaps still a little incoherent in places (because they focus on specific conversion issues), make it even easier to dig deep without stumbling around in total bewilderment (well, you may still
 stumble around, but they do provide a bit of a handrail to lean on when you start feeling sick to your stomach). \'-)
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Side Note: &lt;em&gt;There are likely to wind up being several &lt;span style="color:#ff0000"&gt;
thousands of tests&lt;/span&gt; associated with this software. I only covered what was causing difficulty during the conversion process, and that is but a small fraction of the full coverage this software deserves. (&amp;quot;sheesh&amp;quot;, as Sean is wont to say, I must be freaking
 crazy!)&lt;/em&gt;&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
If you are not familiar with the purpose of this software, you can purchase Sean's excellent book entitled
&lt;strong&gt;&lt;a href="http://www.lulu.com/product/paperback/essentials-of-metaheuristics/15028803"&gt;The Essentials of Metaheuristics&lt;/a&gt;&lt;/strong&gt; (or download the electronic version for free). You can also find numerous articles and academic papers on the website
 listed above, covering a variety of related topics. If you plan on doing really serious work in this field, you might also consider starting out with the early works of
&lt;strong&gt;&lt;a href="http://www.genetic-programming.com/johnkoza.html"&gt;John Koza (Genetic Programming I, II, et al)&lt;/a&gt;&lt;/strong&gt; and then move on through the ever-expanding body of research that grew from there. Or if you
&lt;em&gt;really&lt;/em&gt; get serious about this stuff, you will probably want to start all the way back with
&lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/John_Henry_Holland"&gt;John Holland&lt;/a&gt;&lt;/strong&gt;, who as many of you may already know, is generally considered the &amp;quot;father&amp;quot; of research into the field of
&lt;strong&gt;Genetic Algorithms&lt;/strong&gt;. &lt;br&gt;
&lt;br&gt;
&lt;strong&gt;ECJ&lt;/strong&gt; targets &lt;strong&gt;Java&lt;/strong&gt;, because large scale evolutionary processes often need to interoperate seamlessly between workstations, which may or may not be hosting Windows, and back-end &amp;quot;heavy metal&amp;quot; hosting one of the
&lt;strong&gt;UNIX/LINUX&lt;/strong&gt; variants. Such environments are typical in many large enterprise and academic research settings, as you all well know (or know all too well!). If that kind of heterogeneous environment describes where
&lt;em&gt;YOU&lt;/em&gt; develop complex systems to solve difficult problems, then you will definitely want to trot on over to Sean's lab and familiarize yourself with the
&lt;strong&gt;Java&lt;/strong&gt; &amp;quot;source&amp;quot; code. &lt;br&gt;
&lt;br&gt;
On the other hand..., if you develop your software for homogenous environments with
&lt;strong&gt;Windows7 and Server 2003/2008/2008R2&lt;/strong&gt;, then you may want to consider downloading the converted
&lt;strong&gt;Open Source&lt;/strong&gt; &lt;strong&gt;C#&lt;/strong&gt; code hosted here to take full advantage of tight integration with the latest features provided by
&lt;strong&gt;.NET 4.0&lt;/strong&gt;. &lt;br&gt;
&lt;br&gt;
Obviously I won't be able to deliver anywhere near the same level of support that a dedicated team can provide (almost none at all in fact). But if you are willing to work hard at it, or if you just want to experiment with the basics, everything you need to
 go the full distance is (or will shortly be) available in the download. I didn't leave anything out. But I should repeat the warning given above: some things have
&lt;em&gt;NOT YET&lt;/em&gt; been covered in the unit tests. I haven't had the time, for example, to test whether the Master / Slave communications are working (it uses simple sockets, so I'm not too worried about that, because I'll be migrating it to WCF4). Same goes
 for Island Exchange for speciation, coevolution, and maybe another thing or two. The
&lt;strong&gt;ECJ&lt;/strong&gt; team was actively revamping some of the code for a robotics exercise while I was still in the middle of the conversion. Those gaps in coverage will be closed in due course.
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;I'll also revisit the ECJ SVN repository in coming weeks to pick up any new bits that show up and integrate any bug fixes and significant changes.&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
The goal for this project is to try and deliver a conversion of the latest bits as they accrue in
&lt;strong&gt;ECJ&lt;/strong&gt;, while maintaining a robust and flexible platform on which to develop in
&lt;strong&gt;C#, F#, IronPython, IronRuby, VB.NET&lt;/strong&gt; and so on. I will also be keeping my eye out for other juicy plums that will integrate nicely with this software. In fact,
&lt;strong&gt;ECJ&lt;/strong&gt; has a sibling project for &lt;strong&gt;&amp;quot;Multi-Agent Simulation of Neighborhoods, or Networks (or something)&amp;quot; (aka MASON)&lt;/strong&gt; that fits the bill perfectly&amp;nbsp;(&amp;quot;sheesh&amp;quot;, I must be out of my freaking mind!). And integration with
&lt;strong&gt;&lt;a href="http://research.microsoft.com/en-us/collaboration/tools/trident.aspx"&gt;Microsoft's Project Trident&lt;/a&gt;&lt;/strong&gt; collaborative scientific research platform seems like a
&lt;strong&gt;yes&lt;em&gt;-braner&lt;/em&gt;&lt;/strong&gt;. But there are also many other interesting possibilities.
&lt;strong&gt;Stay tuned!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE: This software is a central feature in a much larger development picture that is partially laid out in the
&lt;a href="http://branecloud.codeplex.com/wikipage?title=Vision&amp;version=8"&gt;Vision&lt;/a&gt; statement. Additional information will be made available in the
&lt;a href="http://branecloud.codeplex.com/documentation"&gt;Documentation&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;BTW: BraneCloud&lt;/strong&gt; is linked to a registered domain (net|com) for future things like
&lt;strong&gt;name/schema&lt;/strong&gt; resolution in the &lt;strong&gt;cloud&lt;/strong&gt;. So the only thing I ask if you want to derive your own fork from this one is that you
&lt;strong&gt;please use a different root namespace&lt;/strong&gt; to avoid collisions. Other that that, you are free to do with this what you will, so long as it abides by the stated licensing terms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ECJ License (AFL 3.0)&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;BraneCloud.Evolution.EC (Apache 2.0)&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;(Sean informs me that he may eventually be switching to the Apache license when he gets around to it.)&lt;/em&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>bstabile</author><pubDate>Thu, 26 Jul 2012 03:05:07 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20120726030507A</guid></item><item><title>Updated Wiki: Home</title><link>http://branecloud.codeplex.com/wikipage?version=91</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Project Description&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Industrial-Strength Evolutionary Computation for .NET 4.0&lt;/h3&gt;
&lt;h5&gt;This is an independent port of &lt;strong&gt;&lt;a href="http://www.cs.gmu.edu/~eclab/projects/ecj/"&gt;Sean Luke's venerable ECJ project (GMU EC Lab) Version 20&lt;/a&gt;&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;&lt;br&gt;
&lt;strong&gt;NOTE: This conversion to C# cannot and will not in any way be supported by Sean or any other member of his team at GMU. Please do not even ask! It is incredible that software of this caliber is made available in open-source form, and that is more than
 enough support! &lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
It is hard to imagine how many hours Sean and his team have put into this over the course of
&lt;strong&gt;13 years&lt;/strong&gt;. But suffice it to say: &lt;br&gt;
&lt;strong&gt;ECJ is an 800 lb Gorilla in the realm of Evolutionary Computation and Stochastic Optimization&lt;/strong&gt;.
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;MILD WARNING: ECJ&lt;/strong&gt; is used for some very serious business (and this C# version has, or will shortly have, all of the same capabilities).
&lt;em&gt;But you don't need to get scared off by that&lt;/em&gt;. A comprehensive collection of samples is provided with
&lt;strong&gt;ECJ&lt;/strong&gt;, and the documentation that you can browse on &lt;strong&gt;Sean's&lt;/strong&gt; site covers all of the basics and well beyond. I highly recommend that newbies work with
&lt;strong&gt;ECJ&lt;/strong&gt; in &lt;strong&gt;JAVA&lt;/strong&gt; before you decide if this converted fork makes sense for you. The need for tight native .NET platform integration is potentially uncalled for, and you must ask yourself,
&lt;strong&gt;&amp;quot;Do I really Need This?&amp;quot;. Chances are, you don't.&lt;/strong&gt; But I personally really
&lt;em&gt;DO&lt;/em&gt; need this, and I&amp;rsquo;m happy to spare others with similar requirements all of the heavy lifting required to get it this far.
&lt;em&gt;Trust me, it is a DAUNTING challenge to preserve delicate algorithms when there are so many moving parts.&lt;/em&gt;
&lt;br&gt;
&lt;br&gt;
I have made all of the samples bundled in the original Java version equally accessible to those of you who need orientation in C#. Each sample is set up as a bare-bones console app that you can &amp;quot;fiddle&amp;quot; with to your heart's content. But also, and this is something
 that is &lt;em&gt;NOT&lt;/em&gt; provided in the original software, there are &lt;strong&gt;&lt;span style="color:#ff0000"&gt;over 500 unit tests&lt;/span&gt;&lt;/strong&gt; that I wrote during the conversion process. This turns out to be quite a useful side-effect of going through the whole
 torturous exercise in the first place! These tests, although perhaps still a little incoherent in places (because they focus on specific conversion issues), make it even easier to dig deep without stumbling around in total bewilderment (well, you may still
 stumble around, but they do provide a bit of a handrail to lean on when you start feeling sick to your stomach). \'-)
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Side Note: &lt;em&gt;There are likely to wind up being several &lt;span style="color:#ff0000"&gt;
thousands of tests&lt;/span&gt; associated with this software. I only covered what was causing difficulty during the conversion process, and that is but a small fraction of the full coverage this software deserves. (&amp;quot;sheesh&amp;quot;, as Sean is wont to say, I must be freaking
 crazy!)&lt;/em&gt;&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
If you are not familiar with the purpose of this software, you can purchase Sean's excellent book entitled
&lt;strong&gt;&lt;a href="http://www.lulu.com/product/paperback/essentials-of-metaheuristics/15028803"&gt;The Essentials of Metaheuristics&lt;/a&gt;&lt;/strong&gt; (or download the electronic version for free). You can also find numerous articles and academic papers on the website
 listed above, covering a variety of related topics. If you plan on doing really serious work in this field, you might also consider starting out with the early works of
&lt;strong&gt;&lt;a href="http://www.genetic-programming.com/johnkoza.html"&gt;John Koza (Genetic Programming I, II, et al)&lt;/a&gt;&lt;/strong&gt; and then move on through the ever-expanding body of research that grew from there. Or if you
&lt;em&gt;really&lt;/em&gt; get serious about this stuff, you will probably want to start all the way back with
&lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/John_Henry_Holland"&gt;John Holland&lt;/a&gt;&lt;/strong&gt;, who as many of you may already know, is generally considered the &amp;quot;father&amp;quot; of research into the field of
&lt;strong&gt;Genetic Algorithms&lt;/strong&gt;. &lt;br&gt;
&lt;br&gt;
&lt;strong&gt;ECJ&lt;/strong&gt; targets &lt;strong&gt;Java&lt;/strong&gt;, because large scale evolutionary processes often need to interoperate seamlessly between workstations, which may or may not be hosting Windows, and back-end &amp;quot;heavy metal&amp;quot; hosting one of the
&lt;strong&gt;UNIX/LINUX&lt;/strong&gt; variants. Such environments are typical in many large enterprise and academic research settings, as you all well know (or know all too well!). If that kind of heterogeneous environment describes where
&lt;em&gt;YOU&lt;/em&gt; develop complex systems to solve difficult problems, then you will definitely want to trot on over to Sean's lab and familiarize yourself with the
&lt;strong&gt;Java&lt;/strong&gt; &amp;quot;source&amp;quot; code. &lt;br&gt;
&lt;br&gt;
On the other hand..., if you develop your software for homogenous environments with
&lt;strong&gt;Windows7 and Server 2003/2008/2008R2&lt;/strong&gt;, then you may want to consider downloading the converted
&lt;strong&gt;Open Source&lt;/strong&gt; &lt;strong&gt;C#&lt;/strong&gt; code hosted here to take full advantage of tight integration with the latest features provided by
&lt;strong&gt;.NET 4.0&lt;/strong&gt;. &lt;br&gt;
&lt;br&gt;
Obviously I won't be able to deliver anywhere near the same level of support that a dedicated team can provide (almost none at all in fact). But if you are willing to work hard at it, or if you just want to experiment with the basics, everything you need to
 go the full distance is (or will shortly be) available in the download. I didn't leave anything out. But I should repeat the warning given above: some things have
&lt;em&gt;NOT YET&lt;/em&gt; been covered in the unit tests. I haven't had the time, for example, to test whether the Master / Slave communications are working (it uses simple sockets, so I'm not too worried about that, because I'll be migrating it to WCF4). Same goes
 for Island Exchange for speciation, coevolution, and maybe another thing or two. The
&lt;strong&gt;ECJ&lt;/strong&gt; team was actively revamping some of the code for a robotics exercise while I was still in the middle of the conversion. Those gaps in coverage will be closed in due course.
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;I'll also revisit the ECJ SVN repository in coming weeks to pick up any new bits that show up and integrate any bug fixes and significant changes.&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
The goal for this project is to try and deliver a conversion of the latest bits as they accrue in
&lt;strong&gt;ECJ&lt;/strong&gt;, while maintaining a robust and flexible platform on which to develop in
&lt;strong&gt;C#, F#, IronPython, IronRuby, VB.NET&lt;/strong&gt; and so on. I will also be keeping my eye out for other juicy plums that will integrate nicely with this software. In fact,
&lt;strong&gt;ECJ&lt;/strong&gt; has a sibling project for &lt;strong&gt;&amp;quot;Multi-Agent Simulation of Neighborhoods, or Networks (or something)&amp;quot; (aka MASON)&lt;/strong&gt; that fits the bill perfectly&amp;nbsp;(&amp;quot;sheesh&amp;quot;, I must be out of my freaking mind!). And integration with
&lt;strong&gt;&lt;a href="http://research.microsoft.com/en-us/collaboration/tools/trident.aspx"&gt;Microsoft's Project Trident&lt;/a&gt;&lt;/strong&gt; collaborative scientific research platform seems like a yes&lt;em&gt;-braner&lt;/em&gt;. But there are also many other interesting possibilities.
&lt;strong&gt;Stay tuned!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE: This software is a central feature in a much larger development picture that is partially laid out in the
&lt;a href="http://branecloud.codeplex.com/wikipage?title=Vision&amp;version=8"&gt;Vision&lt;/a&gt; statement. Additional information will be made available in the
&lt;a href="http://branecloud.codeplex.com/documentation"&gt;Documentation&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;BTW: BraneCloud&lt;/strong&gt; is linked to a registered domain (net|com) for future things like
&lt;strong&gt;name/schema&lt;/strong&gt; resolution in the &lt;strong&gt;cloud&lt;/strong&gt;. So the only thing I ask if you want to derive your own fork from this one is that you
&lt;strong&gt;please use a different root namespace&lt;/strong&gt; to avoid collisions. Other that that, you are free to do with this what you will, so long as it abides by the stated licensing terms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ECJ License (AFL 3.0)&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;BraneCloud.Evolution.EC (Apache 2.0)&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;(Sean informs me that he may eventually be switching to the Apache license when he gets around to it.)&lt;/em&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>bstabile</author><pubDate>Thu, 26 Jul 2012 03:02:11 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20120726030211A</guid></item><item><title>Created Issue: tmp_s.ToUpper() throws a NullReferenceException [15309]</title><link>http://branecloud.codeplex.com/workitem/15309</link><description>Evolve.cs Line  441 &amp;#34;else if &amp;#40;V_SEED_TIME.ToUpper&amp;#40;&amp;#41;.Equals&amp;#40;tmp_s.ToUpper&amp;#40;&amp;#41;&amp;#41; &amp;#124;&amp;#124; &amp;#40;tmp_s &amp;#61;&amp;#61; null &amp;#38;&amp;#38; auto&amp;#41;&amp;#41;&amp;#34;&lt;br /&gt;&lt;br /&gt;You have to flip the conditions of the &amp;#34;or&amp;#34; because when &amp;#34;tmp_s&amp;#34; is null it crashes with a NullReferenceException when trying to call ToUpper&amp;#40;&amp;#41; of null,&lt;br /&gt;</description><author>aronmek</author><pubDate>Mon, 18 Jun 2012 22:11:42 GMT</pubDate><guid isPermaLink="false">Created Issue: tmp_s.ToUpper() throws a NullReferenceException [15309] 20120618101142P</guid></item><item><title>Updated Wiki: Home</title><link>http://branecloud.codeplex.com/wikipage?version=90</link><description>&lt;div class="wikidoc"&gt;
&lt;p&gt;&lt;strong&gt;Project Description&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Industrial-Strength Evolutionary Computation for .NET 4.0&lt;/h3&gt;
&lt;h5&gt;This is an independent port of &lt;strong&gt;&lt;a href="http://www.cs.gmu.edu/~eclab/projects/ecj/"&gt;Sean Luke's venerable ECJ project (GMU EC Lab) Version 20&lt;/a&gt;&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;&lt;br&gt;
&lt;strong&gt;NOTE: This conversion to C# cannot and will not in any way be supported by Sean or any other member of his team at GMU. Please do not even ask! It is incredible that software of this caliber is made available in open-source form, and that is more than
 enough support! &lt;/strong&gt;&lt;br&gt;
&lt;br&gt;
It is hard to imagine how many hours Sean and his team have put into this over the course of
&lt;strong&gt;13 years&lt;/strong&gt;. But suffice it to say: &lt;br&gt;
&lt;strong&gt;ECJ is an 800 lb Gorilla in the realm of Evolutionary Computation and Stochastic Optimization&lt;/strong&gt;.
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;MILD WARNING: ECJ&lt;/strong&gt; is used for some very serious business (and this C# version has, or will shortly have, all of the same capabilities).
&lt;em&gt;But you don't need to get scared off by that&lt;/em&gt;. A comprehensive collection of samples is provided with
&lt;strong&gt;ECJ&lt;/strong&gt;, and the documentation that you can browse on &lt;strong&gt;Sean's&lt;/strong&gt; site covers all of the basics and well beyond. I highly recommend that newbies work with
&lt;strong&gt;ECJ&lt;/strong&gt; in &lt;strong&gt;JAVA&lt;/strong&gt; before you decide if this converted fork makes sense for you. The need for tight native .NET platform integration is potentially uncalled for, and you must ask yourself,
&lt;strong&gt;&amp;quot;Do I really Need This?&amp;quot;. Chances are, you don't.&lt;/strong&gt; But I personally really
&lt;em&gt;DO&lt;/em&gt; need this, and I&amp;rsquo;m happy to spare others with similar requirements all of the heavy lifting required to get it this far.
&lt;em&gt;Trust me, it is a DAUNTING challenge to preserve delicate algorithms when there are so many moving parts.&lt;/em&gt;
&lt;br&gt;
&lt;br&gt;
I have made all of the samples bundled in the original Java version equally accessible to those of you who need orientation in C#. Each sample is set up as a bare-bones console app that you can &amp;quot;fiddle&amp;quot; with to your heart's content. But also, and this is something
 that is &lt;em&gt;NOT&lt;/em&gt; provided in the original software, there are &lt;strong&gt;&lt;span style="color:#ff0000"&gt;over 500 unit tests&lt;/span&gt;&lt;/strong&gt; that I wrote during the conversion process. This turns out to be quite a useful side-effect of going through the whole
 torturous exercise in the first place! These tests, although perhaps still a little incoherent in places (because they focus on specific conversion issues), make it even easier to dig deep without stumbling around in total bewilderment (well, you may still
 stumble around, but they do provide a bit of a handrail to lean on when you start feeling sick to your stomach). \'-)
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;Side Note: &lt;em&gt;There are likely to wind up being several &lt;span style="color:#ff0000"&gt;
thousands of tests&lt;/span&gt; associated with this software. I only covered what was causing difficulty during the conversion process, and that is but a small fraction of the full coverage this software deserves. (&amp;quot;sheesh&amp;quot;, as Sean is wont to say, I must be freaking
 crazy!)&lt;/em&gt;&lt;/strong&gt; &lt;br&gt;
&lt;br&gt;
If you are not familiar with the purpose of this software, you can purchase Sean's excellent book entitled
&lt;strong&gt;&lt;a href="http://www.lulu.com/product/paperback/essentials-of-metaheuristics/15028803"&gt;The Essentials of Metaheuristics&lt;/a&gt;&lt;/strong&gt; (or download the electronic version for free). You can also find numerous articles and academic papers on the website
 listed above, covering a variety of related topics. If you plan on doing really serious work in this field, you might also consider starting out with the early works of
&lt;strong&gt;&lt;a href="http://www.genetic-programming.com/johnkoza.html"&gt;John Koza (Genetic Programming I, II, et al)&lt;/a&gt;&lt;/strong&gt; and then move on through the ever-expanding body of research that grew from there. Or if you
&lt;em&gt;really&lt;/em&gt; get serious about this stuff, you will probably want to start all the way back with
&lt;strong&gt;&lt;a href="http://en.wikipedia.org/wiki/John_Henry_Holland"&gt;John Holland&lt;/a&gt;&lt;/strong&gt;, who as many of you may already know, is generally considered the &amp;quot;father&amp;quot; of research into the field of
&lt;strong&gt;Genetic Algorithms&lt;/strong&gt;. &lt;br&gt;
&lt;br&gt;
&lt;strong&gt;ECJ&lt;/strong&gt; targets &lt;strong&gt;Java&lt;/strong&gt;, because large scale evolutionary processes often need to interoperate seamlessly between workstations, which may or may not be hosting Windows, and back-end &amp;quot;heavy metal&amp;quot; hosting one of the
&lt;strong&gt;UNIX/LINUX&lt;/strong&gt; variants. Such environments are typical in many large enterprise and academic research settings, as you all well know (or know all too well!). If that kind of heterogeneous environment describes where
&lt;em&gt;YOU&lt;/em&gt; develop complex systems to solve difficult problems, then you will definitely want to trot on over to Sean's lab and familiarize yourself with the
&lt;strong&gt;Java&lt;/strong&gt; &amp;quot;source&amp;quot; code. &lt;br&gt;
&lt;br&gt;
On the other hand..., if you develop your software for homogenous environments with
&lt;strong&gt;Windows7 and Server 2003/2008/2008R2&lt;/strong&gt;, then you may want to consider downloading the converted
&lt;strong&gt;Open Source&lt;/strong&gt; &lt;strong&gt;C#&lt;/strong&gt; code hosted here to take full advantage of tight integration with the latest features provided by
&lt;strong&gt;.NET 4.0&lt;/strong&gt;. &lt;br&gt;
&lt;br&gt;
Obviously I won't be able to deliver anywhere near the same level of support that a dedicated team can provide (almost none at all in fact). But if you are willing to work hard at it, or if you just want to experiment with the basics, everything you need to
 go the full distance is (or will shortly be) available in the download. I didn't leave anything out. But I should repeat the warning given above: some things have
&lt;em&gt;NOT YET&lt;/em&gt; been covered in the unit tests. I haven't had the time, for example, to test whether the Master / Slave communications are working (it uses simple sockets, so I'm not too worried about that, because I'll be migrating it to WCF4). Same goes
 for Island Exchange for speciation, coevolution, and maybe another thing or two. The
&lt;strong&gt;ECJ&lt;/strong&gt; team was actively revamping some of the code for a robotics exercise while I was still in the middle of the conversion. Those gaps in coverage will be closed in due course.
&lt;br&gt;
&lt;br&gt;
&lt;strong&gt;I'll also revisit the ECJ SVN repository in coming weeks to pick up any new bits that show up and integrate any bug fixes and significant changes.&lt;/strong&gt;
&lt;br&gt;
&lt;br&gt;
The goal for this project is to try and deliver a conversion of the latest bits as they accrue in
&lt;strong&gt;ECJ&lt;/strong&gt;, while maintaining a robust and flexible platform on which to develop in
&lt;strong&gt;C#, F#, IronPython, IronRuby, VB.NET&lt;/strong&gt; and so on. I will also be keeping my eye out for other juicy plums that will integrate nicely with this software. In fact,
&lt;strong&gt;ECJ&lt;/strong&gt; has a sibling project for &lt;strong&gt;&amp;quot;Multi-Agent Simulation of Neighborhoods, or Networks (or something)&amp;quot; (aka MASON)&lt;/strong&gt; that fits the bill perfectly&amp;nbsp;(&amp;quot;sheesh&amp;quot;, I must be out of my freaking mind!). And integration with
&lt;strong&gt;&lt;a href="http://research.microsoft.com/en-us/collaboration/tools/trident.aspx"&gt;Microsoft's Project Trident&lt;/a&gt;&lt;/strong&gt; collaborative scientific research platform seems like a
&lt;em&gt;no-brainer&lt;/em&gt;. But there are also many other interesting possibilities. &lt;strong&gt;
Stay tuned!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE: This software is a central feature in a much larger development picture that is partially laid out in the
&lt;a href="http://branecloud.codeplex.com/wikipage?title=Vision&amp;version=8"&gt;Vision&lt;/a&gt; statement. Additional information will be made available in the
&lt;a href="http://branecloud.codeplex.com/documentation"&gt;Documentation&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;BTW: BraneCloud&lt;/strong&gt; is linked to a registered domain (net|com) for future things like
&lt;strong&gt;name/schema&lt;/strong&gt; resolution in the &lt;strong&gt;cloud&lt;/strong&gt;. So the only thing I ask if you want to derive your own fork from this one is that you
&lt;strong&gt;please use a different root namespace&lt;/strong&gt; to avoid collisions. Other that that, you are free to do with this what you will, so long as it abides by the stated licensing terms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ECJ License (AFL 3.0)&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;BraneCloud.Evolution.EC (Apache 2.0)&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;(Sean informs me that he may eventually be switching to the Apache license when he gets around to it.)&lt;/em&gt;
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>bstabile</author><pubDate>Thu, 24 May 2012 18:55:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20120524065541P</guid></item><item><title>Updated Release: BraneCloud.Evolution.EC.2.0.Alpha2 (Apr 10, 2012)</title><link>http://branecloud.codeplex.com/releases/view/85844</link><description>&lt;div class="wikidoc"&gt;Fix for GeneVectorIndividual - Setter for GenomeLength - Filling &amp;quot;genome&amp;quot; should have been filling &amp;quot;newGenome&amp;quot; when the new length is greater than the old length.&lt;br /&gt;&lt;br /&gt;Bug Report filed with ECJ team.&lt;br /&gt;&lt;br /&gt;NOTE: If you encounter initial build errors, simply build again. The errors are probably thrown because Visual Studio Multi-Core optimization is enabled.&lt;br /&gt;&lt;br /&gt;BRS&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>bstabile</author><pubDate>Thu, 24 May 2012 18:50:12 GMT</pubDate><guid isPermaLink="false">Updated Release: BraneCloud.Evolution.EC.2.0.Alpha2 (Apr 10, 2012) 20120524065012P</guid></item><item><title>Released: BraneCloud.Evolution.EC.2.0.Alpha2 (Apr 10, 2012)</title><link>http://branecloud.codeplex.com/releases/view/85844</link><description>
&lt;div class="wikidoc"&gt;Fix for GeneVectorIndividual - Setter for GenomeLength - Filling &amp;quot;genome&amp;quot; should have been filling &amp;quot;newGenome&amp;quot; when the new length is greater than the old length.&lt;br&gt;
&lt;br&gt;
Bug Report filed with ECJ team.&lt;br&gt;
&lt;br&gt;
NOTE: If you encounter initial build errors, simply build again. The errors are probably thrown because Visual Studio Multi-Core optimization is enabled.&lt;br&gt;
&lt;br&gt;
BRS&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Thu, 24 May 2012 18:50:12 GMT</pubDate><guid isPermaLink="false">Released: BraneCloud.Evolution.EC.2.0.Alpha2 (Apr 10, 2012) 20120524065012P</guid></item><item><title>Updated Release: BraneCloud.Evolution.EC.2.0.Alpha2 (Apr 10, 2012)</title><link>http://branecloud.codeplex.com/releases/view/85844</link><description>&lt;div class="wikidoc"&gt;Fix for GeneVectorIndividual - Setter for GenomeLength - Filling &amp;quot;genome&amp;quot; should have been filling &amp;quot;newGenome&amp;quot; when the new length is greater than the old length.&lt;br /&gt;&lt;br /&gt;Bug Report filed with ECJ team.&lt;br /&gt;&lt;br /&gt;BRS&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>bstabile</author><pubDate>Wed, 11 Apr 2012 01:24:01 GMT</pubDate><guid isPermaLink="false">Updated Release: BraneCloud.Evolution.EC.2.0.Alpha2 (Apr 10, 2012) 20120411012401A</guid></item><item><title>Released: BraneCloud.Evolution.EC.2.0.Alpha2 (Apr 10, 2012)</title><link>http://branecloud.codeplex.com/releases/view/85844</link><description>
&lt;div class="wikidoc"&gt;Fix for GeneVectorIndividual - Setter for GenomeLength - Filling &amp;quot;genome&amp;quot; should have been filling &amp;quot;newGenome&amp;quot; when the new length is greater than the old length.&lt;br&gt;
&lt;br&gt;
Bug Report filed with ECJ team.&lt;br&gt;
&lt;br&gt;
BRS&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</description><author></author><pubDate>Wed, 11 Apr 2012 01:24:01 GMT</pubDate><guid isPermaLink="false">Released: BraneCloud.Evolution.EC.2.0.Alpha2 (Apr 10, 2012) 20120411012401A</guid></item><item><title>Created Release: BraneCloud.Evolution.EC.2.0.Alpha2 (Apr 10, 2012)</title><link>http://branecloud.codeplex.com/releases?ReleaseId=85844</link><description>&lt;div class="wikidoc"&gt;Fix for GeneVectorIndividual - Setter for GenomeLength - Filling &amp;quot;genome&amp;quot; should have been filling &amp;quot;newGenome&amp;quot; when the new length is greater than the old length.&lt;br /&gt;&lt;br /&gt;Bug Report filed with ECJ team.&lt;br /&gt;&lt;br /&gt;BRS&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>bstabile</author><pubDate>Wed, 11 Apr 2012 01:22:55 GMT</pubDate><guid isPermaLink="false">Created Release: BraneCloud.Evolution.EC.2.0.Alpha2 (Apr 10, 2012) 20120411012255A</guid></item><item><title>New Post: Bug Report</title><link>http://branecloud.codeplex.com/discussions/350151</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Roey,&lt;/p&gt;
&lt;p&gt;You are right! I've reported the bug to the ECJ team, and I'll try and post a new version here as soon as I have a smidgen of free time.&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;p&gt;Ben&lt;/p&gt;&lt;/div&gt;</description><author>bstabile</author><pubDate>Tue, 10 Apr 2012 17:05:06 GMT</pubDate><guid isPermaLink="false">New Post: Bug Report 20120410050506P</guid></item><item><title>New Post: Bug Report</title><link>https://branecloud.codeplex.com/discussions/350151</link><description>&lt;div style="line-height: normal;"&gt;
&lt;p&gt;I think I found a bug in GeneVectorIndividual.cs in GenomeLength setter the original code is:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var s = (GeneVectorSpecies)Species;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var newGenome = new VectorGene[value];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Array.Copy(genome, 0, newGenome, 0, genome.Length &amp;lt; newGenome.Length ? genome.Length : newGenome.Length);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var x = genome.Length; x &amp;lt; newGenome.Length; x&amp;#43;&amp;#43;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:#ff0000"&gt;if (genome[x] == null)&lt;/span&gt;&lt;br&gt;
&lt;span style="color:#ff0000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;
&lt;span style="color:#ff0000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; genome[x] = (VectorGene)s.GenePrototype.Clone(); // not reset&lt;/span&gt;&lt;br&gt;
&lt;span style="color:#ff0000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; genome = newGenome;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;The red lines are wrong since the new &lt;span style="color:#000000"&gt;gene prototype clones should be added to
&lt;/span&gt;newGenome and not genome the fix is:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var s = (GeneVectorSpecies)Species;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var newGenome = new VectorGene[value];&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Array.Copy(genome, 0, newGenome, 0, genome.Length &amp;lt; newGenome.Length ? genome.Length : newGenome.Length);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var x = genome.Length; x &amp;lt; newGenome.Length; x&amp;#43;&amp;#43;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;span style="color:#0000ff"&gt;if (newGenome[x] == null)&lt;/span&gt;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; newGenome[x] = (VectorGene)s.GenePrototype.Clone(); // not reset&lt;/span&gt;&lt;br&gt;
&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; genome = newGenome;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p&gt;This issue is raised only when trying to work with lists, in vectors there is not problem since the length is set and equal&lt;/p&gt;
&lt;p&gt;Roey&lt;/p&gt;
&lt;/div&gt;</description><author>roey_nissim</author><pubDate>Tue, 27 Mar 2012 06:22:03 GMT</pubDate><guid isPermaLink="false">New Post: Bug Report 20120327062203A</guid></item><item><title>New Post: Problem with NSGA</title><link>http://branecloud.codeplex.com/discussions/281457</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;Sorry Rogala,&lt;/p&gt;
&lt;p&gt;I still do not understand the specific nature of your problem.&lt;/p&gt;
&lt;p&gt;It is standard practice to let the problem in standard GA architectures consider "diversity". But this can be very specific to particular "domains".&amp;nbsp; I cannot really help you without additional information.&lt;/p&gt;
&lt;p&gt;There are downsides to enforcement related to&amp;nbsp;"convergence" under some circumstances. You might want to look at the C++ implementation of "pure" GA algorithms in something like Mathew Wall's GALib (&lt;a href="http://lancet.mit.edu/ga/"&gt;http://lancet.mit.edu/ga/&lt;/a&gt;). This is a very "traditional' treatment that is used in many commercial and research projects that may help you decide which way to proceed. (It includes, by the way, tree-based representation, as well as standard array-based representation, so you are not limited to&amp;nbsp;a particular representation&amp;nbsp;when you analyze the algorithms).&lt;/p&gt;
&lt;p&gt;ECJ, and my C# variant of that, is capable of doing anything you want&amp;nbsp;(provided you fully understand what you are trying to accomplish!).&lt;/p&gt;
&lt;p&gt;I hope this general pointer helps.&lt;/p&gt;
&lt;p&gt;As I originally stated: For a Masters Thesis, I don't feel as though I should be explicitly wrinting any custom code for you. This is something that you should strive to solve on your own, given the flexibility of the framework provided. \;-)&lt;/p&gt;
&lt;p&gt;In all likelihood, you are smarter than I am! I am just a hack with some "Idiot Savant" talents that suit my proprietary needs quite nicely!&lt;/p&gt;
&lt;p&gt;Best Regards,&lt;/p&gt;
&lt;p&gt;Ben&lt;/p&gt;&lt;/div&gt;</description><author>bstabile</author><pubDate>Sun, 12 Feb 2012 06:37:06 GMT</pubDate><guid isPermaLink="false">New Post: Problem with NSGA 20120212063706A</guid></item><item><title>New Post: Problem with NSGA</title><link>http://branecloud.codeplex.com/discussions/281457</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;&lt;span class="hps"&gt;Hi&lt;/span&gt;,&lt;/p&gt;
&lt;p&gt;&lt;span class="hps"&gt;Thank you&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="hps"&gt;for your reply,&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="hps"&gt;but my problem&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="hps"&gt;is different.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="hps"&gt;I would like the&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="hps"&gt;genome&lt;/span&gt;&lt;span&gt;, which&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="hps"&gt;is represented in&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="hps alt-edited"&gt;an array of integer, &lt;/span&gt;&lt;span class="hps"&gt;contains&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="hps"&gt;diffrent value.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Przemek&lt;/p&gt;&lt;/div&gt;</description><author>rogala</author><pubDate>Mon, 06 Feb 2012 14:59:49 GMT</pubDate><guid isPermaLink="false">New Post: Problem with NSGA 20120206025949P</guid></item><item><title>New Post: Problem with NSGA</title><link>http://branecloud.codeplex.com/discussions/281457</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;rogala,&lt;/p&gt;
&lt;p&gt;ALSO note that memory usage will probably NOT be a problem unless the scale of your problem is quite large. There could also be situations where one might be doing, say,&amp;nbsp;"Island Exhange" for speciation. If you needed to ensure GLOBAL uniqueness, then that could put some pressure on you to use very compact representations. You would probably NOT want to serialize the actual&amp;nbsp;trees across the network as .NET object graphs, but would instead rely on each Island to report on uniqueness for genomes&amp;nbsp;that you pass over&amp;nbsp;in string form. The built-in ability to represent trees as compact LISP-like "S" expressions, is very useful for such purposes.&lt;/p&gt;
&lt;p&gt;In the extreme case, if you wanted GLOBAL uniqueness across all generations, and islands, and even runs... then you would have to think carefully about efficiency. This is also heavily dependent on what types of evolution you wish to support. If you are bringing the top 10 percent of your genomes into a new population,&amp;nbsp;and you want them all to be cloned uniquely (with respect to all of the other genomes that have&amp;nbsp;ever been evaluated anywhere), then you have some analysis and work to do.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In some cases, such as when I am trying to analyze the evolutionary process itself, I use a relational database to store all kinds of statistics, along with the representation of all genomes that were produced by the system&amp;nbsp;in many cases. This is a lot of overhead for a non-trivial Problem. Using compression on a single S-Expression is probably not going to be very helpful. But compressing&amp;nbsp;thousands of them&amp;nbsp;in a single stream&amp;nbsp;provides significant benefit.&lt;/p&gt;
&lt;p&gt;Ben&lt;/p&gt;&lt;/div&gt;</description><author>bstabile</author><pubDate>Sun, 29 Jan 2012 21:44:57 GMT</pubDate><guid isPermaLink="false">New Post: Problem with NSGA 20120129094457P</guid></item><item><title>New Post: Problem with NSGA</title><link>http://branecloud.codeplex.com/discussions/281457</link><description>&lt;div style="line-height: normal;"&gt;&lt;p&gt;rogala,&lt;/p&gt;
&lt;p&gt;Also note that it is NOT GOOD ENOUGH to compare string hash codes. Different strings can return the same hash code. Therefore, you will probably run into memory difficulties&amp;nbsp;for a very large number of genomes using the string comparison technique. It is possible to use certain compression techniques to alleviate this problem. You might want to examine the notion of "Suffix Sorting", or more specifically something like the "Burrows-Wheeler Transform" compression strategy to compactly represent uniqueness.&lt;/p&gt;
&lt;p&gt;I have to warn you though, this gets into the realm of Information or "Knowledge" Theory. There may be other tree comparison techniques with which I am not (off the top of my head) familiar.&lt;/p&gt;
&lt;p&gt;Ben&lt;/p&gt;&lt;/div&gt;</description><author>bstabile</author><pubDate>Sun, 29 Jan 2012 20:24:13 GMT</pubDate><guid isPermaLink="false">New Post: Problem with NSGA 20120129082413P</guid></item></channel></rss>