private void CreateNewProject() { var oldProject = Project; Project = new MyProject(); Project.Network = Project.CreateNode<MyNetwork>(); Project.Network.Name = "Network"; worldList.SelectedIndex = -1; worldList.SelectedItem = MyConfiguration.KnownWorlds.Values.First(); Text = TITLE_TEXT + " - New Project"; exportStateButton.Enabled = false; clearDataButton.Enabled = false; Project.Restore(); RestoreDashboardForm(); UndoManager.Clear(); SaveState(GetSerializedProject(), Project.FileName, "New project"); RefreshUndoRedoButtons(); ApplyProjectOptions(); // Apply default project options such as save on stop to UI. saveFileDialog.FileName = string.Empty; }
public void BothDashboardsSerialize() { var project = new MyProject(); project.CreateWorld(typeof(MyTestingWorld)); project.Network = new MyNetwork(); var node = project.CreateNode <Node>(); node.Name = "Foo"; project.Network.AddChild(node); var dashboard = new Dashboard(); foreach (PropertySetup propertySetup in GetPropertyExamples(project)) { dashboard.Add(propertySetup.Target, propertySetup.PropertyName); } var groupDashboard = new GroupDashboard(); groupDashboard.Properties.Add(new DashboardPropertyGroup("Group 1")); groupDashboard.Properties[0].Add(dashboard.Properties[0]); YAXSerializer serializer = MyProject.GetSerializer <Dashboard>(); YAXSerializer groupSerializer = MyProject.GetSerializer <GroupDashboard>(); string serializedDashboard = serializer.Serialize(dashboard); string serializedGroupDashboard = groupSerializer.Serialize(groupDashboard); Dashboard deserializedDashboard = (Dashboard)serializer.Deserialize(serializedDashboard); deserializedDashboard.RestoreFromIds(project); project.Dashboard = deserializedDashboard; GroupDashboard deserializedGroupDashboard = (GroupDashboard)groupSerializer.Deserialize(serializedGroupDashboard); deserializedGroupDashboard.RestoreFromIds(project); project.GroupedDashboard = deserializedGroupDashboard; var compareLogic = new CompareLogic(new ComparisonConfig { MaxDifferences = 20, MembersToIgnore = new List <string> { "Proxy", "GenericProxy" } }); ComparisonResult result = compareLogic.Compare(dashboard, deserializedDashboard); m_output.WriteLine(result.DifferencesString); Assert.True(result.AreEqual); result = compareLogic.Compare(groupDashboard, deserializedGroupDashboard); m_output.WriteLine(result.DifferencesString); Assert.True(result.AreEqual); }
public void SerializesAndDeserializesCorrectly() { // I.e. deserialized(serialized(PROJECT)) should equal PROJECT string tmpPath = Path.GetTempPath(); MyConfiguration.SetupModuleSearchPath(); MyConfiguration.LoadModules(); MyConfiguration.KnownNodes.Add(typeof(TestNode), new MyNodeConfig()); var project = new MyProject(); project.Network = project.CreateNode <MyNetwork>(); project.Network.Name = "Network"; project.CreateWorld(typeof(MyTestingWorld)); project.Name = "test"; var node = project.CreateNode <TestNode>(); project.Network.AddChild(node); project.Restore(); string serialized = project.Serialize(tmpPath); MyProject deserializedProject = MyProject.Deserialize(serialized, tmpPath); // MaxDifferences = 20 - A magic number. It shows more than one difference in the log. // There should eventually be zero differences, so this number can be arbitrary. Adjust as needed. // Observers are ignored - there are none, and the (de)serialization mechanism works with them in a special way. var compareLogic = new CompareLogic(new ComparisonConfig { MaxDifferences = 20, MembersToIgnore = new List <string> { "Observers" } }); ComparisonResult result = compareLogic.Compare(project, deserializedProject); m_output.WriteLine(result.DifferencesString); Assert.True(result.AreEqual); }
private static TestNode GetTestingNode() { var project = new MyProject {SimulationHandler = TypeMap.GetInstance<MySimulationHandler>()}; project.SimulationHandler.Simulation.IsStepFinished = true; var node = project.CreateNode<TestNode>(); node.UpdateMemoryBlocks(); MyMemoryManager.Instance.AllocateBlocks(node, false); return node; }
public void SimulationRunsViaRunner() { using (var runner = new MyProjectRunner()) { MyProject project = runner.CreateProject(typeof(MyTestingWorld)); var node = project.CreateNode <MyCSharpNode>(); project.Network.AddChild(node); runner.RunAndPause(1); } }
public void SimulationStateChangedOnNodesTest() { var simulation = TypeMap.GetInstance <MySimulation>(); var handler = new MySimulationHandler(simulation); MyProject project = new MyProject { Network = new MyNetwork() }; project.CreateWorld(typeof(MyTestingWorld)); var node = project.CreateNode <TestingNode>(); node.Event = new AutoResetEvent(false); project.Network.AddChild(node); var connection = new MyConnection(project.Network.GroupInputNodes[0], project.Network.Children[0]); connection.Connect(); project.Network.PrepareConnections(); handler.Project = project; handler.UpdateMemoryModel(); handler.StartSimulation(); node.Event.WaitOne(); Assert.Equal(MySimulationHandler.SimulationState.STOPPED, node.PreviousState); Assert.Equal(MySimulationHandler.SimulationState.RUNNING, node.CurrentState); handler.PauseSimulation(); node.Event.WaitOne(); Assert.Equal(MySimulationHandler.SimulationState.RUNNING, node.PreviousState); Assert.Equal(MySimulationHandler.SimulationState.PAUSED, node.CurrentState); handler.StartSimulation(stepCount: 1u); node.Event.WaitOne(); // Here the sim goes from paused to RUNNING_STEP. Assert.Equal(MySimulationHandler.SimulationState.PAUSED, node.PreviousState); Assert.Equal(MySimulationHandler.SimulationState.RUNNING_STEP, node.CurrentState); node.Event.WaitOne(); // Here it goes to PAUSED. Assert.Equal(MySimulationHandler.SimulationState.RUNNING_STEP, node.PreviousState); Assert.Equal(MySimulationHandler.SimulationState.PAUSED, node.CurrentState); handler.StopSimulation(); node.Event.WaitOne(); Assert.Equal(MySimulationHandler.SimulationState.PAUSED, node.PreviousState); Assert.Equal(MySimulationHandler.SimulationState.STOPPED, node.CurrentState); handler.Finish(); }
//internal Uri ProjectLocation { get; private set; } private void CreateNewProject() { Project = new MyProject(); Project.Network = Project.CreateNode <MyNetwork>(); Project.Network.Name = "Network"; worldList.SelectedIndex = -1; worldList.SelectedItem = MyConfiguration.KnownWorlds.Values.First(); Text = TITLE_TEXT + " - New Project"; exportStateButton.Enabled = false; clearDataButton.Enabled = false; }
private static TestNode GetTestingNode() { var project = new MyProject { SimulationHandler = TypeMap.GetInstance <MySimulationHandler>() }; project.SimulationHandler.Simulation.IsStepFinished = true; var node = project.CreateNode <TestNode>(); node.UpdateMemoryBlocks(); MyMemoryManager.Instance.AllocateBlocks(node, false); return(node); }
public void SimulationStateChangedOnNodesTest() { var simulation = new MyLocalSimulation(); var handler = new MySimulationHandler(simulation); MyProject project = new MyProject { Network = new MyNetwork() }; project.CreateWorld(typeof(MyTestingWorld)); var node = project.CreateNode<TestingNode>(); node.Event = new AutoResetEvent(false); project.Network.AddChild(node); var connection = new MyConnection(project.Network.GroupInputNodes[0], project.Network.Children[0]); connection.Connect(); project.Network.PrepareConnections(); handler.Project = project; handler.UpdateMemoryModel(); handler.StartSimulation(oneStepOnly: false); node.Event.WaitOne(); Assert.Equal(MySimulationHandler.SimulationState.STOPPED, node.PreviousState); Assert.Equal(MySimulationHandler.SimulationState.RUNNING, node.CurrentState); handler.PauseSimulation(); node.Event.WaitOne(); Assert.Equal(MySimulationHandler.SimulationState.RUNNING, node.PreviousState); Assert.Equal(MySimulationHandler.SimulationState.PAUSED, node.CurrentState); handler.StartSimulation(oneStepOnly: true); node.Event.WaitOne(); // Here the sim goes from paused to RUNNING_STEP. Assert.Equal(MySimulationHandler.SimulationState.PAUSED, node.PreviousState); Assert.Equal(MySimulationHandler.SimulationState.RUNNING_STEP, node.CurrentState); node.Event.WaitOne(); // Here it goes to PAUSED. Assert.Equal(MySimulationHandler.SimulationState.RUNNING_STEP, node.PreviousState); Assert.Equal(MySimulationHandler.SimulationState.PAUSED, node.CurrentState); handler.StopSimulation(); node.Event.WaitOne(); Assert.Equal(MySimulationHandler.SimulationState.PAUSED, node.PreviousState); Assert.Equal(MySimulationHandler.SimulationState.STOPPED, node.CurrentState); handler.Finish(); }
public void CreatesAndRunsMNIST() { using (var runner = new MyProjectRunner()) { MyProject project = runner.CreateProject(typeof(MNISTWorld)); var world = project.World as MNISTWorld; var neuralGroup = project.CreateNode <MyNeuralNetworkGroup>(); project.Network.AddChild(neuralGroup); var hiddenLayer = project.CreateNode <MyHiddenLayer>(); neuralGroup.AddChild(hiddenLayer); var outputLayer = project.CreateNode <MyOutputLayer>(); neuralGroup.AddChild(outputLayer); var accumulator = project.CreateNode <MyAccumulator>(); neuralGroup.AddChild(accumulator); // Connect the nodes. project.Connect(project.Network.GroupInputNodes[0], neuralGroup, 0, 0); project.Connect(project.Network.GroupInputNodes[1], neuralGroup, 0, 1); project.Connect(neuralGroup.GroupInputNodes[0], hiddenLayer, 0, 0); project.Connect(neuralGroup.GroupInputNodes[1], outputLayer, 0, 1); project.Connect(hiddenLayer, outputLayer, 0, 0); project.Connect(outputLayer, accumulator, 1, 0); // Setup the nodes. var sendMnistData = world.SendMNISTTrainData; Assert.NotNull(sendMnistData); sendMnistData.ExpositionTime = 1; world.BitmapOrder = ExampleOrderOption.Shuffle; world.OneHot = true; hiddenLayer.Neurons = 40; accumulator.ApproachValue.ApproachMethod = MyAccumulator.MyApproachValueTask.SequenceType.Momentum; accumulator.ApproachValue.Delta = 0.1f; accumulator.ApproachValue.Target = 0; accumulator.ApproachValue.Factor = 0.9f; // Enable tasks. project.World.EnableDefaultTasks(); neuralGroup.EnableDefaultTasks(); neuralGroup.RMS.Enabled = true; hiddenLayer.EnableDefaultTasks(); outputLayer.EnableDefaultTasks(); accumulator.EnableDefaultTasks(); accumulator.ApproachValue.Enabled = true; // Run the simulation. runner.RunAndPause(100); float error = runner.GetValues(accumulator.Id)[0]; Assert.True(error < 0.5f); //runner.SaveProject(@"c:\foobar.brain"); } }
//internal Uri ProjectLocation { get; private set; } private void CreateNewProject() { Project = new MyProject(); Project.Network = Project.CreateNode<MyNetwork>(); Project.Network.Name = "Network"; worldList.SelectedIndex = -1; worldList.SelectedItem = MyConfiguration.KnownWorlds.Values.First(); Text = TITLE_TEXT + " - New Project"; exportStateButton.Enabled = false; clearDataButton.Enabled = false; }
public void CreatesAndRunsMNIST() { using (var runner = new MyProjectRunner()) { MyProject project = runner.CreateProject(typeof(MyMNISTWorld)); MyWorld world = project.World; var neuralGroup = project.CreateNode <MyNeuralNetworkGroup>(); project.Network.AddChild(neuralGroup); var hiddenLayer = project.CreateNode <MyHiddenLayer>(); neuralGroup.AddChild(hiddenLayer); var outputLayer = project.CreateNode <MyOutputLayer>(); neuralGroup.AddChild(outputLayer); var accumulator = project.CreateNode <MyAccumulator>(); neuralGroup.AddChild(accumulator); // Connect the nodes. project.Connect(project.Network.GroupInputNodes[0], neuralGroup, 0, 0); project.Connect(project.Network.GroupInputNodes[1], neuralGroup, 0, 1); project.Connect(neuralGroup.GroupInputNodes[0], hiddenLayer, 0, 0); project.Connect(neuralGroup.GroupInputNodes[1], outputLayer, 0, 1); project.Connect(hiddenLayer, outputLayer, 0, 0); project.Connect(outputLayer, accumulator, 1, 0); // Setup the nodes. MyTask sendMnistData = world.GetTaskByPropertyName("SendTrainingMNISTData"); Assert.NotNull(sendMnistData); sendMnistData.GetType().GetProperty("RandomEnumerate").SetValue(sendMnistData, true); sendMnistData.GetType().GetProperty("ExpositionTime").SetValue(sendMnistData, 1); world.GetType().GetProperty("Binary").SetValue(world, true); hiddenLayer.Neurons = 40; accumulator.ApproachValue.ApproachMethod = MyAccumulator.MyApproachValueTask.SequenceType.Momentum; accumulator.ApproachValue.Delta = 0.1f; accumulator.ApproachValue.Target = 0; accumulator.ApproachValue.Factor = 0.9f; // Enable tasks. project.World.EnableDefaultTasks(); neuralGroup.EnableDefaultTasks(); neuralGroup.RMS.Enabled = true; hiddenLayer.EnableDefaultTasks(); outputLayer.EnableDefaultTasks(); accumulator.EnableDefaultTasks(); accumulator.ApproachValue.Enabled = true; // Run the simulation. runner.RunAndPause(100); float error = runner.GetValues(accumulator.Id)[0]; Assert.True(error < 0.5f); //runner.SaveProject(@"c:\foobar.brain"); } }