diff src/solver.tp @ 56:f864792a1b17

Improve prefiltering in program generator. Make solver use similar logic to driver when run standalone.
author Mike Pavone <pavone@retrodev.com>
date Sun, 11 Aug 2013 14:11:47 -0700
parents f4399a22a704
children c50f0fb9a717
line wrap: on
line diff
--- a/src/solver.tp	Sun Aug 11 14:08:13 2013 -0700
+++ b/src/solver.tp	Sun Aug 11 14:11:47 2013 -0700
@@ -218,7 +218,6 @@
 			}
 			prog <- bv program
 			if: size >= 2 {
-				trees <- (prog allOfSize: size)
 				numTests <- 0
 				if: (args length) > 2 {
 					numTests <- int32: (args get: 2)
@@ -226,10 +225,22 @@
 				if: numTests <= 0 {
 					numTests <- 16
 				}
+				trees <- #[]
+
 				if: (args length) > 3 {
 					ops <- (args get: 3) splitOn: ","
-					trees <- prog filterTrees: trees ops
+					if: size < 10 {
+						trees <- prog filterTrees: (prog allOfSize: size) ops
+					} else: {
+						print: "Generating programs for operators: " . (ops fold: "" with: :acc el { acc . el }) . "\n"
+						trees <- prog allOfSize: size withOps: ops
+						print: "Generated " . (string: (trees length)) . " programs\n"
+						trees <- prog filterTrees: trees ops
+					}
+				} else: {
+					trees <- (prog allOfSize: size)
 				}
+				print: "Running classifier on " . (string: (trees length)) . " programs\n"
 				info <- classify: prog trees numTests
 				if: (args length) > 5 {
 					progId <- (args get: 4)