|
Note: This is an unedited contribution. If this article is inappropriate,
needs attention or copies someone else's work without reference then please
Report This Article

Introduction
A while ago I found something entitled Biomorphs, which appeared to be a bunch
of random drawings created by some sort of computer program. I began investigating
this a bit further, and found out this was actually the results of running a
popular AI type program, which is carrying out an algorithm described by Richard
Dawkins from his "The Blind Watchman" book, entitled BIOMORPHS.
Dawkins investigated the possibilities inherent in just the combination of
mutation and selection, when combined with a very powerful development (decoding)
process.
This is basically a recursive algorithm, that has some genes and uses some
mutation and some random selection. Thats it. That is all that is required to
produce a wide variety of fascinating virtual creatures, some which look very
genetic.
Dawkins Basic System
The phenotypes (how it looks) in Dawkins system were essentially branching
tree structures. An extension is to add segments to this. (This is not included
in this article).
Basic system has 9 genes, controlling things like :
- angle of branching
- depth of branching
- number of lines
- etc etc
It makes use of a recursive algorithm to carry out the drawing, this is shown
below.
private void draw(Graphics g, int i, int j)
{
tree(g, i / 2, j, order, 2);
}
private void tree(Graphics g, int i, int j, int k, int l)
{
try
{
if (l < 0)
l += 8;
if (l >= 8)
l -= 8;
int i1 = i + k * dx[l];
int j1 = j - k * dy[l];
g.DrawLine(new Pen(new SolidBrush(Color.White), 1.8F), i, j, i1, j1);
if (k > 0)
{
tree(g, i1, j1, k - 1, l - 1);
tree(g, i1, j1, k - 1, l + 1);
}
}
catch (Exception)
{
}
}
Using this algorithm it is possible to come up with some really interesting
creatures such as :

They look very organic dont they. However if we introduce a segmentation (
Not done for this article) to the algorithm, we can then achieve some truly
bizarre creatures such as these. Basically we are using the same idea but we
are creating more segments of the same basic shape.
Class Design
The following diagram illustrates the code design. ill give a brief discussion
on each class before I show the demonstration screen shots.

Basically there are 2 types of bio-morphs that I created for this article.
These is :
- BioMorph, which makes use the the following classes :
- BiomorphPanel : Which provides the rendering for the orginal Dawkins
Biomorph
- IBioEvolvalbe : An interface which is implemented by the BioMorphPanel
class
- BiomorphLayoutPanel : Hosts a number of BiomorphPanel objects. This
is then hosted on a Windows.form, and it is reponsible for the selection
of a random BiomorphPanel, to spawn a new generation of Dawkins Biomorphs
- EvolvingCritter, which makes use the the following classes
:
- EvolvingCritterPanel : Which provides the rendering for a COW SKULL
type Biomorph
- IEvolvalbe : An interface which is implemented by the EvolvingCritterPanel
class
- CritterLayoutPanel : Hosts a number of EvolvingCritterPanel objects.
This is then hosted on a Windows.form, and it is reponsible for the selection
of the fitest EvolvingCritterPanel, to spawn a new generation of Dawkins
Biomorphs
- EvolvingCritterComparator : Provides a simple implementaion of IComparer,
to allow a collection of EvolvingCritterPanel object to be sorted, in
order to obtain the fitest one
There is also a common interface :
ILayoutPanel : Is a common interface which is implemented
by both BiomorphLayoutPanel and CritterLayoutPanel, which allows the Windows.form
where one of these 2 panels is hosted to generate a new population of organisms.
Screen Shots Of The Running Application
Ok so what does the application look like, well it depends on which of the
Biomorphs is currently in use. Basically there are 2 links, and depending on
which one is selected, the main panel will be swapped to show the correct Biomorphs
panel, it will either be a BiomorphLayoutPanel (Dawkins Biomorphs) or a CritterLayoutPanel
(My own Cow Skull Biomorphs). Lets have a look at this shall we.
Using Dawkins BiomorphLayoutPanel BioMorphs
There is a timer placed on the form which every 1500 milli seconds will choose
a random Dawkins Biomorph, and will use that to spawn a new population of
crazy critters. There is only RANDOM SELECTION (no tricks), and you can get
some very bio-logical looking critters. Basically its all down to the clever
gene decoding we saw earlier.


