Creating artificial intelligence using evolution

already been done.. used it in a matric computer project. The programs evolve by randomly switching a bit (1 or 0) in a small computer program that is interacting with other programs. If the program can't survive it "dies out". some programs took on hunter tactics where the program would "kill" other programs and use them to replicate while others just divided them selves. There were perameters to prevent memory leaks and there being too many programs running but yeah similar to what you want.

edit started as a game where programmers would make programs to "fight" each other.
 
already been done.. used it in a matric computer project. The programs evolve by randomly switching a bit (1 or 0) in a small computer program that is interacting with other programs. If the program can't survive it "dies out". some programs took on hunter tactics where the program would "kill" other programs and use them to replicate while others just divided them selves. There were perameters to prevent memory leaks and there being too many programs running but yeah similar to what you want.

edit started as a game where programmers would make programs to "fight" each other.

Call me nerdy but that sounds so cool! My matric was filled with stupid english and afrikaans... I wish we did stuff like that:(
 
It's called a genetic algorithm and its awesome (like my sig:D).

I've been fooling around with those quite a lot and they are surprisingly powerful.

Forget about the network and other PCs for now...it'll just confuse you and make it impossible to get the basics right.

Start with a sentence like "Hello World". Then you get a bunch of strings (Think 50) each of 11 letters and randomize them. Score each one according to how many of the 11 it gets right. Sort according to score and then use roulette wheel selection to pair them together & recombine. You'll also need a mutation function to stop the population from stagnating.

Repeat that a couple of times and you should hit Hello World soon.

There are a gazillion improvements and tweaks you can make....just google.

well, the thing is - i can't think of a way for the pc to KNOW what the answer is
I think you're missing the point. The PC doesn't know *what* the answer is and doesn't have to either. It's just given a measurement to evaluate the individual "organisms".

Practical example: Traveling salesman problem. Salesman has to visit 50 sites while traveling the least distance. The PC doesn't know the perfect answer, but it can score them according to their distance and thereby eliminating the "weakest" solution.

It will probably never get to the perfect answer...but it it can figure out some very good ones in a *very* short time.

I might have the Salesman exe that I wrote somewhere....

eye_suc said:
possible to write this in assembler?
Sure...but I wouldn't recommend it.
 
It's called a genetic algorithm and its awesome (like my sig:D).

I've been fooling around with those quite a lot and they are surprisingly powerful.

Forget about the network and other PCs for now...it'll just confuse you and make it impossible to get the basics right.

Start with a sentence like "Hello World". Then you get a bunch of strings (Think 50) each of 11 letters and randomize them. Score each one according to how many of the 11 it gets right. Sort according to score and then use roulette wheel selection to pair them together & recombine. You'll also need a mutation function to stop the population from stagnating.

Repeat that a couple of times and you should hit Hello World soon.

There are a gazillion improvements and tweaks you can make....just google.


I think you're missing the point. The PC doesn't know *what* the answer is and doesn't have to either. It's just given a measurement to evaluate the individual "organisms".

Practical example: Traveling salesman problem. Salesman has to visit 50 sites while traveling the least distance. The PC doesn't know the perfect answer, but it can score them according to their distance and thereby eliminating the "weakest" solution.

It will probably never get to the perfect answer...but it it can figure out some very good ones in a *very* short time.

I might have the Salesman exe that I wrote somewhere....


Sure...but I wouldn't recommend it.

TSP with Prof Barnard @ UP ? :D
 
Hi mikeyb,

There was an interesting article in the Telegraph asking Can we make software that comes to life?. The prediction from a pure Darwinian, non-teleological stance is that random variation and selection are all that is needed to evolve intelligence. Thus intelligence came from random variation and selection. From the article it is interesting to note the following:
Researchers into artificial life, or "ALife", take two basic approaches. In "wet" ALife, scientists either tinker with microbes and other forms of simple life, or try to cook up cocktails of chemicals in water (hence "wet") that have the capacity to extract energy and raw materials from the environment, to grow and reproduce, and ultimately to evolve. Meanwhile, "in silico" ALifers use silicon chips to try to kindle the spark of life in the heart of a computer.

In the latter field, a celebrated experiment was carried out almost two decades ago by Dr Thomas Ray, at the University of Delaware. He created the first successful attempt at Darwinian evolution inside a computer, in which organisms - scraps of computer code - fought for memory (space) and processor power (energy) within a cordoned-off "nature reserve" inside the machine.

His evocative experiment was called "Tierra", after the Spanish for "Earth". Back in 1993, when I met him in Oxford, it seemed to be a vital tool in helping us understand why the world is seething with diversity, from rainforest to coral reef.

For evolution to occur, Dr Ray had to allow his programs to mutate. The "Tierran" programming language he devised was robust enough that it could often work after mutations. He also had natural selection: a program called the reaper killed off old and faulty software, enabling more successful organisms to monopolise resources.

On January 3 1990, he started with a program some 80 instructions long, Tierra's equivalent of a single-celled sexless organism, analogous to the entities some believe paved the way towards life. The "creature" - a set of instructions that also formed its body - would identify the beginning and end of itself, calculate its size, copy itself into a free region of memory, and then divide.

Before long, Dr Ray saw a mutant. Slightly smaller in length, it was able to make more efficient use of the available resources, so its family grew in size until they exceeded the numbers of the original ancestor. Subsequent mutations needed even fewer instructions, so could carry out their tasks more quickly, grazing on more and more of the available computer space.

A creature appeared with about half the original number of instructions, too few to reproduce in the conventional way. Being a parasite, it was dependent on others to multiply. Tierra even went on to develop hyper-parasites - creatures which forced other parasites to help them multiply. "I got all this ecological diversity on the very first shot," Dr Ray told me.

Other versions of computer evolution followed. Researchers thought that with more computer power, they could create more complex creatures - the richer the computer's environment, the richer the ALife that could go forth and multiply.
But these virtual landscapes have turned out to be surprisingly barren. Prof Mark Bedau of Reed College in Portland, Oregon, will argue at this week's meeting - the 11th International Conference on Artificial Life - that despite the promise that organisms could one day breed in a computer, such systems quickly run out of steam, as genetic possibilities are not open-ended but predefined. Unlike the real world, the outcome of computer evolution is built into its programming.

You ask:
My idea is to have small computer program, which sole purpose is to self replicate and copy over itself on other computers involved in the project. Thus making a whole network of this program randomly copying over itself.

Using the same theory of evolution, programs which develop certain characteristic which help it survive and will take over other which don't.

So basically it's creating artificial intelligence using evolution. :)

Do you think this experiment is worth taking forward? If yes, then how would I proceed? :cool:
Well, I think it would be awesome! :cool:

But perhaps take what we know from even the simplest of self-replicating organisms and apply it to your program. In Figure 1 some core components of cells allowing them to self-replicate can be seen.
picture.php

Figure 1: Some components of self-replicating cells.​

Now incorporate some of these characteristics into your program. Perhaps like in Figure 2:
picture.php

Figure 2: Self-replicating program components.​

Just to highlight the similarities between self-replicating cells and the proposed self-replicating program (Figure 1 vs Figure 2):
1) Core Coded Components:
Cells:
  • Cell cycle machinery - Process of cell division
  • Coded information - DNA, RNA, Proteins
  • Quality Control Systems - Chaperones, DNA repair mechanisms, Programmed cell death

