Jump to content

User:JackCasey067/Evolutionary computation

From Wikipedia, the free encyclopedia

Hello

[edit]

The article that I am editing is Evolutionary computation. I am focusing strictly on the computation section. Therefore, I copied over only this section, so you may want to view the lead on the actual page before you review my work here.

The original section had roughly 280 words. Therefore, I aimed bring it above 780 words. I achieved this goal, the section currently sits at around 800 words. I preserved some of the old section, but most of it was rolled into my new paragraphs. In the original, there are several paragraphs without citation (incidentally, I believe the 3rd was plagiarized off of a source that I happened to find). As a result, I have removed these paragraphs, but I took care to cover what they had covered in greater detail. The only content that remains from the original is in parts of the last paragraph.

Below is my current draft for the history section (changes bolded). I ask that if you are peer reviewing, you copy this into a new section with your edits.

As of now, this page reflects the history section after I considered the peer reviews. If all goes well, this will be live on the actual wikipedia page shortly. Thank you to all who reviewed my draft.

My Edits to the History Section.

[edit]

The concept of mimicking evolutionary processes to solve problems originates before the advent of computers, such as when Alan Turing proposed a method of genetic search in 1948 .[1] Turing's B-type u-machines resemble primitive neural networks, and connections between neurons were learnt via a sort of genetic algorithm. His P-type u-machines resemble a method for reinforcement learning, where pleasure and pain signals direct the machine to learn certain behaviors. However, Turing's paper went unpublished until 1968, and he died in 1954, so this early work had little to no effect on the field of evolutionary computation that was to develop.[2]

Evolutionary computing as a field began in earnest in the 1950s and 1960s.[1] There were several independent attempts to use the process of evolution in computing at this time, which developed separately for roughly 15 years. Three branches emerged in different places to attain this goal: evolution strategies, evolutionary programming, and genetic algorithms. A fourth branch, genetic programming, eventually emerged in the early 1990s. These approaches differ in the method of selection, the permitted mutations, and the representation of genetic data. By the 1990s, the distinctions between the historic branches had begun to blur, and the term 'evolutionary computing' was coined in 1991 to denote a field that exists over all four paradigms.[3]

In 1962, Lawrence J. Fogel initiated the research of Evolutionary Programming in the United States, which was considered an artificial intelligence endeavor. In this system, finite state machines are used to solve a prediction problem: these machines would be mutated (adding or deleting states, or changing the state transition rules), and the best of these mutated machines would be evolved further in future generations. The final finite state machine may be used to generate predictions when needed. The evolutionary programming method was successfully applied to prediction problems, system identification, and automatic control. It was eventually extended to handle time series data and to model the evolution of gaming strategies.[3]

In 1964, Ingo Rechenberg and Hans-Paul Schwefel introduce the paradigm of evolution strategies in Germany.[3] Since traditional gradient descent techniques produce results that may get stuck in local minima, Rechenberg and Schwefel proposed that random mutations (applied to all parameters of some solution vector) may be used to escape these minima. Child solutions were generated from parent solutions, and the more successful of the two was kept for future generations. This technique was first used by the two to successfully solve optimization problems in fluid dynamics.[4] Initially, this optimization technique was performed without computers, instead relying on dice to determine random mutations. By 1965, the calculations were performed wholly by machine.[3]

John Henry Holland introduced genetic algorithms in the 1960s, and it was further developed at the University of Michigan in the 1970s.[5] While the other approaches were focused on solving problems, Holland primarily aimed to use genetic algorithms to study adaptation and determine how it may be simulated. Populations of chromosomes, represented as bit strings, were transformed by an artificial selection process, selecting for specific 'allele' bits in the bit string. Among other mutation methods, interactions between chromosomes were used to simulate the recombination of DNA between different organisms. While previous methods only tracked a single optimal organism at a time (having children compete with parents), Holland's genetic algorithms tracked large populations (having many organisms compete each generation).

By the 1990s, a new approach to evolutionary computation that came to be called genetic programming emerged, advocated for by John Koza among others.[3] In this class of algorithms, the subject of evolution was itself a program written in a high-level programming language (there had been some previous attempts as early as 1958 to use machine code, but they met with little success). For Koza, the programs were Lisp S-expressions, which can be thought of as trees of sub-expressions. This representation permits programs to swap subtrees, representing a sort of genetic mixing. Programs are scored based on how well they complete a certain task, and the score is used for artificial selection. Sequence induction, pattern recognition, and planning were all successful applications of the genetic programming paradigm.

