Changeset 7783 for branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/Analysis
- Timestamp:
- 05/07/12 15:14:47 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/FitnessLandscapeAnalysis/HeuristicLab.Analysis.FitnessLandscape/Analysis/NeutralityAnalyzer.cs
r7176 r7783 48 48 get { return (LookupParameter<DoubleValue>)Parameters["CurrentNeutralDistance"]; } 49 49 } 50 public LookupParameter<DoubleValue> CurrentFractionOfNeutralNeighborsParameter { 51 get { return (LookupParameter<DoubleValue>)Parameters["CurrentFractionOfNeutralNeighbors"]; } 52 } 50 53 public LookupParameter<DataTable> NeutralWalkDistancesTableParameter { 51 54 get { return (LookupParameter<DataTable>)Parameters["NeutralWalkDistancesTable"]; } … … 57 60 get { return (LookupParameter<DoubleValue>)Parameters["AverageNeutralWalkDistance"]; } 58 61 } 62 public LookupParameter<DoubleValue> AverageNeutralNeighborFractionParameter { 63 get { return (LookupParameter<DoubleValue>)Parameters["AverageNeutralNeighborFraction"]; } 64 } 65 public LookupParameter<DoubleValue> AverageInnerNeutralNeighborFractionParameter { 66 get { return (LookupParameter<DoubleValue>)Parameters["AverageInnerNeutralNeighborFraction"]; } 67 } 59 68 public LookupParameter<DoubleValue> NeutralWalkLengthVarianceParameter { 60 69 get { return (LookupParameter<DoubleValue>)Parameters["NeutralWalkLengthVariance"]; } … … 63 72 get { return (LookupParameter<DoubleValue>)Parameters["NeutralWalkDistanceVariance"]; } 64 73 } 74 public LookupParameter<DoubleValue> NeutralNeighborFractionVarianceParameter { 75 get { return (LookupParameter<DoubleValue>)Parameters["NeutralNeighborFractionVariance"]; } 76 } 77 public LookupParameter<DoubleValue> InnerNeutralNeighborFractionVarianceParameter { 78 get { return (LookupParameter<DoubleValue>)Parameters["InnerNeutralNeighborFractionVariance"]; } 79 } 65 80 public LookupParameter<VariableCollection> ResultsParameter { 66 81 get { return (LookupParameter<VariableCollection>)Parameters["Results"]; } … … 75 90 Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The current quality")); 76 91 Parameters.Add(new LookupParameter<DoubleValue>("CurrentNeutralDistance", "The distance of the current solution to the starting point of the neutral (portion of the) walk.")); 92 Parameters.Add(new LookupParameter<DoubleValue>("CurrentFractionOfNeutralNeighbors", "The current fraction of neighbors with the same fitness (within epsilon)")); 77 93 Parameters.Add(new LookupParameter<DataTable>("NeutralWalkDistancesTable", "The historical values of the current neutral distance.")); 78 94 Parameters.Add(new LookupParameter<DoubleValue>("AverageNeutralWalkLength", "The average length of a neutral walk")); 79 95 Parameters.Add(new LookupParameter<DoubleValue>("AverageNeutralWalkDistance", "The average distance of the neutral walk to the starting point.")); 96 Parameters.Add(new LookupParameter<DoubleValue>("AverageNeutralNeighborFraction", "The average fraction of neutral neighbors overall.")); 97 Parameters.Add(new LookupParameter<DoubleValue>("AverageInnerNeutralNeighborFraction", "The average fraction of neutral neighbors within a neutral area.")); 80 98 Parameters.Add(new LookupParameter<DoubleValue>("NeutralWalkLengthVariance", "The variance of the neutral walks lengths")); 81 99 Parameters.Add(new LookupParameter<DoubleValue>("NeutralWalkDistanceVariance", "The varaince of the neutral walks distances")); 100 Parameters.Add(new LookupParameter<DoubleValue>("NeutralNeighborFractionVariance", "The average fraction of neutral neighbors overall.")); 101 Parameters.Add(new LookupParameter<DoubleValue>("InnerNeutralNeighborFractionVariance", "The average fraction of neutral neighbors within a neutral area.")); 82 102 83 103 var resultsCollector = new ResultsCollector(); 84 104 resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(CurrentNeutralDistanceParameter.ActualName)); 105 resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(CurrentFractionOfNeutralNeighborsParameter.ActualName)); 85 106 resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>(NeutralWalkDistancesTableParameter.Name)); 86 107 resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(AverageNeutralWalkLengthParameter.Name)); 87 108 resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(AverageNeutralWalkDistanceParameter.Name)); 109 resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(AverageNeutralNeighborFractionParameter.Name)); 110 resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(AverageInnerNeutralNeighborFractionParameter.Name)); 88 111 resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(NeutralWalkLengthVarianceParameter.Name)); 89 112 resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(NeutralWalkDistanceVarianceParameter.Name)); 113 resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(NeutralNeighborFractionVarianceParameter.Name)); 114 resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>(InnerNeutralNeighborFractionVarianceParameter.Name)); 90 115 91 116 OperatorGraph.InitialOperator = resultsCollector; … … 99 124 public override IOperation Apply() { 100 125 DataTable distanceTable = GetOrCreateDistanceTable(); 101 var values = distanceTable.Rows["Neutral Walk Distances"].Values; 102 values.Add(CurrentNeutralDistanceParameter.ActualValue == null ? 0 : CurrentNeutralDistanceParameter.ActualValue.Value); 103 List<double> lenghts = new List<double>(); 104 List<double> distances = new List<double>(); 126 var distanceValues = distanceTable.Rows["Neutral Walk Distances"].Values; 127 var fractionValues = distanceTable.Rows["Neutral Neighbor Fractions"].Values; 128 distanceValues.Add(CurrentNeutralDistanceParameter.ActualValue == null ? 0 : CurrentNeutralDistanceParameter.ActualValue.Value); 129 fractionValues.Add(CurrentFractionOfNeutralNeighborsParameter.ActualValue == null ? 0 : CurrentFractionOfNeutralNeighborsParameter.ActualValue.Value); 130 var lengths = new List<double>(); 131 var distances = new List<double>(); 132 var innerFractions = new List<double>(); 105 133 double lastValue = -1; 106 134 int lastStart = 0; 107 for (int i = 0; i< values.Count; i++) {108 if ( values[i] < lastValue) {109 leng hts.Add(i - lastStart - 1);135 for (int i = 0; i<distanceValues.Count; i++) { 136 if (distanceValues[i] < lastValue) { // restart 137 lengths.Add(i - lastStart - 1); 110 138 distances.Add(lastValue); 111 139 lastStart = i; 140 } else { // inside neutral area 141 innerFractions.Add(fractionValues[i]); 112 142 } 113 lastValue = values[i];143 lastValue = distanceValues[i]; 114 144 } 115 if (distances.Count > 0 && lenghts.Count > 0) { 145 if (lastStart != distanceValues.Count-1) { 146 lengths.Add(distanceValues.Count - lastStart - 1); 147 distances.Add(lastValue); 148 } 149 if (distances.Count > 0 && lengths.Count > 0) { 116 150 AverageNeutralWalkDistanceParameter.ActualValue = new DoubleValue(distances.Average()); 117 151 NeutralWalkDistanceVarianceParameter.ActualValue = new DoubleValue(distances.Variance()); 118 AverageNeutralWalkLengthParameter.ActualValue = new DoubleValue(lenghts.Average()); 119 NeutralWalkLengthVarianceParameter.ActualValue = new DoubleValue(lenghts.Variance()); 152 AverageNeutralWalkLengthParameter.ActualValue = new DoubleValue(lengths.Average()); 153 NeutralWalkLengthVarianceParameter.ActualValue = new DoubleValue(lengths.Variance()); 154 AverageNeutralNeighborFractionParameter.ActualValue = new DoubleValue(fractionValues.Average()); 155 NeutralNeighborFractionVarianceParameter.ActualValue = new DoubleValue(fractionValues.Variance()); 156 AverageInnerNeutralNeighborFractionParameter.ActualValue = new DoubleValue(innerFractions.Average()); 157 InnerNeutralNeighborFractionVarianceParameter.ActualValue = new DoubleValue(innerFractions.Variance()); 120 158 } 121 159 return base.Apply(); … … 127 165 distancesTable = new DataTable("Neutral Walk Distances"); 128 166 NeutralWalkDistancesTableParameter.ActualValue = distancesTable; 129 var row = new DataRow("Neutral Walk Distances");130 distancesTable.Rows.Add( row);167 distancesTable.Rows.Add(new DataRow("Neutral Walk Distances")); 168 distancesTable.Rows.Add(new DataRow("Neutral Neighbor Fractions") {VisualProperties = {SecondYAxis = true}}); 131 169 } 132 170 return distancesTable;
Note: See TracChangeset
for help on using the changeset viewer.