Genetic Programming Code Farming for Building Block Generation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing genetic programming systems face inefficiencies in generating generic computational building blocks, leading to redundant searches and reliance on human-coded blocks that can introduce bias, which hampers the development of artificial general intelligence.

Innovation Solution

The use of genetic programming to create generic computational building blocks through a process called 'code farming,' where a GP system generates and evolves program fragments that can serve as reusable building blocks for seeding initial populations, reducing redundant searches and minimizing human intervention.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If hand-coded building blocks are used to seed initial population, then the GP system can start with useful programs, but human bias is introduced and human intelligence is required

Engineering Contradiction:
ImproveGP system performanceVSAvoidhuman intervention
Core Design Contradiction:
ProductivityVSExtent of automation

Solution Approach 1:

The GP system generates its own building blocks through automatic building block generation, eliminating the need for human-coded seeds. The system uses a fitness function to evaluate and select building blocks autonomously, allowing the GP process to self-service without human intervention while maintaining useful program generation

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

Building blocks are generated in advance through a preliminary GP process that creates a library of useful program fragments. These pre-generated building blocks are then stored and reused in subsequent GP runs, allowing the system to start with useful programs without requiring human coding for each new problem

Inventive Principle:
Principle #10Preliminary action

2Reliability

If new building blocks are determined for each new GP instance, then the building block hypothesis is maintained, but computational resources are wasted through redundant searches

Engineering Contradiction:
Improvebuilding block hypothesis validityVSAvoidcomputational resource waste
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The system creates a universal library of building blocks that can be applied across multiple different GP instances and problems. Instead of generating new building blocks for each problem, the same library serves multiple functions and different problem domains, reducing redundant computational searches while maintaining the effectiveness of the building block approach

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

Successfully generated building blocks from one GP instance are copied and reused in subsequent GP instances. The system replicates useful program fragments and stores them in a library, allowing other problems to benefit from previously discovered building blocks without repeating the computational search process

Inventive Principle:
Principle #26Copying

Data Source

PatentUS10956129B1Using genetic programming to create generic building blocks
Publication Date: 2021.03.23 NATURAL COMPUTATION LLC
  • US10956129B1 patent drawing
  • US10956129B1 patent drawing

AI summary

A method evolves generic computational building blocks. The method initializes a parent population with randomly generated programs. The method also obtains a list of randomly generated test inputs. The method generates a target dataset that includes input-output pairs of randomly generated binary strings. The method also applies a fitness function to assign a fitness score to each program, based on the input-output pairs of the target dataset. The method grows a seed list by applying genetic operators to the programs, and selecting offspring that satisfy a novelty condition. The novelty condition is representative of an ability of a program to produce distinct and unique output for the list of randomly generated test inputs. The method iterates until a terminating condition has been satisfied. The terminating condition is representative of an ability of programs in the seed list to solve one or more genetic programming instances.