Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Evolutionary programming [closed]

I just watched a pretty cool ted talk by Danny Hillis dated 1994.

At one point in the video, he talks about "evolutionary programming", i.e. he asks the computer to generate hundreds of programs by generating random sequences of commands, then tests to see how well each program sorts numbers. He keeps 10% of the programs that sorts numbers the best, then generates a next round of programs based on the 10% that did well and repeats as many times as he wants to, to eventually generate the ultimate sorting program.

Are there tools/programming languages out there that do this? E.g. given certain constraints, generates C code that best satisfies those constraints.

I've visited some wikipedia articles related to "Evolutionary Programming"; there seems to be a lot of theory there, but it doesn't seem easy to find something you can just play with.

like image 566
math4tots Avatar asked Feb 04 '12 08:02

math4tots


People also ask

What do you mean by evolutionary programming?

Evolutionary programming is one of the four major evolutionary algorithm paradigms. It is similar to genetic programming, but the structure of the program to be optimized is fixed, while its numerical parameters are allowed to evolve. It was first used by Lawrence J.

What is the difference between genetic algorithms and evolutionary programming?

In a "genetic algorithm," the problem is encoded in a series of bit strings that are manipulated by the algorithm; in an "evolutionary algorithm," the decision variables and problem functions are used directly. Most commercial Solver products are based on evolutionary algorithms.

What is the main concept of evolutionary algorithm?

An evolutionary algorithm (EA) is an algorithm that uses mechanisms inspired by nature and solves problems through processes that emulate the behaviors of living organisms. EA is a component of both evolutionary computing and bio-inspired computing. EAs are inspired by the concepts in Darwinian Evolution.

What is evolutionary programming in soft computing?

2.3 Evolutionary Programming (EP) [25, 26] This is a stochastic optimization strategy similar to genetic algorithms. It places emphasis on the behavioral linkage between parents and their offspring, rather than seeking to emulate specific genetic operators as observed in nature.


3 Answers

A very simple and general free downloadable source is TinyGP implemented in Java. By the way.. for more details on this you should search information about "genetic programming" instead of "evolutionary programming". it is all a bit confusing because there are so many subfields of evolutionary computation with small diffrences in the names like "genetic algorithms", "evolutionary strategies", "evolutionary programming", "genetic programming"... but i think what you're talking about is actually genetic programming

like image 99
tObi Avatar answered Sep 27 '22 17:09

tObi


One practical example:

Csmith is a tool that can generate random C programs that statically and dynamically conform to the C99 standard. It is useful for stress-testing compilers, static analyzers, and other tools that process C code. Csmith has found bugs in every tool that it has tested, and we have used it to find and report more than 400 previously-unknown compiler bugs.

like image 24
smokris Avatar answered Sep 27 '22 17:09

smokris


Classic examples are Tierra and Avida.

A relevant area is hardware evolution and evolutionary robotics, see this page for example.

There's also a nice book about evolutionary computing in Mathematica.

like image 43
SK-logic Avatar answered Sep 27 '22 16:09

SK-logic