public static void createStatesDBForDomain(string domainFolder, string outputFolder, DomainDependentSolver solver, long totalSamples, bool storeObjectGraphs = true) { var problemFiles = PADDUtils.FileSystemUtils.enumerateProblemFiles(domainFolder).ToList(); long samplesPerFile = totalSamples / problemFiles.Count; PADDUtils.FileSystemUtils.createDirIfNonExisting(outputFolder); long samplesGenerated = 0; long toBeGenerated = samplesPerFile * problemFiles.Count; using (var writter = new StreamWriter(Path.Combine(outputFolder, "samples.tsv"))) { long currentID = 1; writter.WriteLine("_ID\ttarget\tstate\tdomain\tproblem"); //writing header foreach (var item in problemFiles) { var sasProblem = new Problem(item, false); var initialState = sasProblem.InitialState; PADD.StatesDB.StatesEnumerator e = new RandomWalksFromGoalPathStateSpaceEnumerator(sasProblem, solver); DBCreator c = new DBCreator(e); var samples = c.createSamples(item, solver, samplesPerFile, TimeSpan.FromHours(5)); foreach (var sample in samples) { samplesGenerated++; if (samplesGenerated % 100 == 0) { Console.WriteLine("Samples generated: " + samplesGenerated + " out of " + toBeGenerated + " (" + ((double)samplesGenerated / toBeGenerated * 100).ToString("0.00") + " %"); } writter.Write(currentID + "\t"); writter.Write(sample.val + "\t"); writter.Write(sample.key + "\t"); writter.Write(Path.GetFileName(domainFolder) + "\t"); writter.WriteLine(Path.GetFileName(item)); if (storeObjectGraphs) { IState s = State.Parse(sample.key); sasProblem.SetInitialState(s); var graph = KnowledgeExtractionGraphs.computeObjectGraph(sasProblem).toMSAGLGraph(); /* * Console.WriteLine(sample.key + "\t" + s.toStringWithMeanings()); * Utils.GraphVisualization.GraphVis.showGraph(graph); */ string graphPath = Path.Combine(outputFolder, "graphs", currentID.ToString() + ".bin"); PADDUtils.FileSystemUtils.createDirIfNonExisting(Path.Combine(outputFolder, "graphs")); using (var stream = new FileStream(graphPath, FileMode.Create)) { graph.WriteToStream(stream); } sasProblem.SetInitialState(initialState); } currentID++; } } } }
public static void createStatesDB(string problemFile, DomainDependentSolver domainSpecificSolver) { var sasProblem = new Problem(problemFile, false); PADD.StatesDB.StatesEnumerator e = new RandomWalksFromGoalPathStateSpaceEnumerator(sasProblem, domainSpecificSolver); DBCreator c = new DBCreator(e); if (domainSpecificSolver is PADD.DomainDependentSolvers.VisitAll.VisitAllSolver) { var goalPath = ((RandomWalksFromGoalPathStateSpaceEnumerator)e).goalPath; ((PADD.DomainDependentSolvers.VisitAll.VisitAllSolver)domainSpecificSolver).drawPlan(goalPath); } c.createDB(problemFile, domainSpecificSolver, 100000, TimeSpan.FromHours(1)); var states = c.DB.getAllElements().ToList(); Trie <int> t = Trie <int> .load(c.getDBFilePath(problemFile), s => int.Parse(s)); states = t.getAllElements().ToList(); var realStates = states.Select(s => (State.Parse(s.key), s.value)).ToList(); }