Using CritterLayoutPanel BioMorphs (My Own Cow Skull Design)
I really only included the possibility to create other style Biomorphs for
a bit of fun. The difference here is that these chaps are judged to see which
one should be the one that is used for breeding. Basically the one with most
area, and the prefferred eye color, and prefferred constiuent parts will have
a better score, so will be more likely to be the aplha male, that will be
used for breeding.

NOTE : We do actually pick the fitest one here, so one would hope that over
time we would end up with simliar shaped or colored organisms. But nature
has other ideas, mutation is very powerful. PLay with it a while and you will
see.
Freedom Of Choice
With both these Biomorph panels, the user is also free to click on the organism
they like, then this will be used as the new alpha male, that is then used
to create a new population.
What Do You Think ?
Thats it, I would just like to ask, if you liked the article please vote for
it.
Conclusion
I have quite enjoyed constructing this article. I hope you lot liked it.
Sources
[1] http://www.informatics.sussex.ac.uk/users/rudil/FAI_WEB_PAGES/DawkinsBiomorphs.htm
History
v1.0 29/01/07
| You must Sign In to use this message board. |
|
| | Msgs 1 to 25 of 43 (Total in Forum: 43) (Refresh) | FirstPrevNext |
|
 |
|
|
 |
|
|
 |
|
|
 |
|
|
"Using this algorithm it is possible to come up with some really interesting creatures such as ..."
"Dawkins investigated the possibilities inherent in just the combination of mutation and selection, when combined with a very powerful development (decoding) process."
Just because you live in England doesn't mean you have to pay any special attention to that self-deceiving man.
But, perhaps "self-deceiving" isn't quite the correct phrase; since, after all, he knows full well (and admits in writing[^]) that he himself doesn't actually believe the stuff he's peddling.
|
| Sign In·View Thread·PermaLink | 1.57/5 (7 votes) |
|
|
|
 |
|
|
 |
|
|
My point isn't about Dawkins or whatever degree of favor one has towards him (or towards the self-refuting world-view he peddles).
My point is that an algorithm (any and all algorithms) is the antithesis of Dawkins' message.
This algorithm you're using, given *this* set of inputs, will *always* produce *this* particular output. And, given *that* set of inputs, will always produce *that* particular output.
It cannot be otherwise. And, if it could be otherwise, arithmetic (and computers) would be quite useless to us.
The fact that you may not know beforehand what the particular output will be does not at all alter the fact that the output is fully predetermined, given the algorithm and the inputs.
There is no "magic" involved.
|
| Sign In·View Thread·PermaLink | 1.00/5 (5 votes) |
|
|
|
 |
|
|
 |