Many other figures played a role in the history of evolutionary computing, although their work did not always fit into one of the major historical branches of the field. The earliest computational simulations of evolution using evolutionary algorithms and artificial life techniques were performed by Nils Aall Barricelli in 1953, with first results published in 1954.[6] Another pioneer in the 1950s was Alex Fraser, who published a series of papers on simulation of artificial selection.[7] As academic interest grew, dramatic increases in the power of computers allowed practical applications, including the automatic evolution of computer programs.[8] Evolutionary algorithms are now used to solve multi-dimensional problems more efficiently than software produced by human designers, and also to optimize the design of systems.[9][10]

The Original History Section

[edit]

The use of evolutionary principles for automated problem solving originated in the 1950s. It was not until the 1960s that three distinct interpretations of this idea started to be developed in three different places.

Evolutionary programming was introduced by Lawrence J. Fogel in the US, while John Henry Holland called his method a genetic algorithm. In Germany Ingo Rechenberg and Hans-Paul Schwefel introduced evolution strategies. These areas developed separately for about 15 years. From the early nineties on they are unified as different representatives ("dialects") of one technology, called evolutionary computing. Also in the early nineties, a fourth stream following the general ideas had emerged – genetic programming. Since the 1990s, nature-inspired algorithms are becoming an increasingly significant part of the evolutionary computation.

These terminologies denote the field of evolutionary computing and consider evolutionary programming, evolution strategies, genetic algorithms, and genetic programming as sub-areas.

The earliest computational simulations of evolution using evolutionary algorithms and artificial life techniques were performed by Nils Aall Barricelli in 1953, with first results published in 1954. Another pioneer in the 1950s was Alex Fraser, who published a series of papers on simulation of artificial selection. Artificial evolution became a widely recognised optimisation method as a result of the work of Ingo Rechenberg in the 1960s and early 1970s, who used evolution strategies to solve complex engineering problems. Genetic algorithms in particular became popular through the writing of John Holland. As academic interest grew, dramatic increases in the power of computers allowed practical applications, including the automatic evolution of computer programs. Evolutionary algorithms are now used to solve multi-dimensional problems more efficiently than software produced by human designers, and also to optimise the design of systems.




Edit from Jiatong Li (Logen)


The concept of mimicking evolutionary processes to solve problems dates back to before [wording issue; maybe drop "back to" ?] the advent of computers, such as when Alan Turing proposed a method of genetic search in 1948 .[1] Turing's B-type u-machines resemble primitive neural networks, and connections between neurons were learnt via a sort of genetic algorithm.[2] His P-type u-machines resemble a method for reinforcement learning, where pleasure and pain signals direct the machine to learn certain behaviors. However, Turing's paper went unpublished until 1968, and he died in 1954, so this early work had little to no effect on the field of evolutionary computation that was to develop [ I think using "little to no effect" should be a little bit careful. I think I definitely understand what you are trying to say, but I think for such absolute argument, maybe adding a reference is more appropriate].

Evolutionary computing as a field began in earnest in the 1950s and 1960s. There were several independent attempts to use the process of evolution in computing at this time, which developed separately for roughly 15 years.[3] Three branches emerged in different places to attain this goal: evolution strategies, evolutionary programming, and genetic algorithms. A fourth branch, genetic programming, eventually emerged in the early 1990s. These approaches differ in the method of selection, the permitted mutations, and the representation of genetic data. By the 1990s, the distinctions between the historic branches had begun to blur, and the term 'evolutionary computing' was coined in 1991 to denote a field that exists over all four paradigms.

In 1962, Lawrence J. Fogel initiated the research of Evolutionary Programming in the United States, which was considered an artificial intelligence endeavor[3]. In this system, finite state machines are used to solve a prediction problem: these machines would be mutated (adding or deleting states, or changing the state transition rules), and the best of these mutated machines would be evolved further in future generations. The final finite state machine may be used to generate predictions when needed. The evolutionary programming method was successfully applied to prediction problems, system identification, automatic control, and it was eventually extended to handle time series data and to model the evolution of gaming strategies. [Reference?]

