A few thoughts, which might be useful to everyone:<br><br>- Why limit yourself to 2 survivors and 20 individuals (soup-mixes) each generation? This small of a population and of surviving individuals can sometimes work, but is generally unpreferred in the evolutionary computation community. One reason is that having very few surviving individuals is not very robust - you may lose promising individuals to ones that are only slightly better in a totally different way. Similarly, this will cause your algorithm to only concentrate in a small area of the search space, instead of using the power of a larger number of surviving individuals to search the space more in parallel, which also helps prevent it from getting stuck in local optima. I would suggest using at least 100 to 200 individuals and 10 to 50 surviving individuals that are allowed to reproduce. (One reason you may choose to go with a smaller population is if your fitness evaluations are going to be very computationally expensive. But, it doesn&#39;t seem like that will be the case here).<br>

<br>- I think you need to think a bit about how your individuals will input your midi files. Are you going to give evolution instructions to read the whole file, read a specific line of the file, or read a specific value from the CSV? If it is a specific value, will it be indexed by line and column, or just by a single integer? To me, it seems like any of these methods might not be strong enough to give evolution the things it needs, so you might need to give it more specialized input methods, such as the interval between a pair of notes, etc. Though, I might be wrong here.<br>

<br>- You&#39;re a bit vague about your program language and structure. Will these be lisp expressions? What instructions will be included? It is always good when developing a genetic algorithm to write a sample program by hand that won&#39;t solve your problem, but which you think might have a chance at doing better than random junk. If you find you can&#39;t do so with the instructions you give evolution, chances are that it won&#39;t do any better.<br>

<br>I hope this helps!<br><br>-Tom<br><br><div class="gmail_quote">On Mon, Oct 17, 2011 at 11:13 AM, Wm. Josiah Erikson <span dir="ltr">&lt;<a href="mailto:wjerikson@hampshire.edu">wjerikson@hampshire.edu</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">So I&#39;m now messing about with reading in files and putting them into data structures that I can do useful things with, but before I get too deep into committing myself to particular methods, I want some people who know more than me to read over my plan and tell me if they see any big problems with this other than the questions I have already identified below that I will have to figure out. Comments from my code:<br>


<br>
;I&#39;m going to attempt to evolve a program that has the same opinions of various MIDI files that I do.<br>
;I&#39;m going to listen to 20-50 publicly available MIDI files and score them, then hardcode those scores<br>
;into this program. Then I&#39;m going to covert said MIDI files into .csv, and attempt to evolve some scoring<br>
;method that comes up with the same scores for these files that I do. I&#39;m going to do this without teaching<br>
;my program very much about how the MIDI file is formatted, so my evolutionary &quot;soup&quot; will be fairly dumb.<br>
;The idea behind this is that one of the things that GP does well is to find patterns in things that we don&#39;t<br>
;understand very well, and in that light, I ought to be able to evolve a music critic without teaching it the<br>
;format of MIDI files - it will try sampling the MIDI file in lots of random ways, applying random scores (think<br>
;this through - maybe actually I have to always apply the same scores? I can&#39;t have randomness twice, unless<br>
;both randomnesses are factored into making that &quot;genome&quot; unique, otherwise I&#39;ll get faulty evolution), then<br>
;applying the same set of &quot;soup components&quot; to all of the MIDI files, comparing the scores to my scores, adding<br>
;up the difference, and then that will be the fitness value of that particular &quot;soup mix&quot; or genetic code.<br>
;Each generation will have, say, 20 different &quot;soup mixes&quot;. I will pick the two that have the best fitness values,<br>
;breed them together and randomly mutate them (how, exactly?) to get 20 new ones, them start over. I will stop<br>
;after either an arbitrary number of generations or when the fitness value goes below x, and then see what I get!<br>
<br>
Thanks in advance for any feedback!<br><font color="#888888">
<br>
-- <br>
Wm. Josiah Erikson<br>
Network Engineer<br>
Hampshire College<br>
Amherst, MA 01002<br>
<a href="tel:%28413%29%20559-6091" value="+14135596091" target="_blank">(413) 559-6091</a><br>
<br>
______________________________<u></u>_________________<br>
Cs254f11 mailing list<br>
<a href="mailto:Cs254f11@lists.hampshire.edu" target="_blank">Cs254f11@lists.hampshire.edu</a><br>
<a href="https://lists.hampshire.edu/mailman/listinfo/cs254f11" target="_blank">https://lists.hampshire.edu/<u></u>mailman/listinfo/cs254f11</a><br>
</font></blockquote></div><br>