From 8097d6d24fdd182639f3eb99256643170649425c Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sat, 20 Nov 2021 19:32:44 -1000 Subject: [PATCH] More working code generation --- grow/{ => defs}/add_one.yaml | 0 grow/defs/mul_five.yaml | 20 ++++++++++++++++++++ grow/defs/mul_four.yaml | 20 ++++++++++++++++++++ grow/defs/mul_two.yaml | 20 ++++++++++++++++++++ grow/grow.go | 5 ++++- grow/main.go | 4 ++++ 6 files changed, 68 insertions(+), 1 deletion(-) rename grow/{ => defs}/add_one.yaml (100%) create mode 100644 grow/defs/mul_five.yaml create mode 100644 grow/defs/mul_four.yaml create mode 100644 grow/defs/mul_two.yaml diff --git a/grow/add_one.yaml b/grow/defs/add_one.yaml similarity index 100% rename from grow/add_one.yaml rename to grow/defs/add_one.yaml diff --git a/grow/defs/mul_five.yaml b/grow/defs/mul_five.yaml new file mode 100644 index 0000000..e824f7d --- /dev/null +++ b/grow/defs/mul_five.yaml @@ -0,0 +1,20 @@ +global_memory_size: 1 +function_memory_size: 1 +instruction_limit: 2 +samples: +- global_memory_inputs: + 0: 0 + global_memory_outputs: + 0: 0 +- global_memory_inputs: + 0: 1 + global_memory_outputs: + 0: 5 +- global_memory_inputs: + 0: 2 + global_memory_outputs: + 0: 10 +- global_memory_inputs: + 0: 100 + global_memory_outputs: + 0: 500 diff --git a/grow/defs/mul_four.yaml b/grow/defs/mul_four.yaml new file mode 100644 index 0000000..75794c0 --- /dev/null +++ b/grow/defs/mul_four.yaml @@ -0,0 +1,20 @@ +global_memory_size: 1 +function_memory_size: 1 +instruction_limit: 2 +samples: +- global_memory_inputs: + 0: 0 + global_memory_outputs: + 0: 0 +- global_memory_inputs: + 0: 1 + global_memory_outputs: + 0: 4 +- global_memory_inputs: + 0: 2 + global_memory_outputs: + 0: 8 +- global_memory_inputs: + 0: 100 + global_memory_outputs: + 0: 400 diff --git a/grow/defs/mul_two.yaml b/grow/defs/mul_two.yaml new file mode 100644 index 0000000..f6d39cf --- /dev/null +++ b/grow/defs/mul_two.yaml @@ -0,0 +1,20 @@ +global_memory_size: 1 +function_memory_size: 1 +instruction_limit: 2 +samples: +- global_memory_inputs: + 0: 0 + global_memory_outputs: + 0: 0 +- global_memory_inputs: + 0: 1 + global_memory_outputs: + 0: 2 +- global_memory_inputs: + 0: 2 + global_memory_outputs: + 0: 4 +- global_memory_inputs: + 0: 100 + global_memory_outputs: + 0: 200 diff --git a/grow/grow.go b/grow/grow.go index 71cb35e..b82d51d 100644 --- a/grow/grow.go +++ b/grow/grow.go @@ -12,7 +12,8 @@ func (def *Definition) Grow() { log.Print("Starting grow run...") // TODO: Score should be number of output criteria, not number of Samples - for high_score < len(def.Samples) { + progs := 0 + for ; high_score < len(def.Samples); progs++ { prog := gen.RandProgram(def.GlobalMemorySize, def.FunctionMemorySize, def.InstructionLimit) score, err := def.Score(prog) @@ -31,6 +32,8 @@ func (def *Definition) Grow() { log.Printf("New high score %d / %d:\n%s", high_score, len(def.Samples), src) } } + + log.Printf("%d programs tested", progs) } func (def *Definition) Score(prog *vm.Program) (int, error) { diff --git a/grow/main.go b/grow/main.go index e624faa..7083514 100644 --- a/grow/main.go +++ b/grow/main.go @@ -2,7 +2,9 @@ package main import "flag" import "log" +import "math/rand" import "os" +import "time" func main() { defPath := flag.String("def-path", "", "path to definition YAML file") @@ -12,6 +14,8 @@ func main() { log.Fatal("Please specify --def-path") } + rand.Seed(time.Now().UnixNano()) + defFile, err := os.Open(*defPath) if err != nil { log.Fatal(err)