Genetic programming problem solver with automatically defined stores loops and recursions
First Claim
Patent Images
1. A computer-implemented method for solving problems comprising:
- creating a population of programmatic entities from a set of generic functions; and
generating a solution to the problem by, altering an architecture of at least one programmatic entity of the population of programmatic entities by performing at least one of an automatically defined loop operation, an automatically defined recursion operation, and an automatically defined store operation, and evolving the population to generate a new entity.
1 Assignment
0 Petitions
Accused Products
Abstract
The present invention is a genetic programming problem solver that automatically generates computer programs to solve problems. The genetic programming problem solver incorporates architecture-altering operations. In one embodiment, the genetic programming problem solver uses architecture-altering operations for automatically defined functions and loops, together with indexed memory, to generate the resulting computer programs. In a second embodiment, the genetic programming problem solver uses architecture-altering operations of automatically defined function, loops, recursions, and stores to generate the resulting computer programs.
86 Citations
84 Claims
-
1. A computer-implemented method for solving problems comprising:
-
creating a population of programmatic entities from a set of generic functions; and
generating a solution to the problem by, altering an architecture of at least one programmatic entity of the population of programmatic entities by performing at least one of an automatically defined loop operation, an automatically defined recursion operation, and an automatically defined store operation, and evolving the population to generate a new entity. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38)
selecting an entity from the population of programmatic entities; - and
adding a new storage definition branch to the selected entity.
-
-
9. The method defined in claim 8 wherein adding a new storage definition branch comprises:
-
choosing a storage dimension and storage type for the new storage definition branch;
selecting an ordered set of storage sizes responsive to the storage dimension and storage size, the set of storage sized being appropriate for the storage dimension and storage size;
adding a storage writing branch and a storage reading branch to the new storage definition branch;
inserting a storage read branch and storage write branch pair into the selected entity; and
inserting a copy of the storage read branch and storage write branch pair for each dimension of the storage definition branch greater than one.
-
-
10. The method defined in claim 1 further comprises performing a storage addition operation by:
-
selecting an entity from the population of entities;
adding a new storage definition branch to the selected entity;
choosing a storage dimension, storage type, and storage size for the new storage definition branch;
adding a storage writing branch and a storage reading branch to the new storage definition branch;
choosing a node within the selected entity;
inserting a storage read branch and storage write branch pair at the node, wherein a write branch consists of a subtree rooted at the node; and
inserting a copy of the storage read branch and storage write branch pair into the selected entity for each dimension of the storage definition branch greater than one.
-
-
11. The method defined in claim 1 further comprises performing a storage deletion operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
deleting the storage read branch and storage write branch pair;
removing references to the selected storage read branch and storage write branch pair from the set of terminals and set of functions; and
deleting all invocations of the deleted storage read branch and storage write branch pair from the selected entity.
-
-
12. The method defined in claim 1 further comprises performing a storage duplication operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
duplicating the storage read branch and storage write branch pair in the selected entity; and
replicating preexisting invocations of the chosen storage read branch and storage write branch pair with invocations of the duplicated storage read branch and storage write branch pair.
-
-
13. The method defined in claim 1 further comprises performing a storage argument duplication operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
choosing an argument from an argument list of a storage definition branch corresponding to the storage read branch and storage write branch pair;
adding a new argument to the argument list which is a copy of the argument;
duplicating the new argument for all invocations of the argument list of the storage read branch and storage write branch pair in the selected entity; and
replicating preexisting storage in the selected entity.
-
-
14. The method defined in claim 1 further comprises performing a storage argument deletion operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
choosing an argument from an argument list of a storage definition branch corresponding to the storage read branch and storage write branch pair;
deleting the argument in the argument list;
deleting all subtrees in the selected entity corresponding to the argument;
replacing all occurrences of the argument with a surviving argument from the argument list; and
compressing preexisting storage in the selected entity.
-
-
15. The method defined in claim 1 wherein evolving the population comprises invoking an internally invokable sub-entity that provides a memory allocation for least one entity in the population.
-
16. The method defined in claim 1 further comprises performing a storage creation operation by:
-
selecting an entity from the population of entities; and
adding a new storage definition branch to the selected entity.
-
-
17. The method defined in claim 16 wherein adding the new storage definition branch comprises:
-
choosing a storage dimension, storage type, and storage size for the new storage definition branch;
adding a storage writing branch and a storage reading branch to the new storage definition branch;
inserting a storage read branch and storage write branch pair into the selected entity; and
inserting a copy of the storage read branch and storage write branch pair for each dimension of the storage definition branch greater than one.
-
-
18. The method defined in claim 1 further comprises performing a storage addition operation by:
-
selecting an entity from the population of entities;
adding a new storage definition branch to the selected entity;
choosing a storage dimension, storage type, and storage size for the new storage definition branch;
adding a storage writing branch and a storage reading branch to the new storage definition branch;
choosing a node within the selected entity;
inserting a storage read branch and storage write branch pair at the node, wherein a write branch consists of a subtree rooted at the node; and
inserting a copy of the storage read branch and storage write branch pair into the selected entity for each dimension of the storage definition branch greater than one.
-
-
19. The method defined in claim 1 further comprises performing a storage deletion operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
deleting the storage read branch and storage write branch pair;
removing references to the selected storage read branch and storage write branch pair from the set of terminals and set of functions; and
deleting all invocations of the deleted storage read branch and storage write branch pair from the selected entity.
-
-
20. The method defines in claim 1 further comprises performing a storage duplication operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
duplicating the storage read branch and storage write branch pair in the selected entity; and
replicating preexisting invocations of the chosen storage read branch and storage write branch pair with invocations of the duplicated storage read branch and storage write branch pair.
-
-
21. The method defined in claim 1 further comprises performing a storage argument duplication operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
choosing an argument from an argument list of a storage definition branch corresponding to the storage read branch and storage write branch pair;
adding a new argument to the argument list which is a copy of the argument;
duplicating the new argument for all invocations of the argument list of the storage read branch and storage write branch pair in the selected entity; and
replicating preexisting storage in the selected entity.
-
-
22. The method defined in claim 1 further comprises performing a storage argument deletion operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
choosing an argument from an argument list of a storage definition branch corresponding to the storage read branch and storage write branch pair;
deleting the argument in the argument list;
deleting all subtrees in the selected entity corresponding to the argument;
replacing all occurrences of the argument with a surviving argument from the argument list; and
compressing preexisting storage in the selected entity.
-
-
23. The method defined in claim 1 further comprises performing a loop creation operation by:
-
selecting an entity from the population of entities; and
adding a new loop definition branch to the selected entity.
-
-
24. The method defined in claim 23 wherein adding a new loop definition branch comprises:
-
adding a loop initialization branch to the new loop definition branch;
adding a loop condition branch to the new loop definition branch;
adding a loop update branch to the new loop definition branch;
adding a loop body branch to the new loop definition branch; and
inserting an invocation of the new loop definition branch within the selected entity.
-
-
25. The method defined in claim 24 wherein adding a loop initialization branch comprises:
-
choosing a first node in the selected entity; and
attaching a copy of the subtree rooted at the first node to the loop initialization branch.
-
-
26. The method defined in claim 24 wherein adding a loop condition branch comprises:
-
choosing a second node in the selected entity; and
attaching a copy of the subtree rooted at the second node to the loop condition branch.
-
-
27. The method defined in claim 24 wherein adding a loop update branch comprises:
-
choosing a third node in the selected entity; and
attaching a copy of the subtree rooted at the third node to the loop update branch.
-
-
28. The method defined in claim 24 wherein adding a loop body branch comprises:
-
choosing a fourth node in the selected entity; and
attaching a copy of the subtree rooted at the fourth node to the loop body branch.
-
-
29. The method defined in claim 28 further comprising replacing the subtree rooted at the fourth node with an invocation of the new loop definition branch.
-
30. The method defined in claim 1 further comprises performing a loop creation operation by:
-
selecting an entity from the population of entities;
adding a new loop definition branch to the selected entity;
choosing a first node in the selected entity;
adding a loop initialization branch to the new loop definition branch, wherein the loop initialization branch consists of a copy of the subtree rooted at the first node;
choosing a second node in the selected entity;
adding a loop condition branch to the new loop definition branch, wherein the loop condition branch consists of a copy of the subtree rooted at the second node;
choosing a third node in the selected entity;
adding a loop update branch to the new loop definition branch, wherein the loop update branch consists of a copy of the subtree rooted at the third node;
choosing a fourth node in the selected entity;
adding a loop body branch to the new loop definition branch, wherein the loop body branch consists of a copy of the subtree rooted at the fourth node; and
replacing the subtree rooted at the fourth node with an invocation of the new loop definition branch.
-
-
31. The method defined in claim 1 further comprises performing a loop duplication operation by:
-
selecting an entity from the population of entities;
creating a new loop definition branch in the selected entity by copying an existing loop definition in the selected entity; and
randomly replacing invocations of the existing loop definition branch in the selected entity with invocations of the new loop definition branch.
-
-
32. The method defined in claim 1 further comprises performing a recursion creation operation by:
-
selecting an entity from the population of entities; and
creating a new recursion definition branch in the selected entity.
-
-
33. The method defined in claim 32 wherein creating a new recursion definition branch comprises:
-
adding a recursion ground branch to the new recursion definition branch;
adding a recursion condition branch to the new recursion definition branch;
adding a recursion update branch to the new recursion definition branch;
adding a recursion body branch to the new recursion definition branch;
replacing a node terminal of the recursion body branch with an invocation to the argument list of the new recursion definition branch;
inserting an invocation to the new recursion definition branch within the selected entity;
randomly replacing an invocation of an argument subtree within the recursion definition branch with an invocation of the new recursion definition branch.
-
-
34. The method defined in claim 33 wherein adding a recursion ground branch comprises:
-
choosing a first node in the selected entity;
attaching a copy of the subtree rooted at the first node to the recursion ground branch; and
replacing a terminal node of the recursion ground branch with an invocation of an argument list of the new recursion definition branch.
-
-
35. The method defined in claim 33 wherein adding a recursion condition branch comprises:
-
choosing a second node in the selected entity;
attaching a copy of the subtree rooted at the second node to the recursion condition branch; and
replacing a terminal node of the recursion condition branch with an invocation of an argument list of the new recursion definition branch.
-
-
36. The method defined in claim 33 wherein adding a recursion update branch comprises:
-
choosing a third node in the selected entity;
attaching a copy of the subtree rooted at the third node to the recursion update branch; and
replacing a terminal node of the recursion update branch with an invocation of an argument list of the new recursion definition branch.
-
-
37. The method defined in claim 33 wherein adding a recursion body branch comprises:
-
choosing a fourth node in the selected entity;
attaching a copy of the subtree rooted at the fourth node to the recursion body branch; and
replacing a terminal node of the recursion body branch with an invocation of an argument list of the new recursion definition branch.
-
-
38. The method defined in claim 1 further comprises performing a recursion creation operation by:
-
selecting an entity from the population of entities;
creating a new recursion definition branch in the selected entity;
choosing a first node in the selected entity;
adding a recursion ground branch to the new recursion definition branch, wherein the recursion ground branch consists of a copy of the subtree rooted at the first node;
replacing a terminal node of the recursion ground branch with an invocation of an argument list of the new recursion definition branch;
choosing a second node in the selected entity;
adding a recursion condition branch to the new recursion definition branch, wherein the recursion condition branch consists of a copy of the subtree rooted at the second node;
replacing a node terminal of the recursion condition branch with an invocation of the argument list of the new recursion definition branch;
choosing a third node in the selected entity;
adding a recursion update branch to the new recursion definition branch, wherein the recursion update branch consists of a copy of the subtree rooted at the third node;
replacing a node terminal of the recursion update branch with an invocation to the argument list of the new recursion definition branch;
choosing a fourth node in the selected entity;
adding a recursion body branch to the new recursion definition branch, wherein the recursion body branch consists of a copy of the subtree rooted at the fourth node;
replacing a node terminal of the recursion body branch with an invocation to the argument list of the,new recursion definition branch;
replacing the subtree rooted at the fourth node with an invocation to the new recursion definition branch;
randomly replacing an invocation of an argument subtree within the recursion definition branch with an invocation of the new recursion definition branch.
-
-
39. A computer-implemented method for solving problems comprising:
-
creating a population of programmatic entities from a set of generic functions;
determining the behavior of each of the entities in the population; and
generating a solution to the problem by, altering an architecture of at least one programmatic entity of the population of programmatic entities by performing at least one of an automatically defined loop operation, an automatically defined recursion operation, and an automatically defined store operation, and adding the at least one new entity to the population of entities.
-
-
40. A computer-readable medium for solving problems, the computer-readable medium containing executable program instructions for performing iterations of a series of steps, each iteration comprising:
-
creating a population of programmatic entities from a set of generic functions; and
generating a solution to the problem by, altering an architecture of at least one programmatic entity of the population of programmatic entities by invocation of at least one of an automatically defined loop operation, an automatically defined recursion operation, and an automatically defined store operation, and evolving the population to generate a new entity. - View Dependent Claims (41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77)
selecting an entity from the population of programmatic entities; - and
adding a new storage definition branch to the selected entity.
-
-
48. The medium defined in claim 47 wherein adding a new storage definition branch comprises:
-
choosing a storage dimension and storage type for the new storage definition branch;
selecting an ordered set of storage sizes responsive to the storage dimension and storage size, the set of storage sized being appropriate for the storage dimension and storage size;
adding a storage writing branch and a storage reading branch to the new storage definition branch;
inserting a storage read branch and storage write branch pair into the selected entity; and
inserting a copy of the storage read branch and storage write branch pair for each dimension of the storage definition branch greater than one.
-
-
49. The medium defined in claim 40 further comprises performing a storage addition operation by:
-
selecting an entity from the population of entities;
adding a new storage definition branch to the selected entity;
choosing a storage dimension, storage type, and storage size for the new storage definition branch;
adding a storage writing branch and a storage reading branch to the new storage definition branch;
choosing a node within the selected entity;
inserting a storage read branch and storage write branch pair at the node, wherein a write branch consists of a subtree rooted at the node; and
inserting a copy of the storage read branch and storage write branch pair into the selected entity for each dimension of the storage definition branch greater than one.
-
-
50. The medium defined in claim 40 further comprises performing a storage deletion operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
deleting the storage read branch and storage write branch pair;
removing references to the selected storage read branch and storage write branch pair from the set of terminals and set of functions; and
deleting all invocations of the deleted storage read branch and storage write branch pair from the selected entity.
-
-
51. The medium defined in claim 40 further comprises performing a storage duplication operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
duplicating the storage read branch and storage write branch pair in the selected entity; and
replicating preexisting invocations of the chosen storage read branch and storage write branch pair with invocations of the duplicated storage read branch and storage write branch pair.
-
-
52. The medium defined in claim 40 further comprises performing a storage argument duplication operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
choosing an argument from an argument list of a storage definition branch corresponding to the storage read branch and storage write branch pair;
adding a new argument to the argument list which is a copy of the argument;
duplicating the new argument for all invocations of the argument list of the storage read branch and storage write branch pair in the selected entity; and
replicating preexisting storage in the selected entity.
-
-
53. The medium defined in claim 40 further comprises performing a storage argument deletion operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
choosing an argument from an argument list of a storage definition branch corresponding to the storage read branch and storage write branch pair;
deleting the argument in the argument list;
deleting all subtrees in the selected entity corresponding to the argument;
replacing all occurrences of the argument with a surviving argument from the argument list; and
compressing preexisting storage in the selected entity.
-
-
54. The medium defined in claim 40 wherein evolving the population comprises invoking an internally invokable sub-entity that provides a memory allocation for least one entity in the population.
-
55. The medium defined in claim 40 further comprises performing a storage creation operation by:
-
selecting an entity from the population of entities; and
adding a new storage definition branch to the selected entity.
-
-
56. The medium defined in claim 55 wherein adding the new storage definition branch comprises:
-
choosing a storage dimension, storage type, and storage size for the new storage definition branch;
adding a storage writing branch and a storage reading branch to the new storage definition branch;
inserting a storage read branch and storage write branch pair into the selected entity; and
inserting a copy of the storage read branch and storage write branch pair for each dimension of the storage definition branch greater than one.
-
-
57. The medium defined in claim 40 further comprises performing a storage addition operation by:
-
selecting an entity from the population of entities;
adding a new storage definition branch to the selected entity;
choosing a storage dimension, storage type, and storage size for the new storage definition branch;
adding a storage writing branch and a storage reading branch to the new storage definition branch;
choosing a node within the selected entity;
inserting a storage read branch and storage write branch pair at the node, wherein a write branch consists of a subtree rooted at the node; and
inserting a copy of the storage read branch and storage write branch pair into the selected entity for each dimension of the storage definition branch greater than one.
-
-
58. The medium defined in claim 40 further comprises performing a storage deletion operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
deleting the storage read branch and storage write branch pair;
removing references to the selected storage read branch and storage write branch pair from the set of terminals and set of functions; and
deleting all invocations of the deleted storage read branch and storage write branch pair from the selected entity.
-
-
59. The medium defines in claim 40 further comprises performing a storage duplication operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
duplicating the storage read branch and storage write branch pair in the selected entity; and
replicating preexisting invocations of the chosen storage read branch and storage write branch pair with invocations of the duplicated storage read branch and storage write branch pair.
-
-
60. The medium defined in claim 40 further comprises performing a storage argument duplication operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
choosing an argument from an argument list of a storage definition branch corresponding to the storage read branch and storage write branch pair;
adding a new argument to the argument list which is a copy of the argument;
duplicating the new argument for all invocations of the argument list of the storage read branch and storage write branch pair in the selected entity; and
replicating preexisting storage in the selected entity.
-
-
61. The medium defined in claim 40 further comprises performing a storage argument deletion operation by:
-
selecting an entity from the population of entities;
choosing a storage read branch and storage write branch pair in the selected entity;
choosing an argument from an argument list of a storage definition branch corresponding to the storage read branch and storage write branch pair;
deleting the argument in the argument list;
deleting all subtrees in the selected entity corresponding to the argument;
replacing all occurrences of the argument with a surviving argument from the argument list; and
compressing preexisting storage in the selected entity.
-
-
62. The medium defined in claim 40 further comprises performing a loop creation operation by:
-
selecting an entity from the population of entities; and
adding a new loop definition branch to the selected entity.
-
-
63. The medium defined in claim 62 wherein adding a new loop definition branch comprises:
-
adding a loop initialization branch to the new loop definition branch;
adding a loop condition branch to the new loop definition branch;
adding a loop update branch to the new loop definition branch;
adding a loop body branch to the new loop definition branch; and
inserting an invocation of the new loop definition branch within the selected entity.
-
-
64. The medium defined in claim 63 wherein adding a loop initialization branch comprises:
-
choosing a first node in the selected entity; and
attaching a copy of the subtree rooted at the first node to the loop initialization branch.
-
-
65. The medium defined in claim 63 wherein adding a loop condition branch comprises:
-
choosing a second node in the selected entity; and
attaching a copy of the subtree rooted at the second node to the loop condition branch.
-
-
66. The medium defined in claim 63 wherein adding a loop update branch comprises:
-
choosing a third node in the selected entity; and
attaching a copy of the subtree rooted at the third node to the loop update branch.
-
-
67. The medium defined in claim 63 wherein adding a loop body branch comprises:
-
choosing a fourth node in the selected entity; and
attaching a copy of the subtree rooted at the fourth node to the loop body branch.
-
-
68. The medium defined in claim 67 further comprising replacing the subtree rooted at the fourth node with an invocation of the new loop definition branch.
-
69. The medium defined in claim 40 further comprises performing a loop creation operation by:
-
selecting an entity from the population of entities;
adding a new loop definition branch to the selected entity;
choosing a first node in the selected entity;
adding a loop initialization branch to the new loop definition branch, wherein the loop initialization branch consists of a copy of the subtree rooted at the first node;
choosing a second node in the selected entity;
adding a loop condition branch to the new loop definition branch, wherein the loop condition branch consists of a copy of the subtree rooted at the second node;
choosing a third node in the selected entity;
adding a loop update branch to the new loop definition branch, wherein the loop update branch consists of a copy of the subtree rooted at the third node;
choosing a fourth node in the selected entity;
adding a loop body branch to the new loop definition branch, wherein the loop body branch consists of a copy of the subtree rooted at the fourth node; and
replacing the subtree rooted at the fourth node with an invocation of the new loop definition branch.
-
-
70. The medium defined in claim 40 further comprises performing a loop duplication operation by:
-
selecting an entity from the population of entities;
creating a new loop definition branch in the selected entity by copying an existing loop definition in the selected entity; and
randomly replacing invocations of the existing loop definition branch in the selected entity with invocations of the new loop definition branch.
-
-
71. The medium defined in claim 40 further comprises performing a recursion creation operation by:
-
selecting an entity from the population of entities; and
creating a new recursion definition branch in the selected entity.
-
-
72. The medium defined in claim 71 wherein creating a new recursion definition branch comprises:
-
adding a recursion ground branch to the new recursion definition branch;
adding a recursion condition branch to the new recursion definition branch;
adding a recursion update branch to the new recursion definition branch;
adding a recursion body branch to the new recursion definition branch;
replacing a node terminal of the recursion body branch with an invocation to the argument list of the new recursion definition branch;
inserting an invocation to the new recursion definition branch within the selected entity;
randomly replacing an invocation of an argument subtree within the recursion definition branch with an invocation of the new recursion definition branch.
-
-
73. The medium defined in claim 72 wherein adding a recursion ground branch comprises:
-
choosing a first node in the selected entity;
attaching a copy of the subtree rooted at the first node to the recursion ground branch; and
replacing a terminal node of the recursion ground branch with an invocation of an argument list of the new recursion definition branch.
-
-
74. The medium defined in claim 72 wherein adding a recursion condition branch comprises:
-
choosing a second node in the selected entity;
attaching a copy of the subtree rooted at the second node to the recursion condition branch; and
replacing a terminal node of the recursion condition branch with an invocation of an argument list of the new recursion definition branch.
-
-
75. The medium defined in claim 72 wherein adding a recursion update branch comprises:
-
choosing a third node in the selected entity;
attaching a copy of the subtree rooted at the third node to the recursion update branch; and
replacing a terminal node of the recursion update branch with an invocation of an argument list of the new recursion definition branch.
-
-
76. The medium defined in claim 72 wherein adding a recursion body branch comprises:
-
choosing a fourth node in the selected entity;
attaching a copy of the subtree rooted at the fourth node to the recursion body branch; and
replacing a terminal node of the recursion body branch with an invocation of an argument list of the new recursion definition branch.
-
-
77. The medium defined in claim 40 further comprises performing a recursion creation operation by:
-
selecting an entity from the population of entities;
creating a new recursion definition branch in the selected entity;
choosing a first node in the selected entity;
adding a recursion ground branch to the new recursion definition branch, wherein the recursion ground branch consists of a copy of the subtree rooted at the first node;
replacing a terminal node of the recursion ground branch with an invocation of an argument list of the new recursion definition branch;
choosing a second node in the selected entity;
adding a recursion condition branch to the new recursion definition branch, wherein the recursion condition branch consists of a copy of the subtree rooted at the second node;
replacing a node terminal of the recursion condition branch with an invocation of the argument list of the new recursion definition branch;
choosing a third node in the selected entity;
adding a recursion update branch to the new recursion definition branch, wherein the recursion update branch consists of a copy of the subtree rooted at the third node;
replacing a node terminal of the recursion update branch with an invocation to the argument list of the new recursion definition branch;
choosing a fourth node in the selected entity;
adding a recursion body branch to the new recursion definition branch, wherein the recursion body branch consists of a copy of the subtree rooted at the fourth node;
replacing a node terminal of the recursion body branch with an invocation to the argument list of the new recursion definition branch;
replacing the subtree rooted at the fourth node with an invocation to the new recursion definition branch;
randomly replacing an invocation of an argument subtree within the recursion definition branch with an invocation of the new recursion definition branch.
-
-
78. A computer-readable medium for solving problems, the computer-readable medium containing executable program instructions for performing iterations of a series of steps, each iteration comprising:
-
creating a population of programmatic entities from a set of generic functions;
determining the behavior of each of the entities in the population; and
generating a solution to the problem by, altering an architecture of at least one programmatic entity of the population of programmatic entities by performing at least one of an automatically defined loop operation, an automatically defined recursion operation, and an automatically defined store operation, and adding the at least one new entity to the population of entities.
-
-
79. A system for solving problems comprising:
-
means for creating a population of programmatic entities from a set of generic functions; and
means for generating a solution to the problem by, means for altering an architecture of at least one programmatic entity of the population of programmatic entities by means for performing at least one of an automatically defined loop operation, an automatically defined recursion operation, and an automatically defined store operation, and means for evolving the population to generate a new entity. - View Dependent Claims (80, 81)
-
-
82. A system for solving problems comprising:
-
means for creating a population of programmatic entities from a set of generic functions;
means for determining the behavior of the entity; and
means for generating a solution to the problem by, means for altering an architecture of at least one programmatic entity of the population of programmatic entities by means for at least one of an automatically defined loop operation, an automatically defined recursion operation, and an automatically defined store operation, and means for adding the at least one new entity to the population of entities.
-
-
83. A computer-implemented method for solving a problem comprising:
-
creating a population of programmatic entities from a set of generic functions; and
generating a solution to the problem by altering an architecture of at least one programmatic entity of the population of programmatic entities by performing at least one of an automatically defined loop operation, an automatically defined recursion operation, and an automatically defined store operation using one or more of a plurality of processors, and evolving the population to generate a new entity using one or more of the plurality of processors.
-
-
84. A computer-implemented method for solving arbitrary problems comprising:
-
creating a population of programmatic entities for each of the arbitrary problems from a set of generic functions; and
generating a solution to each of the arbitrary problems by altering an architecture of at least one programmatic entity of the population of programmatic entities, and evolving the population to generate a new entity.
-
Specification