diff --git a/README.md b/README.md index 805e42c..ffd3ab5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,14 @@ # GeneExpressionProgramming for symbolic regression The repository contains an implementation of the Gene Expression Programming [1], whereby the internal representation of the equation is fully tokenized as a vector of integers. This representation allows a lower memory footprint, leading to faster processing of the application of the genetic operators. Moreover, the implementation also contains a mechanism for semantic backpropagation, ensuring dimensional homogeneity for physical units [2]. +# Features +- Standard GEP Symbolic Regression +- Multi-Objective optimization +- Population initialization based on Latin Hypercube Sampling +- Coefficient Optimization +- Matrix/ Tensor optimization +- Phy. Dimensionality Consideration + # How to use it? - Install the package: ```julia @@ -166,7 +174,6 @@ print_karva_strings(lsg) - The Coefficient optimization is inspired by [https://github.com/MilesCranmer/SymbolicRegression.jl](https://github.com/MilesCranmer/SymbolicRegression.jl/blob/master/src/ConstantOptimization.jl) - We employ the insane fast [DynamicExpressions.jl](https://github.com/SymbolicML/DynamicExpressions.jl) for evaluating our expressions - # How to cite Feel free to utilize it for your research, it would be nice __citing us__! Our [paper](https://doi.org/10.1007/s10710-025-09510-z). ``` diff --git a/src/Gep.jl b/src/Gep.jl index 4052057..49bb53c 100644 --- a/src/Gep.jl +++ b/src/Gep.jl @@ -226,7 +226,7 @@ end """ @inline function equation_characterization_default(population::Vector{Chromosome}, n_samples::Int; inputs_::Int=0) len_extented_pop = length(population) - coeff_count = isempty(population[1].toolbox.preamble_syms) ? 1 : length(length(population[1].toolbox.preamble_syms)) + coeff_count = isempty(population[1].toolbox.preamble_syms) ? 1 : length(population[1].toolbox.preamble_syms) features = zeros(coeff_count * 2, len_extented_pop) prob_dataset = rand(Uniform(0, 1), 100, inputs_ == 0 ? 10 : inputs_)