Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/16/10 06:50:14 (15 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/RandomSelector.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, being selected
    30   /// randomly.
     30  /// A random selection operator.
    3131  /// </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() { }
    3737
    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);
    5550        }
    5651      }
Note: See TracChangeset for help on using the changeset viewer.