Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/07/14 13:13:41 (11 years ago)
Author:
mkommend
Message:

#2119: Adapted all multi operators to subclass InstrumentedOperator.

Location:
trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Crossovers
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Crossovers/BiasedMultiVRPSolutionCrossover.cs

    r9462 r10295  
    2121
    2222using System;
    23 using System.Collections.Generic;
    2423using System.Linq;
    25 using System.Text;
     24using HeuristicLab.Analysis;
     25using HeuristicLab.Collections;
     26using HeuristicLab.Common;
    2627using HeuristicLab.Core;
     28using HeuristicLab.Data;
     29using HeuristicLab.Optimization;
     30using HeuristicLab.Parameters;
    2731using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    28 using HeuristicLab.Common;
    29 using HeuristicLab.Analysis;
    30 using HeuristicLab.Parameters;
    31 using HeuristicLab.Optimization;
    32 using HeuristicLab.Data;
    33 using HeuristicLab.Collections;
    3432
    3533namespace HeuristicLab.Problems.VehicleRouting.Encodings.General {
     
    8179    }
    8280
    83     public override IOperation Apply() {
     81    public override IOperation InstrumentedApply() {
    8482      IOperator successor = null;
    8583
     
    133131      }
    134132
    135       ////////////////
    136       IRandom random = RandomParameter.ActualValue;
    137       DoubleArray probabilities = ActualProbabilitiesParameter.ActualValue;
    138       if (probabilities.Length != Operators.Count) {
    139         throw new InvalidOperationException(Name + ": The list of probabilities has to match the number of operators");
    140       }
    141       var checkedOperators = Operators.CheckedItems;
    142       if (checkedOperators.Count() > 0) {
    143         // select a random operator from the checked operators
    144         double sum = (from indexedItem in checkedOperators select probabilities[indexedItem.Index]).Sum();
    145         if (sum == 0) throw new InvalidOperationException(Name + ": All selected operators have zero probability.");
    146         double r = random.NextDouble() * sum;
    147         sum = 0;
    148         foreach (var indexedItem in checkedOperators) {
    149           sum += probabilities[indexedItem.Index];
    150           if (sum > r) {
    151             successor = indexedItem.Value;
    152             break;
    153           }
    154         }
    155       }
    156 
    157       IOperation successorOp = null;
    158       if (Successor != null)
    159         successorOp = ExecutionContext.CreateOperation(Successor);
    160       OperationCollection next = new OperationCollection(successorOp);
    161       if (successor != null) {
    162         SelectedOperatorParameter.ActualValue = new StringValue(successor.Name);
    163 
    164         if (CreateChildOperation)
    165           next.Insert(0, ExecutionContext.CreateChildOperation(successor));
    166         else next.Insert(0, ExecutionContext.CreateOperation(successor));
    167       } else {
    168         SelectedOperatorParameter.ActualValue = new StringValue("");
    169       }
    170 
    171       return next;
     133      return base.InstrumentedApply();
    172134    }
    173135  }
  • trunk/sources/HeuristicLab.Problems.VehicleRouting/3.4/Encodings/General/Crossovers/MultiVRPSolutionCrossover.cs

    r9456 r10295  
    106106    }
    107107
    108     public override IOperation Apply() {
     108    public override IOperation InstrumentedApply() {
    109109      if (Operators.Count == 0) throw new InvalidOperationException(Name + ": Please add at least one permutation crossover to choose from.");
    110       return base.Apply();
     110      return base.InstrumentedApply();
    111111    }
    112112  }
Note: See TracChangeset for help on using the changeset viewer.