- Timestamp:
- 02/16/10 06:50:14 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Selection/3.3/RightSelector.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, starting at 30 /// the right side of the tree. 30 /// An operator which selects sub-scopes from right to left. 31 31 /// </summary> 32 public class RightSelector : StochasticSelectorBase {33 /// <inheritdoc select="summary"/>34 public override string Description {35 get { return @"TODO\r\nOperator description still missing ..."; }36 }32 [Item("RightSelector", "An operator which selects sub-scopes from right to left.")] 33 [EmptyStorableClass] 34 [Creatable("Test")] 35 public sealed class RightSelector : Selector { 36 public RightSelector() : base() { } 37 37 38 /// <summary> 39 /// Copies or moves a number of sub scopes (<paramref name="selected"/>) from <paramref name="source"/> 40 /// starting at the right end to the <paramref name="target"/>. 41 /// </summary> 42 /// <param name="random">A 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. Can be also bigger than the total 45 /// number of sub scopes in <paramref name="source"/>, then the copying process starts again from the 46 /// beginning.</param> 47 /// <param name="target">The target where to copy/move the sub scopes.</param> 48 /// <param name="copySelected">Boolean flag whether the sub scopes shall be copied or moved.</param> 49 protected override void Select(IRandom random, IScope source, int selected, IScope target, bool copySelected) { 50 int index = source.SubScopes.Count - 1; 51 for (int i = 0; i < selected; i++) { 52 if (copySelected) { 53 target.AddSubScope((IScope)source.SubScopes[index].Clone()); 54 index--; 55 if (index < 0) index = source.SubScopes.Count - 1; 38 protected override void Select(ScopeList source, ScopeList target) { 39 int count = NumberOfSelectedSubScopesParameter.ActualValue.Value; 40 bool copy = CopySelectedParameter.Value.Value; 41 42 int j = source.Count - 1; 43 for (int i = 0; i < count; i++) { 44 if (copy) { 45 target.Add((IScope)source[j].Clone()); 46 j--; 47 if (j < 0) j = source.Count - 1; 56 48 } else { 57 IScope s = source.SubScopes[source.SubScopes.Count - 1]; 58 source.RemoveSubScope(s); 59 target.AddSubScope(s); 49 target.Add(source[source.Count - 1]); 50 source.RemoveAt(source.Count - 1); 60 51 } 61 52 }
Note: See TracChangeset
for help on using the changeset viewer.