Self-replicating Program:
  • Self-replicating code - Process of self-replication
  • Coded information - Whatever software you are using
  • Quality Control Systems - Checksum, Parser, Programmed Destruction of faulty self-replicators

2) Variable Coded Components:
Cells:
  • Metabolome - Energy conversion
  • Certain replisome components - Variable components to allow for optimization (polymerases)
  • Cytoskeletal components - Structure holding the cell together
  • Signal transduction components - Gathering of extracellular information and transducing it to be interpreted.

Self-replicating Program:
  • Metabolome - Usage of resources E.g. memory, CPU, network etc.
  • Self-replication Code - Variable components to allow for optimization
  • Code structure - Variability of syntax and code language etc.
  • Signal transduction components - Interaction with other self-replicators and resources.

3) Variability inducer:
Cells:
The immune system purposefully induces mutations through the activity of cytosine deaminases and incorporate low-fidelity repair systems to allow for variability. Thus, the immune system harnesses random variation and natural selection to produce antibodies to ward off harmful organisms.
Bacteria also have cytosine deamination enzymes as well as low-fidelity repair systems.

Self-replicating Program:
Perhaps program a similar "variation inducer" that is activated under time of intense selection pressure in order to make more use of randomness to generate variability. Incorporate this system to work under with the quality control systems.

Then simulate the evolution of these virtual organisms.
My 2 cents for making your self-replicating software. :cool:

EDIT:
To make it a bit more complicated, start off with a small population of these virtual self-replicators and make them act like multi-cellular organisms. Like quorum sensing in bacterial populations.

To really complicate the simulation, throw in a few quantum computing structures (tubulin, Ftz-like perhaps) and simulate an environment that is composed of elementary particles. Simulate these elementary particles to have two aspects. Physical and phenomenal. The physical aspects govern the simulation in a deterministic way. The phenomenal aspects are composed of elemental proto-experiences (PEs). Simulate the phenomenal and physical aspects to be irreducible fundamental properties that exist in superimposed form.

Who knows, maybe an explosion (Cambrian explosion?) of simulated complex life will be observed after structural components evolved to interact with these PEs?
 
Last edited:
I found an open source program like this a couple of years back.. ;)

But I cannot remember what it was called, IIRC it was somewhere on sourceforge.net .. just a few hundred thousand apps to browse through. :p

I actually played around with it a bit, I'll see if I've still got it somewhere.. :)

EDIT: Nope.. too bad, I can't find it. :( However having a browse through SF.net's AI category reveals hundreds of these type of AI apps.. :)
 
Last edited:
Hi all, I would like to see what the scientific section of the MyBB thought of my bizarre idea. :o

Lately I've been thinking of AI and have thought up the following experiment to try create AI:

My idea is to have small computer program, which sole purpose is to self replicate and copy over itself on other computers involved in the project. Thus making a whole network of this program randomly copying over itself.

Using the same theory of evolution, programs which develop certain characteristic which help it survive and will take over other which don't.

So basically it's creating artificial intelligence using evolution. :)

Do you think this experiment is worth taking forward? If yes, then how would I proceed? :cool:

you will need a virus pr0gram:D
 
Top
Sign up to the MyBroadband newsletter
X