|
|
To further elucidate this antithetic discrepancy between algorithms and Dawkins' message, the point at issue is 'information.'
Dawkins teaches (and his world-view requires it to be true) that 'information' comes from no-where, that it just poofs into existence -- it's all so very mysterious, really -- unbidden; that 'information' is self-created or self-generated. And he presents 'biomorphs' as somehow proving his claims.
Now, I realize that there exist programmers who, for whatever reason(s), may subscribe to such a view. But really, we programmers, of all people on this planet, simply have no excuse for swallowing such a patent falsehood: *we* create 'information.'
I don't, of course, mean that we programmers and we alone create 'information,' but rather that the creation and manipulation of 'information' is the explicit and specific task we engage in when we program. We (as individuals) may not understand *everything* about 'information,' but surely we ought to understand some basic things about it; starting with: it does not generate itself from nothing, but rather is always and only produced by a 'mind.'
You have an algorithm you've created; you have some set or sets of numbers to use as inputs to that algorithm. You feed the inputs to the algorithm, and mirible dictu, the algorithm generates interesting pictures. But there was nothing "magical" about this; no 'information' poofed into existence when you exectued the algorithm. Rather, the 'information' was already fully contained within the algorithm you wrote. The 'information' is not the inputs -- which are, in themselves and by themselves, meaningless numbers -- it is in the algorithm, the pre-written set of steps for ascribing some certain meaning to a set of inherently meaningless numbers.
Your algorithm may well generate all sorts of vaguely interesting pictures given all sorts of non-deterministic sets of inputs; for that is what it is written to do. The 'information' for generating those pictures is already fully contained in the algorithm.
But, it will never, ever, produce, for instance, the schematics for the Empire State Building. That particular 'information' is not contained in that particular algorithm.
|
| Sign In·View Thread·PermaLink | 1.80/5 (5 votes) |
|
|
|
 |
|
|
mmm this seems to have touched something very deep within you. Which is a little strange to me.
I have just tried to show folk how to write an implementation of dawkins Biomorphs.
I agree with all you comments. There is no magic, all the information is in the algorithm. Thats a given.
You know, It is just a demo to other folk, to you know, demystify issues, if some folk may have seen this before, and wondered how to write such an algorithm
Stay chilled man
sacha barber
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
"mmm this seems to have touched something very deep within you. Which is a little strange to me." I value clear -- rational and logically sound -- thinking. Do you not? I have always, from the time I was a child, considered it to be an obvious truth that one of the most important obligations we humans have is to *think* Related to that obligation, following from it, it seems to me is the subsidiary obligation to help one another in clarifying our mutual thought.
So, yes, I suppose you may "have touched something very deep within" me. But, does this really seem strange to you?
"I have just tried to show folk how to write an implementation of dawkins Biomorphs." Have I faulted you for that? Have I said your article should have no place on the Code Project? Where have I said you should be defensive about this article?
Rather, I have pointed out that interesting as the results of Dawkins' 'Biomorphs' algorithm(s) may be, they have nothing at all to do with the use to which he tries to put them; I have pointed out that they have nothing at all to do -- and, in fact, are the very opposite -- of the conclusions he desires the uninformed or easily-wowed to draw from his presentation of them.
It seems you have agreed: "I agree with all you comments. There is no magic, all the information is in the algorithm. Thats a given."
But not to worry, were you a hard-code Dawkins-oid, I'd have let it go at what I had written to that point. Had you made it clear that you either would not or could not *think* on this matter, I'd have let it go. I would have lowered my opinion of you as an intellect, but I'd have let the matter drop.
"I have just tried to show folk how to write an implementation of dawkins Biomorphs." I *seemed* to me, from reading your article, that you were endorsing Dawkins' faulty reasoning. Because I see rational and logically sound thinking as one of the primary obligations we humans have (and because I have a good opinion of you and want to continue that good opinion), it took it as my duty to get clarity on this point.
"You know, It is just a demo to other folk, to you know, demystify issues ..." I have probed what I took, whether rightly or wrongly, to be your endorsement of Dawkins' faulty reasoning concerning the algorithm(s) which generate 'Biomorphs.' You have clarified on that point. Is this not a win-win situation? Have I not helped you to demystify the issue?
I'm all about demystification. 
"Stay chilled man" For the next month of so, I have no choice but to stay chilled. Winter-like weather was late in getting to Ohio this year, but it's here now!
|
| Sign In·View Thread·PermaLink | 1.00/5 (5 votes) |
|
|
|
 |
