public void Setup() { Pattern1 = new HopfieldPattern(0.0, 1.0, 0.0, 1.0); Pattern2 = new HopfieldPattern(1.0, 0.0, 0.0, 1.0); Network = new HopfieldNetwork(4); Network.Train(Pattern1); Network.Train(Pattern2); }
/** * A simple main method to test the Hopfield neural network. * * @param args * Not used. */ static void Main(string[] args) { // Create the neural network. HopfieldNetwork network = new HopfieldNetwork(4); // This pattern will be trained bool[] TrainingPattern = { true, true, false, false }; // This pattern will be presented bool[] PresentedPattern = { true, false, false, false }; bool[] result; // train the neural network with pattern1 Console.WriteLine("Training Hopfield network with: " + FormatBoolean(TrainingPattern)); network.Train(TrainingPattern); // present pattern1 and see it recognized result = network.Present(TrainingPattern); Console.WriteLine("Presenting pattern:" + FormatBoolean(TrainingPattern) + ", and got " + FormatBoolean(result)); // Present pattern2, which is similar to pattern 1. Pattern 1 // should be recalled. result = network.Present(PresentedPattern); Console.WriteLine("Presenting pattern:" + FormatBoolean(PresentedPattern) + ", and got " + FormatBoolean(result)); Console.ReadLine(); }
public void GetResult() { var network = new HopfieldNetwork(); network.Train(new Dictionary <string, string> { { "1", Pattern1 }, { "2", Pattern2 } }); var result = network.GetResult(Pattern1); Assert.AreEqual(Pattern1, result); }
public void TrainEventTest() { var network = new HopfieldNetwork(); network.OnItemProcessed += (sender, args) => { Assert.AreEqual(Math.Sqrt(network.NumberOfNeurons), args.ItemsCount); }; network.Train(new Dictionary <string, string> { { "1", Pattern1 }, { "2", Pattern2 } }); }
public void EvaluateEnergyFunctionTest() { var network = new HopfieldNetwork(); network.Train(new Dictionary <string, string> { { "1", Pattern1 }, { "2", Pattern2 } }); var energyState = network.CurrentEnergyState; network.GetResult(Pattern3); Assert.IsTrue(network.CurrentEnergyState <= energyState); }
private void TrainButton_Click(object sender, RoutedEventArgs e) { var colCount = 5; var rowCount = 5; var pattern = new double[colCount * rowCount]; for (var row = 0; row < rowCount; row++) { for (var col = 0; col < colCount; col++) { pattern[row * colCount + col] = ((ToggleButton)_GetControlIn(DrawingGrid, new GridCoordinates(row, col))).IsChecked.Value ? 1.0 : 0.0; } } var hopfieldPattern = new HopfieldPattern(pattern); hopfieldNetwork = hopfieldNetwork ?? new HopfieldNetwork(25); hopfieldNetwork.Train(hopfieldPattern); }