public void ShouldRecogniseInversedSymbolWithNoises() { // given var hopfieldNetwork = new HopfieldNetwork(); var symbolsToLearn = new List <BipolarSymbol> { SymbolFactory.CreateBipolarFromDigit(0), SymbolFactory.CreateBipolarFromDigit(1), SymbolFactory.CreateBipolarFromDigit(2) }; hopfieldNetwork.Learn(symbolsToLearn); // when bool symbolIsRecognised = hopfieldNetwork.TryRecognise(IversedNumberOneWithNoises()); // then Assert.Equal(1, hopfieldNetwork.IterationsCountOfRecognising); Assert.True(symbolIsRecognised); BipolarSymbol expectedRecognisedSymbol = SymbolFactory.CreateBipolarFromDigit(1); expectedRecognisedSymbol.Inverse(); Assert.Equal(expectedRecognisedSymbol.ConvertToOneDimensionalArray(), hopfieldNetwork.SymbolsOut); }
public void ShouldInverseValues() { // given const int rowWithOriginallyNegativeValue = 0; const int rowWithOriginallyPositiveValue = 1; var bipolarSymbol = new BipolarSymbol(SymbolValuesWithVariedValues(rowWithOriginallyNegativeValue, rowWithOriginallyPositiveValue)); // when bipolarSymbol.Inverse(); // then for (var column = 0; column < SymbolValues.ColumnSize; column++) { Assert.Equal(1, bipolarSymbol.Values[rowWithOriginallyNegativeValue, column]); Assert.Equal(-1, bipolarSymbol.Values[rowWithOriginallyPositiveValue, column]); } }