In 1964, Ingo Rechenberg and Hans-Paul Schwefel introduce the paradigm of evolution strategies in Germany.[3] Since traditional gradient descent techniques produce results that may get stuck in local minima, Rechenberg and Schwefel proposed that random mutations (applied to all parameters of some solution vector) may be used to escape these minima. Child solutions were generated from parent solutions, and the more successful of the two was kept for future generations. This technique was first used by the two to successfully solve optimization problems in fluid dynamics.[4] Initially, this optimization technique was performed without computers, instead relying on dice to determine random mutations. By 1965, the calculations were performed wholly by machine. [Reference?]

John Henry Holland introduced genetic algorithms in the 1960s, and it was further developed at the University of Michigan in the 1970s.[5] While the other approaches were focused on solving problems, Holland primarily aimed to use genetic algorithms to study adaptation and determine how it may be simulated. Populations of chromosomes, represented as bit strings, were transformed by an artificial selection process, selecting for specific 'allele' bits in the bit string. Among other mutation methods, interactions between chromosomes were used to to simulate the recombination of DNA between different organisms. While previous methods only tracked a single optimal organism at a time (having children compete with parents), Holland's genetic algorithms tracked large populations (having many organisms compete each generation).

By the 1990s, a new approach to evolutionary computation known as genetic programming emerged, advocated for by John Koza among others.[3] In this class of algorithms, the subject of evolution was itself a program written in a high level high-level programming language [consider adding wikipedia article link? High-level programming language] (there had been some previous attempts as early as 1958 to use machine code, but they met with little success). For Koza, the programs were Lisp S-expressions, which can be thought of as trees of sub-expressions. This representation permits programs to swap subtrees, representing a sort of genetic mixing. Programs are scored based on how well they complete a certain task, and the score is used for artificial selection. Sequence induction, pattern recognition, and planning were all successful applications of the genetic programming paradigm.

Many other figures played a role in the history of evolutionary computing, although their work did not always fit into one of the major historical branches of the field.


Overall comment: Really enjoy this! I actually did not realize how deep learning and reinforcement learning can be applied into evolutionary process. I think the argument is very interesting and logical. However, I think one issue I found is sometimes you make a really long argument/sentence without any reference after it. So that let me wonder where exactly such argument comes from. I put [Reference?] mark to indicate my confusion. However, I think this issue should be easy to fix. Also, I think in order to make the article more accessible, you can add wikipedia article link to some academic jargon such as "High-level programming language". The other thing I suggest is to add a short introductory sentence on what is evolutionary computing at the beginning. I felt a little bit lots when I jump straight into the topic. Such background information will be really useful for me to pick up.



Peer Review (Steph Ran)

The concept of mimicking evolutionary processes to solve problems dates back to before the advent of computers, such as when Alan Turing proposed a method of genetic search in 1948 . Turing's B-type u-machines [Is there a hyperlink to the wikipedia page for these machines that you can include here?] resemble primitive neural networks, and connections between neurons were learnt via a sort of genetic algorithm. His P-type u-machines [Same here with the hyperlink!] resemble a method for reinforcement learning, where pleasure and pain signals direct the machine to learn certain behaviors. However, Turing's paper went unpublished until 1968, and he died in 1954, so this early work had little to no effect [could help to say this in a more objective way to avoid bias showing up-- even though this very well may be the case] on the field of evolutionary computation that was to develop.

Evolutionary computing as a field began in earnest [this could also come across as an opinion and deviate from the objective way we should approach these articles] in the 1950s and 1960s. There were several independent attempts to use the process of evolution in computing at this time, which developed separately for roughly 15 years. Three branches emerged in different places to attain this goal: evolution strategies, evolutionary programming, and genetic algorithms. A fourth branch, genetic programming, eventually emerged in the early 1990s. These approaches differ in the method of selection, the permitted mutations, and the representation of genetic data. By the 1990s, the distinctions between the historic branches had begun to blur, and the term 'evolutionary computing' was coined in 1991 to denote a field that exists over all four paradigms.

In 1962, Lawrence J. Fogel initiated the research of Evolutionary Programming in the United States, which was considered an artificial intelligence endeavor. In this system, finite state machines are used to solve a prediction problem: these machines would be mutated (adding or deleting states, or changing the state transition rules), and the best of these mutated machines would be evolved further in future generations. The final finite state machine may be used to generate predictions when needed. The evolutionary programming method was successfully applied to prediction problems, system identification, automatic control, and it was eventually extended to handle time series data and to model the evolution of gaming strategies. [This was a very clear explanation!]

