diff --git a/Sources/Accord.MachineLearning/BagOfWords.cs b/Sources/Accord.MachineLearning/BagOfWords.cs index 8076ac80b..c69bf298e 100644 --- a/Sources/Accord.MachineLearning/BagOfWords.cs +++ b/Sources/Accord.MachineLearning/BagOfWords.cs @@ -67,7 +67,10 @@ public class BagOfWords : IBagOfWords { private Dictionary stringToCode; + private ReadOnlyDictionary readOnlyStringToCode; + private Dictionary codeToString; + private ReadOnlyDictionary readOnlyCodeToString; /// @@ -83,7 +86,7 @@ public class BagOfWords : IBagOfWords /// public ReadOnlyDictionary StringToCode { - get { return new ReadOnlyDictionary(stringToCode); } + get { return readOnlyStringToCode; } } /// @@ -93,7 +96,7 @@ public ReadOnlyDictionary StringToCode /// public ReadOnlyDictionary CodeToString { - get { return new ReadOnlyDictionary(codeToString); } + get { return readOnlyCodeToString; } } /// @@ -144,7 +147,10 @@ public BagOfWords() private void initialize(string[][] texts) { stringToCode = new Dictionary(); + readOnlyStringToCode = new ReadOnlyDictionary(stringToCode); + codeToString = new Dictionary(); + readOnlyCodeToString = new ReadOnlyDictionary(codeToString); MaximumOccurance = 1; diff --git a/Sources/Accord.Math/Optimization/NonlinearObjectiveFunction.cs b/Sources/Accord.Math/Optimization/NonlinearObjectiveFunction.cs index afa4b619c..d82220307 100644 --- a/Sources/Accord.Math/Optimization/NonlinearObjectiveFunction.cs +++ b/Sources/Accord.Math/Optimization/NonlinearObjectiveFunction.cs @@ -25,8 +25,6 @@ namespace Accord.Math.Optimization using System; using System.Collections.Generic; using System.Linq.Expressions; - using System.Text.RegularExpressions; - using System.Text; /// /// Quadratic objective function. @@ -36,7 +34,10 @@ public class NonlinearObjectiveFunction : IObjectiveFunction { private Dictionary variables; + private readonly ReadOnlyDictionary readOnlyVariables; + private Dictionary indices; + private ReadOnlyDictionary readOnlyIndices; /// /// Gets input variable's labels for the function. @@ -44,7 +45,7 @@ public class NonlinearObjectiveFunction : IObjectiveFunction /// public IDictionary Variables { - get { return new ReadOnlyDictionary(variables); } + get { return readOnlyVariables; } } /// @@ -53,7 +54,7 @@ public IDictionary Variables /// public IDictionary Indices { - get { return new ReadOnlyDictionary(indices); } + get { return readOnlyIndices; } } /// @@ -94,7 +95,11 @@ public NonlinearObjectiveFunction(int numberOfVariables, this.Gradient = gradient; variables = new Dictionary(); + readOnlyVariables = new ReadOnlyDictionary(variables); + indices = new Dictionary(); + readOnlyIndices = new ReadOnlyDictionary(indices); + for (int i = 0; i < numberOfVariables; i++) { string name = "x" + i; @@ -118,7 +123,10 @@ public NonlinearObjectiveFunction( Expression> gradient = null) { variables = new Dictionary(); + readOnlyVariables = new ReadOnlyDictionary(variables); + indices = new Dictionary(); + readOnlyIndices = new ReadOnlyDictionary(indices); SortedSet list = new SortedSet(); ExpressionParser.Parse(list, function.Body);