Free cookie consent management tool by TermsFeed Policy Generator

Changeset 3193 for trunk


Ignore:
Timestamp:
03/23/10 01:31:17 (14 years ago)
Author:
swagner
Message:

Unified *SequentialSubScopesProcessor and *ParallelSubScopesProcessor (#943).

Location:
trunk/sources
Files:
2 deleted
7 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Algorithms.EvolutionStrategy/3.3/EvolutionStrategyMainLoop.cs

    r3183 r3193  
    145145      ResultsCollector resultsCollector = new ResultsCollector();
    146146      WithoutRepeatingBatchedRandomSelector selector = new WithoutRepeatingBatchedRandomSelector();
    147       SequentialSubScopesProcessor sequentialSubScopesProcessor1 = new SequentialSubScopesProcessor();
     147      SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor();
    148148      Comparator useRecombinationComparator = new Comparator();
    149149      ConditionalBranch useRecombinationBranch = new ConditionalBranch();
    150150      ChildrenCreator childrenCreator = new ChildrenCreator();
    151       UniformSequentialSubScopesProcessor uniformSequentialSubScopesProcessor1 = new UniformSequentialSubScopesProcessor();
     151      UniformSubScopesProcessor uniformSubScopesProcessor1 = new UniformSubScopesProcessor();
    152152      Placeholder recombinator = new Placeholder();
    153153      StrategyVectorManipulator strategyMutator1 = new StrategyVectorManipulator();
     
    155155      Placeholder evaluator1 = new Placeholder();
    156156      SubScopesRemover subScopesRemover = new SubScopesRemover();
    157       UniformSequentialSubScopesProcessor uniformSequentialSubScopesProcessor2 = new UniformSequentialSubScopesProcessor();
     157      UniformSubScopesProcessor uniformSubScopesProcessor2 = new UniformSubScopesProcessor();
    158158      StrategyVectorManipulator strategyMutator2 = new StrategyVectorManipulator();
    159159      Placeholder mutator2 = new Placeholder();
     
    316316      visualizer1.Successor = resultsCollector;
    317317      resultsCollector.Successor = selector;
    318       selector.Successor = sequentialSubScopesProcessor1;
    319       sequentialSubScopesProcessor1.Operators.Add(new EmptyOperator());
    320       sequentialSubScopesProcessor1.Operators.Add(useRecombinationComparator);
    321       sequentialSubScopesProcessor1.Successor = plusOrCommaReplacementBranch;
     318      selector.Successor = subScopesProcessor1;
     319      subScopesProcessor1.Operators.Add(new EmptyOperator());
     320      subScopesProcessor1.Operators.Add(useRecombinationComparator);
     321      subScopesProcessor1.Successor = plusOrCommaReplacementBranch;
    322322      useRecombinationComparator.Successor = useRecombinationBranch;
    323323      useRecombinationBranch.TrueBranch = childrenCreator;
    324       useRecombinationBranch.FalseBranch = uniformSequentialSubScopesProcessor2;
     324      useRecombinationBranch.FalseBranch = uniformSubScopesProcessor2;
    325325      useRecombinationBranch.Successor = null;
    326       childrenCreator.Successor = uniformSequentialSubScopesProcessor1;
    327       uniformSequentialSubScopesProcessor1.Operator = recombinator;
    328       uniformSequentialSubScopesProcessor1.Successor = null;
     326      childrenCreator.Successor = uniformSubScopesProcessor1;
     327      uniformSubScopesProcessor1.Operator = recombinator;
     328      uniformSubScopesProcessor1.Successor = null;
    329329      recombinator.Successor = strategyMutator1;
    330330      strategyMutator1.Successor = mutator1;
     
    332332      evaluator1.Successor = subScopesRemover;
    333333      subScopesRemover.Successor = null;
    334       uniformSequentialSubScopesProcessor2.Operator = strategyMutator2;
    335       uniformSequentialSubScopesProcessor2.Successor = null;
     334      uniformSubScopesProcessor2.Operator = strategyMutator2;
     335      uniformSubScopesProcessor2.Successor = null;
    336336      strategyMutator2.Successor = mutator2;
    337337      mutator2.Successor = evaluator2;
  • trunk/sources/HeuristicLab.Algorithms.LocalSearch/3.3/LocalSearchMainLoop.cs

    r3145 r3193  
    116116      Placeholder visualizer1 = new Placeholder();
    117117      ResultsCollector resultsCollector = new ResultsCollector();
    118       UniformSequentialSubScopesProcessor mainProcessor = new UniformSequentialSubScopesProcessor();
     118      UniformSubScopesProcessor mainProcessor = new UniformSubScopesProcessor();
    119119      Placeholder moveGenerator = new Placeholder();
    120       UniformSequentialSubScopesProcessor moveEvaluationProcessor = new UniformSequentialSubScopesProcessor();
     120      UniformSubScopesProcessor moveEvaluationProcessor = new UniformSubScopesProcessor();
    121121      Placeholder moveEvaluator = new Placeholder();
    122122      BestSelector bestSelector = new BestSelector();
    123123      RightReducer rightReducer = new RightReducer();
    124       UniformSequentialSubScopesProcessor moveMakingProcessor = new UniformSequentialSubScopesProcessor();
     124      UniformSubScopesProcessor moveMakingProcessor = new UniformSubScopesProcessor();
    125125      QualityComparator qualityComparator = new QualityComparator();
    126126      ConditionalBranch improvesQualityBranch = new ConditionalBranch();
     
    167167      resultsCollector.ResultsParameter.ActualName = ResultsParameter.Name;
    168168
    169       mainProcessor.Name = "Solution processor (UniformSequentialSubScopesProcessor)";
     169      mainProcessor.Name = "Solution processor (UniformSubScopesProcessor)";
    170170
    171171      moveGenerator.Name = "MoveGenerator (placeholder)";
     
    180180      bestSelector.QualityParameter.ActualName = MoveQualityParameter.Name;
    181181
    182       moveMakingProcessor.Name = "MoveMaking processor (UniformSequentialSubScopesProcessor)";
     182      moveMakingProcessor.Name = "MoveMaking processor (UniformSubScopesProcessor)";
    183183
    184184      qualityComparator.LeftSideParameter.ActualName = MoveQualityParameter.Name;
  • trunk/sources/HeuristicLab.Algorithms.SGA/3.3/SGAMainLoop.cs

    r3160 r3193  
    124124      ResultsCollector resultsCollector = new ResultsCollector();
    125125      Placeholder selector = new Placeholder();
    126       SequentialSubScopesProcessor sequentialSubScopesProcessor1 = new SequentialSubScopesProcessor();
     126      SubScopesProcessor subScopesProcessor1 = new SubScopesProcessor();
    127127      ChildrenCreator childrenCreator = new ChildrenCreator();
    128       UniformSequentialSubScopesProcessor uniformSequentialSubScopesProcessor = new UniformSequentialSubScopesProcessor();
     128      UniformSubScopesProcessor uniformSubScopesProcessor = new UniformSubScopesProcessor();
    129129      Placeholder crossover = new Placeholder();
    130130      StochasticBranch stochasticBranch = new StochasticBranch();
     
    132132      Placeholder evaluator = new Placeholder();
    133133      SubScopesRemover subScopesRemover = new SubScopesRemover();
    134       SequentialSubScopesProcessor sequentialSubScopesProcessor2 = new SequentialSubScopesProcessor();
     134      SubScopesProcessor subScopesProcessor2 = new SubScopesProcessor();
    135135      BestSelector bestSelector = new BestSelector();
    136136      RightReducer rightReducer = new RightReducer();
     
    263263      visualizer1.Successor = resultsCollector;
    264264      resultsCollector.Successor = selector;
    265       selector.Successor = sequentialSubScopesProcessor1;
    266       sequentialSubScopesProcessor1.Operators.Add(new EmptyOperator());
    267       sequentialSubScopesProcessor1.Operators.Add(childrenCreator);
    268       sequentialSubScopesProcessor1.Successor = sequentialSubScopesProcessor2;
    269       childrenCreator.Successor = uniformSequentialSubScopesProcessor;
    270       uniformSequentialSubScopesProcessor.Operator = crossover;
    271       uniformSequentialSubScopesProcessor.Successor = null;
     265      selector.Successor = subScopesProcessor1;
     266      subScopesProcessor1.Operators.Add(new EmptyOperator());
     267      subScopesProcessor1.Operators.Add(childrenCreator);
     268      subScopesProcessor1.Successor = subScopesProcessor2;
     269      childrenCreator.Successor = uniformSubScopesProcessor;
     270      uniformSubScopesProcessor.Operator = crossover;
     271      uniformSubScopesProcessor.Successor = null;
    272272      crossover.Successor = stochasticBranch;
    273273      stochasticBranch.FirstBranch = mutator;
     
    277277      evaluator.Successor = subScopesRemover;
    278278      subScopesRemover.Successor = null;
    279       sequentialSubScopesProcessor2.Operators.Add(bestSelector);
    280       sequentialSubScopesProcessor2.Operators.Add(new EmptyOperator());
    281       sequentialSubScopesProcessor2.Successor = mergingReducer;
     279      subScopesProcessor2.Operators.Add(bestSelector);
     280      subScopesProcessor2.Operators.Add(new EmptyOperator());
     281      subScopesProcessor2.Successor = mergingReducer;
    282282      bestSelector.Successor = rightReducer;
    283283      rightReducer.Successor = null;
  • trunk/sources/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingMainLoop.cs

    r3142 r3193  
    122122      QualityDifferenceCalculator qualityDifferenceCalculator1 = new QualityDifferenceCalculator();
    123123      Placeholder visualizer1 = new Placeholder();
    124       SequentialSubScopesProcessor sssp = new SequentialSubScopesProcessor();
     124      SubScopesProcessor sssp = new SubScopesProcessor();
    125125      ResultsCollector resultsCollector = new ResultsCollector();
    126126      Placeholder annealingOperator = new Placeholder();
    127       UniformSequentialSubScopesProcessor mainProcessor = new UniformSequentialSubScopesProcessor();
     127      UniformSubScopesProcessor mainProcessor = new UniformSubScopesProcessor();
    128128      DataTableValuesCollector valuesCollector = new DataTableValuesCollector();
    129129      Placeholder moveGenerator = new Placeholder();
    130       UniformSequentialSubScopesProcessor moveEvaluationProcessor = new UniformSequentialSubScopesProcessor();
     130      UniformSubScopesProcessor moveEvaluationProcessor = new UniformSubScopesProcessor();
    131131      Placeholder moveEvaluator = new Placeholder();
    132132      ProbabilisticQualityComparator qualityComparator = new ProbabilisticQualityComparator();
  • trunk/sources/HeuristicLab.Algorithms.TabuSearch/3.3/TabuSearchMainLoop.cs

    r3145 r3193  
    123123      Placeholder visualizer1 = new Placeholder();
    124124      ResultsCollector resultsCollector = new ResultsCollector();
    125       UniformSequentialSubScopesProcessor mainProcessor = new UniformSequentialSubScopesProcessor();
     125      UniformSubScopesProcessor mainProcessor = new UniformSubScopesProcessor();
    126126      Placeholder moveGenerator = new Placeholder();
    127       UniformSequentialSubScopesProcessor moveEvaluationProcessor = new UniformSequentialSubScopesProcessor();
     127      UniformSubScopesProcessor moveEvaluationProcessor = new UniformSubScopesProcessor();
    128128      Placeholder moveEvaluator = new Placeholder();
    129129      Placeholder tabuMoveEvaluator = new Placeholder();
     
    132132      TabuSelector tabuSelector = new TabuSelector();
    133133      RightReducer rightReducer = new RightReducer();
    134       UniformSequentialSubScopesProcessor moveMakingProcessor = new UniformSequentialSubScopesProcessor();
     134      UniformSubScopesProcessor moveMakingProcessor = new UniformSubScopesProcessor();
    135135      Placeholder tabuMoveMaker = new Placeholder();
    136136      Placeholder moveMaker = new Placeholder();
     
    179179      resultsCollector.ResultsParameter.ActualName = "Results";
    180180
    181       mainProcessor.Name = "Solution processor (UniformSequentialSubScopesProcessor)";
     181      mainProcessor.Name = "Solution processor (UniformSubScopesProcessor)";
    182182
    183183      moveGenerator.Name = "MoveGenerator (placeholder)";
     
    204204      valuesCollector.DataTableParameter.ActualName = "MoveQualities";
    205205
    206       moveMakingProcessor.Name = "MoveMaking processor (UniformSequentialSubScopesProcessor)";
     206      moveMakingProcessor.Name = "MoveMaking processor (UniformSubScopesProcessor)";
    207207
    208208      tabuMoveMaker.Name = "TabuMoveMaker (placeholder)";
  • trunk/sources/HeuristicLab.Operators/3.3/HeuristicLab.Operators-3.3.csproj

    r2900 r3193  
    9494    <Compile Include="MultipleCallsOperator.cs" />
    9595    <Compile Include="Operator.cs" />
    96     <Compile Include="ParallelSubScopesProcessor.cs" />
    9796    <Compile Include="Placeholder.cs" />
    9897    <Compile Include="IntCounter.cs" />
    9998    <Compile Include="ScopeCleaner.cs" />
    100     <Compile Include="SequentialSubScopesProcessor.cs" />
    10199    <Compile Include="StochasticBranch.cs" />
    102100    <Compile Include="SubScopesCreator.cs" />
     101    <Compile Include="SubScopesProcessor.cs" />
    103102    <Compile Include="SubScopesRemover.cs" />
    104103    <Compile Include="SubScopesSorter.cs" />
    105104    <Compile Include="DoubleCounter.cs" />
    106     <Compile Include="UniformParallelSubScopesProcessor.cs" />
    107     <Compile Include="UniformSequentialSubScopesProcessor.cs" />
    108105    <Compile Include="EmptyOperator.cs">
    109106      <SubType>Code</SubType>
     
    112109    <Compile Include="Properties\AssemblyInfo.cs" />
    113110    <Compile Include="SingleSuccessorOperator.cs" />
     111    <Compile Include="UniformSubScopesProcessor.cs" />
    114112    <Compile Include="ValuesCollector.cs" />
    115113    <Compile Include="VariableCreator.cs" />
  • trunk/sources/HeuristicLab.Operators/3.3/SubScopesProcessor.cs

    r3186 r3193  
    2121
    2222using HeuristicLab.Core;
     23using HeuristicLab.Data;
     24using HeuristicLab.Parameters;
    2325using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2426
    2527namespace HeuristicLab.Operators {
    2628  /// <summary>
    27   /// An operator which contains multiple operators of which each is applied sequentially on one sub-scope of the current scope. The first operator is applied on the first sub-scope, the second on the second, and so on.
     29  /// An operator which contains multiple operators of which each is applied on one sub-scope of the current scope. The first operator is applied on the first sub-scope, the second on the second, and so on.
    2830  /// </summary>
    29   [Item("SequentialSubScopesProcessor", "An operator which contains multiple operators of which each is applied sequentially on one sub-scope of the current scope. The first operator is applied on the first sub-scope, the second on the second, and so on.")]
     31  [Item("SubScopesProcessor", "An operator which contains multiple operators of which each is applied on one sub-scope of the current scope. The first operator is applied on the first sub-scope, the second on the second, and so on.")]
    3032  [StorableClass]
    31   public sealed class SequentialSubScopesProcessor : MultipleCallsOperator {
    32     public SequentialSubScopesProcessor()
     33  public sealed class SubScopesProcessor : MultipleCallsOperator {
     34    public ValueLookupParameter<BoolValue> ParallelParameter {
     35      get { return (ValueLookupParameter<BoolValue>)Parameters["Parallel"]; }
     36    }
     37
     38    public BoolValue Parallel {
     39      get { return ParallelParameter.Value; }
     40      set { ParallelParameter.Value = value; }
     41    }
     42
     43    public SubScopesProcessor()
    3344      : base() {
     45      Parameters.Add(new ValueLookupParameter<BoolValue>("Parallel", "True if the operators should be applied in parallel on the sub-scopes, otherwise false.", new BoolValue(false)));
    3446    }
    3547
    3648    public override IOperation Apply() {
     49      BoolValue parallel = ParallelParameter.ActualValue;
    3750      OperationCollection next = new OperationCollection(base.Apply());
    3851      if (Operators.Count > 0) {
    3952        OperationCollection inner = new OperationCollection();
     53        inner.Parallel = parallel == null ? false : parallel.Value;
    4054        for (int i = 0; (i < ExecutionContext.Scope.SubScopes.Count) && (i < Operators.Count); i++)
    4155          if (Operators[i] != null) inner.Add(ExecutionContext.CreateOperation(Operators[i], ExecutionContext.Scope.SubScopes[i]));
  • trunk/sources/HeuristicLab.Operators/3.3/UniformSubScopesProcessor.cs

    r3186 r3193  
    2121
    2222using HeuristicLab.Core;
     23using HeuristicLab.Data;
    2324using HeuristicLab.Parameters;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    2627namespace HeuristicLab.Operators {
    2728  /// <summary>
    28   /// An operator which applies a specified operator sequentially on all sub-scopes of the current scope.
     29  /// An operator which applies a specified operator on all sub-scopes of the current scope.
    2930  /// </summary>
    30   [Item("UniformSequentialSubScopesProcessor", "An operator which applies a specified operator sequentially on all sub-scopes of the current scope.")]
     31  [Item("UniformSubScopesProcessor", "An operator which applies a specified operator on all sub-scopes of the current scope.")]
    3132  [StorableClass]
    32   public sealed class UniformSequentialSubScopesProcessor : SingleSuccessorOperator {
     33  public sealed class UniformSubScopesProcessor : SingleSuccessorOperator {
    3334    private OperatorParameter OperatorParameter {
    3435      get { return (OperatorParameter)Parameters["Operator"]; }
    3536    }
     37    public ValueLookupParameter<BoolValue> ParallelParameter {
     38      get { return (ValueLookupParameter<BoolValue>)Parameters["Parallel"]; }
     39    }
     40
    3641    public IOperator Operator {
    3742      get { return OperatorParameter.Value; }
    3843      set { OperatorParameter.Value = value; }
    3944    }
     45    public BoolValue Parallel {
     46      get { return ParallelParameter.Value; }
     47      set { ParallelParameter.Value = value; }
     48    }
    4049
    41     public UniformSequentialSubScopesProcessor()
     50    public UniformSubScopesProcessor()
    4251      : base() {
    43       Parameters.Add(new OperatorParameter("Operator", "The operator which should be applied sequentially on all sub-scopes of the current scope."));
     52      Parameters.Add(new OperatorParameter("Operator", "The operator which should be applied on all sub-scopes of the current scope."));
     53      Parameters.Add(new ValueLookupParameter<BoolValue>("Parallel", "True if the operator should be applied in parallel on all sub-scopes, otherwise false.", new BoolValue(false)));
    4454    }
    4555
    4656    public override IOperation Apply() {
     57      BoolValue parallel = ParallelParameter.ActualValue;
    4758      OperationCollection next = new OperationCollection(base.Apply());
    4859      if (Operator != null) {
    4960        OperationCollection inner = new OperationCollection();
     61        inner.Parallel = parallel == null ? false : parallel.Value;
    5062        for (int i = 0; i < ExecutionContext.Scope.SubScopes.Count; i++)
    5163          inner.Add(ExecutionContext.CreateOperation(Operator, ExecutionContext.Scope.SubScopes[i]));
Note: See TracChangeset for help on using the changeset viewer.