In 1964, Ingo Rechenberg and Hans-Paul Schwefel introduce the paradigm of evolution strategies in Germany. Since traditional gradient descent techniques produce results that may get stuck in local minima, Rechenberg and Schwefel proposed that random mutations (applied to all parameters of some solution vector) may be used to escape these minima. Child solutions were generated from parent solutions, and the more successful of the two was kept for future generations. This technique was first used by the two to successfully solve optimization problems in fluid dynamics. Initially, this optimization technique was performed without computers, instead relying on dice to determine random mutations. By 1965, the calculations were performed wholly by machine.

John Henry Holland introduced genetic algorithms in the 1960s, and it was further developed at the University of Michigan in the 1970s. While the other approaches were focused on solving problems, Holland primarily aimed to use genetic algorithms to study adaptation and determine how it may be simulated. Populations of chromosomes, represented as bit strings, were transformed by an artificial selection process, selecting for specific 'allele' bits in the bit string. Among other mutation methods, interactions between chromosomes were used to [original: “used to to”] simulate the recombination of DNA between different organisms. While previous methods only tracked a single optimal organism at a time (having children compete with parents), Holland's genetic algorithms tracked large populations (having many organisms compete each generation).By the 1990s, a new approach to evolutionary computation that came to be called genetic programming emerged, advocated for by John Koza among others. In this class of algorithms, the subject of evolution was itself a program written in a high level programming language (there had been some previous attempts as early as 1958 to use machine code, but they met with little success). For Koza, the programs were Lisp S-expressions, which can be thought of as trees of sub-expressions. This representation permits programs to swap subtrees, representing a sort of genetic mixing. Programs are scored based on how well they complete a certain task, and the score is used for artificial selection. Sequence induction, pattern recognition, and planning were all successful applications of the genetic programming paradigm.

Many other figures played a role in the history of evolutionary computing, although their work did not always fit into one of the major historical branches of the field. The earliest computational simulations of evolution using evolutionary algorithms and artificial life techniques were performed by Nils Aall Barricelli in 1953, with first results published in 1954. Another pioneer in the 1950s was Alex Fraser, who published a series of papers on simulation of artificial selection. [The previous paragraph discussed events from the 1990s, but here the discussion goes back to the 1950s. This is a small thing especially since you mention these other figures briefly, but I wonder if there’s a way to rework the structure to have these people presented in chronological order?] As academic interest grew, dramatic increases in the power of computers allowed practical applications, including the automatic evolution of computer programs. Evolutionary algorithms are now used to solve multi-dimensional problems more efficiently than software produced by human designers, and also to optimize the design of systems.

[This was a very nice explanation of the history! I don’t know much about evolutionary programming, but you explained everything very nicely. Excited to see the finished product!]


Edit from Yamato Hart


The concept of mimicking evolutionary processes to solve problems dates back to before [wording issue; maybe drop "back to" ?] the advent of computers, such as when Alan Turing proposed a method of genetic search in 1948 .[1] Turing's B-type u-machines resemble primitive neural networks, and connections between neurons were learnt via a sort of genetic algorithm.[2] His P-type u-machines resemble a method for reinforcement learning, where pleasure and pain signals direct the machine to learn certain behaviors. However, Turing's paper went unpublished until 1968, and he died in 1954, so this early work had little to no effect on the field of evolutionary computation that was to develop.

[I would be careful using opinionated statements]


Evolutionary computing as a field began in earnest in the 1950s and 1960s. There were several independent attempts to use the process of evolution in computing at this time, which developed separately for roughly 15 years.[3] Three branches emerged in different places to attain this goal: evolution strategies, evolutionary programming, and genetic algorithms. A fourth branch, genetic programming, eventually emerged in the early 1990s. These approaches differ in the method of selection, the permitted mutations, and the representation of genetic data. By the 1990s, the distinctions between the historic branches had begun to blur, and the term 'evolutionary computing' was coined in 1991 to denote a field that exists over all four paradigms.

In 1962, Lawrence J. Fogel initiated the research of Evolutionary Programming in the United States, which was considered an artificial intelligence endeavor[3]. In this system, finite state machines are used to solve a prediction problem: these machines would be mutated (adding or deleting states, or changing the state transition rules), and the best of these mutated machines would be evolved further in future generations. The final finite state machine may be used to generate predictions when needed. The evolutionary programming method was successfully applied to prediction problems, system identification, automatic control, and it was eventually extended to handle time series data and to model the evolution of gaming strategies.

