From 5660eba03f8b06057d4c2d81238c2e48942b8d15 Mon Sep 17 00:00:00 2001 From: soypat Date: Tue, 16 May 2023 20:31:55 -0300 Subject: [PATCH] implement GeneGrad on all float genes --- genes/grad.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/genes/grad.go b/genes/grad.go index 43c3b2f..1676e86 100644 --- a/genes/grad.go +++ b/genes/grad.go @@ -2,12 +2,28 @@ package genes import "github.com/soypat/mu8" +// Package level defined default step size. const defaultStep = 5e-7 +// Step returns the step size that should be performed during gradient descent. +// It implements the [mu8.GeneGrad] interface by returning a package-level defined default step size. +func (*ConstrainedFloat) Step() float64 { return defaultStep } + +// Step returns the step size that should be performed during gradient descent. +// It implements the [mu8.GeneGrad] interface by returning a package-level defined default step size. +func (*ConstrainedNormalDistr) Step() float64 { return defaultStep } + +// Step returns the step size that should be performed during gradient descent. +// It implements the [mu8.GeneGrad] interface by returning a package-level defined default step size. +func (*NormalDistribution) Step() float64 { return defaultStep } + // compile time check that these types implement the GeneGrad interface. var ( _ mu8.GeneGrad = (*ConstrainedFloatGrad)(nil) _ mu8.GeneGrad = (*ConstrainedNormalDistrGrad)(nil) + _ mu8.GeneGrad = (*ConstrainedFloat)(nil) + _ mu8.GeneGrad = (*ConstrainedNormalDistr)(nil) + _ mu8.GeneGrad = (*NormalDistribution)(nil) ) // ConstrainedFloatGrad is a ConstrainedFloat that implements the GeneGrad interface