Skip to content

Commit

Permalink
Implemented Network.RecursiveSteps() and related test cases.
Browse files Browse the repository at this point in the history
  • Loading branch information
yaricom committed Jun 21, 2022
1 parent 29b859d commit 1119a16
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
6 changes: 5 additions & 1 deletion neat/network/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,11 @@ func (n *Network) ForwardSteps(steps int) (res bool, err error) {
}

func (n *Network) RecursiveSteps() (bool, error) {
return false, errors.New("RecursiveSteps is not implemented")
netDepth, err := n.MaxActivationDepthFast(0)
if err != nil {
return false, err
}
return n.ForwardSteps(netDepth)
}

func (n *Network) Relax(_ int, _ float64) (bool, error) {
Expand Down
20 changes: 20 additions & 0 deletions neat/network/network_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,12 +216,32 @@ func TestNetwork_ForwardSteps(t *testing.T) {
assert.NoError(t, err)
assert.True(t, res)

expectedOuts := []float64{1.0, 1.0}
assert.EqualValues(t, expectedOuts, net.ReadOutputs())

// test zero steps
res, err = net.ForwardSteps(0)
assert.EqualError(t, err, ErrZeroActivationStepsRequested.Error())
assert.False(t, res)
}

func TestNetwork_RecursiveSteps(t *testing.T) {
net := buildNetwork()

data := []float64{0.5, 0.0, 1.5}
err := net.LoadSensors(data)
require.NoError(t, err, "failed to load sensors")

relaxed, err := net.RecursiveSteps()
assert.NoError(t, err)
assert.True(t, relaxed)

logNetworkActivationPath(net, t)

expectedOuts := []float64{1.0, 1.0}
assert.EqualValues(t, expectedOuts, net.ReadOutputs())
}

func TestNetwork_ForwardSteps_disconnected(t *testing.T) {
net := buildDisconnectedNetwork()

Expand Down

0 comments on commit 1119a16

Please sign in to comment.