|
|
I have to admit, this last post of your made me laugh. We seem to be argueing about thinking the same.
Let me say this, and this is all ill say.
I just wanted to show people how to create this algorithm, so they too would see its not magic, or even hard. The comment you refer to are not my words but are out of the referenced text.
I neither agree or disagree with what is in the reference.
I have had fun talking about this, but alas, I must stop now.
But I genuinely do thank you for your interest in this matter.
Just for the record I am not and never will be a "hard-code Dawkins-oid", I just post stuff that I find interesting enough to spend some time on. In the hope that other may like or find some of it also of interest or use.
Thats my posting philosophy.
Anyway.
Good luck in you work / studies / future ant posts etc etc
sacha barber
|
| Sign In·View Thread·PermaLink | 5.00/5 (2 votes) |
|
|
|
 |
|
|
Thanks for this delightful post - although not very knowledgeable in the AI and algorithm fields, I have always been interested in this one.
I think Ilíon's posts miss the point, and whatever his/her point is, should go to another post.
Cheers.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Thanks.
I also agree thats it not really AI. You may like some of my other articles though.
Yeah I did it cos it fascinated me, thats all really.
sacha barber
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Oh, just a minor correction in the article... the book is titled "The Blind Watchmaker" (not "Watchman")...
Anyway guess I will be playing around with the biomorphs on the weekend...
Cheers.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Thats what I aaid in fact I said "Blind Watchman" book, so we are both wrong.
Never mind though hey.
sacha barber
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
Sacha; interesting article -- I'm going to dive into the code in just a second, but I'm just curious on this dude first... 
Ilíon, while I do not endorse whatever Dawkins writes (since I haven't read it), I'm still curious as to why you seem to be along the same lines as god worshipers, in your postings. Alike you, they tend to argue strongly that whatever entity, biological or otherwise, cannot "poof" into existence, wrongly coming to the conclusion that as it cannot go "poof"; there "must" be a greater intelligence behind it -- and then -- what's more pleasing for them, to conveniently call that intelligence, god. So are you along these lines, or is it just a misunderstanding from my side?
As to whether information generates itself -- define information first. For Example: Receiving a photon from the sun, is receiving information. That information did indeed poof into existence during the proton-proton cycle that fuels the sun... The photons didn't exist before e.g. the positron from the previous step collides with an electron, sending off two gamma-ray photons. If we then see those photons through a satellite, we can receive information that didn't exist before, and wasn't created through a "mind". In fact, this sort of information creation is everywhere.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
Ilion is correct that the biomorph program doesn't prove evolution. The essence of his argument is that the biomorph program is the fallacy of argument by analogy. Which is true--but Dawkins was using it to illustrate, not to prove.
Dawkins was making a point about iterative selection. The biomorph program can produce a vast number of drawings, many of which would be very uninteresting to look at--but the program provides a way to home in on the interesting ones, by iterative selection. Dawkins made the point that every possible creature that the program could draw is within a multidimensional space (of the possible input "genes"), and that the goal of the game was to seek out the good ones. So the program was not about creating information, but about providing a way to find useful information. He was hoping to help people understand that natural selection is a process of finding the combinations of genes that can live in the wild--not of generating those combinations out of thin air, or pure luck.
Ilion is mistaken when he says that Dawkins is trying to deceive people about information creation. Perhaps if he would read what Dawkins wrote about the biomorph program, it would clear up this misunderstanding.
I also get the (mis?)impression that Ilion is attacking the theory of evolution itself. But that would just be silly--for someone that seems too smart.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
I find it quite strange that you would put forward such a strong and aggressive argument .
"Just because you live in England doesn't mean you have to pay any special attention to that self-deceiving man." What a strange link to make?
If you feel so strongly why don't you use your intellect and constructively put together an article instead of making remarks like an angry teenager.
Sacha is a well respected and well read member of the codeproject community so perhaps you shouldn't be so flippant in rubbishing his concepts.
Peace
Lawrence
Within the twentieth century, an ultraintelligent machine will be built and that it will be the last invention that man need make.
I.J. Good
|
| Sign In·View Thread·PermaLink | 5.00/5 (1 vote) |
|
|
|
 |
|
|
"I find it quite strange that you would put forward such a strong and aggressive argument"
No doubt you have a good point -- but, of course, for the sake of consistency, it is doubtless not a "strong and aggressive" point. I *should* have presented a weak and passive argument; or at worst, a weak and passive-aggressive argument. So sorry! I'll try better in the future and I do not doubt that I can get many invaluable pointers in this regard by attending to your argument(s) 
"Just because you live in England doesn't mean you have to pay any special attention to that self-deceiving man." What a strange link to make? You're right, you're right! I *should* have said, "Just because you live on the planet Earth doesn't mean you have to pay any special attention to that self-deceiving man." Clarity and precision is so refreshing, don't you agree?
"If you feel so strongly why don't you use your intellect and constructively put together an article instead of making remarks like an angry teenager."
Dewd! Chill, dewd!
It has nothing to do with "feeling strongly." It has to do seeking clarification on Sasha's seeming endorsement of Dawkins' intentional misrepresentations of what algorithms are and what they are capable of doing.
Sasha has indicated that he agrees with the points I made in seeking that clarification (and he has indicated that he doesn't want to discuss the matter further).
Perhaps this is really none of your business at this point.
It was in *this* article that the author of this article seemed to be endorsing Dawkins' intentional misrepresentations of what algorithms are and what they are capable of doing. My writing of a seperate article would have done nothing to clarify the seeming unclarity in *this* article.
Why, one might almost think himself justified in speculating that that is the point or objective of this objection to my "strong and aggressive" argument.
"Sacha is a well respected and well read member of the codeproject community so perhaps you shouldn't be so flippant in rubbishing his concepts."
What does the respect afforded Sasha have to do with the price of scones at Oxford? Is this some sort of weak and passive "argument from authority" combined with an "appeal to popularity?"
Did I really rubbish Sasha's concepts? And if I did, why is it objectionable that I did so "flippantly?" On what grounds is this alleged flippancy to be condemned? And -- this is important, perhaps even "strong," if you will please pardon that -- if I *did* rubbish his concepts with flippancy, then they must not have been very strong concepts in the first place.
But, perhaps I misunderstand this usage of "rubbish." I take it to mean "make rubbish of" or "show the lack-of-worth of" or "show the weakness of."
Now, if Sasha's concepts were weak, did I not do him a great favor in helping him to be aware of that? For, if no one were to make him aware that his concepts were weak (we are assuming for the moment that they were), and as one presumes he'd not intentionally put forward concepts that he already knew to be weak, how, exactly, was he to become aware of this fact? Was he supposed to stumble across it accidentally? Were his concepts supposed to tell them that they were weak? Was it perhaps that Mr Dawkins was supposed to give him a ring and clue him in?
If Sasha's concepts were so weak that mere (alleged) flippancy can rubbish them, is it not the obligation of someone who can see that weakness to bring it to his attention so that he can decide whether to re-think and remove the weakness(es)?
Or, is that too "strong and aggressive?"
|
| Sign In·View Thread·PermaLink | 1.00/5 (2 votes) |
|
|
|
 |
|
|
You dont have a girlfriend do you?
Within the twentieth century, an ultraintelligent machine will be built and that it will be the last invention that man need make.
I.J. Good
|
| Sign In·View Thread·PermaLink | 5.00/5 (5 votes) |
|
|
|
 |
|
|
 |
|
|
"Im staying well out of this." And I'm trying to keep my responses *and* posts I choose to respond to germaine to your article (i.e. you'll perhaps notice that I have ignored the posts made by 'un_ko' and 'echo')
"My orginal messages are all I have to say." And in those messages you agreed that 'information' doesn't come from no-where or doesn't create itself. You agreed that " ... all the information is in the algorithm. Thats a given.". What more would you think I expect?
Apparently, the point is now my romantic status. I'm all-but-certain you have no knowledge about that.
|
| Sign In·View Thread·PermaLink | 1.00/5 (1 vote) |
|
|
|
 |
|
|
 |
|
|
General News Question Answ
|