From ac0e4eb51ca2fd595814031087039932729199ae Mon Sep 17 00:00:00 2001 From: sanine Date: Fri, 13 Oct 2023 12:36:51 -0500 Subject: implement genome parsing --- src/genome/genome.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/genome/genome.js') diff --git a/src/genome/genome.js b/src/genome/genome.js index 71e18c1..0f7275f 100644 --- a/src/genome/genome.js +++ b/src/genome/genome.js @@ -1,5 +1,7 @@ 'use strict'; +import { network } from '../mind/topology'; + export const mutation_type = Object.freeze({ none: 'none', @@ -71,3 +73,19 @@ export function get_size(num_input, num_output, genome) { return max_index + 1; } } + + +export function parse_genome(num_input, num_output, genome) { + const size = get_size(num_input, num_output, genome); + if (size < 0) { + // bad genome + throw new Error('invalid genome sequence!'); + } + + const n = genome.reduce( + (acc, [source, sink, weight]) => acc.connect(source, sink, weight), + network(num_input, size-num_input-num_output, num_output) + ); + + return n; +} -- cgit v1.2.1