The main part of milestone 3 is finished: Implementing a Python package for thoroughly benchmarking G3P methods according to different guidelines in GP literature. It covers a comprehensive and diverse set of search spaces (=grammars) and search goals (=objective functions): 105 symbolic regression problems, 8 boolean function approximation problems, 21 classification problems, 6 synthetic problems, 54 program synthesis problems.
Good, currently approaching milestone 3/4.
Milestone 2 is about to be concluded: Release of five G3P methods in form of a package on PyPI and GitHub. Milestone 3 is under active work: Collecting relevant literature about benchmarking in GP, reading it closely and drawing conclusions of what benchmarks to incorporate and how to statistically evaluate them.
I took some time out for vacation and due to personal health issues, but managed to make good progress on milestone 2 of this project.
Milestone 1: Release of v0.1.0 on GitHub with first twornmethods (CFG-GP, GE). The software is available at https://github.com/robert-haas/alogos with a permissive open source license.
Grammar-guided genetic programming Evolve programs in any context-free language for any quantitative goal
No Service Available
Grammar-guided genetic programming (GGGP, G3P) is a set of advanced optimization methods from the field of evolutionary computation (EC). These methods allow to search for optimal programs in any formal language that can be defined with a context-free grammar. This includes most general-purpose programming languages (e.g. Python, C++, Rust, OpenCog's Atomese), domain-specific languages (e.g. HTML, JSON, protobuf) and user-written mini-languages (e.g. geometric shape configurations).
The aim of this proposal is to implement five different G3P algorithms (CFG-GP, GE, piGE, DSGE, WHGE) that represent the state-of-the-art, integrate them in a single open-source software package, create a collection of benchmark problems from literature to compare them rigorously, and then bring the best performing algorithm as general-purpose optimization service to the SingularityNET platform. A proof-of-concept prototype with two algorithms (CFG-GP, GE) has already been created and successfully applied to solve example problems from different domains, which is shown in the attached supplementary material to demonstrate the feasibility of the project. The overall utility of these methods comes from the fact that many real-world tasks can be formulated as optimization problems and G3P methods can tackle a wide range of them. This flexibility comes from the ease of defining a search space with a grammar and because there is no need to implement new solution representations or search operators for each new domain.
Antecedens e.U.
Many tasks that arise in theory and practice can be expressed as optimization problems. For example, deciding which groceries to buy with a given budget, finding the shortest route between two places, or distributing funds between projects to achieve greatest impact are three practical optimization problems. Optimization simply means to search for the best solution out of many possible ones. To do so algorithmically, you need to precisely define
There are a lot of different search spaces. As a consequence, optimization methods can be classified by how flexible and efficient they are:
In practice, whenever you encounter a new optimization problem, it is useful to have a general method at hand to easily find a sufficiently good solution in little time, without first having to look for a specialized solver or even implementing one. Further, it is advantageous if that general method allows to define the search space of interest in a simple and precise way, because it is better to look for a solution in a confined space than in an unnecessarily large one, e.g. in a reasonable range of numbers instead of the set of all integers. The question is, which method meets those requirements best?
Evolutionary algorithms (EA) are general optimization methods that use ideas from natural evolution, such as random variation and natural selection, and have been used to find very good solutions in a wide range of hard optimization problems in areas such as planning, routing, design, control, and many others. The field that studies these algorithms is called evolutionary computation (EC). Historically it came from four separate branches called Genetic Algorithms (GA), Evolutionary Strategies (ES), Evolutionary Programming (EP) and Genetic Programming (GP). While genetic algorithms are best known, genetic programming is perhaps the most interesting one, because it deals with the evolution of computer programs and can emulate the other approaches.
This proposal is about grammar-guided genetic programming (GGGP), which is an advanced form of genetic programming that is highly flexible, because it uses context-free grammars (CFG) to define the search space. This means the set of all candidate solutions is the set of all valid strings defined by that grammar, or in other words, the grammar's language.
These methods allow to easily search for the best program or expression in general-purpose programming languages (Python, C++, Rust, OpenCog's Atomese), domain-specific languages (HTML, JSON, protobuf), or user-defined sub-languages (e.g. number literals in Rust) and mini-languages (e.g. a mixed parameter space for hyperparameter optimization). Given this flexibility, having such a method available on SingularityNET opens up an abundance of use cases, all of which can be built on top of it, either by calling the service on the platform, or by using the package internally. A working prototype was already created and used successfully to solve some simple and a few advanced use cases, which is shown in the attached supplementary material. The overall goal is to develop this prototype into an open-source package with proper testing and documentation, then benchmark the different methods and finally provide the most performant one as general-purpose optimization service on SingularityNET. Specific use cases can then be built on top of it by any developer who has basic familiarity with context-free grammars and optimization problems, two well-known topics in computer science and software design.
Research literature mentions two problems of genetic programming that are addressed by this project and which differentiates it from other solutions: 1. There is an accessibility problem: Methods are currently hard to use and compare. 2. There is a benchmarking problem: Methods are often tested on too simple examples from a small number of domains.
Visibility for the created package and service will be generated at locations where developers and researchers usually seek for implementations of genetic programming and its modern variants, such as
Additional exposure by SingularityNET's channels is also highly appreciated.
This project is self-sufficient in the sense that I bring the required skills to meet the described milestones without external help. However, I'd appreciate any feedback and discussions that allow me to implement the project in higher quality, especially when it comes to the goal of making the methods as easily accessible as possible to others. This includes for example the design of intuitive user-facing APIs and service parameters, as well as writing well-readable documentation and service descriptions, all of which profits from direct user feedback.
Placeholder for Spotlight Day Pitch-presentations. Video's will be added by the DF team when available.
Contract signed
$5,000 USD
Release of v0.1.0 on GitHub with first two methods (CFG-GP, GE).
Release of v0.2.0 on GitHub and PyPI with all five methods and test suite.
$14,000 USD
Release of v0.3.0 on GitHub and PyPI with benchmark collection and statistical evaluation methods.
$8,000 USD
Release of v1.0.0 on GitHub and PyPI with frozen API. Documentation website. AI Service and its donation to SNET.
Please create account or login to post comments.
New reviews and ratings are disabled for Awarded Projects
Reviews and Ratings in Deep Funding are structured in 4 categories. This will ensure that the reviewer takes all these perspectives into account in their assessment and it will make it easier to compare different projects on their strengths and weaknesses.
Overall (Primary) This is an average of the 4 perspectives. At the start of this new process, we are assigning an equal weight to all categories, but over time we might change this and make some categories more important than others in the overall score. (This may even be done retroactively). Feasibility (secondary)
This represents the user's assessment of whether the proposed project is theoretically possible and if it is deemed feasible. E.g. A proposal for nuclear fission might be theoretically possible, but it doesn’t look very feasible in the context of Deep Funding.
Viability (secondary)
This category is somewhat similar to Feasibility, but it interprets the feasibility against factors such as the size and experience of the team, the budget requested, and the estimated timelines. We could frame this as: “What is your level of confidence that this team will be able to complete this project and its milestones in a reasonable time, and successfully deploy it?” Examples:
Desirability (secondary)
Even if the project team succeeds in creating a product, there is the question of market fit. Is this a project that fulfills an actual need? Is there a lot of competition already? Are the USPs of the project sufficient to make a difference?
Example:
Usefulness (secondary)
This is a crucial category that aligns with the main goal of the Deep Funding program. The question to be asked here is: “To what extent will this proposal help to grow the Decentralized AI Platform?”
For proposals that develop or utilize an AI service on the platform, the question could be “How many API calls do we expect it to generate” (and how important / high-valued are these calls?). For a marketing proposal, the question could be “How large and well-aligned is the target audience?” Another question is related to how the budget is spent. Are the funds mainly used for value creation for the platform or on other things? Examples:
This represents the user\'s assessment of whether the proposed project is theoretically possible and if it is deemed feasible. E.g. A proposal for nuclear fission might be theoretically possible, but it doesn’t look very feasible in the context of Deep Funding.
Contribute your talents by joining your dream team and project. Visit the job board at Freelance DAO for opportunites today!
Proposal Summary
Please wait a moment!