Non-linear genetic algorithms for solving problems by finding a fit composition of functions
First Claim
1. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for finding a composition of functions whose performance is a good fit, best fit or perfect fit to a sample of data, said process comprising iterations of a series of steps, each iteration comprising the steps:
- executing each said program to produce a result;
assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the closeness of the fit of said corresponding program to said sample of data;
selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value;
choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction;
creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program;
retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and
adding said new program to said population.
2 Assignments
0 Petitions
Accused Products
Abstract
The present invention is a non-linear genetic algorithm for problem solving. The iterative process of the present invention operates on a population of problem solving entities. First, the activated entities perform producing results. Then the results are assigned values and associated with the producing entity. Next, entities having relatively high associated values are selected. The selected entities perform either crossover or fitness proportionate reproduction. In addition other operations such as mutation, permutation, define building blocks and editing may be used. Lastly, the newly created entities are added to the population.
This invention disclosed herein is useful for solving at least three groups of problems. The first group of problems consists of a problem that presents itself under several different names, namely, the problem of symbolic function identification, symbolic regression, empirical discovery, modeling, induction, chaos, and forecasting.
The second group of problems contains several similar, but different, problems. This group contains the problems of symbolic integration, symbolic differentiation, symbolic solution of differential equations, symbolic solution of integral equations, symbolic solution of mathematical equations, and inverses.
The third group of problems contains several other seemingly different, but related, problems, namely, function learning, planning, automatic programming, game playing, concept formulation, pattern recognition, and neural net design.
All of these problems can be formulated and then solved in the manner described herein.
-
Citations
50 Claims
-
1. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for finding a composition of functions whose performance is a good fit, best fit or perfect fit to a sample of data, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the closeness of the fit of said corresponding program to said sample of data; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
2. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for finding a composition of functions whose performance is a good fit, best fit or perfect fit to the integral of a curve associated with a sample of data, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the closeness of the fit of said corresponding program to the integral of said curve associated with said sample of data; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
-
-
3. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for finding a composition of functions whose performance is a good fit, best fit or perfect fit to the derivative of a curve associated with a sample of data, said process comprising iterations of a series of steps, each iteration comprising the steps:
- executing each said program to produce a result;
assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the closeness of the fit of said corresponding program to the derivative of said curve associated with said sample of data; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
- executing each said program to produce a result;
-
4. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for finding a composition of functions whose performance is a good solution, best solution or perfect solution to a differential equation and its associated initial condition, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the closeness of said corresponding program in satisfying said differential equation and its associated initial condition; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
-
-
5. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for finding a composition of functions whose performance is a good solution, best solution or perfect solution to an integral equation, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the closeness of said corresponding program in satisfying said integral equation; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
-
-
6. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for finding a composition of functions whose performance is a good fit, best fit or perfect fit to the inverse function for a sample of data, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the closeness of the fit of said corresponding program to the inverse function for said sample of data; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
-
-
7. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for finding a composition of functions whose performance is a good solution, best solution or perfect solution to a mathematical equation, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the closeness of said corresponding program in satisfying said mathematical equation; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
-
-
8. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for finding a correct function associated with a particular combination of arguments by reference to a sample of functional results associated with sample combinations of arguments, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the similarity between said result of said corresponding program and said sample functional results; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program can at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
-
-
9. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for finding a best plan of action to achieve a desired result given an arbitary initial state, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the closeness of the performance of said corresponding program to said desired result; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population. - View Dependent Claims (29)
-
-
10. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for developing a strategy for playing a game, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the performance of said corresponding program in playing said game; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
-
-
11. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for automatically generating a computer program capable of producing a desired output, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a results; assigning a value to each said result and associating each said value with a corresponding program which produced each said results, said value indicative of the closeness of the performance of said corresponding program to producing said desired output; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
-
-
12. In a computer system having a population of programs of various sizes and structure wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for recognizing a pattern in input data, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the performance of said corresponding program in recognizing said pattern; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of program if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population. - View Dependent Claims (30)
-
-
13. In a computer system having a population of programs of various sizes and structure wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for generating a decision tree for classifying an object by reference to a sampling of relationships between attributes associated with an object and classifications associated with an object, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
execting each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the similarity between said result of said corresponding program and said sampling of relationships; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
-
-
14. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments, an iterative process for designing a neural network for performing tasks, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the performance of said corresponding program in performing said task; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population.
-
-
15. In a computer system having a population of programs of various sizes and structures wherein each program is a hierarchical arrangement of functions and arguments or a randomly generated constant appropriate to the domain of a problem, an iterative process for problem solving, said process comprising iterations of a series of steps, each iteration comprising the steps:
-
executing each said program to produce a result; assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the fitness of said corresponding program in solving or partially solving a problem; selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value; choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction; creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program; retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction; and adding said new program to said population. - View Dependent Claims (31, 32, 33, 34, 35)
-
-
36. A computer for solving problems comprising a processor and a memory means coupled to said processor for storing a population of programs of various sizes and shapes wherein each program is a hierarchical arrangement of functions and arguments or a randomly generated constant appropriate to the domain of a problem, said computer further comprising:
-
means for executing each said program to produce a result, said means for executing coupled to said memory means; means for assigning a value to each said result and associating each said value with a corresponding program which produced each said result, said value indicative of the fitness of said corresponding program in solving or partially solving a problem, said means for assigning coupled to said memory means; means for selecting at least one selected program from said population using selection criteria, said selection criteria based on said value associated with each said program, said selection criteria preferring each said program having a relatively high associated value over each said program having a relatively low associated value, said means for selecting coupled to said memory means; means for choosing and performing an operation wherein each chosen operation is one of the operations of crossover or reproduction, said means for choosing and performing coupled to said memory means; means for creating at least one new program by crossover using a group of programs if said chosen operation is crossover, said group of programs comprising said selected program and at least one other program from said population, such that any new program created by crossover comprises at least a portion of said selected program and at least a portion of said other program, said new program can differ in size and shape from said selected program and said other program, said means for creating coupled to said memory means; means for retaining said selected program such that said selected program remains unchanged if said chosen operation is reproduction, said means for retaining coupled to said memory means; means for adding said new program to said population, said means for adding coupled to said memory means. - View Dependent Claims (37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50)
-
Specification