Changeset 14538 for branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/Datastream.cs
- Timestamp:
- 01/03/17 23:04:56 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.DatastreamAnalysis/HeuristicLab.DatastreamAnalysis/3.4/Datastream.cs
r14536 r14538 43 43 protected const string SlidingWindowStepWidthParameterName = "SlidingWindowStepWidth"; 44 44 protected const string SlidingWindowMovementIntervalParameterName = "SlidingWindowMovementInterval"; 45 protected const string FitnessPartitionParameterName = "FitnessPartition"; 45 46 46 47 #region parameter properites … … 50 51 } 51 52 52 public IFixedValueParameter<IntRange> InitialSlidingWindowParameter { 53 get { return (IFixedValueParameter<IntRange>) Parameters[InitialSlidingWindowParameterName]; } 54 } 55 56 public IFixedValueParameter<IntValue> SlidingWindowSizeParameter { 57 get { return (IFixedValueParameter<IntValue>)Parameters[InitialSlidingWindowParameterName]; } 58 } 59 60 public IFixedValueParameter<IntValue> SlidingWindowStepWidthParameter { 61 get { return (IFixedValueParameter<IntValue>)Parameters[SlidingWindowStepWidthParameterName]; } 62 } 63 64 public IFixedValueParameter<IntValue> SlidingWindowMovementIntervalParameter { 65 get { return (IFixedValueParameter<IntValue>)Parameters[SlidingWindowMovementIntervalParameterName]; } 66 } 67 53 public IValueParameter<IntRange> InitialSlidingWindowParameter { 54 get { return (IValueParameter<IntRange>) Parameters[InitialSlidingWindowParameterName]; } 55 } 56 57 public IValueParameter<IntValue> SlidingWindowSizeParameter { 58 get { return (IValueParameter<IntValue>) Parameters[SlidingWindowSizeParameterName]; } 59 } 60 61 public IValueParameter<IntValue> SlidingWindowStepWidthParameter { 62 get { return (IValueParameter<IntValue>) Parameters[SlidingWindowStepWidthParameterName]; } 63 } 64 65 public IValueParameter<IntValue> SlidingWindowMovementIntervalParameter { 66 get { return (IValueParameter<IntValue>) Parameters[SlidingWindowMovementIntervalParameterName]; } 67 } 68 69 //public IValueParameter<IntRange> FitnessPartitionParameter { 70 // get { return (IValueParameter<IntRange>) Parameters[FitnessPartitionParameterName]; } 71 //} 68 72 69 73 #endregion … … 75 79 set { 76 80 if(value == null) throw new ArgumentNullException("problemData", "The provided value for the problemData is null."); 77 if (value == ProblemData) return;78 81 ProblemDataParameter.Value = value; 79 } 80 } 82 //OnProblemDataChanged(); 83 } 84 } 85 81 86 82 87 public IntRange InitialSlidingWindow { 83 88 get { return InitialSlidingWindowParameter.Value; } 89 set { InitialSlidingWindowParameter.Value = value; } 84 90 } 85 91 86 92 public IntValue SlidingWindowSize { 87 93 get { return SlidingWindowSizeParameter.Value; } 94 set { SlidingWindowSizeParameter.Value = value; } 88 95 } 89 96 90 97 public IntValue SlidingWindowStepWidth { 91 98 get { return SlidingWindowStepWidthParameter.Value; } 99 set { SlidingWindowStepWidthParameter.Value = value; } 92 100 } 93 101 94 102 public IntValue SlidingWindowMovementInterval { 95 103 get { return SlidingWindowMovementIntervalParameter.Value; } 104 set { SlidingWindowMovementIntervalParameter.Value = value; } 96 105 } 97 106 … … 101 110 102 111 public IntRange FitnessPartition { get; set; } 112 113 public bool UpdateAvailable { 114 get { return false; } 115 } 103 116 104 117 public bool SlidingWindowMovementPossible { 105 118 get { 106 119 return ProblemData != null && ProblemData.Dataset != null && 107 FitnessPartition.End + SlidingWindowStepWidth.Value <= ProblemData.Dataset.Rows; 108 // TODO: add external datastream, hub, etc to condition 120 ( 121 (FitnessPartition.End + SlidingWindowStepWidth.Value <= ProblemData.Dataset.Rows) // shift end 122 || (FitnessPartition.Size > SlidingWindowSize.Value && (FitnessPartition.Start + SlidingWindowStepWidth.Value) < FitnessPartition.End) // shift start 123 ); 109 124 } 110 125 } … … 112 127 public bool SlidingWindowEvaluationPossible { 113 128 get { 114 return ProblemData != null && ProblemData.Dataset != null &&115 129 //return ProblemData != null && ProblemData.Dataset != null && ProblemData.Dataset.Rows > 0 && FitnessPartition.Size > 0; 130 return FitnessPartition.Size > 0; 116 131 } 117 132 } … … 120 135 if (ProblemData?.Dataset == null || ProblemData.Dataset.Rows == 0) return false; 121 136 if (FitnessPartition.End + SlidingWindowStepWidth.Value > ProblemData.Dataset.Rows) return false; 122 123 if (FitnessPartition.Size > SlidingWindowSize.Value) { 124 FitnessPartition.Start += SlidingWindowStepWidth.Value; 125 } else if (FitnessPartition.Size == SlidingWindowSize.Value) { 137 138 if (FitnessPartition.Size == SlidingWindowSize.Value) { 126 139 FitnessPartition.Start += SlidingWindowStepWidth.Value; 127 140 FitnessPartition.End += SlidingWindowStepWidth.Value; 128 } else { 141 } else { 129 142 FitnessPartition.End += SlidingWindowStepWidth.Value; 130 } 143 FitnessPartition.Start += FitnessPartition.End - SlidingWindowSize.Value; 144 } 145 146 //if (FitnessPartition.Size > SlidingWindowSize.Value) { 147 // FitnessPartition.Start += SlidingWindowStepWidth.Value; 148 //} else if (FitnessPartition.Size == SlidingWindowSize.Value) { 149 // FitnessPartition.Start += SlidingWindowStepWidth.Value; 150 // FitnessPartition.End += SlidingWindowStepWidth.Value; 151 //} else { 152 // FitnessPartition.End += SlidingWindowStepWidth.Value; 153 // if (FitnessPartition.Size > SlidingWindowSize.Value) { 154 // FitnessPartition.Start = FitnessPartition.End - FitnessPartition.Size; 155 // } 156 //} 131 157 return true; 132 158 } … … 141 167 private void AfterDeserialization() { 142 168 RegisterParameterEvents(); 169 RecoverState(); 143 170 } 144 171 145 172 protected Datastream(Datastream original, Cloner cloner) : base(original, cloner) { 146 173 RegisterParameterEvents(); 174 RecoverState(); 147 175 } 148 176 … … 151 179 } 152 180 153 public Datastream() {181 public Datastream() : base() { 154 182 Parameters.Add(new ValueParameter<RegressionProblemData>(ProblemDataParameterName, "ProblemData for analysis with selected ensembles.", null)); 155 Parameters.Add(new FixedValueParameter<IntRange>(InitialSlidingWindowParameterName, "Initial sliding window boundaries", new IntRange(0, 1)));156 Parameters.Add(new FixedValueParameter<IntValue>(SlidingWindowSizeParameterName, "Sliding window size", new IntValue( 1)));183 Parameters.Add(new FixedValueParameter<IntRange>(InitialSlidingWindowParameterName, "Initial sliding window boundaries", new IntRange(0, 5))); 184 Parameters.Add(new FixedValueParameter<IntValue>(SlidingWindowSizeParameterName, "Sliding window size", new IntValue(5))); 157 185 Parameters.Add(new FixedValueParameter<IntValue>(SlidingWindowStepWidthParameterName, "Sliding window step width", new IntValue(1))); 158 Parameters.Add(new FixedValueParameter<IntValue>(SlidingWindowMovementIntervalParameterName, "Sliding window movement interval (milliseconds)", new IntValue(1000))); 186 Parameters.Add(new FixedValueParameter<IntValue>(SlidingWindowMovementIntervalParameterName, "Sliding window movement interval (milliseconds)", new IntValue(2000))); 187 RegisterParameterEvents(); 159 188 InitializeState(); 160 189 } 161 190 #endregion 162 191 163 164 public void InitializeState() { 192 public void InitializeState(){ 165 193 if (ProblemData == null || ProblemData.Dataset == null || ProblemData.Dataset.Rows == 0) { 166 194 FitnessPartition = new IntRange(0, 0); … … 173 201 } 174 202 203 public void RecoverState() { 204 if (ProblemData == null || ProblemData.Dataset == null || ProblemData.Dataset.Rows == 0) { 205 FitnessPartition = new IntRange(0, 0); 206 } else { 207 if(FitnessPartition == null) FitnessPartition = (IntRange)InitialSlidingWindow.Clone(); 208 if (FitnessPartition.End > ProblemData.Dataset.Rows) { 209 FitnessPartition.End = ProblemData.Dataset.Rows; 210 } 211 } 212 } 213 175 214 public event EventHandler ProblemDataChanged; 176 215 public event EventHandler Reset; 216 public event EventHandler SlidingWindowChanged; 217 218 219 //protected virtual void OnProblemDataChanged() { 220 // EventHandler handler = ProblemDataChanged; 221 // if(handler != null) handler(this, EventArgs.Empty); 222 //} 223 224 //protected virtual void OnReset() { 225 // EventHandler handler = Reset; 226 // if (handler != null) handler(this, EventArgs.Empty); 227 //} 177 228 178 229 private void RegisterParameterEvents() { 179 230 ProblemDataParameter.ValueChanged += new EventHandler(ProblemData_ValueChanged); 231 //SlidingWindowSizeParameter.ValueChanged += new EventHandler(SlidingWindow_Changed); 232 InitialSlidingWindowParameter.ValueChanged += new EventHandler(SlidingWindow_Changed); 180 233 } 181 234 … … 183 236 if (e == null) return; 184 237 238 InitializeState(); 185 239 DatastreamAnalysisUtil.RaiseEvent(this, ProblemDataChanged); 186 240 } 187 241 242 private void SlidingWindow_Changed(object sender, EventArgs e) { 243 InitializeState(); 244 } 245 246 247 // TODO 248 public IEnumerable<IParameterizedItem> ExecutionContextItems { get; } 188 249 189 190 250 } 191 251 }
Note: See TracChangeset
for help on using the changeset viewer.