- Timestamp:
- 02/16/10 06:50:14 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Selection/3.3/RandomSelector.cs
r1530 r2805 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-20 08Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 20 20 #endregion 21 21 22 using System;23 22 using System.Collections.Generic; 24 using System.Text;25 23 using HeuristicLab.Core; 24 using HeuristicLab.Data; 25 using HeuristicLab.Parameters; 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 26 27 27 28 namespace HeuristicLab.Selection { 28 29 /// <summary> 29 /// Copies or moves a defined number of sub scopes from a source scope to a target scope, being selected 30 /// randomly. 30 /// A random selection operator. 31 31 /// </summary> 32 public class RandomSelector : StochasticSelectorBase {33 /// <inheritdoc select="summary"/>34 public override string Description {35 get { return @"TODO\r\nOperator description still missing ..."; }36 }32 [Item("RandomSelector", "A random selection operator.")] 33 [EmptyStorableClass] 34 [Creatable("Test")] 35 public sealed class RandomSelector : StochasticSelector { 36 public RandomSelector() : base() { } 37 37 38 /// <summary> 39 /// Copies or moves a number of sub scopes (<paramref name="selected"/>) from <paramref name="source"/> 40 /// to the <paramref name="target"/>, chosen randomly. 41 /// </summary> 42 /// <param name="random">The random number generator.</param> 43 /// <param name="source">The source scope from which to copy/move the sub scopes.</param> 44 /// <param name="selected">The number of sub scopes to move.</param> 45 /// <param name="target">The target where to copy/move the sub scopes.</param> 46 /// <param name="copySelected">Boolean flag whether the sub scopes shall be copied or moved.</param> 47 protected override void Select(IRandom random, IScope source, int selected, IScope target, bool copySelected) { 48 for (int i = 0; i < selected; i++) { 49 if (copySelected) { 50 target.AddSubScope((IScope)source.SubScopes[random.Next(source.SubScopes.Count)].Clone()); 51 } else { 52 IScope s = source.SubScopes[random.Next(source.SubScopes.Count)]; 53 source.RemoveSubScope(s); 54 target.AddSubScope(s); 38 protected override void Select(ScopeList source, ScopeList target) { 39 int count = NumberOfSelectedSubScopesParameter.ActualValue.Value; 40 bool copy = CopySelectedParameter.Value.Value; 41 IRandom random = RandomParameter.ActualValue; 42 43 for (int i = 0; i < count; i++) { 44 if (copy) 45 target.Add((IScope)source[random.Next(source.Count)].Clone()); 46 else { 47 int index = random.Next(source.Count); 48 target.Add(source[index]); 49 source.RemoveAt(index); 55 50 } 56 51 }
Note: See TracChangeset
for help on using the changeset viewer.