In 1964, Ingo Rechenberg and Hans-Paul Schwefel introduce the paradigm of evolution strategies in Germany.[3] Since traditional gradient descent techniques produce results that may get stuck in local minima, Rechenberg and Schwefel proposed that random mutations (applied to all parameters of some solution vector) may be used to escape these minima. Child solutions were generated from parent solutions, and the more successful of the two was kept for future generations. This technique was first used by the two to successfully solve optimization problems in fluid dynamics.[4] Initially, this optimization technique was performed without computers, instead relying on dice to determine random mutations. By 1965, the calculations were performed wholly by machine.

John Henry Holland introduced genetic algorithms in the 1960s, and it was further developed at the University of Michigan in the 1970s.[5] While the other approaches were focused on solving problems, Holland primarily aimed to use genetic algorithms to study adaptation and determine how it may be simulated. Populations of chromosomes, represented as bit strings, were transformed by an artificial selection process, selecting for specific 'allele' bits in the bit string. Among other mutation methods, interactions between chromosomes were used to to simulate the recombination of DNA between different organisms. While previous methods only tracked a single optimal organism at a time (having children compete with parents), Holland's genetic algorithms tracked large populations (having many organisms compete each generation).

By the 1990s, a new approach to evolutionary computation that came to be called genetic programming emerged, advocated for by John Koza among others.[3] [This sentence is quite confusing] In this class of algorithms, the subject of evolution was itself a program written in a high level programming language [consider adding wikipedia article link? High-level programming language] (there had been some previous attempts as early as 1958 to use machine code, but they met with little success). For Koza, the programs were Lisp S-expressions, which can be thought of as trees of sub-expressions. This representation permits programs to swap subtrees, representing a sort of genetic mixing. Programs are scored based on how well they complete a certain task, and the score is used for artificial selection. Sequence induction, pattern recognition, and planning were all successful applications of the genetic programming paradigm.

Many other figures played a role in the history of evolutionary computing, although their work did not always fit into one of the major historical branches of the field.

References

[edit]
  1. ^ a b c d Eiben, A. E.; Smith, J. E. (2015), "Evolutionary Computing: The Origins", Natural Computing Series, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 13–24, ISBN 978-3-662-44873-1, retrieved 2022-05-06
  2. ^ a b c Burgin, Mark; Eberbach, Eugene (2013-04-12). "Evolutionary Turing in the Context of Evolutionary Machines". arXiv:1304.3762 [cs].
  3. ^ a b c d e f g h i j k l m Evolutionary computation : the fossil record. David B. Fogel. New York: IEEE Press. 1998. ISBN 0-7803-3481-7. OCLC 38270557.{{cite book}}: CS1 maint: others (link)
  4. ^ a b c Fischer, Thomas (1986), "Kybernetische Systemanalyse Einer Tuchfabrik zur Einführung Eines Computergestützten Dispositionssystems der Fertigung", DGOR, Berlin, Heidelberg: Springer Berlin Heidelberg, pp. 120–120, ISBN 978-3-642-71162-6, retrieved 2022-05-06
  5. ^ a b c Mitchell, Melanie (1998). An Introduction to Genetic Algorithms. The MIT Press. ISBN 978-0-262-28001-3.
  6. ^ Barricelli, Nils Aall (1954). "Esempi Numerici di processi di evoluzione". Methodos: 45–68.
  7. ^ Fraser AS (1958). "Monte Carlo analyses of genetic models". Nature. 181 (4603): 208–9. Bibcode:1958Natur.181..208F. doi:10.1038/181208a0. PMID 13504138. S2CID 4211563.
  8. ^ Koza, John R. (1992). Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT Press. ISBN 978-0-262-11170-6.
  9. ^ G. C. Onwubolu and B V Babu, Onwubolu, Godfrey C.; Babu, B. V. (2004-01-21). New Optimization Techniques in Engineering. ISBN 9783540201670. Retrieved 17 September 2016.
  10. ^ Jamshidi M (2003). "Tools for intelligent control: fuzzy controllers, neural networks and genetic algorithms". Philosophical Transactions of the Royal Society A. 361 (1809): 1781–808. Bibcode:2003RSPTA.361.1781J. doi:10.1098/rsta.2003.1225. PMID 12952685. S2CID 34259612.