feat: Add SMGPRegressor (Smooth Multifunction Genetic Programming#208
Closed
MichalicekPetr wants to merge 1 commit into
Closed
feat: Add SMGPRegressor (Smooth Multifunction Genetic Programming#208MichalicekPetr wants to merge 1 commit into
MichalicekPetr wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This Pull Request introduces
SMGPRegressor(Smooth Multifunction Genetic Programming), a novel symbolic regression method designed to address the challenges of non-linear, discontinuous fitness landscapes and efficient hardware acceleration (GPGPU mapping) in traditional Genetic Programming Algorithms (GPAs).The core of this method is based on the research paper "Smooth multi-function in evolutionary algorithm concept" (Michalicek & Brandejsky, University of Pardubice).
Scientific Background & Innovation
Traditional GPAs suffer from low causality in their search space: a single mutation or crossover event (e.g., swapping a multiplication for a sine operator) causes a radical, discontinuous jump in the fitness landscape.
SMGPRegressorsolves this by eliminating the traditional structural evolution of trees during parameter tuning. It embeds a perfect binary tree of Multifunctions parameterized by a single control variable Gamma.Unlike previous versatile/smooth functions (e.g., Diviplication, Subdition, or Versatile Functions with multiple control variables that artificially inflate the dimensionality of the fitness landscape), our proposed method maps n pairs of basis functions into a single continuous template controlled by a single parameter Gamma.
The transition between functions is smoothly continuous (C^1 class continuity). To resolve the non-differentiable sharp bounds of classic triangle/sawtooth membership functions, we utilize a Fourier series approximation of the triangle wave. This guarantees that the left and right derivatives match at all boundary points, smoothing the fitness landscape and enabling highly efficient continuous parameter optimization.
Key Advantages for Benchmarking
Architecture & Integration Details
The repository has been structured strictly following the SRBench Contribution Guide:
install.shto pull the stable engine components from our source repository during the benchmarking setup.SMGPRegressorfully implements the standard.fit(X, y)and.predict(X)API.metadata.ymlmatching the execution requirements.maxSecondsparameter and correctly exposes therandom_stateattribute for reproducibility.model(est, X=None)function maps internal representations back to standard, clean SymPy mathematical equations matching the input feature names of the trainingpd.DataFrame.Checklist
fit,predict).random_stateattribute exposed and respected.metadata.yml,regressor.py,install.sh, andLICENSE.model(est, X=None)returns a valid SymPy-compatible string with correct column mapping.install.shdoes not require sudo permissions.install.sh.