How to use MyProjectRunner

MyProjectRunner is an alternative to BrainSimulator GUI - you can use it to operate with projects without using GUI. That is especially handy if you want to:

Current capabilities

How to use it

If you want to use MyProjectRunner you can either create your own C# project or you can use our BrainSimulator solution placed in Sources folder. It contains CoreRunner project and its ExampleExperiment file. You can easily edit the Run method to try MyProjectRunner.

Simple example

MyProjectRunner runner = new MyProjectRunner();
runner.OpenProject(@"C:\Users\johndoe\Desktop\Breakout.brain");
runner.DumpNodes();
runner.RunAndPause(1000);
float[] data = runner.GetValues(24);
MyLog.INFO.WriteLine(data);
runner.Shutdown();

More advanced example

// Program tries different combinations of parameters for two nodes, computes average values for multiple runs, log results and saves them to file.

MyProjectRunner runner = new MyProjectRunner(MyLogLevel.WARNING);
runner.OpenProject(@"C:\Users\johndoe\Desktop\test.brain");
float iterations = 250;

List<Tuple<int, int, float, float>> results = new List<Tuple<int, int, float, float>>();
runner.Set(6, "OutputSize", 32);

for (int symbolSize = 512; symbolSize <= 8192; symbolSize *= 2)
{
   for (int binds = 20; binds <= 50; binds += 5)
   {
        float okSum = 0;
        runner.Set(7, "Binds", binds);
        runner.Set(7, "SymbolSize", symbolSize);
        for (int i = 0; i < iterations; ++i)
        {
            runner.RunAndPause(1, 10);
            float okDot = runner.GetValues(8)[0];
            okSum += okDot;
            runner.Reset();
            if ((i + 1) % 10 == 0)
                MyLog.WARNING.Write('.');
        }
        MyLog.WARNING.WriteLine();
        float wrongSum = 1;
        MyLog.WARNING.WriteLine("Results:" + symbolSize + "@" + binds + " => " + okSum / iterations + " / " + wrongSum / iterations);
        results.Add(new Tuple<int, int, float, float>(symbolSize, binds, okSum / iterations, wrongSum / iterations));
    }
}

File.WriteAllLines(@"C:\Users\johndoe\Desktop\results.txt", results.Select(n => n.ToString().Substring(1, n.ToString().Length - 2)));
runner.Shutdown();