Changeset 12566 for branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/InteractionInitializers/IncreasingBlockSizeInteractionsInitializer.cs
- Timestamp:
- 07/01/15 15:32:22 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/FitnessLandscapeAnalysis/HeuristicLab.Problems.NK/InteractionInitializers/IncreasingBlockSizeInteractionsInitializer.cs
r7128 r12566 1 using System; 1 #region License Information 2 /* HeuristicLab 3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 * 5 * This file is part of HeuristicLab. 6 * 7 * HeuristicLab is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * HeuristicLab is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 #endregion 21 2 22 using System.Collections.Generic; 3 23 using System.Linq; 4 using System.Text;24 using HeuristicLab.Common; 5 25 using HeuristicLab.Core; 6 26 using HeuristicLab.Data; 7 using HeuristicLab. Common;27 using HeuristicLab.Encodings.BinaryVectorEncoding; 8 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 9 using HeuristicLab.Encodings.BinaryVectorEncoding;10 using HeuristicLab.Parameters;11 using HeuristicLab.PluginInfrastructure;12 29 13 30 namespace HeuristicLab.Problems.NK { … … 15 32 [Item("IncreasingBlockSizeInteractionsInitializer", "Randomly assignes interactions across all bits but makes sure that different numbers of ineractions are applied to different bits.")] 16 33 [StorableClass] 17 public class IncreasingBlockSizeInteractionsInitializer : ParameterizedNamedItem, IInteractionInitializer { 18 34 public class IncreasingBlockSizeInteractionsInitializer : ParameterizedNamedItem, IInteractionInitializer { 35 19 36 [StorableConstructor] 20 37 protected IncreasingBlockSizeInteractionsInitializer(bool serializing) : base(serializing) { } 21 38 protected IncreasingBlockSizeInteractionsInitializer(IncreasingBlockSizeInteractionsInitializer original, Cloner cloner) : base(original, cloner) { } 22 public IncreasingBlockSizeInteractionsInitializer() { 39 public IncreasingBlockSizeInteractionsInitializer() { 23 40 } 24 41 25 42 26 43 public override IDeepCloneable Clone(Cloner cloner) { 27 44 return new IncreasingBlockSizeInteractionsInitializer(this, cloner); 28 } 45 } 29 46 30 47 #region IInteractionInitializer Members 31 48 public BoolMatrix InitializeInterations(int length, int nComponents, int nInteractions, IRandom random) { 32 49 Dictionary<int, int> bitInteractionCounts = new Dictionary<int, int>(); 33 for (int i = 0; i <length; i++) {34 int count = nInteractions *2*i/length;50 for (int i = 0; i < length; i++) { 51 int count = nInteractions * 2 * i / length; 35 52 if (count > 0) 36 53 bitInteractionCounts[i] = count; … … 39 56 while (bitInteractionCounts.Count > 0) { 40 57 BinaryVector component = new BinaryVector(length); 41 for (int i = 0; i <nInteractions; i++) {58 for (int i = 0; i < nInteractions; i++) { 42 59 while (bitInteractionCounts.Count > 0) { 43 60 int bit = bitInteractionCounts.ElementAt(random.Next(bitInteractionCounts.Count)).Key; … … 48 65 break; 49 66 } 50 } 67 } 51 68 } 52 69 components.Add(component); 53 } 70 } 54 71 BoolMatrix m = new BoolMatrix(length, components.Count); 55 foreach (var c in components.Select((v, j) => new { v, j})) {56 for (int i = 0; i <c.v.Length; i++) {72 foreach (var c in components.Select((v, j) => new { v, j })) { 73 for (int i = 0; i < c.v.Length; i++) { 57 74 m[i, c.j] = c.v[i]; 58 } 75 } 59 76 } 60 77 return m;
Note: See TracChangeset
for help on using the changeset viewer.