using System; using System.Collections.Generic; using System.Linq; using System.Text; using HeuristicLab.Core; using HeuristicLab.Data; using HeuristicLab.Common; using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; namespace HeuristicLab.Problems.NK { [Item("RandomInteractionsInitializer", "Randomly assignes interactions across all bits")] [StorableClass] public class RandomInteractionsInitializer : NamedItem, IInteractionInitializer { public override bool CanChangeName { get { return false; } } public override bool CanChangeDescription { get { return false; } } [StorableConstructor] protected RandomInteractionsInitializer(bool serializing) : base(serializing) { } protected RandomInteractionsInitializer(RandomInteractionsInitializer original, Cloner cloner) : base(original, cloner) { } public RandomInteractionsInitializer() { name = ItemName; description = ItemDescription; } public override IDeepCloneable Clone(Cloner cloner) { return new RandomInteractionsInitializer(this, cloner); } #region IInteractionInitializer Members public BoolMatrix InitializeInterations(int length, int nComponents, int nInteractions, IRandom random) { BoolMatrix m = new BoolMatrix(length, nComponents); for (int c = 0; c c) { indices.RemoveAt(c); m[c, c] = true; } while (indices.Count > nInteractions) { indices.RemoveAt(random.Next(indices.Count)); } foreach (var i in indices) { m[i, c] = true; } } return m; } #endregion } }