Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/16/10 06:50:14 (14 years ago)
Author:
swagner
Message:

Operator architecture refactoring (#95)

  • worked on parameters, TSP and selection
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Selection/3.3/RightSelector.cs

    r1530 r2805  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    2020#endregion
    2121
    22 using System;
    2322using System.Collections.Generic;
    24 using System.Text;
    2523using HeuristicLab.Core;
     24using HeuristicLab.Data;
     25using HeuristicLab.Parameters;
     26using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2627
    2728namespace HeuristicLab.Selection {
    2829  /// <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.
    3131  /// </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() { }
    3737
    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;
    5648        } 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);
    6051        }
    6152      }
Note: See TracChangeset for help on using the changeset viewer.